{"version":3,"sources":["material.js","jquery.js","bootstrap.js","jquery.tablesorter.combined.js","datatables.js","main.js"],"names":["MaterialTab","tab","ctx","element_","classList","contains","CssClasses_","MDL_JS_RIPPLE_EFFECT","rippleContainer","document","createElement","add","MDL_RIPPLE_CONTAINER","ripple","MDL_RIPPLE","appendChild","addEventListener","e","getAttribute","charAt","preventDefault","href","split","panel","querySelector","resetTabState_","resetPanelState_","ACTIVE_CLASS","MaterialLayoutTab","tabs","panels","layout","selectTab","content_","IS_ACTIVE","tabBar_","JS_RIPPLE_EFFECT","RIPPLE_CONTAINER","RIPPLE","TAB_MANUAL_SWITCH","show","componentHandler","upgradeDom","optJsClass","optCssClass","upgradeElement","element","upgradeElements","elements","upgradeAllRegistered","registerUpgradedCallback","jsClass","callback","register","config","downgradeElements","nodes","findRegisteredClass_","name","optReplace","i","registeredComponents_","length","className","getUpgradedListOfElement_","dataUpgraded","isElementUpgraded_","indexOf","createEvent_","eventType","bubbles","cancelable","window","CustomEvent","ev","createEvent","initEvent","upgradeDomInternal","cssClass","registeredClass","querySelectorAll","n","upgradeElementInternal","Element","Error","upgradingEv","dispatchEvent","defaultPrevented","upgradedList","classesToUpgrade","push","forEach","component","setAttribute","join","instance","classConstructor","componentConfigProperty_","createdComponents_","j","m","callbacks","widget","upgradedEv","upgradeElementsInternal","Array","isArray","prototype","slice","call","HTMLElement","children","registerInternal","widgetMissing","newConfig","constructor","classAsString","item","hasOwnProperty","registerUpgradedCallbackInternal","regClass","upgradeAllRegisteredInternal","deconstructComponentInternal","componentIndex","splice","upgrades","componentPlace","downgradeNodesInternal","downgradeNode","node","filter","NodeList","Node","ComponentConfigPublic","ComponentConfig","Component","documentElement","Date","now","getTime","vendors","requestAnimationFrame","vp","cancelAnimationFrame","test","navigator","userAgent","lastTime","nextTime","Math","max","setTimeout","clearTimeout","MaterialButton","this","init","Constant_","RIPPLE_EFFECT","blurHandler_","event","blur","disable","disabled","enable","rippleElement_","boundRippleBlurHandler","bind","boundButtonBlurHandler","MaterialCheckbox","TINY_TIMEOUT","INPUT","BOX_OUTLINE","FOCUS_HELPER","TICK_OUTLINE","RIPPLE_IGNORE_EVENTS","RIPPLE_CENTER","IS_FOCUSED","IS_DISABLED","IS_CHECKED","IS_UPGRADED","onChange_","updateClasses_","onFocus_","onBlur_","remove","onMouseUp_","blur_","checkDisabled","checkToggleState","inputElement_","checked","check","uncheck","boxOutline","tickContainer","tickOutline","rippleContainerElement_","boundRippleMouseUp","boundInputOnChange","boundInputOnFocus","boundInputOnBlur","boundElementMouseUp","MaterialIconToggle","boundElementOnMouseUp","MaterialMenu","TRANSITION_DURATION_SECONDS","TRANSITION_DURATION_FRACTION","CLOSE_TIMEOUT","Keycodes_","ENTER","ESCAPE","SPACE","UP_ARROW","DOWN_ARROW","CONTAINER","OUTLINE","ITEM","ITEM_RIPPLE_CONTAINER","IS_VISIBLE","IS_ANIMATING","BOTTOM_LEFT","BOTTOM_RIGHT","TOP_LEFT","TOP_RIGHT","UNALIGNED","container","parentElement","insertBefore","removeChild","container_","outline","outline_","forElId","forEl","getElementById","forElement_","handleForClick_","handleForKeyboardEvent_","items","boundItemKeydown_","handleItemKeyboardEvent_","boundItemClick_","handleItemClick_","tabIndex","evt","rect","getBoundingClientRect","forRect","style","right","top","offsetTop","offsetHeight","left","offsetLeft","bottom","toggle","keyCode","focus","currentIndex","target","MouseEvent","click","hide","hasAttribute","stopPropagation","closing_","applyClip_","height","width","clip","removeAnimationEndListener_","addAnimationEndListener_","transitionDuration","itemDelay","transitionDelay","parentNode","removeEventListener","removeProperty","MaterialProgress","INDETERMINATE_CLASS","setProgress","p","progressbar_","setBuffer","bufferbar_","auxbar_","el","MaterialRadio","JS_RADIO","RADIO_BTN","RADIO_OUTER_CIRCLE","RADIO_INNER_CIRCLE","radios","getElementsByClassName","btnElement_","onMouseup_","boundChangeHandler_","boundFocusHandler_","boundBlurHandler_","boundMouseUpHandler_","outerCircle","innerCircle","MaterialSlider","isIE_","msPointerEnabled","IE_CONTAINER","SLIDER_CONTAINER","BACKGROUND_FLEX","BACKGROUND_LOWER","BACKGROUND_UPPER","IS_LOWEST_VALUE","onInput_","updateValueStyles_","onContainerMouseDown_","newEvent","buttons","clientX","clientY","y","fraction","value","min","backgroundLower_","flex","webkitFlex","backgroundUpper_","change","containerIE","backgroundFlex","boundInputHandler","boundChangeHandler","boundMouseUpHandler","boundContainerMouseDownHandler","MaterialSnackbar","textElement_","cssClasses_","MESSAGE","actionElement_","ACTION","active","actionHandler_","undefined","message_","actionText_","queuedNotifications_","setActionHidden_","ANIMATION_LENGTH","SNACKBAR","ACTIVE","displaySnackbar_","textContent","cleanup_","timeout_","showSnackbar","data","checkQueue_","shift","Boolean","removeAttribute","MaterialSpinner","MDL_SPINNER_LAYER_COUNT","MDL_SPINNER_LAYER","MDL_SPINNER_CIRCLE_CLIPPER","MDL_SPINNER_CIRCLE","MDL_SPINNER_GAP_PATCH","MDL_SPINNER_LEFT","MDL_SPINNER_RIGHT","createLayer","index","layer","leftClipper","gapPatch","rightClipper","circleOwners","circle","stop","start","MaterialSwitch","TRACK","THUMB","on","off","track","thumb","focusHelper","boundFocusHandler","boundBlurHandler","MaterialTabs","TAB_CLASS","PANEL_CLASS","UPGRADED_CLASS","MDL_JS_RIPPLE_EFFECT_IGNORE_EVENTS","initTabs_","tabs_","panels_","k","MaterialTextfield","maxRows","NO_MAX_ROWS","MAX_ROWS_ATTRIBUTE","LABEL","IS_DIRTY","IS_INVALID","HAS_PLACEHOLDER","onKeyDown_","currentRowCount","onReset_","checkValidity","checkDirty","checkFocus","input_","validity","valid","label_","parseInt","isNaN","boundUpdateClassesHandler","boundResetHandler","boundKeyDownHandler","invalid","MaterialTooltip","BOTTOM","LEFT","RIGHT","TOP","handleMouseEnter_","props","marginLeft","offsetWidth","marginTop","hideTooltip_","boundMouseEnterHandler","boundMouseLeaveAndScrollHandler","MaterialLayout","MAX_WIDTH","TAB_SCROLL_PIXELS","RESIZE_TIMEOUT","MENU_ICON","CHEVRON_LEFT","CHEVRON_RIGHT","Mode_","STANDARD","SEAMED","WATERFALL","SCROLL","HEADER","DRAWER","CONTENT","DRAWER_BTN","ICON","HEADER_SEAMED","HEADER_WATERFALL","HEADER_SCROLL","FIXED_HEADER","OBFUSCATOR","TAB_BAR","TAB_CONTAINER","TAB","TAB_BAR_BUTTON","TAB_BAR_LEFT_BUTTON","TAB_BAR_RIGHT_BUTTON","PANEL","HAS_DRAWER","HAS_TABS","HAS_SCROLLING_HEADER","CASTING_SHADOW","IS_COMPACT","IS_SMALL_SCREEN","IS_DRAWER_OPEN","ON_LARGE_SCREEN","ON_SMALL_SCREEN","contentScrollHandler_","header_","headerVisible","scrollTop","keyboardEventHandler_","drawer_","toggleDrawer","screenSizeHandler_","screenSizeMediaQuery_","matches","obfuscator_","drawerToggleHandler_","type","headerTransitionEndHandler_","headerClickHandler_","tabBar","drawerButton","focusedElement","directChildren","childNodes","numChildren","c","child","persisted","overflowY","mode","drawerButtonIcon","innerHTML","firstChild","obfuscator","matchMedia","addListener","tabContainer","leftButton","leftButtonIcon","scrollLeft","rightButton","rightButtonIcon","tabUpdateHandler","scrollWidth","windowResizeHandler","resizeTimeoutId_","MaterialDataTable","DATA_TABLE","SELECTABLE","SELECT_ELEMENT","IS_SELECTED","selectRow_","checkbox","row","opt_rows","createCheckbox_","label","labelClasses","firstHeader","bodyRows","footRows","rows","concat","th","headerCheckbox","firstCell","td","nodeName","toUpperCase","rowCheckbox","MaterialRipple","INITIAL_SCALE","INITIAL_SIZE","INITIAL_OPACITY","FINAL_OPACITY","FINAL_SCALE","RIPPLE_EFFECT_IGNORE_EVENTS","downHandler_","boundHeight","boundWidth","rippleSize_","sqrt","ignoringMouseDown_","getFrameCount","setFrameCount","x","bound","currentTarget","round","touches","setRippleXY","setRippleStyles","animFrameHandler","upHandler_","detail","recentering","frameCount_","x_","y_","boundDownHandler","boundUpHandler","fC","getRippleElement","newX","newY","transformString","scale","offset","webkitTransform","msTransform","transform","global","factory","module","exports","w","noGlobal","DOMEval","code","doc","val","script","text","preservedScriptAttributes","head","toType","obj","class2type","toString","isArrayLike","isFunction","isWindow","elem","toLowerCase","winnow","qualifier","not","jQuery","grep","nodeType","sibling","cur","dir","createOptions","options","object","each","match","rnothtmlwhite","_","flag","Identity","v","Thrower","ex","adoptValue","resolve","reject","noValue","method","promise","done","fail","then","apply","completed","ready","fcamelCase","_all","letter","camelCase","string","replace","rmsPrefix","rdashAlpha","Data","expando","uid","getData","rbrace","JSON","parse","dataAttr","key","rmultiDash","dataUser","set","adjustCSS","prop","valueParts","tween","adjusted","maxIterations","currentValue","css","initial","unit","cssNumber","initialInUnit","rcssNum","exec","end","getDefaultDisplay","temp","ownerDocument","display","defaultDisplayMap","body","showHide","values","dataPriv","get","isHiddenWithinTree","getAll","context","tag","ret","getElementsByTagName","merge","setGlobalEval","elems","refElements","l","buildFragment","scripts","selection","ignored","tmp","wrap","attached","fragment","createDocumentFragment","rhtml","rtagName","wrapMap","_default","htmlPrefilter","lastChild","createTextNode","inArray","isAttached","rscriptType","returnTrue","returnFalse","expectSync","safeActiveElement","activeElement","err","types","selector","fn","one","origFn","arguments","guid","leverageNative","namespace","handler","notAsync","result","saved","isTrigger","special","delegateType","stopImmediatePropagation","trigger","extend","Event","manipulationTarget","content","disableScript","restoreScript","cloneCopyEvent","src","dest","pdataOld","udataOld","udataCur","events","hasData","access","fixInput","rcheckableType","defaultValue","domManip","collection","args","flat","first","hasScripts","iNoClone","valueIsFunction","support","checkClone","rchecked","self","eq","html","map","clone","_evalUrl","noModule","nonce","rcleanScript","keepData","cleanData","curCSS","computed","minWidth","maxWidth","getStyles","getPropertyValue","pixelBoxStyles","rnumnonpx","rboxStyle","addGetHookIf","conditionFn","hookFn","vendorPropName","capName","cssPrefixes","emptyStyle","finalPropName","final","cssProps","vendorProps","setPositiveNumber","_elem","subtract","boxModelAdjustment","dimension","box","isBorderBox","styles","computedVal","extra","delta","cssExpand","ceil","getWidthOrHeight","boxSizingNeeded","boxSizingReliable","valueIsBorderBox","offsetProp","reliableTrDimensions","parseFloat","getClientRects","Tween","easing","schedule","inProgress","hidden","fx","interval","tick","createFxNow","fxNow","genFx","includeWidth","which","attrs","opacity","createTween","animation","Animation","tweeners","defaultPrefilter","opts","hooks","oldfire","propTween","restoreDisplay","isBox","anim","orig","dataShow","queue","_queueHooks","unqueued","empty","fire","always","rfxtypes","isEmptyObject","overflow","overflowX","propFilter","specialEasing","cssHooks","expand","properties","stopped","prefilters","deferred","Deferred","currentTime","remaining","startTime","duration","percent","tweens","run","notifyWith","resolveWith","originalProperties","originalOptions","gotoEnd","rejectWith","progress","complete","timer","stripAndCollapse","getClass","classesToArray","buildParams","prefix","traditional","rbracket","addToPrefiltersOrTransports","structure","dataTypeExpression","func","dataType","dataTypes","unshift","inspectPrefiltersOrTransports","jqXHR","inspect","selected","inspected","prefilterOrFactory","dataTypeOrTransport","seekingTransport","transports","ajaxExtend","deep","flatOptions","ajaxSettings","ajaxHandleResponses","s","responses","ct","finalDataType","firstDataType","contents","mimeType","getResponseHeader","converters","ajaxConvert","response","isSuccess","conv2","current","conv","prev","responseFields","dataFilter","throws","state","error","arr","getProto","Object","getPrototypeOf","array","hasOwn","fnToString","ObjectFunctionString","jquery","toArray","num","pushStack","prevObject","last","even","odd","len","sort","copy","copyIsArray","isPlainObject","random","isReady","msg","noop","proto","Ctor","globalEval","makeArray","results","second","invert","callbackExpect","arg","Symbol","iterator","_i","Sizzle","seed","nid","groups","newSelector","newContext","setDocument","documentIsHTML","rquickExpr","id","qsa","nonnativeSelectorCache","rbuggyQSA","rdescend","rcombinators","rsibling","testContext","scope","rcssescape","fcssescape","tokenize","toSelector","qsaError","select","rtrim","createCache","cache","keys","Expr","cacheLength","markFunction","assert","addHandle","attrHandle","siblingCheck","a","b","diff","sourceIndex","nextSibling","createDisabledPseudo","isDisabled","inDisabledFieldset","createPositionalPseudo","argument","matchIndexes","setFilters","tokens","addCombinator","matcher","combinator","base","skip","next","checkNonElements","doneName","xml","oldCache","uniqueCache","outerCache","newCache","dirruns","uniqueID","elementMatcher","matchers","multipleContexts","contexts","condense","unmatched","newUnmatched","mapped","setMatcher","preFilter","postFilter","postFinder","postSelector","preMap","postMap","preexisting","matcherIn","matcherOut","matcherFromTokens","checkContext","leadingRelative","relative","implicitRelative","matchContext","matchAnyContext","outermostContext","matcherFromGroupMatchers","elementMatchers","setMatchers","bySet","byElement","superMatcher","outermost","matchedCount","setMatched","contextBackup","find","dirrunsUnique","pop","uniqueSort","getText","isXML","compile","sortInput","hasDuplicate","docElem","rbuggyMatches","preferredDoc","classCache","tokenCache","compilerCache","sortOrder","pushNative","list","booleans","whitespace","identifier","attributes","pseudos","rwhitespace","RegExp","rcomma","rpseudo","ridentifier","matchExpr","ID","CLASS","TAG","ATTR","PSEUDO","CHILD","bool","needsContext","rinputs","rheader","rnative","runescape","funescape","escape","nonHex","high","String","fromCharCode","ch","asCodePoint","charCodeAt","unloadHandler","els","namespaceURI","hasCompare","subWindow","defaultView","attachEvent","createComment","getById","getElementsByName","attrId","getAttributeNode","input","matchesSelector","webkitMatchesSelector","mozMatchesSelector","oMatchesSelector","msMatchesSelector","disconnectedMatch","compareDocumentPosition","adown","bup","compare","sortDetached","aup","ap","bp","expr","attr","specified","sel","duplicates","detectDuplicates","sortStable","nodeValue","selectors","createPseudo",">"," ","+","~","excess","unquoted","nodeNameSelector","pattern","operator","what","_argument","simple","forward","ofType","_context","nodeIndex","parent","useCache","pseudo","idx","matched","has","lang","elemLang","hash","location","root","hasFocus","enabled","selectedIndex","header","button","_matchIndexes","lt","gt","radio","file","password","image","submit","reset","filters","parseOnly","soFar","preFilters","cached","token","compiled","_name","unique","isXMLDoc","escapeSelector","until","truncate","is","siblings","rneedsContext","rsingleTag","rootjQuery","parseHTML","rparentsprev","guaranteedUnique","targets","closest","prevAll","addBack","parents","parentsUntil","nextAll","nextUntil","prevUntil","contentDocument","reverse","Callbacks","firing","memory","fired","locked","firingIndex","once","stopOnFalse","lock","fireWith","tuples","catch","pipe","fns","newDefer","tuple","returned","notify","onFulfilled","onRejected","onProgress","depth","that","mightThrow","maxDepth","TypeError","process","exceptionHook","stackTrace","getStackHook","stateString","when","singleValue","resolveContexts","resolveValues","primary","updateFunc","rerrorNames","stack","console","warn","message","readyException","readyList","readyWait","wait","readyState","doScroll","chainable","emptyGet","raw","bulk","_key","acceptData","owner","defineProperty","configurable","removeData","_data","_removeData","dequeue","startLength","setter","clearQueue","count","defer","pnum","source","composed","getRootNode","div","cloneNode","noCloneChecked","option","thead","col","tr","tbody","tfoot","colgroup","caption","optgroup","rtypenamespace","handleObjIn","eventHandle","t","handleObj","handlers","namespaces","origType","elemData","create","handle","triggered","dispatch","bindType","delegateCount","setup","mappedTypes","origCount","teardown","removeEvent","nativeEvent","handlerQueue","fix","delegateTarget","preDispatch","isPropagationStopped","isImmediatePropagationStopped","rnamespace","postDispatch","matchedHandlers","matchedSelectors","addProp","hook","enumerable","originalEvent","writable","load","noBubble","beforeunload","returnValue","isDefaultPrevented","relatedTarget","timeStamp","isSimulated","altKey","changedTouches","ctrlKey","eventPhase","metaKey","pageX","pageY","shiftKey","view","char","charCode","offsetX","offsetY","pointerId","pointerType","screenX","screenY","targetTouches","toElement","mouseenter","mouseleave","pointerenter","pointerleave","related","rnoInnerhtml","dataAndEvents","deepDataAndEvents","srcElements","destElements","inPage","detach","append","prepend","before","after","replaceWith","replaceChild","appendTo","prependTo","insertAfter","replaceAll","original","insert","opener","getComputedStyle","swap","old","computeStyleTests","cssText","divStyle","pixelPositionVal","reliableMarginLeftVal","roundPixelMeasures","pixelBoxStylesVal","boxSizingReliableVal","position","scrollboxSizeVal","measure","reliableTrDimensionsVal","backgroundClip","clearCloneStyle","pixelPosition","reliableMarginLeft","scrollboxSize","table","trChild","trStyle","borderTopWidth","borderBottomWidth","rdisplayswap","rcustomProp","cssShow","visibility","cssNormalTransform","letterSpacing","fontWeight","animationIterationCount","columnCount","fillOpacity","flexGrow","flexShrink","gridArea","gridColumn","gridColumnEnd","gridColumnStart","gridRow","gridRowEnd","gridRowStart","lineHeight","order","orphans","widows","zIndex","zoom","origName","isCustomProp","setProperty","isFinite","scrollboxSizeBuggy","margin","padding","border","suffix","expanded","parts","propHooks","eased","pos","step","linear","swing","cos","PI","rrun","*","tweener","prefilter","speed","opt","speeds","fadeTo","to","animate","optall","doAnimation","finish","stopQueue","timers","cssFn","slideDown","slideUp","slideToggle","fadeIn","fadeOut","fadeToggle","slow","fast","delay","time","timeout","checkOn","optSelected","radioValue","boolHook","removeAttr","nType","attrHooks","attrNames","getter","lowercaseName","rfocusable","rclickable","removeProp","propFix","tabindex","for","class","addClass","classes","curValue","clazz","finalValue","removeClass","toggleClass","stateVal","isValidValue","classNames","hasClass","rreturn","valHooks","optionSet","focusin","rfocusMorph","stopPropagationCallback","onlyHandlers","bubbleType","ontype","lastElement","eventPath","parentWindow","simulate","triggerHandler","attaches","rquery","parseXML","parserErrorElem","DOMParser","parseFromString","rCRLF","rsubmitterTypes","rsubmittable","param","valueOrFunction","encodeURIComponent","serialize","serializeArray","r20","rhash","rantiCache","rheaders","rlocalProtocol","rnoContent","rprotocol","allTypes","originAnchor","lastModified","etag","url","isLocal","protocol","processData","async","contentType","accepts","json","* text","text html","text json","text xml","ajaxSetup","settings","ajaxPrefilter","ajaxTransport","ajax","status","nativeStatusText","headers","success","modified","statusText","timeoutTimer","transport","responseHeadersString","ifModified","cacheURL","callbackContext","statusCode","fireGlobals","globalEventContext","completeDeferred","responseHeaders","urlAnchor","uncached","requestHeaders","requestHeadersNames","strAbort","getAllResponseHeaders","setRequestHeader","overrideMimeType","abort","finalText","crossDomain","host","hasContent","beforeSend","send","getJSON","getScript","text script","wrapAll","firstElementChild","wrapInner","htmlIsFunction","unwrap","visible","xhr","XMLHttpRequest","xhrSuccessStatus","0","1223","xhrSupported","cors","errorCallback","open","username","xhrFields","onload","onerror","onabort","ontimeout","onreadystatechange","responseType","responseText","binary","scriptAttrs","charset","scriptCharset","oldCallbacks","rjsonp","jsonp","jsonpCallback","originalSettings","callbackName","overwritten","responseContainer","jsonProp","createHTMLDocument","implementation","keepScripts","parsed","params","animated","setOffset","curPosition","curLeft","curCSSTop","curTop","curOffset","curCSSLeft","calculatePosition","curElem","using","win","pageYOffset","pageXOffset","offsetParent","parentOffset","scrollTo","Height","Width","","defaultExtra","funcName","unbind","delegate","undelegate","hover","fnOver","fnOut","proxy","holdReady","hold","parseJSON","isNumeric","trim","define","amd","_jQuery","_$","$","noConflict","version","transitionEnd","transEndEventNames","WebkitTransition","MozTransition","OTransition","transition","emulateTransitionEnd","called","$el","bsTransitionEnd","Plugin","$this","Alert","dismiss","close","VERSION","TRANSITION_DURATION","removeElement","$parent","alert","Constructor","Button","setState","$element","DEFAULTS","isLoading","loadingText","d","resetText","changed","$input","$btn","Carousel","action","slide","pause","cycle","$indicators","paused","sliding","$active","$items","keyboard","keydown","tagName","clearInterval","setInterval","getItemIndex","getItemForDirection","direction","activeIndex","itemIndex","$next","isCycling","slideEvent","$nextIndicator","slidEvent","carousel","clickHandler","$target","slideIndex","$carousel","getTargetFromTrigger","$trigger","Collapse","transitioning","getParent","addAriaAndCollapsedClass","activesData","actives","startEvent","scrollSize","isOpen","collapse","clearMenus","backdrop","Dropdown","isActive","dropdown","_relatedTarget","Modal","$body","$dialog","$backdrop","isShown","originalBodyPad","scrollbarWidth","ignoreBackdropClick","fixedContent","remote","BACKDROP_TRANSITION_DURATION","checkScrollbar","setScrollbar","resize","adjustDialog","enforceFocus","hideModal","handleUpdate","resetAdjustments","resetScrollbar","removeBackdrop","doAnimate","callbackRemove","modalIsOverflowing","scrollHeight","clientHeight","paddingLeft","bodyIsOverflowing","paddingRight","fullWindowWidth","innerWidth","documentElementRect","abs","clientWidth","measureScrollbar","bodyPad","actualPadding","calculatedPadding","scrollDiv","modal","showEvent","allowedAttribute","allowedAttributeList","attrName","uriAttrs","SAFE_URL_PATTERN","DATA_URL_PATTERN","regExp","sanitizeHtml","unsafeHtml","whiteList","sanitizeFn","createdDocument","whitelistKeys","elName","attributeList","whitelistedAttributes","len2","Tooltip","DISALLOWED_ATTRIBUTES","ARIA_ATTRIBUTE_PATTERN","DefaultWhitelist","area","br","em","hr","h1","h2","h3","h4","h5","h6","img","li","ol","pre","small","span","sub","sup","strong","u","ul","hoverState","inState","placement","template","title","viewport","sanitize","getOptions","$viewport","triggers","eventIn","eventOut","enter","leave","_options","fixTitle","getDefaults","dataAttributes","getDelegateOptions","defaults","tip","isInStateTrue","inDom","$tip","tipId","getUID","setContent","autoToken","autoPlace","getPosition","actualWidth","actualHeight","orgPlacement","viewportDim","calculatedOffset","getCalculatedOffset","applyPlacement","prevHoverState","getViewportAdjustedDelta","isVertical","arrowDelta","arrowOffsetPosition","replaceArrow","arrow","getTitle","$e","isBody","elRect","isSvg","SVGElement","elOffset","scroll","outerDims","viewportPadding","viewportDimensions","topEdgeOffset","bottomEdgeOffset","leftEdgeOffset","rightEdgeOffset","o","$arrow","toggleEnabled","destroy","tooltip","Popover","getContent","typeContent","popover","ScrollSpy","$scrollElement","offsets","activeTarget","refresh","getScrollHeight","offsetMethod","offsetBase","$href","maxScroll","activate","clear","scrollspy","$spy","Tab","$ul","$previous","hideEvent","Affix","checkPosition","checkPositionWithEventLoop","affixed","unpin","pinnedOffset","RESET","getState","offsetBottom","targetHeight","initializing","colliderTop","colliderHeight","getPinnedOffset","affix","affixType","require","ts","tablesorter","parsers","widgets","theme","widthFixed","showProcessing","headerTemplate","onRenderTemplate","onRenderHeader","cancelSelection","dateFormat","sortMultiSortKey","sortResetKey","usNumberFormat","delayInit","serverSideSorting","resort","ignoreCase","sortForce","sortList","sortAppend","sortInitialOrder","sortLocaleCompare","sortReset","sortRestart","emptyTo","stringTo","duplicateSpan","textExtraction","textAttribute","textSorter","numberSorter","initWidgets","widgetClass","widgetOptions","zebra","initialized","tableClass","cssAsc","cssDesc","cssNone","cssHeader","cssHeaderRow","cssProcessing","cssChildRow","cssInfoBlock","cssNoSort","cssIgnoreRow","cssIcon","cssIconNone","cssIconAsc","cssIconDesc","cssIconDisabled","pointerClick","pointerDown","pointerUp","selectorHeaders","selectorSort","selectorRemove","debug","headerList","empties","strings","globalize","imgAttr","cssHasChild","childRow","headerRow","headerIn","icon","processing","sortAsc","sortDesc","sortNone","language","sortDisabled","nextAsc","nextDesc","nextNone","regex","templateContent","templateIcon","templateName","spaces","nonWord","formElements","chunk","chunks","hex","comma","digitNonUS","digitNegativeTest","digitNegativeReplace","digitTest","digitReplace","emptymin","emptymax","zero","none","null","keyCodes","dates","instanceMethods","tHead","tBodies","hasInitialized","$table","meta","metadata","isProcessing","group","supportsDataObject","clickedIndex","$headers","$tbodies","aria-live","aria-relevant","widgetInit","buildHeaders","fixColumnWidth","addWidgetFromClass","applyWidgetOptions","setupParsers","totalRows","validateOptions","buildCache","bindEvents","bindMethods","sortlist","applyWidget","sortOn","setHeadersCss","timerProcessing","log","benchmark","groupEnd","isApplyingWidgets","updateAll","update","updateHeaders","cell","updateCell","$row","addRows","isUpdating","appendCache","updateCache","applyWidgetId","all","dontapply","refreshWidgets","refreshing","removeWidget","removeClasses","core","downTarget","getClosest","external","$cell","$headerIndexed","initSort","user-select","MozUserSelect","$temp","indx","headerContent","sortVars","columns","computeColumnIndex","configHeaders","column","$elem","getColumnData","getOrder","lockedOrder","sortedBy","role","updateHeader","addInstanceMethods","methods","colIndex","noParser","parser","extractor","tbodyIndex","debugOutput","extractors","getParserById","emptyToBottom","detectParserForColumn","colSpan","addParser","rowIndex","cellIndex","$node","keepLooking","cells","getElementText","extract","getParsedText","txt","format","$tbody","cols","$cells","cacheTime","rowData","prevRowData","colMax","cacheIndex","hasParser","normalized","getColumnText","rowFilter","tbodyLen","rowLen","hasCallback","allColumns","aria","updateColumnSort","$extras","$sorted","include","isValueInArray","setColumnAriaLabel","$header","nextSort","vars","setColumnSort","updateHeaderSortCount","commonUpdate","resortComplete","icell","tbcache","checkResort","$curTbody","appendTime","appender","processTbody","pager","removeRows","arry","headerIndx","notMultiSort","multisort","sortTime","sorter","sortLen","sortIndex","getSortType","sortNatural","aNum","bNum","aFloat","bFloat","sortNaturalAsc","sortNaturalDesc","sortText","getTextValue","sortNumericAsc","sortNumericDesc","sortNumeric","addWidget","getWidgetById","hasWidget","wo","applied","names","timerReady","priority","doAll","curWidgets","formatFloat","str","isDigit","$rows","rowSpan","firstAvailCol","matrix","matrixrow","checkColumnCount","overallWidth","$colgroup","configHeader","cl4ss","getCell","$tb","getIt","holdr","clearTableBody","characterEquivalents","A","C","E","I","O","ss","SS","U","replaceAccents","chr","acc","characterRegex","characterRegexArray","setting","setting2","typ","ignore","restoreHeaders","$t","$h","$r","$f","buildTable","logs","date","toLocaleLowerCase","nondigit","currencyReplace","currencyTest","urlProtocolTest","urlProtocolReplace","dash","isoDate","percentTest","dateReplace","usLongDateTest1","usLongDateTest2","shortDateTest","shortDateReplace","shortDateXXY","shortDateYMD","convertFormat","dateString","timeTest","timeMatch","timePart","parserMetadataName","$visibleRows","isEven","toRemove","fixedUrl","storage_fixedUrl","storage_group","storage_page","storage_storageType","storage_tableId","storage_useSessionStorage","storage","cookieIndex","cookies","hasStorage","storageType","session","useSessionStorage","page","pathname","setItem","removeItem","cookie","stringify","setTime","toGMTString","themes","bootstrap","icons","iconSortNone","iconSortAsc","iconSortDesc","filterRow","footerRow","footerCells","jui","wrapper","hdr","$icon","$tfoot","oldtheme","oldremove","oldIconRmv","hasOldTheme","themesAll","iconRmv","appliedTheme","uitheme_applied","filter_initialized","columns_thead","columns_tfoot","tsf","tsfRegex","tscss","tskeyCodes","filterDisabled","filterRowHide","backSpace","space","down","filter_cellFilter","filter_childRows","filter_childByColumn","filter_childWithSibs","filter_columnAnyMatch","filter_columnFilters","filter_cssFilter","filter_defaultAttrib","filter_defaultFilter","filter_excludeFilter","filter_external","filter_filteredRow","filter_filterLabel","filter_formatter","filter_functions","filter_hideEmpty","filter_hideFilters","filter_ignoreCase","filter_liveSearch","filter_matchType","filter_onlyAvail","filter_placeholder","search","filter_reset","filter_resetOnEsc","filter_saveFilters","filter_searchDelay","filter_searchFiltered","filter_selectSource","filter_selectSourceSeparator","filter_serversideFiltering","filter_startsWith","filter_useParsedData","filtered","exact","operators","query","wild01","wild0More","quote","isNeg1","isNeg2","or","orTest","iFilter","orSplit","filterMatched","data2","nestedFilters","parseFilter","isMatch","processTypes","and","andTest","andSplit","filter_regexCache","isRegex","operTest","iExact","cachedValue","savedSearch","gtTest","gteTest","ltTest","lteTest","notMatch","notTest","anyMatch","rowArray","range","toTest","range1","range2","toSplit","wild","wildOrTest","wildTest","fuzzy","fuzzyTest","patternIndx","fxn","noSelect","processStr","lastSearch","filter_searchTimer","filter_initTimer","filter_formatterCount","filter_formatterInit","filter_anyColumnSelector","filter_multipleColumnSelector","alreadyFiltered","iQuery","igQuery","exactTest","buildRow","buildDefault","filter_$externalFilters","searching","lastCombinedFilter","buildSelect","bindSearch","hideFilters","filteredRows","completeInit","filterInitComplete","setDefaults","formatterUpdated","findRows","processFilters","encode","decodeURIComponent","$filters","getFilters","$filter","makeSelect","ffxn","cellFilter","buildFilter","getColumnElm","data-column","aria-label","internal","$ext","filter_$anyMatch","liveSearch","fallback","skipFirst","checkFilters","equalFilters","filter1","filter2","f1","f2","filterArray","currentFilters","hideFiltersCheck","defaultFilter","mask","maskLen","getLatestSearch","findRange","ignoreRanges","ranges","singles","$elements","multipleColumns","excludeMatch","matchedOn","matchType","columnIndex","processRow","showRow","hasAnyMatchInput","anyMatchFlag","anyMatchFilter","cacheArray","rawArray","iAnyMatchFilter","noAnyMatch","childRowText","excludeFilter","defaultColFilter","functions","norm_rows","showParent","notFiltered","searchFiltered","injected","res","storedFilters","defaultAnyFilter","getOptionSource","onlyAvail","processOptions","cts","parsedTxt","validColumn","childLen","updating","getRaw","$column","getStickyOffset","stickyHeaders_offset","sticky","stickyVis","stickyHide","stickyWrap","addHeaderResizeEvent","checkSizes","triggerEvent","sizes","resize_flag","resize_timer","stickyHeaders","stickyHeaders_appendTo","stickyHeaders_attachTo","stickyHeaders_xScroll","stickyHeaders_yScroll","stickyHeaders_filteredToTop","stickyHeaders_cloneId","stickyHeaders_addResizeEvent","stickyHeaders_includeCaption","stickyHeaders_zIndex","$stickyCells","$attach","$yScroll","$xScroll","$thead","stickyOffset","$nestedSticky","$sticky","nestedStickyTop","$stickyTable","$stickyWrap","$stickyThead","laststate","setWidth","$orig","$clone","outerWidth","min-width","max-width","getLeftPosition","yWindow","resizeHeader","scrollSticky","resizing","yScroll","attachTop","captionHeight","tableHeight","isVisible","needsUpdating","cssSettings","resizer","$td","resizableContainer","resizableHandle","resizableNoSelect","resizableStorage","resizable","storedSizes","resizable_vars","useStorage","$wrap","mouseXPosition","resizableReset","tableWidth","fullWidth","setWidths","updateStoredSizes","$resizable_container","unselectable","bindings","$extra","$col","setHandlePosition","startPosition","$handles","handleCenter","floor","scrollerWrap","resizable_includeFooter","resizable_addLastColumn","checkVisibleColumns","toggleTextSelection","resizable_targetLast","resizable_throttle","mouseMove","stopResize","allowClick","total","tar","leftEdge","resizable_widths","thisWidget","getStoredSortList","stored","sortListChanged","saveSort","loadData","$spinner","$content","onClickNew","createDialog","showModal","onClickEdit","dialogContentUrl","onLoadSuccess","submitDialog","$form","$submitButton","FormData","onSubmitSuccess","onSubmitError","closeDialog","attribute","errors","$field","$error","snackbar"],"mappings":"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","file":"site.js","sourcesContent":[";(function() {\n\"use strict\";\n\n/**\n * @license\n * Copyright 2015 Google Inc. All Rights Reserved.\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\n\n/**\n * A component handler interface using the revealing module design pattern.\n * More details on this design pattern here:\n * https://github.com/jasonmayes/mdl-component-design-pattern\n *\n * @author Jason Mayes.\n */\n/* exported componentHandler */\n\n// Pre-defining the componentHandler interface, for closure documentation and\n// static verification.\nvar componentHandler = {\n /**\n * Searches existing DOM for elements of our component type and upgrades them\n * if they have not already been upgraded.\n *\n * @param {string=} optJsClass the programatic name of the element class we\n * need to create a new instance of.\n * @param {string=} optCssClass the name of the CSS class elements of this\n * type will have.\n */\n upgradeDom: function(optJsClass, optCssClass) {},\n /**\n * Upgrades a specific element rather than all in the DOM.\n *\n * @param {!Element} element The element we wish to upgrade.\n * @param {string=} optJsClass Optional name of the class we want to upgrade\n * the element to.\n */\n upgradeElement: function(element, optJsClass) {},\n /**\n * Upgrades a specific list of elements rather than all in the DOM.\n *\n * @param {!Element|!Array|!NodeList|!HTMLCollection} elements\n * The elements we wish to upgrade.\n */\n upgradeElements: function(elements) {},\n /**\n * Upgrades all registered components found in the current DOM. This is\n * automatically called on window load.\n */\n upgradeAllRegistered: function() {},\n /**\n * Allows user to be alerted to any upgrades that are performed for a given\n * component type\n *\n * @param {string} jsClass The class name of the MDL component we wish\n * to hook into for any upgrades performed.\n * @param {function(!HTMLElement)} callback The function to call upon an\n * upgrade. This function should expect 1 parameter - the HTMLElement which\n * got upgraded.\n */\n registerUpgradedCallback: function(jsClass, callback) {},\n /**\n * Registers a class for future use and attempts to upgrade existing DOM.\n *\n * @param {componentHandler.ComponentConfigPublic} config the registration configuration\n */\n register: function(config) {},\n /**\n * Downgrade either a given node, an array of nodes, or a NodeList.\n *\n * @param {!Node|!Array|!NodeList} nodes\n */\n downgradeElements: function(nodes) {}\n};\n\ncomponentHandler = (function() {\n 'use strict';\n\n /** @type {!Array} */\n var registeredComponents_ = [];\n\n /** @type {!Array} */\n var createdComponents_ = [];\n\n var componentConfigProperty_ = 'mdlComponentConfigInternal_';\n\n /**\n * Searches registered components for a class we are interested in using.\n * Optionally replaces a match with passed object if specified.\n *\n * @param {string} name The name of a class we want to use.\n * @param {componentHandler.ComponentConfig=} optReplace Optional object to replace match with.\n * @return {!Object|boolean}\n * @private\n */\n function findRegisteredClass_(name, optReplace) {\n for (var i = 0; i < registeredComponents_.length; i++) {\n if (registeredComponents_[i].className === name) {\n if (typeof optReplace !== 'undefined') {\n registeredComponents_[i] = optReplace;\n }\n return registeredComponents_[i];\n }\n }\n return false;\n }\n\n /**\n * Returns an array of the classNames of the upgraded classes on the element.\n *\n * @param {!Element} element The element to fetch data from.\n * @return {!Array}\n * @private\n */\n function getUpgradedListOfElement_(element) {\n var dataUpgraded = element.getAttribute('data-upgraded');\n // Use `['']` as default value to conform the `,name,name...` style.\n return dataUpgraded === null ? [''] : dataUpgraded.split(',');\n }\n\n /**\n * Returns true if the given element has already been upgraded for the given\n * class.\n *\n * @param {!Element} element The element we want to check.\n * @param {string} jsClass The class to check for.\n * @returns {boolean}\n * @private\n */\n function isElementUpgraded_(element, jsClass) {\n var upgradedList = getUpgradedListOfElement_(element);\n return upgradedList.indexOf(jsClass) !== -1;\n }\n\n /**\n * Create an event object.\n *\n * @param {string} eventType The type name of the event.\n * @param {boolean} bubbles Whether the event should bubble up the DOM.\n * @param {boolean} cancelable Whether the event can be canceled.\n * @returns {!Event}\n */\n function createEvent_(eventType, bubbles, cancelable) {\n if ('CustomEvent' in window && typeof window.CustomEvent === 'function') {\n return new CustomEvent(eventType, {\n bubbles: bubbles,\n cancelable: cancelable\n });\n } else {\n var ev = document.createEvent('Events');\n ev.initEvent(eventType, bubbles, cancelable);\n return ev;\n }\n }\n\n /**\n * Searches existing DOM for elements of our component type and upgrades them\n * if they have not already been upgraded.\n *\n * @param {string=} optJsClass the programatic name of the element class we\n * need to create a new instance of.\n * @param {string=} optCssClass the name of the CSS class elements of this\n * type will have.\n */\n function upgradeDomInternal(optJsClass, optCssClass) {\n if (typeof optJsClass === 'undefined' &&\n typeof optCssClass === 'undefined') {\n for (var i = 0; i < registeredComponents_.length; i++) {\n upgradeDomInternal(registeredComponents_[i].className,\n registeredComponents_[i].cssClass);\n }\n } else {\n var jsClass = /** @type {string} */ (optJsClass);\n if (typeof optCssClass === 'undefined') {\n var registeredClass = findRegisteredClass_(jsClass);\n if (registeredClass) {\n optCssClass = registeredClass.cssClass;\n }\n }\n\n var elements = document.querySelectorAll('.' + optCssClass);\n for (var n = 0; n < elements.length; n++) {\n upgradeElementInternal(elements[n], jsClass);\n }\n }\n }\n\n /**\n * Upgrades a specific element rather than all in the DOM.\n *\n * @param {!Element} element The element we wish to upgrade.\n * @param {string=} optJsClass Optional name of the class we want to upgrade\n * the element to.\n */\n function upgradeElementInternal(element, optJsClass) {\n // Verify argument type.\n if (!(typeof element === 'object' && element instanceof Element)) {\n throw new Error('Invalid argument provided to upgrade MDL element.');\n }\n // Allow upgrade to be canceled by canceling emitted event.\n var upgradingEv = createEvent_('mdl-componentupgrading', true, true);\n element.dispatchEvent(upgradingEv);\n if (upgradingEv.defaultPrevented) {\n return;\n }\n\n var upgradedList = getUpgradedListOfElement_(element);\n var classesToUpgrade = [];\n // If jsClass is not provided scan the registered components to find the\n // ones matching the element's CSS classList.\n if (!optJsClass) {\n var classList = element.classList;\n registeredComponents_.forEach(function(component) {\n // Match CSS & Not to be upgraded & Not upgraded.\n if (classList.contains(component.cssClass) &&\n classesToUpgrade.indexOf(component) === -1 &&\n !isElementUpgraded_(element, component.className)) {\n classesToUpgrade.push(component);\n }\n });\n } else if (!isElementUpgraded_(element, optJsClass)) {\n classesToUpgrade.push(findRegisteredClass_(optJsClass));\n }\n\n // Upgrade the element for each classes.\n for (var i = 0, n = classesToUpgrade.length, registeredClass; i < n; i++) {\n registeredClass = classesToUpgrade[i];\n if (registeredClass) {\n // Mark element as upgraded.\n upgradedList.push(registeredClass.className);\n element.setAttribute('data-upgraded', upgradedList.join(','));\n var instance = new registeredClass.classConstructor(element);\n instance[componentConfigProperty_] = registeredClass;\n createdComponents_.push(instance);\n // Call any callbacks the user has registered with this component type.\n for (var j = 0, m = registeredClass.callbacks.length; j < m; j++) {\n registeredClass.callbacks[j](element);\n }\n\n if (registeredClass.widget) {\n // Assign per element instance for control over API\n element[registeredClass.className] = instance;\n }\n } else {\n throw new Error(\n 'Unable to find a registered component for the given class.');\n }\n\n var upgradedEv = createEvent_('mdl-componentupgraded', true, false);\n element.dispatchEvent(upgradedEv);\n }\n }\n\n /**\n * Upgrades a specific list of elements rather than all in the DOM.\n *\n * @param {!Element|!Array|!NodeList|!HTMLCollection} elements\n * The elements we wish to upgrade.\n */\n function upgradeElementsInternal(elements) {\n if (!Array.isArray(elements)) {\n if (elements instanceof Element) {\n elements = [elements];\n } else {\n elements = Array.prototype.slice.call(elements);\n }\n }\n for (var i = 0, n = elements.length, element; i < n; i++) {\n element = elements[i];\n if (element instanceof HTMLElement) {\n upgradeElementInternal(element);\n if (element.children.length > 0) {\n upgradeElementsInternal(element.children);\n }\n }\n }\n }\n\n /**\n * Registers a class for future use and attempts to upgrade existing DOM.\n *\n * @param {componentHandler.ComponentConfigPublic} config\n */\n function registerInternal(config) {\n // In order to support both Closure-compiled and uncompiled code accessing\n // this method, we need to allow for both the dot and array syntax for\n // property access. You'll therefore see the `foo.bar || foo['bar']`\n // pattern repeated across this method.\n var widgetMissing = (typeof config.widget === 'undefined' &&\n typeof config['widget'] === 'undefined');\n var widget = true;\n\n if (!widgetMissing) {\n widget = config.widget || config['widget'];\n }\n\n var newConfig = /** @type {componentHandler.ComponentConfig} */ ({\n classConstructor: config.constructor || config['constructor'],\n className: config.classAsString || config['classAsString'],\n cssClass: config.cssClass || config['cssClass'],\n widget: widget,\n callbacks: []\n });\n\n registeredComponents_.forEach(function(item) {\n if (item.cssClass === newConfig.cssClass) {\n throw new Error('The provided cssClass has already been registered: ' + item.cssClass);\n }\n if (item.className === newConfig.className) {\n throw new Error('The provided className has already been registered');\n }\n });\n\n if (config.constructor.prototype\n .hasOwnProperty(componentConfigProperty_)) {\n throw new Error(\n 'MDL component classes must not have ' + componentConfigProperty_ +\n ' defined as a property.');\n }\n\n var found = findRegisteredClass_(config.classAsString, newConfig);\n\n if (!found) {\n registeredComponents_.push(newConfig);\n }\n }\n\n /**\n * Allows user to be alerted to any upgrades that are performed for a given\n * component type\n *\n * @param {string} jsClass The class name of the MDL component we wish\n * to hook into for any upgrades performed.\n * @param {function(!HTMLElement)} callback The function to call upon an\n * upgrade. This function should expect 1 parameter - the HTMLElement which\n * got upgraded.\n */\n function registerUpgradedCallbackInternal(jsClass, callback) {\n var regClass = findRegisteredClass_(jsClass);\n if (regClass) {\n regClass.callbacks.push(callback);\n }\n }\n\n /**\n * Upgrades all registered components found in the current DOM. This is\n * automatically called on window load.\n */\n function upgradeAllRegisteredInternal() {\n for (var n = 0; n < registeredComponents_.length; n++) {\n upgradeDomInternal(registeredComponents_[n].className);\n }\n }\n\n /**\n * Check the component for the downgrade method.\n * Execute if found.\n * Remove component from createdComponents list.\n *\n * @param {?componentHandler.Component} component\n */\n function deconstructComponentInternal(component) {\n if (component) {\n var componentIndex = createdComponents_.indexOf(component);\n createdComponents_.splice(componentIndex, 1);\n\n var upgrades = component.element_.getAttribute('data-upgraded').split(',');\n var componentPlace = upgrades.indexOf(component[componentConfigProperty_].classAsString);\n upgrades.splice(componentPlace, 1);\n component.element_.setAttribute('data-upgraded', upgrades.join(','));\n\n var ev = createEvent_('mdl-componentdowngraded', true, false);\n component.element_.dispatchEvent(ev);\n }\n }\n\n /**\n * Downgrade either a given node, an array of nodes, or a NodeList.\n *\n * @param {!Node|!Array|!NodeList} nodes\n */\n function downgradeNodesInternal(nodes) {\n /**\n * Auxiliary function to downgrade a single node.\n * @param {!Node} node the node to be downgraded\n */\n var downgradeNode = function(node) {\n createdComponents_.filter(function(item) {\n return item.element_ === node;\n }).forEach(deconstructComponentInternal);\n };\n if (nodes instanceof Array || nodes instanceof NodeList) {\n for (var n = 0; n < nodes.length; n++) {\n downgradeNode(nodes[n]);\n }\n } else if (nodes instanceof Node) {\n downgradeNode(nodes);\n } else {\n throw new Error('Invalid argument provided to downgrade MDL nodes.');\n }\n }\n\n // Now return the functions that should be made public with their publicly\n // facing names...\n return {\n upgradeDom: upgradeDomInternal,\n upgradeElement: upgradeElementInternal,\n upgradeElements: upgradeElementsInternal,\n upgradeAllRegistered: upgradeAllRegisteredInternal,\n registerUpgradedCallback: registerUpgradedCallbackInternal,\n register: registerInternal,\n downgradeElements: downgradeNodesInternal\n };\n})();\n\n/**\n * Describes the type of a registered component type managed by\n * componentHandler. Provided for benefit of the Closure compiler.\n *\n * @typedef {{\n * constructor: Function,\n * classAsString: string,\n * cssClass: string,\n * widget: (string|boolean|undefined)\n * }}\n */\ncomponentHandler.ComponentConfigPublic; // jshint ignore:line\n\n/**\n * Describes the type of a registered component type managed by\n * componentHandler. Provided for benefit of the Closure compiler.\n *\n * @typedef {{\n * constructor: !Function,\n * className: string,\n * cssClass: string,\n * widget: (string|boolean),\n * callbacks: !Array\n * }}\n */\ncomponentHandler.ComponentConfig; // jshint ignore:line\n\n/**\n * Created component (i.e., upgraded element) type as managed by\n * componentHandler. Provided for benefit of the Closure compiler.\n *\n * @typedef {{\n * element_: !HTMLElement,\n * className: string,\n * classAsString: string,\n * cssClass: string,\n * widget: string\n * }}\n */\ncomponentHandler.Component; // jshint ignore:line\n\n// Export all symbols, for the benefit of Closure compiler.\n// No effect on uncompiled code.\ncomponentHandler['upgradeDom'] = componentHandler.upgradeDom;\ncomponentHandler['upgradeElement'] = componentHandler.upgradeElement;\ncomponentHandler['upgradeElements'] = componentHandler.upgradeElements;\ncomponentHandler['upgradeAllRegistered'] =\n componentHandler.upgradeAllRegistered;\ncomponentHandler['registerUpgradedCallback'] =\n componentHandler.registerUpgradedCallback;\ncomponentHandler['register'] = componentHandler.register;\ncomponentHandler['downgradeElements'] = componentHandler.downgradeElements;\nwindow.componentHandler = componentHandler;\nwindow['componentHandler'] = componentHandler;\n\nwindow.addEventListener('load', function() {\n 'use strict';\n\n /**\n * Performs a \"Cutting the mustard\" test. If the browser supports the features\n * tested, adds a mdl-js class to the element. It then upgrades all MDL\n * components requiring JavaScript.\n */\n if ('classList' in document.createElement('div') &&\n 'querySelector' in document &&\n 'addEventListener' in window && Array.prototype.forEach) {\n document.documentElement.classList.add('mdl-js');\n componentHandler.upgradeAllRegistered();\n } else {\n /**\n * Dummy function to avoid JS errors.\n */\n componentHandler.upgradeElement = function() {};\n /**\n * Dummy function to avoid JS errors.\n */\n componentHandler.register = function() {};\n }\n});\n\n// Source: https://github.com/darius/requestAnimationFrame/blob/master/requestAnimationFrame.js\n// Adapted from https://gist.github.com/paulirish/1579671 which derived from\n// http://paulirish.com/2011/requestanimationframe-for-smart-animating/\n// http://my.opera.com/emoller/blog/2011/12/20/requestanimationframe-for-smart-er-animating\n// requestAnimationFrame polyfill by Erik Möller.\n// Fixes from Paul Irish, Tino Zijdel, Andrew Mao, Klemen Slavič, Darius Bacon\n// MIT license\nif (!Date.now) {\n /**\n * Date.now polyfill.\n * @return {number} the current Date\n */\n Date.now = function () {\n return new Date().getTime();\n };\n Date['now'] = Date.now;\n}\nvar vendors = [\n 'webkit',\n 'moz'\n];\nfor (var i = 0; i < vendors.length && !window.requestAnimationFrame; ++i) {\n var vp = vendors[i];\n window.requestAnimationFrame = window[vp + 'RequestAnimationFrame'];\n window.cancelAnimationFrame = window[vp + 'CancelAnimationFrame'] || window[vp + 'CancelRequestAnimationFrame'];\n window['requestAnimationFrame'] = window.requestAnimationFrame;\n window['cancelAnimationFrame'] = window.cancelAnimationFrame;\n}\nif (/iP(ad|hone|od).*OS 6/.test(window.navigator.userAgent) || !window.requestAnimationFrame || !window.cancelAnimationFrame) {\n var lastTime = 0;\n /**\n * requestAnimationFrame polyfill.\n * @param {!Function} callback the callback function.\n */\n window.requestAnimationFrame = function (callback) {\n var now = Date.now();\n var nextTime = Math.max(lastTime + 16, now);\n return setTimeout(function () {\n callback(lastTime = nextTime);\n }, nextTime - now);\n };\n window.cancelAnimationFrame = clearTimeout;\n window['requestAnimationFrame'] = window.requestAnimationFrame;\n window['cancelAnimationFrame'] = window.cancelAnimationFrame;\n}\n/**\n * @license\n * Copyright 2015 Google Inc. All Rights Reserved.\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\n/**\n * Class constructor for Button MDL component.\n * Implements MDL component design pattern defined at:\n * https://github.com/jasonmayes/mdl-component-design-pattern\n *\n * @param {HTMLElement} element The element that will be upgraded.\n */\nvar MaterialButton = function MaterialButton(element) {\n this.element_ = element;\n // Initialize instance.\n this.init();\n};\nwindow['MaterialButton'] = MaterialButton;\n/**\n * Store constants in one place so they can be updated easily.\n *\n * @enum {string | number}\n * @private\n */\nMaterialButton.prototype.Constant_ = {};\n/**\n * Store strings for class names defined by this component that are used in\n * JavaScript. This allows us to simply change it in one place should we\n * decide to modify at a later date.\n *\n * @enum {string}\n * @private\n */\nMaterialButton.prototype.CssClasses_ = {\n RIPPLE_EFFECT: 'mdl-js-ripple-effect',\n RIPPLE_CONTAINER: 'mdl-button__ripple-container',\n RIPPLE: 'mdl-ripple'\n};\n/**\n * Handle blur of element.\n *\n * @param {Event} event The event that fired.\n * @private\n */\nMaterialButton.prototype.blurHandler_ = function (event) {\n if (event) {\n this.element_.blur();\n }\n};\n// Public methods.\n/**\n * Disable button.\n *\n * @public\n */\nMaterialButton.prototype.disable = function () {\n this.element_.disabled = true;\n};\nMaterialButton.prototype['disable'] = MaterialButton.prototype.disable;\n/**\n * Enable button.\n *\n * @public\n */\nMaterialButton.prototype.enable = function () {\n this.element_.disabled = false;\n};\nMaterialButton.prototype['enable'] = MaterialButton.prototype.enable;\n/**\n * Initialize element.\n */\nMaterialButton.prototype.init = function () {\n if (this.element_) {\n if (this.element_.classList.contains(this.CssClasses_.RIPPLE_EFFECT)) {\n var rippleContainer = document.createElement('span');\n rippleContainer.classList.add(this.CssClasses_.RIPPLE_CONTAINER);\n this.rippleElement_ = document.createElement('span');\n this.rippleElement_.classList.add(this.CssClasses_.RIPPLE);\n rippleContainer.appendChild(this.rippleElement_);\n this.boundRippleBlurHandler = this.blurHandler_.bind(this);\n this.rippleElement_.addEventListener('mouseup', this.boundRippleBlurHandler);\n this.element_.appendChild(rippleContainer);\n }\n this.boundButtonBlurHandler = this.blurHandler_.bind(this);\n this.element_.addEventListener('mouseup', this.boundButtonBlurHandler);\n this.element_.addEventListener('mouseleave', this.boundButtonBlurHandler);\n }\n};\n// The component registers itself. It can assume componentHandler is available\n// in the global scope.\ncomponentHandler.register({\n constructor: MaterialButton,\n classAsString: 'MaterialButton',\n cssClass: 'mdl-js-button',\n widget: true\n});\n/**\n * @license\n * Copyright 2015 Google Inc. All Rights Reserved.\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\n/**\n * Class constructor for Checkbox MDL component.\n * Implements MDL component design pattern defined at:\n * https://github.com/jasonmayes/mdl-component-design-pattern\n *\n * @constructor\n * @param {HTMLElement} element The element that will be upgraded.\n */\nvar MaterialCheckbox = function MaterialCheckbox(element) {\n this.element_ = element;\n // Initialize instance.\n this.init();\n};\nwindow['MaterialCheckbox'] = MaterialCheckbox;\n/**\n * Store constants in one place so they can be updated easily.\n *\n * @enum {string | number}\n * @private\n */\nMaterialCheckbox.prototype.Constant_ = { TINY_TIMEOUT: 0.001 };\n/**\n * Store strings for class names defined by this component that are used in\n * JavaScript. This allows us to simply change it in one place should we\n * decide to modify at a later date.\n *\n * @enum {string}\n * @private\n */\nMaterialCheckbox.prototype.CssClasses_ = {\n INPUT: 'mdl-checkbox__input',\n BOX_OUTLINE: 'mdl-checkbox__box-outline',\n FOCUS_HELPER: 'mdl-checkbox__focus-helper',\n TICK_OUTLINE: 'mdl-checkbox__tick-outline',\n RIPPLE_EFFECT: 'mdl-js-ripple-effect',\n RIPPLE_IGNORE_EVENTS: 'mdl-js-ripple-effect--ignore-events',\n RIPPLE_CONTAINER: 'mdl-checkbox__ripple-container',\n RIPPLE_CENTER: 'mdl-ripple--center',\n RIPPLE: 'mdl-ripple',\n IS_FOCUSED: 'is-focused',\n IS_DISABLED: 'is-disabled',\n IS_CHECKED: 'is-checked',\n IS_UPGRADED: 'is-upgraded'\n};\n/**\n * Handle change of state.\n *\n * @param {Event} event The event that fired.\n * @private\n */\nMaterialCheckbox.prototype.onChange_ = function (event) {\n this.updateClasses_();\n};\n/**\n * Handle focus of element.\n *\n * @param {Event} event The event that fired.\n * @private\n */\nMaterialCheckbox.prototype.onFocus_ = function (event) {\n this.element_.classList.add(this.CssClasses_.IS_FOCUSED);\n};\n/**\n * Handle lost focus of element.\n *\n * @param {Event} event The event that fired.\n * @private\n */\nMaterialCheckbox.prototype.onBlur_ = function (event) {\n this.element_.classList.remove(this.CssClasses_.IS_FOCUSED);\n};\n/**\n * Handle mouseup.\n *\n * @param {Event} event The event that fired.\n * @private\n */\nMaterialCheckbox.prototype.onMouseUp_ = function (event) {\n this.blur_();\n};\n/**\n * Handle class updates.\n *\n * @private\n */\nMaterialCheckbox.prototype.updateClasses_ = function () {\n this.checkDisabled();\n this.checkToggleState();\n};\n/**\n * Add blur.\n *\n * @private\n */\nMaterialCheckbox.prototype.blur_ = function () {\n // TODO: figure out why there's a focus event being fired after our blur,\n // so that we can avoid this hack.\n window.setTimeout(function () {\n this.inputElement_.blur();\n }.bind(this), this.Constant_.TINY_TIMEOUT);\n};\n// Public methods.\n/**\n * Check the inputs toggle state and update display.\n *\n * @public\n */\nMaterialCheckbox.prototype.checkToggleState = function () {\n if (this.inputElement_.checked) {\n this.element_.classList.add(this.CssClasses_.IS_CHECKED);\n } else {\n this.element_.classList.remove(this.CssClasses_.IS_CHECKED);\n }\n};\nMaterialCheckbox.prototype['checkToggleState'] = MaterialCheckbox.prototype.checkToggleState;\n/**\n * Check the inputs disabled state and update display.\n *\n * @public\n */\nMaterialCheckbox.prototype.checkDisabled = function () {\n if (this.inputElement_.disabled) {\n this.element_.classList.add(this.CssClasses_.IS_DISABLED);\n } else {\n this.element_.classList.remove(this.CssClasses_.IS_DISABLED);\n }\n};\nMaterialCheckbox.prototype['checkDisabled'] = MaterialCheckbox.prototype.checkDisabled;\n/**\n * Disable checkbox.\n *\n * @public\n */\nMaterialCheckbox.prototype.disable = function () {\n this.inputElement_.disabled = true;\n this.updateClasses_();\n};\nMaterialCheckbox.prototype['disable'] = MaterialCheckbox.prototype.disable;\n/**\n * Enable checkbox.\n *\n * @public\n */\nMaterialCheckbox.prototype.enable = function () {\n this.inputElement_.disabled = false;\n this.updateClasses_();\n};\nMaterialCheckbox.prototype['enable'] = MaterialCheckbox.prototype.enable;\n/**\n * Check checkbox.\n *\n * @public\n */\nMaterialCheckbox.prototype.check = function () {\n this.inputElement_.checked = true;\n this.updateClasses_();\n};\nMaterialCheckbox.prototype['check'] = MaterialCheckbox.prototype.check;\n/**\n * Uncheck checkbox.\n *\n * @public\n */\nMaterialCheckbox.prototype.uncheck = function () {\n this.inputElement_.checked = false;\n this.updateClasses_();\n};\nMaterialCheckbox.prototype['uncheck'] = MaterialCheckbox.prototype.uncheck;\n/**\n * Initialize element.\n */\nMaterialCheckbox.prototype.init = function () {\n if (this.element_) {\n this.inputElement_ = this.element_.querySelector('.' + this.CssClasses_.INPUT);\n var boxOutline = document.createElement('span');\n boxOutline.classList.add(this.CssClasses_.BOX_OUTLINE);\n var tickContainer = document.createElement('span');\n tickContainer.classList.add(this.CssClasses_.FOCUS_HELPER);\n var tickOutline = document.createElement('span');\n tickOutline.classList.add(this.CssClasses_.TICK_OUTLINE);\n boxOutline.appendChild(tickOutline);\n this.element_.appendChild(tickContainer);\n this.element_.appendChild(boxOutline);\n if (this.element_.classList.contains(this.CssClasses_.RIPPLE_EFFECT)) {\n this.element_.classList.add(this.CssClasses_.RIPPLE_IGNORE_EVENTS);\n this.rippleContainerElement_ = document.createElement('span');\n this.rippleContainerElement_.classList.add(this.CssClasses_.RIPPLE_CONTAINER);\n this.rippleContainerElement_.classList.add(this.CssClasses_.RIPPLE_EFFECT);\n this.rippleContainerElement_.classList.add(this.CssClasses_.RIPPLE_CENTER);\n this.boundRippleMouseUp = this.onMouseUp_.bind(this);\n this.rippleContainerElement_.addEventListener('mouseup', this.boundRippleMouseUp);\n var ripple = document.createElement('span');\n ripple.classList.add(this.CssClasses_.RIPPLE);\n this.rippleContainerElement_.appendChild(ripple);\n this.element_.appendChild(this.rippleContainerElement_);\n }\n this.boundInputOnChange = this.onChange_.bind(this);\n this.boundInputOnFocus = this.onFocus_.bind(this);\n this.boundInputOnBlur = this.onBlur_.bind(this);\n this.boundElementMouseUp = this.onMouseUp_.bind(this);\n this.inputElement_.addEventListener('change', this.boundInputOnChange);\n this.inputElement_.addEventListener('focus', this.boundInputOnFocus);\n this.inputElement_.addEventListener('blur', this.boundInputOnBlur);\n this.element_.addEventListener('mouseup', this.boundElementMouseUp);\n this.updateClasses_();\n this.element_.classList.add(this.CssClasses_.IS_UPGRADED);\n }\n};\n// The component registers itself. It can assume componentHandler is available\n// in the global scope.\ncomponentHandler.register({\n constructor: MaterialCheckbox,\n classAsString: 'MaterialCheckbox',\n cssClass: 'mdl-js-checkbox',\n widget: true\n});\n/**\n * @license\n * Copyright 2015 Google Inc. All Rights Reserved.\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\n/**\n * Class constructor for icon toggle MDL component.\n * Implements MDL component design pattern defined at:\n * https://github.com/jasonmayes/mdl-component-design-pattern\n *\n * @constructor\n * @param {HTMLElement} element The element that will be upgraded.\n */\nvar MaterialIconToggle = function MaterialIconToggle(element) {\n this.element_ = element;\n // Initialize instance.\n this.init();\n};\nwindow['MaterialIconToggle'] = MaterialIconToggle;\n/**\n * Store constants in one place so they can be updated easily.\n *\n * @enum {string | number}\n * @private\n */\nMaterialIconToggle.prototype.Constant_ = { TINY_TIMEOUT: 0.001 };\n/**\n * Store strings for class names defined by this component that are used in\n * JavaScript. This allows us to simply change it in one place should we\n * decide to modify at a later date.\n *\n * @enum {string}\n * @private\n */\nMaterialIconToggle.prototype.CssClasses_ = {\n INPUT: 'mdl-icon-toggle__input',\n JS_RIPPLE_EFFECT: 'mdl-js-ripple-effect',\n RIPPLE_IGNORE_EVENTS: 'mdl-js-ripple-effect--ignore-events',\n RIPPLE_CONTAINER: 'mdl-icon-toggle__ripple-container',\n RIPPLE_CENTER: 'mdl-ripple--center',\n RIPPLE: 'mdl-ripple',\n IS_FOCUSED: 'is-focused',\n IS_DISABLED: 'is-disabled',\n IS_CHECKED: 'is-checked'\n};\n/**\n * Handle change of state.\n *\n * @param {Event} event The event that fired.\n * @private\n */\nMaterialIconToggle.prototype.onChange_ = function (event) {\n this.updateClasses_();\n};\n/**\n * Handle focus of element.\n *\n * @param {Event} event The event that fired.\n * @private\n */\nMaterialIconToggle.prototype.onFocus_ = function (event) {\n this.element_.classList.add(this.CssClasses_.IS_FOCUSED);\n};\n/**\n * Handle lost focus of element.\n *\n * @param {Event} event The event that fired.\n * @private\n */\nMaterialIconToggle.prototype.onBlur_ = function (event) {\n this.element_.classList.remove(this.CssClasses_.IS_FOCUSED);\n};\n/**\n * Handle mouseup.\n *\n * @param {Event} event The event that fired.\n * @private\n */\nMaterialIconToggle.prototype.onMouseUp_ = function (event) {\n this.blur_();\n};\n/**\n * Handle class updates.\n *\n * @private\n */\nMaterialIconToggle.prototype.updateClasses_ = function () {\n this.checkDisabled();\n this.checkToggleState();\n};\n/**\n * Add blur.\n *\n * @private\n */\nMaterialIconToggle.prototype.blur_ = function () {\n // TODO: figure out why there's a focus event being fired after our blur,\n // so that we can avoid this hack.\n window.setTimeout(function () {\n this.inputElement_.blur();\n }.bind(this), this.Constant_.TINY_TIMEOUT);\n};\n// Public methods.\n/**\n * Check the inputs toggle state and update display.\n *\n * @public\n */\nMaterialIconToggle.prototype.checkToggleState = function () {\n if (this.inputElement_.checked) {\n this.element_.classList.add(this.CssClasses_.IS_CHECKED);\n } else {\n this.element_.classList.remove(this.CssClasses_.IS_CHECKED);\n }\n};\nMaterialIconToggle.prototype['checkToggleState'] = MaterialIconToggle.prototype.checkToggleState;\n/**\n * Check the inputs disabled state and update display.\n *\n * @public\n */\nMaterialIconToggle.prototype.checkDisabled = function () {\n if (this.inputElement_.disabled) {\n this.element_.classList.add(this.CssClasses_.IS_DISABLED);\n } else {\n this.element_.classList.remove(this.CssClasses_.IS_DISABLED);\n }\n};\nMaterialIconToggle.prototype['checkDisabled'] = MaterialIconToggle.prototype.checkDisabled;\n/**\n * Disable icon toggle.\n *\n * @public\n */\nMaterialIconToggle.prototype.disable = function () {\n this.inputElement_.disabled = true;\n this.updateClasses_();\n};\nMaterialIconToggle.prototype['disable'] = MaterialIconToggle.prototype.disable;\n/**\n * Enable icon toggle.\n *\n * @public\n */\nMaterialIconToggle.prototype.enable = function () {\n this.inputElement_.disabled = false;\n this.updateClasses_();\n};\nMaterialIconToggle.prototype['enable'] = MaterialIconToggle.prototype.enable;\n/**\n * Check icon toggle.\n *\n * @public\n */\nMaterialIconToggle.prototype.check = function () {\n this.inputElement_.checked = true;\n this.updateClasses_();\n};\nMaterialIconToggle.prototype['check'] = MaterialIconToggle.prototype.check;\n/**\n * Uncheck icon toggle.\n *\n * @public\n */\nMaterialIconToggle.prototype.uncheck = function () {\n this.inputElement_.checked = false;\n this.updateClasses_();\n};\nMaterialIconToggle.prototype['uncheck'] = MaterialIconToggle.prototype.uncheck;\n/**\n * Initialize element.\n */\nMaterialIconToggle.prototype.init = function () {\n if (this.element_) {\n this.inputElement_ = this.element_.querySelector('.' + this.CssClasses_.INPUT);\n if (this.element_.classList.contains(this.CssClasses_.JS_RIPPLE_EFFECT)) {\n this.element_.classList.add(this.CssClasses_.RIPPLE_IGNORE_EVENTS);\n this.rippleContainerElement_ = document.createElement('span');\n this.rippleContainerElement_.classList.add(this.CssClasses_.RIPPLE_CONTAINER);\n this.rippleContainerElement_.classList.add(this.CssClasses_.JS_RIPPLE_EFFECT);\n this.rippleContainerElement_.classList.add(this.CssClasses_.RIPPLE_CENTER);\n this.boundRippleMouseUp = this.onMouseUp_.bind(this);\n this.rippleContainerElement_.addEventListener('mouseup', this.boundRippleMouseUp);\n var ripple = document.createElement('span');\n ripple.classList.add(this.CssClasses_.RIPPLE);\n this.rippleContainerElement_.appendChild(ripple);\n this.element_.appendChild(this.rippleContainerElement_);\n }\n this.boundInputOnChange = this.onChange_.bind(this);\n this.boundInputOnFocus = this.onFocus_.bind(this);\n this.boundInputOnBlur = this.onBlur_.bind(this);\n this.boundElementOnMouseUp = this.onMouseUp_.bind(this);\n this.inputElement_.addEventListener('change', this.boundInputOnChange);\n this.inputElement_.addEventListener('focus', this.boundInputOnFocus);\n this.inputElement_.addEventListener('blur', this.boundInputOnBlur);\n this.element_.addEventListener('mouseup', this.boundElementOnMouseUp);\n this.updateClasses_();\n this.element_.classList.add('is-upgraded');\n }\n};\n// The component registers itself. It can assume componentHandler is available\n// in the global scope.\ncomponentHandler.register({\n constructor: MaterialIconToggle,\n classAsString: 'MaterialIconToggle',\n cssClass: 'mdl-js-icon-toggle',\n widget: true\n});\n/**\n * @license\n * Copyright 2015 Google Inc. All Rights Reserved.\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\n/**\n * Class constructor for dropdown MDL component.\n * Implements MDL component design pattern defined at:\n * https://github.com/jasonmayes/mdl-component-design-pattern\n *\n * @constructor\n * @param {HTMLElement} element The element that will be upgraded.\n */\nvar MaterialMenu = function MaterialMenu(element) {\n this.element_ = element;\n // Initialize instance.\n this.init();\n};\nwindow['MaterialMenu'] = MaterialMenu;\n/**\n * Store constants in one place so they can be updated easily.\n *\n * @enum {string | number}\n * @private\n */\nMaterialMenu.prototype.Constant_ = {\n // Total duration of the menu animation.\n TRANSITION_DURATION_SECONDS: 0.3,\n // The fraction of the total duration we want to use for menu item animations.\n TRANSITION_DURATION_FRACTION: 0.8,\n // How long the menu stays open after choosing an option (so the user can see\n // the ripple).\n CLOSE_TIMEOUT: 150\n};\n/**\n * Keycodes, for code readability.\n *\n * @enum {number}\n * @private\n */\nMaterialMenu.prototype.Keycodes_ = {\n ENTER: 13,\n ESCAPE: 27,\n SPACE: 32,\n UP_ARROW: 38,\n DOWN_ARROW: 40\n};\n/**\n * Store strings for class names defined by this component that are used in\n * JavaScript. This allows us to simply change it in one place should we\n * decide to modify at a later date.\n *\n * @enum {string}\n * @private\n */\nMaterialMenu.prototype.CssClasses_ = {\n CONTAINER: 'mdl-menu__container',\n OUTLINE: 'mdl-menu__outline',\n ITEM: 'mdl-menu__item',\n ITEM_RIPPLE_CONTAINER: 'mdl-menu__item-ripple-container',\n RIPPLE_EFFECT: 'mdl-js-ripple-effect',\n RIPPLE_IGNORE_EVENTS: 'mdl-js-ripple-effect--ignore-events',\n RIPPLE: 'mdl-ripple',\n // Statuses\n IS_UPGRADED: 'is-upgraded',\n IS_VISIBLE: 'is-visible',\n IS_ANIMATING: 'is-animating',\n // Alignment options\n BOTTOM_LEFT: 'mdl-menu--bottom-left',\n // This is the default.\n BOTTOM_RIGHT: 'mdl-menu--bottom-right',\n TOP_LEFT: 'mdl-menu--top-left',\n TOP_RIGHT: 'mdl-menu--top-right',\n UNALIGNED: 'mdl-menu--unaligned'\n};\n/**\n * Initialize element.\n */\nMaterialMenu.prototype.init = function () {\n if (this.element_) {\n // Create container for the menu.\n var container = document.createElement('div');\n container.classList.add(this.CssClasses_.CONTAINER);\n this.element_.parentElement.insertBefore(container, this.element_);\n this.element_.parentElement.removeChild(this.element_);\n container.appendChild(this.element_);\n this.container_ = container;\n // Create outline for the menu (shadow and background).\n var outline = document.createElement('div');\n outline.classList.add(this.CssClasses_.OUTLINE);\n this.outline_ = outline;\n container.insertBefore(outline, this.element_);\n // Find the \"for\" element and bind events to it.\n var forElId = this.element_.getAttribute('for') || this.element_.getAttribute('data-mdl-for');\n var forEl = null;\n if (forElId) {\n forEl = document.getElementById(forElId);\n if (forEl) {\n this.forElement_ = forEl;\n forEl.addEventListener('click', this.handleForClick_.bind(this));\n forEl.addEventListener('keydown', this.handleForKeyboardEvent_.bind(this));\n }\n }\n var items = this.element_.querySelectorAll('.' + this.CssClasses_.ITEM);\n this.boundItemKeydown_ = this.handleItemKeyboardEvent_.bind(this);\n this.boundItemClick_ = this.handleItemClick_.bind(this);\n for (var i = 0; i < items.length; i++) {\n // Add a listener to each menu item.\n items[i].addEventListener('click', this.boundItemClick_);\n // Add a tab index to each menu item.\n items[i].tabIndex = '-1';\n // Add a keyboard listener to each menu item.\n items[i].addEventListener('keydown', this.boundItemKeydown_);\n }\n // Add ripple classes to each item, if the user has enabled ripples.\n if (this.element_.classList.contains(this.CssClasses_.RIPPLE_EFFECT)) {\n this.element_.classList.add(this.CssClasses_.RIPPLE_IGNORE_EVENTS);\n for (i = 0; i < items.length; i++) {\n var item = items[i];\n var rippleContainer = document.createElement('span');\n rippleContainer.classList.add(this.CssClasses_.ITEM_RIPPLE_CONTAINER);\n var ripple = document.createElement('span');\n ripple.classList.add(this.CssClasses_.RIPPLE);\n rippleContainer.appendChild(ripple);\n item.appendChild(rippleContainer);\n item.classList.add(this.CssClasses_.RIPPLE_EFFECT);\n }\n }\n // Copy alignment classes to the container, so the outline can use them.\n if (this.element_.classList.contains(this.CssClasses_.BOTTOM_LEFT)) {\n this.outline_.classList.add(this.CssClasses_.BOTTOM_LEFT);\n }\n if (this.element_.classList.contains(this.CssClasses_.BOTTOM_RIGHT)) {\n this.outline_.classList.add(this.CssClasses_.BOTTOM_RIGHT);\n }\n if (this.element_.classList.contains(this.CssClasses_.TOP_LEFT)) {\n this.outline_.classList.add(this.CssClasses_.TOP_LEFT);\n }\n if (this.element_.classList.contains(this.CssClasses_.TOP_RIGHT)) {\n this.outline_.classList.add(this.CssClasses_.TOP_RIGHT);\n }\n if (this.element_.classList.contains(this.CssClasses_.UNALIGNED)) {\n this.outline_.classList.add(this.CssClasses_.UNALIGNED);\n }\n container.classList.add(this.CssClasses_.IS_UPGRADED);\n }\n};\n/**\n * Handles a click on the \"for\" element, by positioning the menu and then\n * toggling it.\n *\n * @param {Event} evt The event that fired.\n * @private\n */\nMaterialMenu.prototype.handleForClick_ = function (evt) {\n if (this.element_ && this.forElement_) {\n var rect = this.forElement_.getBoundingClientRect();\n var forRect = this.forElement_.parentElement.getBoundingClientRect();\n if (this.element_.classList.contains(this.CssClasses_.UNALIGNED)) {\n } else if (this.element_.classList.contains(this.CssClasses_.BOTTOM_RIGHT)) {\n // Position below the \"for\" element, aligned to its right.\n this.container_.style.right = forRect.right - rect.right + 'px';\n this.container_.style.top = this.forElement_.offsetTop + this.forElement_.offsetHeight + 'px';\n } else if (this.element_.classList.contains(this.CssClasses_.TOP_LEFT)) {\n // Position above the \"for\" element, aligned to its left.\n this.container_.style.left = this.forElement_.offsetLeft + 'px';\n this.container_.style.bottom = forRect.bottom - rect.top + 'px';\n } else if (this.element_.classList.contains(this.CssClasses_.TOP_RIGHT)) {\n // Position above the \"for\" element, aligned to its right.\n this.container_.style.right = forRect.right - rect.right + 'px';\n this.container_.style.bottom = forRect.bottom - rect.top + 'px';\n } else {\n // Default: position below the \"for\" element, aligned to its left.\n this.container_.style.left = this.forElement_.offsetLeft + 'px';\n this.container_.style.top = this.forElement_.offsetTop + this.forElement_.offsetHeight + 'px';\n }\n }\n this.toggle(evt);\n};\n/**\n * Handles a keyboard event on the \"for\" element.\n *\n * @param {Event} evt The event that fired.\n * @private\n */\nMaterialMenu.prototype.handleForKeyboardEvent_ = function (evt) {\n if (this.element_ && this.container_ && this.forElement_) {\n var items = this.element_.querySelectorAll('.' + this.CssClasses_.ITEM + ':not([disabled])');\n if (items && items.length > 0 && this.container_.classList.contains(this.CssClasses_.IS_VISIBLE)) {\n if (evt.keyCode === this.Keycodes_.UP_ARROW) {\n evt.preventDefault();\n items[items.length - 1].focus();\n } else if (evt.keyCode === this.Keycodes_.DOWN_ARROW) {\n evt.preventDefault();\n items[0].focus();\n }\n }\n }\n};\n/**\n * Handles a keyboard event on an item.\n *\n * @param {Event} evt The event that fired.\n * @private\n */\nMaterialMenu.prototype.handleItemKeyboardEvent_ = function (evt) {\n if (this.element_ && this.container_) {\n var items = this.element_.querySelectorAll('.' + this.CssClasses_.ITEM + ':not([disabled])');\n if (items && items.length > 0 && this.container_.classList.contains(this.CssClasses_.IS_VISIBLE)) {\n var currentIndex = Array.prototype.slice.call(items).indexOf(evt.target);\n if (evt.keyCode === this.Keycodes_.UP_ARROW) {\n evt.preventDefault();\n if (currentIndex > 0) {\n items[currentIndex - 1].focus();\n } else {\n items[items.length - 1].focus();\n }\n } else if (evt.keyCode === this.Keycodes_.DOWN_ARROW) {\n evt.preventDefault();\n if (items.length > currentIndex + 1) {\n items[currentIndex + 1].focus();\n } else {\n items[0].focus();\n }\n } else if (evt.keyCode === this.Keycodes_.SPACE || evt.keyCode === this.Keycodes_.ENTER) {\n evt.preventDefault();\n // Send mousedown and mouseup to trigger ripple.\n var e = new MouseEvent('mousedown');\n evt.target.dispatchEvent(e);\n e = new MouseEvent('mouseup');\n evt.target.dispatchEvent(e);\n // Send click.\n evt.target.click();\n } else if (evt.keyCode === this.Keycodes_.ESCAPE) {\n evt.preventDefault();\n this.hide();\n }\n }\n }\n};\n/**\n * Handles a click event on an item.\n *\n * @param {Event} evt The event that fired.\n * @private\n */\nMaterialMenu.prototype.handleItemClick_ = function (evt) {\n if (evt.target.hasAttribute('disabled')) {\n evt.stopPropagation();\n } else {\n // Wait some time before closing menu, so the user can see the ripple.\n this.closing_ = true;\n window.setTimeout(function (evt) {\n this.hide();\n this.closing_ = false;\n }.bind(this), this.Constant_.CLOSE_TIMEOUT);\n }\n};\n/**\n * Calculates the initial clip (for opening the menu) or final clip (for closing\n * it), and applies it. This allows us to animate from or to the correct point,\n * that is, the point it's aligned to in the \"for\" element.\n *\n * @param {number} height Height of the clip rectangle\n * @param {number} width Width of the clip rectangle\n * @private\n */\nMaterialMenu.prototype.applyClip_ = function (height, width) {\n if (this.element_.classList.contains(this.CssClasses_.UNALIGNED)) {\n // Do not clip.\n this.element_.style.clip = '';\n } else if (this.element_.classList.contains(this.CssClasses_.BOTTOM_RIGHT)) {\n // Clip to the top right corner of the menu.\n this.element_.style.clip = 'rect(0 ' + width + 'px ' + '0 ' + width + 'px)';\n } else if (this.element_.classList.contains(this.CssClasses_.TOP_LEFT)) {\n // Clip to the bottom left corner of the menu.\n this.element_.style.clip = 'rect(' + height + 'px 0 ' + height + 'px 0)';\n } else if (this.element_.classList.contains(this.CssClasses_.TOP_RIGHT)) {\n // Clip to the bottom right corner of the menu.\n this.element_.style.clip = 'rect(' + height + 'px ' + width + 'px ' + height + 'px ' + width + 'px)';\n } else {\n // Default: do not clip (same as clipping to the top left corner).\n this.element_.style.clip = '';\n }\n};\n/**\n * Cleanup function to remove animation listeners.\n *\n * @param {Event} evt\n * @private\n */\nMaterialMenu.prototype.removeAnimationEndListener_ = function (evt) {\n evt.target.classList.remove(MaterialMenu.prototype.CssClasses_.IS_ANIMATING);\n};\n/**\n * Adds an event listener to clean up after the animation ends.\n *\n * @private\n */\nMaterialMenu.prototype.addAnimationEndListener_ = function () {\n this.element_.addEventListener('transitionend', this.removeAnimationEndListener_);\n this.element_.addEventListener('webkitTransitionEnd', this.removeAnimationEndListener_);\n};\n/**\n * Displays the menu.\n *\n * @public\n */\nMaterialMenu.prototype.show = function (evt) {\n if (this.element_ && this.container_ && this.outline_) {\n // Measure the inner element.\n var height = this.element_.getBoundingClientRect().height;\n var width = this.element_.getBoundingClientRect().width;\n // Apply the inner element's size to the container and outline.\n this.container_.style.width = width + 'px';\n this.container_.style.height = height + 'px';\n this.outline_.style.width = width + 'px';\n this.outline_.style.height = height + 'px';\n var transitionDuration = this.Constant_.TRANSITION_DURATION_SECONDS * this.Constant_.TRANSITION_DURATION_FRACTION;\n // Calculate transition delays for individual menu items, so that they fade\n // in one at a time.\n var items = this.element_.querySelectorAll('.' + this.CssClasses_.ITEM);\n for (var i = 0; i < items.length; i++) {\n var itemDelay = null;\n if (this.element_.classList.contains(this.CssClasses_.TOP_LEFT) || this.element_.classList.contains(this.CssClasses_.TOP_RIGHT)) {\n itemDelay = (height - items[i].offsetTop - items[i].offsetHeight) / height * transitionDuration + 's';\n } else {\n itemDelay = items[i].offsetTop / height * transitionDuration + 's';\n }\n items[i].style.transitionDelay = itemDelay;\n }\n // Apply the initial clip to the text before we start animating.\n this.applyClip_(height, width);\n // Wait for the next frame, turn on animation, and apply the final clip.\n // Also make it visible. This triggers the transitions.\n window.requestAnimationFrame(function () {\n this.element_.classList.add(this.CssClasses_.IS_ANIMATING);\n this.element_.style.clip = 'rect(0 ' + width + 'px ' + height + 'px 0)';\n this.container_.classList.add(this.CssClasses_.IS_VISIBLE);\n }.bind(this));\n // Clean up after the animation is complete.\n this.addAnimationEndListener_();\n // Add a click listener to the document, to close the menu.\n var callback = function (e) {\n // Check to see if the document is processing the same event that\n // displayed the menu in the first place. If so, do nothing.\n // Also check to see if the menu is in the process of closing itself, and\n // do nothing in that case.\n // Also check if the clicked element is a menu item\n // if so, do nothing.\n if (e !== evt && !this.closing_ && e.target.parentNode !== this.element_) {\n document.removeEventListener('click', callback);\n this.hide();\n }\n }.bind(this);\n document.addEventListener('click', callback);\n }\n};\nMaterialMenu.prototype['show'] = MaterialMenu.prototype.show;\n/**\n * Hides the menu.\n *\n * @public\n */\nMaterialMenu.prototype.hide = function () {\n if (this.element_ && this.container_ && this.outline_) {\n var items = this.element_.querySelectorAll('.' + this.CssClasses_.ITEM);\n // Remove all transition delays; menu items fade out concurrently.\n for (var i = 0; i < items.length; i++) {\n items[i].style.removeProperty('transition-delay');\n }\n // Measure the inner element.\n var rect = this.element_.getBoundingClientRect();\n var height = rect.height;\n var width = rect.width;\n // Turn on animation, and apply the final clip. Also make invisible.\n // This triggers the transitions.\n this.element_.classList.add(this.CssClasses_.IS_ANIMATING);\n this.applyClip_(height, width);\n this.container_.classList.remove(this.CssClasses_.IS_VISIBLE);\n // Clean up after the animation is complete.\n this.addAnimationEndListener_();\n }\n};\nMaterialMenu.prototype['hide'] = MaterialMenu.prototype.hide;\n/**\n * Displays or hides the menu, depending on current state.\n *\n * @public\n */\nMaterialMenu.prototype.toggle = function (evt) {\n if (this.container_.classList.contains(this.CssClasses_.IS_VISIBLE)) {\n this.hide();\n } else {\n this.show(evt);\n }\n};\nMaterialMenu.prototype['toggle'] = MaterialMenu.prototype.toggle;\n// The component registers itself. It can assume componentHandler is available\n// in the global scope.\ncomponentHandler.register({\n constructor: MaterialMenu,\n classAsString: 'MaterialMenu',\n cssClass: 'mdl-js-menu',\n widget: true\n});\n/**\n * @license\n * Copyright 2015 Google Inc. All Rights Reserved.\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\n/**\n * Class constructor for Progress MDL component.\n * Implements MDL component design pattern defined at:\n * https://github.com/jasonmayes/mdl-component-design-pattern\n *\n * @constructor\n * @param {HTMLElement} element The element that will be upgraded.\n */\nvar MaterialProgress = function MaterialProgress(element) {\n this.element_ = element;\n // Initialize instance.\n this.init();\n};\nwindow['MaterialProgress'] = MaterialProgress;\n/**\n * Store constants in one place so they can be updated easily.\n *\n * @enum {string | number}\n * @private\n */\nMaterialProgress.prototype.Constant_ = {};\n/**\n * Store strings for class names defined by this component that are used in\n * JavaScript. This allows us to simply change it in one place should we\n * decide to modify at a later date.\n *\n * @enum {string}\n * @private\n */\nMaterialProgress.prototype.CssClasses_ = { INDETERMINATE_CLASS: 'mdl-progress__indeterminate' };\n/**\n * Set the current progress of the progressbar.\n *\n * @param {number} p Percentage of the progress (0-100)\n * @public\n */\nMaterialProgress.prototype.setProgress = function (p) {\n if (this.element_.classList.contains(this.CssClasses_.INDETERMINATE_CLASS)) {\n return;\n }\n this.progressbar_.style.width = p + '%';\n};\nMaterialProgress.prototype['setProgress'] = MaterialProgress.prototype.setProgress;\n/**\n * Set the current progress of the buffer.\n *\n * @param {number} p Percentage of the buffer (0-100)\n * @public\n */\nMaterialProgress.prototype.setBuffer = function (p) {\n this.bufferbar_.style.width = p + '%';\n this.auxbar_.style.width = 100 - p + '%';\n};\nMaterialProgress.prototype['setBuffer'] = MaterialProgress.prototype.setBuffer;\n/**\n * Initialize element.\n */\nMaterialProgress.prototype.init = function () {\n if (this.element_) {\n var el = document.createElement('div');\n el.className = 'progressbar bar bar1';\n this.element_.appendChild(el);\n this.progressbar_ = el;\n el = document.createElement('div');\n el.className = 'bufferbar bar bar2';\n this.element_.appendChild(el);\n this.bufferbar_ = el;\n el = document.createElement('div');\n el.className = 'auxbar bar bar3';\n this.element_.appendChild(el);\n this.auxbar_ = el;\n this.progressbar_.style.width = '0%';\n this.bufferbar_.style.width = '100%';\n this.auxbar_.style.width = '0%';\n this.element_.classList.add('is-upgraded');\n }\n};\n// The component registers itself. It can assume componentHandler is available\n// in the global scope.\ncomponentHandler.register({\n constructor: MaterialProgress,\n classAsString: 'MaterialProgress',\n cssClass: 'mdl-js-progress',\n widget: true\n});\n/**\n * @license\n * Copyright 2015 Google Inc. All Rights Reserved.\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\n/**\n * Class constructor for Radio MDL component.\n * Implements MDL component design pattern defined at:\n * https://github.com/jasonmayes/mdl-component-design-pattern\n *\n * @constructor\n * @param {HTMLElement} element The element that will be upgraded.\n */\nvar MaterialRadio = function MaterialRadio(element) {\n this.element_ = element;\n // Initialize instance.\n this.init();\n};\nwindow['MaterialRadio'] = MaterialRadio;\n/**\n * Store constants in one place so they can be updated easily.\n *\n * @enum {string | number}\n * @private\n */\nMaterialRadio.prototype.Constant_ = { TINY_TIMEOUT: 0.001 };\n/**\n * Store strings for class names defined by this component that are used in\n * JavaScript. This allows us to simply change it in one place should we\n * decide to modify at a later date.\n *\n * @enum {string}\n * @private\n */\nMaterialRadio.prototype.CssClasses_ = {\n IS_FOCUSED: 'is-focused',\n IS_DISABLED: 'is-disabled',\n IS_CHECKED: 'is-checked',\n IS_UPGRADED: 'is-upgraded',\n JS_RADIO: 'mdl-js-radio',\n RADIO_BTN: 'mdl-radio__button',\n RADIO_OUTER_CIRCLE: 'mdl-radio__outer-circle',\n RADIO_INNER_CIRCLE: 'mdl-radio__inner-circle',\n RIPPLE_EFFECT: 'mdl-js-ripple-effect',\n RIPPLE_IGNORE_EVENTS: 'mdl-js-ripple-effect--ignore-events',\n RIPPLE_CONTAINER: 'mdl-radio__ripple-container',\n RIPPLE_CENTER: 'mdl-ripple--center',\n RIPPLE: 'mdl-ripple'\n};\n/**\n * Handle change of state.\n *\n * @param {Event} event The event that fired.\n * @private\n */\nMaterialRadio.prototype.onChange_ = function (event) {\n // Since other radio buttons don't get change events, we need to look for\n // them to update their classes.\n var radios = document.getElementsByClassName(this.CssClasses_.JS_RADIO);\n for (var i = 0; i < radios.length; i++) {\n var button = radios[i].querySelector('.' + this.CssClasses_.RADIO_BTN);\n // Different name == different group, so no point updating those.\n if (button.getAttribute('name') === this.btnElement_.getAttribute('name')) {\n if (typeof radios[i]['MaterialRadio'] !== 'undefined') {\n radios[i]['MaterialRadio'].updateClasses_();\n }\n }\n }\n};\n/**\n * Handle focus.\n *\n * @param {Event} event The event that fired.\n * @private\n */\nMaterialRadio.prototype.onFocus_ = function (event) {\n this.element_.classList.add(this.CssClasses_.IS_FOCUSED);\n};\n/**\n * Handle lost focus.\n *\n * @param {Event} event The event that fired.\n * @private\n */\nMaterialRadio.prototype.onBlur_ = function (event) {\n this.element_.classList.remove(this.CssClasses_.IS_FOCUSED);\n};\n/**\n * Handle mouseup.\n *\n * @param {Event} event The event that fired.\n * @private\n */\nMaterialRadio.prototype.onMouseup_ = function (event) {\n this.blur_();\n};\n/**\n * Update classes.\n *\n * @private\n */\nMaterialRadio.prototype.updateClasses_ = function () {\n this.checkDisabled();\n this.checkToggleState();\n};\n/**\n * Add blur.\n *\n * @private\n */\nMaterialRadio.prototype.blur_ = function () {\n // TODO: figure out why there's a focus event being fired after our blur,\n // so that we can avoid this hack.\n window.setTimeout(function () {\n this.btnElement_.blur();\n }.bind(this), this.Constant_.TINY_TIMEOUT);\n};\n// Public methods.\n/**\n * Check the components disabled state.\n *\n * @public\n */\nMaterialRadio.prototype.checkDisabled = function () {\n if (this.btnElement_.disabled) {\n this.element_.classList.add(this.CssClasses_.IS_DISABLED);\n } else {\n this.element_.classList.remove(this.CssClasses_.IS_DISABLED);\n }\n};\nMaterialRadio.prototype['checkDisabled'] = MaterialRadio.prototype.checkDisabled;\n/**\n * Check the components toggled state.\n *\n * @public\n */\nMaterialRadio.prototype.checkToggleState = function () {\n if (this.btnElement_.checked) {\n this.element_.classList.add(this.CssClasses_.IS_CHECKED);\n } else {\n this.element_.classList.remove(this.CssClasses_.IS_CHECKED);\n }\n};\nMaterialRadio.prototype['checkToggleState'] = MaterialRadio.prototype.checkToggleState;\n/**\n * Disable radio.\n *\n * @public\n */\nMaterialRadio.prototype.disable = function () {\n this.btnElement_.disabled = true;\n this.updateClasses_();\n};\nMaterialRadio.prototype['disable'] = MaterialRadio.prototype.disable;\n/**\n * Enable radio.\n *\n * @public\n */\nMaterialRadio.prototype.enable = function () {\n this.btnElement_.disabled = false;\n this.updateClasses_();\n};\nMaterialRadio.prototype['enable'] = MaterialRadio.prototype.enable;\n/**\n * Check radio.\n *\n * @public\n */\nMaterialRadio.prototype.check = function () {\n this.btnElement_.checked = true;\n this.onChange_(null);\n};\nMaterialRadio.prototype['check'] = MaterialRadio.prototype.check;\n/**\n * Uncheck radio.\n *\n * @public\n */\nMaterialRadio.prototype.uncheck = function () {\n this.btnElement_.checked = false;\n this.onChange_(null);\n};\nMaterialRadio.prototype['uncheck'] = MaterialRadio.prototype.uncheck;\n/**\n * Initialize element.\n */\nMaterialRadio.prototype.init = function () {\n if (this.element_) {\n this.btnElement_ = this.element_.querySelector('.' + this.CssClasses_.RADIO_BTN);\n this.boundChangeHandler_ = this.onChange_.bind(this);\n this.boundFocusHandler_ = this.onChange_.bind(this);\n this.boundBlurHandler_ = this.onBlur_.bind(this);\n this.boundMouseUpHandler_ = this.onMouseup_.bind(this);\n var outerCircle = document.createElement('span');\n outerCircle.classList.add(this.CssClasses_.RADIO_OUTER_CIRCLE);\n var innerCircle = document.createElement('span');\n innerCircle.classList.add(this.CssClasses_.RADIO_INNER_CIRCLE);\n this.element_.appendChild(outerCircle);\n this.element_.appendChild(innerCircle);\n var rippleContainer;\n if (this.element_.classList.contains(this.CssClasses_.RIPPLE_EFFECT)) {\n this.element_.classList.add(this.CssClasses_.RIPPLE_IGNORE_EVENTS);\n rippleContainer = document.createElement('span');\n rippleContainer.classList.add(this.CssClasses_.RIPPLE_CONTAINER);\n rippleContainer.classList.add(this.CssClasses_.RIPPLE_EFFECT);\n rippleContainer.classList.add(this.CssClasses_.RIPPLE_CENTER);\n rippleContainer.addEventListener('mouseup', this.boundMouseUpHandler_);\n var ripple = document.createElement('span');\n ripple.classList.add(this.CssClasses_.RIPPLE);\n rippleContainer.appendChild(ripple);\n this.element_.appendChild(rippleContainer);\n }\n this.btnElement_.addEventListener('change', this.boundChangeHandler_);\n this.btnElement_.addEventListener('focus', this.boundFocusHandler_);\n this.btnElement_.addEventListener('blur', this.boundBlurHandler_);\n this.element_.addEventListener('mouseup', this.boundMouseUpHandler_);\n this.updateClasses_();\n this.element_.classList.add(this.CssClasses_.IS_UPGRADED);\n }\n};\n// The component registers itself. It can assume componentHandler is available\n// in the global scope.\ncomponentHandler.register({\n constructor: MaterialRadio,\n classAsString: 'MaterialRadio',\n cssClass: 'mdl-js-radio',\n widget: true\n});\n/**\n * @license\n * Copyright 2015 Google Inc. All Rights Reserved.\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\n/**\n * Class constructor for Slider MDL component.\n * Implements MDL component design pattern defined at:\n * https://github.com/jasonmayes/mdl-component-design-pattern\n *\n * @constructor\n * @param {HTMLElement} element The element that will be upgraded.\n */\nvar MaterialSlider = function MaterialSlider(element) {\n this.element_ = element;\n // Browser feature detection.\n this.isIE_ = window.navigator.msPointerEnabled;\n // Initialize instance.\n this.init();\n};\nwindow['MaterialSlider'] = MaterialSlider;\n/**\n * Store constants in one place so they can be updated easily.\n *\n * @enum {string | number}\n * @private\n */\nMaterialSlider.prototype.Constant_ = {};\n/**\n * Store strings for class names defined by this component that are used in\n * JavaScript. This allows us to simply change it in one place should we\n * decide to modify at a later date.\n *\n * @enum {string}\n * @private\n */\nMaterialSlider.prototype.CssClasses_ = {\n IE_CONTAINER: 'mdl-slider__ie-container',\n SLIDER_CONTAINER: 'mdl-slider__container',\n BACKGROUND_FLEX: 'mdl-slider__background-flex',\n BACKGROUND_LOWER: 'mdl-slider__background-lower',\n BACKGROUND_UPPER: 'mdl-slider__background-upper',\n IS_LOWEST_VALUE: 'is-lowest-value',\n IS_UPGRADED: 'is-upgraded'\n};\n/**\n * Handle input on element.\n *\n * @param {Event} event The event that fired.\n * @private\n */\nMaterialSlider.prototype.onInput_ = function (event) {\n this.updateValueStyles_();\n};\n/**\n * Handle change on element.\n *\n * @param {Event} event The event that fired.\n * @private\n */\nMaterialSlider.prototype.onChange_ = function (event) {\n this.updateValueStyles_();\n};\n/**\n * Handle mouseup on element.\n *\n * @param {Event} event The event that fired.\n * @private\n */\nMaterialSlider.prototype.onMouseUp_ = function (event) {\n event.target.blur();\n};\n/**\n * Handle mousedown on container element.\n * This handler is purpose is to not require the use to click\n * exactly on the 2px slider element, as FireFox seems to be very\n * strict about this.\n *\n * @param {Event} event The event that fired.\n * @private\n * @suppress {missingProperties}\n */\nMaterialSlider.prototype.onContainerMouseDown_ = function (event) {\n // If this click is not on the parent element (but rather some child)\n // ignore. It may still bubble up.\n if (event.target !== this.element_.parentElement) {\n return;\n }\n // Discard the original event and create a new event that\n // is on the slider element.\n event.preventDefault();\n var newEvent = new MouseEvent('mousedown', {\n target: event.target,\n buttons: event.buttons,\n clientX: event.clientX,\n clientY: this.element_.getBoundingClientRect().y\n });\n this.element_.dispatchEvent(newEvent);\n};\n/**\n * Handle updating of values.\n *\n * @private\n */\nMaterialSlider.prototype.updateValueStyles_ = function () {\n // Calculate and apply percentages to div structure behind slider.\n var fraction = (this.element_.value - this.element_.min) / (this.element_.max - this.element_.min);\n if (fraction === 0) {\n this.element_.classList.add(this.CssClasses_.IS_LOWEST_VALUE);\n } else {\n this.element_.classList.remove(this.CssClasses_.IS_LOWEST_VALUE);\n }\n if (!this.isIE_) {\n this.backgroundLower_.style.flex = fraction;\n this.backgroundLower_.style.webkitFlex = fraction;\n this.backgroundUpper_.style.flex = 1 - fraction;\n this.backgroundUpper_.style.webkitFlex = 1 - fraction;\n }\n};\n// Public methods.\n/**\n * Disable slider.\n *\n * @public\n */\nMaterialSlider.prototype.disable = function () {\n this.element_.disabled = true;\n};\nMaterialSlider.prototype['disable'] = MaterialSlider.prototype.disable;\n/**\n * Enable slider.\n *\n * @public\n */\nMaterialSlider.prototype.enable = function () {\n this.element_.disabled = false;\n};\nMaterialSlider.prototype['enable'] = MaterialSlider.prototype.enable;\n/**\n * Update slider value.\n *\n * @param {number} value The value to which to set the control (optional).\n * @public\n */\nMaterialSlider.prototype.change = function (value) {\n if (typeof value !== 'undefined') {\n this.element_.value = value;\n }\n this.updateValueStyles_();\n};\nMaterialSlider.prototype['change'] = MaterialSlider.prototype.change;\n/**\n * Initialize element.\n */\nMaterialSlider.prototype.init = function () {\n if (this.element_) {\n if (this.isIE_) {\n // Since we need to specify a very large height in IE due to\n // implementation limitations, we add a parent here that trims it down to\n // a reasonable size.\n var containerIE = document.createElement('div');\n containerIE.classList.add(this.CssClasses_.IE_CONTAINER);\n this.element_.parentElement.insertBefore(containerIE, this.element_);\n this.element_.parentElement.removeChild(this.element_);\n containerIE.appendChild(this.element_);\n } else {\n // For non-IE browsers, we need a div structure that sits behind the\n // slider and allows us to style the left and right sides of it with\n // different colors.\n var container = document.createElement('div');\n container.classList.add(this.CssClasses_.SLIDER_CONTAINER);\n this.element_.parentElement.insertBefore(container, this.element_);\n this.element_.parentElement.removeChild(this.element_);\n container.appendChild(this.element_);\n var backgroundFlex = document.createElement('div');\n backgroundFlex.classList.add(this.CssClasses_.BACKGROUND_FLEX);\n container.appendChild(backgroundFlex);\n this.backgroundLower_ = document.createElement('div');\n this.backgroundLower_.classList.add(this.CssClasses_.BACKGROUND_LOWER);\n backgroundFlex.appendChild(this.backgroundLower_);\n this.backgroundUpper_ = document.createElement('div');\n this.backgroundUpper_.classList.add(this.CssClasses_.BACKGROUND_UPPER);\n backgroundFlex.appendChild(this.backgroundUpper_);\n }\n this.boundInputHandler = this.onInput_.bind(this);\n this.boundChangeHandler = this.onChange_.bind(this);\n this.boundMouseUpHandler = this.onMouseUp_.bind(this);\n this.boundContainerMouseDownHandler = this.onContainerMouseDown_.bind(this);\n this.element_.addEventListener('input', this.boundInputHandler);\n this.element_.addEventListener('change', this.boundChangeHandler);\n this.element_.addEventListener('mouseup', this.boundMouseUpHandler);\n this.element_.parentElement.addEventListener('mousedown', this.boundContainerMouseDownHandler);\n this.updateValueStyles_();\n this.element_.classList.add(this.CssClasses_.IS_UPGRADED);\n }\n};\n// The component registers itself. It can assume componentHandler is available\n// in the global scope.\ncomponentHandler.register({\n constructor: MaterialSlider,\n classAsString: 'MaterialSlider',\n cssClass: 'mdl-js-slider',\n widget: true\n});\n/**\n * Copyright 2015 Google Inc. All Rights Reserved.\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\n/**\n * Class constructor for Snackbar MDL component.\n * Implements MDL component design pattern defined at:\n * https://github.com/jasonmayes/mdl-component-design-pattern\n *\n * @constructor\n * @param {HTMLElement} element The element that will be upgraded.\n */\nvar MaterialSnackbar = function MaterialSnackbar(element) {\n this.element_ = element;\n this.textElement_ = this.element_.querySelector('.' + this.cssClasses_.MESSAGE);\n this.actionElement_ = this.element_.querySelector('.' + this.cssClasses_.ACTION);\n if (!this.textElement_) {\n throw new Error('There must be a message element for a snackbar.');\n }\n if (!this.actionElement_) {\n throw new Error('There must be an action element for a snackbar.');\n }\n this.active = false;\n this.actionHandler_ = undefined;\n this.message_ = undefined;\n this.actionText_ = undefined;\n this.queuedNotifications_ = [];\n this.setActionHidden_(true);\n};\nwindow['MaterialSnackbar'] = MaterialSnackbar;\n/**\n * Store constants in one place so they can be updated easily.\n *\n * @enum {string | number}\n * @private\n */\nMaterialSnackbar.prototype.Constant_ = {\n // The duration of the snackbar show/hide animation, in ms.\n ANIMATION_LENGTH: 250\n};\n/**\n * Store strings for class names defined by this component that are used in\n * JavaScript. This allows us to simply change it in one place should we\n * decide to modify at a later date.\n *\n * @enum {string}\n * @private\n */\nMaterialSnackbar.prototype.cssClasses_ = {\n SNACKBAR: 'mdl-snackbar',\n MESSAGE: 'mdl-snackbar__text',\n ACTION: 'mdl-snackbar__action',\n ACTIVE: 'mdl-snackbar--active'\n};\n/**\n * Display the snackbar.\n *\n * @private\n */\nMaterialSnackbar.prototype.displaySnackbar_ = function () {\n this.element_.setAttribute('aria-hidden', 'true');\n if (this.actionHandler_) {\n this.actionElement_.textContent = this.actionText_;\n this.actionElement_.addEventListener('click', this.actionHandler_);\n this.setActionHidden_(false);\n }\n this.textElement_.textContent = this.message_;\n this.element_.classList.add(this.cssClasses_.ACTIVE);\n this.element_.setAttribute('aria-hidden', 'false');\n setTimeout(this.cleanup_.bind(this), this.timeout_);\n};\n/**\n * Show the snackbar.\n *\n * @param {Object} data The data for the notification.\n * @public\n */\nMaterialSnackbar.prototype.showSnackbar = function (data) {\n if (data === undefined) {\n throw new Error('Please provide a data object with at least a message to display.');\n }\n if (data['message'] === undefined) {\n throw new Error('Please provide a message to be displayed.');\n }\n if (data['actionHandler'] && !data['actionText']) {\n throw new Error('Please provide action text with the handler.');\n }\n if (this.active) {\n this.queuedNotifications_.push(data);\n } else {\n this.active = true;\n this.message_ = data['message'];\n if (data['timeout']) {\n this.timeout_ = data['timeout'];\n } else {\n this.timeout_ = 2750;\n }\n if (data['actionHandler']) {\n this.actionHandler_ = data['actionHandler'];\n }\n if (data['actionText']) {\n this.actionText_ = data['actionText'];\n }\n this.displaySnackbar_();\n }\n};\nMaterialSnackbar.prototype['showSnackbar'] = MaterialSnackbar.prototype.showSnackbar;\n/**\n * Check if the queue has items within it.\n * If it does, display the next entry.\n *\n * @private\n */\nMaterialSnackbar.prototype.checkQueue_ = function () {\n if (this.queuedNotifications_.length > 0) {\n this.showSnackbar(this.queuedNotifications_.shift());\n }\n};\n/**\n * Cleanup the snackbar event listeners and accessiblity attributes.\n *\n * @private\n */\nMaterialSnackbar.prototype.cleanup_ = function () {\n this.element_.classList.remove(this.cssClasses_.ACTIVE);\n setTimeout(function () {\n this.element_.setAttribute('aria-hidden', 'true');\n this.textElement_.textContent = '';\n if (!Boolean(this.actionElement_.getAttribute('aria-hidden'))) {\n this.setActionHidden_(true);\n this.actionElement_.textContent = '';\n this.actionElement_.removeEventListener('click', this.actionHandler_);\n }\n this.actionHandler_ = undefined;\n this.message_ = undefined;\n this.actionText_ = undefined;\n this.active = false;\n this.checkQueue_();\n }.bind(this), this.Constant_.ANIMATION_LENGTH);\n};\n/**\n * Set the action handler hidden state.\n *\n * @param {boolean} value\n * @private\n */\nMaterialSnackbar.prototype.setActionHidden_ = function (value) {\n if (value) {\n this.actionElement_.setAttribute('aria-hidden', 'true');\n } else {\n this.actionElement_.removeAttribute('aria-hidden');\n }\n};\n// The component registers itself. It can assume componentHandler is available\n// in the global scope.\ncomponentHandler.register({\n constructor: MaterialSnackbar,\n classAsString: 'MaterialSnackbar',\n cssClass: 'mdl-js-snackbar',\n widget: true\n});\n/**\n * @license\n * Copyright 2015 Google Inc. All Rights Reserved.\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\n/**\n * Class constructor for Spinner MDL component.\n * Implements MDL component design pattern defined at:\n * https://github.com/jasonmayes/mdl-component-design-pattern\n *\n * @param {HTMLElement} element The element that will be upgraded.\n * @constructor\n */\nvar MaterialSpinner = function MaterialSpinner(element) {\n this.element_ = element;\n // Initialize instance.\n this.init();\n};\nwindow['MaterialSpinner'] = MaterialSpinner;\n/**\n * Store constants in one place so they can be updated easily.\n *\n * @enum {string | number}\n * @private\n */\nMaterialSpinner.prototype.Constant_ = { MDL_SPINNER_LAYER_COUNT: 4 };\n/**\n * Store strings for class names defined by this component that are used in\n * JavaScript. This allows us to simply change it in one place should we\n * decide to modify at a later date.\n *\n * @enum {string}\n * @private\n */\nMaterialSpinner.prototype.CssClasses_ = {\n MDL_SPINNER_LAYER: 'mdl-spinner__layer',\n MDL_SPINNER_CIRCLE_CLIPPER: 'mdl-spinner__circle-clipper',\n MDL_SPINNER_CIRCLE: 'mdl-spinner__circle',\n MDL_SPINNER_GAP_PATCH: 'mdl-spinner__gap-patch',\n MDL_SPINNER_LEFT: 'mdl-spinner__left',\n MDL_SPINNER_RIGHT: 'mdl-spinner__right'\n};\n/**\n * Auxiliary method to create a spinner layer.\n *\n * @param {number} index Index of the layer to be created.\n * @public\n */\nMaterialSpinner.prototype.createLayer = function (index) {\n var layer = document.createElement('div');\n layer.classList.add(this.CssClasses_.MDL_SPINNER_LAYER);\n layer.classList.add(this.CssClasses_.MDL_SPINNER_LAYER + '-' + index);\n var leftClipper = document.createElement('div');\n leftClipper.classList.add(this.CssClasses_.MDL_SPINNER_CIRCLE_CLIPPER);\n leftClipper.classList.add(this.CssClasses_.MDL_SPINNER_LEFT);\n var gapPatch = document.createElement('div');\n gapPatch.classList.add(this.CssClasses_.MDL_SPINNER_GAP_PATCH);\n var rightClipper = document.createElement('div');\n rightClipper.classList.add(this.CssClasses_.MDL_SPINNER_CIRCLE_CLIPPER);\n rightClipper.classList.add(this.CssClasses_.MDL_SPINNER_RIGHT);\n var circleOwners = [\n leftClipper,\n gapPatch,\n rightClipper\n ];\n for (var i = 0; i < circleOwners.length; i++) {\n var circle = document.createElement('div');\n circle.classList.add(this.CssClasses_.MDL_SPINNER_CIRCLE);\n circleOwners[i].appendChild(circle);\n }\n layer.appendChild(leftClipper);\n layer.appendChild(gapPatch);\n layer.appendChild(rightClipper);\n this.element_.appendChild(layer);\n};\nMaterialSpinner.prototype['createLayer'] = MaterialSpinner.prototype.createLayer;\n/**\n * Stops the spinner animation.\n * Public method for users who need to stop the spinner for any reason.\n *\n * @public\n */\nMaterialSpinner.prototype.stop = function () {\n this.element_.classList.remove('is-active');\n};\nMaterialSpinner.prototype['stop'] = MaterialSpinner.prototype.stop;\n/**\n * Starts the spinner animation.\n * Public method for users who need to manually start the spinner for any reason\n * (instead of just adding the 'is-active' class to their markup).\n *\n * @public\n */\nMaterialSpinner.prototype.start = function () {\n this.element_.classList.add('is-active');\n};\nMaterialSpinner.prototype['start'] = MaterialSpinner.prototype.start;\n/**\n * Initialize element.\n */\nMaterialSpinner.prototype.init = function () {\n if (this.element_) {\n for (var i = 1; i <= this.Constant_.MDL_SPINNER_LAYER_COUNT; i++) {\n this.createLayer(i);\n }\n this.element_.classList.add('is-upgraded');\n }\n};\n// The component registers itself. It can assume componentHandler is available\n// in the global scope.\ncomponentHandler.register({\n constructor: MaterialSpinner,\n classAsString: 'MaterialSpinner',\n cssClass: 'mdl-js-spinner',\n widget: true\n});\n/**\n * @license\n * Copyright 2015 Google Inc. All Rights Reserved.\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\n/**\n * Class constructor for Checkbox MDL component.\n * Implements MDL component design pattern defined at:\n * https://github.com/jasonmayes/mdl-component-design-pattern\n *\n * @constructor\n * @param {HTMLElement} element The element that will be upgraded.\n */\nvar MaterialSwitch = function MaterialSwitch(element) {\n this.element_ = element;\n // Initialize instance.\n this.init();\n};\nwindow['MaterialSwitch'] = MaterialSwitch;\n/**\n * Store constants in one place so they can be updated easily.\n *\n * @enum {string | number}\n * @private\n */\nMaterialSwitch.prototype.Constant_ = { TINY_TIMEOUT: 0.001 };\n/**\n * Store strings for class names defined by this component that are used in\n * JavaScript. This allows us to simply change it in one place should we\n * decide to modify at a later date.\n *\n * @enum {string}\n * @private\n */\nMaterialSwitch.prototype.CssClasses_ = {\n INPUT: 'mdl-switch__input',\n TRACK: 'mdl-switch__track',\n THUMB: 'mdl-switch__thumb',\n FOCUS_HELPER: 'mdl-switch__focus-helper',\n RIPPLE_EFFECT: 'mdl-js-ripple-effect',\n RIPPLE_IGNORE_EVENTS: 'mdl-js-ripple-effect--ignore-events',\n RIPPLE_CONTAINER: 'mdl-switch__ripple-container',\n RIPPLE_CENTER: 'mdl-ripple--center',\n RIPPLE: 'mdl-ripple',\n IS_FOCUSED: 'is-focused',\n IS_DISABLED: 'is-disabled',\n IS_CHECKED: 'is-checked'\n};\n/**\n * Handle change of state.\n *\n * @param {Event} event The event that fired.\n * @private\n */\nMaterialSwitch.prototype.onChange_ = function (event) {\n this.updateClasses_();\n};\n/**\n * Handle focus of element.\n *\n * @param {Event} event The event that fired.\n * @private\n */\nMaterialSwitch.prototype.onFocus_ = function (event) {\n this.element_.classList.add(this.CssClasses_.IS_FOCUSED);\n};\n/**\n * Handle lost focus of element.\n *\n * @param {Event} event The event that fired.\n * @private\n */\nMaterialSwitch.prototype.onBlur_ = function (event) {\n this.element_.classList.remove(this.CssClasses_.IS_FOCUSED);\n};\n/**\n * Handle mouseup.\n *\n * @param {Event} event The event that fired.\n * @private\n */\nMaterialSwitch.prototype.onMouseUp_ = function (event) {\n this.blur_();\n};\n/**\n * Handle class updates.\n *\n * @private\n */\nMaterialSwitch.prototype.updateClasses_ = function () {\n this.checkDisabled();\n this.checkToggleState();\n};\n/**\n * Add blur.\n *\n * @private\n */\nMaterialSwitch.prototype.blur_ = function () {\n // TODO: figure out why there's a focus event being fired after our blur,\n // so that we can avoid this hack.\n window.setTimeout(function () {\n this.inputElement_.blur();\n }.bind(this), this.Constant_.TINY_TIMEOUT);\n};\n// Public methods.\n/**\n * Check the components disabled state.\n *\n * @public\n */\nMaterialSwitch.prototype.checkDisabled = function () {\n if (this.inputElement_.disabled) {\n this.element_.classList.add(this.CssClasses_.IS_DISABLED);\n } else {\n this.element_.classList.remove(this.CssClasses_.IS_DISABLED);\n }\n};\nMaterialSwitch.prototype['checkDisabled'] = MaterialSwitch.prototype.checkDisabled;\n/**\n * Check the components toggled state.\n *\n * @public\n */\nMaterialSwitch.prototype.checkToggleState = function () {\n if (this.inputElement_.checked) {\n this.element_.classList.add(this.CssClasses_.IS_CHECKED);\n } else {\n this.element_.classList.remove(this.CssClasses_.IS_CHECKED);\n }\n};\nMaterialSwitch.prototype['checkToggleState'] = MaterialSwitch.prototype.checkToggleState;\n/**\n * Disable switch.\n *\n * @public\n */\nMaterialSwitch.prototype.disable = function () {\n this.inputElement_.disabled = true;\n this.updateClasses_();\n};\nMaterialSwitch.prototype['disable'] = MaterialSwitch.prototype.disable;\n/**\n * Enable switch.\n *\n * @public\n */\nMaterialSwitch.prototype.enable = function () {\n this.inputElement_.disabled = false;\n this.updateClasses_();\n};\nMaterialSwitch.prototype['enable'] = MaterialSwitch.prototype.enable;\n/**\n * Activate switch.\n *\n * @public\n */\nMaterialSwitch.prototype.on = function () {\n this.inputElement_.checked = true;\n this.updateClasses_();\n};\nMaterialSwitch.prototype['on'] = MaterialSwitch.prototype.on;\n/**\n * Deactivate switch.\n *\n * @public\n */\nMaterialSwitch.prototype.off = function () {\n this.inputElement_.checked = false;\n this.updateClasses_();\n};\nMaterialSwitch.prototype['off'] = MaterialSwitch.prototype.off;\n/**\n * Initialize element.\n */\nMaterialSwitch.prototype.init = function () {\n if (this.element_) {\n this.inputElement_ = this.element_.querySelector('.' + this.CssClasses_.INPUT);\n var track = document.createElement('div');\n track.classList.add(this.CssClasses_.TRACK);\n var thumb = document.createElement('div');\n thumb.classList.add(this.CssClasses_.THUMB);\n var focusHelper = document.createElement('span');\n focusHelper.classList.add(this.CssClasses_.FOCUS_HELPER);\n thumb.appendChild(focusHelper);\n this.element_.appendChild(track);\n this.element_.appendChild(thumb);\n this.boundMouseUpHandler = this.onMouseUp_.bind(this);\n if (this.element_.classList.contains(this.CssClasses_.RIPPLE_EFFECT)) {\n this.element_.classList.add(this.CssClasses_.RIPPLE_IGNORE_EVENTS);\n this.rippleContainerElement_ = document.createElement('span');\n this.rippleContainerElement_.classList.add(this.CssClasses_.RIPPLE_CONTAINER);\n this.rippleContainerElement_.classList.add(this.CssClasses_.RIPPLE_EFFECT);\n this.rippleContainerElement_.classList.add(this.CssClasses_.RIPPLE_CENTER);\n this.rippleContainerElement_.addEventListener('mouseup', this.boundMouseUpHandler);\n var ripple = document.createElement('span');\n ripple.classList.add(this.CssClasses_.RIPPLE);\n this.rippleContainerElement_.appendChild(ripple);\n this.element_.appendChild(this.rippleContainerElement_);\n }\n this.boundChangeHandler = this.onChange_.bind(this);\n this.boundFocusHandler = this.onFocus_.bind(this);\n this.boundBlurHandler = this.onBlur_.bind(this);\n this.inputElement_.addEventListener('change', this.boundChangeHandler);\n this.inputElement_.addEventListener('focus', this.boundFocusHandler);\n this.inputElement_.addEventListener('blur', this.boundBlurHandler);\n this.element_.addEventListener('mouseup', this.boundMouseUpHandler);\n this.updateClasses_();\n this.element_.classList.add('is-upgraded');\n }\n};\n// The component registers itself. It can assume componentHandler is available\n// in the global scope.\ncomponentHandler.register({\n constructor: MaterialSwitch,\n classAsString: 'MaterialSwitch',\n cssClass: 'mdl-js-switch',\n widget: true\n});\n/**\n * @license\n * Copyright 2015 Google Inc. All Rights Reserved.\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\n/**\n * Class constructor for Tabs MDL component.\n * Implements MDL component design pattern defined at:\n * https://github.com/jasonmayes/mdl-component-design-pattern\n *\n * @constructor\n * @param {Element} element The element that will be upgraded.\n */\nvar MaterialTabs = function MaterialTabs(element) {\n // Stores the HTML element.\n this.element_ = element;\n // Initialize instance.\n this.init();\n};\nwindow['MaterialTabs'] = MaterialTabs;\n/**\n * Store constants in one place so they can be updated easily.\n *\n * @enum {string}\n * @private\n */\nMaterialTabs.prototype.Constant_ = {};\n/**\n * Store strings for class names defined by this component that are used in\n * JavaScript. This allows us to simply change it in one place should we\n * decide to modify at a later date.\n *\n * @enum {string}\n * @private\n */\nMaterialTabs.prototype.CssClasses_ = {\n TAB_CLASS: 'mdl-tabs__tab',\n PANEL_CLASS: 'mdl-tabs__panel',\n ACTIVE_CLASS: 'is-active',\n UPGRADED_CLASS: 'is-upgraded',\n MDL_JS_RIPPLE_EFFECT: 'mdl-js-ripple-effect',\n MDL_RIPPLE_CONTAINER: 'mdl-tabs__ripple-container',\n MDL_RIPPLE: 'mdl-ripple',\n MDL_JS_RIPPLE_EFFECT_IGNORE_EVENTS: 'mdl-js-ripple-effect--ignore-events'\n};\n/**\n * Handle clicks to a tabs component\n *\n * @private\n */\nMaterialTabs.prototype.initTabs_ = function () {\n if (this.element_.classList.contains(this.CssClasses_.MDL_JS_RIPPLE_EFFECT)) {\n this.element_.classList.add(this.CssClasses_.MDL_JS_RIPPLE_EFFECT_IGNORE_EVENTS);\n }\n // Select element tabs, document panels\n this.tabs_ = this.element_.querySelectorAll('.' + this.CssClasses_.TAB_CLASS);\n this.panels_ = this.element_.querySelectorAll('.' + this.CssClasses_.PANEL_CLASS);\n // Create new tabs for each tab element\n for (var i = 0; i < this.tabs_.length; i++) {\n new MaterialTab(this.tabs_[i], this);\n }\n this.element_.classList.add(this.CssClasses_.UPGRADED_CLASS);\n};\n/**\n * Reset tab state, dropping active classes\n *\n * @private\n */\nMaterialTabs.prototype.resetTabState_ = function () {\n for (var k = 0; k < this.tabs_.length; k++) {\n this.tabs_[k].classList.remove(this.CssClasses_.ACTIVE_CLASS);\n }\n};\n/**\n * Reset panel state, droping active classes\n *\n * @private\n */\nMaterialTabs.prototype.resetPanelState_ = function () {\n for (var j = 0; j < this.panels_.length; j++) {\n this.panels_[j].classList.remove(this.CssClasses_.ACTIVE_CLASS);\n }\n};\n/**\n * Initialize element.\n */\nMaterialTabs.prototype.init = function () {\n if (this.element_) {\n this.initTabs_();\n }\n};\n/**\n * Constructor for an individual tab.\n *\n * @constructor\n * @param {Element} tab The HTML element for the tab.\n * @param {MaterialTabs} ctx The MaterialTabs object that owns the tab.\n */\nfunction MaterialTab(tab, ctx) {\n if (tab) {\n if (ctx.element_.classList.contains(ctx.CssClasses_.MDL_JS_RIPPLE_EFFECT)) {\n var rippleContainer = document.createElement('span');\n rippleContainer.classList.add(ctx.CssClasses_.MDL_RIPPLE_CONTAINER);\n rippleContainer.classList.add(ctx.CssClasses_.MDL_JS_RIPPLE_EFFECT);\n var ripple = document.createElement('span');\n ripple.classList.add(ctx.CssClasses_.MDL_RIPPLE);\n rippleContainer.appendChild(ripple);\n tab.appendChild(rippleContainer);\n }\n tab.addEventListener('click', function (e) {\n if (tab.getAttribute('href').charAt(0) === '#') {\n e.preventDefault();\n var href = tab.href.split('#')[1];\n var panel = ctx.element_.querySelector('#' + href);\n ctx.resetTabState_();\n ctx.resetPanelState_();\n tab.classList.add(ctx.CssClasses_.ACTIVE_CLASS);\n panel.classList.add(ctx.CssClasses_.ACTIVE_CLASS);\n }\n });\n }\n}\n// The component registers itself. It can assume componentHandler is available\n// in the global scope.\ncomponentHandler.register({\n constructor: MaterialTabs,\n classAsString: 'MaterialTabs',\n cssClass: 'mdl-js-tabs'\n});\n/**\n * @license\n * Copyright 2015 Google Inc. All Rights Reserved.\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\n/**\n * Class constructor for Textfield MDL component.\n * Implements MDL component design pattern defined at:\n * https://github.com/jasonmayes/mdl-component-design-pattern\n *\n * @constructor\n * @param {HTMLElement} element The element that will be upgraded.\n */\nvar MaterialTextfield = function MaterialTextfield(element) {\n this.element_ = element;\n this.maxRows = this.Constant_.NO_MAX_ROWS;\n // Initialize instance.\n this.init();\n};\nwindow['MaterialTextfield'] = MaterialTextfield;\n/**\n * Store constants in one place so they can be updated easily.\n *\n * @enum {string | number}\n * @private\n */\nMaterialTextfield.prototype.Constant_ = {\n NO_MAX_ROWS: -1,\n MAX_ROWS_ATTRIBUTE: 'maxrows'\n};\n/**\n * Store strings for class names defined by this component that are used in\n * JavaScript. This allows us to simply change it in one place should we\n * decide to modify at a later date.\n *\n * @enum {string}\n * @private\n */\nMaterialTextfield.prototype.CssClasses_ = {\n LABEL: 'mdl-textfield__label',\n INPUT: 'mdl-textfield__input',\n IS_DIRTY: 'is-dirty',\n IS_FOCUSED: 'is-focused',\n IS_DISABLED: 'is-disabled',\n IS_INVALID: 'is-invalid',\n IS_UPGRADED: 'is-upgraded',\n HAS_PLACEHOLDER: 'has-placeholder'\n};\n/**\n * Handle input being entered.\n *\n * @param {Event} event The event that fired.\n * @private\n */\nMaterialTextfield.prototype.onKeyDown_ = function (event) {\n var currentRowCount = event.target.value.split('\\n').length;\n if (event.keyCode === 13) {\n if (currentRowCount >= this.maxRows) {\n event.preventDefault();\n }\n }\n};\n/**\n * Handle focus.\n *\n * @param {Event} event The event that fired.\n * @private\n */\nMaterialTextfield.prototype.onFocus_ = function (event) {\n this.element_.classList.add(this.CssClasses_.IS_FOCUSED);\n};\n/**\n * Handle lost focus.\n *\n * @param {Event} event The event that fired.\n * @private\n */\nMaterialTextfield.prototype.onBlur_ = function (event) {\n this.element_.classList.remove(this.CssClasses_.IS_FOCUSED);\n};\n/**\n * Handle reset event from out side.\n *\n * @param {Event} event The event that fired.\n * @private\n */\nMaterialTextfield.prototype.onReset_ = function (event) {\n this.updateClasses_();\n};\n/**\n * Handle class updates.\n *\n * @private\n */\nMaterialTextfield.prototype.updateClasses_ = function () {\n this.checkDisabled();\n this.checkValidity();\n this.checkDirty();\n this.checkFocus();\n};\n// Public methods.\n/**\n * Check the disabled state and update field accordingly.\n *\n * @public\n */\nMaterialTextfield.prototype.checkDisabled = function () {\n if (this.input_.disabled) {\n this.element_.classList.add(this.CssClasses_.IS_DISABLED);\n } else {\n this.element_.classList.remove(this.CssClasses_.IS_DISABLED);\n }\n};\nMaterialTextfield.prototype['checkDisabled'] = MaterialTextfield.prototype.checkDisabled;\n/**\n * Check the focus state and update field accordingly.\n *\n * @public\n */\nMaterialTextfield.prototype.checkFocus = function () {\n if (Boolean(this.element_.querySelector(':focus'))) {\n this.element_.classList.add(this.CssClasses_.IS_FOCUSED);\n } else {\n this.element_.classList.remove(this.CssClasses_.IS_FOCUSED);\n }\n};\nMaterialTextfield.prototype['checkFocus'] = MaterialTextfield.prototype.checkFocus;\n/**\n * Check the validity state and update field accordingly.\n *\n * @public\n */\nMaterialTextfield.prototype.checkValidity = function () {\n if (this.input_.validity) {\n if (this.input_.validity.valid) {\n this.element_.classList.remove(this.CssClasses_.IS_INVALID);\n } else {\n this.element_.classList.add(this.CssClasses_.IS_INVALID);\n }\n }\n};\nMaterialTextfield.prototype['checkValidity'] = MaterialTextfield.prototype.checkValidity;\n/**\n * Check the dirty state and update field accordingly.\n *\n * @public\n */\nMaterialTextfield.prototype.checkDirty = function () {\n if (this.input_.value && this.input_.value.length > 0) {\n this.element_.classList.add(this.CssClasses_.IS_DIRTY);\n } else {\n this.element_.classList.remove(this.CssClasses_.IS_DIRTY);\n }\n};\nMaterialTextfield.prototype['checkDirty'] = MaterialTextfield.prototype.checkDirty;\n/**\n * Disable text field.\n *\n * @public\n */\nMaterialTextfield.prototype.disable = function () {\n this.input_.disabled = true;\n this.updateClasses_();\n};\nMaterialTextfield.prototype['disable'] = MaterialTextfield.prototype.disable;\n/**\n * Enable text field.\n *\n * @public\n */\nMaterialTextfield.prototype.enable = function () {\n this.input_.disabled = false;\n this.updateClasses_();\n};\nMaterialTextfield.prototype['enable'] = MaterialTextfield.prototype.enable;\n/**\n * Update text field value.\n *\n * @param {string} value The value to which to set the control (optional).\n * @public\n */\nMaterialTextfield.prototype.change = function (value) {\n this.input_.value = value || '';\n this.updateClasses_();\n};\nMaterialTextfield.prototype['change'] = MaterialTextfield.prototype.change;\n/**\n * Initialize element.\n */\nMaterialTextfield.prototype.init = function () {\n if (this.element_) {\n this.label_ = this.element_.querySelector('.' + this.CssClasses_.LABEL);\n this.input_ = this.element_.querySelector('.' + this.CssClasses_.INPUT);\n if (this.input_) {\n if (this.input_.hasAttribute(this.Constant_.MAX_ROWS_ATTRIBUTE)) {\n this.maxRows = parseInt(this.input_.getAttribute(this.Constant_.MAX_ROWS_ATTRIBUTE), 10);\n if (isNaN(this.maxRows)) {\n this.maxRows = this.Constant_.NO_MAX_ROWS;\n }\n }\n if (this.input_.hasAttribute('placeholder')) {\n this.element_.classList.add(this.CssClasses_.HAS_PLACEHOLDER);\n }\n this.boundUpdateClassesHandler = this.updateClasses_.bind(this);\n this.boundFocusHandler = this.onFocus_.bind(this);\n this.boundBlurHandler = this.onBlur_.bind(this);\n this.boundResetHandler = this.onReset_.bind(this);\n this.input_.addEventListener('input', this.boundUpdateClassesHandler);\n this.input_.addEventListener('focus', this.boundFocusHandler);\n this.input_.addEventListener('blur', this.boundBlurHandler);\n this.input_.addEventListener('reset', this.boundResetHandler);\n if (this.maxRows !== this.Constant_.NO_MAX_ROWS) {\n // TODO: This should handle pasting multi line text.\n // Currently doesn't.\n this.boundKeyDownHandler = this.onKeyDown_.bind(this);\n this.input_.addEventListener('keydown', this.boundKeyDownHandler);\n }\n var invalid = this.element_.classList.contains(this.CssClasses_.IS_INVALID);\n this.updateClasses_();\n this.element_.classList.add(this.CssClasses_.IS_UPGRADED);\n if (invalid) {\n this.element_.classList.add(this.CssClasses_.IS_INVALID);\n }\n if (this.input_.hasAttribute('autofocus')) {\n this.element_.focus();\n this.checkFocus();\n }\n }\n }\n};\n// The component registers itself. It can assume componentHandler is available\n// in the global scope.\ncomponentHandler.register({\n constructor: MaterialTextfield,\n classAsString: 'MaterialTextfield',\n cssClass: 'mdl-js-textfield',\n widget: true\n});\n/**\n * @license\n * Copyright 2015 Google Inc. All Rights Reserved.\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\n/**\n * Class constructor for Tooltip MDL component.\n * Implements MDL component design pattern defined at:\n * https://github.com/jasonmayes/mdl-component-design-pattern\n *\n * @constructor\n * @param {HTMLElement} element The element that will be upgraded.\n */\nvar MaterialTooltip = function MaterialTooltip(element) {\n this.element_ = element;\n // Initialize instance.\n this.init();\n};\nwindow['MaterialTooltip'] = MaterialTooltip;\n/**\n * Store constants in one place so they can be updated easily.\n *\n * @enum {string | number}\n * @private\n */\nMaterialTooltip.prototype.Constant_ = {};\n/**\n * Store strings for class names defined by this component that are used in\n * JavaScript. This allows us to simply change it in one place should we\n * decide to modify at a later date.\n *\n * @enum {string}\n * @private\n */\nMaterialTooltip.prototype.CssClasses_ = {\n IS_ACTIVE: 'is-active',\n BOTTOM: 'mdl-tooltip--bottom',\n LEFT: 'mdl-tooltip--left',\n RIGHT: 'mdl-tooltip--right',\n TOP: 'mdl-tooltip--top'\n};\n/**\n * Handle mouseenter for tooltip.\n *\n * @param {Event} event The event that fired.\n * @private\n */\nMaterialTooltip.prototype.handleMouseEnter_ = function (event) {\n var props = event.target.getBoundingClientRect();\n var left = props.left + props.width / 2;\n var top = props.top + props.height / 2;\n var marginLeft = -1 * (this.element_.offsetWidth / 2);\n var marginTop = -1 * (this.element_.offsetHeight / 2);\n if (this.element_.classList.contains(this.CssClasses_.LEFT) || this.element_.classList.contains(this.CssClasses_.RIGHT)) {\n left = props.width / 2;\n if (top + marginTop < 0) {\n this.element_.style.top = '0';\n this.element_.style.marginTop = '0';\n } else {\n this.element_.style.top = top + 'px';\n this.element_.style.marginTop = marginTop + 'px';\n }\n } else {\n if (left + marginLeft < 0) {\n this.element_.style.left = '0';\n this.element_.style.marginLeft = '0';\n } else {\n this.element_.style.left = left + 'px';\n this.element_.style.marginLeft = marginLeft + 'px';\n }\n }\n if (this.element_.classList.contains(this.CssClasses_.TOP)) {\n this.element_.style.top = props.top - this.element_.offsetHeight - 10 + 'px';\n } else if (this.element_.classList.contains(this.CssClasses_.RIGHT)) {\n this.element_.style.left = props.left + props.width + 10 + 'px';\n } else if (this.element_.classList.contains(this.CssClasses_.LEFT)) {\n this.element_.style.left = props.left - this.element_.offsetWidth - 10 + 'px';\n } else {\n this.element_.style.top = props.top + props.height + 10 + 'px';\n }\n this.element_.classList.add(this.CssClasses_.IS_ACTIVE);\n};\n/**\n * Hide tooltip on mouseleave or scroll\n *\n * @private\n */\nMaterialTooltip.prototype.hideTooltip_ = function () {\n this.element_.classList.remove(this.CssClasses_.IS_ACTIVE);\n};\n/**\n * Initialize element.\n */\nMaterialTooltip.prototype.init = function () {\n if (this.element_) {\n var forElId = this.element_.getAttribute('for') || this.element_.getAttribute('data-mdl-for');\n if (forElId) {\n this.forElement_ = document.getElementById(forElId);\n }\n if (this.forElement_) {\n // It's left here because it prevents accidental text selection on Android\n if (!this.forElement_.hasAttribute('tabindex')) {\n this.forElement_.setAttribute('tabindex', '0');\n }\n this.boundMouseEnterHandler = this.handleMouseEnter_.bind(this);\n this.boundMouseLeaveAndScrollHandler = this.hideTooltip_.bind(this);\n this.forElement_.addEventListener('mouseenter', this.boundMouseEnterHandler, false);\n this.forElement_.addEventListener('touchend', this.boundMouseEnterHandler, false);\n this.forElement_.addEventListener('mouseleave', this.boundMouseLeaveAndScrollHandler, false);\n window.addEventListener('scroll', this.boundMouseLeaveAndScrollHandler, true);\n window.addEventListener('touchstart', this.boundMouseLeaveAndScrollHandler);\n }\n }\n};\n// The component registers itself. It can assume componentHandler is available\n// in the global scope.\ncomponentHandler.register({\n constructor: MaterialTooltip,\n classAsString: 'MaterialTooltip',\n cssClass: 'mdl-tooltip'\n});\n/**\n * @license\n * Copyright 2015 Google Inc. All Rights Reserved.\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\n/**\n * Class constructor for Layout MDL component.\n * Implements MDL component design pattern defined at:\n * https://github.com/jasonmayes/mdl-component-design-pattern\n *\n * @constructor\n * @param {HTMLElement} element The element that will be upgraded.\n */\nvar MaterialLayout = function MaterialLayout(element) {\n this.element_ = element;\n // Initialize instance.\n this.init();\n};\nwindow['MaterialLayout'] = MaterialLayout;\n/**\n * Store constants in one place so they can be updated easily.\n *\n * @enum {string | number}\n * @private\n */\nMaterialLayout.prototype.Constant_ = {\n MAX_WIDTH: '(max-width: 1024px)',\n TAB_SCROLL_PIXELS: 100,\n RESIZE_TIMEOUT: 100,\n MENU_ICON: '',\n CHEVRON_LEFT: 'chevron_left',\n CHEVRON_RIGHT: 'chevron_right'\n};\n/**\n * Keycodes, for code readability.\n *\n * @enum {number}\n * @private\n */\nMaterialLayout.prototype.Keycodes_ = {\n ENTER: 13,\n ESCAPE: 27,\n SPACE: 32\n};\n/**\n * Modes.\n *\n * @enum {number}\n * @private\n */\nMaterialLayout.prototype.Mode_ = {\n STANDARD: 0,\n SEAMED: 1,\n WATERFALL: 2,\n SCROLL: 3\n};\n/**\n * Store strings for class names defined by this component that are used in\n * JavaScript. This allows us to simply change it in one place should we\n * decide to modify at a later date.\n *\n * @enum {string}\n * @private\n */\nMaterialLayout.prototype.CssClasses_ = {\n CONTAINER: 'mdl-layout__container',\n HEADER: 'mdl-layout__header',\n DRAWER: 'mdl-layout__drawer',\n CONTENT: 'mdl-layout__content',\n DRAWER_BTN: 'mdl-layout__drawer-button',\n ICON: 'material-icons',\n JS_RIPPLE_EFFECT: 'mdl-js-ripple-effect',\n RIPPLE_CONTAINER: 'mdl-layout__tab-ripple-container',\n RIPPLE: 'mdl-ripple',\n RIPPLE_IGNORE_EVENTS: 'mdl-js-ripple-effect--ignore-events',\n HEADER_SEAMED: 'mdl-layout__header--seamed',\n HEADER_WATERFALL: 'mdl-layout__header--waterfall',\n HEADER_SCROLL: 'mdl-layout__header--scroll',\n FIXED_HEADER: 'mdl-layout--fixed-header',\n OBFUSCATOR: 'mdl-layout__obfuscator',\n TAB_BAR: 'mdl-layout__tab-bar',\n TAB_CONTAINER: 'mdl-layout__tab-bar-container',\n TAB: 'mdl-layout__tab',\n TAB_BAR_BUTTON: 'mdl-layout__tab-bar-button',\n TAB_BAR_LEFT_BUTTON: 'mdl-layout__tab-bar-left-button',\n TAB_BAR_RIGHT_BUTTON: 'mdl-layout__tab-bar-right-button',\n TAB_MANUAL_SWITCH: 'mdl-layout__tab-manual-switch',\n PANEL: 'mdl-layout__tab-panel',\n HAS_DRAWER: 'has-drawer',\n HAS_TABS: 'has-tabs',\n HAS_SCROLLING_HEADER: 'has-scrolling-header',\n CASTING_SHADOW: 'is-casting-shadow',\n IS_COMPACT: 'is-compact',\n IS_SMALL_SCREEN: 'is-small-screen',\n IS_DRAWER_OPEN: 'is-visible',\n IS_ACTIVE: 'is-active',\n IS_UPGRADED: 'is-upgraded',\n IS_ANIMATING: 'is-animating',\n ON_LARGE_SCREEN: 'mdl-layout--large-screen-only',\n ON_SMALL_SCREEN: 'mdl-layout--small-screen-only'\n};\n/**\n * Handles scrolling on the content.\n *\n * @private\n */\nMaterialLayout.prototype.contentScrollHandler_ = function () {\n if (this.header_.classList.contains(this.CssClasses_.IS_ANIMATING)) {\n return;\n }\n var headerVisible = !this.element_.classList.contains(this.CssClasses_.IS_SMALL_SCREEN) || this.element_.classList.contains(this.CssClasses_.FIXED_HEADER);\n if (this.content_.scrollTop > 0 && !this.header_.classList.contains(this.CssClasses_.IS_COMPACT)) {\n this.header_.classList.add(this.CssClasses_.CASTING_SHADOW);\n this.header_.classList.add(this.CssClasses_.IS_COMPACT);\n if (headerVisible) {\n this.header_.classList.add(this.CssClasses_.IS_ANIMATING);\n }\n } else if (this.content_.scrollTop <= 0 && this.header_.classList.contains(this.CssClasses_.IS_COMPACT)) {\n this.header_.classList.remove(this.CssClasses_.CASTING_SHADOW);\n this.header_.classList.remove(this.CssClasses_.IS_COMPACT);\n if (headerVisible) {\n this.header_.classList.add(this.CssClasses_.IS_ANIMATING);\n }\n }\n};\n/**\n * Handles a keyboard event on the drawer.\n *\n * @param {Event} evt The event that fired.\n * @private\n */\nMaterialLayout.prototype.keyboardEventHandler_ = function (evt) {\n // Only react when the drawer is open.\n if (evt.keyCode === this.Keycodes_.ESCAPE && this.drawer_.classList.contains(this.CssClasses_.IS_DRAWER_OPEN)) {\n this.toggleDrawer();\n }\n};\n/**\n * Handles changes in screen size.\n *\n * @private\n */\nMaterialLayout.prototype.screenSizeHandler_ = function () {\n if (this.screenSizeMediaQuery_.matches) {\n this.element_.classList.add(this.CssClasses_.IS_SMALL_SCREEN);\n } else {\n this.element_.classList.remove(this.CssClasses_.IS_SMALL_SCREEN);\n // Collapse drawer (if any) when moving to a large screen size.\n if (this.drawer_) {\n this.drawer_.classList.remove(this.CssClasses_.IS_DRAWER_OPEN);\n this.obfuscator_.classList.remove(this.CssClasses_.IS_DRAWER_OPEN);\n }\n }\n};\n/**\n * Handles events of drawer button.\n *\n * @param {Event} evt The event that fired.\n * @private\n */\nMaterialLayout.prototype.drawerToggleHandler_ = function (evt) {\n if (evt && evt.type === 'keydown') {\n if (evt.keyCode === this.Keycodes_.SPACE || evt.keyCode === this.Keycodes_.ENTER) {\n // prevent scrolling in drawer nav\n evt.preventDefault();\n } else {\n // prevent other keys\n return;\n }\n }\n this.toggleDrawer();\n};\n/**\n * Handles (un)setting the `is-animating` class\n *\n * @private\n */\nMaterialLayout.prototype.headerTransitionEndHandler_ = function () {\n this.header_.classList.remove(this.CssClasses_.IS_ANIMATING);\n};\n/**\n * Handles expanding the header on click\n *\n * @private\n */\nMaterialLayout.prototype.headerClickHandler_ = function () {\n if (this.header_.classList.contains(this.CssClasses_.IS_COMPACT)) {\n this.header_.classList.remove(this.CssClasses_.IS_COMPACT);\n this.header_.classList.add(this.CssClasses_.IS_ANIMATING);\n }\n};\n/**\n * Reset tab state, dropping active classes\n *\n * @private\n */\nMaterialLayout.prototype.resetTabState_ = function (tabBar) {\n for (var k = 0; k < tabBar.length; k++) {\n tabBar[k].classList.remove(this.CssClasses_.IS_ACTIVE);\n }\n};\n/**\n * Reset panel state, droping active classes\n *\n * @private\n */\nMaterialLayout.prototype.resetPanelState_ = function (panels) {\n for (var j = 0; j < panels.length; j++) {\n panels[j].classList.remove(this.CssClasses_.IS_ACTIVE);\n }\n};\n/**\n * Toggle drawer state\n *\n * @public\n */\nMaterialLayout.prototype.toggleDrawer = function () {\n var drawerButton = this.element_.querySelector('.' + this.CssClasses_.DRAWER_BTN);\n this.drawer_.classList.toggle(this.CssClasses_.IS_DRAWER_OPEN);\n this.obfuscator_.classList.toggle(this.CssClasses_.IS_DRAWER_OPEN);\n // Set accessibility properties.\n if (this.drawer_.classList.contains(this.CssClasses_.IS_DRAWER_OPEN)) {\n this.drawer_.setAttribute('aria-hidden', 'false');\n drawerButton.setAttribute('aria-expanded', 'true');\n } else {\n this.drawer_.setAttribute('aria-hidden', 'true');\n drawerButton.setAttribute('aria-expanded', 'false');\n }\n};\nMaterialLayout.prototype['toggleDrawer'] = MaterialLayout.prototype.toggleDrawer;\n/**\n * Initialize element.\n */\nMaterialLayout.prototype.init = function () {\n if (this.element_) {\n var container = document.createElement('div');\n container.classList.add(this.CssClasses_.CONTAINER);\n var focusedElement = this.element_.querySelector(':focus');\n this.element_.parentElement.insertBefore(container, this.element_);\n this.element_.parentElement.removeChild(this.element_);\n container.appendChild(this.element_);\n if (focusedElement) {\n focusedElement.focus();\n }\n var directChildren = this.element_.childNodes;\n var numChildren = directChildren.length;\n for (var c = 0; c < numChildren; c++) {\n var child = directChildren[c];\n if (child.classList && child.classList.contains(this.CssClasses_.HEADER)) {\n this.header_ = child;\n }\n if (child.classList && child.classList.contains(this.CssClasses_.DRAWER)) {\n this.drawer_ = child;\n }\n if (child.classList && child.classList.contains(this.CssClasses_.CONTENT)) {\n this.content_ = child;\n }\n }\n window.addEventListener('pageshow', function (e) {\n if (e.persisted) {\n // when page is loaded from back/forward cache\n // trigger repaint to let layout scroll in safari\n this.element_.style.overflowY = 'hidden';\n requestAnimationFrame(function () {\n this.element_.style.overflowY = '';\n }.bind(this));\n }\n }.bind(this), false);\n if (this.header_) {\n this.tabBar_ = this.header_.querySelector('.' + this.CssClasses_.TAB_BAR);\n }\n var mode = this.Mode_.STANDARD;\n if (this.header_) {\n if (this.header_.classList.contains(this.CssClasses_.HEADER_SEAMED)) {\n mode = this.Mode_.SEAMED;\n } else if (this.header_.classList.contains(this.CssClasses_.HEADER_WATERFALL)) {\n mode = this.Mode_.WATERFALL;\n this.header_.addEventListener('transitionend', this.headerTransitionEndHandler_.bind(this));\n this.header_.addEventListener('click', this.headerClickHandler_.bind(this));\n } else if (this.header_.classList.contains(this.CssClasses_.HEADER_SCROLL)) {\n mode = this.Mode_.SCROLL;\n container.classList.add(this.CssClasses_.HAS_SCROLLING_HEADER);\n }\n if (mode === this.Mode_.STANDARD) {\n this.header_.classList.add(this.CssClasses_.CASTING_SHADOW);\n if (this.tabBar_) {\n this.tabBar_.classList.add(this.CssClasses_.CASTING_SHADOW);\n }\n } else if (mode === this.Mode_.SEAMED || mode === this.Mode_.SCROLL) {\n this.header_.classList.remove(this.CssClasses_.CASTING_SHADOW);\n if (this.tabBar_) {\n this.tabBar_.classList.remove(this.CssClasses_.CASTING_SHADOW);\n }\n } else if (mode === this.Mode_.WATERFALL) {\n // Add and remove shadows depending on scroll position.\n // Also add/remove auxiliary class for styling of the compact version of\n // the header.\n this.content_.addEventListener('scroll', this.contentScrollHandler_.bind(this));\n this.contentScrollHandler_();\n }\n }\n // Add drawer toggling button to our layout, if we have an openable drawer.\n if (this.drawer_) {\n var drawerButton = this.element_.querySelector('.' + this.CssClasses_.DRAWER_BTN);\n if (!drawerButton) {\n drawerButton = document.createElement('div');\n drawerButton.setAttribute('aria-expanded', 'false');\n drawerButton.setAttribute('role', 'button');\n drawerButton.setAttribute('tabindex', '0');\n drawerButton.classList.add(this.CssClasses_.DRAWER_BTN);\n var drawerButtonIcon = document.createElement('i');\n drawerButtonIcon.classList.add(this.CssClasses_.ICON);\n drawerButtonIcon.innerHTML = this.Constant_.MENU_ICON;\n drawerButton.appendChild(drawerButtonIcon);\n }\n if (this.drawer_.classList.contains(this.CssClasses_.ON_LARGE_SCREEN)) {\n //If drawer has ON_LARGE_SCREEN class then add it to the drawer toggle button as well.\n drawerButton.classList.add(this.CssClasses_.ON_LARGE_SCREEN);\n } else if (this.drawer_.classList.contains(this.CssClasses_.ON_SMALL_SCREEN)) {\n //If drawer has ON_SMALL_SCREEN class then add it to the drawer toggle button as well.\n drawerButton.classList.add(this.CssClasses_.ON_SMALL_SCREEN);\n }\n drawerButton.addEventListener('click', this.drawerToggleHandler_.bind(this));\n drawerButton.addEventListener('keydown', this.drawerToggleHandler_.bind(this));\n // Add a class if the layout has a drawer, for altering the left padding.\n // Adds the HAS_DRAWER to the elements since this.header_ may or may\n // not be present.\n this.element_.classList.add(this.CssClasses_.HAS_DRAWER);\n // If we have a fixed header, add the button to the header rather than\n // the layout.\n if (this.element_.classList.contains(this.CssClasses_.FIXED_HEADER)) {\n this.header_.insertBefore(drawerButton, this.header_.firstChild);\n } else {\n this.element_.insertBefore(drawerButton, this.content_);\n }\n var obfuscator = document.createElement('div');\n obfuscator.classList.add(this.CssClasses_.OBFUSCATOR);\n this.element_.appendChild(obfuscator);\n obfuscator.addEventListener('click', this.drawerToggleHandler_.bind(this));\n this.obfuscator_ = obfuscator;\n this.drawer_.addEventListener('keydown', this.keyboardEventHandler_.bind(this));\n this.drawer_.setAttribute('aria-hidden', 'true');\n }\n // Keep an eye on screen size, and add/remove auxiliary class for styling\n // of small screens.\n this.screenSizeMediaQuery_ = window.matchMedia(this.Constant_.MAX_WIDTH);\n this.screenSizeMediaQuery_.addListener(this.screenSizeHandler_.bind(this));\n this.screenSizeHandler_();\n // Initialize tabs, if any.\n if (this.header_ && this.tabBar_) {\n this.element_.classList.add(this.CssClasses_.HAS_TABS);\n var tabContainer = document.createElement('div');\n tabContainer.classList.add(this.CssClasses_.TAB_CONTAINER);\n this.header_.insertBefore(tabContainer, this.tabBar_);\n this.header_.removeChild(this.tabBar_);\n var leftButton = document.createElement('div');\n leftButton.classList.add(this.CssClasses_.TAB_BAR_BUTTON);\n leftButton.classList.add(this.CssClasses_.TAB_BAR_LEFT_BUTTON);\n var leftButtonIcon = document.createElement('i');\n leftButtonIcon.classList.add(this.CssClasses_.ICON);\n leftButtonIcon.textContent = this.Constant_.CHEVRON_LEFT;\n leftButton.appendChild(leftButtonIcon);\n leftButton.addEventListener('click', function () {\n this.tabBar_.scrollLeft -= this.Constant_.TAB_SCROLL_PIXELS;\n }.bind(this));\n var rightButton = document.createElement('div');\n rightButton.classList.add(this.CssClasses_.TAB_BAR_BUTTON);\n rightButton.classList.add(this.CssClasses_.TAB_BAR_RIGHT_BUTTON);\n var rightButtonIcon = document.createElement('i');\n rightButtonIcon.classList.add(this.CssClasses_.ICON);\n rightButtonIcon.textContent = this.Constant_.CHEVRON_RIGHT;\n rightButton.appendChild(rightButtonIcon);\n rightButton.addEventListener('click', function () {\n this.tabBar_.scrollLeft += this.Constant_.TAB_SCROLL_PIXELS;\n }.bind(this));\n tabContainer.appendChild(leftButton);\n tabContainer.appendChild(this.tabBar_);\n tabContainer.appendChild(rightButton);\n // Add and remove tab buttons depending on scroll position and total\n // window size.\n var tabUpdateHandler = function () {\n if (this.tabBar_.scrollLeft > 0) {\n leftButton.classList.add(this.CssClasses_.IS_ACTIVE);\n } else {\n leftButton.classList.remove(this.CssClasses_.IS_ACTIVE);\n }\n if (this.tabBar_.scrollLeft < this.tabBar_.scrollWidth - this.tabBar_.offsetWidth) {\n rightButton.classList.add(this.CssClasses_.IS_ACTIVE);\n } else {\n rightButton.classList.remove(this.CssClasses_.IS_ACTIVE);\n }\n }.bind(this);\n this.tabBar_.addEventListener('scroll', tabUpdateHandler);\n tabUpdateHandler();\n // Update tabs when the window resizes.\n var windowResizeHandler = function () {\n // Use timeouts to make sure it doesn't happen too often.\n if (this.resizeTimeoutId_) {\n clearTimeout(this.resizeTimeoutId_);\n }\n this.resizeTimeoutId_ = setTimeout(function () {\n tabUpdateHandler();\n this.resizeTimeoutId_ = null;\n }.bind(this), this.Constant_.RESIZE_TIMEOUT);\n }.bind(this);\n window.addEventListener('resize', windowResizeHandler);\n if (this.tabBar_.classList.contains(this.CssClasses_.JS_RIPPLE_EFFECT)) {\n this.tabBar_.classList.add(this.CssClasses_.RIPPLE_IGNORE_EVENTS);\n }\n // Select element tabs, document panels\n var tabs = this.tabBar_.querySelectorAll('.' + this.CssClasses_.TAB);\n var panels = this.content_.querySelectorAll('.' + this.CssClasses_.PANEL);\n // Create new tabs for each tab element\n for (var i = 0; i < tabs.length; i++) {\n new MaterialLayoutTab(tabs[i], tabs, panels, this);\n }\n }\n this.element_.classList.add(this.CssClasses_.IS_UPGRADED);\n }\n};\n/**\n * Constructor for an individual tab.\n *\n * @constructor\n * @param {HTMLElement} tab The HTML element for the tab.\n * @param {!Array} tabs Array with HTML elements for all tabs.\n * @param {!Array} panels Array with HTML elements for all panels.\n * @param {MaterialLayout} layout The MaterialLayout object that owns the tab.\n */\nfunction MaterialLayoutTab(tab, tabs, panels, layout) {\n /**\n * Auxiliary method to programmatically select a tab in the UI.\n */\n function selectTab() {\n var href = tab.href.split('#')[1];\n var panel = layout.content_.querySelector('#' + href);\n layout.resetTabState_(tabs);\n layout.resetPanelState_(panels);\n tab.classList.add(layout.CssClasses_.IS_ACTIVE);\n panel.classList.add(layout.CssClasses_.IS_ACTIVE);\n }\n if (layout.tabBar_.classList.contains(layout.CssClasses_.JS_RIPPLE_EFFECT)) {\n var rippleContainer = document.createElement('span');\n rippleContainer.classList.add(layout.CssClasses_.RIPPLE_CONTAINER);\n rippleContainer.classList.add(layout.CssClasses_.JS_RIPPLE_EFFECT);\n var ripple = document.createElement('span');\n ripple.classList.add(layout.CssClasses_.RIPPLE);\n rippleContainer.appendChild(ripple);\n tab.appendChild(rippleContainer);\n }\n if (!layout.tabBar_.classList.contains(layout.CssClasses_.TAB_MANUAL_SWITCH)) {\n tab.addEventListener('click', function (e) {\n if (tab.getAttribute('href').charAt(0) === '#') {\n e.preventDefault();\n selectTab();\n }\n });\n }\n tab.show = selectTab;\n}\nwindow['MaterialLayoutTab'] = MaterialLayoutTab;\n// The component registers itself. It can assume componentHandler is available\n// in the global scope.\ncomponentHandler.register({\n constructor: MaterialLayout,\n classAsString: 'MaterialLayout',\n cssClass: 'mdl-js-layout'\n});\n/**\n * @license\n * Copyright 2015 Google Inc. All Rights Reserved.\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\n/**\n * Class constructor for Data Table Card MDL component.\n * Implements MDL component design pattern defined at:\n * https://github.com/jasonmayes/mdl-component-design-pattern\n *\n * @constructor\n * @param {Element} element The element that will be upgraded.\n */\nvar MaterialDataTable = function MaterialDataTable(element) {\n this.element_ = element;\n // Initialize instance.\n this.init();\n};\nwindow['MaterialDataTable'] = MaterialDataTable;\n/**\n * Store constants in one place so they can be updated easily.\n *\n * @enum {string | number}\n * @private\n */\nMaterialDataTable.prototype.Constant_ = {};\n/**\n * Store strings for class names defined by this component that are used in\n * JavaScript. This allows us to simply change it in one place should we\n * decide to modify at a later date.\n *\n * @enum {string}\n * @private\n */\nMaterialDataTable.prototype.CssClasses_ = {\n DATA_TABLE: 'mdl-data-table',\n SELECTABLE: 'mdl-data-table--selectable',\n SELECT_ELEMENT: 'mdl-data-table__select',\n IS_SELECTED: 'is-selected',\n IS_UPGRADED: 'is-upgraded'\n};\n/**\n * Generates and returns a function that toggles the selection state of a\n * single row (or multiple rows).\n *\n * @param {Element} checkbox Checkbox that toggles the selection state.\n * @param {Element} row Row to toggle when checkbox changes.\n * @param {(Array|NodeList)=} opt_rows Rows to toggle when checkbox changes.\n * @private\n */\nMaterialDataTable.prototype.selectRow_ = function (checkbox, row, opt_rows) {\n if (row) {\n return function () {\n if (checkbox.checked) {\n row.classList.add(this.CssClasses_.IS_SELECTED);\n } else {\n row.classList.remove(this.CssClasses_.IS_SELECTED);\n }\n }.bind(this);\n }\n if (opt_rows) {\n return function () {\n var i;\n var el;\n if (checkbox.checked) {\n for (i = 0; i < opt_rows.length; i++) {\n el = opt_rows[i].querySelector('td').querySelector('.mdl-checkbox');\n el['MaterialCheckbox'].check();\n opt_rows[i].classList.add(this.CssClasses_.IS_SELECTED);\n }\n } else {\n for (i = 0; i < opt_rows.length; i++) {\n el = opt_rows[i].querySelector('td').querySelector('.mdl-checkbox');\n el['MaterialCheckbox'].uncheck();\n opt_rows[i].classList.remove(this.CssClasses_.IS_SELECTED);\n }\n }\n }.bind(this);\n }\n};\n/**\n * Creates a checkbox for a single or or multiple rows and hooks up the\n * event handling.\n *\n * @param {Element} row Row to toggle when checkbox changes.\n * @param {(Array|NodeList)=} opt_rows Rows to toggle when checkbox changes.\n * @private\n */\nMaterialDataTable.prototype.createCheckbox_ = function (row, opt_rows) {\n var label = document.createElement('label');\n var labelClasses = [\n 'mdl-checkbox',\n 'mdl-js-checkbox',\n 'mdl-js-ripple-effect',\n this.CssClasses_.SELECT_ELEMENT\n ];\n label.className = labelClasses.join(' ');\n var checkbox = document.createElement('input');\n checkbox.type = 'checkbox';\n checkbox.classList.add('mdl-checkbox__input');\n if (row) {\n checkbox.checked = row.classList.contains(this.CssClasses_.IS_SELECTED);\n checkbox.addEventListener('change', this.selectRow_(checkbox, row));\n } else if (opt_rows) {\n checkbox.addEventListener('change', this.selectRow_(checkbox, null, opt_rows));\n }\n label.appendChild(checkbox);\n componentHandler.upgradeElement(label, 'MaterialCheckbox');\n return label;\n};\n/**\n * Initialize element.\n */\nMaterialDataTable.prototype.init = function () {\n if (this.element_) {\n var firstHeader = this.element_.querySelector('th');\n var bodyRows = Array.prototype.slice.call(this.element_.querySelectorAll('tbody tr'));\n var footRows = Array.prototype.slice.call(this.element_.querySelectorAll('tfoot tr'));\n var rows = bodyRows.concat(footRows);\n if (this.element_.classList.contains(this.CssClasses_.SELECTABLE)) {\n var th = document.createElement('th');\n var headerCheckbox = this.createCheckbox_(null, rows);\n th.appendChild(headerCheckbox);\n firstHeader.parentElement.insertBefore(th, firstHeader);\n for (var i = 0; i < rows.length; i++) {\n var firstCell = rows[i].querySelector('td');\n if (firstCell) {\n var td = document.createElement('td');\n if (rows[i].parentNode.nodeName.toUpperCase() === 'TBODY') {\n var rowCheckbox = this.createCheckbox_(rows[i]);\n td.appendChild(rowCheckbox);\n }\n rows[i].insertBefore(td, firstCell);\n }\n }\n this.element_.classList.add(this.CssClasses_.IS_UPGRADED);\n }\n }\n};\n// The component registers itself. It can assume componentHandler is available\n// in the global scope.\ncomponentHandler.register({\n constructor: MaterialDataTable,\n classAsString: 'MaterialDataTable',\n cssClass: 'mdl-js-data-table'\n});\n/**\n * @license\n * Copyright 2015 Google Inc. All Rights Reserved.\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\n/**\n * Class constructor for Ripple MDL component.\n * Implements MDL component design pattern defined at:\n * https://github.com/jasonmayes/mdl-component-design-pattern\n *\n * @constructor\n * @param {HTMLElement} element The element that will be upgraded.\n */\nvar MaterialRipple = function MaterialRipple(element) {\n this.element_ = element;\n // Initialize instance.\n this.init();\n};\nwindow['MaterialRipple'] = MaterialRipple;\n/**\n * Store constants in one place so they can be updated easily.\n *\n * @enum {string | number}\n * @private\n */\nMaterialRipple.prototype.Constant_ = {\n INITIAL_SCALE: 'scale(0.0001, 0.0001)',\n INITIAL_SIZE: '1px',\n INITIAL_OPACITY: '0.4',\n FINAL_OPACITY: '0',\n FINAL_SCALE: ''\n};\n/**\n * Store strings for class names defined by this component that are used in\n * JavaScript. This allows us to simply change it in one place should we\n * decide to modify at a later date.\n *\n * @enum {string}\n * @private\n */\nMaterialRipple.prototype.CssClasses_ = {\n RIPPLE_CENTER: 'mdl-ripple--center',\n RIPPLE_EFFECT_IGNORE_EVENTS: 'mdl-js-ripple-effect--ignore-events',\n RIPPLE: 'mdl-ripple',\n IS_ANIMATING: 'is-animating',\n IS_VISIBLE: 'is-visible'\n};\n/**\n * Handle mouse / finger down on element.\n *\n * @param {Event} event The event that fired.\n * @private\n */\nMaterialRipple.prototype.downHandler_ = function (event) {\n if (!this.rippleElement_.style.width && !this.rippleElement_.style.height) {\n var rect = this.element_.getBoundingClientRect();\n this.boundHeight = rect.height;\n this.boundWidth = rect.width;\n this.rippleSize_ = Math.sqrt(rect.width * rect.width + rect.height * rect.height) * 2 + 2;\n this.rippleElement_.style.width = this.rippleSize_ + 'px';\n this.rippleElement_.style.height = this.rippleSize_ + 'px';\n }\n this.rippleElement_.classList.add(this.CssClasses_.IS_VISIBLE);\n if (event.type === 'mousedown' && this.ignoringMouseDown_) {\n this.ignoringMouseDown_ = false;\n } else {\n if (event.type === 'touchstart') {\n this.ignoringMouseDown_ = true;\n }\n var frameCount = this.getFrameCount();\n if (frameCount > 0) {\n return;\n }\n this.setFrameCount(1);\n var bound = event.currentTarget.getBoundingClientRect();\n var x;\n var y;\n // Check if we are handling a keyboard click.\n if (event.clientX === 0 && event.clientY === 0) {\n x = Math.round(bound.width / 2);\n y = Math.round(bound.height / 2);\n } else {\n var clientX = event.clientX !== undefined ? event.clientX : event.touches[0].clientX;\n var clientY = event.clientY !== undefined ? event.clientY : event.touches[0].clientY;\n x = Math.round(clientX - bound.left);\n y = Math.round(clientY - bound.top);\n }\n this.setRippleXY(x, y);\n this.setRippleStyles(true);\n window.requestAnimationFrame(this.animFrameHandler.bind(this));\n }\n};\n/**\n * Handle mouse / finger up on element.\n *\n * @param {Event} event The event that fired.\n * @private\n */\nMaterialRipple.prototype.upHandler_ = function (event) {\n // Don't fire for the artificial \"mouseup\" generated by a double-click.\n if (event && event.detail !== 2) {\n // Allow a repaint to occur before removing this class, so the animation\n // shows for tap events, which seem to trigger a mouseup too soon after\n // mousedown.\n window.setTimeout(function () {\n this.rippleElement_.classList.remove(this.CssClasses_.IS_VISIBLE);\n }.bind(this), 0);\n }\n};\n/**\n * Initialize element.\n */\nMaterialRipple.prototype.init = function () {\n if (this.element_) {\n var recentering = this.element_.classList.contains(this.CssClasses_.RIPPLE_CENTER);\n if (!this.element_.classList.contains(this.CssClasses_.RIPPLE_EFFECT_IGNORE_EVENTS)) {\n this.rippleElement_ = this.element_.querySelector('.' + this.CssClasses_.RIPPLE);\n this.frameCount_ = 0;\n this.rippleSize_ = 0;\n this.x_ = 0;\n this.y_ = 0;\n // Touch start produces a compat mouse down event, which would cause a\n // second ripples. To avoid that, we use this property to ignore the first\n // mouse down after a touch start.\n this.ignoringMouseDown_ = false;\n this.boundDownHandler = this.downHandler_.bind(this);\n this.element_.addEventListener('mousedown', this.boundDownHandler);\n this.element_.addEventListener('touchstart', this.boundDownHandler);\n this.boundUpHandler = this.upHandler_.bind(this);\n this.element_.addEventListener('mouseup', this.boundUpHandler);\n this.element_.addEventListener('mouseleave', this.boundUpHandler);\n this.element_.addEventListener('touchend', this.boundUpHandler);\n this.element_.addEventListener('blur', this.boundUpHandler);\n /**\n * Getter for frameCount_.\n * @return {number} the frame count.\n */\n this.getFrameCount = function () {\n return this.frameCount_;\n };\n /**\n * Setter for frameCount_.\n * @param {number} fC the frame count.\n */\n this.setFrameCount = function (fC) {\n this.frameCount_ = fC;\n };\n /**\n * Getter for rippleElement_.\n * @return {Element} the ripple element.\n */\n this.getRippleElement = function () {\n return this.rippleElement_;\n };\n /**\n * Sets the ripple X and Y coordinates.\n * @param {number} newX the new X coordinate\n * @param {number} newY the new Y coordinate\n */\n this.setRippleXY = function (newX, newY) {\n this.x_ = newX;\n this.y_ = newY;\n };\n /**\n * Sets the ripple styles.\n * @param {boolean} start whether or not this is the start frame.\n */\n this.setRippleStyles = function (start) {\n if (this.rippleElement_ !== null) {\n var transformString;\n var scale;\n var size;\n var offset = 'translate(' + this.x_ + 'px, ' + this.y_ + 'px)';\n if (start) {\n scale = this.Constant_.INITIAL_SCALE;\n size = this.Constant_.INITIAL_SIZE;\n } else {\n scale = this.Constant_.FINAL_SCALE;\n size = this.rippleSize_ + 'px';\n if (recentering) {\n offset = 'translate(' + this.boundWidth / 2 + 'px, ' + this.boundHeight / 2 + 'px)';\n }\n }\n transformString = 'translate(-50%, -50%) ' + offset + scale;\n this.rippleElement_.style.webkitTransform = transformString;\n this.rippleElement_.style.msTransform = transformString;\n this.rippleElement_.style.transform = transformString;\n if (start) {\n this.rippleElement_.classList.remove(this.CssClasses_.IS_ANIMATING);\n } else {\n this.rippleElement_.classList.add(this.CssClasses_.IS_ANIMATING);\n }\n }\n };\n /**\n * Handles an animation frame.\n */\n this.animFrameHandler = function () {\n if (this.frameCount_-- > 0) {\n window.requestAnimationFrame(this.animFrameHandler.bind(this));\n } else {\n this.setRippleStyles(false);\n }\n };\n }\n }\n};\n// The component registers itself. It can assume componentHandler is available\n// in the global scope.\ncomponentHandler.register({\n constructor: MaterialRipple,\n classAsString: 'MaterialRipple',\n cssClass: 'mdl-js-ripple-effect',\n widget: false\n});\n}());\n","/*!\n * jQuery JavaScript Library v3.6.0\n * https://jquery.com/\n *\n * Includes Sizzle.js\n * https://sizzlejs.com/\n *\n * Copyright OpenJS Foundation and other contributors\n * Released under the MIT license\n * https://jquery.org/license\n *\n * Date: 2021-03-02T17:08Z\n */\n( function( global, factory ) {\n\n\t\"use strict\";\n\n\tif ( typeof module === \"object\" && typeof module.exports === \"object\" ) {\n\n\t\t// For CommonJS and CommonJS-like environments where a proper `window`\n\t\t// is present, execute the factory and get jQuery.\n\t\t// For environments that do not have a `window` with a `document`\n\t\t// (such as Node.js), expose a factory as module.exports.\n\t\t// This accentuates the need for the creation of a real `window`.\n\t\t// e.g. var jQuery = require(\"jquery\")(window);\n\t\t// See ticket #14549 for more info.\n\t\tmodule.exports = global.document ?\n\t\t\tfactory( global, true ) :\n\t\t\tfunction( w ) {\n\t\t\t\tif ( !w.document ) {\n\t\t\t\t\tthrow new Error( \"jQuery requires a window with a document\" );\n\t\t\t\t}\n\t\t\t\treturn factory( w );\n\t\t\t};\n\t} else {\n\t\tfactory( global );\n\t}\n\n// Pass this if window is not defined yet\n} )( typeof window !== \"undefined\" ? window : this, function( window, noGlobal ) {\n\n// Edge <= 12 - 13+, Firefox <=18 - 45+, IE 10 - 11, Safari 5.1 - 9+, iOS 6 - 9.1\n// throw exceptions when non-strict code (e.g., ASP.NET 4.5) accesses strict mode\n// arguments.callee.caller (trac-13335). But as of jQuery 3.0 (2016), strict mode should be common\n// enough that all such attempts are guarded in a try block.\n\"use strict\";\n\nvar arr = [];\n\nvar getProto = Object.getPrototypeOf;\n\nvar slice = arr.slice;\n\nvar flat = arr.flat ? function( array ) {\n\treturn arr.flat.call( array );\n} : function( array ) {\n\treturn arr.concat.apply( [], array );\n};\n\n\nvar push = arr.push;\n\nvar indexOf = arr.indexOf;\n\nvar class2type = {};\n\nvar toString = class2type.toString;\n\nvar hasOwn = class2type.hasOwnProperty;\n\nvar fnToString = hasOwn.toString;\n\nvar ObjectFunctionString = fnToString.call( Object );\n\nvar support = {};\n\nvar isFunction = function isFunction( obj ) {\n\n\t\t// Support: Chrome <=57, Firefox <=52\n\t\t// In some browsers, typeof returns \"function\" for HTML elements\n\t\t// (i.e., `typeof document.createElement( \"object\" ) === \"function\"`).\n\t\t// We don't want to classify *any* DOM node as a function.\n\t\t// Support: QtWeb <=3.8.5, WebKit <=534.34, wkhtmltopdf tool <=0.12.5\n\t\t// Plus for old WebKit, typeof returns \"function\" for HTML collections\n\t\t// (e.g., `typeof document.getElementsByTagName(\"div\") === \"function\"`). (gh-4756)\n\t\treturn typeof obj === \"function\" && typeof obj.nodeType !== \"number\" &&\n\t\t\ttypeof obj.item !== \"function\";\n\t};\n\n\nvar isWindow = function isWindow( obj ) {\n\t\treturn obj != null && obj === obj.window;\n\t};\n\n\nvar document = window.document;\n\n\n\n\tvar preservedScriptAttributes = {\n\t\ttype: true,\n\t\tsrc: true,\n\t\tnonce: true,\n\t\tnoModule: true\n\t};\n\n\tfunction DOMEval( code, node, doc ) {\n\t\tdoc = doc || document;\n\n\t\tvar i, val,\n\t\t\tscript = doc.createElement( \"script\" );\n\n\t\tscript.text = code;\n\t\tif ( node ) {\n\t\t\tfor ( i in preservedScriptAttributes ) {\n\n\t\t\t\t// Support: Firefox 64+, Edge 18+\n\t\t\t\t// Some browsers don't support the \"nonce\" property on scripts.\n\t\t\t\t// On the other hand, just using `getAttribute` is not enough as\n\t\t\t\t// the `nonce` attribute is reset to an empty string whenever it\n\t\t\t\t// becomes browsing-context connected.\n\t\t\t\t// See https://github.com/whatwg/html/issues/2369\n\t\t\t\t// See https://html.spec.whatwg.org/#nonce-attributes\n\t\t\t\t// The `node.getAttribute` check was added for the sake of\n\t\t\t\t// `jQuery.globalEval` so that it can fake a nonce-containing node\n\t\t\t\t// via an object.\n\t\t\t\tval = node[ i ] || node.getAttribute && node.getAttribute( i );\n\t\t\t\tif ( val ) {\n\t\t\t\t\tscript.setAttribute( i, val );\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\t\tdoc.head.appendChild( script ).parentNode.removeChild( script );\n\t}\n\n\nfunction toType( obj ) {\n\tif ( obj == null ) {\n\t\treturn obj + \"\";\n\t}\n\n\t// Support: Android <=2.3 only (functionish RegExp)\n\treturn typeof obj === \"object\" || typeof obj === \"function\" ?\n\t\tclass2type[ toString.call( obj ) ] || \"object\" :\n\t\ttypeof obj;\n}\n/* global Symbol */\n// Defining this global in .eslintrc.json would create a danger of using the global\n// unguarded in another place, it seems safer to define global only for this module\n\n\n\nvar\n\tversion = \"3.6.0\",\n\n\t// Define a local copy of jQuery\n\tjQuery = function( selector, context ) {\n\n\t\t// The jQuery object is actually just the init constructor 'enhanced'\n\t\t// Need init if jQuery is called (just allow error to be thrown if not included)\n\t\treturn new jQuery.fn.init( selector, context );\n\t};\n\njQuery.fn = jQuery.prototype = {\n\n\t// The current version of jQuery being used\n\tjquery: version,\n\n\tconstructor: jQuery,\n\n\t// The default length of a jQuery object is 0\n\tlength: 0,\n\n\ttoArray: function() {\n\t\treturn slice.call( this );\n\t},\n\n\t// Get the Nth element in the matched element set OR\n\t// Get the whole matched element set as a clean array\n\tget: function( num ) {\n\n\t\t// Return all the elements in a clean array\n\t\tif ( num == null ) {\n\t\t\treturn slice.call( this );\n\t\t}\n\n\t\t// Return just the one element from the set\n\t\treturn num < 0 ? this[ num + this.length ] : this[ num ];\n\t},\n\n\t// Take an array of elements and push it onto the stack\n\t// (returning the new matched element set)\n\tpushStack: function( elems ) {\n\n\t\t// Build a new jQuery matched element set\n\t\tvar ret = jQuery.merge( this.constructor(), elems );\n\n\t\t// Add the old object onto the stack (as a reference)\n\t\tret.prevObject = this;\n\n\t\t// Return the newly-formed element set\n\t\treturn ret;\n\t},\n\n\t// Execute a callback for every element in the matched set.\n\teach: function( callback ) {\n\t\treturn jQuery.each( this, callback );\n\t},\n\n\tmap: function( callback ) {\n\t\treturn this.pushStack( jQuery.map( this, function( elem, i ) {\n\t\t\treturn callback.call( elem, i, elem );\n\t\t} ) );\n\t},\n\n\tslice: function() {\n\t\treturn this.pushStack( slice.apply( this, arguments ) );\n\t},\n\n\tfirst: function() {\n\t\treturn this.eq( 0 );\n\t},\n\n\tlast: function() {\n\t\treturn this.eq( -1 );\n\t},\n\n\teven: function() {\n\t\treturn this.pushStack( jQuery.grep( this, function( _elem, i ) {\n\t\t\treturn ( i + 1 ) % 2;\n\t\t} ) );\n\t},\n\n\todd: function() {\n\t\treturn this.pushStack( jQuery.grep( this, function( _elem, i ) {\n\t\t\treturn i % 2;\n\t\t} ) );\n\t},\n\n\teq: function( i ) {\n\t\tvar len = this.length,\n\t\t\tj = +i + ( i < 0 ? len : 0 );\n\t\treturn this.pushStack( j >= 0 && j < len ? [ this[ j ] ] : [] );\n\t},\n\n\tend: function() {\n\t\treturn this.prevObject || this.constructor();\n\t},\n\n\t// For internal use only.\n\t// Behaves like an Array's method, not like a jQuery method.\n\tpush: push,\n\tsort: arr.sort,\n\tsplice: arr.splice\n};\n\njQuery.extend = jQuery.fn.extend = function() {\n\tvar options, name, src, copy, copyIsArray, clone,\n\t\ttarget = arguments[ 0 ] || {},\n\t\ti = 1,\n\t\tlength = arguments.length,\n\t\tdeep = false;\n\n\t// Handle a deep copy situation\n\tif ( typeof target === \"boolean\" ) {\n\t\tdeep = target;\n\n\t\t// Skip the boolean and the target\n\t\ttarget = arguments[ i ] || {};\n\t\ti++;\n\t}\n\n\t// Handle case when target is a string or something (possible in deep copy)\n\tif ( typeof target !== \"object\" && !isFunction( target ) ) {\n\t\ttarget = {};\n\t}\n\n\t// Extend jQuery itself if only one argument is passed\n\tif ( i === length ) {\n\t\ttarget = this;\n\t\ti--;\n\t}\n\n\tfor ( ; i < length; i++ ) {\n\n\t\t// Only deal with non-null/undefined values\n\t\tif ( ( options = arguments[ i ] ) != null ) {\n\n\t\t\t// Extend the base object\n\t\t\tfor ( name in options ) {\n\t\t\t\tcopy = options[ name ];\n\n\t\t\t\t// Prevent Object.prototype pollution\n\t\t\t\t// Prevent never-ending loop\n\t\t\t\tif ( name === \"__proto__\" || target === copy ) {\n\t\t\t\t\tcontinue;\n\t\t\t\t}\n\n\t\t\t\t// Recurse if we're merging plain objects or arrays\n\t\t\t\tif ( deep && copy && ( jQuery.isPlainObject( copy ) ||\n\t\t\t\t\t( copyIsArray = Array.isArray( copy ) ) ) ) {\n\t\t\t\t\tsrc = target[ name ];\n\n\t\t\t\t\t// Ensure proper type for the source value\n\t\t\t\t\tif ( copyIsArray && !Array.isArray( src ) ) {\n\t\t\t\t\t\tclone = [];\n\t\t\t\t\t} else if ( !copyIsArray && !jQuery.isPlainObject( src ) ) {\n\t\t\t\t\t\tclone = {};\n\t\t\t\t\t} else {\n\t\t\t\t\t\tclone = src;\n\t\t\t\t\t}\n\t\t\t\t\tcopyIsArray = false;\n\n\t\t\t\t\t// Never move original objects, clone them\n\t\t\t\t\ttarget[ name ] = jQuery.extend( deep, clone, copy );\n\n\t\t\t\t// Don't bring in undefined values\n\t\t\t\t} else if ( copy !== undefined ) {\n\t\t\t\t\ttarget[ name ] = copy;\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\t}\n\n\t// Return the modified object\n\treturn target;\n};\n\njQuery.extend( {\n\n\t// Unique for each copy of jQuery on the page\n\texpando: \"jQuery\" + ( version + Math.random() ).replace( /\\D/g, \"\" ),\n\n\t// Assume jQuery is ready without the ready module\n\tisReady: true,\n\n\terror: function( msg ) {\n\t\tthrow new Error( msg );\n\t},\n\n\tnoop: function() {},\n\n\tisPlainObject: function( obj ) {\n\t\tvar proto, Ctor;\n\n\t\t// Detect obvious negatives\n\t\t// Use toString instead of jQuery.type to catch host objects\n\t\tif ( !obj || toString.call( obj ) !== \"[object Object]\" ) {\n\t\t\treturn false;\n\t\t}\n\n\t\tproto = getProto( obj );\n\n\t\t// Objects with no prototype (e.g., `Object.create( null )`) are plain\n\t\tif ( !proto ) {\n\t\t\treturn true;\n\t\t}\n\n\t\t// Objects with prototype are plain iff they were constructed by a global Object function\n\t\tCtor = hasOwn.call( proto, \"constructor\" ) && proto.constructor;\n\t\treturn typeof Ctor === \"function\" && fnToString.call( Ctor ) === ObjectFunctionString;\n\t},\n\n\tisEmptyObject: function( obj ) {\n\t\tvar name;\n\n\t\tfor ( name in obj ) {\n\t\t\treturn false;\n\t\t}\n\t\treturn true;\n\t},\n\n\t// Evaluates a script in a provided context; falls back to the global one\n\t// if not specified.\n\tglobalEval: function( code, options, doc ) {\n\t\tDOMEval( code, { nonce: options && options.nonce }, doc );\n\t},\n\n\teach: function( obj, callback ) {\n\t\tvar length, i = 0;\n\n\t\tif ( isArrayLike( obj ) ) {\n\t\t\tlength = obj.length;\n\t\t\tfor ( ; i < length; i++ ) {\n\t\t\t\tif ( callback.call( obj[ i ], i, obj[ i ] ) === false ) {\n\t\t\t\t\tbreak;\n\t\t\t\t}\n\t\t\t}\n\t\t} else {\n\t\t\tfor ( i in obj ) {\n\t\t\t\tif ( callback.call( obj[ i ], i, obj[ i ] ) === false ) {\n\t\t\t\t\tbreak;\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\n\t\treturn obj;\n\t},\n\n\t// results is for internal usage only\n\tmakeArray: function( arr, results ) {\n\t\tvar ret = results || [];\n\n\t\tif ( arr != null ) {\n\t\t\tif ( isArrayLike( Object( arr ) ) ) {\n\t\t\t\tjQuery.merge( ret,\n\t\t\t\t\ttypeof arr === \"string\" ?\n\t\t\t\t\t\t[ arr ] : arr\n\t\t\t\t);\n\t\t\t} else {\n\t\t\t\tpush.call( ret, arr );\n\t\t\t}\n\t\t}\n\n\t\treturn ret;\n\t},\n\n\tinArray: function( elem, arr, i ) {\n\t\treturn arr == null ? -1 : indexOf.call( arr, elem, i );\n\t},\n\n\t// Support: Android <=4.0 only, PhantomJS 1 only\n\t// push.apply(_, arraylike) throws on ancient WebKit\n\tmerge: function( first, second ) {\n\t\tvar len = +second.length,\n\t\t\tj = 0,\n\t\t\ti = first.length;\n\n\t\tfor ( ; j < len; j++ ) {\n\t\t\tfirst[ i++ ] = second[ j ];\n\t\t}\n\n\t\tfirst.length = i;\n\n\t\treturn first;\n\t},\n\n\tgrep: function( elems, callback, invert ) {\n\t\tvar callbackInverse,\n\t\t\tmatches = [],\n\t\t\ti = 0,\n\t\t\tlength = elems.length,\n\t\t\tcallbackExpect = !invert;\n\n\t\t// Go through the array, only saving the items\n\t\t// that pass the validator function\n\t\tfor ( ; i < length; i++ ) {\n\t\t\tcallbackInverse = !callback( elems[ i ], i );\n\t\t\tif ( callbackInverse !== callbackExpect ) {\n\t\t\t\tmatches.push( elems[ i ] );\n\t\t\t}\n\t\t}\n\n\t\treturn matches;\n\t},\n\n\t// arg is for internal usage only\n\tmap: function( elems, callback, arg ) {\n\t\tvar length, value,\n\t\t\ti = 0,\n\t\t\tret = [];\n\n\t\t// Go through the array, translating each of the items to their new values\n\t\tif ( isArrayLike( elems ) ) {\n\t\t\tlength = elems.length;\n\t\t\tfor ( ; i < length; i++ ) {\n\t\t\t\tvalue = callback( elems[ i ], i, arg );\n\n\t\t\t\tif ( value != null ) {\n\t\t\t\t\tret.push( value );\n\t\t\t\t}\n\t\t\t}\n\n\t\t// Go through every key on the object,\n\t\t} else {\n\t\t\tfor ( i in elems ) {\n\t\t\t\tvalue = callback( elems[ i ], i, arg );\n\n\t\t\t\tif ( value != null ) {\n\t\t\t\t\tret.push( value );\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\n\t\t// Flatten any nested arrays\n\t\treturn flat( ret );\n\t},\n\n\t// A global GUID counter for objects\n\tguid: 1,\n\n\t// jQuery.support is not used in Core but other projects attach their\n\t// properties to it so it needs to exist.\n\tsupport: support\n} );\n\nif ( typeof Symbol === \"function\" ) {\n\tjQuery.fn[ Symbol.iterator ] = arr[ Symbol.iterator ];\n}\n\n// Populate the class2type map\njQuery.each( \"Boolean Number String Function Array Date RegExp Object Error Symbol\".split( \" \" ),\n\tfunction( _i, name ) {\n\t\tclass2type[ \"[object \" + name + \"]\" ] = name.toLowerCase();\n\t} );\n\nfunction isArrayLike( obj ) {\n\n\t// Support: real iOS 8.2 only (not reproducible in simulator)\n\t// `in` check used to prevent JIT error (gh-2145)\n\t// hasOwn isn't used here due to false negatives\n\t// regarding Nodelist length in IE\n\tvar length = !!obj && \"length\" in obj && obj.length,\n\t\ttype = toType( obj );\n\n\tif ( isFunction( obj ) || isWindow( obj ) ) {\n\t\treturn false;\n\t}\n\n\treturn type === \"array\" || length === 0 ||\n\t\ttypeof length === \"number\" && length > 0 && ( length - 1 ) in obj;\n}\nvar Sizzle =\n/*!\n * Sizzle CSS Selector Engine v2.3.6\n * https://sizzlejs.com/\n *\n * Copyright JS Foundation and other contributors\n * Released under the MIT license\n * https://js.foundation/\n *\n * Date: 2021-02-16\n */\n( function( window ) {\nvar i,\n\tsupport,\n\tExpr,\n\tgetText,\n\tisXML,\n\ttokenize,\n\tcompile,\n\tselect,\n\toutermostContext,\n\tsortInput,\n\thasDuplicate,\n\n\t// Local document vars\n\tsetDocument,\n\tdocument,\n\tdocElem,\n\tdocumentIsHTML,\n\trbuggyQSA,\n\trbuggyMatches,\n\tmatches,\n\tcontains,\n\n\t// Instance-specific data\n\texpando = \"sizzle\" + 1 * new Date(),\n\tpreferredDoc = window.document,\n\tdirruns = 0,\n\tdone = 0,\n\tclassCache = createCache(),\n\ttokenCache = createCache(),\n\tcompilerCache = createCache(),\n\tnonnativeSelectorCache = createCache(),\n\tsortOrder = function( a, b ) {\n\t\tif ( a === b ) {\n\t\t\thasDuplicate = true;\n\t\t}\n\t\treturn 0;\n\t},\n\n\t// Instance methods\n\thasOwn = ( {} ).hasOwnProperty,\n\tarr = [],\n\tpop = arr.pop,\n\tpushNative = arr.push,\n\tpush = arr.push,\n\tslice = arr.slice,\n\n\t// Use a stripped-down indexOf as it's faster than native\n\t// https://jsperf.com/thor-indexof-vs-for/5\n\tindexOf = function( list, elem ) {\n\t\tvar i = 0,\n\t\t\tlen = list.length;\n\t\tfor ( ; i < len; i++ ) {\n\t\t\tif ( list[ i ] === elem ) {\n\t\t\t\treturn i;\n\t\t\t}\n\t\t}\n\t\treturn -1;\n\t},\n\n\tbooleans = \"checked|selected|async|autofocus|autoplay|controls|defer|disabled|hidden|\" +\n\t\t\"ismap|loop|multiple|open|readonly|required|scoped\",\n\n\t// Regular expressions\n\n\t// http://www.w3.org/TR/css3-selectors/#whitespace\n\twhitespace = \"[\\\\x20\\\\t\\\\r\\\\n\\\\f]\",\n\n\t// https://www.w3.org/TR/css-syntax-3/#ident-token-diagram\n\tidentifier = \"(?:\\\\\\\\[\\\\da-fA-F]{1,6}\" + whitespace +\n\t\t\"?|\\\\\\\\[^\\\\r\\\\n\\\\f]|[\\\\w-]|[^\\0-\\\\x7f])+\",\n\n\t// Attribute selectors: http://www.w3.org/TR/selectors/#attribute-selectors\n\tattributes = \"\\\\[\" + whitespace + \"*(\" + identifier + \")(?:\" + whitespace +\n\n\t\t// Operator (capture 2)\n\t\t\"*([*^$|!~]?=)\" + whitespace +\n\n\t\t// \"Attribute values must be CSS identifiers [capture 5]\n\t\t// or strings [capture 3 or capture 4]\"\n\t\t\"*(?:'((?:\\\\\\\\.|[^\\\\\\\\'])*)'|\\\"((?:\\\\\\\\.|[^\\\\\\\\\\\"])*)\\\"|(\" + identifier + \"))|)\" +\n\t\twhitespace + \"*\\\\]\",\n\n\tpseudos = \":(\" + identifier + \")(?:\\\\((\" +\n\n\t\t// To reduce the number of selectors needing tokenize in the preFilter, prefer arguments:\n\t\t// 1. quoted (capture 3; capture 4 or capture 5)\n\t\t\"('((?:\\\\\\\\.|[^\\\\\\\\'])*)'|\\\"((?:\\\\\\\\.|[^\\\\\\\\\\\"])*)\\\")|\" +\n\n\t\t// 2. simple (capture 6)\n\t\t\"((?:\\\\\\\\.|[^\\\\\\\\()[\\\\]]|\" + attributes + \")*)|\" +\n\n\t\t// 3. anything else (capture 2)\n\t\t\".*\" +\n\t\t\")\\\\)|)\",\n\n\t// Leading and non-escaped trailing whitespace, capturing some non-whitespace characters preceding the latter\n\trwhitespace = new RegExp( whitespace + \"+\", \"g\" ),\n\trtrim = new RegExp( \"^\" + whitespace + \"+|((?:^|[^\\\\\\\\])(?:\\\\\\\\.)*)\" +\n\t\twhitespace + \"+$\", \"g\" ),\n\n\trcomma = new RegExp( \"^\" + whitespace + \"*,\" + whitespace + \"*\" ),\n\trcombinators = new RegExp( \"^\" + whitespace + \"*([>+~]|\" + whitespace + \")\" + whitespace +\n\t\t\"*\" ),\n\trdescend = new RegExp( whitespace + \"|>\" ),\n\n\trpseudo = new RegExp( pseudos ),\n\tridentifier = new RegExp( \"^\" + identifier + \"$\" ),\n\n\tmatchExpr = {\n\t\t\"ID\": new RegExp( \"^#(\" + identifier + \")\" ),\n\t\t\"CLASS\": new RegExp( \"^\\\\.(\" + identifier + \")\" ),\n\t\t\"TAG\": new RegExp( \"^(\" + identifier + \"|[*])\" ),\n\t\t\"ATTR\": new RegExp( \"^\" + attributes ),\n\t\t\"PSEUDO\": new RegExp( \"^\" + pseudos ),\n\t\t\"CHILD\": new RegExp( \"^:(only|first|last|nth|nth-last)-(child|of-type)(?:\\\\(\" +\n\t\t\twhitespace + \"*(even|odd|(([+-]|)(\\\\d*)n|)\" + whitespace + \"*(?:([+-]|)\" +\n\t\t\twhitespace + \"*(\\\\d+)|))\" + whitespace + \"*\\\\)|)\", \"i\" ),\n\t\t\"bool\": new RegExp( \"^(?:\" + booleans + \")$\", \"i\" ),\n\n\t\t// For use in libraries implementing .is()\n\t\t// We use this for POS matching in `select`\n\t\t\"needsContext\": new RegExp( \"^\" + whitespace +\n\t\t\t\"*[>+~]|:(even|odd|eq|gt|lt|nth|first|last)(?:\\\\(\" + whitespace +\n\t\t\t\"*((?:-\\\\d)?\\\\d*)\" + whitespace + \"*\\\\)|)(?=[^-]|$)\", \"i\" )\n\t},\n\n\trhtml = /HTML$/i,\n\trinputs = /^(?:input|select|textarea|button)$/i,\n\trheader = /^h\\d$/i,\n\n\trnative = /^[^{]+\\{\\s*\\[native \\w/,\n\n\t// Easily-parseable/retrievable ID or TAG or CLASS selectors\n\trquickExpr = /^(?:#([\\w-]+)|(\\w+)|\\.([\\w-]+))$/,\n\n\trsibling = /[+~]/,\n\n\t// CSS escapes\n\t// http://www.w3.org/TR/CSS21/syndata.html#escaped-characters\n\trunescape = new RegExp( \"\\\\\\\\[\\\\da-fA-F]{1,6}\" + whitespace + \"?|\\\\\\\\([^\\\\r\\\\n\\\\f])\", \"g\" ),\n\tfunescape = function( escape, nonHex ) {\n\t\tvar high = \"0x\" + escape.slice( 1 ) - 0x10000;\n\n\t\treturn nonHex ?\n\n\t\t\t// Strip the backslash prefix from a non-hex escape sequence\n\t\t\tnonHex :\n\n\t\t\t// Replace a hexadecimal escape sequence with the encoded Unicode code point\n\t\t\t// Support: IE <=11+\n\t\t\t// For values outside the Basic Multilingual Plane (BMP), manually construct a\n\t\t\t// surrogate pair\n\t\t\thigh < 0 ?\n\t\t\t\tString.fromCharCode( high + 0x10000 ) :\n\t\t\t\tString.fromCharCode( high >> 10 | 0xD800, high & 0x3FF | 0xDC00 );\n\t},\n\n\t// CSS string/identifier serialization\n\t// https://drafts.csswg.org/cssom/#common-serializing-idioms\n\trcssescape = /([\\0-\\x1f\\x7f]|^-?\\d)|^-$|[^\\0-\\x1f\\x7f-\\uFFFF\\w-]/g,\n\tfcssescape = function( ch, asCodePoint ) {\n\t\tif ( asCodePoint ) {\n\n\t\t\t// U+0000 NULL becomes U+FFFD REPLACEMENT CHARACTER\n\t\t\tif ( ch === \"\\0\" ) {\n\t\t\t\treturn \"\\uFFFD\";\n\t\t\t}\n\n\t\t\t// Control characters and (dependent upon position) numbers get escaped as code points\n\t\t\treturn ch.slice( 0, -1 ) + \"\\\\\" +\n\t\t\t\tch.charCodeAt( ch.length - 1 ).toString( 16 ) + \" \";\n\t\t}\n\n\t\t// Other potentially-special ASCII characters get backslash-escaped\n\t\treturn \"\\\\\" + ch;\n\t},\n\n\t// Used for iframes\n\t// See setDocument()\n\t// Removing the function wrapper causes a \"Permission Denied\"\n\t// error in IE\n\tunloadHandler = function() {\n\t\tsetDocument();\n\t},\n\n\tinDisabledFieldset = addCombinator(\n\t\tfunction( elem ) {\n\t\t\treturn elem.disabled === true && elem.nodeName.toLowerCase() === \"fieldset\";\n\t\t},\n\t\t{ dir: \"parentNode\", next: \"legend\" }\n\t);\n\n// Optimize for push.apply( _, NodeList )\ntry {\n\tpush.apply(\n\t\t( arr = slice.call( preferredDoc.childNodes ) ),\n\t\tpreferredDoc.childNodes\n\t);\n\n\t// Support: Android<4.0\n\t// Detect silently failing push.apply\n\t// eslint-disable-next-line no-unused-expressions\n\tarr[ preferredDoc.childNodes.length ].nodeType;\n} catch ( e ) {\n\tpush = { apply: arr.length ?\n\n\t\t// Leverage slice if possible\n\t\tfunction( target, els ) {\n\t\t\tpushNative.apply( target, slice.call( els ) );\n\t\t} :\n\n\t\t// Support: IE<9\n\t\t// Otherwise append directly\n\t\tfunction( target, els ) {\n\t\t\tvar j = target.length,\n\t\t\t\ti = 0;\n\n\t\t\t// Can't trust NodeList.length\n\t\t\twhile ( ( target[ j++ ] = els[ i++ ] ) ) {}\n\t\t\ttarget.length = j - 1;\n\t\t}\n\t};\n}\n\nfunction Sizzle( selector, context, results, seed ) {\n\tvar m, i, elem, nid, match, groups, newSelector,\n\t\tnewContext = context && context.ownerDocument,\n\n\t\t// nodeType defaults to 9, since context defaults to document\n\t\tnodeType = context ? context.nodeType : 9;\n\n\tresults = results || [];\n\n\t// Return early from calls with invalid selector or context\n\tif ( typeof selector !== \"string\" || !selector ||\n\t\tnodeType !== 1 && nodeType !== 9 && nodeType !== 11 ) {\n\n\t\treturn results;\n\t}\n\n\t// Try to shortcut find operations (as opposed to filters) in HTML documents\n\tif ( !seed ) {\n\t\tsetDocument( context );\n\t\tcontext = context || document;\n\n\t\tif ( documentIsHTML ) {\n\n\t\t\t// If the selector is sufficiently simple, try using a \"get*By*\" DOM method\n\t\t\t// (excepting DocumentFragment context, where the methods don't exist)\n\t\t\tif ( nodeType !== 11 && ( match = rquickExpr.exec( selector ) ) ) {\n\n\t\t\t\t// ID selector\n\t\t\t\tif ( ( m = match[ 1 ] ) ) {\n\n\t\t\t\t\t// Document context\n\t\t\t\t\tif ( nodeType === 9 ) {\n\t\t\t\t\t\tif ( ( elem = context.getElementById( m ) ) ) {\n\n\t\t\t\t\t\t\t// Support: IE, Opera, Webkit\n\t\t\t\t\t\t\t// TODO: identify versions\n\t\t\t\t\t\t\t// getElementById can match elements by name instead of ID\n\t\t\t\t\t\t\tif ( elem.id === m ) {\n\t\t\t\t\t\t\t\tresults.push( elem );\n\t\t\t\t\t\t\t\treturn results;\n\t\t\t\t\t\t\t}\n\t\t\t\t\t\t} else {\n\t\t\t\t\t\t\treturn results;\n\t\t\t\t\t\t}\n\n\t\t\t\t\t// Element context\n\t\t\t\t\t} else {\n\n\t\t\t\t\t\t// Support: IE, Opera, Webkit\n\t\t\t\t\t\t// TODO: identify versions\n\t\t\t\t\t\t// getElementById can match elements by name instead of ID\n\t\t\t\t\t\tif ( newContext && ( elem = newContext.getElementById( m ) ) &&\n\t\t\t\t\t\t\tcontains( context, elem ) &&\n\t\t\t\t\t\t\telem.id === m ) {\n\n\t\t\t\t\t\t\tresults.push( elem );\n\t\t\t\t\t\t\treturn results;\n\t\t\t\t\t\t}\n\t\t\t\t\t}\n\n\t\t\t\t// Type selector\n\t\t\t\t} else if ( match[ 2 ] ) {\n\t\t\t\t\tpush.apply( results, context.getElementsByTagName( selector ) );\n\t\t\t\t\treturn results;\n\n\t\t\t\t// Class selector\n\t\t\t\t} else if ( ( m = match[ 3 ] ) && support.getElementsByClassName &&\n\t\t\t\t\tcontext.getElementsByClassName ) {\n\n\t\t\t\t\tpush.apply( results, context.getElementsByClassName( m ) );\n\t\t\t\t\treturn results;\n\t\t\t\t}\n\t\t\t}\n\n\t\t\t// Take advantage of querySelectorAll\n\t\t\tif ( support.qsa &&\n\t\t\t\t!nonnativeSelectorCache[ selector + \" \" ] &&\n\t\t\t\t( !rbuggyQSA || !rbuggyQSA.test( selector ) ) &&\n\n\t\t\t\t// Support: IE 8 only\n\t\t\t\t// Exclude object elements\n\t\t\t\t( nodeType !== 1 || context.nodeName.toLowerCase() !== \"object\" ) ) {\n\n\t\t\t\tnewSelector = selector;\n\t\t\t\tnewContext = context;\n\n\t\t\t\t// qSA considers elements outside a scoping root when evaluating child or\n\t\t\t\t// descendant combinators, which is not what we want.\n\t\t\t\t// In such cases, we work around the behavior by prefixing every selector in the\n\t\t\t\t// list with an ID selector referencing the scope context.\n\t\t\t\t// The technique has to be used as well when a leading combinator is used\n\t\t\t\t// as such selectors are not recognized by querySelectorAll.\n\t\t\t\t// Thanks to Andrew Dupont for this technique.\n\t\t\t\tif ( nodeType === 1 &&\n\t\t\t\t\t( rdescend.test( selector ) || rcombinators.test( selector ) ) ) {\n\n\t\t\t\t\t// Expand context for sibling selectors\n\t\t\t\t\tnewContext = rsibling.test( selector ) && testContext( context.parentNode ) ||\n\t\t\t\t\t\tcontext;\n\n\t\t\t\t\t// We can use :scope instead of the ID hack if the browser\n\t\t\t\t\t// supports it & if we're not changing the context.\n\t\t\t\t\tif ( newContext !== context || !support.scope ) {\n\n\t\t\t\t\t\t// Capture the context ID, setting it first if necessary\n\t\t\t\t\t\tif ( ( nid = context.getAttribute( \"id\" ) ) ) {\n\t\t\t\t\t\t\tnid = nid.replace( rcssescape, fcssescape );\n\t\t\t\t\t\t} else {\n\t\t\t\t\t\t\tcontext.setAttribute( \"id\", ( nid = expando ) );\n\t\t\t\t\t\t}\n\t\t\t\t\t}\n\n\t\t\t\t\t// Prefix every selector in the list\n\t\t\t\t\tgroups = tokenize( selector );\n\t\t\t\t\ti = groups.length;\n\t\t\t\t\twhile ( i-- ) {\n\t\t\t\t\t\tgroups[ i ] = ( nid ? \"#\" + nid : \":scope\" ) + \" \" +\n\t\t\t\t\t\t\ttoSelector( groups[ i ] );\n\t\t\t\t\t}\n\t\t\t\t\tnewSelector = groups.join( \",\" );\n\t\t\t\t}\n\n\t\t\t\ttry {\n\t\t\t\t\tpush.apply( results,\n\t\t\t\t\t\tnewContext.querySelectorAll( newSelector )\n\t\t\t\t\t);\n\t\t\t\t\treturn results;\n\t\t\t\t} catch ( qsaError ) {\n\t\t\t\t\tnonnativeSelectorCache( selector, true );\n\t\t\t\t} finally {\n\t\t\t\t\tif ( nid === expando ) {\n\t\t\t\t\t\tcontext.removeAttribute( \"id\" );\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\t}\n\n\t// All others\n\treturn select( selector.replace( rtrim, \"$1\" ), context, results, seed );\n}\n\n/**\n * Create key-value caches of limited size\n * @returns {function(string, object)} Returns the Object data after storing it on itself with\n *\tproperty name the (space-suffixed) string and (if the cache is larger than Expr.cacheLength)\n *\tdeleting the oldest entry\n */\nfunction createCache() {\n\tvar keys = [];\n\n\tfunction cache( key, value ) {\n\n\t\t// Use (key + \" \") to avoid collision with native prototype properties (see Issue #157)\n\t\tif ( keys.push( key + \" \" ) > Expr.cacheLength ) {\n\n\t\t\t// Only keep the most recent entries\n\t\t\tdelete cache[ keys.shift() ];\n\t\t}\n\t\treturn ( cache[ key + \" \" ] = value );\n\t}\n\treturn cache;\n}\n\n/**\n * Mark a function for special use by Sizzle\n * @param {Function} fn The function to mark\n */\nfunction markFunction( fn ) {\n\tfn[ expando ] = true;\n\treturn fn;\n}\n\n/**\n * Support testing using an element\n * @param {Function} fn Passed the created element and returns a boolean result\n */\nfunction assert( fn ) {\n\tvar el = document.createElement( \"fieldset\" );\n\n\ttry {\n\t\treturn !!fn( el );\n\t} catch ( e ) {\n\t\treturn false;\n\t} finally {\n\n\t\t// Remove from its parent by default\n\t\tif ( el.parentNode ) {\n\t\t\tel.parentNode.removeChild( el );\n\t\t}\n\n\t\t// release memory in IE\n\t\tel = null;\n\t}\n}\n\n/**\n * Adds the same handler for all of the specified attrs\n * @param {String} attrs Pipe-separated list of attributes\n * @param {Function} handler The method that will be applied\n */\nfunction addHandle( attrs, handler ) {\n\tvar arr = attrs.split( \"|\" ),\n\t\ti = arr.length;\n\n\twhile ( i-- ) {\n\t\tExpr.attrHandle[ arr[ i ] ] = handler;\n\t}\n}\n\n/**\n * Checks document order of two siblings\n * @param {Element} a\n * @param {Element} b\n * @returns {Number} Returns less than 0 if a precedes b, greater than 0 if a follows b\n */\nfunction siblingCheck( a, b ) {\n\tvar cur = b && a,\n\t\tdiff = cur && a.nodeType === 1 && b.nodeType === 1 &&\n\t\t\ta.sourceIndex - b.sourceIndex;\n\n\t// Use IE sourceIndex if available on both nodes\n\tif ( diff ) {\n\t\treturn diff;\n\t}\n\n\t// Check if b follows a\n\tif ( cur ) {\n\t\twhile ( ( cur = cur.nextSibling ) ) {\n\t\t\tif ( cur === b ) {\n\t\t\t\treturn -1;\n\t\t\t}\n\t\t}\n\t}\n\n\treturn a ? 1 : -1;\n}\n\n/**\n * Returns a function to use in pseudos for input types\n * @param {String} type\n */\nfunction createInputPseudo( type ) {\n\treturn function( elem ) {\n\t\tvar name = elem.nodeName.toLowerCase();\n\t\treturn name === \"input\" && elem.type === type;\n\t};\n}\n\n/**\n * Returns a function to use in pseudos for buttons\n * @param {String} type\n */\nfunction createButtonPseudo( type ) {\n\treturn function( elem ) {\n\t\tvar name = elem.nodeName.toLowerCase();\n\t\treturn ( name === \"input\" || name === \"button\" ) && elem.type === type;\n\t};\n}\n\n/**\n * Returns a function to use in pseudos for :enabled/:disabled\n * @param {Boolean} disabled true for :disabled; false for :enabled\n */\nfunction createDisabledPseudo( disabled ) {\n\n\t// Known :disabled false positives: fieldset[disabled] > legend:nth-of-type(n+2) :can-disable\n\treturn function( elem ) {\n\n\t\t// Only certain elements can match :enabled or :disabled\n\t\t// https://html.spec.whatwg.org/multipage/scripting.html#selector-enabled\n\t\t// https://html.spec.whatwg.org/multipage/scripting.html#selector-disabled\n\t\tif ( \"form\" in elem ) {\n\n\t\t\t// Check for inherited disabledness on relevant non-disabled elements:\n\t\t\t// * listed form-associated elements in a disabled fieldset\n\t\t\t// https://html.spec.whatwg.org/multipage/forms.html#category-listed\n\t\t\t// https://html.spec.whatwg.org/multipage/forms.html#concept-fe-disabled\n\t\t\t// * option elements in a disabled optgroup\n\t\t\t// https://html.spec.whatwg.org/multipage/forms.html#concept-option-disabled\n\t\t\t// All such elements have a \"form\" property.\n\t\t\tif ( elem.parentNode && elem.disabled === false ) {\n\n\t\t\t\t// Option elements defer to a parent optgroup if present\n\t\t\t\tif ( \"label\" in elem ) {\n\t\t\t\t\tif ( \"label\" in elem.parentNode ) {\n\t\t\t\t\t\treturn elem.parentNode.disabled === disabled;\n\t\t\t\t\t} else {\n\t\t\t\t\t\treturn elem.disabled === disabled;\n\t\t\t\t\t}\n\t\t\t\t}\n\n\t\t\t\t// Support: IE 6 - 11\n\t\t\t\t// Use the isDisabled shortcut property to check for disabled fieldset ancestors\n\t\t\t\treturn elem.isDisabled === disabled ||\n\n\t\t\t\t\t// Where there is no isDisabled, check manually\n\t\t\t\t\t/* jshint -W018 */\n\t\t\t\t\telem.isDisabled !== !disabled &&\n\t\t\t\t\tinDisabledFieldset( elem ) === disabled;\n\t\t\t}\n\n\t\t\treturn elem.disabled === disabled;\n\n\t\t// Try to winnow out elements that can't be disabled before trusting the disabled property.\n\t\t// Some victims get caught in our net (label, legend, menu, track), but it shouldn't\n\t\t// even exist on them, let alone have a boolean value.\n\t\t} else if ( \"label\" in elem ) {\n\t\t\treturn elem.disabled === disabled;\n\t\t}\n\n\t\t// Remaining elements are neither :enabled nor :disabled\n\t\treturn false;\n\t};\n}\n\n/**\n * Returns a function to use in pseudos for positionals\n * @param {Function} fn\n */\nfunction createPositionalPseudo( fn ) {\n\treturn markFunction( function( argument ) {\n\t\targument = +argument;\n\t\treturn markFunction( function( seed, matches ) {\n\t\t\tvar j,\n\t\t\t\tmatchIndexes = fn( [], seed.length, argument ),\n\t\t\t\ti = matchIndexes.length;\n\n\t\t\t// Match elements found at the specified indexes\n\t\t\twhile ( i-- ) {\n\t\t\t\tif ( seed[ ( j = matchIndexes[ i ] ) ] ) {\n\t\t\t\t\tseed[ j ] = !( matches[ j ] = seed[ j ] );\n\t\t\t\t}\n\t\t\t}\n\t\t} );\n\t} );\n}\n\n/**\n * Checks a node for validity as a Sizzle context\n * @param {Element|Object=} context\n * @returns {Element|Object|Boolean} The input node if acceptable, otherwise a falsy value\n */\nfunction testContext( context ) {\n\treturn context && typeof context.getElementsByTagName !== \"undefined\" && context;\n}\n\n// Expose support vars for convenience\nsupport = Sizzle.support = {};\n\n/**\n * Detects XML nodes\n * @param {Element|Object} elem An element or a document\n * @returns {Boolean} True iff elem is a non-HTML XML node\n */\nisXML = Sizzle.isXML = function( elem ) {\n\tvar namespace = elem && elem.namespaceURI,\n\t\tdocElem = elem && ( elem.ownerDocument || elem ).documentElement;\n\n\t// Support: IE <=8\n\t// Assume HTML when documentElement doesn't yet exist, such as inside loading iframes\n\t// https://bugs.jquery.com/ticket/4833\n\treturn !rhtml.test( namespace || docElem && docElem.nodeName || \"HTML\" );\n};\n\n/**\n * Sets document-related variables once based on the current document\n * @param {Element|Object} [doc] An element or document object to use to set the document\n * @returns {Object} Returns the current document\n */\nsetDocument = Sizzle.setDocument = function( node ) {\n\tvar hasCompare, subWindow,\n\t\tdoc = node ? node.ownerDocument || node : preferredDoc;\n\n\t// Return early if doc is invalid or already selected\n\t// Support: IE 11+, Edge 17 - 18+\n\t// IE/Edge sometimes throw a \"Permission denied\" error when strict-comparing\n\t// two documents; shallow comparisons work.\n\t// eslint-disable-next-line eqeqeq\n\tif ( doc == document || doc.nodeType !== 9 || !doc.documentElement ) {\n\t\treturn document;\n\t}\n\n\t// Update global variables\n\tdocument = doc;\n\tdocElem = document.documentElement;\n\tdocumentIsHTML = !isXML( document );\n\n\t// Support: IE 9 - 11+, Edge 12 - 18+\n\t// Accessing iframe documents after unload throws \"permission denied\" errors (jQuery #13936)\n\t// Support: IE 11+, Edge 17 - 18+\n\t// IE/Edge sometimes throw a \"Permission denied\" error when strict-comparing\n\t// two documents; shallow comparisons work.\n\t// eslint-disable-next-line eqeqeq\n\tif ( preferredDoc != document &&\n\t\t( subWindow = document.defaultView ) && subWindow.top !== subWindow ) {\n\n\t\t// Support: IE 11, Edge\n\t\tif ( subWindow.addEventListener ) {\n\t\t\tsubWindow.addEventListener( \"unload\", unloadHandler, false );\n\n\t\t// Support: IE 9 - 10 only\n\t\t} else if ( subWindow.attachEvent ) {\n\t\t\tsubWindow.attachEvent( \"onunload\", unloadHandler );\n\t\t}\n\t}\n\n\t// Support: IE 8 - 11+, Edge 12 - 18+, Chrome <=16 - 25 only, Firefox <=3.6 - 31 only,\n\t// Safari 4 - 5 only, Opera <=11.6 - 12.x only\n\t// IE/Edge & older browsers don't support the :scope pseudo-class.\n\t// Support: Safari 6.0 only\n\t// Safari 6.0 supports :scope but it's an alias of :root there.\n\tsupport.scope = assert( function( el ) {\n\t\tdocElem.appendChild( el ).appendChild( document.createElement( \"div\" ) );\n\t\treturn typeof el.querySelectorAll !== \"undefined\" &&\n\t\t\t!el.querySelectorAll( \":scope fieldset div\" ).length;\n\t} );\n\n\t/* Attributes\n\t---------------------------------------------------------------------- */\n\n\t// Support: IE<8\n\t// Verify that getAttribute really returns attributes and not properties\n\t// (excepting IE8 booleans)\n\tsupport.attributes = assert( function( el ) {\n\t\tel.className = \"i\";\n\t\treturn !el.getAttribute( \"className\" );\n\t} );\n\n\t/* getElement(s)By*\n\t---------------------------------------------------------------------- */\n\n\t// Check if getElementsByTagName(\"*\") returns only elements\n\tsupport.getElementsByTagName = assert( function( el ) {\n\t\tel.appendChild( document.createComment( \"\" ) );\n\t\treturn !el.getElementsByTagName( \"*\" ).length;\n\t} );\n\n\t// Support: IE<9\n\tsupport.getElementsByClassName = rnative.test( document.getElementsByClassName );\n\n\t// Support: IE<10\n\t// Check if getElementById returns elements by name\n\t// The broken getElementById methods don't pick up programmatically-set names,\n\t// so use a roundabout getElementsByName test\n\tsupport.getById = assert( function( el ) {\n\t\tdocElem.appendChild( el ).id = expando;\n\t\treturn !document.getElementsByName || !document.getElementsByName( expando ).length;\n\t} );\n\n\t// ID filter and find\n\tif ( support.getById ) {\n\t\tExpr.filter[ \"ID\" ] = function( id ) {\n\t\t\tvar attrId = id.replace( runescape, funescape );\n\t\t\treturn function( elem ) {\n\t\t\t\treturn elem.getAttribute( \"id\" ) === attrId;\n\t\t\t};\n\t\t};\n\t\tExpr.find[ \"ID\" ] = function( id, context ) {\n\t\t\tif ( typeof context.getElementById !== \"undefined\" && documentIsHTML ) {\n\t\t\t\tvar elem = context.getElementById( id );\n\t\t\t\treturn elem ? [ elem ] : [];\n\t\t\t}\n\t\t};\n\t} else {\n\t\tExpr.filter[ \"ID\" ] = function( id ) {\n\t\t\tvar attrId = id.replace( runescape, funescape );\n\t\t\treturn function( elem ) {\n\t\t\t\tvar node = typeof elem.getAttributeNode !== \"undefined\" &&\n\t\t\t\t\telem.getAttributeNode( \"id\" );\n\t\t\t\treturn node && node.value === attrId;\n\t\t\t};\n\t\t};\n\n\t\t// Support: IE 6 - 7 only\n\t\t// getElementById is not reliable as a find shortcut\n\t\tExpr.find[ \"ID\" ] = function( id, context ) {\n\t\t\tif ( typeof context.getElementById !== \"undefined\" && documentIsHTML ) {\n\t\t\t\tvar node, i, elems,\n\t\t\t\t\telem = context.getElementById( id );\n\n\t\t\t\tif ( elem ) {\n\n\t\t\t\t\t// Verify the id attribute\n\t\t\t\t\tnode = elem.getAttributeNode( \"id\" );\n\t\t\t\t\tif ( node && node.value === id ) {\n\t\t\t\t\t\treturn [ elem ];\n\t\t\t\t\t}\n\n\t\t\t\t\t// Fall back on getElementsByName\n\t\t\t\t\telems = context.getElementsByName( id );\n\t\t\t\t\ti = 0;\n\t\t\t\t\twhile ( ( elem = elems[ i++ ] ) ) {\n\t\t\t\t\t\tnode = elem.getAttributeNode( \"id\" );\n\t\t\t\t\t\tif ( node && node.value === id ) {\n\t\t\t\t\t\t\treturn [ elem ];\n\t\t\t\t\t\t}\n\t\t\t\t\t}\n\t\t\t\t}\n\n\t\t\t\treturn [];\n\t\t\t}\n\t\t};\n\t}\n\n\t// Tag\n\tExpr.find[ \"TAG\" ] = support.getElementsByTagName ?\n\t\tfunction( tag, context ) {\n\t\t\tif ( typeof context.getElementsByTagName !== \"undefined\" ) {\n\t\t\t\treturn context.getElementsByTagName( tag );\n\n\t\t\t// DocumentFragment nodes don't have gEBTN\n\t\t\t} else if ( support.qsa ) {\n\t\t\t\treturn context.querySelectorAll( tag );\n\t\t\t}\n\t\t} :\n\n\t\tfunction( tag, context ) {\n\t\t\tvar elem,\n\t\t\t\ttmp = [],\n\t\t\t\ti = 0,\n\n\t\t\t\t// By happy coincidence, a (broken) gEBTN appears on DocumentFragment nodes too\n\t\t\t\tresults = context.getElementsByTagName( tag );\n\n\t\t\t// Filter out possible comments\n\t\t\tif ( tag === \"*\" ) {\n\t\t\t\twhile ( ( elem = results[ i++ ] ) ) {\n\t\t\t\t\tif ( elem.nodeType === 1 ) {\n\t\t\t\t\t\ttmp.push( elem );\n\t\t\t\t\t}\n\t\t\t\t}\n\n\t\t\t\treturn tmp;\n\t\t\t}\n\t\t\treturn results;\n\t\t};\n\n\t// Class\n\tExpr.find[ \"CLASS\" ] = support.getElementsByClassName && function( className, context ) {\n\t\tif ( typeof context.getElementsByClassName !== \"undefined\" && documentIsHTML ) {\n\t\t\treturn context.getElementsByClassName( className );\n\t\t}\n\t};\n\n\t/* QSA/matchesSelector\n\t---------------------------------------------------------------------- */\n\n\t// QSA and matchesSelector support\n\n\t// matchesSelector(:active) reports false when true (IE9/Opera 11.5)\n\trbuggyMatches = [];\n\n\t// qSa(:focus) reports false when true (Chrome 21)\n\t// We allow this because of a bug in IE8/9 that throws an error\n\t// whenever `document.activeElement` is accessed on an iframe\n\t// So, we allow :focus to pass through QSA all the time to avoid the IE error\n\t// See https://bugs.jquery.com/ticket/13378\n\trbuggyQSA = [];\n\n\tif ( ( support.qsa = rnative.test( document.querySelectorAll ) ) ) {\n\n\t\t// Build QSA regex\n\t\t// Regex strategy adopted from Diego Perini\n\t\tassert( function( el ) {\n\n\t\t\tvar input;\n\n\t\t\t// Select is set to empty string on purpose\n\t\t\t// This is to test IE's treatment of not explicitly\n\t\t\t// setting a boolean content attribute,\n\t\t\t// since its presence should be enough\n\t\t\t// https://bugs.jquery.com/ticket/12359\n\t\t\tdocElem.appendChild( el ).innerHTML = \"\" +\n\t\t\t\t\"\";\n\n\t\t\t// Support: IE8, Opera 11-12.16\n\t\t\t// Nothing should be selected when empty strings follow ^= or $= or *=\n\t\t\t// The test attribute must be unknown in Opera but \"safe\" for WinRT\n\t\t\t// https://msdn.microsoft.com/en-us/library/ie/hh465388.aspx#attribute_section\n\t\t\tif ( el.querySelectorAll( \"[msallowcapture^='']\" ).length ) {\n\t\t\t\trbuggyQSA.push( \"[*^$]=\" + whitespace + \"*(?:''|\\\"\\\")\" );\n\t\t\t}\n\n\t\t\t// Support: IE8\n\t\t\t// Boolean attributes and \"value\" are not treated correctly\n\t\t\tif ( !el.querySelectorAll( \"[selected]\" ).length ) {\n\t\t\t\trbuggyQSA.push( \"\\\\[\" + whitespace + \"*(?:value|\" + booleans + \")\" );\n\t\t\t}\n\n\t\t\t// Support: Chrome<29, Android<4.4, Safari<7.0+, iOS<7.0+, PhantomJS<1.9.8+\n\t\t\tif ( !el.querySelectorAll( \"[id~=\" + expando + \"-]\" ).length ) {\n\t\t\t\trbuggyQSA.push( \"~=\" );\n\t\t\t}\n\n\t\t\t// Support: IE 11+, Edge 15 - 18+\n\t\t\t// IE 11/Edge don't find elements on a `[name='']` query in some cases.\n\t\t\t// Adding a temporary attribute to the document before the selection works\n\t\t\t// around the issue.\n\t\t\t// Interestingly, IE 10 & older don't seem to have the issue.\n\t\t\tinput = document.createElement( \"input\" );\n\t\t\tinput.setAttribute( \"name\", \"\" );\n\t\t\tel.appendChild( input );\n\t\t\tif ( !el.querySelectorAll( \"[name='']\" ).length ) {\n\t\t\t\trbuggyQSA.push( \"\\\\[\" + whitespace + \"*name\" + whitespace + \"*=\" +\n\t\t\t\t\twhitespace + \"*(?:''|\\\"\\\")\" );\n\t\t\t}\n\n\t\t\t// Webkit/Opera - :checked should return selected option elements\n\t\t\t// http://www.w3.org/TR/2011/REC-css3-selectors-20110929/#checked\n\t\t\t// IE8 throws error here and will not see later tests\n\t\t\tif ( !el.querySelectorAll( \":checked\" ).length ) {\n\t\t\t\trbuggyQSA.push( \":checked\" );\n\t\t\t}\n\n\t\t\t// Support: Safari 8+, iOS 8+\n\t\t\t// https://bugs.webkit.org/show_bug.cgi?id=136851\n\t\t\t// In-page `selector#id sibling-combinator selector` fails\n\t\t\tif ( !el.querySelectorAll( \"a#\" + expando + \"+*\" ).length ) {\n\t\t\t\trbuggyQSA.push( \".#.+[+~]\" );\n\t\t\t}\n\n\t\t\t// Support: Firefox <=3.6 - 5 only\n\t\t\t// Old Firefox doesn't throw on a badly-escaped identifier.\n\t\t\tel.querySelectorAll( \"\\\\\\f\" );\n\t\t\trbuggyQSA.push( \"[\\\\r\\\\n\\\\f]\" );\n\t\t} );\n\n\t\tassert( function( el ) {\n\t\t\tel.innerHTML = \"\" +\n\t\t\t\t\"\";\n\n\t\t\t// Support: Windows 8 Native Apps\n\t\t\t// The type and name attributes are restricted during .innerHTML assignment\n\t\t\tvar input = document.createElement( \"input\" );\n\t\t\tinput.setAttribute( \"type\", \"hidden\" );\n\t\t\tel.appendChild( input ).setAttribute( \"name\", \"D\" );\n\n\t\t\t// Support: IE8\n\t\t\t// Enforce case-sensitivity of name attribute\n\t\t\tif ( el.querySelectorAll( \"[name=d]\" ).length ) {\n\t\t\t\trbuggyQSA.push( \"name\" + whitespace + \"*[*^$|!~]?=\" );\n\t\t\t}\n\n\t\t\t// FF 3.5 - :enabled/:disabled and hidden elements (hidden elements are still enabled)\n\t\t\t// IE8 throws error here and will not see later tests\n\t\t\tif ( el.querySelectorAll( \":enabled\" ).length !== 2 ) {\n\t\t\t\trbuggyQSA.push( \":enabled\", \":disabled\" );\n\t\t\t}\n\n\t\t\t// Support: IE9-11+\n\t\t\t// IE's :disabled selector does not pick up the children of disabled fieldsets\n\t\t\tdocElem.appendChild( el ).disabled = true;\n\t\t\tif ( el.querySelectorAll( \":disabled\" ).length !== 2 ) {\n\t\t\t\trbuggyQSA.push( \":enabled\", \":disabled\" );\n\t\t\t}\n\n\t\t\t// Support: Opera 10 - 11 only\n\t\t\t// Opera 10-11 does not throw on post-comma invalid pseudos\n\t\t\tel.querySelectorAll( \"*,:x\" );\n\t\t\trbuggyQSA.push( \",.*:\" );\n\t\t} );\n\t}\n\n\tif ( ( support.matchesSelector = rnative.test( ( matches = docElem.matches ||\n\t\tdocElem.webkitMatchesSelector ||\n\t\tdocElem.mozMatchesSelector ||\n\t\tdocElem.oMatchesSelector ||\n\t\tdocElem.msMatchesSelector ) ) ) ) {\n\n\t\tassert( function( el ) {\n\n\t\t\t// Check to see if it's possible to do matchesSelector\n\t\t\t// on a disconnected node (IE 9)\n\t\t\tsupport.disconnectedMatch = matches.call( el, \"*\" );\n\n\t\t\t// This should fail with an exception\n\t\t\t// Gecko does not error, returns false instead\n\t\t\tmatches.call( el, \"[s!='']:x\" );\n\t\t\trbuggyMatches.push( \"!=\", pseudos );\n\t\t} );\n\t}\n\n\trbuggyQSA = rbuggyQSA.length && new RegExp( rbuggyQSA.join( \"|\" ) );\n\trbuggyMatches = rbuggyMatches.length && new RegExp( rbuggyMatches.join( \"|\" ) );\n\n\t/* Contains\n\t---------------------------------------------------------------------- */\n\thasCompare = rnative.test( docElem.compareDocumentPosition );\n\n\t// Element contains another\n\t// Purposefully self-exclusive\n\t// As in, an element does not contain itself\n\tcontains = hasCompare || rnative.test( docElem.contains ) ?\n\t\tfunction( a, b ) {\n\t\t\tvar adown = a.nodeType === 9 ? a.documentElement : a,\n\t\t\t\tbup = b && b.parentNode;\n\t\t\treturn a === bup || !!( bup && bup.nodeType === 1 && (\n\t\t\t\tadown.contains ?\n\t\t\t\t\tadown.contains( bup ) :\n\t\t\t\t\ta.compareDocumentPosition && a.compareDocumentPosition( bup ) & 16\n\t\t\t) );\n\t\t} :\n\t\tfunction( a, b ) {\n\t\t\tif ( b ) {\n\t\t\t\twhile ( ( b = b.parentNode ) ) {\n\t\t\t\t\tif ( b === a ) {\n\t\t\t\t\t\treturn true;\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t}\n\t\t\treturn false;\n\t\t};\n\n\t/* Sorting\n\t---------------------------------------------------------------------- */\n\n\t// Document order sorting\n\tsortOrder = hasCompare ?\n\tfunction( a, b ) {\n\n\t\t// Flag for duplicate removal\n\t\tif ( a === b ) {\n\t\t\thasDuplicate = true;\n\t\t\treturn 0;\n\t\t}\n\n\t\t// Sort on method existence if only one input has compareDocumentPosition\n\t\tvar compare = !a.compareDocumentPosition - !b.compareDocumentPosition;\n\t\tif ( compare ) {\n\t\t\treturn compare;\n\t\t}\n\n\t\t// Calculate position if both inputs belong to the same document\n\t\t// Support: IE 11+, Edge 17 - 18+\n\t\t// IE/Edge sometimes throw a \"Permission denied\" error when strict-comparing\n\t\t// two documents; shallow comparisons work.\n\t\t// eslint-disable-next-line eqeqeq\n\t\tcompare = ( a.ownerDocument || a ) == ( b.ownerDocument || b ) ?\n\t\t\ta.compareDocumentPosition( b ) :\n\n\t\t\t// Otherwise we know they are disconnected\n\t\t\t1;\n\n\t\t// Disconnected nodes\n\t\tif ( compare & 1 ||\n\t\t\t( !support.sortDetached && b.compareDocumentPosition( a ) === compare ) ) {\n\n\t\t\t// Choose the first element that is related to our preferred document\n\t\t\t// Support: IE 11+, Edge 17 - 18+\n\t\t\t// IE/Edge sometimes throw a \"Permission denied\" error when strict-comparing\n\t\t\t// two documents; shallow comparisons work.\n\t\t\t// eslint-disable-next-line eqeqeq\n\t\t\tif ( a == document || a.ownerDocument == preferredDoc &&\n\t\t\t\tcontains( preferredDoc, a ) ) {\n\t\t\t\treturn -1;\n\t\t\t}\n\n\t\t\t// Support: IE 11+, Edge 17 - 18+\n\t\t\t// IE/Edge sometimes throw a \"Permission denied\" error when strict-comparing\n\t\t\t// two documents; shallow comparisons work.\n\t\t\t// eslint-disable-next-line eqeqeq\n\t\t\tif ( b == document || b.ownerDocument == preferredDoc &&\n\t\t\t\tcontains( preferredDoc, b ) ) {\n\t\t\t\treturn 1;\n\t\t\t}\n\n\t\t\t// Maintain original order\n\t\t\treturn sortInput ?\n\t\t\t\t( indexOf( sortInput, a ) - indexOf( sortInput, b ) ) :\n\t\t\t\t0;\n\t\t}\n\n\t\treturn compare & 4 ? -1 : 1;\n\t} :\n\tfunction( a, b ) {\n\n\t\t// Exit early if the nodes are identical\n\t\tif ( a === b ) {\n\t\t\thasDuplicate = true;\n\t\t\treturn 0;\n\t\t}\n\n\t\tvar cur,\n\t\t\ti = 0,\n\t\t\taup = a.parentNode,\n\t\t\tbup = b.parentNode,\n\t\t\tap = [ a ],\n\t\t\tbp = [ b ];\n\n\t\t// Parentless nodes are either documents or disconnected\n\t\tif ( !aup || !bup ) {\n\n\t\t\t// Support: IE 11+, Edge 17 - 18+\n\t\t\t// IE/Edge sometimes throw a \"Permission denied\" error when strict-comparing\n\t\t\t// two documents; shallow comparisons work.\n\t\t\t/* eslint-disable eqeqeq */\n\t\t\treturn a == document ? -1 :\n\t\t\t\tb == document ? 1 :\n\t\t\t\t/* eslint-enable eqeqeq */\n\t\t\t\taup ? -1 :\n\t\t\t\tbup ? 1 :\n\t\t\t\tsortInput ?\n\t\t\t\t( indexOf( sortInput, a ) - indexOf( sortInput, b ) ) :\n\t\t\t\t0;\n\n\t\t// If the nodes are siblings, we can do a quick check\n\t\t} else if ( aup === bup ) {\n\t\t\treturn siblingCheck( a, b );\n\t\t}\n\n\t\t// Otherwise we need full lists of their ancestors for comparison\n\t\tcur = a;\n\t\twhile ( ( cur = cur.parentNode ) ) {\n\t\t\tap.unshift( cur );\n\t\t}\n\t\tcur = b;\n\t\twhile ( ( cur = cur.parentNode ) ) {\n\t\t\tbp.unshift( cur );\n\t\t}\n\n\t\t// Walk down the tree looking for a discrepancy\n\t\twhile ( ap[ i ] === bp[ i ] ) {\n\t\t\ti++;\n\t\t}\n\n\t\treturn i ?\n\n\t\t\t// Do a sibling check if the nodes have a common ancestor\n\t\t\tsiblingCheck( ap[ i ], bp[ i ] ) :\n\n\t\t\t// Otherwise nodes in our document sort first\n\t\t\t// Support: IE 11+, Edge 17 - 18+\n\t\t\t// IE/Edge sometimes throw a \"Permission denied\" error when strict-comparing\n\t\t\t// two documents; shallow comparisons work.\n\t\t\t/* eslint-disable eqeqeq */\n\t\t\tap[ i ] == preferredDoc ? -1 :\n\t\t\tbp[ i ] == preferredDoc ? 1 :\n\t\t\t/* eslint-enable eqeqeq */\n\t\t\t0;\n\t};\n\n\treturn document;\n};\n\nSizzle.matches = function( expr, elements ) {\n\treturn Sizzle( expr, null, null, elements );\n};\n\nSizzle.matchesSelector = function( elem, expr ) {\n\tsetDocument( elem );\n\n\tif ( support.matchesSelector && documentIsHTML &&\n\t\t!nonnativeSelectorCache[ expr + \" \" ] &&\n\t\t( !rbuggyMatches || !rbuggyMatches.test( expr ) ) &&\n\t\t( !rbuggyQSA || !rbuggyQSA.test( expr ) ) ) {\n\n\t\ttry {\n\t\t\tvar ret = matches.call( elem, expr );\n\n\t\t\t// IE 9's matchesSelector returns false on disconnected nodes\n\t\t\tif ( ret || support.disconnectedMatch ||\n\n\t\t\t\t// As well, disconnected nodes are said to be in a document\n\t\t\t\t// fragment in IE 9\n\t\t\t\telem.document && elem.document.nodeType !== 11 ) {\n\t\t\t\treturn ret;\n\t\t\t}\n\t\t} catch ( e ) {\n\t\t\tnonnativeSelectorCache( expr, true );\n\t\t}\n\t}\n\n\treturn Sizzle( expr, document, null, [ elem ] ).length > 0;\n};\n\nSizzle.contains = function( context, elem ) {\n\n\t// Set document vars if needed\n\t// Support: IE 11+, Edge 17 - 18+\n\t// IE/Edge sometimes throw a \"Permission denied\" error when strict-comparing\n\t// two documents; shallow comparisons work.\n\t// eslint-disable-next-line eqeqeq\n\tif ( ( context.ownerDocument || context ) != document ) {\n\t\tsetDocument( context );\n\t}\n\treturn contains( context, elem );\n};\n\nSizzle.attr = function( elem, name ) {\n\n\t// Set document vars if needed\n\t// Support: IE 11+, Edge 17 - 18+\n\t// IE/Edge sometimes throw a \"Permission denied\" error when strict-comparing\n\t// two documents; shallow comparisons work.\n\t// eslint-disable-next-line eqeqeq\n\tif ( ( elem.ownerDocument || elem ) != document ) {\n\t\tsetDocument( elem );\n\t}\n\n\tvar fn = Expr.attrHandle[ name.toLowerCase() ],\n\n\t\t// Don't get fooled by Object.prototype properties (jQuery #13807)\n\t\tval = fn && hasOwn.call( Expr.attrHandle, name.toLowerCase() ) ?\n\t\t\tfn( elem, name, !documentIsHTML ) :\n\t\t\tundefined;\n\n\treturn val !== undefined ?\n\t\tval :\n\t\tsupport.attributes || !documentIsHTML ?\n\t\t\telem.getAttribute( name ) :\n\t\t\t( val = elem.getAttributeNode( name ) ) && val.specified ?\n\t\t\t\tval.value :\n\t\t\t\tnull;\n};\n\nSizzle.escape = function( sel ) {\n\treturn ( sel + \"\" ).replace( rcssescape, fcssescape );\n};\n\nSizzle.error = function( msg ) {\n\tthrow new Error( \"Syntax error, unrecognized expression: \" + msg );\n};\n\n/**\n * Document sorting and removing duplicates\n * @param {ArrayLike} results\n */\nSizzle.uniqueSort = function( results ) {\n\tvar elem,\n\t\tduplicates = [],\n\t\tj = 0,\n\t\ti = 0;\n\n\t// Unless we *know* we can detect duplicates, assume their presence\n\thasDuplicate = !support.detectDuplicates;\n\tsortInput = !support.sortStable && results.slice( 0 );\n\tresults.sort( sortOrder );\n\n\tif ( hasDuplicate ) {\n\t\twhile ( ( elem = results[ i++ ] ) ) {\n\t\t\tif ( elem === results[ i ] ) {\n\t\t\t\tj = duplicates.push( i );\n\t\t\t}\n\t\t}\n\t\twhile ( j-- ) {\n\t\t\tresults.splice( duplicates[ j ], 1 );\n\t\t}\n\t}\n\n\t// Clear input after sorting to release objects\n\t// See https://github.com/jquery/sizzle/pull/225\n\tsortInput = null;\n\n\treturn results;\n};\n\n/**\n * Utility function for retrieving the text value of an array of DOM nodes\n * @param {Array|Element} elem\n */\ngetText = Sizzle.getText = function( elem ) {\n\tvar node,\n\t\tret = \"\",\n\t\ti = 0,\n\t\tnodeType = elem.nodeType;\n\n\tif ( !nodeType ) {\n\n\t\t// If no nodeType, this is expected to be an array\n\t\twhile ( ( node = elem[ i++ ] ) ) {\n\n\t\t\t// Do not traverse comment nodes\n\t\t\tret += getText( node );\n\t\t}\n\t} else if ( nodeType === 1 || nodeType === 9 || nodeType === 11 ) {\n\n\t\t// Use textContent for elements\n\t\t// innerText usage removed for consistency of new lines (jQuery #11153)\n\t\tif ( typeof elem.textContent === \"string\" ) {\n\t\t\treturn elem.textContent;\n\t\t} else {\n\n\t\t\t// Traverse its children\n\t\t\tfor ( elem = elem.firstChild; elem; elem = elem.nextSibling ) {\n\t\t\t\tret += getText( elem );\n\t\t\t}\n\t\t}\n\t} else if ( nodeType === 3 || nodeType === 4 ) {\n\t\treturn elem.nodeValue;\n\t}\n\n\t// Do not include comment or processing instruction nodes\n\n\treturn ret;\n};\n\nExpr = Sizzle.selectors = {\n\n\t// Can be adjusted by the user\n\tcacheLength: 50,\n\n\tcreatePseudo: markFunction,\n\n\tmatch: matchExpr,\n\n\tattrHandle: {},\n\n\tfind: {},\n\n\trelative: {\n\t\t\">\": { dir: \"parentNode\", first: true },\n\t\t\" \": { dir: \"parentNode\" },\n\t\t\"+\": { dir: \"previousSibling\", first: true },\n\t\t\"~\": { dir: \"previousSibling\" }\n\t},\n\n\tpreFilter: {\n\t\t\"ATTR\": function( match ) {\n\t\t\tmatch[ 1 ] = match[ 1 ].replace( runescape, funescape );\n\n\t\t\t// Move the given value to match[3] whether quoted or unquoted\n\t\t\tmatch[ 3 ] = ( match[ 3 ] || match[ 4 ] ||\n\t\t\t\tmatch[ 5 ] || \"\" ).replace( runescape, funescape );\n\n\t\t\tif ( match[ 2 ] === \"~=\" ) {\n\t\t\t\tmatch[ 3 ] = \" \" + match[ 3 ] + \" \";\n\t\t\t}\n\n\t\t\treturn match.slice( 0, 4 );\n\t\t},\n\n\t\t\"CHILD\": function( match ) {\n\n\t\t\t/* matches from matchExpr[\"CHILD\"]\n\t\t\t\t1 type (only|nth|...)\n\t\t\t\t2 what (child|of-type)\n\t\t\t\t3 argument (even|odd|\\d*|\\d*n([+-]\\d+)?|...)\n\t\t\t\t4 xn-component of xn+y argument ([+-]?\\d*n|)\n\t\t\t\t5 sign of xn-component\n\t\t\t\t6 x of xn-component\n\t\t\t\t7 sign of y-component\n\t\t\t\t8 y of y-component\n\t\t\t*/\n\t\t\tmatch[ 1 ] = match[ 1 ].toLowerCase();\n\n\t\t\tif ( match[ 1 ].slice( 0, 3 ) === \"nth\" ) {\n\n\t\t\t\t// nth-* requires argument\n\t\t\t\tif ( !match[ 3 ] ) {\n\t\t\t\t\tSizzle.error( match[ 0 ] );\n\t\t\t\t}\n\n\t\t\t\t// numeric x and y parameters for Expr.filter.CHILD\n\t\t\t\t// remember that false/true cast respectively to 0/1\n\t\t\t\tmatch[ 4 ] = +( match[ 4 ] ?\n\t\t\t\t\tmatch[ 5 ] + ( match[ 6 ] || 1 ) :\n\t\t\t\t\t2 * ( match[ 3 ] === \"even\" || match[ 3 ] === \"odd\" ) );\n\t\t\t\tmatch[ 5 ] = +( ( match[ 7 ] + match[ 8 ] ) || match[ 3 ] === \"odd\" );\n\n\t\t\t\t// other types prohibit arguments\n\t\t\t} else if ( match[ 3 ] ) {\n\t\t\t\tSizzle.error( match[ 0 ] );\n\t\t\t}\n\n\t\t\treturn match;\n\t\t},\n\n\t\t\"PSEUDO\": function( match ) {\n\t\t\tvar excess,\n\t\t\t\tunquoted = !match[ 6 ] && match[ 2 ];\n\n\t\t\tif ( matchExpr[ \"CHILD\" ].test( match[ 0 ] ) ) {\n\t\t\t\treturn null;\n\t\t\t}\n\n\t\t\t// Accept quoted arguments as-is\n\t\t\tif ( match[ 3 ] ) {\n\t\t\t\tmatch[ 2 ] = match[ 4 ] || match[ 5 ] || \"\";\n\n\t\t\t// Strip excess characters from unquoted arguments\n\t\t\t} else if ( unquoted && rpseudo.test( unquoted ) &&\n\n\t\t\t\t// Get excess from tokenize (recursively)\n\t\t\t\t( excess = tokenize( unquoted, true ) ) &&\n\n\t\t\t\t// advance to the next closing parenthesis\n\t\t\t\t( excess = unquoted.indexOf( \")\", unquoted.length - excess ) - unquoted.length ) ) {\n\n\t\t\t\t// excess is a negative index\n\t\t\t\tmatch[ 0 ] = match[ 0 ].slice( 0, excess );\n\t\t\t\tmatch[ 2 ] = unquoted.slice( 0, excess );\n\t\t\t}\n\n\t\t\t// Return only captures needed by the pseudo filter method (type and argument)\n\t\t\treturn match.slice( 0, 3 );\n\t\t}\n\t},\n\n\tfilter: {\n\n\t\t\"TAG\": function( nodeNameSelector ) {\n\t\t\tvar nodeName = nodeNameSelector.replace( runescape, funescape ).toLowerCase();\n\t\t\treturn nodeNameSelector === \"*\" ?\n\t\t\t\tfunction() {\n\t\t\t\t\treturn true;\n\t\t\t\t} :\n\t\t\t\tfunction( elem ) {\n\t\t\t\t\treturn elem.nodeName && elem.nodeName.toLowerCase() === nodeName;\n\t\t\t\t};\n\t\t},\n\n\t\t\"CLASS\": function( className ) {\n\t\t\tvar pattern = classCache[ className + \" \" ];\n\n\t\t\treturn pattern ||\n\t\t\t\t( pattern = new RegExp( \"(^|\" + whitespace +\n\t\t\t\t\t\")\" + className + \"(\" + whitespace + \"|$)\" ) ) && classCache(\n\t\t\t\t\t\tclassName, function( elem ) {\n\t\t\t\t\t\t\treturn pattern.test(\n\t\t\t\t\t\t\t\ttypeof elem.className === \"string\" && elem.className ||\n\t\t\t\t\t\t\t\ttypeof elem.getAttribute !== \"undefined\" &&\n\t\t\t\t\t\t\t\t\telem.getAttribute( \"class\" ) ||\n\t\t\t\t\t\t\t\t\"\"\n\t\t\t\t\t\t\t);\n\t\t\t\t} );\n\t\t},\n\n\t\t\"ATTR\": function( name, operator, check ) {\n\t\t\treturn function( elem ) {\n\t\t\t\tvar result = Sizzle.attr( elem, name );\n\n\t\t\t\tif ( result == null ) {\n\t\t\t\t\treturn operator === \"!=\";\n\t\t\t\t}\n\t\t\t\tif ( !operator ) {\n\t\t\t\t\treturn true;\n\t\t\t\t}\n\n\t\t\t\tresult += \"\";\n\n\t\t\t\t/* eslint-disable max-len */\n\n\t\t\t\treturn operator === \"=\" ? result === check :\n\t\t\t\t\toperator === \"!=\" ? result !== check :\n\t\t\t\t\toperator === \"^=\" ? check && result.indexOf( check ) === 0 :\n\t\t\t\t\toperator === \"*=\" ? check && result.indexOf( check ) > -1 :\n\t\t\t\t\toperator === \"$=\" ? check && result.slice( -check.length ) === check :\n\t\t\t\t\toperator === \"~=\" ? ( \" \" + result.replace( rwhitespace, \" \" ) + \" \" ).indexOf( check ) > -1 :\n\t\t\t\t\toperator === \"|=\" ? result === check || result.slice( 0, check.length + 1 ) === check + \"-\" :\n\t\t\t\t\tfalse;\n\t\t\t\t/* eslint-enable max-len */\n\n\t\t\t};\n\t\t},\n\n\t\t\"CHILD\": function( type, what, _argument, first, last ) {\n\t\t\tvar simple = type.slice( 0, 3 ) !== \"nth\",\n\t\t\t\tforward = type.slice( -4 ) !== \"last\",\n\t\t\t\tofType = what === \"of-type\";\n\n\t\t\treturn first === 1 && last === 0 ?\n\n\t\t\t\t// Shortcut for :nth-*(n)\n\t\t\t\tfunction( elem ) {\n\t\t\t\t\treturn !!elem.parentNode;\n\t\t\t\t} :\n\n\t\t\t\tfunction( elem, _context, xml ) {\n\t\t\t\t\tvar cache, uniqueCache, outerCache, node, nodeIndex, start,\n\t\t\t\t\t\tdir = simple !== forward ? \"nextSibling\" : \"previousSibling\",\n\t\t\t\t\t\tparent = elem.parentNode,\n\t\t\t\t\t\tname = ofType && elem.nodeName.toLowerCase(),\n\t\t\t\t\t\tuseCache = !xml && !ofType,\n\t\t\t\t\t\tdiff = false;\n\n\t\t\t\t\tif ( parent ) {\n\n\t\t\t\t\t\t// :(first|last|only)-(child|of-type)\n\t\t\t\t\t\tif ( simple ) {\n\t\t\t\t\t\t\twhile ( dir ) {\n\t\t\t\t\t\t\t\tnode = elem;\n\t\t\t\t\t\t\t\twhile ( ( node = node[ dir ] ) ) {\n\t\t\t\t\t\t\t\t\tif ( ofType ?\n\t\t\t\t\t\t\t\t\t\tnode.nodeName.toLowerCase() === name :\n\t\t\t\t\t\t\t\t\t\tnode.nodeType === 1 ) {\n\n\t\t\t\t\t\t\t\t\t\treturn false;\n\t\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t\t}\n\n\t\t\t\t\t\t\t\t// Reverse direction for :only-* (if we haven't yet done so)\n\t\t\t\t\t\t\t\tstart = dir = type === \"only\" && !start && \"nextSibling\";\n\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\treturn true;\n\t\t\t\t\t\t}\n\n\t\t\t\t\t\tstart = [ forward ? parent.firstChild : parent.lastChild ];\n\n\t\t\t\t\t\t// non-xml :nth-child(...) stores cache data on `parent`\n\t\t\t\t\t\tif ( forward && useCache ) {\n\n\t\t\t\t\t\t\t// Seek `elem` from a previously-cached index\n\n\t\t\t\t\t\t\t// ...in a gzip-friendly way\n\t\t\t\t\t\t\tnode = parent;\n\t\t\t\t\t\t\touterCache = node[ expando ] || ( node[ expando ] = {} );\n\n\t\t\t\t\t\t\t// Support: IE <9 only\n\t\t\t\t\t\t\t// Defend against cloned attroperties (jQuery gh-1709)\n\t\t\t\t\t\t\tuniqueCache = outerCache[ node.uniqueID ] ||\n\t\t\t\t\t\t\t\t( outerCache[ node.uniqueID ] = {} );\n\n\t\t\t\t\t\t\tcache = uniqueCache[ type ] || [];\n\t\t\t\t\t\t\tnodeIndex = cache[ 0 ] === dirruns && cache[ 1 ];\n\t\t\t\t\t\t\tdiff = nodeIndex && cache[ 2 ];\n\t\t\t\t\t\t\tnode = nodeIndex && parent.childNodes[ nodeIndex ];\n\n\t\t\t\t\t\t\twhile ( ( node = ++nodeIndex && node && node[ dir ] ||\n\n\t\t\t\t\t\t\t\t// Fallback to seeking `elem` from the start\n\t\t\t\t\t\t\t\t( diff = nodeIndex = 0 ) || start.pop() ) ) {\n\n\t\t\t\t\t\t\t\t// When found, cache indexes on `parent` and break\n\t\t\t\t\t\t\t\tif ( node.nodeType === 1 && ++diff && node === elem ) {\n\t\t\t\t\t\t\t\t\tuniqueCache[ type ] = [ dirruns, nodeIndex, diff ];\n\t\t\t\t\t\t\t\t\tbreak;\n\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t}\n\n\t\t\t\t\t\t} else {\n\n\t\t\t\t\t\t\t// Use previously-cached element index if available\n\t\t\t\t\t\t\tif ( useCache ) {\n\n\t\t\t\t\t\t\t\t// ...in a gzip-friendly way\n\t\t\t\t\t\t\t\tnode = elem;\n\t\t\t\t\t\t\t\touterCache = node[ expando ] || ( node[ expando ] = {} );\n\n\t\t\t\t\t\t\t\t// Support: IE <9 only\n\t\t\t\t\t\t\t\t// Defend against cloned attroperties (jQuery gh-1709)\n\t\t\t\t\t\t\t\tuniqueCache = outerCache[ node.uniqueID ] ||\n\t\t\t\t\t\t\t\t\t( outerCache[ node.uniqueID ] = {} );\n\n\t\t\t\t\t\t\t\tcache = uniqueCache[ type ] || [];\n\t\t\t\t\t\t\t\tnodeIndex = cache[ 0 ] === dirruns && cache[ 1 ];\n\t\t\t\t\t\t\t\tdiff = nodeIndex;\n\t\t\t\t\t\t\t}\n\n\t\t\t\t\t\t\t// xml :nth-child(...)\n\t\t\t\t\t\t\t// or :nth-last-child(...) or :nth(-last)?-of-type(...)\n\t\t\t\t\t\t\tif ( diff === false ) {\n\n\t\t\t\t\t\t\t\t// Use the same loop as above to seek `elem` from the start\n\t\t\t\t\t\t\t\twhile ( ( node = ++nodeIndex && node && node[ dir ] ||\n\t\t\t\t\t\t\t\t\t( diff = nodeIndex = 0 ) || start.pop() ) ) {\n\n\t\t\t\t\t\t\t\t\tif ( ( ofType ?\n\t\t\t\t\t\t\t\t\t\tnode.nodeName.toLowerCase() === name :\n\t\t\t\t\t\t\t\t\t\tnode.nodeType === 1 ) &&\n\t\t\t\t\t\t\t\t\t\t++diff ) {\n\n\t\t\t\t\t\t\t\t\t\t// Cache the index of each encountered element\n\t\t\t\t\t\t\t\t\t\tif ( useCache ) {\n\t\t\t\t\t\t\t\t\t\t\touterCache = node[ expando ] ||\n\t\t\t\t\t\t\t\t\t\t\t\t( node[ expando ] = {} );\n\n\t\t\t\t\t\t\t\t\t\t\t// Support: IE <9 only\n\t\t\t\t\t\t\t\t\t\t\t// Defend against cloned attroperties (jQuery gh-1709)\n\t\t\t\t\t\t\t\t\t\t\tuniqueCache = outerCache[ node.uniqueID ] ||\n\t\t\t\t\t\t\t\t\t\t\t\t( outerCache[ node.uniqueID ] = {} );\n\n\t\t\t\t\t\t\t\t\t\t\tuniqueCache[ type ] = [ dirruns, diff ];\n\t\t\t\t\t\t\t\t\t\t}\n\n\t\t\t\t\t\t\t\t\t\tif ( node === elem ) {\n\t\t\t\t\t\t\t\t\t\t\tbreak;\n\t\t\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t}\n\t\t\t\t\t\t}\n\n\t\t\t\t\t\t// Incorporate the offset, then check against cycle size\n\t\t\t\t\t\tdiff -= last;\n\t\t\t\t\t\treturn diff === first || ( diff % first === 0 && diff / first >= 0 );\n\t\t\t\t\t}\n\t\t\t\t};\n\t\t},\n\n\t\t\"PSEUDO\": function( pseudo, argument ) {\n\n\t\t\t// pseudo-class names are case-insensitive\n\t\t\t// http://www.w3.org/TR/selectors/#pseudo-classes\n\t\t\t// Prioritize by case sensitivity in case custom pseudos are added with uppercase letters\n\t\t\t// Remember that setFilters inherits from pseudos\n\t\t\tvar args,\n\t\t\t\tfn = Expr.pseudos[ pseudo ] || Expr.setFilters[ pseudo.toLowerCase() ] ||\n\t\t\t\t\tSizzle.error( \"unsupported pseudo: \" + pseudo );\n\n\t\t\t// The user may use createPseudo to indicate that\n\t\t\t// arguments are needed to create the filter function\n\t\t\t// just as Sizzle does\n\t\t\tif ( fn[ expando ] ) {\n\t\t\t\treturn fn( argument );\n\t\t\t}\n\n\t\t\t// But maintain support for old signatures\n\t\t\tif ( fn.length > 1 ) {\n\t\t\t\targs = [ pseudo, pseudo, \"\", argument ];\n\t\t\t\treturn Expr.setFilters.hasOwnProperty( pseudo.toLowerCase() ) ?\n\t\t\t\t\tmarkFunction( function( seed, matches ) {\n\t\t\t\t\t\tvar idx,\n\t\t\t\t\t\t\tmatched = fn( seed, argument ),\n\t\t\t\t\t\t\ti = matched.length;\n\t\t\t\t\t\twhile ( i-- ) {\n\t\t\t\t\t\t\tidx = indexOf( seed, matched[ i ] );\n\t\t\t\t\t\t\tseed[ idx ] = !( matches[ idx ] = matched[ i ] );\n\t\t\t\t\t\t}\n\t\t\t\t\t} ) :\n\t\t\t\t\tfunction( elem ) {\n\t\t\t\t\t\treturn fn( elem, 0, args );\n\t\t\t\t\t};\n\t\t\t}\n\n\t\t\treturn fn;\n\t\t}\n\t},\n\n\tpseudos: {\n\n\t\t// Potentially complex pseudos\n\t\t\"not\": markFunction( function( selector ) {\n\n\t\t\t// Trim the selector passed to compile\n\t\t\t// to avoid treating leading and trailing\n\t\t\t// spaces as combinators\n\t\t\tvar input = [],\n\t\t\t\tresults = [],\n\t\t\t\tmatcher = compile( selector.replace( rtrim, \"$1\" ) );\n\n\t\t\treturn matcher[ expando ] ?\n\t\t\t\tmarkFunction( function( seed, matches, _context, xml ) {\n\t\t\t\t\tvar elem,\n\t\t\t\t\t\tunmatched = matcher( seed, null, xml, [] ),\n\t\t\t\t\t\ti = seed.length;\n\n\t\t\t\t\t// Match elements unmatched by `matcher`\n\t\t\t\t\twhile ( i-- ) {\n\t\t\t\t\t\tif ( ( elem = unmatched[ i ] ) ) {\n\t\t\t\t\t\t\tseed[ i ] = !( matches[ i ] = elem );\n\t\t\t\t\t\t}\n\t\t\t\t\t}\n\t\t\t\t} ) :\n\t\t\t\tfunction( elem, _context, xml ) {\n\t\t\t\t\tinput[ 0 ] = elem;\n\t\t\t\t\tmatcher( input, null, xml, results );\n\n\t\t\t\t\t// Don't keep the element (issue #299)\n\t\t\t\t\tinput[ 0 ] = null;\n\t\t\t\t\treturn !results.pop();\n\t\t\t\t};\n\t\t} ),\n\n\t\t\"has\": markFunction( function( selector ) {\n\t\t\treturn function( elem ) {\n\t\t\t\treturn Sizzle( selector, elem ).length > 0;\n\t\t\t};\n\t\t} ),\n\n\t\t\"contains\": markFunction( function( text ) {\n\t\t\ttext = text.replace( runescape, funescape );\n\t\t\treturn function( elem ) {\n\t\t\t\treturn ( elem.textContent || getText( elem ) ).indexOf( text ) > -1;\n\t\t\t};\n\t\t} ),\n\n\t\t// \"Whether an element is represented by a :lang() selector\n\t\t// is based solely on the element's language value\n\t\t// being equal to the identifier C,\n\t\t// or beginning with the identifier C immediately followed by \"-\".\n\t\t// The matching of C against the element's language value is performed case-insensitively.\n\t\t// The identifier C does not have to be a valid language name.\"\n\t\t// http://www.w3.org/TR/selectors/#lang-pseudo\n\t\t\"lang\": markFunction( function( lang ) {\n\n\t\t\t// lang value must be a valid identifier\n\t\t\tif ( !ridentifier.test( lang || \"\" ) ) {\n\t\t\t\tSizzle.error( \"unsupported lang: \" + lang );\n\t\t\t}\n\t\t\tlang = lang.replace( runescape, funescape ).toLowerCase();\n\t\t\treturn function( elem ) {\n\t\t\t\tvar elemLang;\n\t\t\t\tdo {\n\t\t\t\t\tif ( ( elemLang = documentIsHTML ?\n\t\t\t\t\t\telem.lang :\n\t\t\t\t\t\telem.getAttribute( \"xml:lang\" ) || elem.getAttribute( \"lang\" ) ) ) {\n\n\t\t\t\t\t\telemLang = elemLang.toLowerCase();\n\t\t\t\t\t\treturn elemLang === lang || elemLang.indexOf( lang + \"-\" ) === 0;\n\t\t\t\t\t}\n\t\t\t\t} while ( ( elem = elem.parentNode ) && elem.nodeType === 1 );\n\t\t\t\treturn false;\n\t\t\t};\n\t\t} ),\n\n\t\t// Miscellaneous\n\t\t\"target\": function( elem ) {\n\t\t\tvar hash = window.location && window.location.hash;\n\t\t\treturn hash && hash.slice( 1 ) === elem.id;\n\t\t},\n\n\t\t\"root\": function( elem ) {\n\t\t\treturn elem === docElem;\n\t\t},\n\n\t\t\"focus\": function( elem ) {\n\t\t\treturn elem === document.activeElement &&\n\t\t\t\t( !document.hasFocus || document.hasFocus() ) &&\n\t\t\t\t!!( elem.type || elem.href || ~elem.tabIndex );\n\t\t},\n\n\t\t// Boolean properties\n\t\t\"enabled\": createDisabledPseudo( false ),\n\t\t\"disabled\": createDisabledPseudo( true ),\n\n\t\t\"checked\": function( elem ) {\n\n\t\t\t// In CSS3, :checked should return both checked and selected elements\n\t\t\t// http://www.w3.org/TR/2011/REC-css3-selectors-20110929/#checked\n\t\t\tvar nodeName = elem.nodeName.toLowerCase();\n\t\t\treturn ( nodeName === \"input\" && !!elem.checked ) ||\n\t\t\t\t( nodeName === \"option\" && !!elem.selected );\n\t\t},\n\n\t\t\"selected\": function( elem ) {\n\n\t\t\t// Accessing this property makes selected-by-default\n\t\t\t// options in Safari work properly\n\t\t\tif ( elem.parentNode ) {\n\t\t\t\t// eslint-disable-next-line no-unused-expressions\n\t\t\t\telem.parentNode.selectedIndex;\n\t\t\t}\n\n\t\t\treturn elem.selected === true;\n\t\t},\n\n\t\t// Contents\n\t\t\"empty\": function( elem ) {\n\n\t\t\t// http://www.w3.org/TR/selectors/#empty-pseudo\n\t\t\t// :empty is negated by element (1) or content nodes (text: 3; cdata: 4; entity ref: 5),\n\t\t\t// but not by others (comment: 8; processing instruction: 7; etc.)\n\t\t\t// nodeType < 6 works because attributes (2) do not appear as children\n\t\t\tfor ( elem = elem.firstChild; elem; elem = elem.nextSibling ) {\n\t\t\t\tif ( elem.nodeType < 6 ) {\n\t\t\t\t\treturn false;\n\t\t\t\t}\n\t\t\t}\n\t\t\treturn true;\n\t\t},\n\n\t\t\"parent\": function( elem ) {\n\t\t\treturn !Expr.pseudos[ \"empty\" ]( elem );\n\t\t},\n\n\t\t// Element/input types\n\t\t\"header\": function( elem ) {\n\t\t\treturn rheader.test( elem.nodeName );\n\t\t},\n\n\t\t\"input\": function( elem ) {\n\t\t\treturn rinputs.test( elem.nodeName );\n\t\t},\n\n\t\t\"button\": function( elem ) {\n\t\t\tvar name = elem.nodeName.toLowerCase();\n\t\t\treturn name === \"input\" && elem.type === \"button\" || name === \"button\";\n\t\t},\n\n\t\t\"text\": function( elem ) {\n\t\t\tvar attr;\n\t\t\treturn elem.nodeName.toLowerCase() === \"input\" &&\n\t\t\t\telem.type === \"text\" &&\n\n\t\t\t\t// Support: IE<8\n\t\t\t\t// New HTML5 attribute values (e.g., \"search\") appear with elem.type === \"text\"\n\t\t\t\t( ( attr = elem.getAttribute( \"type\" ) ) == null ||\n\t\t\t\t\tattr.toLowerCase() === \"text\" );\n\t\t},\n\n\t\t// Position-in-collection\n\t\t\"first\": createPositionalPseudo( function() {\n\t\t\treturn [ 0 ];\n\t\t} ),\n\n\t\t\"last\": createPositionalPseudo( function( _matchIndexes, length ) {\n\t\t\treturn [ length - 1 ];\n\t\t} ),\n\n\t\t\"eq\": createPositionalPseudo( function( _matchIndexes, length, argument ) {\n\t\t\treturn [ argument < 0 ? argument + length : argument ];\n\t\t} ),\n\n\t\t\"even\": createPositionalPseudo( function( matchIndexes, length ) {\n\t\t\tvar i = 0;\n\t\t\tfor ( ; i < length; i += 2 ) {\n\t\t\t\tmatchIndexes.push( i );\n\t\t\t}\n\t\t\treturn matchIndexes;\n\t\t} ),\n\n\t\t\"odd\": createPositionalPseudo( function( matchIndexes, length ) {\n\t\t\tvar i = 1;\n\t\t\tfor ( ; i < length; i += 2 ) {\n\t\t\t\tmatchIndexes.push( i );\n\t\t\t}\n\t\t\treturn matchIndexes;\n\t\t} ),\n\n\t\t\"lt\": createPositionalPseudo( function( matchIndexes, length, argument ) {\n\t\t\tvar i = argument < 0 ?\n\t\t\t\targument + length :\n\t\t\t\targument > length ?\n\t\t\t\t\tlength :\n\t\t\t\t\targument;\n\t\t\tfor ( ; --i >= 0; ) {\n\t\t\t\tmatchIndexes.push( i );\n\t\t\t}\n\t\t\treturn matchIndexes;\n\t\t} ),\n\n\t\t\"gt\": createPositionalPseudo( function( matchIndexes, length, argument ) {\n\t\t\tvar i = argument < 0 ? argument + length : argument;\n\t\t\tfor ( ; ++i < length; ) {\n\t\t\t\tmatchIndexes.push( i );\n\t\t\t}\n\t\t\treturn matchIndexes;\n\t\t} )\n\t}\n};\n\nExpr.pseudos[ \"nth\" ] = Expr.pseudos[ \"eq\" ];\n\n// Add button/input type pseudos\nfor ( i in { radio: true, checkbox: true, file: true, password: true, image: true } ) {\n\tExpr.pseudos[ i ] = createInputPseudo( i );\n}\nfor ( i in { submit: true, reset: true } ) {\n\tExpr.pseudos[ i ] = createButtonPseudo( i );\n}\n\n// Easy API for creating new setFilters\nfunction setFilters() {}\nsetFilters.prototype = Expr.filters = Expr.pseudos;\nExpr.setFilters = new setFilters();\n\ntokenize = Sizzle.tokenize = function( selector, parseOnly ) {\n\tvar matched, match, tokens, type,\n\t\tsoFar, groups, preFilters,\n\t\tcached = tokenCache[ selector + \" \" ];\n\n\tif ( cached ) {\n\t\treturn parseOnly ? 0 : cached.slice( 0 );\n\t}\n\n\tsoFar = selector;\n\tgroups = [];\n\tpreFilters = Expr.preFilter;\n\n\twhile ( soFar ) {\n\n\t\t// Comma and first run\n\t\tif ( !matched || ( match = rcomma.exec( soFar ) ) ) {\n\t\t\tif ( match ) {\n\n\t\t\t\t// Don't consume trailing commas as valid\n\t\t\t\tsoFar = soFar.slice( match[ 0 ].length ) || soFar;\n\t\t\t}\n\t\t\tgroups.push( ( tokens = [] ) );\n\t\t}\n\n\t\tmatched = false;\n\n\t\t// Combinators\n\t\tif ( ( match = rcombinators.exec( soFar ) ) ) {\n\t\t\tmatched = match.shift();\n\t\t\ttokens.push( {\n\t\t\t\tvalue: matched,\n\n\t\t\t\t// Cast descendant combinators to space\n\t\t\t\ttype: match[ 0 ].replace( rtrim, \" \" )\n\t\t\t} );\n\t\t\tsoFar = soFar.slice( matched.length );\n\t\t}\n\n\t\t// Filters\n\t\tfor ( type in Expr.filter ) {\n\t\t\tif ( ( match = matchExpr[ type ].exec( soFar ) ) && ( !preFilters[ type ] ||\n\t\t\t\t( match = preFilters[ type ]( match ) ) ) ) {\n\t\t\t\tmatched = match.shift();\n\t\t\t\ttokens.push( {\n\t\t\t\t\tvalue: matched,\n\t\t\t\t\ttype: type,\n\t\t\t\t\tmatches: match\n\t\t\t\t} );\n\t\t\t\tsoFar = soFar.slice( matched.length );\n\t\t\t}\n\t\t}\n\n\t\tif ( !matched ) {\n\t\t\tbreak;\n\t\t}\n\t}\n\n\t// Return the length of the invalid excess\n\t// if we're just parsing\n\t// Otherwise, throw an error or return tokens\n\treturn parseOnly ?\n\t\tsoFar.length :\n\t\tsoFar ?\n\t\t\tSizzle.error( selector ) :\n\n\t\t\t// Cache the tokens\n\t\t\ttokenCache( selector, groups ).slice( 0 );\n};\n\nfunction toSelector( tokens ) {\n\tvar i = 0,\n\t\tlen = tokens.length,\n\t\tselector = \"\";\n\tfor ( ; i < len; i++ ) {\n\t\tselector += tokens[ i ].value;\n\t}\n\treturn selector;\n}\n\nfunction addCombinator( matcher, combinator, base ) {\n\tvar dir = combinator.dir,\n\t\tskip = combinator.next,\n\t\tkey = skip || dir,\n\t\tcheckNonElements = base && key === \"parentNode\",\n\t\tdoneName = done++;\n\n\treturn combinator.first ?\n\n\t\t// Check against closest ancestor/preceding element\n\t\tfunction( elem, context, xml ) {\n\t\t\twhile ( ( elem = elem[ dir ] ) ) {\n\t\t\t\tif ( elem.nodeType === 1 || checkNonElements ) {\n\t\t\t\t\treturn matcher( elem, context, xml );\n\t\t\t\t}\n\t\t\t}\n\t\t\treturn false;\n\t\t} :\n\n\t\t// Check against all ancestor/preceding elements\n\t\tfunction( elem, context, xml ) {\n\t\t\tvar oldCache, uniqueCache, outerCache,\n\t\t\t\tnewCache = [ dirruns, doneName ];\n\n\t\t\t// We can't set arbitrary data on XML nodes, so they don't benefit from combinator caching\n\t\t\tif ( xml ) {\n\t\t\t\twhile ( ( elem = elem[ dir ] ) ) {\n\t\t\t\t\tif ( elem.nodeType === 1 || checkNonElements ) {\n\t\t\t\t\t\tif ( matcher( elem, context, xml ) ) {\n\t\t\t\t\t\t\treturn true;\n\t\t\t\t\t\t}\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t} else {\n\t\t\t\twhile ( ( elem = elem[ dir ] ) ) {\n\t\t\t\t\tif ( elem.nodeType === 1 || checkNonElements ) {\n\t\t\t\t\t\touterCache = elem[ expando ] || ( elem[ expando ] = {} );\n\n\t\t\t\t\t\t// Support: IE <9 only\n\t\t\t\t\t\t// Defend against cloned attroperties (jQuery gh-1709)\n\t\t\t\t\t\tuniqueCache = outerCache[ elem.uniqueID ] ||\n\t\t\t\t\t\t\t( outerCache[ elem.uniqueID ] = {} );\n\n\t\t\t\t\t\tif ( skip && skip === elem.nodeName.toLowerCase() ) {\n\t\t\t\t\t\t\telem = elem[ dir ] || elem;\n\t\t\t\t\t\t} else if ( ( oldCache = uniqueCache[ key ] ) &&\n\t\t\t\t\t\t\toldCache[ 0 ] === dirruns && oldCache[ 1 ] === doneName ) {\n\n\t\t\t\t\t\t\t// Assign to newCache so results back-propagate to previous elements\n\t\t\t\t\t\t\treturn ( newCache[ 2 ] = oldCache[ 2 ] );\n\t\t\t\t\t\t} else {\n\n\t\t\t\t\t\t\t// Reuse newcache so results back-propagate to previous elements\n\t\t\t\t\t\t\tuniqueCache[ key ] = newCache;\n\n\t\t\t\t\t\t\t// A match means we're done; a fail means we have to keep checking\n\t\t\t\t\t\t\tif ( ( newCache[ 2 ] = matcher( elem, context, xml ) ) ) {\n\t\t\t\t\t\t\t\treturn true;\n\t\t\t\t\t\t\t}\n\t\t\t\t\t\t}\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t}\n\t\t\treturn false;\n\t\t};\n}\n\nfunction elementMatcher( matchers ) {\n\treturn matchers.length > 1 ?\n\t\tfunction( elem, context, xml ) {\n\t\t\tvar i = matchers.length;\n\t\t\twhile ( i-- ) {\n\t\t\t\tif ( !matchers[ i ]( elem, context, xml ) ) {\n\t\t\t\t\treturn false;\n\t\t\t\t}\n\t\t\t}\n\t\t\treturn true;\n\t\t} :\n\t\tmatchers[ 0 ];\n}\n\nfunction multipleContexts( selector, contexts, results ) {\n\tvar i = 0,\n\t\tlen = contexts.length;\n\tfor ( ; i < len; i++ ) {\n\t\tSizzle( selector, contexts[ i ], results );\n\t}\n\treturn results;\n}\n\nfunction condense( unmatched, map, filter, context, xml ) {\n\tvar elem,\n\t\tnewUnmatched = [],\n\t\ti = 0,\n\t\tlen = unmatched.length,\n\t\tmapped = map != null;\n\n\tfor ( ; i < len; i++ ) {\n\t\tif ( ( elem = unmatched[ i ] ) ) {\n\t\t\tif ( !filter || filter( elem, context, xml ) ) {\n\t\t\t\tnewUnmatched.push( elem );\n\t\t\t\tif ( mapped ) {\n\t\t\t\t\tmap.push( i );\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\t}\n\n\treturn newUnmatched;\n}\n\nfunction setMatcher( preFilter, selector, matcher, postFilter, postFinder, postSelector ) {\n\tif ( postFilter && !postFilter[ expando ] ) {\n\t\tpostFilter = setMatcher( postFilter );\n\t}\n\tif ( postFinder && !postFinder[ expando ] ) {\n\t\tpostFinder = setMatcher( postFinder, postSelector );\n\t}\n\treturn markFunction( function( seed, results, context, xml ) {\n\t\tvar temp, i, elem,\n\t\t\tpreMap = [],\n\t\t\tpostMap = [],\n\t\t\tpreexisting = results.length,\n\n\t\t\t// Get initial elements from seed or context\n\t\t\telems = seed || multipleContexts(\n\t\t\t\tselector || \"*\",\n\t\t\t\tcontext.nodeType ? [ context ] : context,\n\t\t\t\t[]\n\t\t\t),\n\n\t\t\t// Prefilter to get matcher input, preserving a map for seed-results synchronization\n\t\t\tmatcherIn = preFilter && ( seed || !selector ) ?\n\t\t\t\tcondense( elems, preMap, preFilter, context, xml ) :\n\t\t\t\telems,\n\n\t\t\tmatcherOut = matcher ?\n\n\t\t\t\t// If we have a postFinder, or filtered seed, or non-seed postFilter or preexisting results,\n\t\t\t\tpostFinder || ( seed ? preFilter : preexisting || postFilter ) ?\n\n\t\t\t\t\t// ...intermediate processing is necessary\n\t\t\t\t\t[] :\n\n\t\t\t\t\t// ...otherwise use results directly\n\t\t\t\t\tresults :\n\t\t\t\tmatcherIn;\n\n\t\t// Find primary matches\n\t\tif ( matcher ) {\n\t\t\tmatcher( matcherIn, matcherOut, context, xml );\n\t\t}\n\n\t\t// Apply postFilter\n\t\tif ( postFilter ) {\n\t\t\ttemp = condense( matcherOut, postMap );\n\t\t\tpostFilter( temp, [], context, xml );\n\n\t\t\t// Un-match failing elements by moving them back to matcherIn\n\t\t\ti = temp.length;\n\t\t\twhile ( i-- ) {\n\t\t\t\tif ( ( elem = temp[ i ] ) ) {\n\t\t\t\t\tmatcherOut[ postMap[ i ] ] = !( matcherIn[ postMap[ i ] ] = elem );\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\n\t\tif ( seed ) {\n\t\t\tif ( postFinder || preFilter ) {\n\t\t\t\tif ( postFinder ) {\n\n\t\t\t\t\t// Get the final matcherOut by condensing this intermediate into postFinder contexts\n\t\t\t\t\ttemp = [];\n\t\t\t\t\ti = matcherOut.length;\n\t\t\t\t\twhile ( i-- ) {\n\t\t\t\t\t\tif ( ( elem = matcherOut[ i ] ) ) {\n\n\t\t\t\t\t\t\t// Restore matcherIn since elem is not yet a final match\n\t\t\t\t\t\t\ttemp.push( ( matcherIn[ i ] = elem ) );\n\t\t\t\t\t\t}\n\t\t\t\t\t}\n\t\t\t\t\tpostFinder( null, ( matcherOut = [] ), temp, xml );\n\t\t\t\t}\n\n\t\t\t\t// Move matched elements from seed to results to keep them synchronized\n\t\t\t\ti = matcherOut.length;\n\t\t\t\twhile ( i-- ) {\n\t\t\t\t\tif ( ( elem = matcherOut[ i ] ) &&\n\t\t\t\t\t\t( temp = postFinder ? indexOf( seed, elem ) : preMap[ i ] ) > -1 ) {\n\n\t\t\t\t\t\tseed[ temp ] = !( results[ temp ] = elem );\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t}\n\n\t\t// Add elements to results, through postFinder if defined\n\t\t} else {\n\t\t\tmatcherOut = condense(\n\t\t\t\tmatcherOut === results ?\n\t\t\t\t\tmatcherOut.splice( preexisting, matcherOut.length ) :\n\t\t\t\t\tmatcherOut\n\t\t\t);\n\t\t\tif ( postFinder ) {\n\t\t\t\tpostFinder( null, results, matcherOut, xml );\n\t\t\t} else {\n\t\t\t\tpush.apply( results, matcherOut );\n\t\t\t}\n\t\t}\n\t} );\n}\n\nfunction matcherFromTokens( tokens ) {\n\tvar checkContext, matcher, j,\n\t\tlen = tokens.length,\n\t\tleadingRelative = Expr.relative[ tokens[ 0 ].type ],\n\t\timplicitRelative = leadingRelative || Expr.relative[ \" \" ],\n\t\ti = leadingRelative ? 1 : 0,\n\n\t\t// The foundational matcher ensures that elements are reachable from top-level context(s)\n\t\tmatchContext = addCombinator( function( elem ) {\n\t\t\treturn elem === checkContext;\n\t\t}, implicitRelative, true ),\n\t\tmatchAnyContext = addCombinator( function( elem ) {\n\t\t\treturn indexOf( checkContext, elem ) > -1;\n\t\t}, implicitRelative, true ),\n\t\tmatchers = [ function( elem, context, xml ) {\n\t\t\tvar ret = ( !leadingRelative && ( xml || context !== outermostContext ) ) || (\n\t\t\t\t( checkContext = context ).nodeType ?\n\t\t\t\t\tmatchContext( elem, context, xml ) :\n\t\t\t\t\tmatchAnyContext( elem, context, xml ) );\n\n\t\t\t// Avoid hanging onto element (issue #299)\n\t\t\tcheckContext = null;\n\t\t\treturn ret;\n\t\t} ];\n\n\tfor ( ; i < len; i++ ) {\n\t\tif ( ( matcher = Expr.relative[ tokens[ i ].type ] ) ) {\n\t\t\tmatchers = [ addCombinator( elementMatcher( matchers ), matcher ) ];\n\t\t} else {\n\t\t\tmatcher = Expr.filter[ tokens[ i ].type ].apply( null, tokens[ i ].matches );\n\n\t\t\t// Return special upon seeing a positional matcher\n\t\t\tif ( matcher[ expando ] ) {\n\n\t\t\t\t// Find the next relative operator (if any) for proper handling\n\t\t\t\tj = ++i;\n\t\t\t\tfor ( ; j < len; j++ ) {\n\t\t\t\t\tif ( Expr.relative[ tokens[ j ].type ] ) {\n\t\t\t\t\t\tbreak;\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t\treturn setMatcher(\n\t\t\t\t\ti > 1 && elementMatcher( matchers ),\n\t\t\t\t\ti > 1 && toSelector(\n\n\t\t\t\t\t// If the preceding token was a descendant combinator, insert an implicit any-element `*`\n\t\t\t\t\ttokens\n\t\t\t\t\t\t.slice( 0, i - 1 )\n\t\t\t\t\t\t.concat( { value: tokens[ i - 2 ].type === \" \" ? \"*\" : \"\" } )\n\t\t\t\t\t).replace( rtrim, \"$1\" ),\n\t\t\t\t\tmatcher,\n\t\t\t\t\ti < j && matcherFromTokens( tokens.slice( i, j ) ),\n\t\t\t\t\tj < len && matcherFromTokens( ( tokens = tokens.slice( j ) ) ),\n\t\t\t\t\tj < len && toSelector( tokens )\n\t\t\t\t);\n\t\t\t}\n\t\t\tmatchers.push( matcher );\n\t\t}\n\t}\n\n\treturn elementMatcher( matchers );\n}\n\nfunction matcherFromGroupMatchers( elementMatchers, setMatchers ) {\n\tvar bySet = setMatchers.length > 0,\n\t\tbyElement = elementMatchers.length > 0,\n\t\tsuperMatcher = function( seed, context, xml, results, outermost ) {\n\t\t\tvar elem, j, matcher,\n\t\t\t\tmatchedCount = 0,\n\t\t\t\ti = \"0\",\n\t\t\t\tunmatched = seed && [],\n\t\t\t\tsetMatched = [],\n\t\t\t\tcontextBackup = outermostContext,\n\n\t\t\t\t// We must always have either seed elements or outermost context\n\t\t\t\telems = seed || byElement && Expr.find[ \"TAG\" ]( \"*\", outermost ),\n\n\t\t\t\t// Use integer dirruns iff this is the outermost matcher\n\t\t\t\tdirrunsUnique = ( dirruns += contextBackup == null ? 1 : Math.random() || 0.1 ),\n\t\t\t\tlen = elems.length;\n\n\t\t\tif ( outermost ) {\n\n\t\t\t\t// Support: IE 11+, Edge 17 - 18+\n\t\t\t\t// IE/Edge sometimes throw a \"Permission denied\" error when strict-comparing\n\t\t\t\t// two documents; shallow comparisons work.\n\t\t\t\t// eslint-disable-next-line eqeqeq\n\t\t\t\toutermostContext = context == document || context || outermost;\n\t\t\t}\n\n\t\t\t// Add elements passing elementMatchers directly to results\n\t\t\t// Support: IE<9, Safari\n\t\t\t// Tolerate NodeList properties (IE: \"length\"; Safari: ) matching elements by id\n\t\t\tfor ( ; i !== len && ( elem = elems[ i ] ) != null; i++ ) {\n\t\t\t\tif ( byElement && elem ) {\n\t\t\t\t\tj = 0;\n\n\t\t\t\t\t// Support: IE 11+, Edge 17 - 18+\n\t\t\t\t\t// IE/Edge sometimes throw a \"Permission denied\" error when strict-comparing\n\t\t\t\t\t// two documents; shallow comparisons work.\n\t\t\t\t\t// eslint-disable-next-line eqeqeq\n\t\t\t\t\tif ( !context && elem.ownerDocument != document ) {\n\t\t\t\t\t\tsetDocument( elem );\n\t\t\t\t\t\txml = !documentIsHTML;\n\t\t\t\t\t}\n\t\t\t\t\twhile ( ( matcher = elementMatchers[ j++ ] ) ) {\n\t\t\t\t\t\tif ( matcher( elem, context || document, xml ) ) {\n\t\t\t\t\t\t\tresults.push( elem );\n\t\t\t\t\t\t\tbreak;\n\t\t\t\t\t\t}\n\t\t\t\t\t}\n\t\t\t\t\tif ( outermost ) {\n\t\t\t\t\t\tdirruns = dirrunsUnique;\n\t\t\t\t\t}\n\t\t\t\t}\n\n\t\t\t\t// Track unmatched elements for set filters\n\t\t\t\tif ( bySet ) {\n\n\t\t\t\t\t// They will have gone through all possible matchers\n\t\t\t\t\tif ( ( elem = !matcher && elem ) ) {\n\t\t\t\t\t\tmatchedCount--;\n\t\t\t\t\t}\n\n\t\t\t\t\t// Lengthen the array for every element, matched or not\n\t\t\t\t\tif ( seed ) {\n\t\t\t\t\t\tunmatched.push( elem );\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t}\n\n\t\t\t// `i` is now the count of elements visited above, and adding it to `matchedCount`\n\t\t\t// makes the latter nonnegative.\n\t\t\tmatchedCount += i;\n\n\t\t\t// Apply set filters to unmatched elements\n\t\t\t// NOTE: This can be skipped if there are no unmatched elements (i.e., `matchedCount`\n\t\t\t// equals `i`), unless we didn't visit _any_ elements in the above loop because we have\n\t\t\t// no element matchers and no seed.\n\t\t\t// Incrementing an initially-string \"0\" `i` allows `i` to remain a string only in that\n\t\t\t// case, which will result in a \"00\" `matchedCount` that differs from `i` but is also\n\t\t\t// numerically zero.\n\t\t\tif ( bySet && i !== matchedCount ) {\n\t\t\t\tj = 0;\n\t\t\t\twhile ( ( matcher = setMatchers[ j++ ] ) ) {\n\t\t\t\t\tmatcher( unmatched, setMatched, context, xml );\n\t\t\t\t}\n\n\t\t\t\tif ( seed ) {\n\n\t\t\t\t\t// Reintegrate element matches to eliminate the need for sorting\n\t\t\t\t\tif ( matchedCount > 0 ) {\n\t\t\t\t\t\twhile ( i-- ) {\n\t\t\t\t\t\t\tif ( !( unmatched[ i ] || setMatched[ i ] ) ) {\n\t\t\t\t\t\t\t\tsetMatched[ i ] = pop.call( results );\n\t\t\t\t\t\t\t}\n\t\t\t\t\t\t}\n\t\t\t\t\t}\n\n\t\t\t\t\t// Discard index placeholder values to get only actual matches\n\t\t\t\t\tsetMatched = condense( setMatched );\n\t\t\t\t}\n\n\t\t\t\t// Add matches to results\n\t\t\t\tpush.apply( results, setMatched );\n\n\t\t\t\t// Seedless set matches succeeding multiple successful matchers stipulate sorting\n\t\t\t\tif ( outermost && !seed && setMatched.length > 0 &&\n\t\t\t\t\t( matchedCount + setMatchers.length ) > 1 ) {\n\n\t\t\t\t\tSizzle.uniqueSort( results );\n\t\t\t\t}\n\t\t\t}\n\n\t\t\t// Override manipulation of globals by nested matchers\n\t\t\tif ( outermost ) {\n\t\t\t\tdirruns = dirrunsUnique;\n\t\t\t\toutermostContext = contextBackup;\n\t\t\t}\n\n\t\t\treturn unmatched;\n\t\t};\n\n\treturn bySet ?\n\t\tmarkFunction( superMatcher ) :\n\t\tsuperMatcher;\n}\n\ncompile = Sizzle.compile = function( selector, match /* Internal Use Only */ ) {\n\tvar i,\n\t\tsetMatchers = [],\n\t\telementMatchers = [],\n\t\tcached = compilerCache[ selector + \" \" ];\n\n\tif ( !cached ) {\n\n\t\t// Generate a function of recursive functions that can be used to check each element\n\t\tif ( !match ) {\n\t\t\tmatch = tokenize( selector );\n\t\t}\n\t\ti = match.length;\n\t\twhile ( i-- ) {\n\t\t\tcached = matcherFromTokens( match[ i ] );\n\t\t\tif ( cached[ expando ] ) {\n\t\t\t\tsetMatchers.push( cached );\n\t\t\t} else {\n\t\t\t\telementMatchers.push( cached );\n\t\t\t}\n\t\t}\n\n\t\t// Cache the compiled function\n\t\tcached = compilerCache(\n\t\t\tselector,\n\t\t\tmatcherFromGroupMatchers( elementMatchers, setMatchers )\n\t\t);\n\n\t\t// Save selector and tokenization\n\t\tcached.selector = selector;\n\t}\n\treturn cached;\n};\n\n/**\n * A low-level selection function that works with Sizzle's compiled\n * selector functions\n * @param {String|Function} selector A selector or a pre-compiled\n * selector function built with Sizzle.compile\n * @param {Element} context\n * @param {Array} [results]\n * @param {Array} [seed] A set of elements to match against\n */\nselect = Sizzle.select = function( selector, context, results, seed ) {\n\tvar i, tokens, token, type, find,\n\t\tcompiled = typeof selector === \"function\" && selector,\n\t\tmatch = !seed && tokenize( ( selector = compiled.selector || selector ) );\n\n\tresults = results || [];\n\n\t// Try to minimize operations if there is only one selector in the list and no seed\n\t// (the latter of which guarantees us context)\n\tif ( match.length === 1 ) {\n\n\t\t// Reduce context if the leading compound selector is an ID\n\t\ttokens = match[ 0 ] = match[ 0 ].slice( 0 );\n\t\tif ( tokens.length > 2 && ( token = tokens[ 0 ] ).type === \"ID\" &&\n\t\t\tcontext.nodeType === 9 && documentIsHTML && Expr.relative[ tokens[ 1 ].type ] ) {\n\n\t\t\tcontext = ( Expr.find[ \"ID\" ]( token.matches[ 0 ]\n\t\t\t\t.replace( runescape, funescape ), context ) || [] )[ 0 ];\n\t\t\tif ( !context ) {\n\t\t\t\treturn results;\n\n\t\t\t// Precompiled matchers will still verify ancestry, so step up a level\n\t\t\t} else if ( compiled ) {\n\t\t\t\tcontext = context.parentNode;\n\t\t\t}\n\n\t\t\tselector = selector.slice( tokens.shift().value.length );\n\t\t}\n\n\t\t// Fetch a seed set for right-to-left matching\n\t\ti = matchExpr[ \"needsContext\" ].test( selector ) ? 0 : tokens.length;\n\t\twhile ( i-- ) {\n\t\t\ttoken = tokens[ i ];\n\n\t\t\t// Abort if we hit a combinator\n\t\t\tif ( Expr.relative[ ( type = token.type ) ] ) {\n\t\t\t\tbreak;\n\t\t\t}\n\t\t\tif ( ( find = Expr.find[ type ] ) ) {\n\n\t\t\t\t// Search, expanding context for leading sibling combinators\n\t\t\t\tif ( ( seed = find(\n\t\t\t\t\ttoken.matches[ 0 ].replace( runescape, funescape ),\n\t\t\t\t\trsibling.test( tokens[ 0 ].type ) && testContext( context.parentNode ) ||\n\t\t\t\t\t\tcontext\n\t\t\t\t) ) ) {\n\n\t\t\t\t\t// If seed is empty or no tokens remain, we can return early\n\t\t\t\t\ttokens.splice( i, 1 );\n\t\t\t\t\tselector = seed.length && toSelector( tokens );\n\t\t\t\t\tif ( !selector ) {\n\t\t\t\t\t\tpush.apply( results, seed );\n\t\t\t\t\t\treturn results;\n\t\t\t\t\t}\n\n\t\t\t\t\tbreak;\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\t}\n\n\t// Compile and execute a filtering function if one is not provided\n\t// Provide `match` to avoid retokenization if we modified the selector above\n\t( compiled || compile( selector, match ) )(\n\t\tseed,\n\t\tcontext,\n\t\t!documentIsHTML,\n\t\tresults,\n\t\t!context || rsibling.test( selector ) && testContext( context.parentNode ) || context\n\t);\n\treturn results;\n};\n\n// One-time assignments\n\n// Sort stability\nsupport.sortStable = expando.split( \"\" ).sort( sortOrder ).join( \"\" ) === expando;\n\n// Support: Chrome 14-35+\n// Always assume duplicates if they aren't passed to the comparison function\nsupport.detectDuplicates = !!hasDuplicate;\n\n// Initialize against the default document\nsetDocument();\n\n// Support: Webkit<537.32 - Safari 6.0.3/Chrome 25 (fixed in Chrome 27)\n// Detached nodes confoundingly follow *each other*\nsupport.sortDetached = assert( function( el ) {\n\n\t// Should return 1, but returns 4 (following)\n\treturn el.compareDocumentPosition( document.createElement( \"fieldset\" ) ) & 1;\n} );\n\n// Support: IE<8\n// Prevent attribute/property \"interpolation\"\n// https://msdn.microsoft.com/en-us/library/ms536429%28VS.85%29.aspx\nif ( !assert( function( el ) {\n\tel.innerHTML = \"\";\n\treturn el.firstChild.getAttribute( \"href\" ) === \"#\";\n} ) ) {\n\taddHandle( \"type|href|height|width\", function( elem, name, isXML ) {\n\t\tif ( !isXML ) {\n\t\t\treturn elem.getAttribute( name, name.toLowerCase() === \"type\" ? 1 : 2 );\n\t\t}\n\t} );\n}\n\n// Support: IE<9\n// Use defaultValue in place of getAttribute(\"value\")\nif ( !support.attributes || !assert( function( el ) {\n\tel.innerHTML = \"\";\n\tel.firstChild.setAttribute( \"value\", \"\" );\n\treturn el.firstChild.getAttribute( \"value\" ) === \"\";\n} ) ) {\n\taddHandle( \"value\", function( elem, _name, isXML ) {\n\t\tif ( !isXML && elem.nodeName.toLowerCase() === \"input\" ) {\n\t\t\treturn elem.defaultValue;\n\t\t}\n\t} );\n}\n\n// Support: IE<9\n// Use getAttributeNode to fetch booleans when getAttribute lies\nif ( !assert( function( el ) {\n\treturn el.getAttribute( \"disabled\" ) == null;\n} ) ) {\n\taddHandle( booleans, function( elem, name, isXML ) {\n\t\tvar val;\n\t\tif ( !isXML ) {\n\t\t\treturn elem[ name ] === true ? name.toLowerCase() :\n\t\t\t\t( val = elem.getAttributeNode( name ) ) && val.specified ?\n\t\t\t\t\tval.value :\n\t\t\t\t\tnull;\n\t\t}\n\t} );\n}\n\nreturn Sizzle;\n\n} )( window );\n\n\n\njQuery.find = Sizzle;\njQuery.expr = Sizzle.selectors;\n\n// Deprecated\njQuery.expr[ \":\" ] = jQuery.expr.pseudos;\njQuery.uniqueSort = jQuery.unique = Sizzle.uniqueSort;\njQuery.text = Sizzle.getText;\njQuery.isXMLDoc = Sizzle.isXML;\njQuery.contains = Sizzle.contains;\njQuery.escapeSelector = Sizzle.escape;\n\n\n\n\nvar dir = function( elem, dir, until ) {\n\tvar matched = [],\n\t\ttruncate = until !== undefined;\n\n\twhile ( ( elem = elem[ dir ] ) && elem.nodeType !== 9 ) {\n\t\tif ( elem.nodeType === 1 ) {\n\t\t\tif ( truncate && jQuery( elem ).is( until ) ) {\n\t\t\t\tbreak;\n\t\t\t}\n\t\t\tmatched.push( elem );\n\t\t}\n\t}\n\treturn matched;\n};\n\n\nvar siblings = function( n, elem ) {\n\tvar matched = [];\n\n\tfor ( ; n; n = n.nextSibling ) {\n\t\tif ( n.nodeType === 1 && n !== elem ) {\n\t\t\tmatched.push( n );\n\t\t}\n\t}\n\n\treturn matched;\n};\n\n\nvar rneedsContext = jQuery.expr.match.needsContext;\n\n\n\nfunction nodeName( elem, name ) {\n\n\treturn elem.nodeName && elem.nodeName.toLowerCase() === name.toLowerCase();\n\n}\nvar rsingleTag = ( /^<([a-z][^\\/\\0>:\\x20\\t\\r\\n\\f]*)[\\x20\\t\\r\\n\\f]*\\/?>(?:<\\/\\1>|)$/i );\n\n\n\n// Implement the identical functionality for filter and not\nfunction winnow( elements, qualifier, not ) {\n\tif ( isFunction( qualifier ) ) {\n\t\treturn jQuery.grep( elements, function( elem, i ) {\n\t\t\treturn !!qualifier.call( elem, i, elem ) !== not;\n\t\t} );\n\t}\n\n\t// Single element\n\tif ( qualifier.nodeType ) {\n\t\treturn jQuery.grep( elements, function( elem ) {\n\t\t\treturn ( elem === qualifier ) !== not;\n\t\t} );\n\t}\n\n\t// Arraylike of elements (jQuery, arguments, Array)\n\tif ( typeof qualifier !== \"string\" ) {\n\t\treturn jQuery.grep( elements, function( elem ) {\n\t\t\treturn ( indexOf.call( qualifier, elem ) > -1 ) !== not;\n\t\t} );\n\t}\n\n\t// Filtered directly for both simple and complex selectors\n\treturn jQuery.filter( qualifier, elements, not );\n}\n\njQuery.filter = function( expr, elems, not ) {\n\tvar elem = elems[ 0 ];\n\n\tif ( not ) {\n\t\texpr = \":not(\" + expr + \")\";\n\t}\n\n\tif ( elems.length === 1 && elem.nodeType === 1 ) {\n\t\treturn jQuery.find.matchesSelector( elem, expr ) ? [ elem ] : [];\n\t}\n\n\treturn jQuery.find.matches( expr, jQuery.grep( elems, function( elem ) {\n\t\treturn elem.nodeType === 1;\n\t} ) );\n};\n\njQuery.fn.extend( {\n\tfind: function( selector ) {\n\t\tvar i, ret,\n\t\t\tlen = this.length,\n\t\t\tself = this;\n\n\t\tif ( typeof selector !== \"string\" ) {\n\t\t\treturn this.pushStack( jQuery( selector ).filter( function() {\n\t\t\t\tfor ( i = 0; i < len; i++ ) {\n\t\t\t\t\tif ( jQuery.contains( self[ i ], this ) ) {\n\t\t\t\t\t\treturn true;\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t} ) );\n\t\t}\n\n\t\tret = this.pushStack( [] );\n\n\t\tfor ( i = 0; i < len; i++ ) {\n\t\t\tjQuery.find( selector, self[ i ], ret );\n\t\t}\n\n\t\treturn len > 1 ? jQuery.uniqueSort( ret ) : ret;\n\t},\n\tfilter: function( selector ) {\n\t\treturn this.pushStack( winnow( this, selector || [], false ) );\n\t},\n\tnot: function( selector ) {\n\t\treturn this.pushStack( winnow( this, selector || [], true ) );\n\t},\n\tis: function( selector ) {\n\t\treturn !!winnow(\n\t\t\tthis,\n\n\t\t\t// If this is a positional/relative selector, check membership in the returned set\n\t\t\t// so $(\"p:first\").is(\"p:last\") won't return true for a doc with two \"p\".\n\t\t\ttypeof selector === \"string\" && rneedsContext.test( selector ) ?\n\t\t\t\tjQuery( selector ) :\n\t\t\t\tselector || [],\n\t\t\tfalse\n\t\t).length;\n\t}\n} );\n\n\n// Initialize a jQuery object\n\n\n// A central reference to the root jQuery(document)\nvar rootjQuery,\n\n\t// A simple way to check for HTML strings\n\t// Prioritize #id over to avoid XSS via location.hash (#9521)\n\t// Strict HTML recognition (#11290: must start with <)\n\t// Shortcut simple #id case for speed\n\trquickExpr = /^(?:\\s*(<[\\w\\W]+>)[^>]*|#([\\w-]+))$/,\n\n\tinit = jQuery.fn.init = function( selector, context, root ) {\n\t\tvar match, elem;\n\n\t\t// HANDLE: $(\"\"), $(null), $(undefined), $(false)\n\t\tif ( !selector ) {\n\t\t\treturn this;\n\t\t}\n\n\t\t// Method init() accepts an alternate rootjQuery\n\t\t// so migrate can support jQuery.sub (gh-2101)\n\t\troot = root || rootjQuery;\n\n\t\t// Handle HTML strings\n\t\tif ( typeof selector === \"string\" ) {\n\t\t\tif ( selector[ 0 ] === \"<\" &&\n\t\t\t\tselector[ selector.length - 1 ] === \">\" &&\n\t\t\t\tselector.length >= 3 ) {\n\n\t\t\t\t// Assume that strings that start and end with <> are HTML and skip the regex check\n\t\t\t\tmatch = [ null, selector, null ];\n\n\t\t\t} else {\n\t\t\t\tmatch = rquickExpr.exec( selector );\n\t\t\t}\n\n\t\t\t// Match html or make sure no context is specified for #id\n\t\t\tif ( match && ( match[ 1 ] || !context ) ) {\n\n\t\t\t\t// HANDLE: $(html) -> $(array)\n\t\t\t\tif ( match[ 1 ] ) {\n\t\t\t\t\tcontext = context instanceof jQuery ? context[ 0 ] : context;\n\n\t\t\t\t\t// Option to run scripts is true for back-compat\n\t\t\t\t\t// Intentionally let the error be thrown if parseHTML is not present\n\t\t\t\t\tjQuery.merge( this, jQuery.parseHTML(\n\t\t\t\t\t\tmatch[ 1 ],\n\t\t\t\t\t\tcontext && context.nodeType ? context.ownerDocument || context : document,\n\t\t\t\t\t\ttrue\n\t\t\t\t\t) );\n\n\t\t\t\t\t// HANDLE: $(html, props)\n\t\t\t\t\tif ( rsingleTag.test( match[ 1 ] ) && jQuery.isPlainObject( context ) ) {\n\t\t\t\t\t\tfor ( match in context ) {\n\n\t\t\t\t\t\t\t// Properties of context are called as methods if possible\n\t\t\t\t\t\t\tif ( isFunction( this[ match ] ) ) {\n\t\t\t\t\t\t\t\tthis[ match ]( context[ match ] );\n\n\t\t\t\t\t\t\t// ...and otherwise set as attributes\n\t\t\t\t\t\t\t} else {\n\t\t\t\t\t\t\t\tthis.attr( match, context[ match ] );\n\t\t\t\t\t\t\t}\n\t\t\t\t\t\t}\n\t\t\t\t\t}\n\n\t\t\t\t\treturn this;\n\n\t\t\t\t// HANDLE: $(#id)\n\t\t\t\t} else {\n\t\t\t\t\telem = document.getElementById( match[ 2 ] );\n\n\t\t\t\t\tif ( elem ) {\n\n\t\t\t\t\t\t// Inject the element directly into the jQuery object\n\t\t\t\t\t\tthis[ 0 ] = elem;\n\t\t\t\t\t\tthis.length = 1;\n\t\t\t\t\t}\n\t\t\t\t\treturn this;\n\t\t\t\t}\n\n\t\t\t// HANDLE: $(expr, $(...))\n\t\t\t} else if ( !context || context.jquery ) {\n\t\t\t\treturn ( context || root ).find( selector );\n\n\t\t\t// HANDLE: $(expr, context)\n\t\t\t// (which is just equivalent to: $(context).find(expr)\n\t\t\t} else {\n\t\t\t\treturn this.constructor( context ).find( selector );\n\t\t\t}\n\n\t\t// HANDLE: $(DOMElement)\n\t\t} else if ( selector.nodeType ) {\n\t\t\tthis[ 0 ] = selector;\n\t\t\tthis.length = 1;\n\t\t\treturn this;\n\n\t\t// HANDLE: $(function)\n\t\t// Shortcut for document ready\n\t\t} else if ( isFunction( selector ) ) {\n\t\t\treturn root.ready !== undefined ?\n\t\t\t\troot.ready( selector ) :\n\n\t\t\t\t// Execute immediately if ready is not present\n\t\t\t\tselector( jQuery );\n\t\t}\n\n\t\treturn jQuery.makeArray( selector, this );\n\t};\n\n// Give the init function the jQuery prototype for later instantiation\ninit.prototype = jQuery.fn;\n\n// Initialize central reference\nrootjQuery = jQuery( document );\n\n\nvar rparentsprev = /^(?:parents|prev(?:Until|All))/,\n\n\t// Methods guaranteed to produce a unique set when starting from a unique set\n\tguaranteedUnique = {\n\t\tchildren: true,\n\t\tcontents: true,\n\t\tnext: true,\n\t\tprev: true\n\t};\n\njQuery.fn.extend( {\n\thas: function( target ) {\n\t\tvar targets = jQuery( target, this ),\n\t\t\tl = targets.length;\n\n\t\treturn this.filter( function() {\n\t\t\tvar i = 0;\n\t\t\tfor ( ; i < l; i++ ) {\n\t\t\t\tif ( jQuery.contains( this, targets[ i ] ) ) {\n\t\t\t\t\treturn true;\n\t\t\t\t}\n\t\t\t}\n\t\t} );\n\t},\n\n\tclosest: function( selectors, context ) {\n\t\tvar cur,\n\t\t\ti = 0,\n\t\t\tl = this.length,\n\t\t\tmatched = [],\n\t\t\ttargets = typeof selectors !== \"string\" && jQuery( selectors );\n\n\t\t// Positional selectors never match, since there's no _selection_ context\n\t\tif ( !rneedsContext.test( selectors ) ) {\n\t\t\tfor ( ; i < l; i++ ) {\n\t\t\t\tfor ( cur = this[ i ]; cur && cur !== context; cur = cur.parentNode ) {\n\n\t\t\t\t\t// Always skip document fragments\n\t\t\t\t\tif ( cur.nodeType < 11 && ( targets ?\n\t\t\t\t\t\ttargets.index( cur ) > -1 :\n\n\t\t\t\t\t\t// Don't pass non-elements to Sizzle\n\t\t\t\t\t\tcur.nodeType === 1 &&\n\t\t\t\t\t\t\tjQuery.find.matchesSelector( cur, selectors ) ) ) {\n\n\t\t\t\t\t\tmatched.push( cur );\n\t\t\t\t\t\tbreak;\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\n\t\treturn this.pushStack( matched.length > 1 ? jQuery.uniqueSort( matched ) : matched );\n\t},\n\n\t// Determine the position of an element within the set\n\tindex: function( elem ) {\n\n\t\t// No argument, return index in parent\n\t\tif ( !elem ) {\n\t\t\treturn ( this[ 0 ] && this[ 0 ].parentNode ) ? this.first().prevAll().length : -1;\n\t\t}\n\n\t\t// Index in selector\n\t\tif ( typeof elem === \"string\" ) {\n\t\t\treturn indexOf.call( jQuery( elem ), this[ 0 ] );\n\t\t}\n\n\t\t// Locate the position of the desired element\n\t\treturn indexOf.call( this,\n\n\t\t\t// If it receives a jQuery object, the first element is used\n\t\t\telem.jquery ? elem[ 0 ] : elem\n\t\t);\n\t},\n\n\tadd: function( selector, context ) {\n\t\treturn this.pushStack(\n\t\t\tjQuery.uniqueSort(\n\t\t\t\tjQuery.merge( this.get(), jQuery( selector, context ) )\n\t\t\t)\n\t\t);\n\t},\n\n\taddBack: function( selector ) {\n\t\treturn this.add( selector == null ?\n\t\t\tthis.prevObject : this.prevObject.filter( selector )\n\t\t);\n\t}\n} );\n\nfunction sibling( cur, dir ) {\n\twhile ( ( cur = cur[ dir ] ) && cur.nodeType !== 1 ) {}\n\treturn cur;\n}\n\njQuery.each( {\n\tparent: function( elem ) {\n\t\tvar parent = elem.parentNode;\n\t\treturn parent && parent.nodeType !== 11 ? parent : null;\n\t},\n\tparents: function( elem ) {\n\t\treturn dir( elem, \"parentNode\" );\n\t},\n\tparentsUntil: function( elem, _i, until ) {\n\t\treturn dir( elem, \"parentNode\", until );\n\t},\n\tnext: function( elem ) {\n\t\treturn sibling( elem, \"nextSibling\" );\n\t},\n\tprev: function( elem ) {\n\t\treturn sibling( elem, \"previousSibling\" );\n\t},\n\tnextAll: function( elem ) {\n\t\treturn dir( elem, \"nextSibling\" );\n\t},\n\tprevAll: function( elem ) {\n\t\treturn dir( elem, \"previousSibling\" );\n\t},\n\tnextUntil: function( elem, _i, until ) {\n\t\treturn dir( elem, \"nextSibling\", until );\n\t},\n\tprevUntil: function( elem, _i, until ) {\n\t\treturn dir( elem, \"previousSibling\", until );\n\t},\n\tsiblings: function( elem ) {\n\t\treturn siblings( ( elem.parentNode || {} ).firstChild, elem );\n\t},\n\tchildren: function( elem ) {\n\t\treturn siblings( elem.firstChild );\n\t},\n\tcontents: function( elem ) {\n\t\tif ( elem.contentDocument != null &&\n\n\t\t\t// Support: IE 11+\n\t\t\t// elements with no `data` attribute has an object\n\t\t\t// `contentDocument` with a `null` prototype.\n\t\t\tgetProto( elem.contentDocument ) ) {\n\n\t\t\treturn elem.contentDocument;\n\t\t}\n\n\t\t// Support: IE 9 - 11 only, iOS 7 only, Android Browser <=4.3 only\n\t\t// Treat the template element as a regular one in browsers that\n\t\t// don't support it.\n\t\tif ( nodeName( elem, \"template\" ) ) {\n\t\t\telem = elem.content || elem;\n\t\t}\n\n\t\treturn jQuery.merge( [], elem.childNodes );\n\t}\n}, function( name, fn ) {\n\tjQuery.fn[ name ] = function( until, selector ) {\n\t\tvar matched = jQuery.map( this, fn, until );\n\n\t\tif ( name.slice( -5 ) !== \"Until\" ) {\n\t\t\tselector = until;\n\t\t}\n\n\t\tif ( selector && typeof selector === \"string\" ) {\n\t\t\tmatched = jQuery.filter( selector, matched );\n\t\t}\n\n\t\tif ( this.length > 1 ) {\n\n\t\t\t// Remove duplicates\n\t\t\tif ( !guaranteedUnique[ name ] ) {\n\t\t\t\tjQuery.uniqueSort( matched );\n\t\t\t}\n\n\t\t\t// Reverse order for parents* and prev-derivatives\n\t\t\tif ( rparentsprev.test( name ) ) {\n\t\t\t\tmatched.reverse();\n\t\t\t}\n\t\t}\n\n\t\treturn this.pushStack( matched );\n\t};\n} );\nvar rnothtmlwhite = ( /[^\\x20\\t\\r\\n\\f]+/g );\n\n\n\n// Convert String-formatted options into Object-formatted ones\nfunction createOptions( options ) {\n\tvar object = {};\n\tjQuery.each( options.match( rnothtmlwhite ) || [], function( _, flag ) {\n\t\tobject[ flag ] = true;\n\t} );\n\treturn object;\n}\n\n/*\n * Create a callback list using the following parameters:\n *\n *\toptions: an optional list of space-separated options that will change how\n *\t\t\tthe callback list behaves or a more traditional option object\n *\n * By default a callback list will act like an event callback list and can be\n * \"fired\" multiple times.\n *\n * Possible options:\n *\n *\tonce:\t\t\twill ensure the callback list can only be fired once (like a Deferred)\n *\n *\tmemory:\t\t\twill keep track of previous values and will call any callback added\n *\t\t\t\t\tafter the list has been fired right away with the latest \"memorized\"\n *\t\t\t\t\tvalues (like a Deferred)\n *\n *\tunique:\t\t\twill ensure a callback can only be added once (no duplicate in the list)\n *\n *\tstopOnFalse:\tinterrupt callings when a callback returns false\n *\n */\njQuery.Callbacks = function( options ) {\n\n\t// Convert options from String-formatted to Object-formatted if needed\n\t// (we check in cache first)\n\toptions = typeof options === \"string\" ?\n\t\tcreateOptions( options ) :\n\t\tjQuery.extend( {}, options );\n\n\tvar // Flag to know if list is currently firing\n\t\tfiring,\n\n\t\t// Last fire value for non-forgettable lists\n\t\tmemory,\n\n\t\t// Flag to know if list was already fired\n\t\tfired,\n\n\t\t// Flag to prevent firing\n\t\tlocked,\n\n\t\t// Actual callback list\n\t\tlist = [],\n\n\t\t// Queue of execution data for repeatable lists\n\t\tqueue = [],\n\n\t\t// Index of currently firing callback (modified by add/remove as needed)\n\t\tfiringIndex = -1,\n\n\t\t// Fire callbacks\n\t\tfire = function() {\n\n\t\t\t// Enforce single-firing\n\t\t\tlocked = locked || options.once;\n\n\t\t\t// Execute callbacks for all pending executions,\n\t\t\t// respecting firingIndex overrides and runtime changes\n\t\t\tfired = firing = true;\n\t\t\tfor ( ; queue.length; firingIndex = -1 ) {\n\t\t\t\tmemory = queue.shift();\n\t\t\t\twhile ( ++firingIndex < list.length ) {\n\n\t\t\t\t\t// Run callback and check for early termination\n\t\t\t\t\tif ( list[ firingIndex ].apply( memory[ 0 ], memory[ 1 ] ) === false &&\n\t\t\t\t\t\toptions.stopOnFalse ) {\n\n\t\t\t\t\t\t// Jump to end and forget the data so .add doesn't re-fire\n\t\t\t\t\t\tfiringIndex = list.length;\n\t\t\t\t\t\tmemory = false;\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t}\n\n\t\t\t// Forget the data if we're done with it\n\t\t\tif ( !options.memory ) {\n\t\t\t\tmemory = false;\n\t\t\t}\n\n\t\t\tfiring = false;\n\n\t\t\t// Clean up if we're done firing for good\n\t\t\tif ( locked ) {\n\n\t\t\t\t// Keep an empty list if we have data for future add calls\n\t\t\t\tif ( memory ) {\n\t\t\t\t\tlist = [];\n\n\t\t\t\t// Otherwise, this object is spent\n\t\t\t\t} else {\n\t\t\t\t\tlist = \"\";\n\t\t\t\t}\n\t\t\t}\n\t\t},\n\n\t\t// Actual Callbacks object\n\t\tself = {\n\n\t\t\t// Add a callback or a collection of callbacks to the list\n\t\t\tadd: function() {\n\t\t\t\tif ( list ) {\n\n\t\t\t\t\t// If we have memory from a past run, we should fire after adding\n\t\t\t\t\tif ( memory && !firing ) {\n\t\t\t\t\t\tfiringIndex = list.length - 1;\n\t\t\t\t\t\tqueue.push( memory );\n\t\t\t\t\t}\n\n\t\t\t\t\t( function add( args ) {\n\t\t\t\t\t\tjQuery.each( args, function( _, arg ) {\n\t\t\t\t\t\t\tif ( isFunction( arg ) ) {\n\t\t\t\t\t\t\t\tif ( !options.unique || !self.has( arg ) ) {\n\t\t\t\t\t\t\t\t\tlist.push( arg );\n\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t} else if ( arg && arg.length && toType( arg ) !== \"string\" ) {\n\n\t\t\t\t\t\t\t\t// Inspect recursively\n\t\t\t\t\t\t\t\tadd( arg );\n\t\t\t\t\t\t\t}\n\t\t\t\t\t\t} );\n\t\t\t\t\t} )( arguments );\n\n\t\t\t\t\tif ( memory && !firing ) {\n\t\t\t\t\t\tfire();\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t\treturn this;\n\t\t\t},\n\n\t\t\t// Remove a callback from the list\n\t\t\tremove: function() {\n\t\t\t\tjQuery.each( arguments, function( _, arg ) {\n\t\t\t\t\tvar index;\n\t\t\t\t\twhile ( ( index = jQuery.inArray( arg, list, index ) ) > -1 ) {\n\t\t\t\t\t\tlist.splice( index, 1 );\n\n\t\t\t\t\t\t// Handle firing indexes\n\t\t\t\t\t\tif ( index <= firingIndex ) {\n\t\t\t\t\t\t\tfiringIndex--;\n\t\t\t\t\t\t}\n\t\t\t\t\t}\n\t\t\t\t} );\n\t\t\t\treturn this;\n\t\t\t},\n\n\t\t\t// Check if a given callback is in the list.\n\t\t\t// If no argument is given, return whether or not list has callbacks attached.\n\t\t\thas: function( fn ) {\n\t\t\t\treturn fn ?\n\t\t\t\t\tjQuery.inArray( fn, list ) > -1 :\n\t\t\t\t\tlist.length > 0;\n\t\t\t},\n\n\t\t\t// Remove all callbacks from the list\n\t\t\tempty: function() {\n\t\t\t\tif ( list ) {\n\t\t\t\t\tlist = [];\n\t\t\t\t}\n\t\t\t\treturn this;\n\t\t\t},\n\n\t\t\t// Disable .fire and .add\n\t\t\t// Abort any current/pending executions\n\t\t\t// Clear all callbacks and values\n\t\t\tdisable: function() {\n\t\t\t\tlocked = queue = [];\n\t\t\t\tlist = memory = \"\";\n\t\t\t\treturn this;\n\t\t\t},\n\t\t\tdisabled: function() {\n\t\t\t\treturn !list;\n\t\t\t},\n\n\t\t\t// Disable .fire\n\t\t\t// Also disable .add unless we have memory (since it would have no effect)\n\t\t\t// Abort any pending executions\n\t\t\tlock: function() {\n\t\t\t\tlocked = queue = [];\n\t\t\t\tif ( !memory && !firing ) {\n\t\t\t\t\tlist = memory = \"\";\n\t\t\t\t}\n\t\t\t\treturn this;\n\t\t\t},\n\t\t\tlocked: function() {\n\t\t\t\treturn !!locked;\n\t\t\t},\n\n\t\t\t// Call all callbacks with the given context and arguments\n\t\t\tfireWith: function( context, args ) {\n\t\t\t\tif ( !locked ) {\n\t\t\t\t\targs = args || [];\n\t\t\t\t\targs = [ context, args.slice ? args.slice() : args ];\n\t\t\t\t\tqueue.push( args );\n\t\t\t\t\tif ( !firing ) {\n\t\t\t\t\t\tfire();\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t\treturn this;\n\t\t\t},\n\n\t\t\t// Call all the callbacks with the given arguments\n\t\t\tfire: function() {\n\t\t\t\tself.fireWith( this, arguments );\n\t\t\t\treturn this;\n\t\t\t},\n\n\t\t\t// To know if the callbacks have already been called at least once\n\t\t\tfired: function() {\n\t\t\t\treturn !!fired;\n\t\t\t}\n\t\t};\n\n\treturn self;\n};\n\n\nfunction Identity( v ) {\n\treturn v;\n}\nfunction Thrower( ex ) {\n\tthrow ex;\n}\n\nfunction adoptValue( value, resolve, reject, noValue ) {\n\tvar method;\n\n\ttry {\n\n\t\t// Check for promise aspect first to privilege synchronous behavior\n\t\tif ( value && isFunction( ( method = value.promise ) ) ) {\n\t\t\tmethod.call( value ).done( resolve ).fail( reject );\n\n\t\t// Other thenables\n\t\t} else if ( value && isFunction( ( method = value.then ) ) ) {\n\t\t\tmethod.call( value, resolve, reject );\n\n\t\t// Other non-thenables\n\t\t} else {\n\n\t\t\t// Control `resolve` arguments by letting Array#slice cast boolean `noValue` to integer:\n\t\t\t// * false: [ value ].slice( 0 ) => resolve( value )\n\t\t\t// * true: [ value ].slice( 1 ) => resolve()\n\t\t\tresolve.apply( undefined, [ value ].slice( noValue ) );\n\t\t}\n\n\t// For Promises/A+, convert exceptions into rejections\n\t// Since jQuery.when doesn't unwrap thenables, we can skip the extra checks appearing in\n\t// Deferred#then to conditionally suppress rejection.\n\t} catch ( value ) {\n\n\t\t// Support: Android 4.0 only\n\t\t// Strict mode functions invoked without .call/.apply get global-object context\n\t\treject.apply( undefined, [ value ] );\n\t}\n}\n\njQuery.extend( {\n\n\tDeferred: function( func ) {\n\t\tvar tuples = [\n\n\t\t\t\t// action, add listener, callbacks,\n\t\t\t\t// ... .then handlers, argument index, [final state]\n\t\t\t\t[ \"notify\", \"progress\", jQuery.Callbacks( \"memory\" ),\n\t\t\t\t\tjQuery.Callbacks( \"memory\" ), 2 ],\n\t\t\t\t[ \"resolve\", \"done\", jQuery.Callbacks( \"once memory\" ),\n\t\t\t\t\tjQuery.Callbacks( \"once memory\" ), 0, \"resolved\" ],\n\t\t\t\t[ \"reject\", \"fail\", jQuery.Callbacks( \"once memory\" ),\n\t\t\t\t\tjQuery.Callbacks( \"once memory\" ), 1, \"rejected\" ]\n\t\t\t],\n\t\t\tstate = \"pending\",\n\t\t\tpromise = {\n\t\t\t\tstate: function() {\n\t\t\t\t\treturn state;\n\t\t\t\t},\n\t\t\t\talways: function() {\n\t\t\t\t\tdeferred.done( arguments ).fail( arguments );\n\t\t\t\t\treturn this;\n\t\t\t\t},\n\t\t\t\t\"catch\": function( fn ) {\n\t\t\t\t\treturn promise.then( null, fn );\n\t\t\t\t},\n\n\t\t\t\t// Keep pipe for back-compat\n\t\t\t\tpipe: function( /* fnDone, fnFail, fnProgress */ ) {\n\t\t\t\t\tvar fns = arguments;\n\n\t\t\t\t\treturn jQuery.Deferred( function( newDefer ) {\n\t\t\t\t\t\tjQuery.each( tuples, function( _i, tuple ) {\n\n\t\t\t\t\t\t\t// Map tuples (progress, done, fail) to arguments (done, fail, progress)\n\t\t\t\t\t\t\tvar fn = isFunction( fns[ tuple[ 4 ] ] ) && fns[ tuple[ 4 ] ];\n\n\t\t\t\t\t\t\t// deferred.progress(function() { bind to newDefer or newDefer.notify })\n\t\t\t\t\t\t\t// deferred.done(function() { bind to newDefer or newDefer.resolve })\n\t\t\t\t\t\t\t// deferred.fail(function() { bind to newDefer or newDefer.reject })\n\t\t\t\t\t\t\tdeferred[ tuple[ 1 ] ]( function() {\n\t\t\t\t\t\t\t\tvar returned = fn && fn.apply( this, arguments );\n\t\t\t\t\t\t\t\tif ( returned && isFunction( returned.promise ) ) {\n\t\t\t\t\t\t\t\t\treturned.promise()\n\t\t\t\t\t\t\t\t\t\t.progress( newDefer.notify )\n\t\t\t\t\t\t\t\t\t\t.done( newDefer.resolve )\n\t\t\t\t\t\t\t\t\t\t.fail( newDefer.reject );\n\t\t\t\t\t\t\t\t} else {\n\t\t\t\t\t\t\t\t\tnewDefer[ tuple[ 0 ] + \"With\" ](\n\t\t\t\t\t\t\t\t\t\tthis,\n\t\t\t\t\t\t\t\t\t\tfn ? [ returned ] : arguments\n\t\t\t\t\t\t\t\t\t);\n\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t} );\n\t\t\t\t\t\t} );\n\t\t\t\t\t\tfns = null;\n\t\t\t\t\t} ).promise();\n\t\t\t\t},\n\t\t\t\tthen: function( onFulfilled, onRejected, onProgress ) {\n\t\t\t\t\tvar maxDepth = 0;\n\t\t\t\t\tfunction resolve( depth, deferred, handler, special ) {\n\t\t\t\t\t\treturn function() {\n\t\t\t\t\t\t\tvar that = this,\n\t\t\t\t\t\t\t\targs = arguments,\n\t\t\t\t\t\t\t\tmightThrow = function() {\n\t\t\t\t\t\t\t\t\tvar returned, then;\n\n\t\t\t\t\t\t\t\t\t// Support: Promises/A+ section 2.3.3.3.3\n\t\t\t\t\t\t\t\t\t// https://promisesaplus.com/#point-59\n\t\t\t\t\t\t\t\t\t// Ignore double-resolution attempts\n\t\t\t\t\t\t\t\t\tif ( depth < maxDepth ) {\n\t\t\t\t\t\t\t\t\t\treturn;\n\t\t\t\t\t\t\t\t\t}\n\n\t\t\t\t\t\t\t\t\treturned = handler.apply( that, args );\n\n\t\t\t\t\t\t\t\t\t// Support: Promises/A+ section 2.3.1\n\t\t\t\t\t\t\t\t\t// https://promisesaplus.com/#point-48\n\t\t\t\t\t\t\t\t\tif ( returned === deferred.promise() ) {\n\t\t\t\t\t\t\t\t\t\tthrow new TypeError( \"Thenable self-resolution\" );\n\t\t\t\t\t\t\t\t\t}\n\n\t\t\t\t\t\t\t\t\t// Support: Promises/A+ sections 2.3.3.1, 3.5\n\t\t\t\t\t\t\t\t\t// https://promisesaplus.com/#point-54\n\t\t\t\t\t\t\t\t\t// https://promisesaplus.com/#point-75\n\t\t\t\t\t\t\t\t\t// Retrieve `then` only once\n\t\t\t\t\t\t\t\t\tthen = returned &&\n\n\t\t\t\t\t\t\t\t\t\t// Support: Promises/A+ section 2.3.4\n\t\t\t\t\t\t\t\t\t\t// https://promisesaplus.com/#point-64\n\t\t\t\t\t\t\t\t\t\t// Only check objects and functions for thenability\n\t\t\t\t\t\t\t\t\t\t( typeof returned === \"object\" ||\n\t\t\t\t\t\t\t\t\t\t\ttypeof returned === \"function\" ) &&\n\t\t\t\t\t\t\t\t\t\treturned.then;\n\n\t\t\t\t\t\t\t\t\t// Handle a returned thenable\n\t\t\t\t\t\t\t\t\tif ( isFunction( then ) ) {\n\n\t\t\t\t\t\t\t\t\t\t// Special processors (notify) just wait for resolution\n\t\t\t\t\t\t\t\t\t\tif ( special ) {\n\t\t\t\t\t\t\t\t\t\t\tthen.call(\n\t\t\t\t\t\t\t\t\t\t\t\treturned,\n\t\t\t\t\t\t\t\t\t\t\t\tresolve( maxDepth, deferred, Identity, special ),\n\t\t\t\t\t\t\t\t\t\t\t\tresolve( maxDepth, deferred, Thrower, special )\n\t\t\t\t\t\t\t\t\t\t\t);\n\n\t\t\t\t\t\t\t\t\t\t// Normal processors (resolve) also hook into progress\n\t\t\t\t\t\t\t\t\t\t} else {\n\n\t\t\t\t\t\t\t\t\t\t\t// ...and disregard older resolution values\n\t\t\t\t\t\t\t\t\t\t\tmaxDepth++;\n\n\t\t\t\t\t\t\t\t\t\t\tthen.call(\n\t\t\t\t\t\t\t\t\t\t\t\treturned,\n\t\t\t\t\t\t\t\t\t\t\t\tresolve( maxDepth, deferred, Identity, special ),\n\t\t\t\t\t\t\t\t\t\t\t\tresolve( maxDepth, deferred, Thrower, special ),\n\t\t\t\t\t\t\t\t\t\t\t\tresolve( maxDepth, deferred, Identity,\n\t\t\t\t\t\t\t\t\t\t\t\t\tdeferred.notifyWith )\n\t\t\t\t\t\t\t\t\t\t\t);\n\t\t\t\t\t\t\t\t\t\t}\n\n\t\t\t\t\t\t\t\t\t// Handle all other returned values\n\t\t\t\t\t\t\t\t\t} else {\n\n\t\t\t\t\t\t\t\t\t\t// Only substitute handlers pass on context\n\t\t\t\t\t\t\t\t\t\t// and multiple values (non-spec behavior)\n\t\t\t\t\t\t\t\t\t\tif ( handler !== Identity ) {\n\t\t\t\t\t\t\t\t\t\t\tthat = undefined;\n\t\t\t\t\t\t\t\t\t\t\targs = [ returned ];\n\t\t\t\t\t\t\t\t\t\t}\n\n\t\t\t\t\t\t\t\t\t\t// Process the value(s)\n\t\t\t\t\t\t\t\t\t\t// Default process is resolve\n\t\t\t\t\t\t\t\t\t\t( special || deferred.resolveWith )( that, args );\n\t\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t\t},\n\n\t\t\t\t\t\t\t\t// Only normal processors (resolve) catch and reject exceptions\n\t\t\t\t\t\t\t\tprocess = special ?\n\t\t\t\t\t\t\t\t\tmightThrow :\n\t\t\t\t\t\t\t\t\tfunction() {\n\t\t\t\t\t\t\t\t\t\ttry {\n\t\t\t\t\t\t\t\t\t\t\tmightThrow();\n\t\t\t\t\t\t\t\t\t\t} catch ( e ) {\n\n\t\t\t\t\t\t\t\t\t\t\tif ( jQuery.Deferred.exceptionHook ) {\n\t\t\t\t\t\t\t\t\t\t\t\tjQuery.Deferred.exceptionHook( e,\n\t\t\t\t\t\t\t\t\t\t\t\t\tprocess.stackTrace );\n\t\t\t\t\t\t\t\t\t\t\t}\n\n\t\t\t\t\t\t\t\t\t\t\t// Support: Promises/A+ section 2.3.3.3.4.1\n\t\t\t\t\t\t\t\t\t\t\t// https://promisesaplus.com/#point-61\n\t\t\t\t\t\t\t\t\t\t\t// Ignore post-resolution exceptions\n\t\t\t\t\t\t\t\t\t\t\tif ( depth + 1 >= maxDepth ) {\n\n\t\t\t\t\t\t\t\t\t\t\t\t// Only substitute handlers pass on context\n\t\t\t\t\t\t\t\t\t\t\t\t// and multiple values (non-spec behavior)\n\t\t\t\t\t\t\t\t\t\t\t\tif ( handler !== Thrower ) {\n\t\t\t\t\t\t\t\t\t\t\t\t\tthat = undefined;\n\t\t\t\t\t\t\t\t\t\t\t\t\targs = [ e ];\n\t\t\t\t\t\t\t\t\t\t\t\t}\n\n\t\t\t\t\t\t\t\t\t\t\t\tdeferred.rejectWith( that, args );\n\t\t\t\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t\t\t};\n\n\t\t\t\t\t\t\t// Support: Promises/A+ section 2.3.3.3.1\n\t\t\t\t\t\t\t// https://promisesaplus.com/#point-57\n\t\t\t\t\t\t\t// Re-resolve promises immediately to dodge false rejection from\n\t\t\t\t\t\t\t// subsequent errors\n\t\t\t\t\t\t\tif ( depth ) {\n\t\t\t\t\t\t\t\tprocess();\n\t\t\t\t\t\t\t} else {\n\n\t\t\t\t\t\t\t\t// Call an optional hook to record the stack, in case of exception\n\t\t\t\t\t\t\t\t// since it's otherwise lost when execution goes async\n\t\t\t\t\t\t\t\tif ( jQuery.Deferred.getStackHook ) {\n\t\t\t\t\t\t\t\t\tprocess.stackTrace = jQuery.Deferred.getStackHook();\n\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t\twindow.setTimeout( process );\n\t\t\t\t\t\t\t}\n\t\t\t\t\t\t};\n\t\t\t\t\t}\n\n\t\t\t\t\treturn jQuery.Deferred( function( newDefer ) {\n\n\t\t\t\t\t\t// progress_handlers.add( ... )\n\t\t\t\t\t\ttuples[ 0 ][ 3 ].add(\n\t\t\t\t\t\t\tresolve(\n\t\t\t\t\t\t\t\t0,\n\t\t\t\t\t\t\t\tnewDefer,\n\t\t\t\t\t\t\t\tisFunction( onProgress ) ?\n\t\t\t\t\t\t\t\t\tonProgress :\n\t\t\t\t\t\t\t\t\tIdentity,\n\t\t\t\t\t\t\t\tnewDefer.notifyWith\n\t\t\t\t\t\t\t)\n\t\t\t\t\t\t);\n\n\t\t\t\t\t\t// fulfilled_handlers.add( ... )\n\t\t\t\t\t\ttuples[ 1 ][ 3 ].add(\n\t\t\t\t\t\t\tresolve(\n\t\t\t\t\t\t\t\t0,\n\t\t\t\t\t\t\t\tnewDefer,\n\t\t\t\t\t\t\t\tisFunction( onFulfilled ) ?\n\t\t\t\t\t\t\t\t\tonFulfilled :\n\t\t\t\t\t\t\t\t\tIdentity\n\t\t\t\t\t\t\t)\n\t\t\t\t\t\t);\n\n\t\t\t\t\t\t// rejected_handlers.add( ... )\n\t\t\t\t\t\ttuples[ 2 ][ 3 ].add(\n\t\t\t\t\t\t\tresolve(\n\t\t\t\t\t\t\t\t0,\n\t\t\t\t\t\t\t\tnewDefer,\n\t\t\t\t\t\t\t\tisFunction( onRejected ) ?\n\t\t\t\t\t\t\t\t\tonRejected :\n\t\t\t\t\t\t\t\t\tThrower\n\t\t\t\t\t\t\t)\n\t\t\t\t\t\t);\n\t\t\t\t\t} ).promise();\n\t\t\t\t},\n\n\t\t\t\t// Get a promise for this deferred\n\t\t\t\t// If obj is provided, the promise aspect is added to the object\n\t\t\t\tpromise: function( obj ) {\n\t\t\t\t\treturn obj != null ? jQuery.extend( obj, promise ) : promise;\n\t\t\t\t}\n\t\t\t},\n\t\t\tdeferred = {};\n\n\t\t// Add list-specific methods\n\t\tjQuery.each( tuples, function( i, tuple ) {\n\t\t\tvar list = tuple[ 2 ],\n\t\t\t\tstateString = tuple[ 5 ];\n\n\t\t\t// promise.progress = list.add\n\t\t\t// promise.done = list.add\n\t\t\t// promise.fail = list.add\n\t\t\tpromise[ tuple[ 1 ] ] = list.add;\n\n\t\t\t// Handle state\n\t\t\tif ( stateString ) {\n\t\t\t\tlist.add(\n\t\t\t\t\tfunction() {\n\n\t\t\t\t\t\t// state = \"resolved\" (i.e., fulfilled)\n\t\t\t\t\t\t// state = \"rejected\"\n\t\t\t\t\t\tstate = stateString;\n\t\t\t\t\t},\n\n\t\t\t\t\t// rejected_callbacks.disable\n\t\t\t\t\t// fulfilled_callbacks.disable\n\t\t\t\t\ttuples[ 3 - i ][ 2 ].disable,\n\n\t\t\t\t\t// rejected_handlers.disable\n\t\t\t\t\t// fulfilled_handlers.disable\n\t\t\t\t\ttuples[ 3 - i ][ 3 ].disable,\n\n\t\t\t\t\t// progress_callbacks.lock\n\t\t\t\t\ttuples[ 0 ][ 2 ].lock,\n\n\t\t\t\t\t// progress_handlers.lock\n\t\t\t\t\ttuples[ 0 ][ 3 ].lock\n\t\t\t\t);\n\t\t\t}\n\n\t\t\t// progress_handlers.fire\n\t\t\t// fulfilled_handlers.fire\n\t\t\t// rejected_handlers.fire\n\t\t\tlist.add( tuple[ 3 ].fire );\n\n\t\t\t// deferred.notify = function() { deferred.notifyWith(...) }\n\t\t\t// deferred.resolve = function() { deferred.resolveWith(...) }\n\t\t\t// deferred.reject = function() { deferred.rejectWith(...) }\n\t\t\tdeferred[ tuple[ 0 ] ] = function() {\n\t\t\t\tdeferred[ tuple[ 0 ] + \"With\" ]( this === deferred ? undefined : this, arguments );\n\t\t\t\treturn this;\n\t\t\t};\n\n\t\t\t// deferred.notifyWith = list.fireWith\n\t\t\t// deferred.resolveWith = list.fireWith\n\t\t\t// deferred.rejectWith = list.fireWith\n\t\t\tdeferred[ tuple[ 0 ] + \"With\" ] = list.fireWith;\n\t\t} );\n\n\t\t// Make the deferred a promise\n\t\tpromise.promise( deferred );\n\n\t\t// Call given func if any\n\t\tif ( func ) {\n\t\t\tfunc.call( deferred, deferred );\n\t\t}\n\n\t\t// All done!\n\t\treturn deferred;\n\t},\n\n\t// Deferred helper\n\twhen: function( singleValue ) {\n\t\tvar\n\n\t\t\t// count of uncompleted subordinates\n\t\t\tremaining = arguments.length,\n\n\t\t\t// count of unprocessed arguments\n\t\t\ti = remaining,\n\n\t\t\t// subordinate fulfillment data\n\t\t\tresolveContexts = Array( i ),\n\t\t\tresolveValues = slice.call( arguments ),\n\n\t\t\t// the primary Deferred\n\t\t\tprimary = jQuery.Deferred(),\n\n\t\t\t// subordinate callback factory\n\t\t\tupdateFunc = function( i ) {\n\t\t\t\treturn function( value ) {\n\t\t\t\t\tresolveContexts[ i ] = this;\n\t\t\t\t\tresolveValues[ i ] = arguments.length > 1 ? slice.call( arguments ) : value;\n\t\t\t\t\tif ( !( --remaining ) ) {\n\t\t\t\t\t\tprimary.resolveWith( resolveContexts, resolveValues );\n\t\t\t\t\t}\n\t\t\t\t};\n\t\t\t};\n\n\t\t// Single- and empty arguments are adopted like Promise.resolve\n\t\tif ( remaining <= 1 ) {\n\t\t\tadoptValue( singleValue, primary.done( updateFunc( i ) ).resolve, primary.reject,\n\t\t\t\t!remaining );\n\n\t\t\t// Use .then() to unwrap secondary thenables (cf. gh-3000)\n\t\t\tif ( primary.state() === \"pending\" ||\n\t\t\t\tisFunction( resolveValues[ i ] && resolveValues[ i ].then ) ) {\n\n\t\t\t\treturn primary.then();\n\t\t\t}\n\t\t}\n\n\t\t// Multiple arguments are aggregated like Promise.all array elements\n\t\twhile ( i-- ) {\n\t\t\tadoptValue( resolveValues[ i ], updateFunc( i ), primary.reject );\n\t\t}\n\n\t\treturn primary.promise();\n\t}\n} );\n\n\n// These usually indicate a programmer mistake during development,\n// warn about them ASAP rather than swallowing them by default.\nvar rerrorNames = /^(Eval|Internal|Range|Reference|Syntax|Type|URI)Error$/;\n\njQuery.Deferred.exceptionHook = function( error, stack ) {\n\n\t// Support: IE 8 - 9 only\n\t// Console exists when dev tools are open, which can happen at any time\n\tif ( window.console && window.console.warn && error && rerrorNames.test( error.name ) ) {\n\t\twindow.console.warn( \"jQuery.Deferred exception: \" + error.message, error.stack, stack );\n\t}\n};\n\n\n\n\njQuery.readyException = function( error ) {\n\twindow.setTimeout( function() {\n\t\tthrow error;\n\t} );\n};\n\n\n\n\n// The deferred used on DOM ready\nvar readyList = jQuery.Deferred();\n\njQuery.fn.ready = function( fn ) {\n\n\treadyList\n\t\t.then( fn )\n\n\t\t// Wrap jQuery.readyException in a function so that the lookup\n\t\t// happens at the time of error handling instead of callback\n\t\t// registration.\n\t\t.catch( function( error ) {\n\t\t\tjQuery.readyException( error );\n\t\t} );\n\n\treturn this;\n};\n\njQuery.extend( {\n\n\t// Is the DOM ready to be used? Set to true once it occurs.\n\tisReady: false,\n\n\t// A counter to track how many items to wait for before\n\t// the ready event fires. See #6781\n\treadyWait: 1,\n\n\t// Handle when the DOM is ready\n\tready: function( wait ) {\n\n\t\t// Abort if there are pending holds or we're already ready\n\t\tif ( wait === true ? --jQuery.readyWait : jQuery.isReady ) {\n\t\t\treturn;\n\t\t}\n\n\t\t// Remember that the DOM is ready\n\t\tjQuery.isReady = true;\n\n\t\t// If a normal DOM Ready event fired, decrement, and wait if need be\n\t\tif ( wait !== true && --jQuery.readyWait > 0 ) {\n\t\t\treturn;\n\t\t}\n\n\t\t// If there are functions bound, to execute\n\t\treadyList.resolveWith( document, [ jQuery ] );\n\t}\n} );\n\njQuery.ready.then = readyList.then;\n\n// The ready event handler and self cleanup method\nfunction completed() {\n\tdocument.removeEventListener( \"DOMContentLoaded\", completed );\n\twindow.removeEventListener( \"load\", completed );\n\tjQuery.ready();\n}\n\n// Catch cases where $(document).ready() is called\n// after the browser event has already occurred.\n// Support: IE <=9 - 10 only\n// Older IE sometimes signals \"interactive\" too soon\nif ( document.readyState === \"complete\" ||\n\t( document.readyState !== \"loading\" && !document.documentElement.doScroll ) ) {\n\n\t// Handle it asynchronously to allow scripts the opportunity to delay ready\n\twindow.setTimeout( jQuery.ready );\n\n} else {\n\n\t// Use the handy event callback\n\tdocument.addEventListener( \"DOMContentLoaded\", completed );\n\n\t// A fallback to window.onload, that will always work\n\twindow.addEventListener( \"load\", completed );\n}\n\n\n\n\n// Multifunctional method to get and set values of a collection\n// The value/s can optionally be executed if it's a function\nvar access = function( elems, fn, key, value, chainable, emptyGet, raw ) {\n\tvar i = 0,\n\t\tlen = elems.length,\n\t\tbulk = key == null;\n\n\t// Sets many values\n\tif ( toType( key ) === \"object\" ) {\n\t\tchainable = true;\n\t\tfor ( i in key ) {\n\t\t\taccess( elems, fn, i, key[ i ], true, emptyGet, raw );\n\t\t}\n\n\t// Sets one value\n\t} else if ( value !== undefined ) {\n\t\tchainable = true;\n\n\t\tif ( !isFunction( value ) ) {\n\t\t\traw = true;\n\t\t}\n\n\t\tif ( bulk ) {\n\n\t\t\t// Bulk operations run against the entire set\n\t\t\tif ( raw ) {\n\t\t\t\tfn.call( elems, value );\n\t\t\t\tfn = null;\n\n\t\t\t// ...except when executing function values\n\t\t\t} else {\n\t\t\t\tbulk = fn;\n\t\t\t\tfn = function( elem, _key, value ) {\n\t\t\t\t\treturn bulk.call( jQuery( elem ), value );\n\t\t\t\t};\n\t\t\t}\n\t\t}\n\n\t\tif ( fn ) {\n\t\t\tfor ( ; i < len; i++ ) {\n\t\t\t\tfn(\n\t\t\t\t\telems[ i ], key, raw ?\n\t\t\t\t\t\tvalue :\n\t\t\t\t\t\tvalue.call( elems[ i ], i, fn( elems[ i ], key ) )\n\t\t\t\t);\n\t\t\t}\n\t\t}\n\t}\n\n\tif ( chainable ) {\n\t\treturn elems;\n\t}\n\n\t// Gets\n\tif ( bulk ) {\n\t\treturn fn.call( elems );\n\t}\n\n\treturn len ? fn( elems[ 0 ], key ) : emptyGet;\n};\n\n\n// Matches dashed string for camelizing\nvar rmsPrefix = /^-ms-/,\n\trdashAlpha = /-([a-z])/g;\n\n// Used by camelCase as callback to replace()\nfunction fcamelCase( _all, letter ) {\n\treturn letter.toUpperCase();\n}\n\n// Convert dashed to camelCase; used by the css and data modules\n// Support: IE <=9 - 11, Edge 12 - 15\n// Microsoft forgot to hump their vendor prefix (#9572)\nfunction camelCase( string ) {\n\treturn string.replace( rmsPrefix, \"ms-\" ).replace( rdashAlpha, fcamelCase );\n}\nvar acceptData = function( owner ) {\n\n\t// Accepts only:\n\t// - Node\n\t// - Node.ELEMENT_NODE\n\t// - Node.DOCUMENT_NODE\n\t// - Object\n\t// - Any\n\treturn owner.nodeType === 1 || owner.nodeType === 9 || !( +owner.nodeType );\n};\n\n\n\n\nfunction Data() {\n\tthis.expando = jQuery.expando + Data.uid++;\n}\n\nData.uid = 1;\n\nData.prototype = {\n\n\tcache: function( owner ) {\n\n\t\t// Check if the owner object already has a cache\n\t\tvar value = owner[ this.expando ];\n\n\t\t// If not, create one\n\t\tif ( !value ) {\n\t\t\tvalue = {};\n\n\t\t\t// We can accept data for non-element nodes in modern browsers,\n\t\t\t// but we should not, see #8335.\n\t\t\t// Always return an empty object.\n\t\t\tif ( acceptData( owner ) ) {\n\n\t\t\t\t// If it is a node unlikely to be stringify-ed or looped over\n\t\t\t\t// use plain assignment\n\t\t\t\tif ( owner.nodeType ) {\n\t\t\t\t\towner[ this.expando ] = value;\n\n\t\t\t\t// Otherwise secure it in a non-enumerable property\n\t\t\t\t// configurable must be true to allow the property to be\n\t\t\t\t// deleted when data is removed\n\t\t\t\t} else {\n\t\t\t\t\tObject.defineProperty( owner, this.expando, {\n\t\t\t\t\t\tvalue: value,\n\t\t\t\t\t\tconfigurable: true\n\t\t\t\t\t} );\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\n\t\treturn value;\n\t},\n\tset: function( owner, data, value ) {\n\t\tvar prop,\n\t\t\tcache = this.cache( owner );\n\n\t\t// Handle: [ owner, key, value ] args\n\t\t// Always use camelCase key (gh-2257)\n\t\tif ( typeof data === \"string\" ) {\n\t\t\tcache[ camelCase( data ) ] = value;\n\n\t\t// Handle: [ owner, { properties } ] args\n\t\t} else {\n\n\t\t\t// Copy the properties one-by-one to the cache object\n\t\t\tfor ( prop in data ) {\n\t\t\t\tcache[ camelCase( prop ) ] = data[ prop ];\n\t\t\t}\n\t\t}\n\t\treturn cache;\n\t},\n\tget: function( owner, key ) {\n\t\treturn key === undefined ?\n\t\t\tthis.cache( owner ) :\n\n\t\t\t// Always use camelCase key (gh-2257)\n\t\t\towner[ this.expando ] && owner[ this.expando ][ camelCase( key ) ];\n\t},\n\taccess: function( owner, key, value ) {\n\n\t\t// In cases where either:\n\t\t//\n\t\t// 1. No key was specified\n\t\t// 2. A string key was specified, but no value provided\n\t\t//\n\t\t// Take the \"read\" path and allow the get method to determine\n\t\t// which value to return, respectively either:\n\t\t//\n\t\t// 1. The entire cache object\n\t\t// 2. The data stored at the key\n\t\t//\n\t\tif ( key === undefined ||\n\t\t\t\t( ( key && typeof key === \"string\" ) && value === undefined ) ) {\n\n\t\t\treturn this.get( owner, key );\n\t\t}\n\n\t\t// When the key is not a string, or both a key and value\n\t\t// are specified, set or extend (existing objects) with either:\n\t\t//\n\t\t// 1. An object of properties\n\t\t// 2. A key and value\n\t\t//\n\t\tthis.set( owner, key, value );\n\n\t\t// Since the \"set\" path can have two possible entry points\n\t\t// return the expected data based on which path was taken[*]\n\t\treturn value !== undefined ? value : key;\n\t},\n\tremove: function( owner, key ) {\n\t\tvar i,\n\t\t\tcache = owner[ this.expando ];\n\n\t\tif ( cache === undefined ) {\n\t\t\treturn;\n\t\t}\n\n\t\tif ( key !== undefined ) {\n\n\t\t\t// Support array or space separated string of keys\n\t\t\tif ( Array.isArray( key ) ) {\n\n\t\t\t\t// If key is an array of keys...\n\t\t\t\t// We always set camelCase keys, so remove that.\n\t\t\t\tkey = key.map( camelCase );\n\t\t\t} else {\n\t\t\t\tkey = camelCase( key );\n\n\t\t\t\t// If a key with the spaces exists, use it.\n\t\t\t\t// Otherwise, create an array by matching non-whitespace\n\t\t\t\tkey = key in cache ?\n\t\t\t\t\t[ key ] :\n\t\t\t\t\t( key.match( rnothtmlwhite ) || [] );\n\t\t\t}\n\n\t\t\ti = key.length;\n\n\t\t\twhile ( i-- ) {\n\t\t\t\tdelete cache[ key[ i ] ];\n\t\t\t}\n\t\t}\n\n\t\t// Remove the expando if there's no more data\n\t\tif ( key === undefined || jQuery.isEmptyObject( cache ) ) {\n\n\t\t\t// Support: Chrome <=35 - 45\n\t\t\t// Webkit & Blink performance suffers when deleting properties\n\t\t\t// from DOM nodes, so set to undefined instead\n\t\t\t// https://bugs.chromium.org/p/chromium/issues/detail?id=378607 (bug restricted)\n\t\t\tif ( owner.nodeType ) {\n\t\t\t\towner[ this.expando ] = undefined;\n\t\t\t} else {\n\t\t\t\tdelete owner[ this.expando ];\n\t\t\t}\n\t\t}\n\t},\n\thasData: function( owner ) {\n\t\tvar cache = owner[ this.expando ];\n\t\treturn cache !== undefined && !jQuery.isEmptyObject( cache );\n\t}\n};\nvar dataPriv = new Data();\n\nvar dataUser = new Data();\n\n\n\n//\tImplementation Summary\n//\n//\t1. Enforce API surface and semantic compatibility with 1.9.x branch\n//\t2. Improve the module's maintainability by reducing the storage\n//\t\tpaths to a single mechanism.\n//\t3. Use the same single mechanism to support \"private\" and \"user\" data.\n//\t4. _Never_ expose \"private\" data to user code (TODO: Drop _data, _removeData)\n//\t5. Avoid exposing implementation details on user objects (eg. expando properties)\n//\t6. Provide a clear path for implementation upgrade to WeakMap in 2014\n\nvar rbrace = /^(?:\\{[\\w\\W]*\\}|\\[[\\w\\W]*\\])$/,\n\trmultiDash = /[A-Z]/g;\n\nfunction getData( data ) {\n\tif ( data === \"true\" ) {\n\t\treturn true;\n\t}\n\n\tif ( data === \"false\" ) {\n\t\treturn false;\n\t}\n\n\tif ( data === \"null\" ) {\n\t\treturn null;\n\t}\n\n\t// Only convert to a number if it doesn't change the string\n\tif ( data === +data + \"\" ) {\n\t\treturn +data;\n\t}\n\n\tif ( rbrace.test( data ) ) {\n\t\treturn JSON.parse( data );\n\t}\n\n\treturn data;\n}\n\nfunction dataAttr( elem, key, data ) {\n\tvar name;\n\n\t// If nothing was found internally, try to fetch any\n\t// data from the HTML5 data-* attribute\n\tif ( data === undefined && elem.nodeType === 1 ) {\n\t\tname = \"data-\" + key.replace( rmultiDash, \"-$&\" ).toLowerCase();\n\t\tdata = elem.getAttribute( name );\n\n\t\tif ( typeof data === \"string\" ) {\n\t\t\ttry {\n\t\t\t\tdata = getData( data );\n\t\t\t} catch ( e ) {}\n\n\t\t\t// Make sure we set the data so it isn't changed later\n\t\t\tdataUser.set( elem, key, data );\n\t\t} else {\n\t\t\tdata = undefined;\n\t\t}\n\t}\n\treturn data;\n}\n\njQuery.extend( {\n\thasData: function( elem ) {\n\t\treturn dataUser.hasData( elem ) || dataPriv.hasData( elem );\n\t},\n\n\tdata: function( elem, name, data ) {\n\t\treturn dataUser.access( elem, name, data );\n\t},\n\n\tremoveData: function( elem, name ) {\n\t\tdataUser.remove( elem, name );\n\t},\n\n\t// TODO: Now that all calls to _data and _removeData have been replaced\n\t// with direct calls to dataPriv methods, these can be deprecated.\n\t_data: function( elem, name, data ) {\n\t\treturn dataPriv.access( elem, name, data );\n\t},\n\n\t_removeData: function( elem, name ) {\n\t\tdataPriv.remove( elem, name );\n\t}\n} );\n\njQuery.fn.extend( {\n\tdata: function( key, value ) {\n\t\tvar i, name, data,\n\t\t\telem = this[ 0 ],\n\t\t\tattrs = elem && elem.attributes;\n\n\t\t// Gets all values\n\t\tif ( key === undefined ) {\n\t\t\tif ( this.length ) {\n\t\t\t\tdata = dataUser.get( elem );\n\n\t\t\t\tif ( elem.nodeType === 1 && !dataPriv.get( elem, \"hasDataAttrs\" ) ) {\n\t\t\t\t\ti = attrs.length;\n\t\t\t\t\twhile ( i-- ) {\n\n\t\t\t\t\t\t// Support: IE 11 only\n\t\t\t\t\t\t// The attrs elements can be null (#14894)\n\t\t\t\t\t\tif ( attrs[ i ] ) {\n\t\t\t\t\t\t\tname = attrs[ i ].name;\n\t\t\t\t\t\t\tif ( name.indexOf( \"data-\" ) === 0 ) {\n\t\t\t\t\t\t\t\tname = camelCase( name.slice( 5 ) );\n\t\t\t\t\t\t\t\tdataAttr( elem, name, data[ name ] );\n\t\t\t\t\t\t\t}\n\t\t\t\t\t\t}\n\t\t\t\t\t}\n\t\t\t\t\tdataPriv.set( elem, \"hasDataAttrs\", true );\n\t\t\t\t}\n\t\t\t}\n\n\t\t\treturn data;\n\t\t}\n\n\t\t// Sets multiple values\n\t\tif ( typeof key === \"object\" ) {\n\t\t\treturn this.each( function() {\n\t\t\t\tdataUser.set( this, key );\n\t\t\t} );\n\t\t}\n\n\t\treturn access( this, function( value ) {\n\t\t\tvar data;\n\n\t\t\t// The calling jQuery object (element matches) is not empty\n\t\t\t// (and therefore has an element appears at this[ 0 ]) and the\n\t\t\t// `value` parameter was not undefined. An empty jQuery object\n\t\t\t// will result in `undefined` for elem = this[ 0 ] which will\n\t\t\t// throw an exception if an attempt to read a data cache is made.\n\t\t\tif ( elem && value === undefined ) {\n\n\t\t\t\t// Attempt to get data from the cache\n\t\t\t\t// The key will always be camelCased in Data\n\t\t\t\tdata = dataUser.get( elem, key );\n\t\t\t\tif ( data !== undefined ) {\n\t\t\t\t\treturn data;\n\t\t\t\t}\n\n\t\t\t\t// Attempt to \"discover\" the data in\n\t\t\t\t// HTML5 custom data-* attrs\n\t\t\t\tdata = dataAttr( elem, key );\n\t\t\t\tif ( data !== undefined ) {\n\t\t\t\t\treturn data;\n\t\t\t\t}\n\n\t\t\t\t// We tried really hard, but the data doesn't exist.\n\t\t\t\treturn;\n\t\t\t}\n\n\t\t\t// Set the data...\n\t\t\tthis.each( function() {\n\n\t\t\t\t// We always store the camelCased key\n\t\t\t\tdataUser.set( this, key, value );\n\t\t\t} );\n\t\t}, null, value, arguments.length > 1, null, true );\n\t},\n\n\tremoveData: function( key ) {\n\t\treturn this.each( function() {\n\t\t\tdataUser.remove( this, key );\n\t\t} );\n\t}\n} );\n\n\njQuery.extend( {\n\tqueue: function( elem, type, data ) {\n\t\tvar queue;\n\n\t\tif ( elem ) {\n\t\t\ttype = ( type || \"fx\" ) + \"queue\";\n\t\t\tqueue = dataPriv.get( elem, type );\n\n\t\t\t// Speed up dequeue by getting out quickly if this is just a lookup\n\t\t\tif ( data ) {\n\t\t\t\tif ( !queue || Array.isArray( data ) ) {\n\t\t\t\t\tqueue = dataPriv.access( elem, type, jQuery.makeArray( data ) );\n\t\t\t\t} else {\n\t\t\t\t\tqueue.push( data );\n\t\t\t\t}\n\t\t\t}\n\t\t\treturn queue || [];\n\t\t}\n\t},\n\n\tdequeue: function( elem, type ) {\n\t\ttype = type || \"fx\";\n\n\t\tvar queue = jQuery.queue( elem, type ),\n\t\t\tstartLength = queue.length,\n\t\t\tfn = queue.shift(),\n\t\t\thooks = jQuery._queueHooks( elem, type ),\n\t\t\tnext = function() {\n\t\t\t\tjQuery.dequeue( elem, type );\n\t\t\t};\n\n\t\t// If the fx queue is dequeued, always remove the progress sentinel\n\t\tif ( fn === \"inprogress\" ) {\n\t\t\tfn = queue.shift();\n\t\t\tstartLength--;\n\t\t}\n\n\t\tif ( fn ) {\n\n\t\t\t// Add a progress sentinel to prevent the fx queue from being\n\t\t\t// automatically dequeued\n\t\t\tif ( type === \"fx\" ) {\n\t\t\t\tqueue.unshift( \"inprogress\" );\n\t\t\t}\n\n\t\t\t// Clear up the last queue stop function\n\t\t\tdelete hooks.stop;\n\t\t\tfn.call( elem, next, hooks );\n\t\t}\n\n\t\tif ( !startLength && hooks ) {\n\t\t\thooks.empty.fire();\n\t\t}\n\t},\n\n\t// Not public - generate a queueHooks object, or return the current one\n\t_queueHooks: function( elem, type ) {\n\t\tvar key = type + \"queueHooks\";\n\t\treturn dataPriv.get( elem, key ) || dataPriv.access( elem, key, {\n\t\t\tempty: jQuery.Callbacks( \"once memory\" ).add( function() {\n\t\t\t\tdataPriv.remove( elem, [ type + \"queue\", key ] );\n\t\t\t} )\n\t\t} );\n\t}\n} );\n\njQuery.fn.extend( {\n\tqueue: function( type, data ) {\n\t\tvar setter = 2;\n\n\t\tif ( typeof type !== \"string\" ) {\n\t\t\tdata = type;\n\t\t\ttype = \"fx\";\n\t\t\tsetter--;\n\t\t}\n\n\t\tif ( arguments.length < setter ) {\n\t\t\treturn jQuery.queue( this[ 0 ], type );\n\t\t}\n\n\t\treturn data === undefined ?\n\t\t\tthis :\n\t\t\tthis.each( function() {\n\t\t\t\tvar queue = jQuery.queue( this, type, data );\n\n\t\t\t\t// Ensure a hooks for this queue\n\t\t\t\tjQuery._queueHooks( this, type );\n\n\t\t\t\tif ( type === \"fx\" && queue[ 0 ] !== \"inprogress\" ) {\n\t\t\t\t\tjQuery.dequeue( this, type );\n\t\t\t\t}\n\t\t\t} );\n\t},\n\tdequeue: function( type ) {\n\t\treturn this.each( function() {\n\t\t\tjQuery.dequeue( this, type );\n\t\t} );\n\t},\n\tclearQueue: function( type ) {\n\t\treturn this.queue( type || \"fx\", [] );\n\t},\n\n\t// Get a promise resolved when queues of a certain type\n\t// are emptied (fx is the type by default)\n\tpromise: function( type, obj ) {\n\t\tvar tmp,\n\t\t\tcount = 1,\n\t\t\tdefer = jQuery.Deferred(),\n\t\t\telements = this,\n\t\t\ti = this.length,\n\t\t\tresolve = function() {\n\t\t\t\tif ( !( --count ) ) {\n\t\t\t\t\tdefer.resolveWith( elements, [ elements ] );\n\t\t\t\t}\n\t\t\t};\n\n\t\tif ( typeof type !== \"string\" ) {\n\t\t\tobj = type;\n\t\t\ttype = undefined;\n\t\t}\n\t\ttype = type || \"fx\";\n\n\t\twhile ( i-- ) {\n\t\t\ttmp = dataPriv.get( elements[ i ], type + \"queueHooks\" );\n\t\t\tif ( tmp && tmp.empty ) {\n\t\t\t\tcount++;\n\t\t\t\ttmp.empty.add( resolve );\n\t\t\t}\n\t\t}\n\t\tresolve();\n\t\treturn defer.promise( obj );\n\t}\n} );\nvar pnum = ( /[+-]?(?:\\d*\\.|)\\d+(?:[eE][+-]?\\d+|)/ ).source;\n\nvar rcssNum = new RegExp( \"^(?:([+-])=|)(\" + pnum + \")([a-z%]*)$\", \"i\" );\n\n\nvar cssExpand = [ \"Top\", \"Right\", \"Bottom\", \"Left\" ];\n\nvar documentElement = document.documentElement;\n\n\n\n\tvar isAttached = function( elem ) {\n\t\t\treturn jQuery.contains( elem.ownerDocument, elem );\n\t\t},\n\t\tcomposed = { composed: true };\n\n\t// Support: IE 9 - 11+, Edge 12 - 18+, iOS 10.0 - 10.2 only\n\t// Check attachment across shadow DOM boundaries when possible (gh-3504)\n\t// Support: iOS 10.0-10.2 only\n\t// Early iOS 10 versions support `attachShadow` but not `getRootNode`,\n\t// leading to errors. We need to check for `getRootNode`.\n\tif ( documentElement.getRootNode ) {\n\t\tisAttached = function( elem ) {\n\t\t\treturn jQuery.contains( elem.ownerDocument, elem ) ||\n\t\t\t\telem.getRootNode( composed ) === elem.ownerDocument;\n\t\t};\n\t}\nvar isHiddenWithinTree = function( elem, el ) {\n\n\t\t// isHiddenWithinTree might be called from jQuery#filter function;\n\t\t// in that case, element will be second argument\n\t\telem = el || elem;\n\n\t\t// Inline style trumps all\n\t\treturn elem.style.display === \"none\" ||\n\t\t\telem.style.display === \"\" &&\n\n\t\t\t// Otherwise, check computed style\n\t\t\t// Support: Firefox <=43 - 45\n\t\t\t// Disconnected elements can have computed display: none, so first confirm that elem is\n\t\t\t// in the document.\n\t\t\tisAttached( elem ) &&\n\n\t\t\tjQuery.css( elem, \"display\" ) === \"none\";\n\t};\n\n\n\nfunction adjustCSS( elem, prop, valueParts, tween ) {\n\tvar adjusted, scale,\n\t\tmaxIterations = 20,\n\t\tcurrentValue = tween ?\n\t\t\tfunction() {\n\t\t\t\treturn tween.cur();\n\t\t\t} :\n\t\t\tfunction() {\n\t\t\t\treturn jQuery.css( elem, prop, \"\" );\n\t\t\t},\n\t\tinitial = currentValue(),\n\t\tunit = valueParts && valueParts[ 3 ] || ( jQuery.cssNumber[ prop ] ? \"\" : \"px\" ),\n\n\t\t// Starting value computation is required for potential unit mismatches\n\t\tinitialInUnit = elem.nodeType &&\n\t\t\t( jQuery.cssNumber[ prop ] || unit !== \"px\" && +initial ) &&\n\t\t\trcssNum.exec( jQuery.css( elem, prop ) );\n\n\tif ( initialInUnit && initialInUnit[ 3 ] !== unit ) {\n\n\t\t// Support: Firefox <=54\n\t\t// Halve the iteration target value to prevent interference from CSS upper bounds (gh-2144)\n\t\tinitial = initial / 2;\n\n\t\t// Trust units reported by jQuery.css\n\t\tunit = unit || initialInUnit[ 3 ];\n\n\t\t// Iteratively approximate from a nonzero starting point\n\t\tinitialInUnit = +initial || 1;\n\n\t\twhile ( maxIterations-- ) {\n\n\t\t\t// Evaluate and update our best guess (doubling guesses that zero out).\n\t\t\t// Finish if the scale equals or crosses 1 (making the old*new product non-positive).\n\t\t\tjQuery.style( elem, prop, initialInUnit + unit );\n\t\t\tif ( ( 1 - scale ) * ( 1 - ( scale = currentValue() / initial || 0.5 ) ) <= 0 ) {\n\t\t\t\tmaxIterations = 0;\n\t\t\t}\n\t\t\tinitialInUnit = initialInUnit / scale;\n\n\t\t}\n\n\t\tinitialInUnit = initialInUnit * 2;\n\t\tjQuery.style( elem, prop, initialInUnit + unit );\n\n\t\t// Make sure we update the tween properties later on\n\t\tvalueParts = valueParts || [];\n\t}\n\n\tif ( valueParts ) {\n\t\tinitialInUnit = +initialInUnit || +initial || 0;\n\n\t\t// Apply relative offset (+=/-=) if specified\n\t\tadjusted = valueParts[ 1 ] ?\n\t\t\tinitialInUnit + ( valueParts[ 1 ] + 1 ) * valueParts[ 2 ] :\n\t\t\t+valueParts[ 2 ];\n\t\tif ( tween ) {\n\t\t\ttween.unit = unit;\n\t\t\ttween.start = initialInUnit;\n\t\t\ttween.end = adjusted;\n\t\t}\n\t}\n\treturn adjusted;\n}\n\n\nvar defaultDisplayMap = {};\n\nfunction getDefaultDisplay( elem ) {\n\tvar temp,\n\t\tdoc = elem.ownerDocument,\n\t\tnodeName = elem.nodeName,\n\t\tdisplay = defaultDisplayMap[ nodeName ];\n\n\tif ( display ) {\n\t\treturn display;\n\t}\n\n\ttemp = doc.body.appendChild( doc.createElement( nodeName ) );\n\tdisplay = jQuery.css( temp, \"display\" );\n\n\ttemp.parentNode.removeChild( temp );\n\n\tif ( display === \"none\" ) {\n\t\tdisplay = \"block\";\n\t}\n\tdefaultDisplayMap[ nodeName ] = display;\n\n\treturn display;\n}\n\nfunction showHide( elements, show ) {\n\tvar display, elem,\n\t\tvalues = [],\n\t\tindex = 0,\n\t\tlength = elements.length;\n\n\t// Determine new display value for elements that need to change\n\tfor ( ; index < length; index++ ) {\n\t\telem = elements[ index ];\n\t\tif ( !elem.style ) {\n\t\t\tcontinue;\n\t\t}\n\n\t\tdisplay = elem.style.display;\n\t\tif ( show ) {\n\n\t\t\t// Since we force visibility upon cascade-hidden elements, an immediate (and slow)\n\t\t\t// check is required in this first loop unless we have a nonempty display value (either\n\t\t\t// inline or about-to-be-restored)\n\t\t\tif ( display === \"none\" ) {\n\t\t\t\tvalues[ index ] = dataPriv.get( elem, \"display\" ) || null;\n\t\t\t\tif ( !values[ index ] ) {\n\t\t\t\t\telem.style.display = \"\";\n\t\t\t\t}\n\t\t\t}\n\t\t\tif ( elem.style.display === \"\" && isHiddenWithinTree( elem ) ) {\n\t\t\t\tvalues[ index ] = getDefaultDisplay( elem );\n\t\t\t}\n\t\t} else {\n\t\t\tif ( display !== \"none\" ) {\n\t\t\t\tvalues[ index ] = \"none\";\n\n\t\t\t\t// Remember what we're overwriting\n\t\t\t\tdataPriv.set( elem, \"display\", display );\n\t\t\t}\n\t\t}\n\t}\n\n\t// Set the display of the elements in a second loop to avoid constant reflow\n\tfor ( index = 0; index < length; index++ ) {\n\t\tif ( values[ index ] != null ) {\n\t\t\telements[ index ].style.display = values[ index ];\n\t\t}\n\t}\n\n\treturn elements;\n}\n\njQuery.fn.extend( {\n\tshow: function() {\n\t\treturn showHide( this, true );\n\t},\n\thide: function() {\n\t\treturn showHide( this );\n\t},\n\ttoggle: function( state ) {\n\t\tif ( typeof state === \"boolean\" ) {\n\t\t\treturn state ? this.show() : this.hide();\n\t\t}\n\n\t\treturn this.each( function() {\n\t\t\tif ( isHiddenWithinTree( this ) ) {\n\t\t\t\tjQuery( this ).show();\n\t\t\t} else {\n\t\t\t\tjQuery( this ).hide();\n\t\t\t}\n\t\t} );\n\t}\n} );\nvar rcheckableType = ( /^(?:checkbox|radio)$/i );\n\nvar rtagName = ( /<([a-z][^\\/\\0>\\x20\\t\\r\\n\\f]*)/i );\n\nvar rscriptType = ( /^$|^module$|\\/(?:java|ecma)script/i );\n\n\n\n( function() {\n\tvar fragment = document.createDocumentFragment(),\n\t\tdiv = fragment.appendChild( document.createElement( \"div\" ) ),\n\t\tinput = document.createElement( \"input\" );\n\n\t// Support: Android 4.0 - 4.3 only\n\t// Check state lost if the name is set (#11217)\n\t// Support: Windows Web Apps (WWA)\n\t// `name` and `type` must use .setAttribute for WWA (#14901)\n\tinput.setAttribute( \"type\", \"radio\" );\n\tinput.setAttribute( \"checked\", \"checked\" );\n\tinput.setAttribute( \"name\", \"t\" );\n\n\tdiv.appendChild( input );\n\n\t// Support: Android <=4.1 only\n\t// Older WebKit doesn't clone checked state correctly in fragments\n\tsupport.checkClone = div.cloneNode( true ).cloneNode( true ).lastChild.checked;\n\n\t// Support: IE <=11 only\n\t// Make sure textarea (and checkbox) defaultValue is properly cloned\n\tdiv.innerHTML = \"\";\n\tsupport.noCloneChecked = !!div.cloneNode( true ).lastChild.defaultValue;\n\n\t// Support: IE <=9 only\n\t// IE <=9 replaces \";\n\tsupport.option = !!div.lastChild;\n} )();\n\n\n// We have to close these tags to support XHTML (#13200)\nvar wrapMap = {\n\n\t// XHTML parsers do not magically insert elements in the\n\t// same way that tag soup parsers do. So we cannot shorten\n\t// this by omitting or other required elements.\n\tthead: [ 1, \"\", \"
\" ],\n\tcol: [ 2, \"\", \"
\" ],\n\ttr: [ 2, \"\", \"
\" ],\n\ttd: [ 3, \"\", \"
\" ],\n\n\t_default: [ 0, \"\", \"\" ]\n};\n\nwrapMap.tbody = wrapMap.tfoot = wrapMap.colgroup = wrapMap.caption = wrapMap.thead;\nwrapMap.th = wrapMap.td;\n\n// Support: IE <=9 only\nif ( !support.option ) {\n\twrapMap.optgroup = wrapMap.option = [ 1, \"\" ];\n}\n\n\nfunction getAll( context, tag ) {\n\n\t// Support: IE <=9 - 11 only\n\t// Use typeof to avoid zero-argument method invocation on host objects (#15151)\n\tvar ret;\n\n\tif ( typeof context.getElementsByTagName !== \"undefined\" ) {\n\t\tret = context.getElementsByTagName( tag || \"*\" );\n\n\t} else if ( typeof context.querySelectorAll !== \"undefined\" ) {\n\t\tret = context.querySelectorAll( tag || \"*\" );\n\n\t} else {\n\t\tret = [];\n\t}\n\n\tif ( tag === undefined || tag && nodeName( context, tag ) ) {\n\t\treturn jQuery.merge( [ context ], ret );\n\t}\n\n\treturn ret;\n}\n\n\n// Mark scripts as having already been evaluated\nfunction setGlobalEval( elems, refElements ) {\n\tvar i = 0,\n\t\tl = elems.length;\n\n\tfor ( ; i < l; i++ ) {\n\t\tdataPriv.set(\n\t\t\telems[ i ],\n\t\t\t\"globalEval\",\n\t\t\t!refElements || dataPriv.get( refElements[ i ], \"globalEval\" )\n\t\t);\n\t}\n}\n\n\nvar rhtml = /<|&#?\\w+;/;\n\nfunction buildFragment( elems, context, scripts, selection, ignored ) {\n\tvar elem, tmp, tag, wrap, attached, j,\n\t\tfragment = context.createDocumentFragment(),\n\t\tnodes = [],\n\t\ti = 0,\n\t\tl = elems.length;\n\n\tfor ( ; i < l; i++ ) {\n\t\telem = elems[ i ];\n\n\t\tif ( elem || elem === 0 ) {\n\n\t\t\t// Add nodes directly\n\t\t\tif ( toType( elem ) === \"object\" ) {\n\n\t\t\t\t// Support: Android <=4.0 only, PhantomJS 1 only\n\t\t\t\t// push.apply(_, arraylike) throws on ancient WebKit\n\t\t\t\tjQuery.merge( nodes, elem.nodeType ? [ elem ] : elem );\n\n\t\t\t// Convert non-html into a text node\n\t\t\t} else if ( !rhtml.test( elem ) ) {\n\t\t\t\tnodes.push( context.createTextNode( elem ) );\n\n\t\t\t// Convert html into DOM nodes\n\t\t\t} else {\n\t\t\t\ttmp = tmp || fragment.appendChild( context.createElement( \"div\" ) );\n\n\t\t\t\t// Deserialize a standard representation\n\t\t\t\ttag = ( rtagName.exec( elem ) || [ \"\", \"\" ] )[ 1 ].toLowerCase();\n\t\t\t\twrap = wrapMap[ tag ] || wrapMap._default;\n\t\t\t\ttmp.innerHTML = wrap[ 1 ] + jQuery.htmlPrefilter( elem ) + wrap[ 2 ];\n\n\t\t\t\t// Descend through wrappers to the right content\n\t\t\t\tj = wrap[ 0 ];\n\t\t\t\twhile ( j-- ) {\n\t\t\t\t\ttmp = tmp.lastChild;\n\t\t\t\t}\n\n\t\t\t\t// Support: Android <=4.0 only, PhantomJS 1 only\n\t\t\t\t// push.apply(_, arraylike) throws on ancient WebKit\n\t\t\t\tjQuery.merge( nodes, tmp.childNodes );\n\n\t\t\t\t// Remember the top-level container\n\t\t\t\ttmp = fragment.firstChild;\n\n\t\t\t\t// Ensure the created nodes are orphaned (#12392)\n\t\t\t\ttmp.textContent = \"\";\n\t\t\t}\n\t\t}\n\t}\n\n\t// Remove wrapper from fragment\n\tfragment.textContent = \"\";\n\n\ti = 0;\n\twhile ( ( elem = nodes[ i++ ] ) ) {\n\n\t\t// Skip elements already in the context collection (trac-4087)\n\t\tif ( selection && jQuery.inArray( elem, selection ) > -1 ) {\n\t\t\tif ( ignored ) {\n\t\t\t\tignored.push( elem );\n\t\t\t}\n\t\t\tcontinue;\n\t\t}\n\n\t\tattached = isAttached( elem );\n\n\t\t// Append to fragment\n\t\ttmp = getAll( fragment.appendChild( elem ), \"script\" );\n\n\t\t// Preserve script evaluation history\n\t\tif ( attached ) {\n\t\t\tsetGlobalEval( tmp );\n\t\t}\n\n\t\t// Capture executables\n\t\tif ( scripts ) {\n\t\t\tj = 0;\n\t\t\twhile ( ( elem = tmp[ j++ ] ) ) {\n\t\t\t\tif ( rscriptType.test( elem.type || \"\" ) ) {\n\t\t\t\t\tscripts.push( elem );\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\t}\n\n\treturn fragment;\n}\n\n\nvar rtypenamespace = /^([^.]*)(?:\\.(.+)|)/;\n\nfunction returnTrue() {\n\treturn true;\n}\n\nfunction returnFalse() {\n\treturn false;\n}\n\n// Support: IE <=9 - 11+\n// focus() and blur() are asynchronous, except when they are no-op.\n// So expect focus to be synchronous when the element is already active,\n// and blur to be synchronous when the element is not already active.\n// (focus and blur are always synchronous in other supported browsers,\n// this just defines when we can count on it).\nfunction expectSync( elem, type ) {\n\treturn ( elem === safeActiveElement() ) === ( type === \"focus\" );\n}\n\n// Support: IE <=9 only\n// Accessing document.activeElement can throw unexpectedly\n// https://bugs.jquery.com/ticket/13393\nfunction safeActiveElement() {\n\ttry {\n\t\treturn document.activeElement;\n\t} catch ( err ) { }\n}\n\nfunction on( elem, types, selector, data, fn, one ) {\n\tvar origFn, type;\n\n\t// Types can be a map of types/handlers\n\tif ( typeof types === \"object\" ) {\n\n\t\t// ( types-Object, selector, data )\n\t\tif ( typeof selector !== \"string\" ) {\n\n\t\t\t// ( types-Object, data )\n\t\t\tdata = data || selector;\n\t\t\tselector = undefined;\n\t\t}\n\t\tfor ( type in types ) {\n\t\t\ton( elem, type, selector, data, types[ type ], one );\n\t\t}\n\t\treturn elem;\n\t}\n\n\tif ( data == null && fn == null ) {\n\n\t\t// ( types, fn )\n\t\tfn = selector;\n\t\tdata = selector = undefined;\n\t} else if ( fn == null ) {\n\t\tif ( typeof selector === \"string\" ) {\n\n\t\t\t// ( types, selector, fn )\n\t\t\tfn = data;\n\t\t\tdata = undefined;\n\t\t} else {\n\n\t\t\t// ( types, data, fn )\n\t\t\tfn = data;\n\t\t\tdata = selector;\n\t\t\tselector = undefined;\n\t\t}\n\t}\n\tif ( fn === false ) {\n\t\tfn = returnFalse;\n\t} else if ( !fn ) {\n\t\treturn elem;\n\t}\n\n\tif ( one === 1 ) {\n\t\torigFn = fn;\n\t\tfn = function( event ) {\n\n\t\t\t// Can use an empty set, since event contains the info\n\t\t\tjQuery().off( event );\n\t\t\treturn origFn.apply( this, arguments );\n\t\t};\n\n\t\t// Use same guid so caller can remove using origFn\n\t\tfn.guid = origFn.guid || ( origFn.guid = jQuery.guid++ );\n\t}\n\treturn elem.each( function() {\n\t\tjQuery.event.add( this, types, fn, data, selector );\n\t} );\n}\n\n/*\n * Helper functions for managing events -- not part of the public interface.\n * Props to Dean Edwards' addEvent library for many of the ideas.\n */\njQuery.event = {\n\n\tglobal: {},\n\n\tadd: function( elem, types, handler, data, selector ) {\n\n\t\tvar handleObjIn, eventHandle, tmp,\n\t\t\tevents, t, handleObj,\n\t\t\tspecial, handlers, type, namespaces, origType,\n\t\t\telemData = dataPriv.get( elem );\n\n\t\t// Only attach events to objects that accept data\n\t\tif ( !acceptData( elem ) ) {\n\t\t\treturn;\n\t\t}\n\n\t\t// Caller can pass in an object of custom data in lieu of the handler\n\t\tif ( handler.handler ) {\n\t\t\thandleObjIn = handler;\n\t\t\thandler = handleObjIn.handler;\n\t\t\tselector = handleObjIn.selector;\n\t\t}\n\n\t\t// Ensure that invalid selectors throw exceptions at attach time\n\t\t// Evaluate against documentElement in case elem is a non-element node (e.g., document)\n\t\tif ( selector ) {\n\t\t\tjQuery.find.matchesSelector( documentElement, selector );\n\t\t}\n\n\t\t// Make sure that the handler has a unique ID, used to find/remove it later\n\t\tif ( !handler.guid ) {\n\t\t\thandler.guid = jQuery.guid++;\n\t\t}\n\n\t\t// Init the element's event structure and main handler, if this is the first\n\t\tif ( !( events = elemData.events ) ) {\n\t\t\tevents = elemData.events = Object.create( null );\n\t\t}\n\t\tif ( !( eventHandle = elemData.handle ) ) {\n\t\t\teventHandle = elemData.handle = function( e ) {\n\n\t\t\t\t// Discard the second event of a jQuery.event.trigger() and\n\t\t\t\t// when an event is called after a page has unloaded\n\t\t\t\treturn typeof jQuery !== \"undefined\" && jQuery.event.triggered !== e.type ?\n\t\t\t\t\tjQuery.event.dispatch.apply( elem, arguments ) : undefined;\n\t\t\t};\n\t\t}\n\n\t\t// Handle multiple events separated by a space\n\t\ttypes = ( types || \"\" ).match( rnothtmlwhite ) || [ \"\" ];\n\t\tt = types.length;\n\t\twhile ( t-- ) {\n\t\t\ttmp = rtypenamespace.exec( types[ t ] ) || [];\n\t\t\ttype = origType = tmp[ 1 ];\n\t\t\tnamespaces = ( tmp[ 2 ] || \"\" ).split( \".\" ).sort();\n\n\t\t\t// There *must* be a type, no attaching namespace-only handlers\n\t\t\tif ( !type ) {\n\t\t\t\tcontinue;\n\t\t\t}\n\n\t\t\t// If event changes its type, use the special event handlers for the changed type\n\t\t\tspecial = jQuery.event.special[ type ] || {};\n\n\t\t\t// If selector defined, determine special event api type, otherwise given type\n\t\t\ttype = ( selector ? special.delegateType : special.bindType ) || type;\n\n\t\t\t// Update special based on newly reset type\n\t\t\tspecial = jQuery.event.special[ type ] || {};\n\n\t\t\t// handleObj is passed to all event handlers\n\t\t\thandleObj = jQuery.extend( {\n\t\t\t\ttype: type,\n\t\t\t\torigType: origType,\n\t\t\t\tdata: data,\n\t\t\t\thandler: handler,\n\t\t\t\tguid: handler.guid,\n\t\t\t\tselector: selector,\n\t\t\t\tneedsContext: selector && jQuery.expr.match.needsContext.test( selector ),\n\t\t\t\tnamespace: namespaces.join( \".\" )\n\t\t\t}, handleObjIn );\n\n\t\t\t// Init the event handler queue if we're the first\n\t\t\tif ( !( handlers = events[ type ] ) ) {\n\t\t\t\thandlers = events[ type ] = [];\n\t\t\t\thandlers.delegateCount = 0;\n\n\t\t\t\t// Only use addEventListener if the special events handler returns false\n\t\t\t\tif ( !special.setup ||\n\t\t\t\t\tspecial.setup.call( elem, data, namespaces, eventHandle ) === false ) {\n\n\t\t\t\t\tif ( elem.addEventListener ) {\n\t\t\t\t\t\telem.addEventListener( type, eventHandle );\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t}\n\n\t\t\tif ( special.add ) {\n\t\t\t\tspecial.add.call( elem, handleObj );\n\n\t\t\t\tif ( !handleObj.handler.guid ) {\n\t\t\t\t\thandleObj.handler.guid = handler.guid;\n\t\t\t\t}\n\t\t\t}\n\n\t\t\t// Add to the element's handler list, delegates in front\n\t\t\tif ( selector ) {\n\t\t\t\thandlers.splice( handlers.delegateCount++, 0, handleObj );\n\t\t\t} else {\n\t\t\t\thandlers.push( handleObj );\n\t\t\t}\n\n\t\t\t// Keep track of which events have ever been used, for event optimization\n\t\t\tjQuery.event.global[ type ] = true;\n\t\t}\n\n\t},\n\n\t// Detach an event or set of events from an element\n\tremove: function( elem, types, handler, selector, mappedTypes ) {\n\n\t\tvar j, origCount, tmp,\n\t\t\tevents, t, handleObj,\n\t\t\tspecial, handlers, type, namespaces, origType,\n\t\t\telemData = dataPriv.hasData( elem ) && dataPriv.get( elem );\n\n\t\tif ( !elemData || !( events = elemData.events ) ) {\n\t\t\treturn;\n\t\t}\n\n\t\t// Once for each type.namespace in types; type may be omitted\n\t\ttypes = ( types || \"\" ).match( rnothtmlwhite ) || [ \"\" ];\n\t\tt = types.length;\n\t\twhile ( t-- ) {\n\t\t\ttmp = rtypenamespace.exec( types[ t ] ) || [];\n\t\t\ttype = origType = tmp[ 1 ];\n\t\t\tnamespaces = ( tmp[ 2 ] || \"\" ).split( \".\" ).sort();\n\n\t\t\t// Unbind all events (on this namespace, if provided) for the element\n\t\t\tif ( !type ) {\n\t\t\t\tfor ( type in events ) {\n\t\t\t\t\tjQuery.event.remove( elem, type + types[ t ], handler, selector, true );\n\t\t\t\t}\n\t\t\t\tcontinue;\n\t\t\t}\n\n\t\t\tspecial = jQuery.event.special[ type ] || {};\n\t\t\ttype = ( selector ? special.delegateType : special.bindType ) || type;\n\t\t\thandlers = events[ type ] || [];\n\t\t\ttmp = tmp[ 2 ] &&\n\t\t\t\tnew RegExp( \"(^|\\\\.)\" + namespaces.join( \"\\\\.(?:.*\\\\.|)\" ) + \"(\\\\.|$)\" );\n\n\t\t\t// Remove matching events\n\t\t\torigCount = j = handlers.length;\n\t\t\twhile ( j-- ) {\n\t\t\t\thandleObj = handlers[ j ];\n\n\t\t\t\tif ( ( mappedTypes || origType === handleObj.origType ) &&\n\t\t\t\t\t( !handler || handler.guid === handleObj.guid ) &&\n\t\t\t\t\t( !tmp || tmp.test( handleObj.namespace ) ) &&\n\t\t\t\t\t( !selector || selector === handleObj.selector ||\n\t\t\t\t\t\tselector === \"**\" && handleObj.selector ) ) {\n\t\t\t\t\thandlers.splice( j, 1 );\n\n\t\t\t\t\tif ( handleObj.selector ) {\n\t\t\t\t\t\thandlers.delegateCount--;\n\t\t\t\t\t}\n\t\t\t\t\tif ( special.remove ) {\n\t\t\t\t\t\tspecial.remove.call( elem, handleObj );\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t}\n\n\t\t\t// Remove generic event handler if we removed something and no more handlers exist\n\t\t\t// (avoids potential for endless recursion during removal of special event handlers)\n\t\t\tif ( origCount && !handlers.length ) {\n\t\t\t\tif ( !special.teardown ||\n\t\t\t\t\tspecial.teardown.call( elem, namespaces, elemData.handle ) === false ) {\n\n\t\t\t\t\tjQuery.removeEvent( elem, type, elemData.handle );\n\t\t\t\t}\n\n\t\t\t\tdelete events[ type ];\n\t\t\t}\n\t\t}\n\n\t\t// Remove data and the expando if it's no longer used\n\t\tif ( jQuery.isEmptyObject( events ) ) {\n\t\t\tdataPriv.remove( elem, \"handle events\" );\n\t\t}\n\t},\n\n\tdispatch: function( nativeEvent ) {\n\n\t\tvar i, j, ret, matched, handleObj, handlerQueue,\n\t\t\targs = new Array( arguments.length ),\n\n\t\t\t// Make a writable jQuery.Event from the native event object\n\t\t\tevent = jQuery.event.fix( nativeEvent ),\n\n\t\t\thandlers = (\n\t\t\t\tdataPriv.get( this, \"events\" ) || Object.create( null )\n\t\t\t)[ event.type ] || [],\n\t\t\tspecial = jQuery.event.special[ event.type ] || {};\n\n\t\t// Use the fix-ed jQuery.Event rather than the (read-only) native event\n\t\targs[ 0 ] = event;\n\n\t\tfor ( i = 1; i < arguments.length; i++ ) {\n\t\t\targs[ i ] = arguments[ i ];\n\t\t}\n\n\t\tevent.delegateTarget = this;\n\n\t\t// Call the preDispatch hook for the mapped type, and let it bail if desired\n\t\tif ( special.preDispatch && special.preDispatch.call( this, event ) === false ) {\n\t\t\treturn;\n\t\t}\n\n\t\t// Determine handlers\n\t\thandlerQueue = jQuery.event.handlers.call( this, event, handlers );\n\n\t\t// Run delegates first; they may want to stop propagation beneath us\n\t\ti = 0;\n\t\twhile ( ( matched = handlerQueue[ i++ ] ) && !event.isPropagationStopped() ) {\n\t\t\tevent.currentTarget = matched.elem;\n\n\t\t\tj = 0;\n\t\t\twhile ( ( handleObj = matched.handlers[ j++ ] ) &&\n\t\t\t\t!event.isImmediatePropagationStopped() ) {\n\n\t\t\t\t// If the event is namespaced, then each handler is only invoked if it is\n\t\t\t\t// specially universal or its namespaces are a superset of the event's.\n\t\t\t\tif ( !event.rnamespace || handleObj.namespace === false ||\n\t\t\t\t\tevent.rnamespace.test( handleObj.namespace ) ) {\n\n\t\t\t\t\tevent.handleObj = handleObj;\n\t\t\t\t\tevent.data = handleObj.data;\n\n\t\t\t\t\tret = ( ( jQuery.event.special[ handleObj.origType ] || {} ).handle ||\n\t\t\t\t\t\thandleObj.handler ).apply( matched.elem, args );\n\n\t\t\t\t\tif ( ret !== undefined ) {\n\t\t\t\t\t\tif ( ( event.result = ret ) === false ) {\n\t\t\t\t\t\t\tevent.preventDefault();\n\t\t\t\t\t\t\tevent.stopPropagation();\n\t\t\t\t\t\t}\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\n\t\t// Call the postDispatch hook for the mapped type\n\t\tif ( special.postDispatch ) {\n\t\t\tspecial.postDispatch.call( this, event );\n\t\t}\n\n\t\treturn event.result;\n\t},\n\n\thandlers: function( event, handlers ) {\n\t\tvar i, handleObj, sel, matchedHandlers, matchedSelectors,\n\t\t\thandlerQueue = [],\n\t\t\tdelegateCount = handlers.delegateCount,\n\t\t\tcur = event.target;\n\n\t\t// Find delegate handlers\n\t\tif ( delegateCount &&\n\n\t\t\t// Support: IE <=9\n\t\t\t// Black-hole SVG instance trees (trac-13180)\n\t\t\tcur.nodeType &&\n\n\t\t\t// Support: Firefox <=42\n\t\t\t// Suppress spec-violating clicks indicating a non-primary pointer button (trac-3861)\n\t\t\t// https://www.w3.org/TR/DOM-Level-3-Events/#event-type-click\n\t\t\t// Support: IE 11 only\n\t\t\t// ...but not arrow key \"clicks\" of radio inputs, which can have `button` -1 (gh-2343)\n\t\t\t!( event.type === \"click\" && event.button >= 1 ) ) {\n\n\t\t\tfor ( ; cur !== this; cur = cur.parentNode || this ) {\n\n\t\t\t\t// Don't check non-elements (#13208)\n\t\t\t\t// Don't process clicks on disabled elements (#6911, #8165, #11382, #11764)\n\t\t\t\tif ( cur.nodeType === 1 && !( event.type === \"click\" && cur.disabled === true ) ) {\n\t\t\t\t\tmatchedHandlers = [];\n\t\t\t\t\tmatchedSelectors = {};\n\t\t\t\t\tfor ( i = 0; i < delegateCount; i++ ) {\n\t\t\t\t\t\thandleObj = handlers[ i ];\n\n\t\t\t\t\t\t// Don't conflict with Object.prototype properties (#13203)\n\t\t\t\t\t\tsel = handleObj.selector + \" \";\n\n\t\t\t\t\t\tif ( matchedSelectors[ sel ] === undefined ) {\n\t\t\t\t\t\t\tmatchedSelectors[ sel ] = handleObj.needsContext ?\n\t\t\t\t\t\t\t\tjQuery( sel, this ).index( cur ) > -1 :\n\t\t\t\t\t\t\t\tjQuery.find( sel, this, null, [ cur ] ).length;\n\t\t\t\t\t\t}\n\t\t\t\t\t\tif ( matchedSelectors[ sel ] ) {\n\t\t\t\t\t\t\tmatchedHandlers.push( handleObj );\n\t\t\t\t\t\t}\n\t\t\t\t\t}\n\t\t\t\t\tif ( matchedHandlers.length ) {\n\t\t\t\t\t\thandlerQueue.push( { elem: cur, handlers: matchedHandlers } );\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\n\t\t// Add the remaining (directly-bound) handlers\n\t\tcur = this;\n\t\tif ( delegateCount < handlers.length ) {\n\t\t\thandlerQueue.push( { elem: cur, handlers: handlers.slice( delegateCount ) } );\n\t\t}\n\n\t\treturn handlerQueue;\n\t},\n\n\taddProp: function( name, hook ) {\n\t\tObject.defineProperty( jQuery.Event.prototype, name, {\n\t\t\tenumerable: true,\n\t\t\tconfigurable: true,\n\n\t\t\tget: isFunction( hook ) ?\n\t\t\t\tfunction() {\n\t\t\t\t\tif ( this.originalEvent ) {\n\t\t\t\t\t\treturn hook( this.originalEvent );\n\t\t\t\t\t}\n\t\t\t\t} :\n\t\t\t\tfunction() {\n\t\t\t\t\tif ( this.originalEvent ) {\n\t\t\t\t\t\treturn this.originalEvent[ name ];\n\t\t\t\t\t}\n\t\t\t\t},\n\n\t\t\tset: function( value ) {\n\t\t\t\tObject.defineProperty( this, name, {\n\t\t\t\t\tenumerable: true,\n\t\t\t\t\tconfigurable: true,\n\t\t\t\t\twritable: true,\n\t\t\t\t\tvalue: value\n\t\t\t\t} );\n\t\t\t}\n\t\t} );\n\t},\n\n\tfix: function( originalEvent ) {\n\t\treturn originalEvent[ jQuery.expando ] ?\n\t\t\toriginalEvent :\n\t\t\tnew jQuery.Event( originalEvent );\n\t},\n\n\tspecial: {\n\t\tload: {\n\n\t\t\t// Prevent triggered image.load events from bubbling to window.load\n\t\t\tnoBubble: true\n\t\t},\n\t\tclick: {\n\n\t\t\t// Utilize native event to ensure correct state for checkable inputs\n\t\t\tsetup: function( data ) {\n\n\t\t\t\t// For mutual compressibility with _default, replace `this` access with a local var.\n\t\t\t\t// `|| data` is dead code meant only to preserve the variable through minification.\n\t\t\t\tvar el = this || data;\n\n\t\t\t\t// Claim the first handler\n\t\t\t\tif ( rcheckableType.test( el.type ) &&\n\t\t\t\t\tel.click && nodeName( el, \"input\" ) ) {\n\n\t\t\t\t\t// dataPriv.set( el, \"click\", ... )\n\t\t\t\t\tleverageNative( el, \"click\", returnTrue );\n\t\t\t\t}\n\n\t\t\t\t// Return false to allow normal processing in the caller\n\t\t\t\treturn false;\n\t\t\t},\n\t\t\ttrigger: function( data ) {\n\n\t\t\t\t// For mutual compressibility with _default, replace `this` access with a local var.\n\t\t\t\t// `|| data` is dead code meant only to preserve the variable through minification.\n\t\t\t\tvar el = this || data;\n\n\t\t\t\t// Force setup before triggering a click\n\t\t\t\tif ( rcheckableType.test( el.type ) &&\n\t\t\t\t\tel.click && nodeName( el, \"input\" ) ) {\n\n\t\t\t\t\tleverageNative( el, \"click\" );\n\t\t\t\t}\n\n\t\t\t\t// Return non-false to allow normal event-path propagation\n\t\t\t\treturn true;\n\t\t\t},\n\n\t\t\t// For cross-browser consistency, suppress native .click() on links\n\t\t\t// Also prevent it if we're currently inside a leveraged native-event stack\n\t\t\t_default: function( event ) {\n\t\t\t\tvar target = event.target;\n\t\t\t\treturn rcheckableType.test( target.type ) &&\n\t\t\t\t\ttarget.click && nodeName( target, \"input\" ) &&\n\t\t\t\t\tdataPriv.get( target, \"click\" ) ||\n\t\t\t\t\tnodeName( target, \"a\" );\n\t\t\t}\n\t\t},\n\n\t\tbeforeunload: {\n\t\t\tpostDispatch: function( event ) {\n\n\t\t\t\t// Support: Firefox 20+\n\t\t\t\t// Firefox doesn't alert if the returnValue field is not set.\n\t\t\t\tif ( event.result !== undefined && event.originalEvent ) {\n\t\t\t\t\tevent.originalEvent.returnValue = event.result;\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\t}\n};\n\n// Ensure the presence of an event listener that handles manually-triggered\n// synthetic events by interrupting progress until reinvoked in response to\n// *native* events that it fires directly, ensuring that state changes have\n// already occurred before other listeners are invoked.\nfunction leverageNative( el, type, expectSync ) {\n\n\t// Missing expectSync indicates a trigger call, which must force setup through jQuery.event.add\n\tif ( !expectSync ) {\n\t\tif ( dataPriv.get( el, type ) === undefined ) {\n\t\t\tjQuery.event.add( el, type, returnTrue );\n\t\t}\n\t\treturn;\n\t}\n\n\t// Register the controller as a special universal handler for all event namespaces\n\tdataPriv.set( el, type, false );\n\tjQuery.event.add( el, type, {\n\t\tnamespace: false,\n\t\thandler: function( event ) {\n\t\t\tvar notAsync, result,\n\t\t\t\tsaved = dataPriv.get( this, type );\n\n\t\t\tif ( ( event.isTrigger & 1 ) && this[ type ] ) {\n\n\t\t\t\t// Interrupt processing of the outer synthetic .trigger()ed event\n\t\t\t\t// Saved data should be false in such cases, but might be a leftover capture object\n\t\t\t\t// from an async native handler (gh-4350)\n\t\t\t\tif ( !saved.length ) {\n\n\t\t\t\t\t// Store arguments for use when handling the inner native event\n\t\t\t\t\t// There will always be at least one argument (an event object), so this array\n\t\t\t\t\t// will not be confused with a leftover capture object.\n\t\t\t\t\tsaved = slice.call( arguments );\n\t\t\t\t\tdataPriv.set( this, type, saved );\n\n\t\t\t\t\t// Trigger the native event and capture its result\n\t\t\t\t\t// Support: IE <=9 - 11+\n\t\t\t\t\t// focus() and blur() are asynchronous\n\t\t\t\t\tnotAsync = expectSync( this, type );\n\t\t\t\t\tthis[ type ]();\n\t\t\t\t\tresult = dataPriv.get( this, type );\n\t\t\t\t\tif ( saved !== result || notAsync ) {\n\t\t\t\t\t\tdataPriv.set( this, type, false );\n\t\t\t\t\t} else {\n\t\t\t\t\t\tresult = {};\n\t\t\t\t\t}\n\t\t\t\t\tif ( saved !== result ) {\n\n\t\t\t\t\t\t// Cancel the outer synthetic event\n\t\t\t\t\t\tevent.stopImmediatePropagation();\n\t\t\t\t\t\tevent.preventDefault();\n\n\t\t\t\t\t\t// Support: Chrome 86+\n\t\t\t\t\t\t// In Chrome, if an element having a focusout handler is blurred by\n\t\t\t\t\t\t// clicking outside of it, it invokes the handler synchronously. If\n\t\t\t\t\t\t// that handler calls `.remove()` on the element, the data is cleared,\n\t\t\t\t\t\t// leaving `result` undefined. We need to guard against this.\n\t\t\t\t\t\treturn result && result.value;\n\t\t\t\t\t}\n\n\t\t\t\t// If this is an inner synthetic event for an event with a bubbling surrogate\n\t\t\t\t// (focus or blur), assume that the surrogate already propagated from triggering the\n\t\t\t\t// native event and prevent that from happening again here.\n\t\t\t\t// This technically gets the ordering wrong w.r.t. to `.trigger()` (in which the\n\t\t\t\t// bubbling surrogate propagates *after* the non-bubbling base), but that seems\n\t\t\t\t// less bad than duplication.\n\t\t\t\t} else if ( ( jQuery.event.special[ type ] || {} ).delegateType ) {\n\t\t\t\t\tevent.stopPropagation();\n\t\t\t\t}\n\n\t\t\t// If this is a native event triggered above, everything is now in order\n\t\t\t// Fire an inner synthetic event with the original arguments\n\t\t\t} else if ( saved.length ) {\n\n\t\t\t\t// ...and capture the result\n\t\t\t\tdataPriv.set( this, type, {\n\t\t\t\t\tvalue: jQuery.event.trigger(\n\n\t\t\t\t\t\t// Support: IE <=9 - 11+\n\t\t\t\t\t\t// Extend with the prototype to reset the above stopImmediatePropagation()\n\t\t\t\t\t\tjQuery.extend( saved[ 0 ], jQuery.Event.prototype ),\n\t\t\t\t\t\tsaved.slice( 1 ),\n\t\t\t\t\t\tthis\n\t\t\t\t\t)\n\t\t\t\t} );\n\n\t\t\t\t// Abort handling of the native event\n\t\t\t\tevent.stopImmediatePropagation();\n\t\t\t}\n\t\t}\n\t} );\n}\n\njQuery.removeEvent = function( elem, type, handle ) {\n\n\t// This \"if\" is needed for plain objects\n\tif ( elem.removeEventListener ) {\n\t\telem.removeEventListener( type, handle );\n\t}\n};\n\njQuery.Event = function( src, props ) {\n\n\t// Allow instantiation without the 'new' keyword\n\tif ( !( this instanceof jQuery.Event ) ) {\n\t\treturn new jQuery.Event( src, props );\n\t}\n\n\t// Event object\n\tif ( src && src.type ) {\n\t\tthis.originalEvent = src;\n\t\tthis.type = src.type;\n\n\t\t// Events bubbling up the document may have been marked as prevented\n\t\t// by a handler lower down the tree; reflect the correct value.\n\t\tthis.isDefaultPrevented = src.defaultPrevented ||\n\t\t\t\tsrc.defaultPrevented === undefined &&\n\n\t\t\t\t// Support: Android <=2.3 only\n\t\t\t\tsrc.returnValue === false ?\n\t\t\treturnTrue :\n\t\t\treturnFalse;\n\n\t\t// Create target properties\n\t\t// Support: Safari <=6 - 7 only\n\t\t// Target should not be a text node (#504, #13143)\n\t\tthis.target = ( src.target && src.target.nodeType === 3 ) ?\n\t\t\tsrc.target.parentNode :\n\t\t\tsrc.target;\n\n\t\tthis.currentTarget = src.currentTarget;\n\t\tthis.relatedTarget = src.relatedTarget;\n\n\t// Event type\n\t} else {\n\t\tthis.type = src;\n\t}\n\n\t// Put explicitly provided properties onto the event object\n\tif ( props ) {\n\t\tjQuery.extend( this, props );\n\t}\n\n\t// Create a timestamp if incoming event doesn't have one\n\tthis.timeStamp = src && src.timeStamp || Date.now();\n\n\t// Mark it as fixed\n\tthis[ jQuery.expando ] = true;\n};\n\n// jQuery.Event is based on DOM3 Events as specified by the ECMAScript Language Binding\n// https://www.w3.org/TR/2003/WD-DOM-Level-3-Events-20030331/ecma-script-binding.html\njQuery.Event.prototype = {\n\tconstructor: jQuery.Event,\n\tisDefaultPrevented: returnFalse,\n\tisPropagationStopped: returnFalse,\n\tisImmediatePropagationStopped: returnFalse,\n\tisSimulated: false,\n\n\tpreventDefault: function() {\n\t\tvar e = this.originalEvent;\n\n\t\tthis.isDefaultPrevented = returnTrue;\n\n\t\tif ( e && !this.isSimulated ) {\n\t\t\te.preventDefault();\n\t\t}\n\t},\n\tstopPropagation: function() {\n\t\tvar e = this.originalEvent;\n\n\t\tthis.isPropagationStopped = returnTrue;\n\n\t\tif ( e && !this.isSimulated ) {\n\t\t\te.stopPropagation();\n\t\t}\n\t},\n\tstopImmediatePropagation: function() {\n\t\tvar e = this.originalEvent;\n\n\t\tthis.isImmediatePropagationStopped = returnTrue;\n\n\t\tif ( e && !this.isSimulated ) {\n\t\t\te.stopImmediatePropagation();\n\t\t}\n\n\t\tthis.stopPropagation();\n\t}\n};\n\n// Includes all common event props including KeyEvent and MouseEvent specific props\njQuery.each( {\n\taltKey: true,\n\tbubbles: true,\n\tcancelable: true,\n\tchangedTouches: true,\n\tctrlKey: true,\n\tdetail: true,\n\teventPhase: true,\n\tmetaKey: true,\n\tpageX: true,\n\tpageY: true,\n\tshiftKey: true,\n\tview: true,\n\t\"char\": true,\n\tcode: true,\n\tcharCode: true,\n\tkey: true,\n\tkeyCode: true,\n\tbutton: true,\n\tbuttons: true,\n\tclientX: true,\n\tclientY: true,\n\toffsetX: true,\n\toffsetY: true,\n\tpointerId: true,\n\tpointerType: true,\n\tscreenX: true,\n\tscreenY: true,\n\ttargetTouches: true,\n\ttoElement: true,\n\ttouches: true,\n\twhich: true\n}, jQuery.event.addProp );\n\njQuery.each( { focus: \"focusin\", blur: \"focusout\" }, function( type, delegateType ) {\n\tjQuery.event.special[ type ] = {\n\n\t\t// Utilize native event if possible so blur/focus sequence is correct\n\t\tsetup: function() {\n\n\t\t\t// Claim the first handler\n\t\t\t// dataPriv.set( this, \"focus\", ... )\n\t\t\t// dataPriv.set( this, \"blur\", ... )\n\t\t\tleverageNative( this, type, expectSync );\n\n\t\t\t// Return false to allow normal processing in the caller\n\t\t\treturn false;\n\t\t},\n\t\ttrigger: function() {\n\n\t\t\t// Force setup before trigger\n\t\t\tleverageNative( this, type );\n\n\t\t\t// Return non-false to allow normal event-path propagation\n\t\t\treturn true;\n\t\t},\n\n\t\t// Suppress native focus or blur as it's already being fired\n\t\t// in leverageNative.\n\t\t_default: function() {\n\t\t\treturn true;\n\t\t},\n\n\t\tdelegateType: delegateType\n\t};\n} );\n\n// Create mouseenter/leave events using mouseover/out and event-time checks\n// so that event delegation works in jQuery.\n// Do the same for pointerenter/pointerleave and pointerover/pointerout\n//\n// Support: Safari 7 only\n// Safari sends mouseenter too often; see:\n// https://bugs.chromium.org/p/chromium/issues/detail?id=470258\n// for the description of the bug (it existed in older Chrome versions as well).\njQuery.each( {\n\tmouseenter: \"mouseover\",\n\tmouseleave: \"mouseout\",\n\tpointerenter: \"pointerover\",\n\tpointerleave: \"pointerout\"\n}, function( orig, fix ) {\n\tjQuery.event.special[ orig ] = {\n\t\tdelegateType: fix,\n\t\tbindType: fix,\n\n\t\thandle: function( event ) {\n\t\t\tvar ret,\n\t\t\t\ttarget = this,\n\t\t\t\trelated = event.relatedTarget,\n\t\t\t\thandleObj = event.handleObj;\n\n\t\t\t// For mouseenter/leave call the handler if related is outside the target.\n\t\t\t// NB: No relatedTarget if the mouse left/entered the browser window\n\t\t\tif ( !related || ( related !== target && !jQuery.contains( target, related ) ) ) {\n\t\t\t\tevent.type = handleObj.origType;\n\t\t\t\tret = handleObj.handler.apply( this, arguments );\n\t\t\t\tevent.type = fix;\n\t\t\t}\n\t\t\treturn ret;\n\t\t}\n\t};\n} );\n\njQuery.fn.extend( {\n\n\ton: function( types, selector, data, fn ) {\n\t\treturn on( this, types, selector, data, fn );\n\t},\n\tone: function( types, selector, data, fn ) {\n\t\treturn on( this, types, selector, data, fn, 1 );\n\t},\n\toff: function( types, selector, fn ) {\n\t\tvar handleObj, type;\n\t\tif ( types && types.preventDefault && types.handleObj ) {\n\n\t\t\t// ( event ) dispatched jQuery.Event\n\t\t\thandleObj = types.handleObj;\n\t\t\tjQuery( types.delegateTarget ).off(\n\t\t\t\thandleObj.namespace ?\n\t\t\t\t\thandleObj.origType + \".\" + handleObj.namespace :\n\t\t\t\t\thandleObj.origType,\n\t\t\t\thandleObj.selector,\n\t\t\t\thandleObj.handler\n\t\t\t);\n\t\t\treturn this;\n\t\t}\n\t\tif ( typeof types === \"object\" ) {\n\n\t\t\t// ( types-object [, selector] )\n\t\t\tfor ( type in types ) {\n\t\t\t\tthis.off( type, selector, types[ type ] );\n\t\t\t}\n\t\t\treturn this;\n\t\t}\n\t\tif ( selector === false || typeof selector === \"function\" ) {\n\n\t\t\t// ( types [, fn] )\n\t\t\tfn = selector;\n\t\t\tselector = undefined;\n\t\t}\n\t\tif ( fn === false ) {\n\t\t\tfn = returnFalse;\n\t\t}\n\t\treturn this.each( function() {\n\t\t\tjQuery.event.remove( this, types, fn, selector );\n\t\t} );\n\t}\n} );\n\n\nvar\n\n\t// Support: IE <=10 - 11, Edge 12 - 13 only\n\t// In IE/Edge using regex groups here causes severe slowdowns.\n\t// See https://connect.microsoft.com/IE/feedback/details/1736512/\n\trnoInnerhtml = /\\s*$/g;\n\n// Prefer a tbody over its parent table for containing new rows\nfunction manipulationTarget( elem, content ) {\n\tif ( nodeName( elem, \"table\" ) &&\n\t\tnodeName( content.nodeType !== 11 ? content : content.firstChild, \"tr\" ) ) {\n\n\t\treturn jQuery( elem ).children( \"tbody\" )[ 0 ] || elem;\n\t}\n\n\treturn elem;\n}\n\n// Replace/restore the type attribute of script elements for safe DOM manipulation\nfunction disableScript( elem ) {\n\telem.type = ( elem.getAttribute( \"type\" ) !== null ) + \"/\" + elem.type;\n\treturn elem;\n}\nfunction restoreScript( elem ) {\n\tif ( ( elem.type || \"\" ).slice( 0, 5 ) === \"true/\" ) {\n\t\telem.type = elem.type.slice( 5 );\n\t} else {\n\t\telem.removeAttribute( \"type\" );\n\t}\n\n\treturn elem;\n}\n\nfunction cloneCopyEvent( src, dest ) {\n\tvar i, l, type, pdataOld, udataOld, udataCur, events;\n\n\tif ( dest.nodeType !== 1 ) {\n\t\treturn;\n\t}\n\n\t// 1. Copy private data: events, handlers, etc.\n\tif ( dataPriv.hasData( src ) ) {\n\t\tpdataOld = dataPriv.get( src );\n\t\tevents = pdataOld.events;\n\n\t\tif ( events ) {\n\t\t\tdataPriv.remove( dest, \"handle events\" );\n\n\t\t\tfor ( type in events ) {\n\t\t\t\tfor ( i = 0, l = events[ type ].length; i < l; i++ ) {\n\t\t\t\t\tjQuery.event.add( dest, type, events[ type ][ i ] );\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\t}\n\n\t// 2. Copy user data\n\tif ( dataUser.hasData( src ) ) {\n\t\tudataOld = dataUser.access( src );\n\t\tudataCur = jQuery.extend( {}, udataOld );\n\n\t\tdataUser.set( dest, udataCur );\n\t}\n}\n\n// Fix IE bugs, see support tests\nfunction fixInput( src, dest ) {\n\tvar nodeName = dest.nodeName.toLowerCase();\n\n\t// Fails to persist the checked state of a cloned checkbox or radio button.\n\tif ( nodeName === \"input\" && rcheckableType.test( src.type ) ) {\n\t\tdest.checked = src.checked;\n\n\t// Fails to return the selected option to the default selected state when cloning options\n\t} else if ( nodeName === \"input\" || nodeName === \"textarea\" ) {\n\t\tdest.defaultValue = src.defaultValue;\n\t}\n}\n\nfunction domManip( collection, args, callback, ignored ) {\n\n\t// Flatten any nested arrays\n\targs = flat( args );\n\n\tvar fragment, first, scripts, hasScripts, node, doc,\n\t\ti = 0,\n\t\tl = collection.length,\n\t\tiNoClone = l - 1,\n\t\tvalue = args[ 0 ],\n\t\tvalueIsFunction = isFunction( value );\n\n\t// We can't cloneNode fragments that contain checked, in WebKit\n\tif ( valueIsFunction ||\n\t\t\t( l > 1 && typeof value === \"string\" &&\n\t\t\t\t!support.checkClone && rchecked.test( value ) ) ) {\n\t\treturn collection.each( function( index ) {\n\t\t\tvar self = collection.eq( index );\n\t\t\tif ( valueIsFunction ) {\n\t\t\t\targs[ 0 ] = value.call( this, index, self.html() );\n\t\t\t}\n\t\t\tdomManip( self, args, callback, ignored );\n\t\t} );\n\t}\n\n\tif ( l ) {\n\t\tfragment = buildFragment( args, collection[ 0 ].ownerDocument, false, collection, ignored );\n\t\tfirst = fragment.firstChild;\n\n\t\tif ( fragment.childNodes.length === 1 ) {\n\t\t\tfragment = first;\n\t\t}\n\n\t\t// Require either new content or an interest in ignored elements to invoke the callback\n\t\tif ( first || ignored ) {\n\t\t\tscripts = jQuery.map( getAll( fragment, \"script\" ), disableScript );\n\t\t\thasScripts = scripts.length;\n\n\t\t\t// Use the original fragment for the last item\n\t\t\t// instead of the first because it can end up\n\t\t\t// being emptied incorrectly in certain situations (#8070).\n\t\t\tfor ( ; i < l; i++ ) {\n\t\t\t\tnode = fragment;\n\n\t\t\t\tif ( i !== iNoClone ) {\n\t\t\t\t\tnode = jQuery.clone( node, true, true );\n\n\t\t\t\t\t// Keep references to cloned scripts for later restoration\n\t\t\t\t\tif ( hasScripts ) {\n\n\t\t\t\t\t\t// Support: Android <=4.0 only, PhantomJS 1 only\n\t\t\t\t\t\t// push.apply(_, arraylike) throws on ancient WebKit\n\t\t\t\t\t\tjQuery.merge( scripts, getAll( node, \"script\" ) );\n\t\t\t\t\t}\n\t\t\t\t}\n\n\t\t\t\tcallback.call( collection[ i ], node, i );\n\t\t\t}\n\n\t\t\tif ( hasScripts ) {\n\t\t\t\tdoc = scripts[ scripts.length - 1 ].ownerDocument;\n\n\t\t\t\t// Reenable scripts\n\t\t\t\tjQuery.map( scripts, restoreScript );\n\n\t\t\t\t// Evaluate executable scripts on first document insertion\n\t\t\t\tfor ( i = 0; i < hasScripts; i++ ) {\n\t\t\t\t\tnode = scripts[ i ];\n\t\t\t\t\tif ( rscriptType.test( node.type || \"\" ) &&\n\t\t\t\t\t\t!dataPriv.access( node, \"globalEval\" ) &&\n\t\t\t\t\t\tjQuery.contains( doc, node ) ) {\n\n\t\t\t\t\t\tif ( node.src && ( node.type || \"\" ).toLowerCase() !== \"module\" ) {\n\n\t\t\t\t\t\t\t// Optional AJAX dependency, but won't run scripts if not present\n\t\t\t\t\t\t\tif ( jQuery._evalUrl && !node.noModule ) {\n\t\t\t\t\t\t\t\tjQuery._evalUrl( node.src, {\n\t\t\t\t\t\t\t\t\tnonce: node.nonce || node.getAttribute( \"nonce\" )\n\t\t\t\t\t\t\t\t}, doc );\n\t\t\t\t\t\t\t}\n\t\t\t\t\t\t} else {\n\t\t\t\t\t\t\tDOMEval( node.textContent.replace( rcleanScript, \"\" ), node, doc );\n\t\t\t\t\t\t}\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\t}\n\n\treturn collection;\n}\n\nfunction remove( elem, selector, keepData ) {\n\tvar node,\n\t\tnodes = selector ? jQuery.filter( selector, elem ) : elem,\n\t\ti = 0;\n\n\tfor ( ; ( node = nodes[ i ] ) != null; i++ ) {\n\t\tif ( !keepData && node.nodeType === 1 ) {\n\t\t\tjQuery.cleanData( getAll( node ) );\n\t\t}\n\n\t\tif ( node.parentNode ) {\n\t\t\tif ( keepData && isAttached( node ) ) {\n\t\t\t\tsetGlobalEval( getAll( node, \"script\" ) );\n\t\t\t}\n\t\t\tnode.parentNode.removeChild( node );\n\t\t}\n\t}\n\n\treturn elem;\n}\n\njQuery.extend( {\n\thtmlPrefilter: function( html ) {\n\t\treturn html;\n\t},\n\n\tclone: function( elem, dataAndEvents, deepDataAndEvents ) {\n\t\tvar i, l, srcElements, destElements,\n\t\t\tclone = elem.cloneNode( true ),\n\t\t\tinPage = isAttached( elem );\n\n\t\t// Fix IE cloning issues\n\t\tif ( !support.noCloneChecked && ( elem.nodeType === 1 || elem.nodeType === 11 ) &&\n\t\t\t\t!jQuery.isXMLDoc( elem ) ) {\n\n\t\t\t// We eschew Sizzle here for performance reasons: https://jsperf.com/getall-vs-sizzle/2\n\t\t\tdestElements = getAll( clone );\n\t\t\tsrcElements = getAll( elem );\n\n\t\t\tfor ( i = 0, l = srcElements.length; i < l; i++ ) {\n\t\t\t\tfixInput( srcElements[ i ], destElements[ i ] );\n\t\t\t}\n\t\t}\n\n\t\t// Copy the events from the original to the clone\n\t\tif ( dataAndEvents ) {\n\t\t\tif ( deepDataAndEvents ) {\n\t\t\t\tsrcElements = srcElements || getAll( elem );\n\t\t\t\tdestElements = destElements || getAll( clone );\n\n\t\t\t\tfor ( i = 0, l = srcElements.length; i < l; i++ ) {\n\t\t\t\t\tcloneCopyEvent( srcElements[ i ], destElements[ i ] );\n\t\t\t\t}\n\t\t\t} else {\n\t\t\t\tcloneCopyEvent( elem, clone );\n\t\t\t}\n\t\t}\n\n\t\t// Preserve script evaluation history\n\t\tdestElements = getAll( clone, \"script\" );\n\t\tif ( destElements.length > 0 ) {\n\t\t\tsetGlobalEval( destElements, !inPage && getAll( elem, \"script\" ) );\n\t\t}\n\n\t\t// Return the cloned set\n\t\treturn clone;\n\t},\n\n\tcleanData: function( elems ) {\n\t\tvar data, elem, type,\n\t\t\tspecial = jQuery.event.special,\n\t\t\ti = 0;\n\n\t\tfor ( ; ( elem = elems[ i ] ) !== undefined; i++ ) {\n\t\t\tif ( acceptData( elem ) ) {\n\t\t\t\tif ( ( data = elem[ dataPriv.expando ] ) ) {\n\t\t\t\t\tif ( data.events ) {\n\t\t\t\t\t\tfor ( type in data.events ) {\n\t\t\t\t\t\t\tif ( special[ type ] ) {\n\t\t\t\t\t\t\t\tjQuery.event.remove( elem, type );\n\n\t\t\t\t\t\t\t// This is a shortcut to avoid jQuery.event.remove's overhead\n\t\t\t\t\t\t\t} else {\n\t\t\t\t\t\t\t\tjQuery.removeEvent( elem, type, data.handle );\n\t\t\t\t\t\t\t}\n\t\t\t\t\t\t}\n\t\t\t\t\t}\n\n\t\t\t\t\t// Support: Chrome <=35 - 45+\n\t\t\t\t\t// Assign undefined instead of using delete, see Data#remove\n\t\t\t\t\telem[ dataPriv.expando ] = undefined;\n\t\t\t\t}\n\t\t\t\tif ( elem[ dataUser.expando ] ) {\n\n\t\t\t\t\t// Support: Chrome <=35 - 45+\n\t\t\t\t\t// Assign undefined instead of using delete, see Data#remove\n\t\t\t\t\telem[ dataUser.expando ] = undefined;\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\t}\n} );\n\njQuery.fn.extend( {\n\tdetach: function( selector ) {\n\t\treturn remove( this, selector, true );\n\t},\n\n\tremove: function( selector ) {\n\t\treturn remove( this, selector );\n\t},\n\n\ttext: function( value ) {\n\t\treturn access( this, function( value ) {\n\t\t\treturn value === undefined ?\n\t\t\t\tjQuery.text( this ) :\n\t\t\t\tthis.empty().each( function() {\n\t\t\t\t\tif ( this.nodeType === 1 || this.nodeType === 11 || this.nodeType === 9 ) {\n\t\t\t\t\t\tthis.textContent = value;\n\t\t\t\t\t}\n\t\t\t\t} );\n\t\t}, null, value, arguments.length );\n\t},\n\n\tappend: function() {\n\t\treturn domManip( this, arguments, function( elem ) {\n\t\t\tif ( this.nodeType === 1 || this.nodeType === 11 || this.nodeType === 9 ) {\n\t\t\t\tvar target = manipulationTarget( this, elem );\n\t\t\t\ttarget.appendChild( elem );\n\t\t\t}\n\t\t} );\n\t},\n\n\tprepend: function() {\n\t\treturn domManip( this, arguments, function( elem ) {\n\t\t\tif ( this.nodeType === 1 || this.nodeType === 11 || this.nodeType === 9 ) {\n\t\t\t\tvar target = manipulationTarget( this, elem );\n\t\t\t\ttarget.insertBefore( elem, target.firstChild );\n\t\t\t}\n\t\t} );\n\t},\n\n\tbefore: function() {\n\t\treturn domManip( this, arguments, function( elem ) {\n\t\t\tif ( this.parentNode ) {\n\t\t\t\tthis.parentNode.insertBefore( elem, this );\n\t\t\t}\n\t\t} );\n\t},\n\n\tafter: function() {\n\t\treturn domManip( this, arguments, function( elem ) {\n\t\t\tif ( this.parentNode ) {\n\t\t\t\tthis.parentNode.insertBefore( elem, this.nextSibling );\n\t\t\t}\n\t\t} );\n\t},\n\n\tempty: function() {\n\t\tvar elem,\n\t\t\ti = 0;\n\n\t\tfor ( ; ( elem = this[ i ] ) != null; i++ ) {\n\t\t\tif ( elem.nodeType === 1 ) {\n\n\t\t\t\t// Prevent memory leaks\n\t\t\t\tjQuery.cleanData( getAll( elem, false ) );\n\n\t\t\t\t// Remove any remaining nodes\n\t\t\t\telem.textContent = \"\";\n\t\t\t}\n\t\t}\n\n\t\treturn this;\n\t},\n\n\tclone: function( dataAndEvents, deepDataAndEvents ) {\n\t\tdataAndEvents = dataAndEvents == null ? false : dataAndEvents;\n\t\tdeepDataAndEvents = deepDataAndEvents == null ? dataAndEvents : deepDataAndEvents;\n\n\t\treturn this.map( function() {\n\t\t\treturn jQuery.clone( this, dataAndEvents, deepDataAndEvents );\n\t\t} );\n\t},\n\n\thtml: function( value ) {\n\t\treturn access( this, function( value ) {\n\t\t\tvar elem = this[ 0 ] || {},\n\t\t\t\ti = 0,\n\t\t\t\tl = this.length;\n\n\t\t\tif ( value === undefined && elem.nodeType === 1 ) {\n\t\t\t\treturn elem.innerHTML;\n\t\t\t}\n\n\t\t\t// See if we can take a shortcut and just use innerHTML\n\t\t\tif ( typeof value === \"string\" && !rnoInnerhtml.test( value ) &&\n\t\t\t\t!wrapMap[ ( rtagName.exec( value ) || [ \"\", \"\" ] )[ 1 ].toLowerCase() ] ) {\n\n\t\t\t\tvalue = jQuery.htmlPrefilter( value );\n\n\t\t\t\ttry {\n\t\t\t\t\tfor ( ; i < l; i++ ) {\n\t\t\t\t\t\telem = this[ i ] || {};\n\n\t\t\t\t\t\t// Remove element nodes and prevent memory leaks\n\t\t\t\t\t\tif ( elem.nodeType === 1 ) {\n\t\t\t\t\t\t\tjQuery.cleanData( getAll( elem, false ) );\n\t\t\t\t\t\t\telem.innerHTML = value;\n\t\t\t\t\t\t}\n\t\t\t\t\t}\n\n\t\t\t\t\telem = 0;\n\n\t\t\t\t// If using innerHTML throws an exception, use the fallback method\n\t\t\t\t} catch ( e ) {}\n\t\t\t}\n\n\t\t\tif ( elem ) {\n\t\t\t\tthis.empty().append( value );\n\t\t\t}\n\t\t}, null, value, arguments.length );\n\t},\n\n\treplaceWith: function() {\n\t\tvar ignored = [];\n\n\t\t// Make the changes, replacing each non-ignored context element with the new content\n\t\treturn domManip( this, arguments, function( elem ) {\n\t\t\tvar parent = this.parentNode;\n\n\t\t\tif ( jQuery.inArray( this, ignored ) < 0 ) {\n\t\t\t\tjQuery.cleanData( getAll( this ) );\n\t\t\t\tif ( parent ) {\n\t\t\t\t\tparent.replaceChild( elem, this );\n\t\t\t\t}\n\t\t\t}\n\n\t\t// Force callback invocation\n\t\t}, ignored );\n\t}\n} );\n\njQuery.each( {\n\tappendTo: \"append\",\n\tprependTo: \"prepend\",\n\tinsertBefore: \"before\",\n\tinsertAfter: \"after\",\n\treplaceAll: \"replaceWith\"\n}, function( name, original ) {\n\tjQuery.fn[ name ] = function( selector ) {\n\t\tvar elems,\n\t\t\tret = [],\n\t\t\tinsert = jQuery( selector ),\n\t\t\tlast = insert.length - 1,\n\t\t\ti = 0;\n\n\t\tfor ( ; i <= last; i++ ) {\n\t\t\telems = i === last ? this : this.clone( true );\n\t\t\tjQuery( insert[ i ] )[ original ]( elems );\n\n\t\t\t// Support: Android <=4.0 only, PhantomJS 1 only\n\t\t\t// .get() because push.apply(_, arraylike) throws on ancient WebKit\n\t\t\tpush.apply( ret, elems.get() );\n\t\t}\n\n\t\treturn this.pushStack( ret );\n\t};\n} );\nvar rnumnonpx = new RegExp( \"^(\" + pnum + \")(?!px)[a-z%]+$\", \"i\" );\n\nvar getStyles = function( elem ) {\n\n\t\t// Support: IE <=11 only, Firefox <=30 (#15098, #14150)\n\t\t// IE throws on elements created in popups\n\t\t// FF meanwhile throws on frame elements through \"defaultView.getComputedStyle\"\n\t\tvar view = elem.ownerDocument.defaultView;\n\n\t\tif ( !view || !view.opener ) {\n\t\t\tview = window;\n\t\t}\n\n\t\treturn view.getComputedStyle( elem );\n\t};\n\nvar swap = function( elem, options, callback ) {\n\tvar ret, name,\n\t\told = {};\n\n\t// Remember the old values, and insert the new ones\n\tfor ( name in options ) {\n\t\told[ name ] = elem.style[ name ];\n\t\telem.style[ name ] = options[ name ];\n\t}\n\n\tret = callback.call( elem );\n\n\t// Revert the old values\n\tfor ( name in options ) {\n\t\telem.style[ name ] = old[ name ];\n\t}\n\n\treturn ret;\n};\n\n\nvar rboxStyle = new RegExp( cssExpand.join( \"|\" ), \"i\" );\n\n\n\n( function() {\n\n\t// Executing both pixelPosition & boxSizingReliable tests require only one layout\n\t// so they're executed at the same time to save the second computation.\n\tfunction computeStyleTests() {\n\n\t\t// This is a singleton, we need to execute it only once\n\t\tif ( !div ) {\n\t\t\treturn;\n\t\t}\n\n\t\tcontainer.style.cssText = \"position:absolute;left:-11111px;width:60px;\" +\n\t\t\t\"margin-top:1px;padding:0;border:0\";\n\t\tdiv.style.cssText =\n\t\t\t\"position:relative;display:block;box-sizing:border-box;overflow:scroll;\" +\n\t\t\t\"margin:auto;border:1px;padding:1px;\" +\n\t\t\t\"width:60%;top:1%\";\n\t\tdocumentElement.appendChild( container ).appendChild( div );\n\n\t\tvar divStyle = window.getComputedStyle( div );\n\t\tpixelPositionVal = divStyle.top !== \"1%\";\n\n\t\t// Support: Android 4.0 - 4.3 only, Firefox <=3 - 44\n\t\treliableMarginLeftVal = roundPixelMeasures( divStyle.marginLeft ) === 12;\n\n\t\t// Support: Android 4.0 - 4.3 only, Safari <=9.1 - 10.1, iOS <=7.0 - 9.3\n\t\t// Some styles come back with percentage values, even though they shouldn't\n\t\tdiv.style.right = \"60%\";\n\t\tpixelBoxStylesVal = roundPixelMeasures( divStyle.right ) === 36;\n\n\t\t// Support: IE 9 - 11 only\n\t\t// Detect misreporting of content dimensions for box-sizing:border-box elements\n\t\tboxSizingReliableVal = roundPixelMeasures( divStyle.width ) === 36;\n\n\t\t// Support: IE 9 only\n\t\t// Detect overflow:scroll screwiness (gh-3699)\n\t\t// Support: Chrome <=64\n\t\t// Don't get tricked when zoom affects offsetWidth (gh-4029)\n\t\tdiv.style.position = \"absolute\";\n\t\tscrollboxSizeVal = roundPixelMeasures( div.offsetWidth / 3 ) === 12;\n\n\t\tdocumentElement.removeChild( container );\n\n\t\t// Nullify the div so it wouldn't be stored in the memory and\n\t\t// it will also be a sign that checks already performed\n\t\tdiv = null;\n\t}\n\n\tfunction roundPixelMeasures( measure ) {\n\t\treturn Math.round( parseFloat( measure ) );\n\t}\n\n\tvar pixelPositionVal, boxSizingReliableVal, scrollboxSizeVal, pixelBoxStylesVal,\n\t\treliableTrDimensionsVal, reliableMarginLeftVal,\n\t\tcontainer = document.createElement( \"div\" ),\n\t\tdiv = document.createElement( \"div\" );\n\n\t// Finish early in limited (non-browser) environments\n\tif ( !div.style ) {\n\t\treturn;\n\t}\n\n\t// Support: IE <=9 - 11 only\n\t// Style of cloned element affects source element cloned (#8908)\n\tdiv.style.backgroundClip = \"content-box\";\n\tdiv.cloneNode( true ).style.backgroundClip = \"\";\n\tsupport.clearCloneStyle = div.style.backgroundClip === \"content-box\";\n\n\tjQuery.extend( support, {\n\t\tboxSizingReliable: function() {\n\t\t\tcomputeStyleTests();\n\t\t\treturn boxSizingReliableVal;\n\t\t},\n\t\tpixelBoxStyles: function() {\n\t\t\tcomputeStyleTests();\n\t\t\treturn pixelBoxStylesVal;\n\t\t},\n\t\tpixelPosition: function() {\n\t\t\tcomputeStyleTests();\n\t\t\treturn pixelPositionVal;\n\t\t},\n\t\treliableMarginLeft: function() {\n\t\t\tcomputeStyleTests();\n\t\t\treturn reliableMarginLeftVal;\n\t\t},\n\t\tscrollboxSize: function() {\n\t\t\tcomputeStyleTests();\n\t\t\treturn scrollboxSizeVal;\n\t\t},\n\n\t\t// Support: IE 9 - 11+, Edge 15 - 18+\n\t\t// IE/Edge misreport `getComputedStyle` of table rows with width/height\n\t\t// set in CSS while `offset*` properties report correct values.\n\t\t// Behavior in IE 9 is more subtle than in newer versions & it passes\n\t\t// some versions of this test; make sure not to make it pass there!\n\t\t//\n\t\t// Support: Firefox 70+\n\t\t// Only Firefox includes border widths\n\t\t// in computed dimensions. (gh-4529)\n\t\treliableTrDimensions: function() {\n\t\t\tvar table, tr, trChild, trStyle;\n\t\t\tif ( reliableTrDimensionsVal == null ) {\n\t\t\t\ttable = document.createElement( \"table\" );\n\t\t\t\ttr = document.createElement( \"tr\" );\n\t\t\t\ttrChild = document.createElement( \"div\" );\n\n\t\t\t\ttable.style.cssText = \"position:absolute;left:-11111px;border-collapse:separate\";\n\t\t\t\ttr.style.cssText = \"border:1px solid\";\n\n\t\t\t\t// Support: Chrome 86+\n\t\t\t\t// Height set through cssText does not get applied.\n\t\t\t\t// Computed height then comes back as 0.\n\t\t\t\ttr.style.height = \"1px\";\n\t\t\t\ttrChild.style.height = \"9px\";\n\n\t\t\t\t// Support: Android 8 Chrome 86+\n\t\t\t\t// In our bodyBackground.html iframe,\n\t\t\t\t// display for all div elements is set to \"inline\",\n\t\t\t\t// which causes a problem only in Android 8 Chrome 86.\n\t\t\t\t// Ensuring the div is display: block\n\t\t\t\t// gets around this issue.\n\t\t\t\ttrChild.style.display = \"block\";\n\n\t\t\t\tdocumentElement\n\t\t\t\t\t.appendChild( table )\n\t\t\t\t\t.appendChild( tr )\n\t\t\t\t\t.appendChild( trChild );\n\n\t\t\t\ttrStyle = window.getComputedStyle( tr );\n\t\t\t\treliableTrDimensionsVal = ( parseInt( trStyle.height, 10 ) +\n\t\t\t\t\tparseInt( trStyle.borderTopWidth, 10 ) +\n\t\t\t\t\tparseInt( trStyle.borderBottomWidth, 10 ) ) === tr.offsetHeight;\n\n\t\t\t\tdocumentElement.removeChild( table );\n\t\t\t}\n\t\t\treturn reliableTrDimensionsVal;\n\t\t}\n\t} );\n} )();\n\n\nfunction curCSS( elem, name, computed ) {\n\tvar width, minWidth, maxWidth, ret,\n\n\t\t// Support: Firefox 51+\n\t\t// Retrieving style before computed somehow\n\t\t// fixes an issue with getting wrong values\n\t\t// on detached elements\n\t\tstyle = elem.style;\n\n\tcomputed = computed || getStyles( elem );\n\n\t// getPropertyValue is needed for:\n\t// .css('filter') (IE 9 only, #12537)\n\t// .css('--customProperty) (#3144)\n\tif ( computed ) {\n\t\tret = computed.getPropertyValue( name ) || computed[ name ];\n\n\t\tif ( ret === \"\" && !isAttached( elem ) ) {\n\t\t\tret = jQuery.style( elem, name );\n\t\t}\n\n\t\t// A tribute to the \"awesome hack by Dean Edwards\"\n\t\t// Android Browser returns percentage for some values,\n\t\t// but width seems to be reliably pixels.\n\t\t// This is against the CSSOM draft spec:\n\t\t// https://drafts.csswg.org/cssom/#resolved-values\n\t\tif ( !support.pixelBoxStyles() && rnumnonpx.test( ret ) && rboxStyle.test( name ) ) {\n\n\t\t\t// Remember the original values\n\t\t\twidth = style.width;\n\t\t\tminWidth = style.minWidth;\n\t\t\tmaxWidth = style.maxWidth;\n\n\t\t\t// Put in the new values to get a computed value out\n\t\t\tstyle.minWidth = style.maxWidth = style.width = ret;\n\t\t\tret = computed.width;\n\n\t\t\t// Revert the changed values\n\t\t\tstyle.width = width;\n\t\t\tstyle.minWidth = minWidth;\n\t\t\tstyle.maxWidth = maxWidth;\n\t\t}\n\t}\n\n\treturn ret !== undefined ?\n\n\t\t// Support: IE <=9 - 11 only\n\t\t// IE returns zIndex value as an integer.\n\t\tret + \"\" :\n\t\tret;\n}\n\n\nfunction addGetHookIf( conditionFn, hookFn ) {\n\n\t// Define the hook, we'll check on the first run if it's really needed.\n\treturn {\n\t\tget: function() {\n\t\t\tif ( conditionFn() ) {\n\n\t\t\t\t// Hook not needed (or it's not possible to use it due\n\t\t\t\t// to missing dependency), remove it.\n\t\t\t\tdelete this.get;\n\t\t\t\treturn;\n\t\t\t}\n\n\t\t\t// Hook needed; redefine it so that the support test is not executed again.\n\t\t\treturn ( this.get = hookFn ).apply( this, arguments );\n\t\t}\n\t};\n}\n\n\nvar cssPrefixes = [ \"Webkit\", \"Moz\", \"ms\" ],\n\temptyStyle = document.createElement( \"div\" ).style,\n\tvendorProps = {};\n\n// Return a vendor-prefixed property or undefined\nfunction vendorPropName( name ) {\n\n\t// Check for vendor prefixed names\n\tvar capName = name[ 0 ].toUpperCase() + name.slice( 1 ),\n\t\ti = cssPrefixes.length;\n\n\twhile ( i-- ) {\n\t\tname = cssPrefixes[ i ] + capName;\n\t\tif ( name in emptyStyle ) {\n\t\t\treturn name;\n\t\t}\n\t}\n}\n\n// Return a potentially-mapped jQuery.cssProps or vendor prefixed property\nfunction finalPropName( name ) {\n\tvar final = jQuery.cssProps[ name ] || vendorProps[ name ];\n\n\tif ( final ) {\n\t\treturn final;\n\t}\n\tif ( name in emptyStyle ) {\n\t\treturn name;\n\t}\n\treturn vendorProps[ name ] = vendorPropName( name ) || name;\n}\n\n\nvar\n\n\t// Swappable if display is none or starts with table\n\t// except \"table\", \"table-cell\", or \"table-caption\"\n\t// See here for display values: https://developer.mozilla.org/en-US/docs/CSS/display\n\trdisplayswap = /^(none|table(?!-c[ea]).+)/,\n\trcustomProp = /^--/,\n\tcssShow = { position: \"absolute\", visibility: \"hidden\", display: \"block\" },\n\tcssNormalTransform = {\n\t\tletterSpacing: \"0\",\n\t\tfontWeight: \"400\"\n\t};\n\nfunction setPositiveNumber( _elem, value, subtract ) {\n\n\t// Any relative (+/-) values have already been\n\t// normalized at this point\n\tvar matches = rcssNum.exec( value );\n\treturn matches ?\n\n\t\t// Guard against undefined \"subtract\", e.g., when used as in cssHooks\n\t\tMath.max( 0, matches[ 2 ] - ( subtract || 0 ) ) + ( matches[ 3 ] || \"px\" ) :\n\t\tvalue;\n}\n\nfunction boxModelAdjustment( elem, dimension, box, isBorderBox, styles, computedVal ) {\n\tvar i = dimension === \"width\" ? 1 : 0,\n\t\textra = 0,\n\t\tdelta = 0;\n\n\t// Adjustment may not be necessary\n\tif ( box === ( isBorderBox ? \"border\" : \"content\" ) ) {\n\t\treturn 0;\n\t}\n\n\tfor ( ; i < 4; i += 2 ) {\n\n\t\t// Both box models exclude margin\n\t\tif ( box === \"margin\" ) {\n\t\t\tdelta += jQuery.css( elem, box + cssExpand[ i ], true, styles );\n\t\t}\n\n\t\t// If we get here with a content-box, we're seeking \"padding\" or \"border\" or \"margin\"\n\t\tif ( !isBorderBox ) {\n\n\t\t\t// Add padding\n\t\t\tdelta += jQuery.css( elem, \"padding\" + cssExpand[ i ], true, styles );\n\n\t\t\t// For \"border\" or \"margin\", add border\n\t\t\tif ( box !== \"padding\" ) {\n\t\t\t\tdelta += jQuery.css( elem, \"border\" + cssExpand[ i ] + \"Width\", true, styles );\n\n\t\t\t// But still keep track of it otherwise\n\t\t\t} else {\n\t\t\t\textra += jQuery.css( elem, \"border\" + cssExpand[ i ] + \"Width\", true, styles );\n\t\t\t}\n\n\t\t// If we get here with a border-box (content + padding + border), we're seeking \"content\" or\n\t\t// \"padding\" or \"margin\"\n\t\t} else {\n\n\t\t\t// For \"content\", subtract padding\n\t\t\tif ( box === \"content\" ) {\n\t\t\t\tdelta -= jQuery.css( elem, \"padding\" + cssExpand[ i ], true, styles );\n\t\t\t}\n\n\t\t\t// For \"content\" or \"padding\", subtract border\n\t\t\tif ( box !== \"margin\" ) {\n\t\t\t\tdelta -= jQuery.css( elem, \"border\" + cssExpand[ i ] + \"Width\", true, styles );\n\t\t\t}\n\t\t}\n\t}\n\n\t// Account for positive content-box scroll gutter when requested by providing computedVal\n\tif ( !isBorderBox && computedVal >= 0 ) {\n\n\t\t// offsetWidth/offsetHeight is a rounded sum of content, padding, scroll gutter, and border\n\t\t// Assuming integer scroll gutter, subtract the rest and round down\n\t\tdelta += Math.max( 0, Math.ceil(\n\t\t\telem[ \"offset\" + dimension[ 0 ].toUpperCase() + dimension.slice( 1 ) ] -\n\t\t\tcomputedVal -\n\t\t\tdelta -\n\t\t\textra -\n\t\t\t0.5\n\n\t\t// If offsetWidth/offsetHeight is unknown, then we can't determine content-box scroll gutter\n\t\t// Use an explicit zero to avoid NaN (gh-3964)\n\t\t) ) || 0;\n\t}\n\n\treturn delta;\n}\n\nfunction getWidthOrHeight( elem, dimension, extra ) {\n\n\t// Start with computed style\n\tvar styles = getStyles( elem ),\n\n\t\t// To avoid forcing a reflow, only fetch boxSizing if we need it (gh-4322).\n\t\t// Fake content-box until we know it's needed to know the true value.\n\t\tboxSizingNeeded = !support.boxSizingReliable() || extra,\n\t\tisBorderBox = boxSizingNeeded &&\n\t\t\tjQuery.css( elem, \"boxSizing\", false, styles ) === \"border-box\",\n\t\tvalueIsBorderBox = isBorderBox,\n\n\t\tval = curCSS( elem, dimension, styles ),\n\t\toffsetProp = \"offset\" + dimension[ 0 ].toUpperCase() + dimension.slice( 1 );\n\n\t// Support: Firefox <=54\n\t// Return a confounding non-pixel value or feign ignorance, as appropriate.\n\tif ( rnumnonpx.test( val ) ) {\n\t\tif ( !extra ) {\n\t\t\treturn val;\n\t\t}\n\t\tval = \"auto\";\n\t}\n\n\n\t// Support: IE 9 - 11 only\n\t// Use offsetWidth/offsetHeight for when box sizing is unreliable.\n\t// In those cases, the computed value can be trusted to be border-box.\n\tif ( ( !support.boxSizingReliable() && isBorderBox ||\n\n\t\t// Support: IE 10 - 11+, Edge 15 - 18+\n\t\t// IE/Edge misreport `getComputedStyle` of table rows with width/height\n\t\t// set in CSS while `offset*` properties report correct values.\n\t\t// Interestingly, in some cases IE 9 doesn't suffer from this issue.\n\t\t!support.reliableTrDimensions() && nodeName( elem, \"tr\" ) ||\n\n\t\t// Fall back to offsetWidth/offsetHeight when value is \"auto\"\n\t\t// This happens for inline elements with no explicit setting (gh-3571)\n\t\tval === \"auto\" ||\n\n\t\t// Support: Android <=4.1 - 4.3 only\n\t\t// Also use offsetWidth/offsetHeight for misreported inline dimensions (gh-3602)\n\t\t!parseFloat( val ) && jQuery.css( elem, \"display\", false, styles ) === \"inline\" ) &&\n\n\t\t// Make sure the element is visible & connected\n\t\telem.getClientRects().length ) {\n\n\t\tisBorderBox = jQuery.css( elem, \"boxSizing\", false, styles ) === \"border-box\";\n\n\t\t// Where available, offsetWidth/offsetHeight approximate border box dimensions.\n\t\t// Where not available (e.g., SVG), assume unreliable box-sizing and interpret the\n\t\t// retrieved value as a content box dimension.\n\t\tvalueIsBorderBox = offsetProp in elem;\n\t\tif ( valueIsBorderBox ) {\n\t\t\tval = elem[ offsetProp ];\n\t\t}\n\t}\n\n\t// Normalize \"\" and auto\n\tval = parseFloat( val ) || 0;\n\n\t// Adjust for the element's box model\n\treturn ( val +\n\t\tboxModelAdjustment(\n\t\t\telem,\n\t\t\tdimension,\n\t\t\textra || ( isBorderBox ? \"border\" : \"content\" ),\n\t\t\tvalueIsBorderBox,\n\t\t\tstyles,\n\n\t\t\t// Provide the current computed size to request scroll gutter calculation (gh-3589)\n\t\t\tval\n\t\t)\n\t) + \"px\";\n}\n\njQuery.extend( {\n\n\t// Add in style property hooks for overriding the default\n\t// behavior of getting and setting a style property\n\tcssHooks: {\n\t\topacity: {\n\t\t\tget: function( elem, computed ) {\n\t\t\t\tif ( computed ) {\n\n\t\t\t\t\t// We should always get a number back from opacity\n\t\t\t\t\tvar ret = curCSS( elem, \"opacity\" );\n\t\t\t\t\treturn ret === \"\" ? \"1\" : ret;\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\t},\n\n\t// Don't automatically add \"px\" to these possibly-unitless properties\n\tcssNumber: {\n\t\t\"animationIterationCount\": true,\n\t\t\"columnCount\": true,\n\t\t\"fillOpacity\": true,\n\t\t\"flexGrow\": true,\n\t\t\"flexShrink\": true,\n\t\t\"fontWeight\": true,\n\t\t\"gridArea\": true,\n\t\t\"gridColumn\": true,\n\t\t\"gridColumnEnd\": true,\n\t\t\"gridColumnStart\": true,\n\t\t\"gridRow\": true,\n\t\t\"gridRowEnd\": true,\n\t\t\"gridRowStart\": true,\n\t\t\"lineHeight\": true,\n\t\t\"opacity\": true,\n\t\t\"order\": true,\n\t\t\"orphans\": true,\n\t\t\"widows\": true,\n\t\t\"zIndex\": true,\n\t\t\"zoom\": true\n\t},\n\n\t// Add in properties whose names you wish to fix before\n\t// setting or getting the value\n\tcssProps: {},\n\n\t// Get and set the style property on a DOM Node\n\tstyle: function( elem, name, value, extra ) {\n\n\t\t// Don't set styles on text and comment nodes\n\t\tif ( !elem || elem.nodeType === 3 || elem.nodeType === 8 || !elem.style ) {\n\t\t\treturn;\n\t\t}\n\n\t\t// Make sure that we're working with the right name\n\t\tvar ret, type, hooks,\n\t\t\torigName = camelCase( name ),\n\t\t\tisCustomProp = rcustomProp.test( name ),\n\t\t\tstyle = elem.style;\n\n\t\t// Make sure that we're working with the right name. We don't\n\t\t// want to query the value if it is a CSS custom property\n\t\t// since they are user-defined.\n\t\tif ( !isCustomProp ) {\n\t\t\tname = finalPropName( origName );\n\t\t}\n\n\t\t// Gets hook for the prefixed version, then unprefixed version\n\t\thooks = jQuery.cssHooks[ name ] || jQuery.cssHooks[ origName ];\n\n\t\t// Check if we're setting a value\n\t\tif ( value !== undefined ) {\n\t\t\ttype = typeof value;\n\n\t\t\t// Convert \"+=\" or \"-=\" to relative numbers (#7345)\n\t\t\tif ( type === \"string\" && ( ret = rcssNum.exec( value ) ) && ret[ 1 ] ) {\n\t\t\t\tvalue = adjustCSS( elem, name, ret );\n\n\t\t\t\t// Fixes bug #9237\n\t\t\t\ttype = \"number\";\n\t\t\t}\n\n\t\t\t// Make sure that null and NaN values aren't set (#7116)\n\t\t\tif ( value == null || value !== value ) {\n\t\t\t\treturn;\n\t\t\t}\n\n\t\t\t// If a number was passed in, add the unit (except for certain CSS properties)\n\t\t\t// The isCustomProp check can be removed in jQuery 4.0 when we only auto-append\n\t\t\t// \"px\" to a few hardcoded values.\n\t\t\tif ( type === \"number\" && !isCustomProp ) {\n\t\t\t\tvalue += ret && ret[ 3 ] || ( jQuery.cssNumber[ origName ] ? \"\" : \"px\" );\n\t\t\t}\n\n\t\t\t// background-* props affect original clone's values\n\t\t\tif ( !support.clearCloneStyle && value === \"\" && name.indexOf( \"background\" ) === 0 ) {\n\t\t\t\tstyle[ name ] = \"inherit\";\n\t\t\t}\n\n\t\t\t// If a hook was provided, use that value, otherwise just set the specified value\n\t\t\tif ( !hooks || !( \"set\" in hooks ) ||\n\t\t\t\t( value = hooks.set( elem, value, extra ) ) !== undefined ) {\n\n\t\t\t\tif ( isCustomProp ) {\n\t\t\t\t\tstyle.setProperty( name, value );\n\t\t\t\t} else {\n\t\t\t\t\tstyle[ name ] = value;\n\t\t\t\t}\n\t\t\t}\n\n\t\t} else {\n\n\t\t\t// If a hook was provided get the non-computed value from there\n\t\t\tif ( hooks && \"get\" in hooks &&\n\t\t\t\t( ret = hooks.get( elem, false, extra ) ) !== undefined ) {\n\n\t\t\t\treturn ret;\n\t\t\t}\n\n\t\t\t// Otherwise just get the value from the style object\n\t\t\treturn style[ name ];\n\t\t}\n\t},\n\n\tcss: function( elem, name, extra, styles ) {\n\t\tvar val, num, hooks,\n\t\t\torigName = camelCase( name ),\n\t\t\tisCustomProp = rcustomProp.test( name );\n\n\t\t// Make sure that we're working with the right name. We don't\n\t\t// want to modify the value if it is a CSS custom property\n\t\t// since they are user-defined.\n\t\tif ( !isCustomProp ) {\n\t\t\tname = finalPropName( origName );\n\t\t}\n\n\t\t// Try prefixed name followed by the unprefixed name\n\t\thooks = jQuery.cssHooks[ name ] || jQuery.cssHooks[ origName ];\n\n\t\t// If a hook was provided get the computed value from there\n\t\tif ( hooks && \"get\" in hooks ) {\n\t\t\tval = hooks.get( elem, true, extra );\n\t\t}\n\n\t\t// Otherwise, if a way to get the computed value exists, use that\n\t\tif ( val === undefined ) {\n\t\t\tval = curCSS( elem, name, styles );\n\t\t}\n\n\t\t// Convert \"normal\" to computed value\n\t\tif ( val === \"normal\" && name in cssNormalTransform ) {\n\t\t\tval = cssNormalTransform[ name ];\n\t\t}\n\n\t\t// Make numeric if forced or a qualifier was provided and val looks numeric\n\t\tif ( extra === \"\" || extra ) {\n\t\t\tnum = parseFloat( val );\n\t\t\treturn extra === true || isFinite( num ) ? num || 0 : val;\n\t\t}\n\n\t\treturn val;\n\t}\n} );\n\njQuery.each( [ \"height\", \"width\" ], function( _i, dimension ) {\n\tjQuery.cssHooks[ dimension ] = {\n\t\tget: function( elem, computed, extra ) {\n\t\t\tif ( computed ) {\n\n\t\t\t\t// Certain elements can have dimension info if we invisibly show them\n\t\t\t\t// but it must have a current display style that would benefit\n\t\t\t\treturn rdisplayswap.test( jQuery.css( elem, \"display\" ) ) &&\n\n\t\t\t\t\t// Support: Safari 8+\n\t\t\t\t\t// Table columns in Safari have non-zero offsetWidth & zero\n\t\t\t\t\t// getBoundingClientRect().width unless display is changed.\n\t\t\t\t\t// Support: IE <=11 only\n\t\t\t\t\t// Running getBoundingClientRect on a disconnected node\n\t\t\t\t\t// in IE throws an error.\n\t\t\t\t\t( !elem.getClientRects().length || !elem.getBoundingClientRect().width ) ?\n\t\t\t\t\tswap( elem, cssShow, function() {\n\t\t\t\t\t\treturn getWidthOrHeight( elem, dimension, extra );\n\t\t\t\t\t} ) :\n\t\t\t\t\tgetWidthOrHeight( elem, dimension, extra );\n\t\t\t}\n\t\t},\n\n\t\tset: function( elem, value, extra ) {\n\t\t\tvar matches,\n\t\t\t\tstyles = getStyles( elem ),\n\n\t\t\t\t// Only read styles.position if the test has a chance to fail\n\t\t\t\t// to avoid forcing a reflow.\n\t\t\t\tscrollboxSizeBuggy = !support.scrollboxSize() &&\n\t\t\t\t\tstyles.position === \"absolute\",\n\n\t\t\t\t// To avoid forcing a reflow, only fetch boxSizing if we need it (gh-3991)\n\t\t\t\tboxSizingNeeded = scrollboxSizeBuggy || extra,\n\t\t\t\tisBorderBox = boxSizingNeeded &&\n\t\t\t\t\tjQuery.css( elem, \"boxSizing\", false, styles ) === \"border-box\",\n\t\t\t\tsubtract = extra ?\n\t\t\t\t\tboxModelAdjustment(\n\t\t\t\t\t\telem,\n\t\t\t\t\t\tdimension,\n\t\t\t\t\t\textra,\n\t\t\t\t\t\tisBorderBox,\n\t\t\t\t\t\tstyles\n\t\t\t\t\t) :\n\t\t\t\t\t0;\n\n\t\t\t// Account for unreliable border-box dimensions by comparing offset* to computed and\n\t\t\t// faking a content-box to get border and padding (gh-3699)\n\t\t\tif ( isBorderBox && scrollboxSizeBuggy ) {\n\t\t\t\tsubtract -= Math.ceil(\n\t\t\t\t\telem[ \"offset\" + dimension[ 0 ].toUpperCase() + dimension.slice( 1 ) ] -\n\t\t\t\t\tparseFloat( styles[ dimension ] ) -\n\t\t\t\t\tboxModelAdjustment( elem, dimension, \"border\", false, styles ) -\n\t\t\t\t\t0.5\n\t\t\t\t);\n\t\t\t}\n\n\t\t\t// Convert to pixels if value adjustment is needed\n\t\t\tif ( subtract && ( matches = rcssNum.exec( value ) ) &&\n\t\t\t\t( matches[ 3 ] || \"px\" ) !== \"px\" ) {\n\n\t\t\t\telem.style[ dimension ] = value;\n\t\t\t\tvalue = jQuery.css( elem, dimension );\n\t\t\t}\n\n\t\t\treturn setPositiveNumber( elem, value, subtract );\n\t\t}\n\t};\n} );\n\njQuery.cssHooks.marginLeft = addGetHookIf( support.reliableMarginLeft,\n\tfunction( elem, computed ) {\n\t\tif ( computed ) {\n\t\t\treturn ( parseFloat( curCSS( elem, \"marginLeft\" ) ) ||\n\t\t\t\telem.getBoundingClientRect().left -\n\t\t\t\t\tswap( elem, { marginLeft: 0 }, function() {\n\t\t\t\t\t\treturn elem.getBoundingClientRect().left;\n\t\t\t\t\t} )\n\t\t\t) + \"px\";\n\t\t}\n\t}\n);\n\n// These hooks are used by animate to expand properties\njQuery.each( {\n\tmargin: \"\",\n\tpadding: \"\",\n\tborder: \"Width\"\n}, function( prefix, suffix ) {\n\tjQuery.cssHooks[ prefix + suffix ] = {\n\t\texpand: function( value ) {\n\t\t\tvar i = 0,\n\t\t\t\texpanded = {},\n\n\t\t\t\t// Assumes a single number if not a string\n\t\t\t\tparts = typeof value === \"string\" ? value.split( \" \" ) : [ value ];\n\n\t\t\tfor ( ; i < 4; i++ ) {\n\t\t\t\texpanded[ prefix + cssExpand[ i ] + suffix ] =\n\t\t\t\t\tparts[ i ] || parts[ i - 2 ] || parts[ 0 ];\n\t\t\t}\n\n\t\t\treturn expanded;\n\t\t}\n\t};\n\n\tif ( prefix !== \"margin\" ) {\n\t\tjQuery.cssHooks[ prefix + suffix ].set = setPositiveNumber;\n\t}\n} );\n\njQuery.fn.extend( {\n\tcss: function( name, value ) {\n\t\treturn access( this, function( elem, name, value ) {\n\t\t\tvar styles, len,\n\t\t\t\tmap = {},\n\t\t\t\ti = 0;\n\n\t\t\tif ( Array.isArray( name ) ) {\n\t\t\t\tstyles = getStyles( elem );\n\t\t\t\tlen = name.length;\n\n\t\t\t\tfor ( ; i < len; i++ ) {\n\t\t\t\t\tmap[ name[ i ] ] = jQuery.css( elem, name[ i ], false, styles );\n\t\t\t\t}\n\n\t\t\t\treturn map;\n\t\t\t}\n\n\t\t\treturn value !== undefined ?\n\t\t\t\tjQuery.style( elem, name, value ) :\n\t\t\t\tjQuery.css( elem, name );\n\t\t}, name, value, arguments.length > 1 );\n\t}\n} );\n\n\nfunction Tween( elem, options, prop, end, easing ) {\n\treturn new Tween.prototype.init( elem, options, prop, end, easing );\n}\njQuery.Tween = Tween;\n\nTween.prototype = {\n\tconstructor: Tween,\n\tinit: function( elem, options, prop, end, easing, unit ) {\n\t\tthis.elem = elem;\n\t\tthis.prop = prop;\n\t\tthis.easing = easing || jQuery.easing._default;\n\t\tthis.options = options;\n\t\tthis.start = this.now = this.cur();\n\t\tthis.end = end;\n\t\tthis.unit = unit || ( jQuery.cssNumber[ prop ] ? \"\" : \"px\" );\n\t},\n\tcur: function() {\n\t\tvar hooks = Tween.propHooks[ this.prop ];\n\n\t\treturn hooks && hooks.get ?\n\t\t\thooks.get( this ) :\n\t\t\tTween.propHooks._default.get( this );\n\t},\n\trun: function( percent ) {\n\t\tvar eased,\n\t\t\thooks = Tween.propHooks[ this.prop ];\n\n\t\tif ( this.options.duration ) {\n\t\t\tthis.pos = eased = jQuery.easing[ this.easing ](\n\t\t\t\tpercent, this.options.duration * percent, 0, 1, this.options.duration\n\t\t\t);\n\t\t} else {\n\t\t\tthis.pos = eased = percent;\n\t\t}\n\t\tthis.now = ( this.end - this.start ) * eased + this.start;\n\n\t\tif ( this.options.step ) {\n\t\t\tthis.options.step.call( this.elem, this.now, this );\n\t\t}\n\n\t\tif ( hooks && hooks.set ) {\n\t\t\thooks.set( this );\n\t\t} else {\n\t\t\tTween.propHooks._default.set( this );\n\t\t}\n\t\treturn this;\n\t}\n};\n\nTween.prototype.init.prototype = Tween.prototype;\n\nTween.propHooks = {\n\t_default: {\n\t\tget: function( tween ) {\n\t\t\tvar result;\n\n\t\t\t// Use a property on the element directly when it is not a DOM element,\n\t\t\t// or when there is no matching style property that exists.\n\t\t\tif ( tween.elem.nodeType !== 1 ||\n\t\t\t\ttween.elem[ tween.prop ] != null && tween.elem.style[ tween.prop ] == null ) {\n\t\t\t\treturn tween.elem[ tween.prop ];\n\t\t\t}\n\n\t\t\t// Passing an empty string as a 3rd parameter to .css will automatically\n\t\t\t// attempt a parseFloat and fallback to a string if the parse fails.\n\t\t\t// Simple values such as \"10px\" are parsed to Float;\n\t\t\t// complex values such as \"rotate(1rad)\" are returned as-is.\n\t\t\tresult = jQuery.css( tween.elem, tween.prop, \"\" );\n\n\t\t\t// Empty strings, null, undefined and \"auto\" are converted to 0.\n\t\t\treturn !result || result === \"auto\" ? 0 : result;\n\t\t},\n\t\tset: function( tween ) {\n\n\t\t\t// Use step hook for back compat.\n\t\t\t// Use cssHook if its there.\n\t\t\t// Use .style if available and use plain properties where available.\n\t\t\tif ( jQuery.fx.step[ tween.prop ] ) {\n\t\t\t\tjQuery.fx.step[ tween.prop ]( tween );\n\t\t\t} else if ( tween.elem.nodeType === 1 && (\n\t\t\t\tjQuery.cssHooks[ tween.prop ] ||\n\t\t\t\t\ttween.elem.style[ finalPropName( tween.prop ) ] != null ) ) {\n\t\t\t\tjQuery.style( tween.elem, tween.prop, tween.now + tween.unit );\n\t\t\t} else {\n\t\t\t\ttween.elem[ tween.prop ] = tween.now;\n\t\t\t}\n\t\t}\n\t}\n};\n\n// Support: IE <=9 only\n// Panic based approach to setting things on disconnected nodes\nTween.propHooks.scrollTop = Tween.propHooks.scrollLeft = {\n\tset: function( tween ) {\n\t\tif ( tween.elem.nodeType && tween.elem.parentNode ) {\n\t\t\ttween.elem[ tween.prop ] = tween.now;\n\t\t}\n\t}\n};\n\njQuery.easing = {\n\tlinear: function( p ) {\n\t\treturn p;\n\t},\n\tswing: function( p ) {\n\t\treturn 0.5 - Math.cos( p * Math.PI ) / 2;\n\t},\n\t_default: \"swing\"\n};\n\njQuery.fx = Tween.prototype.init;\n\n// Back compat <1.8 extension point\njQuery.fx.step = {};\n\n\n\n\nvar\n\tfxNow, inProgress,\n\trfxtypes = /^(?:toggle|show|hide)$/,\n\trrun = /queueHooks$/;\n\nfunction schedule() {\n\tif ( inProgress ) {\n\t\tif ( document.hidden === false && window.requestAnimationFrame ) {\n\t\t\twindow.requestAnimationFrame( schedule );\n\t\t} else {\n\t\t\twindow.setTimeout( schedule, jQuery.fx.interval );\n\t\t}\n\n\t\tjQuery.fx.tick();\n\t}\n}\n\n// Animations created synchronously will run synchronously\nfunction createFxNow() {\n\twindow.setTimeout( function() {\n\t\tfxNow = undefined;\n\t} );\n\treturn ( fxNow = Date.now() );\n}\n\n// Generate parameters to create a standard animation\nfunction genFx( type, includeWidth ) {\n\tvar which,\n\t\ti = 0,\n\t\tattrs = { height: type };\n\n\t// If we include width, step value is 1 to do all cssExpand values,\n\t// otherwise step value is 2 to skip over Left and Right\n\tincludeWidth = includeWidth ? 1 : 0;\n\tfor ( ; i < 4; i += 2 - includeWidth ) {\n\t\twhich = cssExpand[ i ];\n\t\tattrs[ \"margin\" + which ] = attrs[ \"padding\" + which ] = type;\n\t}\n\n\tif ( includeWidth ) {\n\t\tattrs.opacity = attrs.width = type;\n\t}\n\n\treturn attrs;\n}\n\nfunction createTween( value, prop, animation ) {\n\tvar tween,\n\t\tcollection = ( Animation.tweeners[ prop ] || [] ).concat( Animation.tweeners[ \"*\" ] ),\n\t\tindex = 0,\n\t\tlength = collection.length;\n\tfor ( ; index < length; index++ ) {\n\t\tif ( ( tween = collection[ index ].call( animation, prop, value ) ) ) {\n\n\t\t\t// We're done with this property\n\t\t\treturn tween;\n\t\t}\n\t}\n}\n\nfunction defaultPrefilter( elem, props, opts ) {\n\tvar prop, value, toggle, hooks, oldfire, propTween, restoreDisplay, display,\n\t\tisBox = \"width\" in props || \"height\" in props,\n\t\tanim = this,\n\t\torig = {},\n\t\tstyle = elem.style,\n\t\thidden = elem.nodeType && isHiddenWithinTree( elem ),\n\t\tdataShow = dataPriv.get( elem, \"fxshow\" );\n\n\t// Queue-skipping animations hijack the fx hooks\n\tif ( !opts.queue ) {\n\t\thooks = jQuery._queueHooks( elem, \"fx\" );\n\t\tif ( hooks.unqueued == null ) {\n\t\t\thooks.unqueued = 0;\n\t\t\toldfire = hooks.empty.fire;\n\t\t\thooks.empty.fire = function() {\n\t\t\t\tif ( !hooks.unqueued ) {\n\t\t\t\t\toldfire();\n\t\t\t\t}\n\t\t\t};\n\t\t}\n\t\thooks.unqueued++;\n\n\t\tanim.always( function() {\n\n\t\t\t// Ensure the complete handler is called before this completes\n\t\t\tanim.always( function() {\n\t\t\t\thooks.unqueued--;\n\t\t\t\tif ( !jQuery.queue( elem, \"fx\" ).length ) {\n\t\t\t\t\thooks.empty.fire();\n\t\t\t\t}\n\t\t\t} );\n\t\t} );\n\t}\n\n\t// Detect show/hide animations\n\tfor ( prop in props ) {\n\t\tvalue = props[ prop ];\n\t\tif ( rfxtypes.test( value ) ) {\n\t\t\tdelete props[ prop ];\n\t\t\ttoggle = toggle || value === \"toggle\";\n\t\t\tif ( value === ( hidden ? \"hide\" : \"show\" ) ) {\n\n\t\t\t\t// Pretend to be hidden if this is a \"show\" and\n\t\t\t\t// there is still data from a stopped show/hide\n\t\t\t\tif ( value === \"show\" && dataShow && dataShow[ prop ] !== undefined ) {\n\t\t\t\t\thidden = true;\n\n\t\t\t\t// Ignore all other no-op show/hide data\n\t\t\t\t} else {\n\t\t\t\t\tcontinue;\n\t\t\t\t}\n\t\t\t}\n\t\t\torig[ prop ] = dataShow && dataShow[ prop ] || jQuery.style( elem, prop );\n\t\t}\n\t}\n\n\t// Bail out if this is a no-op like .hide().hide()\n\tpropTween = !jQuery.isEmptyObject( props );\n\tif ( !propTween && jQuery.isEmptyObject( orig ) ) {\n\t\treturn;\n\t}\n\n\t// Restrict \"overflow\" and \"display\" styles during box animations\n\tif ( isBox && elem.nodeType === 1 ) {\n\n\t\t// Support: IE <=9 - 11, Edge 12 - 15\n\t\t// Record all 3 overflow attributes because IE does not infer the shorthand\n\t\t// from identically-valued overflowX and overflowY and Edge just mirrors\n\t\t// the overflowX value there.\n\t\topts.overflow = [ style.overflow, style.overflowX, style.overflowY ];\n\n\t\t// Identify a display type, preferring old show/hide data over the CSS cascade\n\t\trestoreDisplay = dataShow && dataShow.display;\n\t\tif ( restoreDisplay == null ) {\n\t\t\trestoreDisplay = dataPriv.get( elem, \"display\" );\n\t\t}\n\t\tdisplay = jQuery.css( elem, \"display\" );\n\t\tif ( display === \"none\" ) {\n\t\t\tif ( restoreDisplay ) {\n\t\t\t\tdisplay = restoreDisplay;\n\t\t\t} else {\n\n\t\t\t\t// Get nonempty value(s) by temporarily forcing visibility\n\t\t\t\tshowHide( [ elem ], true );\n\t\t\t\trestoreDisplay = elem.style.display || restoreDisplay;\n\t\t\t\tdisplay = jQuery.css( elem, \"display\" );\n\t\t\t\tshowHide( [ elem ] );\n\t\t\t}\n\t\t}\n\n\t\t// Animate inline elements as inline-block\n\t\tif ( display === \"inline\" || display === \"inline-block\" && restoreDisplay != null ) {\n\t\t\tif ( jQuery.css( elem, \"float\" ) === \"none\" ) {\n\n\t\t\t\t// Restore the original display value at the end of pure show/hide animations\n\t\t\t\tif ( !propTween ) {\n\t\t\t\t\tanim.done( function() {\n\t\t\t\t\t\tstyle.display = restoreDisplay;\n\t\t\t\t\t} );\n\t\t\t\t\tif ( restoreDisplay == null ) {\n\t\t\t\t\t\tdisplay = style.display;\n\t\t\t\t\t\trestoreDisplay = display === \"none\" ? \"\" : display;\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t\tstyle.display = \"inline-block\";\n\t\t\t}\n\t\t}\n\t}\n\n\tif ( opts.overflow ) {\n\t\tstyle.overflow = \"hidden\";\n\t\tanim.always( function() {\n\t\t\tstyle.overflow = opts.overflow[ 0 ];\n\t\t\tstyle.overflowX = opts.overflow[ 1 ];\n\t\t\tstyle.overflowY = opts.overflow[ 2 ];\n\t\t} );\n\t}\n\n\t// Implement show/hide animations\n\tpropTween = false;\n\tfor ( prop in orig ) {\n\n\t\t// General show/hide setup for this element animation\n\t\tif ( !propTween ) {\n\t\t\tif ( dataShow ) {\n\t\t\t\tif ( \"hidden\" in dataShow ) {\n\t\t\t\t\thidden = dataShow.hidden;\n\t\t\t\t}\n\t\t\t} else {\n\t\t\t\tdataShow = dataPriv.access( elem, \"fxshow\", { display: restoreDisplay } );\n\t\t\t}\n\n\t\t\t// Store hidden/visible for toggle so `.stop().toggle()` \"reverses\"\n\t\t\tif ( toggle ) {\n\t\t\t\tdataShow.hidden = !hidden;\n\t\t\t}\n\n\t\t\t// Show elements before animating them\n\t\t\tif ( hidden ) {\n\t\t\t\tshowHide( [ elem ], true );\n\t\t\t}\n\n\t\t\t/* eslint-disable no-loop-func */\n\n\t\t\tanim.done( function() {\n\n\t\t\t\t/* eslint-enable no-loop-func */\n\n\t\t\t\t// The final step of a \"hide\" animation is actually hiding the element\n\t\t\t\tif ( !hidden ) {\n\t\t\t\t\tshowHide( [ elem ] );\n\t\t\t\t}\n\t\t\t\tdataPriv.remove( elem, \"fxshow\" );\n\t\t\t\tfor ( prop in orig ) {\n\t\t\t\t\tjQuery.style( elem, prop, orig[ prop ] );\n\t\t\t\t}\n\t\t\t} );\n\t\t}\n\n\t\t// Per-property setup\n\t\tpropTween = createTween( hidden ? dataShow[ prop ] : 0, prop, anim );\n\t\tif ( !( prop in dataShow ) ) {\n\t\t\tdataShow[ prop ] = propTween.start;\n\t\t\tif ( hidden ) {\n\t\t\t\tpropTween.end = propTween.start;\n\t\t\t\tpropTween.start = 0;\n\t\t\t}\n\t\t}\n\t}\n}\n\nfunction propFilter( props, specialEasing ) {\n\tvar index, name, easing, value, hooks;\n\n\t// camelCase, specialEasing and expand cssHook pass\n\tfor ( index in props ) {\n\t\tname = camelCase( index );\n\t\teasing = specialEasing[ name ];\n\t\tvalue = props[ index ];\n\t\tif ( Array.isArray( value ) ) {\n\t\t\teasing = value[ 1 ];\n\t\t\tvalue = props[ index ] = value[ 0 ];\n\t\t}\n\n\t\tif ( index !== name ) {\n\t\t\tprops[ name ] = value;\n\t\t\tdelete props[ index ];\n\t\t}\n\n\t\thooks = jQuery.cssHooks[ name ];\n\t\tif ( hooks && \"expand\" in hooks ) {\n\t\t\tvalue = hooks.expand( value );\n\t\t\tdelete props[ name ];\n\n\t\t\t// Not quite $.extend, this won't overwrite existing keys.\n\t\t\t// Reusing 'index' because we have the correct \"name\"\n\t\t\tfor ( index in value ) {\n\t\t\t\tif ( !( index in props ) ) {\n\t\t\t\t\tprops[ index ] = value[ index ];\n\t\t\t\t\tspecialEasing[ index ] = easing;\n\t\t\t\t}\n\t\t\t}\n\t\t} else {\n\t\t\tspecialEasing[ name ] = easing;\n\t\t}\n\t}\n}\n\nfunction Animation( elem, properties, options ) {\n\tvar result,\n\t\tstopped,\n\t\tindex = 0,\n\t\tlength = Animation.prefilters.length,\n\t\tdeferred = jQuery.Deferred().always( function() {\n\n\t\t\t// Don't match elem in the :animated selector\n\t\t\tdelete tick.elem;\n\t\t} ),\n\t\ttick = function() {\n\t\t\tif ( stopped ) {\n\t\t\t\treturn false;\n\t\t\t}\n\t\t\tvar currentTime = fxNow || createFxNow(),\n\t\t\t\tremaining = Math.max( 0, animation.startTime + animation.duration - currentTime ),\n\n\t\t\t\t// Support: Android 2.3 only\n\t\t\t\t// Archaic crash bug won't allow us to use `1 - ( 0.5 || 0 )` (#12497)\n\t\t\t\ttemp = remaining / animation.duration || 0,\n\t\t\t\tpercent = 1 - temp,\n\t\t\t\tindex = 0,\n\t\t\t\tlength = animation.tweens.length;\n\n\t\t\tfor ( ; index < length; index++ ) {\n\t\t\t\tanimation.tweens[ index ].run( percent );\n\t\t\t}\n\n\t\t\tdeferred.notifyWith( elem, [ animation, percent, remaining ] );\n\n\t\t\t// If there's more to do, yield\n\t\t\tif ( percent < 1 && length ) {\n\t\t\t\treturn remaining;\n\t\t\t}\n\n\t\t\t// If this was an empty animation, synthesize a final progress notification\n\t\t\tif ( !length ) {\n\t\t\t\tdeferred.notifyWith( elem, [ animation, 1, 0 ] );\n\t\t\t}\n\n\t\t\t// Resolve the animation and report its conclusion\n\t\t\tdeferred.resolveWith( elem, [ animation ] );\n\t\t\treturn false;\n\t\t},\n\t\tanimation = deferred.promise( {\n\t\t\telem: elem,\n\t\t\tprops: jQuery.extend( {}, properties ),\n\t\t\topts: jQuery.extend( true, {\n\t\t\t\tspecialEasing: {},\n\t\t\t\teasing: jQuery.easing._default\n\t\t\t}, options ),\n\t\t\toriginalProperties: properties,\n\t\t\toriginalOptions: options,\n\t\t\tstartTime: fxNow || createFxNow(),\n\t\t\tduration: options.duration,\n\t\t\ttweens: [],\n\t\t\tcreateTween: function( prop, end ) {\n\t\t\t\tvar tween = jQuery.Tween( elem, animation.opts, prop, end,\n\t\t\t\t\tanimation.opts.specialEasing[ prop ] || animation.opts.easing );\n\t\t\t\tanimation.tweens.push( tween );\n\t\t\t\treturn tween;\n\t\t\t},\n\t\t\tstop: function( gotoEnd ) {\n\t\t\t\tvar index = 0,\n\n\t\t\t\t\t// If we are going to the end, we want to run all the tweens\n\t\t\t\t\t// otherwise we skip this part\n\t\t\t\t\tlength = gotoEnd ? animation.tweens.length : 0;\n\t\t\t\tif ( stopped ) {\n\t\t\t\t\treturn this;\n\t\t\t\t}\n\t\t\t\tstopped = true;\n\t\t\t\tfor ( ; index < length; index++ ) {\n\t\t\t\t\tanimation.tweens[ index ].run( 1 );\n\t\t\t\t}\n\n\t\t\t\t// Resolve when we played the last frame; otherwise, reject\n\t\t\t\tif ( gotoEnd ) {\n\t\t\t\t\tdeferred.notifyWith( elem, [ animation, 1, 0 ] );\n\t\t\t\t\tdeferred.resolveWith( elem, [ animation, gotoEnd ] );\n\t\t\t\t} else {\n\t\t\t\t\tdeferred.rejectWith( elem, [ animation, gotoEnd ] );\n\t\t\t\t}\n\t\t\t\treturn this;\n\t\t\t}\n\t\t} ),\n\t\tprops = animation.props;\n\n\tpropFilter( props, animation.opts.specialEasing );\n\n\tfor ( ; index < length; index++ ) {\n\t\tresult = Animation.prefilters[ index ].call( animation, elem, props, animation.opts );\n\t\tif ( result ) {\n\t\t\tif ( isFunction( result.stop ) ) {\n\t\t\t\tjQuery._queueHooks( animation.elem, animation.opts.queue ).stop =\n\t\t\t\t\tresult.stop.bind( result );\n\t\t\t}\n\t\t\treturn result;\n\t\t}\n\t}\n\n\tjQuery.map( props, createTween, animation );\n\n\tif ( isFunction( animation.opts.start ) ) {\n\t\tanimation.opts.start.call( elem, animation );\n\t}\n\n\t// Attach callbacks from options\n\tanimation\n\t\t.progress( animation.opts.progress )\n\t\t.done( animation.opts.done, animation.opts.complete )\n\t\t.fail( animation.opts.fail )\n\t\t.always( animation.opts.always );\n\n\tjQuery.fx.timer(\n\t\tjQuery.extend( tick, {\n\t\t\telem: elem,\n\t\t\tanim: animation,\n\t\t\tqueue: animation.opts.queue\n\t\t} )\n\t);\n\n\treturn animation;\n}\n\njQuery.Animation = jQuery.extend( Animation, {\n\n\ttweeners: {\n\t\t\"*\": [ function( prop, value ) {\n\t\t\tvar tween = this.createTween( prop, value );\n\t\t\tadjustCSS( tween.elem, prop, rcssNum.exec( value ), tween );\n\t\t\treturn tween;\n\t\t} ]\n\t},\n\n\ttweener: function( props, callback ) {\n\t\tif ( isFunction( props ) ) {\n\t\t\tcallback = props;\n\t\t\tprops = [ \"*\" ];\n\t\t} else {\n\t\t\tprops = props.match( rnothtmlwhite );\n\t\t}\n\n\t\tvar prop,\n\t\t\tindex = 0,\n\t\t\tlength = props.length;\n\n\t\tfor ( ; index < length; index++ ) {\n\t\t\tprop = props[ index ];\n\t\t\tAnimation.tweeners[ prop ] = Animation.tweeners[ prop ] || [];\n\t\t\tAnimation.tweeners[ prop ].unshift( callback );\n\t\t}\n\t},\n\n\tprefilters: [ defaultPrefilter ],\n\n\tprefilter: function( callback, prepend ) {\n\t\tif ( prepend ) {\n\t\t\tAnimation.prefilters.unshift( callback );\n\t\t} else {\n\t\t\tAnimation.prefilters.push( callback );\n\t\t}\n\t}\n} );\n\njQuery.speed = function( speed, easing, fn ) {\n\tvar opt = speed && typeof speed === \"object\" ? jQuery.extend( {}, speed ) : {\n\t\tcomplete: fn || !fn && easing ||\n\t\t\tisFunction( speed ) && speed,\n\t\tduration: speed,\n\t\teasing: fn && easing || easing && !isFunction( easing ) && easing\n\t};\n\n\t// Go to the end state if fx are off\n\tif ( jQuery.fx.off ) {\n\t\topt.duration = 0;\n\n\t} else {\n\t\tif ( typeof opt.duration !== \"number\" ) {\n\t\t\tif ( opt.duration in jQuery.fx.speeds ) {\n\t\t\t\topt.duration = jQuery.fx.speeds[ opt.duration ];\n\n\t\t\t} else {\n\t\t\t\topt.duration = jQuery.fx.speeds._default;\n\t\t\t}\n\t\t}\n\t}\n\n\t// Normalize opt.queue - true/undefined/null -> \"fx\"\n\tif ( opt.queue == null || opt.queue === true ) {\n\t\topt.queue = \"fx\";\n\t}\n\n\t// Queueing\n\topt.old = opt.complete;\n\n\topt.complete = function() {\n\t\tif ( isFunction( opt.old ) ) {\n\t\t\topt.old.call( this );\n\t\t}\n\n\t\tif ( opt.queue ) {\n\t\t\tjQuery.dequeue( this, opt.queue );\n\t\t}\n\t};\n\n\treturn opt;\n};\n\njQuery.fn.extend( {\n\tfadeTo: function( speed, to, easing, callback ) {\n\n\t\t// Show any hidden elements after setting opacity to 0\n\t\treturn this.filter( isHiddenWithinTree ).css( \"opacity\", 0 ).show()\n\n\t\t\t// Animate to the value specified\n\t\t\t.end().animate( { opacity: to }, speed, easing, callback );\n\t},\n\tanimate: function( prop, speed, easing, callback ) {\n\t\tvar empty = jQuery.isEmptyObject( prop ),\n\t\t\toptall = jQuery.speed( speed, easing, callback ),\n\t\t\tdoAnimation = function() {\n\n\t\t\t\t// Operate on a copy of prop so per-property easing won't be lost\n\t\t\t\tvar anim = Animation( this, jQuery.extend( {}, prop ), optall );\n\n\t\t\t\t// Empty animations, or finishing resolves immediately\n\t\t\t\tif ( empty || dataPriv.get( this, \"finish\" ) ) {\n\t\t\t\t\tanim.stop( true );\n\t\t\t\t}\n\t\t\t};\n\n\t\tdoAnimation.finish = doAnimation;\n\n\t\treturn empty || optall.queue === false ?\n\t\t\tthis.each( doAnimation ) :\n\t\t\tthis.queue( optall.queue, doAnimation );\n\t},\n\tstop: function( type, clearQueue, gotoEnd ) {\n\t\tvar stopQueue = function( hooks ) {\n\t\t\tvar stop = hooks.stop;\n\t\t\tdelete hooks.stop;\n\t\t\tstop( gotoEnd );\n\t\t};\n\n\t\tif ( typeof type !== \"string\" ) {\n\t\t\tgotoEnd = clearQueue;\n\t\t\tclearQueue = type;\n\t\t\ttype = undefined;\n\t\t}\n\t\tif ( clearQueue ) {\n\t\t\tthis.queue( type || \"fx\", [] );\n\t\t}\n\n\t\treturn this.each( function() {\n\t\t\tvar dequeue = true,\n\t\t\t\tindex = type != null && type + \"queueHooks\",\n\t\t\t\ttimers = jQuery.timers,\n\t\t\t\tdata = dataPriv.get( this );\n\n\t\t\tif ( index ) {\n\t\t\t\tif ( data[ index ] && data[ index ].stop ) {\n\t\t\t\t\tstopQueue( data[ index ] );\n\t\t\t\t}\n\t\t\t} else {\n\t\t\t\tfor ( index in data ) {\n\t\t\t\t\tif ( data[ index ] && data[ index ].stop && rrun.test( index ) ) {\n\t\t\t\t\t\tstopQueue( data[ index ] );\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t}\n\n\t\t\tfor ( index = timers.length; index--; ) {\n\t\t\t\tif ( timers[ index ].elem === this &&\n\t\t\t\t\t( type == null || timers[ index ].queue === type ) ) {\n\n\t\t\t\t\ttimers[ index ].anim.stop( gotoEnd );\n\t\t\t\t\tdequeue = false;\n\t\t\t\t\ttimers.splice( index, 1 );\n\t\t\t\t}\n\t\t\t}\n\n\t\t\t// Start the next in the queue if the last step wasn't forced.\n\t\t\t// Timers currently will call their complete callbacks, which\n\t\t\t// will dequeue but only if they were gotoEnd.\n\t\t\tif ( dequeue || !gotoEnd ) {\n\t\t\t\tjQuery.dequeue( this, type );\n\t\t\t}\n\t\t} );\n\t},\n\tfinish: function( type ) {\n\t\tif ( type !== false ) {\n\t\t\ttype = type || \"fx\";\n\t\t}\n\t\treturn this.each( function() {\n\t\t\tvar index,\n\t\t\t\tdata = dataPriv.get( this ),\n\t\t\t\tqueue = data[ type + \"queue\" ],\n\t\t\t\thooks = data[ type + \"queueHooks\" ],\n\t\t\t\ttimers = jQuery.timers,\n\t\t\t\tlength = queue ? queue.length : 0;\n\n\t\t\t// Enable finishing flag on private data\n\t\t\tdata.finish = true;\n\n\t\t\t// Empty the queue first\n\t\t\tjQuery.queue( this, type, [] );\n\n\t\t\tif ( hooks && hooks.stop ) {\n\t\t\t\thooks.stop.call( this, true );\n\t\t\t}\n\n\t\t\t// Look for any active animations, and finish them\n\t\t\tfor ( index = timers.length; index--; ) {\n\t\t\t\tif ( timers[ index ].elem === this && timers[ index ].queue === type ) {\n\t\t\t\t\ttimers[ index ].anim.stop( true );\n\t\t\t\t\ttimers.splice( index, 1 );\n\t\t\t\t}\n\t\t\t}\n\n\t\t\t// Look for any animations in the old queue and finish them\n\t\t\tfor ( index = 0; index < length; index++ ) {\n\t\t\t\tif ( queue[ index ] && queue[ index ].finish ) {\n\t\t\t\t\tqueue[ index ].finish.call( this );\n\t\t\t\t}\n\t\t\t}\n\n\t\t\t// Turn off finishing flag\n\t\t\tdelete data.finish;\n\t\t} );\n\t}\n} );\n\njQuery.each( [ \"toggle\", \"show\", \"hide\" ], function( _i, name ) {\n\tvar cssFn = jQuery.fn[ name ];\n\tjQuery.fn[ name ] = function( speed, easing, callback ) {\n\t\treturn speed == null || typeof speed === \"boolean\" ?\n\t\t\tcssFn.apply( this, arguments ) :\n\t\t\tthis.animate( genFx( name, true ), speed, easing, callback );\n\t};\n} );\n\n// Generate shortcuts for custom animations\njQuery.each( {\n\tslideDown: genFx( \"show\" ),\n\tslideUp: genFx( \"hide\" ),\n\tslideToggle: genFx( \"toggle\" ),\n\tfadeIn: { opacity: \"show\" },\n\tfadeOut: { opacity: \"hide\" },\n\tfadeToggle: { opacity: \"toggle\" }\n}, function( name, props ) {\n\tjQuery.fn[ name ] = function( speed, easing, callback ) {\n\t\treturn this.animate( props, speed, easing, callback );\n\t};\n} );\n\njQuery.timers = [];\njQuery.fx.tick = function() {\n\tvar timer,\n\t\ti = 0,\n\t\ttimers = jQuery.timers;\n\n\tfxNow = Date.now();\n\n\tfor ( ; i < timers.length; i++ ) {\n\t\ttimer = timers[ i ];\n\n\t\t// Run the timer and safely remove it when done (allowing for external removal)\n\t\tif ( !timer() && timers[ i ] === timer ) {\n\t\t\ttimers.splice( i--, 1 );\n\t\t}\n\t}\n\n\tif ( !timers.length ) {\n\t\tjQuery.fx.stop();\n\t}\n\tfxNow = undefined;\n};\n\njQuery.fx.timer = function( timer ) {\n\tjQuery.timers.push( timer );\n\tjQuery.fx.start();\n};\n\njQuery.fx.interval = 13;\njQuery.fx.start = function() {\n\tif ( inProgress ) {\n\t\treturn;\n\t}\n\n\tinProgress = true;\n\tschedule();\n};\n\njQuery.fx.stop = function() {\n\tinProgress = null;\n};\n\njQuery.fx.speeds = {\n\tslow: 600,\n\tfast: 200,\n\n\t// Default speed\n\t_default: 400\n};\n\n\n// Based off of the plugin by Clint Helfers, with permission.\n// https://web.archive.org/web/20100324014747/http://blindsignals.com/index.php/2009/07/jquery-delay/\njQuery.fn.delay = function( time, type ) {\n\ttime = jQuery.fx ? jQuery.fx.speeds[ time ] || time : time;\n\ttype = type || \"fx\";\n\n\treturn this.queue( type, function( next, hooks ) {\n\t\tvar timeout = window.setTimeout( next, time );\n\t\thooks.stop = function() {\n\t\t\twindow.clearTimeout( timeout );\n\t\t};\n\t} );\n};\n\n\n( function() {\n\tvar input = document.createElement( \"input\" ),\n\t\tselect = document.createElement( \"select\" ),\n\t\topt = select.appendChild( document.createElement( \"option\" ) );\n\n\tinput.type = \"checkbox\";\n\n\t// Support: Android <=4.3 only\n\t// Default value for a checkbox should be \"on\"\n\tsupport.checkOn = input.value !== \"\";\n\n\t// Support: IE <=11 only\n\t// Must access selectedIndex to make default options select\n\tsupport.optSelected = opt.selected;\n\n\t// Support: IE <=11 only\n\t// An input loses its value after becoming a radio\n\tinput = document.createElement( \"input\" );\n\tinput.value = \"t\";\n\tinput.type = \"radio\";\n\tsupport.radioValue = input.value === \"t\";\n} )();\n\n\nvar boolHook,\n\tattrHandle = jQuery.expr.attrHandle;\n\njQuery.fn.extend( {\n\tattr: function( name, value ) {\n\t\treturn access( this, jQuery.attr, name, value, arguments.length > 1 );\n\t},\n\n\tremoveAttr: function( name ) {\n\t\treturn this.each( function() {\n\t\t\tjQuery.removeAttr( this, name );\n\t\t} );\n\t}\n} );\n\njQuery.extend( {\n\tattr: function( elem, name, value ) {\n\t\tvar ret, hooks,\n\t\t\tnType = elem.nodeType;\n\n\t\t// Don't get/set attributes on text, comment and attribute nodes\n\t\tif ( nType === 3 || nType === 8 || nType === 2 ) {\n\t\t\treturn;\n\t\t}\n\n\t\t// Fallback to prop when attributes are not supported\n\t\tif ( typeof elem.getAttribute === \"undefined\" ) {\n\t\t\treturn jQuery.prop( elem, name, value );\n\t\t}\n\n\t\t// Attribute hooks are determined by the lowercase version\n\t\t// Grab necessary hook if one is defined\n\t\tif ( nType !== 1 || !jQuery.isXMLDoc( elem ) ) {\n\t\t\thooks = jQuery.attrHooks[ name.toLowerCase() ] ||\n\t\t\t\t( jQuery.expr.match.bool.test( name ) ? boolHook : undefined );\n\t\t}\n\n\t\tif ( value !== undefined ) {\n\t\t\tif ( value === null ) {\n\t\t\t\tjQuery.removeAttr( elem, name );\n\t\t\t\treturn;\n\t\t\t}\n\n\t\t\tif ( hooks && \"set\" in hooks &&\n\t\t\t\t( ret = hooks.set( elem, value, name ) ) !== undefined ) {\n\t\t\t\treturn ret;\n\t\t\t}\n\n\t\t\telem.setAttribute( name, value + \"\" );\n\t\t\treturn value;\n\t\t}\n\n\t\tif ( hooks && \"get\" in hooks && ( ret = hooks.get( elem, name ) ) !== null ) {\n\t\t\treturn ret;\n\t\t}\n\n\t\tret = jQuery.find.attr( elem, name );\n\n\t\t// Non-existent attributes return null, we normalize to undefined\n\t\treturn ret == null ? undefined : ret;\n\t},\n\n\tattrHooks: {\n\t\ttype: {\n\t\t\tset: function( elem, value ) {\n\t\t\t\tif ( !support.radioValue && value === \"radio\" &&\n\t\t\t\t\tnodeName( elem, \"input\" ) ) {\n\t\t\t\t\tvar val = elem.value;\n\t\t\t\t\telem.setAttribute( \"type\", value );\n\t\t\t\t\tif ( val ) {\n\t\t\t\t\t\telem.value = val;\n\t\t\t\t\t}\n\t\t\t\t\treturn value;\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\t},\n\n\tremoveAttr: function( elem, value ) {\n\t\tvar name,\n\t\t\ti = 0,\n\n\t\t\t// Attribute names can contain non-HTML whitespace characters\n\t\t\t// https://html.spec.whatwg.org/multipage/syntax.html#attributes-2\n\t\t\tattrNames = value && value.match( rnothtmlwhite );\n\n\t\tif ( attrNames && elem.nodeType === 1 ) {\n\t\t\twhile ( ( name = attrNames[ i++ ] ) ) {\n\t\t\t\telem.removeAttribute( name );\n\t\t\t}\n\t\t}\n\t}\n} );\n\n// Hooks for boolean attributes\nboolHook = {\n\tset: function( elem, value, name ) {\n\t\tif ( value === false ) {\n\n\t\t\t// Remove boolean attributes when set to false\n\t\t\tjQuery.removeAttr( elem, name );\n\t\t} else {\n\t\t\telem.setAttribute( name, name );\n\t\t}\n\t\treturn name;\n\t}\n};\n\njQuery.each( jQuery.expr.match.bool.source.match( /\\w+/g ), function( _i, name ) {\n\tvar getter = attrHandle[ name ] || jQuery.find.attr;\n\n\tattrHandle[ name ] = function( elem, name, isXML ) {\n\t\tvar ret, handle,\n\t\t\tlowercaseName = name.toLowerCase();\n\n\t\tif ( !isXML ) {\n\n\t\t\t// Avoid an infinite loop by temporarily removing this function from the getter\n\t\t\thandle = attrHandle[ lowercaseName ];\n\t\t\tattrHandle[ lowercaseName ] = ret;\n\t\t\tret = getter( elem, name, isXML ) != null ?\n\t\t\t\tlowercaseName :\n\t\t\t\tnull;\n\t\t\tattrHandle[ lowercaseName ] = handle;\n\t\t}\n\t\treturn ret;\n\t};\n} );\n\n\n\n\nvar rfocusable = /^(?:input|select|textarea|button)$/i,\n\trclickable = /^(?:a|area)$/i;\n\njQuery.fn.extend( {\n\tprop: function( name, value ) {\n\t\treturn access( this, jQuery.prop, name, value, arguments.length > 1 );\n\t},\n\n\tremoveProp: function( name ) {\n\t\treturn this.each( function() {\n\t\t\tdelete this[ jQuery.propFix[ name ] || name ];\n\t\t} );\n\t}\n} );\n\njQuery.extend( {\n\tprop: function( elem, name, value ) {\n\t\tvar ret, hooks,\n\t\t\tnType = elem.nodeType;\n\n\t\t// Don't get/set properties on text, comment and attribute nodes\n\t\tif ( nType === 3 || nType === 8 || nType === 2 ) {\n\t\t\treturn;\n\t\t}\n\n\t\tif ( nType !== 1 || !jQuery.isXMLDoc( elem ) ) {\n\n\t\t\t// Fix name and attach hooks\n\t\t\tname = jQuery.propFix[ name ] || name;\n\t\t\thooks = jQuery.propHooks[ name ];\n\t\t}\n\n\t\tif ( value !== undefined ) {\n\t\t\tif ( hooks && \"set\" in hooks &&\n\t\t\t\t( ret = hooks.set( elem, value, name ) ) !== undefined ) {\n\t\t\t\treturn ret;\n\t\t\t}\n\n\t\t\treturn ( elem[ name ] = value );\n\t\t}\n\n\t\tif ( hooks && \"get\" in hooks && ( ret = hooks.get( elem, name ) ) !== null ) {\n\t\t\treturn ret;\n\t\t}\n\n\t\treturn elem[ name ];\n\t},\n\n\tpropHooks: {\n\t\ttabIndex: {\n\t\t\tget: function( elem ) {\n\n\t\t\t\t// Support: IE <=9 - 11 only\n\t\t\t\t// elem.tabIndex doesn't always return the\n\t\t\t\t// correct value when it hasn't been explicitly set\n\t\t\t\t// https://web.archive.org/web/20141116233347/http://fluidproject.org/blog/2008/01/09/getting-setting-and-removing-tabindex-values-with-javascript/\n\t\t\t\t// Use proper attribute retrieval(#12072)\n\t\t\t\tvar tabindex = jQuery.find.attr( elem, \"tabindex\" );\n\n\t\t\t\tif ( tabindex ) {\n\t\t\t\t\treturn parseInt( tabindex, 10 );\n\t\t\t\t}\n\n\t\t\t\tif (\n\t\t\t\t\trfocusable.test( elem.nodeName ) ||\n\t\t\t\t\trclickable.test( elem.nodeName ) &&\n\t\t\t\t\telem.href\n\t\t\t\t) {\n\t\t\t\t\treturn 0;\n\t\t\t\t}\n\n\t\t\t\treturn -1;\n\t\t\t}\n\t\t}\n\t},\n\n\tpropFix: {\n\t\t\"for\": \"htmlFor\",\n\t\t\"class\": \"className\"\n\t}\n} );\n\n// Support: IE <=11 only\n// Accessing the selectedIndex property\n// forces the browser to respect setting selected\n// on the option\n// The getter ensures a default option is selected\n// when in an optgroup\n// eslint rule \"no-unused-expressions\" is disabled for this code\n// since it considers such accessions noop\nif ( !support.optSelected ) {\n\tjQuery.propHooks.selected = {\n\t\tget: function( elem ) {\n\n\t\t\t/* eslint no-unused-expressions: \"off\" */\n\n\t\t\tvar parent = elem.parentNode;\n\t\t\tif ( parent && parent.parentNode ) {\n\t\t\t\tparent.parentNode.selectedIndex;\n\t\t\t}\n\t\t\treturn null;\n\t\t},\n\t\tset: function( elem ) {\n\n\t\t\t/* eslint no-unused-expressions: \"off\" */\n\n\t\t\tvar parent = elem.parentNode;\n\t\t\tif ( parent ) {\n\t\t\t\tparent.selectedIndex;\n\n\t\t\t\tif ( parent.parentNode ) {\n\t\t\t\t\tparent.parentNode.selectedIndex;\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\t};\n}\n\njQuery.each( [\n\t\"tabIndex\",\n\t\"readOnly\",\n\t\"maxLength\",\n\t\"cellSpacing\",\n\t\"cellPadding\",\n\t\"rowSpan\",\n\t\"colSpan\",\n\t\"useMap\",\n\t\"frameBorder\",\n\t\"contentEditable\"\n], function() {\n\tjQuery.propFix[ this.toLowerCase() ] = this;\n} );\n\n\n\n\n\t// Strip and collapse whitespace according to HTML spec\n\t// https://infra.spec.whatwg.org/#strip-and-collapse-ascii-whitespace\n\tfunction stripAndCollapse( value ) {\n\t\tvar tokens = value.match( rnothtmlwhite ) || [];\n\t\treturn tokens.join( \" \" );\n\t}\n\n\nfunction getClass( elem ) {\n\treturn elem.getAttribute && elem.getAttribute( \"class\" ) || \"\";\n}\n\nfunction classesToArray( value ) {\n\tif ( Array.isArray( value ) ) {\n\t\treturn value;\n\t}\n\tif ( typeof value === \"string\" ) {\n\t\treturn value.match( rnothtmlwhite ) || [];\n\t}\n\treturn [];\n}\n\njQuery.fn.extend( {\n\taddClass: function( value ) {\n\t\tvar classes, elem, cur, curValue, clazz, j, finalValue,\n\t\t\ti = 0;\n\n\t\tif ( isFunction( value ) ) {\n\t\t\treturn this.each( function( j ) {\n\t\t\t\tjQuery( this ).addClass( value.call( this, j, getClass( this ) ) );\n\t\t\t} );\n\t\t}\n\n\t\tclasses = classesToArray( value );\n\n\t\tif ( classes.length ) {\n\t\t\twhile ( ( elem = this[ i++ ] ) ) {\n\t\t\t\tcurValue = getClass( elem );\n\t\t\t\tcur = elem.nodeType === 1 && ( \" \" + stripAndCollapse( curValue ) + \" \" );\n\n\t\t\t\tif ( cur ) {\n\t\t\t\t\tj = 0;\n\t\t\t\t\twhile ( ( clazz = classes[ j++ ] ) ) {\n\t\t\t\t\t\tif ( cur.indexOf( \" \" + clazz + \" \" ) < 0 ) {\n\t\t\t\t\t\t\tcur += clazz + \" \";\n\t\t\t\t\t\t}\n\t\t\t\t\t}\n\n\t\t\t\t\t// Only assign if different to avoid unneeded rendering.\n\t\t\t\t\tfinalValue = stripAndCollapse( cur );\n\t\t\t\t\tif ( curValue !== finalValue ) {\n\t\t\t\t\t\telem.setAttribute( \"class\", finalValue );\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\n\t\treturn this;\n\t},\n\n\tremoveClass: function( value ) {\n\t\tvar classes, elem, cur, curValue, clazz, j, finalValue,\n\t\t\ti = 0;\n\n\t\tif ( isFunction( value ) ) {\n\t\t\treturn this.each( function( j ) {\n\t\t\t\tjQuery( this ).removeClass( value.call( this, j, getClass( this ) ) );\n\t\t\t} );\n\t\t}\n\n\t\tif ( !arguments.length ) {\n\t\t\treturn this.attr( \"class\", \"\" );\n\t\t}\n\n\t\tclasses = classesToArray( value );\n\n\t\tif ( classes.length ) {\n\t\t\twhile ( ( elem = this[ i++ ] ) ) {\n\t\t\t\tcurValue = getClass( elem );\n\n\t\t\t\t// This expression is here for better compressibility (see addClass)\n\t\t\t\tcur = elem.nodeType === 1 && ( \" \" + stripAndCollapse( curValue ) + \" \" );\n\n\t\t\t\tif ( cur ) {\n\t\t\t\t\tj = 0;\n\t\t\t\t\twhile ( ( clazz = classes[ j++ ] ) ) {\n\n\t\t\t\t\t\t// Remove *all* instances\n\t\t\t\t\t\twhile ( cur.indexOf( \" \" + clazz + \" \" ) > -1 ) {\n\t\t\t\t\t\t\tcur = cur.replace( \" \" + clazz + \" \", \" \" );\n\t\t\t\t\t\t}\n\t\t\t\t\t}\n\n\t\t\t\t\t// Only assign if different to avoid unneeded rendering.\n\t\t\t\t\tfinalValue = stripAndCollapse( cur );\n\t\t\t\t\tif ( curValue !== finalValue ) {\n\t\t\t\t\t\telem.setAttribute( \"class\", finalValue );\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\n\t\treturn this;\n\t},\n\n\ttoggleClass: function( value, stateVal ) {\n\t\tvar type = typeof value,\n\t\t\tisValidValue = type === \"string\" || Array.isArray( value );\n\n\t\tif ( typeof stateVal === \"boolean\" && isValidValue ) {\n\t\t\treturn stateVal ? this.addClass( value ) : this.removeClass( value );\n\t\t}\n\n\t\tif ( isFunction( value ) ) {\n\t\t\treturn this.each( function( i ) {\n\t\t\t\tjQuery( this ).toggleClass(\n\t\t\t\t\tvalue.call( this, i, getClass( this ), stateVal ),\n\t\t\t\t\tstateVal\n\t\t\t\t);\n\t\t\t} );\n\t\t}\n\n\t\treturn this.each( function() {\n\t\t\tvar className, i, self, classNames;\n\n\t\t\tif ( isValidValue ) {\n\n\t\t\t\t// Toggle individual class names\n\t\t\t\ti = 0;\n\t\t\t\tself = jQuery( this );\n\t\t\t\tclassNames = classesToArray( value );\n\n\t\t\t\twhile ( ( className = classNames[ i++ ] ) ) {\n\n\t\t\t\t\t// Check each className given, space separated list\n\t\t\t\t\tif ( self.hasClass( className ) ) {\n\t\t\t\t\t\tself.removeClass( className );\n\t\t\t\t\t} else {\n\t\t\t\t\t\tself.addClass( className );\n\t\t\t\t\t}\n\t\t\t\t}\n\n\t\t\t// Toggle whole class name\n\t\t\t} else if ( value === undefined || type === \"boolean\" ) {\n\t\t\t\tclassName = getClass( this );\n\t\t\t\tif ( className ) {\n\n\t\t\t\t\t// Store className if set\n\t\t\t\t\tdataPriv.set( this, \"__className__\", className );\n\t\t\t\t}\n\n\t\t\t\t// If the element has a class name or if we're passed `false`,\n\t\t\t\t// then remove the whole classname (if there was one, the above saved it).\n\t\t\t\t// Otherwise bring back whatever was previously saved (if anything),\n\t\t\t\t// falling back to the empty string if nothing was stored.\n\t\t\t\tif ( this.setAttribute ) {\n\t\t\t\t\tthis.setAttribute( \"class\",\n\t\t\t\t\t\tclassName || value === false ?\n\t\t\t\t\t\t\t\"\" :\n\t\t\t\t\t\t\tdataPriv.get( this, \"__className__\" ) || \"\"\n\t\t\t\t\t);\n\t\t\t\t}\n\t\t\t}\n\t\t} );\n\t},\n\n\thasClass: function( selector ) {\n\t\tvar className, elem,\n\t\t\ti = 0;\n\n\t\tclassName = \" \" + selector + \" \";\n\t\twhile ( ( elem = this[ i++ ] ) ) {\n\t\t\tif ( elem.nodeType === 1 &&\n\t\t\t\t( \" \" + stripAndCollapse( getClass( elem ) ) + \" \" ).indexOf( className ) > -1 ) {\n\t\t\t\treturn true;\n\t\t\t}\n\t\t}\n\n\t\treturn false;\n\t}\n} );\n\n\n\n\nvar rreturn = /\\r/g;\n\njQuery.fn.extend( {\n\tval: function( value ) {\n\t\tvar hooks, ret, valueIsFunction,\n\t\t\telem = this[ 0 ];\n\n\t\tif ( !arguments.length ) {\n\t\t\tif ( elem ) {\n\t\t\t\thooks = jQuery.valHooks[ elem.type ] ||\n\t\t\t\t\tjQuery.valHooks[ elem.nodeName.toLowerCase() ];\n\n\t\t\t\tif ( hooks &&\n\t\t\t\t\t\"get\" in hooks &&\n\t\t\t\t\t( ret = hooks.get( elem, \"value\" ) ) !== undefined\n\t\t\t\t) {\n\t\t\t\t\treturn ret;\n\t\t\t\t}\n\n\t\t\t\tret = elem.value;\n\n\t\t\t\t// Handle most common string cases\n\t\t\t\tif ( typeof ret === \"string\" ) {\n\t\t\t\t\treturn ret.replace( rreturn, \"\" );\n\t\t\t\t}\n\n\t\t\t\t// Handle cases where value is null/undef or number\n\t\t\t\treturn ret == null ? \"\" : ret;\n\t\t\t}\n\n\t\t\treturn;\n\t\t}\n\n\t\tvalueIsFunction = isFunction( value );\n\n\t\treturn this.each( function( i ) {\n\t\t\tvar val;\n\n\t\t\tif ( this.nodeType !== 1 ) {\n\t\t\t\treturn;\n\t\t\t}\n\n\t\t\tif ( valueIsFunction ) {\n\t\t\t\tval = value.call( this, i, jQuery( this ).val() );\n\t\t\t} else {\n\t\t\t\tval = value;\n\t\t\t}\n\n\t\t\t// Treat null/undefined as \"\"; convert numbers to string\n\t\t\tif ( val == null ) {\n\t\t\t\tval = \"\";\n\n\t\t\t} else if ( typeof val === \"number\" ) {\n\t\t\t\tval += \"\";\n\n\t\t\t} else if ( Array.isArray( val ) ) {\n\t\t\t\tval = jQuery.map( val, function( value ) {\n\t\t\t\t\treturn value == null ? \"\" : value + \"\";\n\t\t\t\t} );\n\t\t\t}\n\n\t\t\thooks = jQuery.valHooks[ this.type ] || jQuery.valHooks[ this.nodeName.toLowerCase() ];\n\n\t\t\t// If set returns undefined, fall back to normal setting\n\t\t\tif ( !hooks || !( \"set\" in hooks ) || hooks.set( this, val, \"value\" ) === undefined ) {\n\t\t\t\tthis.value = val;\n\t\t\t}\n\t\t} );\n\t}\n} );\n\njQuery.extend( {\n\tvalHooks: {\n\t\toption: {\n\t\t\tget: function( elem ) {\n\n\t\t\t\tvar val = jQuery.find.attr( elem, \"value\" );\n\t\t\t\treturn val != null ?\n\t\t\t\t\tval :\n\n\t\t\t\t\t// Support: IE <=10 - 11 only\n\t\t\t\t\t// option.text throws exceptions (#14686, #14858)\n\t\t\t\t\t// Strip and collapse whitespace\n\t\t\t\t\t// https://html.spec.whatwg.org/#strip-and-collapse-whitespace\n\t\t\t\t\tstripAndCollapse( jQuery.text( elem ) );\n\t\t\t}\n\t\t},\n\t\tselect: {\n\t\t\tget: function( elem ) {\n\t\t\t\tvar value, option, i,\n\t\t\t\t\toptions = elem.options,\n\t\t\t\t\tindex = elem.selectedIndex,\n\t\t\t\t\tone = elem.type === \"select-one\",\n\t\t\t\t\tvalues = one ? null : [],\n\t\t\t\t\tmax = one ? index + 1 : options.length;\n\n\t\t\t\tif ( index < 0 ) {\n\t\t\t\t\ti = max;\n\n\t\t\t\t} else {\n\t\t\t\t\ti = one ? index : 0;\n\t\t\t\t}\n\n\t\t\t\t// Loop through all the selected options\n\t\t\t\tfor ( ; i < max; i++ ) {\n\t\t\t\t\toption = options[ i ];\n\n\t\t\t\t\t// Support: IE <=9 only\n\t\t\t\t\t// IE8-9 doesn't update selected after form reset (#2551)\n\t\t\t\t\tif ( ( option.selected || i === index ) &&\n\n\t\t\t\t\t\t\t// Don't return options that are disabled or in a disabled optgroup\n\t\t\t\t\t\t\t!option.disabled &&\n\t\t\t\t\t\t\t( !option.parentNode.disabled ||\n\t\t\t\t\t\t\t\t!nodeName( option.parentNode, \"optgroup\" ) ) ) {\n\n\t\t\t\t\t\t// Get the specific value for the option\n\t\t\t\t\t\tvalue = jQuery( option ).val();\n\n\t\t\t\t\t\t// We don't need an array for one selects\n\t\t\t\t\t\tif ( one ) {\n\t\t\t\t\t\t\treturn value;\n\t\t\t\t\t\t}\n\n\t\t\t\t\t\t// Multi-Selects return an array\n\t\t\t\t\t\tvalues.push( value );\n\t\t\t\t\t}\n\t\t\t\t}\n\n\t\t\t\treturn values;\n\t\t\t},\n\n\t\t\tset: function( elem, value ) {\n\t\t\t\tvar optionSet, option,\n\t\t\t\t\toptions = elem.options,\n\t\t\t\t\tvalues = jQuery.makeArray( value ),\n\t\t\t\t\ti = options.length;\n\n\t\t\t\twhile ( i-- ) {\n\t\t\t\t\toption = options[ i ];\n\n\t\t\t\t\t/* eslint-disable no-cond-assign */\n\n\t\t\t\t\tif ( option.selected =\n\t\t\t\t\t\tjQuery.inArray( jQuery.valHooks.option.get( option ), values ) > -1\n\t\t\t\t\t) {\n\t\t\t\t\t\toptionSet = true;\n\t\t\t\t\t}\n\n\t\t\t\t\t/* eslint-enable no-cond-assign */\n\t\t\t\t}\n\n\t\t\t\t// Force browsers to behave consistently when non-matching value is set\n\t\t\t\tif ( !optionSet ) {\n\t\t\t\t\telem.selectedIndex = -1;\n\t\t\t\t}\n\t\t\t\treturn values;\n\t\t\t}\n\t\t}\n\t}\n} );\n\n// Radios and checkboxes getter/setter\njQuery.each( [ \"radio\", \"checkbox\" ], function() {\n\tjQuery.valHooks[ this ] = {\n\t\tset: function( elem, value ) {\n\t\t\tif ( Array.isArray( value ) ) {\n\t\t\t\treturn ( elem.checked = jQuery.inArray( jQuery( elem ).val(), value ) > -1 );\n\t\t\t}\n\t\t}\n\t};\n\tif ( !support.checkOn ) {\n\t\tjQuery.valHooks[ this ].get = function( elem ) {\n\t\t\treturn elem.getAttribute( \"value\" ) === null ? \"on\" : elem.value;\n\t\t};\n\t}\n} );\n\n\n\n\n// Return jQuery for attributes-only inclusion\n\n\nsupport.focusin = \"onfocusin\" in window;\n\n\nvar rfocusMorph = /^(?:focusinfocus|focusoutblur)$/,\n\tstopPropagationCallback = function( e ) {\n\t\te.stopPropagation();\n\t};\n\njQuery.extend( jQuery.event, {\n\n\ttrigger: function( event, data, elem, onlyHandlers ) {\n\n\t\tvar i, cur, tmp, bubbleType, ontype, handle, special, lastElement,\n\t\t\teventPath = [ elem || document ],\n\t\t\ttype = hasOwn.call( event, \"type\" ) ? event.type : event,\n\t\t\tnamespaces = hasOwn.call( event, \"namespace\" ) ? event.namespace.split( \".\" ) : [];\n\n\t\tcur = lastElement = tmp = elem = elem || document;\n\n\t\t// Don't do events on text and comment nodes\n\t\tif ( elem.nodeType === 3 || elem.nodeType === 8 ) {\n\t\t\treturn;\n\t\t}\n\n\t\t// focus/blur morphs to focusin/out; ensure we're not firing them right now\n\t\tif ( rfocusMorph.test( type + jQuery.event.triggered ) ) {\n\t\t\treturn;\n\t\t}\n\n\t\tif ( type.indexOf( \".\" ) > -1 ) {\n\n\t\t\t// Namespaced trigger; create a regexp to match event type in handle()\n\t\t\tnamespaces = type.split( \".\" );\n\t\t\ttype = namespaces.shift();\n\t\t\tnamespaces.sort();\n\t\t}\n\t\tontype = type.indexOf( \":\" ) < 0 && \"on\" + type;\n\n\t\t// Caller can pass in a jQuery.Event object, Object, or just an event type string\n\t\tevent = event[ jQuery.expando ] ?\n\t\t\tevent :\n\t\t\tnew jQuery.Event( type, typeof event === \"object\" && event );\n\n\t\t// Trigger bitmask: & 1 for native handlers; & 2 for jQuery (always true)\n\t\tevent.isTrigger = onlyHandlers ? 2 : 3;\n\t\tevent.namespace = namespaces.join( \".\" );\n\t\tevent.rnamespace = event.namespace ?\n\t\t\tnew RegExp( \"(^|\\\\.)\" + namespaces.join( \"\\\\.(?:.*\\\\.|)\" ) + \"(\\\\.|$)\" ) :\n\t\t\tnull;\n\n\t\t// Clean up the event in case it is being reused\n\t\tevent.result = undefined;\n\t\tif ( !event.target ) {\n\t\t\tevent.target = elem;\n\t\t}\n\n\t\t// Clone any incoming data and prepend the event, creating the handler arg list\n\t\tdata = data == null ?\n\t\t\t[ event ] :\n\t\t\tjQuery.makeArray( data, [ event ] );\n\n\t\t// Allow special events to draw outside the lines\n\t\tspecial = jQuery.event.special[ type ] || {};\n\t\tif ( !onlyHandlers && special.trigger && special.trigger.apply( elem, data ) === false ) {\n\t\t\treturn;\n\t\t}\n\n\t\t// Determine event propagation path in advance, per W3C events spec (#9951)\n\t\t// Bubble up to document, then to window; watch for a global ownerDocument var (#9724)\n\t\tif ( !onlyHandlers && !special.noBubble && !isWindow( elem ) ) {\n\n\t\t\tbubbleType = special.delegateType || type;\n\t\t\tif ( !rfocusMorph.test( bubbleType + type ) ) {\n\t\t\t\tcur = cur.parentNode;\n\t\t\t}\n\t\t\tfor ( ; cur; cur = cur.parentNode ) {\n\t\t\t\teventPath.push( cur );\n\t\t\t\ttmp = cur;\n\t\t\t}\n\n\t\t\t// Only add window if we got to document (e.g., not plain obj or detached DOM)\n\t\t\tif ( tmp === ( elem.ownerDocument || document ) ) {\n\t\t\t\teventPath.push( tmp.defaultView || tmp.parentWindow || window );\n\t\t\t}\n\t\t}\n\n\t\t// Fire handlers on the event path\n\t\ti = 0;\n\t\twhile ( ( cur = eventPath[ i++ ] ) && !event.isPropagationStopped() ) {\n\t\t\tlastElement = cur;\n\t\t\tevent.type = i > 1 ?\n\t\t\t\tbubbleType :\n\t\t\t\tspecial.bindType || type;\n\n\t\t\t// jQuery handler\n\t\t\thandle = ( dataPriv.get( cur, \"events\" ) || Object.create( null ) )[ event.type ] &&\n\t\t\t\tdataPriv.get( cur, \"handle\" );\n\t\t\tif ( handle ) {\n\t\t\t\thandle.apply( cur, data );\n\t\t\t}\n\n\t\t\t// Native handler\n\t\t\thandle = ontype && cur[ ontype ];\n\t\t\tif ( handle && handle.apply && acceptData( cur ) ) {\n\t\t\t\tevent.result = handle.apply( cur, data );\n\t\t\t\tif ( event.result === false ) {\n\t\t\t\t\tevent.preventDefault();\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\t\tevent.type = type;\n\n\t\t// If nobody prevented the default action, do it now\n\t\tif ( !onlyHandlers && !event.isDefaultPrevented() ) {\n\n\t\t\tif ( ( !special._default ||\n\t\t\t\tspecial._default.apply( eventPath.pop(), data ) === false ) &&\n\t\t\t\tacceptData( elem ) ) {\n\n\t\t\t\t// Call a native DOM method on the target with the same name as the event.\n\t\t\t\t// Don't do default actions on window, that's where global variables be (#6170)\n\t\t\t\tif ( ontype && isFunction( elem[ type ] ) && !isWindow( elem ) ) {\n\n\t\t\t\t\t// Don't re-trigger an onFOO event when we call its FOO() method\n\t\t\t\t\ttmp = elem[ ontype ];\n\n\t\t\t\t\tif ( tmp ) {\n\t\t\t\t\t\telem[ ontype ] = null;\n\t\t\t\t\t}\n\n\t\t\t\t\t// Prevent re-triggering of the same event, since we already bubbled it above\n\t\t\t\t\tjQuery.event.triggered = type;\n\n\t\t\t\t\tif ( event.isPropagationStopped() ) {\n\t\t\t\t\t\tlastElement.addEventListener( type, stopPropagationCallback );\n\t\t\t\t\t}\n\n\t\t\t\t\telem[ type ]();\n\n\t\t\t\t\tif ( event.isPropagationStopped() ) {\n\t\t\t\t\t\tlastElement.removeEventListener( type, stopPropagationCallback );\n\t\t\t\t\t}\n\n\t\t\t\t\tjQuery.event.triggered = undefined;\n\n\t\t\t\t\tif ( tmp ) {\n\t\t\t\t\t\telem[ ontype ] = tmp;\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\n\t\treturn event.result;\n\t},\n\n\t// Piggyback on a donor event to simulate a different one\n\t// Used only for `focus(in | out)` events\n\tsimulate: function( type, elem, event ) {\n\t\tvar e = jQuery.extend(\n\t\t\tnew jQuery.Event(),\n\t\t\tevent,\n\t\t\t{\n\t\t\t\ttype: type,\n\t\t\t\tisSimulated: true\n\t\t\t}\n\t\t);\n\n\t\tjQuery.event.trigger( e, null, elem );\n\t}\n\n} );\n\njQuery.fn.extend( {\n\n\ttrigger: function( type, data ) {\n\t\treturn this.each( function() {\n\t\t\tjQuery.event.trigger( type, data, this );\n\t\t} );\n\t},\n\ttriggerHandler: function( type, data ) {\n\t\tvar elem = this[ 0 ];\n\t\tif ( elem ) {\n\t\t\treturn jQuery.event.trigger( type, data, elem, true );\n\t\t}\n\t}\n} );\n\n\n// Support: Firefox <=44\n// Firefox doesn't have focus(in | out) events\n// Related ticket - https://bugzilla.mozilla.org/show_bug.cgi?id=687787\n//\n// Support: Chrome <=48 - 49, Safari <=9.0 - 9.1\n// focus(in | out) events fire after focus & blur events,\n// which is spec violation - http://www.w3.org/TR/DOM-Level-3-Events/#events-focusevent-event-order\n// Related ticket - https://bugs.chromium.org/p/chromium/issues/detail?id=449857\nif ( !support.focusin ) {\n\tjQuery.each( { focus: \"focusin\", blur: \"focusout\" }, function( orig, fix ) {\n\n\t\t// Attach a single capturing handler on the document while someone wants focusin/focusout\n\t\tvar handler = function( event ) {\n\t\t\tjQuery.event.simulate( fix, event.target, jQuery.event.fix( event ) );\n\t\t};\n\n\t\tjQuery.event.special[ fix ] = {\n\t\t\tsetup: function() {\n\n\t\t\t\t// Handle: regular nodes (via `this.ownerDocument`), window\n\t\t\t\t// (via `this.document`) & document (via `this`).\n\t\t\t\tvar doc = this.ownerDocument || this.document || this,\n\t\t\t\t\tattaches = dataPriv.access( doc, fix );\n\n\t\t\t\tif ( !attaches ) {\n\t\t\t\t\tdoc.addEventListener( orig, handler, true );\n\t\t\t\t}\n\t\t\t\tdataPriv.access( doc, fix, ( attaches || 0 ) + 1 );\n\t\t\t},\n\t\t\tteardown: function() {\n\t\t\t\tvar doc = this.ownerDocument || this.document || this,\n\t\t\t\t\tattaches = dataPriv.access( doc, fix ) - 1;\n\n\t\t\t\tif ( !attaches ) {\n\t\t\t\t\tdoc.removeEventListener( orig, handler, true );\n\t\t\t\t\tdataPriv.remove( doc, fix );\n\n\t\t\t\t} else {\n\t\t\t\t\tdataPriv.access( doc, fix, attaches );\n\t\t\t\t}\n\t\t\t}\n\t\t};\n\t} );\n}\nvar location = window.location;\n\nvar nonce = { guid: Date.now() };\n\nvar rquery = ( /\\?/ );\n\n\n\n// Cross-browser xml parsing\njQuery.parseXML = function( data ) {\n\tvar xml, parserErrorElem;\n\tif ( !data || typeof data !== \"string\" ) {\n\t\treturn null;\n\t}\n\n\t// Support: IE 9 - 11 only\n\t// IE throws on parseFromString with invalid input.\n\ttry {\n\t\txml = ( new window.DOMParser() ).parseFromString( data, \"text/xml\" );\n\t} catch ( e ) {}\n\n\tparserErrorElem = xml && xml.getElementsByTagName( \"parsererror\" )[ 0 ];\n\tif ( !xml || parserErrorElem ) {\n\t\tjQuery.error( \"Invalid XML: \" + (\n\t\t\tparserErrorElem ?\n\t\t\t\tjQuery.map( parserErrorElem.childNodes, function( el ) {\n\t\t\t\t\treturn el.textContent;\n\t\t\t\t} ).join( \"\\n\" ) :\n\t\t\t\tdata\n\t\t) );\n\t}\n\treturn xml;\n};\n\n\nvar\n\trbracket = /\\[\\]$/,\n\trCRLF = /\\r?\\n/g,\n\trsubmitterTypes = /^(?:submit|button|image|reset|file)$/i,\n\trsubmittable = /^(?:input|select|textarea|keygen)/i;\n\nfunction buildParams( prefix, obj, traditional, add ) {\n\tvar name;\n\n\tif ( Array.isArray( obj ) ) {\n\n\t\t// Serialize array item.\n\t\tjQuery.each( obj, function( i, v ) {\n\t\t\tif ( traditional || rbracket.test( prefix ) ) {\n\n\t\t\t\t// Treat each array item as a scalar.\n\t\t\t\tadd( prefix, v );\n\n\t\t\t} else {\n\n\t\t\t\t// Item is non-scalar (array or object), encode its numeric index.\n\t\t\t\tbuildParams(\n\t\t\t\t\tprefix + \"[\" + ( typeof v === \"object\" && v != null ? i : \"\" ) + \"]\",\n\t\t\t\t\tv,\n\t\t\t\t\ttraditional,\n\t\t\t\t\tadd\n\t\t\t\t);\n\t\t\t}\n\t\t} );\n\n\t} else if ( !traditional && toType( obj ) === \"object\" ) {\n\n\t\t// Serialize object item.\n\t\tfor ( name in obj ) {\n\t\t\tbuildParams( prefix + \"[\" + name + \"]\", obj[ name ], traditional, add );\n\t\t}\n\n\t} else {\n\n\t\t// Serialize scalar item.\n\t\tadd( prefix, obj );\n\t}\n}\n\n// Serialize an array of form elements or a set of\n// key/values into a query string\njQuery.param = function( a, traditional ) {\n\tvar prefix,\n\t\ts = [],\n\t\tadd = function( key, valueOrFunction ) {\n\n\t\t\t// If value is a function, invoke it and use its return value\n\t\t\tvar value = isFunction( valueOrFunction ) ?\n\t\t\t\tvalueOrFunction() :\n\t\t\t\tvalueOrFunction;\n\n\t\t\ts[ s.length ] = encodeURIComponent( key ) + \"=\" +\n\t\t\t\tencodeURIComponent( value == null ? \"\" : value );\n\t\t};\n\n\tif ( a == null ) {\n\t\treturn \"\";\n\t}\n\n\t// If an array was passed in, assume that it is an array of form elements.\n\tif ( Array.isArray( a ) || ( a.jquery && !jQuery.isPlainObject( a ) ) ) {\n\n\t\t// Serialize the form elements\n\t\tjQuery.each( a, function() {\n\t\t\tadd( this.name, this.value );\n\t\t} );\n\n\t} else {\n\n\t\t// If traditional, encode the \"old\" way (the way 1.3.2 or older\n\t\t// did it), otherwise encode params recursively.\n\t\tfor ( prefix in a ) {\n\t\t\tbuildParams( prefix, a[ prefix ], traditional, add );\n\t\t}\n\t}\n\n\t// Return the resulting serialization\n\treturn s.join( \"&\" );\n};\n\njQuery.fn.extend( {\n\tserialize: function() {\n\t\treturn jQuery.param( this.serializeArray() );\n\t},\n\tserializeArray: function() {\n\t\treturn this.map( function() {\n\n\t\t\t// Can add propHook for \"elements\" to filter or add form elements\n\t\t\tvar elements = jQuery.prop( this, \"elements\" );\n\t\t\treturn elements ? jQuery.makeArray( elements ) : this;\n\t\t} ).filter( function() {\n\t\t\tvar type = this.type;\n\n\t\t\t// Use .is( \":disabled\" ) so that fieldset[disabled] works\n\t\t\treturn this.name && !jQuery( this ).is( \":disabled\" ) &&\n\t\t\t\trsubmittable.test( this.nodeName ) && !rsubmitterTypes.test( type ) &&\n\t\t\t\t( this.checked || !rcheckableType.test( type ) );\n\t\t} ).map( function( _i, elem ) {\n\t\t\tvar val = jQuery( this ).val();\n\n\t\t\tif ( val == null ) {\n\t\t\t\treturn null;\n\t\t\t}\n\n\t\t\tif ( Array.isArray( val ) ) {\n\t\t\t\treturn jQuery.map( val, function( val ) {\n\t\t\t\t\treturn { name: elem.name, value: val.replace( rCRLF, \"\\r\\n\" ) };\n\t\t\t\t} );\n\t\t\t}\n\n\t\t\treturn { name: elem.name, value: val.replace( rCRLF, \"\\r\\n\" ) };\n\t\t} ).get();\n\t}\n} );\n\n\nvar\n\tr20 = /%20/g,\n\trhash = /#.*$/,\n\trantiCache = /([?&])_=[^&]*/,\n\trheaders = /^(.*?):[ \\t]*([^\\r\\n]*)$/mg,\n\n\t// #7653, #8125, #8152: local protocol detection\n\trlocalProtocol = /^(?:about|app|app-storage|.+-extension|file|res|widget):$/,\n\trnoContent = /^(?:GET|HEAD)$/,\n\trprotocol = /^\\/\\//,\n\n\t/* Prefilters\n\t * 1) They are useful to introduce custom dataTypes (see ajax/jsonp.js for an example)\n\t * 2) These are called:\n\t * - BEFORE asking for a transport\n\t * - AFTER param serialization (s.data is a string if s.processData is true)\n\t * 3) key is the dataType\n\t * 4) the catchall symbol \"*\" can be used\n\t * 5) execution will start with transport dataType and THEN continue down to \"*\" if needed\n\t */\n\tprefilters = {},\n\n\t/* Transports bindings\n\t * 1) key is the dataType\n\t * 2) the catchall symbol \"*\" can be used\n\t * 3) selection will start with transport dataType and THEN go to \"*\" if needed\n\t */\n\ttransports = {},\n\n\t// Avoid comment-prolog char sequence (#10098); must appease lint and evade compression\n\tallTypes = \"*/\".concat( \"*\" ),\n\n\t// Anchor tag for parsing the document origin\n\toriginAnchor = document.createElement( \"a\" );\n\noriginAnchor.href = location.href;\n\n// Base \"constructor\" for jQuery.ajaxPrefilter and jQuery.ajaxTransport\nfunction addToPrefiltersOrTransports( structure ) {\n\n\t// dataTypeExpression is optional and defaults to \"*\"\n\treturn function( dataTypeExpression, func ) {\n\n\t\tif ( typeof dataTypeExpression !== \"string\" ) {\n\t\t\tfunc = dataTypeExpression;\n\t\t\tdataTypeExpression = \"*\";\n\t\t}\n\n\t\tvar dataType,\n\t\t\ti = 0,\n\t\t\tdataTypes = dataTypeExpression.toLowerCase().match( rnothtmlwhite ) || [];\n\n\t\tif ( isFunction( func ) ) {\n\n\t\t\t// For each dataType in the dataTypeExpression\n\t\t\twhile ( ( dataType = dataTypes[ i++ ] ) ) {\n\n\t\t\t\t// Prepend if requested\n\t\t\t\tif ( dataType[ 0 ] === \"+\" ) {\n\t\t\t\t\tdataType = dataType.slice( 1 ) || \"*\";\n\t\t\t\t\t( structure[ dataType ] = structure[ dataType ] || [] ).unshift( func );\n\n\t\t\t\t// Otherwise append\n\t\t\t\t} else {\n\t\t\t\t\t( structure[ dataType ] = structure[ dataType ] || [] ).push( func );\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\t};\n}\n\n// Base inspection function for prefilters and transports\nfunction inspectPrefiltersOrTransports( structure, options, originalOptions, jqXHR ) {\n\n\tvar inspected = {},\n\t\tseekingTransport = ( structure === transports );\n\n\tfunction inspect( dataType ) {\n\t\tvar selected;\n\t\tinspected[ dataType ] = true;\n\t\tjQuery.each( structure[ dataType ] || [], function( _, prefilterOrFactory ) {\n\t\t\tvar dataTypeOrTransport = prefilterOrFactory( options, originalOptions, jqXHR );\n\t\t\tif ( typeof dataTypeOrTransport === \"string\" &&\n\t\t\t\t!seekingTransport && !inspected[ dataTypeOrTransport ] ) {\n\n\t\t\t\toptions.dataTypes.unshift( dataTypeOrTransport );\n\t\t\t\tinspect( dataTypeOrTransport );\n\t\t\t\treturn false;\n\t\t\t} else if ( seekingTransport ) {\n\t\t\t\treturn !( selected = dataTypeOrTransport );\n\t\t\t}\n\t\t} );\n\t\treturn selected;\n\t}\n\n\treturn inspect( options.dataTypes[ 0 ] ) || !inspected[ \"*\" ] && inspect( \"*\" );\n}\n\n// A special extend for ajax options\n// that takes \"flat\" options (not to be deep extended)\n// Fixes #9887\nfunction ajaxExtend( target, src ) {\n\tvar key, deep,\n\t\tflatOptions = jQuery.ajaxSettings.flatOptions || {};\n\n\tfor ( key in src ) {\n\t\tif ( src[ key ] !== undefined ) {\n\t\t\t( flatOptions[ key ] ? target : ( deep || ( deep = {} ) ) )[ key ] = src[ key ];\n\t\t}\n\t}\n\tif ( deep ) {\n\t\tjQuery.extend( true, target, deep );\n\t}\n\n\treturn target;\n}\n\n/* Handles responses to an ajax request:\n * - finds the right dataType (mediates between content-type and expected dataType)\n * - returns the corresponding response\n */\nfunction ajaxHandleResponses( s, jqXHR, responses ) {\n\n\tvar ct, type, finalDataType, firstDataType,\n\t\tcontents = s.contents,\n\t\tdataTypes = s.dataTypes;\n\n\t// Remove auto dataType and get content-type in the process\n\twhile ( dataTypes[ 0 ] === \"*\" ) {\n\t\tdataTypes.shift();\n\t\tif ( ct === undefined ) {\n\t\t\tct = s.mimeType || jqXHR.getResponseHeader( \"Content-Type\" );\n\t\t}\n\t}\n\n\t// Check if we're dealing with a known content-type\n\tif ( ct ) {\n\t\tfor ( type in contents ) {\n\t\t\tif ( contents[ type ] && contents[ type ].test( ct ) ) {\n\t\t\t\tdataTypes.unshift( type );\n\t\t\t\tbreak;\n\t\t\t}\n\t\t}\n\t}\n\n\t// Check to see if we have a response for the expected dataType\n\tif ( dataTypes[ 0 ] in responses ) {\n\t\tfinalDataType = dataTypes[ 0 ];\n\t} else {\n\n\t\t// Try convertible dataTypes\n\t\tfor ( type in responses ) {\n\t\t\tif ( !dataTypes[ 0 ] || s.converters[ type + \" \" + dataTypes[ 0 ] ] ) {\n\t\t\t\tfinalDataType = type;\n\t\t\t\tbreak;\n\t\t\t}\n\t\t\tif ( !firstDataType ) {\n\t\t\t\tfirstDataType = type;\n\t\t\t}\n\t\t}\n\n\t\t// Or just use first one\n\t\tfinalDataType = finalDataType || firstDataType;\n\t}\n\n\t// If we found a dataType\n\t// We add the dataType to the list if needed\n\t// and return the corresponding response\n\tif ( finalDataType ) {\n\t\tif ( finalDataType !== dataTypes[ 0 ] ) {\n\t\t\tdataTypes.unshift( finalDataType );\n\t\t}\n\t\treturn responses[ finalDataType ];\n\t}\n}\n\n/* Chain conversions given the request and the original response\n * Also sets the responseXXX fields on the jqXHR instance\n */\nfunction ajaxConvert( s, response, jqXHR, isSuccess ) {\n\tvar conv2, current, conv, tmp, prev,\n\t\tconverters = {},\n\n\t\t// Work with a copy of dataTypes in case we need to modify it for conversion\n\t\tdataTypes = s.dataTypes.slice();\n\n\t// Create converters map with lowercased keys\n\tif ( dataTypes[ 1 ] ) {\n\t\tfor ( conv in s.converters ) {\n\t\t\tconverters[ conv.toLowerCase() ] = s.converters[ conv ];\n\t\t}\n\t}\n\n\tcurrent = dataTypes.shift();\n\n\t// Convert to each sequential dataType\n\twhile ( current ) {\n\n\t\tif ( s.responseFields[ current ] ) {\n\t\t\tjqXHR[ s.responseFields[ current ] ] = response;\n\t\t}\n\n\t\t// Apply the dataFilter if provided\n\t\tif ( !prev && isSuccess && s.dataFilter ) {\n\t\t\tresponse = s.dataFilter( response, s.dataType );\n\t\t}\n\n\t\tprev = current;\n\t\tcurrent = dataTypes.shift();\n\n\t\tif ( current ) {\n\n\t\t\t// There's only work to do if current dataType is non-auto\n\t\t\tif ( current === \"*\" ) {\n\n\t\t\t\tcurrent = prev;\n\n\t\t\t// Convert response if prev dataType is non-auto and differs from current\n\t\t\t} else if ( prev !== \"*\" && prev !== current ) {\n\n\t\t\t\t// Seek a direct converter\n\t\t\t\tconv = converters[ prev + \" \" + current ] || converters[ \"* \" + current ];\n\n\t\t\t\t// If none found, seek a pair\n\t\t\t\tif ( !conv ) {\n\t\t\t\t\tfor ( conv2 in converters ) {\n\n\t\t\t\t\t\t// If conv2 outputs current\n\t\t\t\t\t\ttmp = conv2.split( \" \" );\n\t\t\t\t\t\tif ( tmp[ 1 ] === current ) {\n\n\t\t\t\t\t\t\t// If prev can be converted to accepted input\n\t\t\t\t\t\t\tconv = converters[ prev + \" \" + tmp[ 0 ] ] ||\n\t\t\t\t\t\t\t\tconverters[ \"* \" + tmp[ 0 ] ];\n\t\t\t\t\t\t\tif ( conv ) {\n\n\t\t\t\t\t\t\t\t// Condense equivalence converters\n\t\t\t\t\t\t\t\tif ( conv === true ) {\n\t\t\t\t\t\t\t\t\tconv = converters[ conv2 ];\n\n\t\t\t\t\t\t\t\t// Otherwise, insert the intermediate dataType\n\t\t\t\t\t\t\t\t} else if ( converters[ conv2 ] !== true ) {\n\t\t\t\t\t\t\t\t\tcurrent = tmp[ 0 ];\n\t\t\t\t\t\t\t\t\tdataTypes.unshift( tmp[ 1 ] );\n\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t\tbreak;\n\t\t\t\t\t\t\t}\n\t\t\t\t\t\t}\n\t\t\t\t\t}\n\t\t\t\t}\n\n\t\t\t\t// Apply converter (if not an equivalence)\n\t\t\t\tif ( conv !== true ) {\n\n\t\t\t\t\t// Unless errors are allowed to bubble, catch and return them\n\t\t\t\t\tif ( conv && s.throws ) {\n\t\t\t\t\t\tresponse = conv( response );\n\t\t\t\t\t} else {\n\t\t\t\t\t\ttry {\n\t\t\t\t\t\t\tresponse = conv( response );\n\t\t\t\t\t\t} catch ( e ) {\n\t\t\t\t\t\t\treturn {\n\t\t\t\t\t\t\t\tstate: \"parsererror\",\n\t\t\t\t\t\t\t\terror: conv ? e : \"No conversion from \" + prev + \" to \" + current\n\t\t\t\t\t\t\t};\n\t\t\t\t\t\t}\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\t}\n\n\treturn { state: \"success\", data: response };\n}\n\njQuery.extend( {\n\n\t// Counter for holding the number of active queries\n\tactive: 0,\n\n\t// Last-Modified header cache for next request\n\tlastModified: {},\n\tetag: {},\n\n\tajaxSettings: {\n\t\turl: location.href,\n\t\ttype: \"GET\",\n\t\tisLocal: rlocalProtocol.test( location.protocol ),\n\t\tglobal: true,\n\t\tprocessData: true,\n\t\tasync: true,\n\t\tcontentType: \"application/x-www-form-urlencoded; charset=UTF-8\",\n\n\t\t/*\n\t\ttimeout: 0,\n\t\tdata: null,\n\t\tdataType: null,\n\t\tusername: null,\n\t\tpassword: null,\n\t\tcache: null,\n\t\tthrows: false,\n\t\ttraditional: false,\n\t\theaders: {},\n\t\t*/\n\n\t\taccepts: {\n\t\t\t\"*\": allTypes,\n\t\t\ttext: \"text/plain\",\n\t\t\thtml: \"text/html\",\n\t\t\txml: \"application/xml, text/xml\",\n\t\t\tjson: \"application/json, text/javascript\"\n\t\t},\n\n\t\tcontents: {\n\t\t\txml: /\\bxml\\b/,\n\t\t\thtml: /\\bhtml/,\n\t\t\tjson: /\\bjson\\b/\n\t\t},\n\n\t\tresponseFields: {\n\t\t\txml: \"responseXML\",\n\t\t\ttext: \"responseText\",\n\t\t\tjson: \"responseJSON\"\n\t\t},\n\n\t\t// Data converters\n\t\t// Keys separate source (or catchall \"*\") and destination types with a single space\n\t\tconverters: {\n\n\t\t\t// Convert anything to text\n\t\t\t\"* text\": String,\n\n\t\t\t// Text to html (true = no transformation)\n\t\t\t\"text html\": true,\n\n\t\t\t// Evaluate text as a json expression\n\t\t\t\"text json\": JSON.parse,\n\n\t\t\t// Parse text as xml\n\t\t\t\"text xml\": jQuery.parseXML\n\t\t},\n\n\t\t// For options that shouldn't be deep extended:\n\t\t// you can add your own custom options here if\n\t\t// and when you create one that shouldn't be\n\t\t// deep extended (see ajaxExtend)\n\t\tflatOptions: {\n\t\t\turl: true,\n\t\t\tcontext: true\n\t\t}\n\t},\n\n\t// Creates a full fledged settings object into target\n\t// with both ajaxSettings and settings fields.\n\t// If target is omitted, writes into ajaxSettings.\n\tajaxSetup: function( target, settings ) {\n\t\treturn settings ?\n\n\t\t\t// Building a settings object\n\t\t\tajaxExtend( ajaxExtend( target, jQuery.ajaxSettings ), settings ) :\n\n\t\t\t// Extending ajaxSettings\n\t\t\tajaxExtend( jQuery.ajaxSettings, target );\n\t},\n\n\tajaxPrefilter: addToPrefiltersOrTransports( prefilters ),\n\tajaxTransport: addToPrefiltersOrTransports( transports ),\n\n\t// Main method\n\tajax: function( url, options ) {\n\n\t\t// If url is an object, simulate pre-1.5 signature\n\t\tif ( typeof url === \"object\" ) {\n\t\t\toptions = url;\n\t\t\turl = undefined;\n\t\t}\n\n\t\t// Force options to be an object\n\t\toptions = options || {};\n\n\t\tvar transport,\n\n\t\t\t// URL without anti-cache param\n\t\t\tcacheURL,\n\n\t\t\t// Response headers\n\t\t\tresponseHeadersString,\n\t\t\tresponseHeaders,\n\n\t\t\t// timeout handle\n\t\t\ttimeoutTimer,\n\n\t\t\t// Url cleanup var\n\t\t\turlAnchor,\n\n\t\t\t// Request state (becomes false upon send and true upon completion)\n\t\t\tcompleted,\n\n\t\t\t// To know if global events are to be dispatched\n\t\t\tfireGlobals,\n\n\t\t\t// Loop variable\n\t\t\ti,\n\n\t\t\t// uncached part of the url\n\t\t\tuncached,\n\n\t\t\t// Create the final options object\n\t\t\ts = jQuery.ajaxSetup( {}, options ),\n\n\t\t\t// Callbacks context\n\t\t\tcallbackContext = s.context || s,\n\n\t\t\t// Context for global events is callbackContext if it is a DOM node or jQuery collection\n\t\t\tglobalEventContext = s.context &&\n\t\t\t\t( callbackContext.nodeType || callbackContext.jquery ) ?\n\t\t\t\tjQuery( callbackContext ) :\n\t\t\t\tjQuery.event,\n\n\t\t\t// Deferreds\n\t\t\tdeferred = jQuery.Deferred(),\n\t\t\tcompleteDeferred = jQuery.Callbacks( \"once memory\" ),\n\n\t\t\t// Status-dependent callbacks\n\t\t\tstatusCode = s.statusCode || {},\n\n\t\t\t// Headers (they are sent all at once)\n\t\t\trequestHeaders = {},\n\t\t\trequestHeadersNames = {},\n\n\t\t\t// Default abort message\n\t\t\tstrAbort = \"canceled\",\n\n\t\t\t// Fake xhr\n\t\t\tjqXHR = {\n\t\t\t\treadyState: 0,\n\n\t\t\t\t// Builds headers hashtable if needed\n\t\t\t\tgetResponseHeader: function( key ) {\n\t\t\t\t\tvar match;\n\t\t\t\t\tif ( completed ) {\n\t\t\t\t\t\tif ( !responseHeaders ) {\n\t\t\t\t\t\t\tresponseHeaders = {};\n\t\t\t\t\t\t\twhile ( ( match = rheaders.exec( responseHeadersString ) ) ) {\n\t\t\t\t\t\t\t\tresponseHeaders[ match[ 1 ].toLowerCase() + \" \" ] =\n\t\t\t\t\t\t\t\t\t( responseHeaders[ match[ 1 ].toLowerCase() + \" \" ] || [] )\n\t\t\t\t\t\t\t\t\t\t.concat( match[ 2 ] );\n\t\t\t\t\t\t\t}\n\t\t\t\t\t\t}\n\t\t\t\t\t\tmatch = responseHeaders[ key.toLowerCase() + \" \" ];\n\t\t\t\t\t}\n\t\t\t\t\treturn match == null ? null : match.join( \", \" );\n\t\t\t\t},\n\n\t\t\t\t// Raw string\n\t\t\t\tgetAllResponseHeaders: function() {\n\t\t\t\t\treturn completed ? responseHeadersString : null;\n\t\t\t\t},\n\n\t\t\t\t// Caches the header\n\t\t\t\tsetRequestHeader: function( name, value ) {\n\t\t\t\t\tif ( completed == null ) {\n\t\t\t\t\t\tname = requestHeadersNames[ name.toLowerCase() ] =\n\t\t\t\t\t\t\trequestHeadersNames[ name.toLowerCase() ] || name;\n\t\t\t\t\t\trequestHeaders[ name ] = value;\n\t\t\t\t\t}\n\t\t\t\t\treturn this;\n\t\t\t\t},\n\n\t\t\t\t// Overrides response content-type header\n\t\t\t\toverrideMimeType: function( type ) {\n\t\t\t\t\tif ( completed == null ) {\n\t\t\t\t\t\ts.mimeType = type;\n\t\t\t\t\t}\n\t\t\t\t\treturn this;\n\t\t\t\t},\n\n\t\t\t\t// Status-dependent callbacks\n\t\t\t\tstatusCode: function( map ) {\n\t\t\t\t\tvar code;\n\t\t\t\t\tif ( map ) {\n\t\t\t\t\t\tif ( completed ) {\n\n\t\t\t\t\t\t\t// Execute the appropriate callbacks\n\t\t\t\t\t\t\tjqXHR.always( map[ jqXHR.status ] );\n\t\t\t\t\t\t} else {\n\n\t\t\t\t\t\t\t// Lazy-add the new callbacks in a way that preserves old ones\n\t\t\t\t\t\t\tfor ( code in map ) {\n\t\t\t\t\t\t\t\tstatusCode[ code ] = [ statusCode[ code ], map[ code ] ];\n\t\t\t\t\t\t\t}\n\t\t\t\t\t\t}\n\t\t\t\t\t}\n\t\t\t\t\treturn this;\n\t\t\t\t},\n\n\t\t\t\t// Cancel the request\n\t\t\t\tabort: function( statusText ) {\n\t\t\t\t\tvar finalText = statusText || strAbort;\n\t\t\t\t\tif ( transport ) {\n\t\t\t\t\t\ttransport.abort( finalText );\n\t\t\t\t\t}\n\t\t\t\t\tdone( 0, finalText );\n\t\t\t\t\treturn this;\n\t\t\t\t}\n\t\t\t};\n\n\t\t// Attach deferreds\n\t\tdeferred.promise( jqXHR );\n\n\t\t// Add protocol if not provided (prefilters might expect it)\n\t\t// Handle falsy url in the settings object (#10093: consistency with old signature)\n\t\t// We also use the url parameter if available\n\t\ts.url = ( ( url || s.url || location.href ) + \"\" )\n\t\t\t.replace( rprotocol, location.protocol + \"//\" );\n\n\t\t// Alias method option to type as per ticket #12004\n\t\ts.type = options.method || options.type || s.method || s.type;\n\n\t\t// Extract dataTypes list\n\t\ts.dataTypes = ( s.dataType || \"*\" ).toLowerCase().match( rnothtmlwhite ) || [ \"\" ];\n\n\t\t// A cross-domain request is in order when the origin doesn't match the current origin.\n\t\tif ( s.crossDomain == null ) {\n\t\t\turlAnchor = document.createElement( \"a\" );\n\n\t\t\t// Support: IE <=8 - 11, Edge 12 - 15\n\t\t\t// IE throws exception on accessing the href property if url is malformed,\n\t\t\t// e.g. http://example.com:80x/\n\t\t\ttry {\n\t\t\t\turlAnchor.href = s.url;\n\n\t\t\t\t// Support: IE <=8 - 11 only\n\t\t\t\t// Anchor's host property isn't correctly set when s.url is relative\n\t\t\t\turlAnchor.href = urlAnchor.href;\n\t\t\t\ts.crossDomain = originAnchor.protocol + \"//\" + originAnchor.host !==\n\t\t\t\t\turlAnchor.protocol + \"//\" + urlAnchor.host;\n\t\t\t} catch ( e ) {\n\n\t\t\t\t// If there is an error parsing the URL, assume it is crossDomain,\n\t\t\t\t// it can be rejected by the transport if it is invalid\n\t\t\t\ts.crossDomain = true;\n\t\t\t}\n\t\t}\n\n\t\t// Convert data if not already a string\n\t\tif ( s.data && s.processData && typeof s.data !== \"string\" ) {\n\t\t\ts.data = jQuery.param( s.data, s.traditional );\n\t\t}\n\n\t\t// Apply prefilters\n\t\tinspectPrefiltersOrTransports( prefilters, s, options, jqXHR );\n\n\t\t// If request was aborted inside a prefilter, stop there\n\t\tif ( completed ) {\n\t\t\treturn jqXHR;\n\t\t}\n\n\t\t// We can fire global events as of now if asked to\n\t\t// Don't fire events if jQuery.event is undefined in an AMD-usage scenario (#15118)\n\t\tfireGlobals = jQuery.event && s.global;\n\n\t\t// Watch for a new set of requests\n\t\tif ( fireGlobals && jQuery.active++ === 0 ) {\n\t\t\tjQuery.event.trigger( \"ajaxStart\" );\n\t\t}\n\n\t\t// Uppercase the type\n\t\ts.type = s.type.toUpperCase();\n\n\t\t// Determine if request has content\n\t\ts.hasContent = !rnoContent.test( s.type );\n\n\t\t// Save the URL in case we're toying with the If-Modified-Since\n\t\t// and/or If-None-Match header later on\n\t\t// Remove hash to simplify url manipulation\n\t\tcacheURL = s.url.replace( rhash, \"\" );\n\n\t\t// More options handling for requests with no content\n\t\tif ( !s.hasContent ) {\n\n\t\t\t// Remember the hash so we can put it back\n\t\t\tuncached = s.url.slice( cacheURL.length );\n\n\t\t\t// If data is available and should be processed, append data to url\n\t\t\tif ( s.data && ( s.processData || typeof s.data === \"string\" ) ) {\n\t\t\t\tcacheURL += ( rquery.test( cacheURL ) ? \"&\" : \"?\" ) + s.data;\n\n\t\t\t\t// #9682: remove data so that it's not used in an eventual retry\n\t\t\t\tdelete s.data;\n\t\t\t}\n\n\t\t\t// Add or update anti-cache param if needed\n\t\t\tif ( s.cache === false ) {\n\t\t\t\tcacheURL = cacheURL.replace( rantiCache, \"$1\" );\n\t\t\t\tuncached = ( rquery.test( cacheURL ) ? \"&\" : \"?\" ) + \"_=\" + ( nonce.guid++ ) +\n\t\t\t\t\tuncached;\n\t\t\t}\n\n\t\t\t// Put hash and anti-cache on the URL that will be requested (gh-1732)\n\t\t\ts.url = cacheURL + uncached;\n\n\t\t// Change '%20' to '+' if this is encoded form body content (gh-2658)\n\t\t} else if ( s.data && s.processData &&\n\t\t\t( s.contentType || \"\" ).indexOf( \"application/x-www-form-urlencoded\" ) === 0 ) {\n\t\t\ts.data = s.data.replace( r20, \"+\" );\n\t\t}\n\n\t\t// Set the If-Modified-Since and/or If-None-Match header, if in ifModified mode.\n\t\tif ( s.ifModified ) {\n\t\t\tif ( jQuery.lastModified[ cacheURL ] ) {\n\t\t\t\tjqXHR.setRequestHeader( \"If-Modified-Since\", jQuery.lastModified[ cacheURL ] );\n\t\t\t}\n\t\t\tif ( jQuery.etag[ cacheURL ] ) {\n\t\t\t\tjqXHR.setRequestHeader( \"If-None-Match\", jQuery.etag[ cacheURL ] );\n\t\t\t}\n\t\t}\n\n\t\t// Set the correct header, if data is being sent\n\t\tif ( s.data && s.hasContent && s.contentType !== false || options.contentType ) {\n\t\t\tjqXHR.setRequestHeader( \"Content-Type\", s.contentType );\n\t\t}\n\n\t\t// Set the Accepts header for the server, depending on the dataType\n\t\tjqXHR.setRequestHeader(\n\t\t\t\"Accept\",\n\t\t\ts.dataTypes[ 0 ] && s.accepts[ s.dataTypes[ 0 ] ] ?\n\t\t\t\ts.accepts[ s.dataTypes[ 0 ] ] +\n\t\t\t\t\t( s.dataTypes[ 0 ] !== \"*\" ? \", \" + allTypes + \"; q=0.01\" : \"\" ) :\n\t\t\t\ts.accepts[ \"*\" ]\n\t\t);\n\n\t\t// Check for headers option\n\t\tfor ( i in s.headers ) {\n\t\t\tjqXHR.setRequestHeader( i, s.headers[ i ] );\n\t\t}\n\n\t\t// Allow custom headers/mimetypes and early abort\n\t\tif ( s.beforeSend &&\n\t\t\t( s.beforeSend.call( callbackContext, jqXHR, s ) === false || completed ) ) {\n\n\t\t\t// Abort if not done already and return\n\t\t\treturn jqXHR.abort();\n\t\t}\n\n\t\t// Aborting is no longer a cancellation\n\t\tstrAbort = \"abort\";\n\n\t\t// Install callbacks on deferreds\n\t\tcompleteDeferred.add( s.complete );\n\t\tjqXHR.done( s.success );\n\t\tjqXHR.fail( s.error );\n\n\t\t// Get transport\n\t\ttransport = inspectPrefiltersOrTransports( transports, s, options, jqXHR );\n\n\t\t// If no transport, we auto-abort\n\t\tif ( !transport ) {\n\t\t\tdone( -1, \"No Transport\" );\n\t\t} else {\n\t\t\tjqXHR.readyState = 1;\n\n\t\t\t// Send global event\n\t\t\tif ( fireGlobals ) {\n\t\t\t\tglobalEventContext.trigger( \"ajaxSend\", [ jqXHR, s ] );\n\t\t\t}\n\n\t\t\t// If request was aborted inside ajaxSend, stop there\n\t\t\tif ( completed ) {\n\t\t\t\treturn jqXHR;\n\t\t\t}\n\n\t\t\t// Timeout\n\t\t\tif ( s.async && s.timeout > 0 ) {\n\t\t\t\ttimeoutTimer = window.setTimeout( function() {\n\t\t\t\t\tjqXHR.abort( \"timeout\" );\n\t\t\t\t}, s.timeout );\n\t\t\t}\n\n\t\t\ttry {\n\t\t\t\tcompleted = false;\n\t\t\t\ttransport.send( requestHeaders, done );\n\t\t\t} catch ( e ) {\n\n\t\t\t\t// Rethrow post-completion exceptions\n\t\t\t\tif ( completed ) {\n\t\t\t\t\tthrow e;\n\t\t\t\t}\n\n\t\t\t\t// Propagate others as results\n\t\t\t\tdone( -1, e );\n\t\t\t}\n\t\t}\n\n\t\t// Callback for when everything is done\n\t\tfunction done( status, nativeStatusText, responses, headers ) {\n\t\t\tvar isSuccess, success, error, response, modified,\n\t\t\t\tstatusText = nativeStatusText;\n\n\t\t\t// Ignore repeat invocations\n\t\t\tif ( completed ) {\n\t\t\t\treturn;\n\t\t\t}\n\n\t\t\tcompleted = true;\n\n\t\t\t// Clear timeout if it exists\n\t\t\tif ( timeoutTimer ) {\n\t\t\t\twindow.clearTimeout( timeoutTimer );\n\t\t\t}\n\n\t\t\t// Dereference transport for early garbage collection\n\t\t\t// (no matter how long the jqXHR object will be used)\n\t\t\ttransport = undefined;\n\n\t\t\t// Cache response headers\n\t\t\tresponseHeadersString = headers || \"\";\n\n\t\t\t// Set readyState\n\t\t\tjqXHR.readyState = status > 0 ? 4 : 0;\n\n\t\t\t// Determine if successful\n\t\t\tisSuccess = status >= 200 && status < 300 || status === 304;\n\n\t\t\t// Get response data\n\t\t\tif ( responses ) {\n\t\t\t\tresponse = ajaxHandleResponses( s, jqXHR, responses );\n\t\t\t}\n\n\t\t\t// Use a noop converter for missing script but not if jsonp\n\t\t\tif ( !isSuccess &&\n\t\t\t\tjQuery.inArray( \"script\", s.dataTypes ) > -1 &&\n\t\t\t\tjQuery.inArray( \"json\", s.dataTypes ) < 0 ) {\n\t\t\t\ts.converters[ \"text script\" ] = function() {};\n\t\t\t}\n\n\t\t\t// Convert no matter what (that way responseXXX fields are always set)\n\t\t\tresponse = ajaxConvert( s, response, jqXHR, isSuccess );\n\n\t\t\t// If successful, handle type chaining\n\t\t\tif ( isSuccess ) {\n\n\t\t\t\t// Set the If-Modified-Since and/or If-None-Match header, if in ifModified mode.\n\t\t\t\tif ( s.ifModified ) {\n\t\t\t\t\tmodified = jqXHR.getResponseHeader( \"Last-Modified\" );\n\t\t\t\t\tif ( modified ) {\n\t\t\t\t\t\tjQuery.lastModified[ cacheURL ] = modified;\n\t\t\t\t\t}\n\t\t\t\t\tmodified = jqXHR.getResponseHeader( \"etag\" );\n\t\t\t\t\tif ( modified ) {\n\t\t\t\t\t\tjQuery.etag[ cacheURL ] = modified;\n\t\t\t\t\t}\n\t\t\t\t}\n\n\t\t\t\t// if no content\n\t\t\t\tif ( status === 204 || s.type === \"HEAD\" ) {\n\t\t\t\t\tstatusText = \"nocontent\";\n\n\t\t\t\t// if not modified\n\t\t\t\t} else if ( status === 304 ) {\n\t\t\t\t\tstatusText = \"notmodified\";\n\n\t\t\t\t// If we have data, let's convert it\n\t\t\t\t} else {\n\t\t\t\t\tstatusText = response.state;\n\t\t\t\t\tsuccess = response.data;\n\t\t\t\t\terror = response.error;\n\t\t\t\t\tisSuccess = !error;\n\t\t\t\t}\n\t\t\t} else {\n\n\t\t\t\t// Extract error from statusText and normalize for non-aborts\n\t\t\t\terror = statusText;\n\t\t\t\tif ( status || !statusText ) {\n\t\t\t\t\tstatusText = \"error\";\n\t\t\t\t\tif ( status < 0 ) {\n\t\t\t\t\t\tstatus = 0;\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t}\n\n\t\t\t// Set data for the fake xhr object\n\t\t\tjqXHR.status = status;\n\t\t\tjqXHR.statusText = ( nativeStatusText || statusText ) + \"\";\n\n\t\t\t// Success/Error\n\t\t\tif ( isSuccess ) {\n\t\t\t\tdeferred.resolveWith( callbackContext, [ success, statusText, jqXHR ] );\n\t\t\t} else {\n\t\t\t\tdeferred.rejectWith( callbackContext, [ jqXHR, statusText, error ] );\n\t\t\t}\n\n\t\t\t// Status-dependent callbacks\n\t\t\tjqXHR.statusCode( statusCode );\n\t\t\tstatusCode = undefined;\n\n\t\t\tif ( fireGlobals ) {\n\t\t\t\tglobalEventContext.trigger( isSuccess ? \"ajaxSuccess\" : \"ajaxError\",\n\t\t\t\t\t[ jqXHR, s, isSuccess ? success : error ] );\n\t\t\t}\n\n\t\t\t// Complete\n\t\t\tcompleteDeferred.fireWith( callbackContext, [ jqXHR, statusText ] );\n\n\t\t\tif ( fireGlobals ) {\n\t\t\t\tglobalEventContext.trigger( \"ajaxComplete\", [ jqXHR, s ] );\n\n\t\t\t\t// Handle the global AJAX counter\n\t\t\t\tif ( !( --jQuery.active ) ) {\n\t\t\t\t\tjQuery.event.trigger( \"ajaxStop\" );\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\n\t\treturn jqXHR;\n\t},\n\n\tgetJSON: function( url, data, callback ) {\n\t\treturn jQuery.get( url, data, callback, \"json\" );\n\t},\n\n\tgetScript: function( url, callback ) {\n\t\treturn jQuery.get( url, undefined, callback, \"script\" );\n\t}\n} );\n\njQuery.each( [ \"get\", \"post\" ], function( _i, method ) {\n\tjQuery[ method ] = function( url, data, callback, type ) {\n\n\t\t// Shift arguments if data argument was omitted\n\t\tif ( isFunction( data ) ) {\n\t\t\ttype = type || callback;\n\t\t\tcallback = data;\n\t\t\tdata = undefined;\n\t\t}\n\n\t\t// The url can be an options object (which then must have .url)\n\t\treturn jQuery.ajax( jQuery.extend( {\n\t\t\turl: url,\n\t\t\ttype: method,\n\t\t\tdataType: type,\n\t\t\tdata: data,\n\t\t\tsuccess: callback\n\t\t}, jQuery.isPlainObject( url ) && url ) );\n\t};\n} );\n\njQuery.ajaxPrefilter( function( s ) {\n\tvar i;\n\tfor ( i in s.headers ) {\n\t\tif ( i.toLowerCase() === \"content-type\" ) {\n\t\t\ts.contentType = s.headers[ i ] || \"\";\n\t\t}\n\t}\n} );\n\n\njQuery._evalUrl = function( url, options, doc ) {\n\treturn jQuery.ajax( {\n\t\turl: url,\n\n\t\t// Make this explicit, since user can override this through ajaxSetup (#11264)\n\t\ttype: \"GET\",\n\t\tdataType: \"script\",\n\t\tcache: true,\n\t\tasync: false,\n\t\tglobal: false,\n\n\t\t// Only evaluate the response if it is successful (gh-4126)\n\t\t// dataFilter is not invoked for failure responses, so using it instead\n\t\t// of the default converter is kludgy but it works.\n\t\tconverters: {\n\t\t\t\"text script\": function() {}\n\t\t},\n\t\tdataFilter: function( response ) {\n\t\t\tjQuery.globalEval( response, options, doc );\n\t\t}\n\t} );\n};\n\n\njQuery.fn.extend( {\n\twrapAll: function( html ) {\n\t\tvar wrap;\n\n\t\tif ( this[ 0 ] ) {\n\t\t\tif ( isFunction( html ) ) {\n\t\t\t\thtml = html.call( this[ 0 ] );\n\t\t\t}\n\n\t\t\t// The elements to wrap the target around\n\t\t\twrap = jQuery( html, this[ 0 ].ownerDocument ).eq( 0 ).clone( true );\n\n\t\t\tif ( this[ 0 ].parentNode ) {\n\t\t\t\twrap.insertBefore( this[ 0 ] );\n\t\t\t}\n\n\t\t\twrap.map( function() {\n\t\t\t\tvar elem = this;\n\n\t\t\t\twhile ( elem.firstElementChild ) {\n\t\t\t\t\telem = elem.firstElementChild;\n\t\t\t\t}\n\n\t\t\t\treturn elem;\n\t\t\t} ).append( this );\n\t\t}\n\n\t\treturn this;\n\t},\n\n\twrapInner: function( html ) {\n\t\tif ( isFunction( html ) ) {\n\t\t\treturn this.each( function( i ) {\n\t\t\t\tjQuery( this ).wrapInner( html.call( this, i ) );\n\t\t\t} );\n\t\t}\n\n\t\treturn this.each( function() {\n\t\t\tvar self = jQuery( this ),\n\t\t\t\tcontents = self.contents();\n\n\t\t\tif ( contents.length ) {\n\t\t\t\tcontents.wrapAll( html );\n\n\t\t\t} else {\n\t\t\t\tself.append( html );\n\t\t\t}\n\t\t} );\n\t},\n\n\twrap: function( html ) {\n\t\tvar htmlIsFunction = isFunction( html );\n\n\t\treturn this.each( function( i ) {\n\t\t\tjQuery( this ).wrapAll( htmlIsFunction ? html.call( this, i ) : html );\n\t\t} );\n\t},\n\n\tunwrap: function( selector ) {\n\t\tthis.parent( selector ).not( \"body\" ).each( function() {\n\t\t\tjQuery( this ).replaceWith( this.childNodes );\n\t\t} );\n\t\treturn this;\n\t}\n} );\n\n\njQuery.expr.pseudos.hidden = function( elem ) {\n\treturn !jQuery.expr.pseudos.visible( elem );\n};\njQuery.expr.pseudos.visible = function( elem ) {\n\treturn !!( elem.offsetWidth || elem.offsetHeight || elem.getClientRects().length );\n};\n\n\n\n\njQuery.ajaxSettings.xhr = function() {\n\ttry {\n\t\treturn new window.XMLHttpRequest();\n\t} catch ( e ) {}\n};\n\nvar xhrSuccessStatus = {\n\n\t\t// File protocol always yields status code 0, assume 200\n\t\t0: 200,\n\n\t\t// Support: IE <=9 only\n\t\t// #1450: sometimes IE returns 1223 when it should be 204\n\t\t1223: 204\n\t},\n\txhrSupported = jQuery.ajaxSettings.xhr();\n\nsupport.cors = !!xhrSupported && ( \"withCredentials\" in xhrSupported );\nsupport.ajax = xhrSupported = !!xhrSupported;\n\njQuery.ajaxTransport( function( options ) {\n\tvar callback, errorCallback;\n\n\t// Cross domain only allowed if supported through XMLHttpRequest\n\tif ( support.cors || xhrSupported && !options.crossDomain ) {\n\t\treturn {\n\t\t\tsend: function( headers, complete ) {\n\t\t\t\tvar i,\n\t\t\t\t\txhr = options.xhr();\n\n\t\t\t\txhr.open(\n\t\t\t\t\toptions.type,\n\t\t\t\t\toptions.url,\n\t\t\t\t\toptions.async,\n\t\t\t\t\toptions.username,\n\t\t\t\t\toptions.password\n\t\t\t\t);\n\n\t\t\t\t// Apply custom fields if provided\n\t\t\t\tif ( options.xhrFields ) {\n\t\t\t\t\tfor ( i in options.xhrFields ) {\n\t\t\t\t\t\txhr[ i ] = options.xhrFields[ i ];\n\t\t\t\t\t}\n\t\t\t\t}\n\n\t\t\t\t// Override mime type if needed\n\t\t\t\tif ( options.mimeType && xhr.overrideMimeType ) {\n\t\t\t\t\txhr.overrideMimeType( options.mimeType );\n\t\t\t\t}\n\n\t\t\t\t// X-Requested-With header\n\t\t\t\t// For cross-domain requests, seeing as conditions for a preflight are\n\t\t\t\t// akin to a jigsaw puzzle, we simply never set it to be sure.\n\t\t\t\t// (it can always be set on a per-request basis or even using ajaxSetup)\n\t\t\t\t// For same-domain requests, won't change header if already provided.\n\t\t\t\tif ( !options.crossDomain && !headers[ \"X-Requested-With\" ] ) {\n\t\t\t\t\theaders[ \"X-Requested-With\" ] = \"XMLHttpRequest\";\n\t\t\t\t}\n\n\t\t\t\t// Set headers\n\t\t\t\tfor ( i in headers ) {\n\t\t\t\t\txhr.setRequestHeader( i, headers[ i ] );\n\t\t\t\t}\n\n\t\t\t\t// Callback\n\t\t\t\tcallback = function( type ) {\n\t\t\t\t\treturn function() {\n\t\t\t\t\t\tif ( callback ) {\n\t\t\t\t\t\t\tcallback = errorCallback = xhr.onload =\n\t\t\t\t\t\t\t\txhr.onerror = xhr.onabort = xhr.ontimeout =\n\t\t\t\t\t\t\t\t\txhr.onreadystatechange = null;\n\n\t\t\t\t\t\t\tif ( type === \"abort\" ) {\n\t\t\t\t\t\t\t\txhr.abort();\n\t\t\t\t\t\t\t} else if ( type === \"error\" ) {\n\n\t\t\t\t\t\t\t\t// Support: IE <=9 only\n\t\t\t\t\t\t\t\t// On a manual native abort, IE9 throws\n\t\t\t\t\t\t\t\t// errors on any property access that is not readyState\n\t\t\t\t\t\t\t\tif ( typeof xhr.status !== \"number\" ) {\n\t\t\t\t\t\t\t\t\tcomplete( 0, \"error\" );\n\t\t\t\t\t\t\t\t} else {\n\t\t\t\t\t\t\t\t\tcomplete(\n\n\t\t\t\t\t\t\t\t\t\t// File: protocol always yields status 0; see #8605, #14207\n\t\t\t\t\t\t\t\t\t\txhr.status,\n\t\t\t\t\t\t\t\t\t\txhr.statusText\n\t\t\t\t\t\t\t\t\t);\n\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t} else {\n\t\t\t\t\t\t\t\tcomplete(\n\t\t\t\t\t\t\t\t\txhrSuccessStatus[ xhr.status ] || xhr.status,\n\t\t\t\t\t\t\t\t\txhr.statusText,\n\n\t\t\t\t\t\t\t\t\t// Support: IE <=9 only\n\t\t\t\t\t\t\t\t\t// IE9 has no XHR2 but throws on binary (trac-11426)\n\t\t\t\t\t\t\t\t\t// For XHR2 non-text, let the caller handle it (gh-2498)\n\t\t\t\t\t\t\t\t\t( xhr.responseType || \"text\" ) !== \"text\" ||\n\t\t\t\t\t\t\t\t\ttypeof xhr.responseText !== \"string\" ?\n\t\t\t\t\t\t\t\t\t\t{ binary: xhr.response } :\n\t\t\t\t\t\t\t\t\t\t{ text: xhr.responseText },\n\t\t\t\t\t\t\t\t\txhr.getAllResponseHeaders()\n\t\t\t\t\t\t\t\t);\n\t\t\t\t\t\t\t}\n\t\t\t\t\t\t}\n\t\t\t\t\t};\n\t\t\t\t};\n\n\t\t\t\t// Listen to events\n\t\t\t\txhr.onload = callback();\n\t\t\t\terrorCallback = xhr.onerror = xhr.ontimeout = callback( \"error\" );\n\n\t\t\t\t// Support: IE 9 only\n\t\t\t\t// Use onreadystatechange to replace onabort\n\t\t\t\t// to handle uncaught aborts\n\t\t\t\tif ( xhr.onabort !== undefined ) {\n\t\t\t\t\txhr.onabort = errorCallback;\n\t\t\t\t} else {\n\t\t\t\t\txhr.onreadystatechange = function() {\n\n\t\t\t\t\t\t// Check readyState before timeout as it changes\n\t\t\t\t\t\tif ( xhr.readyState === 4 ) {\n\n\t\t\t\t\t\t\t// Allow onerror to be called first,\n\t\t\t\t\t\t\t// but that will not handle a native abort\n\t\t\t\t\t\t\t// Also, save errorCallback to a variable\n\t\t\t\t\t\t\t// as xhr.onerror cannot be accessed\n\t\t\t\t\t\t\twindow.setTimeout( function() {\n\t\t\t\t\t\t\t\tif ( callback ) {\n\t\t\t\t\t\t\t\t\terrorCallback();\n\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t} );\n\t\t\t\t\t\t}\n\t\t\t\t\t};\n\t\t\t\t}\n\n\t\t\t\t// Create the abort callback\n\t\t\t\tcallback = callback( \"abort\" );\n\n\t\t\t\ttry {\n\n\t\t\t\t\t// Do send the request (this may raise an exception)\n\t\t\t\t\txhr.send( options.hasContent && options.data || null );\n\t\t\t\t} catch ( e ) {\n\n\t\t\t\t\t// #14683: Only rethrow if this hasn't been notified as an error yet\n\t\t\t\t\tif ( callback ) {\n\t\t\t\t\t\tthrow e;\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t},\n\n\t\t\tabort: function() {\n\t\t\t\tif ( callback ) {\n\t\t\t\t\tcallback();\n\t\t\t\t}\n\t\t\t}\n\t\t};\n\t}\n} );\n\n\n\n\n// Prevent auto-execution of scripts when no explicit dataType was provided (See gh-2432)\njQuery.ajaxPrefilter( function( s ) {\n\tif ( s.crossDomain ) {\n\t\ts.contents.script = false;\n\t}\n} );\n\n// Install script dataType\njQuery.ajaxSetup( {\n\taccepts: {\n\t\tscript: \"text/javascript, application/javascript, \" +\n\t\t\t\"application/ecmascript, application/x-ecmascript\"\n\t},\n\tcontents: {\n\t\tscript: /\\b(?:java|ecma)script\\b/\n\t},\n\tconverters: {\n\t\t\"text script\": function( text ) {\n\t\t\tjQuery.globalEval( text );\n\t\t\treturn text;\n\t\t}\n\t}\n} );\n\n// Handle cache's special case and crossDomain\njQuery.ajaxPrefilter( \"script\", function( s ) {\n\tif ( s.cache === undefined ) {\n\t\ts.cache = false;\n\t}\n\tif ( s.crossDomain ) {\n\t\ts.type = \"GET\";\n\t}\n} );\n\n// Bind script tag hack transport\njQuery.ajaxTransport( \"script\", function( s ) {\n\n\t// This transport only deals with cross domain or forced-by-attrs requests\n\tif ( s.crossDomain || s.scriptAttrs ) {\n\t\tvar script, callback;\n\t\treturn {\n\t\t\tsend: function( _, complete ) {\n\t\t\t\tscript = jQuery( \"