{"version":3,"sources":["webpack:///webpack/bootstrap","webpack:///./node_modules/@stimulus/core/dist/src/event_listener.js","webpack:///./node_modules/@stimulus/core/dist/src/dispatcher.js","webpack:///./node_modules/@stimulus/core/dist/src/action_descriptor.js","webpack:///./node_modules/@stimulus/core/dist/src/action.js","webpack:///./node_modules/@stimulus/core/dist/src/binding.js","webpack:///./node_modules/@stimulus/mutation-observers/dist/src/element_observer.js","webpack:///./node_modules/@stimulus/mutation-observers/dist/src/attribute_observer.js","webpack:///./node_modules/@stimulus/multimap/dist/src/set_operations.js","webpack:///./node_modules/@stimulus/multimap/dist/src/multimap.js","webpack:///./node_modules/@stimulus/multimap/dist/src/indexed_multimap.js","webpack:///./node_modules/@stimulus/mutation-observers/dist/src/token_list_observer.js","webpack:///./node_modules/@stimulus/mutation-observers/dist/src/value_list_observer.js","webpack:///./node_modules/@stimulus/core/dist/src/binding_observer.js","webpack:///./node_modules/@stimulus/core/dist/src/context.js","webpack:///./node_modules/@stimulus/core/dist/src/definition.js","webpack:///./node_modules/@stimulus/core/dist/src/module.js","webpack:///./node_modules/@stimulus/core/dist/src/data_map.js","webpack:///./node_modules/@stimulus/core/dist/src/selectors.js","webpack:///./node_modules/@stimulus/core/dist/src/target_set.js","webpack:///./node_modules/@stimulus/core/dist/src/scope.js","webpack:///./node_modules/@stimulus/core/dist/src/scope_observer.js","webpack:///./node_modules/@stimulus/core/dist/src/router.js","webpack:///./node_modules/@stimulus/core/dist/src/schema.js","webpack:///./node_modules/@stimulus/core/dist/src/application.js","webpack:///./node_modules/@stimulus/core/dist/src/target_properties.js","webpack:///./node_modules/@stimulus/core/dist/src/controller.js","webpack:///./node_modules/codemirror/lib/codemirror.js","webpack:///./node_modules/jquery/dist/jquery.js","webpack:///./node_modules/@rails/ujs/lib/assets/compiled/rails-ujs.js","webpack:///./app/javascript/channels/consumer.js","webpack:///./node_modules/morphdom/dist/morphdom-esm.js","webpack:///./node_modules/cable_ready/javascript/enums.js","webpack:///./node_modules/cable_ready/javascript/utils.js","webpack:///./node_modules/cable_ready/javascript/cable_ready.js","webpack:///./node_modules/cable_ready/javascript/callbacks.js","webpack:///./app/javascript/channels/channel.js","webpack:///(webpack)/buildin/global.js","webpack:///./node_modules/@joeattardi/emoji-button/dist/index.js","webpack:///./node_modules/@rails/actioncable/app/assets/javascripts/action_cable.js","webpack:///./app/javascript/helpers/countdown.js","webpack:///./node_modules/ansi_up/ansi_up.js","webpack:///./node_modules/dom-confetti/lib/main.js","webpack:///./node_modules/@rails/activestorage/app/assets/javascripts/activestorage.js","webpack:///./app/javascript/channels/index.js","webpack:///./app/javascript/channels sync _channel\\.js$","webpack:///./node_modules/bootstrap/dist/js/bootstrap.js","webpack:///./node_modules/popper.js/dist/esm/popper.js","webpack:///./app/javascript/controllers sync _controller\\.js$","webpack:///./node_modules/codemirror/mode/ruby/ruby.js","webpack:///./node_modules/codemirror/mode/python/python.js","webpack:///./node_modules/codemirror/addon/edit/closebrackets.js","webpack:///./node_modules/codemirror/keymap/sublime.js","webpack:///./node_modules/codemirror/addon/search/searchcursor.js","webpack:///./node_modules/codemirror/addon/edit/matchbrackets.js","webpack:///./app/javascript/controllers/emoji_controller.js","webpack:///./app/javascript/controllers/game_cable_controller.js","webpack:///./app/javascript/controllers/output_controller.js","webpack:///./app/javascript/controllers/player_cable_controller.js","webpack:///./app/javascript/controllers/player_code_channel_controller.js","webpack:///./app/javascript/controllers/player_controller.js","webpack:///./app/javascript/controllers/utilities/confetti_controller.js","webpack:///./app/javascript/controllers/utilities/copy_button_controller.js","webpack:///./app/javascript/controllers/utilities/modals_controller.js","webpack:///./app/javascript/controllers/utilities/toasts_controller.js","webpack:///./app/javascript/controllers/utilities/tooltips_controller.js","webpack:///./app/javascript/controllers/index.js","webpack:///./node_modules/@stimulus/webpack-helpers/dist/index.js","webpack:///./app/javascript/packs/application.js","webpack:///./app/javascript/helpers/throttle.js","webpack:///./app/javascript/controllers/code_editor_controller.js","webpack:///./node_modules/sortablejs/modular/sortable.esm.js","webpack:///./app/javascript/controllers/seats_round_controller.js"],"names":["installedModules","__webpack_require__","moduleId","exports","module","i","l","modules","call","m","c","d","name","getter","o","Object","defineProperty","enumerable","get","r","Symbol","toStringTag","value","t","mode","__esModule","ns","create","key","bind","n","object","property","prototype","hasOwnProperty","p","s","EventListener","eventTarget","eventName","this","unorderedBindings","Set","connect","addEventListener","disconnect","removeEventListener","bindingConnected","binding","add","bindingDisconnected","delete","handleEvent","event","extendedEvent","stopImmediatePropagation_1","stopImmediatePropagation","assign","immediatePropagationStopped","extendEvent","_i","_a","bindings","length","Array","from","sort","left","right","leftIndex","index","rightIndex","configurable","Dispatcher","application","eventListenerMaps","Map","started","start","eventListeners","forEach","eventListener","stop","values","reduce","listeners","map","concat","fetchEventListenerForBinding","handleError","error","message","detail","fetchEventListener","eventListenerMap","fetchEventListenerMapForEventTarget","createEventListener","set","descriptorPattern","parseEventTarget","eventTargetName","window","document","Action","element","descriptor","tagName","toLowerCase","defaultEventNames","getDefaultEventNameForElement","identifier","methodName","forToken","token","descriptorString","content","matches","trim","match","toString","eventNameSuffix","e","getAttribute","Error","Binding","context","action","willBeInvokedByEvent","invokeWithEvent","method","controller","target","Element","contains","scope","containsElement","ElementObserver","delegate","_this","elements","mutationObserver","MutationObserver","mutations","processMutations","observe","attributes","childList","subtree","refresh","takeRecords","matchElementsInTree","has","removeElement","_b","_c","addElement","mutations_1","mutation","processMutation","type","processAttributeChange","attributeName","processRemovedNodes","removedNodes","processAddedNodes","addedNodes","node","elementAttributeChanged","matchElement","nodes","elementFromNode","processTree","elementIsActive","tree","processor","nodeType","Node","ELEMENT_NODE","isConnected","elementMatched","elementUnmatched","AttributeObserver","elementObserver","hasAttribute","querySelectorAll","selector","elementMatchedAttribute","elementUnmatchedAttribute","elementAttributeValueChanged","fetch","del","size","prune","extendStatics","Multimap","valuesByKey","hasKey","hasValue","some","getValuesForKey","getKeysForValue","filter","__extends","setPrototypeOf","__proto__","b","__","constructor","_super","IndexedMultimap","keysByValue","keys","TokenListObserver","attributeObserver","tokensByElement","tokensMatched","readTokensForElement","refreshTokensForElement","unmatchedTokens","matchedTokens","tokensUnmatched","tokens","tokenMatched","tokenUnmatched","previousTokens","currentTokens","firstDifferingIndex","Math","max","_","findIndex","tokensAreEqual","slice","tokenString","split","parseTokenString","ValueListObserver","tokenListObserver","parseResultsByToken","WeakMap","valuesByTokenByElement","fetchParseResultForToken","fetchValuesByTokenForElement","elementMatchedValue","elementUnmatchedValue","parseResult","parseToken","valuesByToken","parseValueForToken","BindingObserver","bindingsByAction","valueListObserver","actionAttribute","disconnectAllActions","schema","connectAction","disconnectAction","clear","Context","controllerConstructor","bindingObserver","dispatcher","initialize","parentElement","blessControllerConstructor","extend","bless","extendWithReflect","Controller","_newTarget","Reflect","construct","arguments","a","apply","Module","definition","blessDefinition","contextsByScope","connectedContexts","connectContextForScope","fetchContextForScope","disconnectContextForScope","DataMap","getFormattedKey","setAttribute","removeAttribute","replace","char","attributeValueContainsToken","TargetSet","targetName","find","targetNames","getSelectorForTargetNames","findElement","findAll","findAllElements","getSelectorForTargetName","join","targetDescriptor","targetAttribute","Scope","targets","data","head","tail","filterElements","closest","controllerSelector","controllerAttribute","ScopeObserver","scopesByIdentifierByElement","scopeReferenceCounts","scopesByIdentifier","fetchScopesByIdentifierForElement","referenceCount","scopeConnected","scopeDisconnected","Router","scopeObserver","modulesByIdentifier","contexts","loadDefinition","unloadIdentifier","connectModule","disconnectModule","getContextForElementAndIdentifier","defaultSchema","__awaiter","thisArg","_arguments","P","generator","Promise","resolve","reject","fulfilled","step","next","rejected","result","done","then","__generator","body","f","y","g","label","sent","trys","ops","verb","iterator","v","op","TypeError","pop","push","Application","documentElement","router","readyState","register","load","rest","definitions","isArray","unload","identifiers","getControllerForElementAndIdentifier","console","defineTargetProperties","ancestors","getPrototypeOf","getAncestorsForConstructor","getOwnTargetNamesForConstructor","getTargetNamesForConstructor","properties","charAt","toUpperCase","capitalize","userAgent","navigator","platform","gecko","test","ie_upto10","ie_11up","exec","edge","ie","ie_version","documentMode","webkit","qtwebkit","chrome","chrome_version","presto","safari","vendor","mac_geMountainLion","phantom","ios","maxTouchPoints","android","mobile","mac","chromeOS","windows","presto_version","Number","flipCtrlCmd","captureRightClick","classTest","cls","RegExp","range","rmClass","current","className","after","removeChildren","count","childNodes","removeChild","firstChild","removeChildrenAndAdd","parent","appendChild","elt","tag","style","createElement","cssText","createTextNode","eltP","child","parentNode","host","activeElt","activeElement","shadowRoot","addClass","joinClasses","as","createRange","end","endNode","setEnd","setStart","createTextRange","moveToElementText","collapse","moveEnd","moveStart","selectInput","select","args","copyObj","obj","overwrite","prop","countColumn","string","tabSize","startIndex","startValue","search","nextTab","indexOf","selectionStart","selectionEnd","_e","Delayed","id","time","handler","onTimeout","array","self","Date","setTimeout","ms","clearTimeout","scrollerGap","Pass","sel_dontScroll","scroll","sel_mouse","origin","sel_move","findColumn","goal","pos","col","skipped","min","spaceStrs","spaceStr","lst","arr","out","insertSorted","score","priority","splice","nothing","createObj","base","props","inst","nonASCIISingleCaseWordChar","isWordCharBasic","ch","isWordChar","helper","source","isEmpty","extendingChars","isExtendingChar","charCodeAt","skipExtendingChars","str","dir","findFirst","pred","to","midF","mid","ceil","floor","iterateBidiSections","order","found","part","level","bidiOther","getBidiPartAt","sticky","cur","bidiOrdering","lowTypes","arabicTypes","charType","code","bidiRE","isNeutral","isStrong","countsAsLeft","countsAsNum","BidiSpan","direction","outerType","len","types","i$1","prev","i$2","type$1","i$3","prev$1","type$2","i$4","type$3","j","i$5","cur$1","type$4","i$6","end$1","before","replace$1","j$1","i$7","at","isRTL","j$2","nstart","unshift","reverse","getOrder","line","text","noHandlers","on","emitter","attachEvent","_handlers","getHandlers","off","detachEvent","signal","handlers","signalDOMEvent","cm","override","preventDefault","defaultPrevented","e_defaultPrevented","codemirrorIgnore","signalCursorActivity","cursorActivity","curOp","cursorActivityHandlers","hasHandler","eventMixin","ctor","e_preventDefault","returnValue","e_stopPropagation","stopPropagation","cancelBubble","e_stop","e_target","srcElement","e_button","which","button","ctrlKey","zwspSupported","badBidiRects","dragAndDrop","div","zeroWidthElement","measure","offsetHeight","offsetWidth","hasBadBidiRects","txt","r0","getBoundingClientRect","r1","splitLinesAuto","nl","rt","hasSelection","getSelection","te","ownerDocument","selection","compareEndPoints","hasCopyEvent","oncopy","badZoomedRects","hasBadZoomedRects","normal","fromRange","abs","modes","mimeModes","defineMode","dependencies","defineMIME","mime","spec","resolveMode","getMode","options","mfactory","modeObj","modeExtensions","exts","helperType","modeProps","prop$1","extendMode","copyState","state","nstate","val","innerMode","info","startState","a1","a2","StringStream","lineOracle","lastColumnPos","lastColumnValue","lineStart","getLine","doc","first","chunk","lines","children","sz","chunkSize","getBetween","iter","getLines","updateLineHeight","height","diff","lineNo","no","lineAtHeight","h","outer","lh","isLine","lineNumberFor","String","lineNumberFormatter","firstLineNumber","Pos","cmp","equalCursorPos","copyPos","x","maxPos","minPos","clipLine","clipPos","last","clipToLen","linelen","clipPosArray","eol","sol","peek","undefined","eat","eatWhile","eatSpace","skipToEnd","skipTo","backUp","column","indentation","pattern","consume","caseInsensitive","cased","substr","hideFirstChars","inner","lookAhead","oracle","baseToken","SavedContext","maxLookAhead","baseTokens","baseTokenPos","highlightLine","forceToEnd","st","modeGen","lineClasses","runMode","loop","overlay","overlays","i_end","opaque","styles","classes","bgClass","textClass","getLineStyles","updateFrontier","getContextBefore","resetState","maxHighlightLength","stateAfter","save","styleClasses","highlightFrontier","modeFrontier","precise","display","findStartLine","saved","fromSaved","processLine","viewFrom","viewTo","nextLine","startAt","stream","callBlankLine","readToken","blankLine","copy","Token","takeToken","asArray","extractLineClasses","output","lineClass","flattenSpans","curStart","curStyle","addModeClass","mName","minindent","minline","lim","indented","retreatFrontier","sawReadOnlySpans","sawCollapsedSpans","seeReadOnlySpans","seeCollapsedSpans","MarkedSpan","marker","getMarkedSpanFor","spans","span","removeMarkedSpan","addMarkedSpan","inThisOp","WeakSet","markedSpans","attachLine","markedSpansBefore","old","startCh","isInsert","nw","inclusiveLeft","insertLeft","endsAfter","inclusiveRight","markedSpansAfter","endCh","startsBefore","stretchSpansOverChange","change","full","oldFirst","oldLast","sameLine","offset","span$1","clearEmptySpans","newMarkers","gapMarkers","gap","clearWhenEmpty","removeReadOnlyRanges","markers","mark","readOnly","parts","mk","newParts","dfrom","dto","detachMarkedSpans","detachLine","attachMarkedSpans","extraLeft","extraRight","compareCollapsedMarkers","lenDiff","aPos","bPos","fromCmp","toCmp","collapsedSpanAtSide","sps","sp","collapsed","collapsedSpanAtStart","collapsedSpanAtEnd","collapsedSpanAround","conflictingCollapsedRange","visualLine","merged","visualLineEnd","visualLineContinued","visualLineNo","lineN","vis","visualLineEndNo","lastLine","lineIsHidden","widgetNode","lineIsHiddenInner","heightAtLine","lineObj","lineLength","found$1","findMaxLine","maxLine","maxLineLength","maxLineChanged","Line","estimateHeight","updateLine","estHeight","cleanUpLine","styleToClassCache","styleToClassCacheWithMode","interpretTokenStyle","cache","buildLineContent","lineView","builder","pre","trailingSpace","splitSpaces","getOption","addToken","buildToken","buildTokenBadBidi","insertLineContent","externalMeasured","maps","caches","lastChild","querySelector","defaultSpecialCharPlaceholder","title","startStyle","endStyle","css","displayText","special","specialChars","mustWrap","createDocumentFragment","lastIndex","txt$1","tabWidth","specialCharPlaceholder","fullStyle","attr","trailingBefore","spaceBefore","buildCollapsedSpan","ignoreWidget","widget","input","needsContentAttribute","setUneditable","allText","spanStyle","spanEndStyle","spanStartStyle","nextChange","Infinity","foundBookmarks","endStyles","upto","tokenText","LineView","hidden","buildViewArray","nextPos","view","operationGroup","pushOperation","ownsGroup","delayedCallbacks","fireCallbacksForOps","group","callbacks","cursorActivityCalled","finishOperation","endCb","orphanDelayedCallbacks","signalLater","list","fireOrphanDelayed","delayed","updateLineForChanges","dims","changes","updateLineText","updateLineGutter","updateLineClasses","updateLineWidgets","ensureLineWrapped","replaceChild","zIndex","updateLineBackground","background","wrap","insertBefore","getLineContent","ext","built","wrapClass","gutter","gutterBackground","gutterClass","fixedGutter","fixedPos","gutterTotalWidth","gutterMarkers","lineNumbers","wrap$1","gutterWrap","lineNumber","gutterLeft","k","gutterSpecs","gutterWidth","alignable","isWidget","nextSibling","insertLineWidgets","buildLineElement","insertLineWidgetsFor","allowAbove","widgets","ws","handleMouseEvents","positionLineWidget","above","noHScroll","width","wrapperWidth","coverGutter","paddingLeft","position","marginLeft","widgetHeight","parentStyle","gutters","wrapper","clientWidth","eventInWidget","sizer","mover","paddingTop","lineSpace","offsetTop","paddingVert","paddingH","cachedPaddingH","getComputedStyle","currentStyle","parseInt","paddingRight","isNaN","scrollGap","nativeBarWidth","displayWidth","scroller","barWidth","displayHeight","clientHeight","barHeight","ensureLineHeights","rect","wrapping","lineWrapping","curWidth","heights","rects","getClientRects","bottom","top","mapFromLineView","updateExternalMeasurement","lineMeasure","measureChar","bias","measureCharPrepared","prepareMeasureForLine","findViewForLine","findViewIndex","getDimensions","forceUpdate","hasHeights","prepared","varHeight","measureCharInner","bogus","rtop","rbottom","measureText","nullRect","nodeAndOffsetInLineMap","mStart","mEnd","coverStart","coverEnd","getUsefulRect","place","maybeUpdateRectForZooming","rSpan","charWidth","rbot","bot","singleCursorHeightPerLine","screen","logicalXDPI","deviceXDPI","scaleX","scaleY","logicalYDPI","deviceYDPI","clearLineMeasurementCacheFor","clearLineMeasurementCache","externalMeasure","clearCaches","cachedCharWidth","cachedTextHeight","lineNumChars","pageScrollX","pageXOffset","scrollLeft","pageScrollY","marginTop","pageYOffset","scrollTop","widgetTopHeight","intoCoordSystem","includeWidgets","yOff","viewOffset","lOff","xOff","fromCoordSystem","coords","localBox","lineSpaceBox","charCoords","cursorCoords","preparedMeasure","getBidi","partPos","invert","other","estimateCoords","PosWithInfo","outside","xRel","coordsChar","coordsCharInner","rangeEnd","wrappedLineExtent","begin","wrappedLineExtentChar","boxIsAfter","box","ltr","coordsBidiPartWrapped","coordsBidiPart","baseX","chAround","boxAround","atLeft","atStart","_lineNo","ref","closestDist","endX","dist","textHeight","anchor","clientLeft","offsetLeft","compensateForHScroll","th","perLine","widgetsHeight","estimateLineHeights","est","posFromMouse","liberal","forRect","space","clientX","clientY","e$1","colDiff","round","regChange","lendiff","updateLineNumbers","viewChanged","resetView","cut","viewCuttingPoint","cut$1","cutTop","cutBot","regLineChange","oldN","newN","adjustView","countDirtyView","dirty","updateSelection","showSelection","prepareSelection","primary","curFragment","cursors","selFragment","customCursor","$customCursor","sel","ranges","primIndex","empty","drawSelectionCursor","showCursorWhenSelecting","drawSelectionRange","cursor","cursorHeight","getWrapperElement","charPos","defaultCharWidth","otherCursor","cmpCoords","fragment","padding","leftSide","rightSide","sizerWidth","docLTR","drawForLine","fromArg","toArg","lineLen","wrapX","side","extent","fromPos","toPos","openStart","openEnd","openRight","topLeft","topRight","botLeft","botRight","sFrom","sTo","fromLine","toLine","singleVLine","leftEnd","rightStart","restartBlink","focused","clearInterval","blinker","cursorDiv","visibility","cursorBlinkRate","setInterval","hasFocus","onBlur","ensureFocus","focus","onFocus","delayBlurEvent","delayingBlurEvent","draggingText","selForContextMenu","reset","receivedFocus","shift","updateHeightsInViewport","prevBottom","lineDiv","viewTop","oldHeight","mustScroll","updateWidgetHeight","chWidth","w","visibleLines","viewport","ensure","ensureFrom","ensureTo","maybeScrollWindow","doScroll","innerHeight","scrollNode","scrollIntoView","scrollPosIntoView","margin","limit","changed","endCoords","scrollPos","calculateScrollPos","startTop","startLeft","updateScrollTop","setScrollLeft","snapMargin","screentop","docBottom","atTop","atBottom","newTop","gutterSpace","screenleft","screenw","tooWide","addToScrollTop","resolveScrollToPos","ensureCursorVisible","getCursor","scrollToPos","cursorScrollMargin","scrollToCoords","scrollToRange","scrollToCoordsRange","sPos","updateDisplaySimple","setScrollTop","startWorker","forceScroll","scrollHeight","scrollbars","isScroller","scrollWidth","alignHorizontally","measureForScrollbars","gutterW","docH","viewHeight","viewWidth","barLeft","docHeight","NativeScrollbars","vert","horiz","tabIndex","checkedZeroWidth","minHeight","minWidth","update","needsH","needsV","sWidth","totalHeight","totalWidth","zeroWidthHack","disableHoriz","enableZeroWidthBar","disableVert","bar","delay","maybeDisable","elementFromPoint","NullScrollbars","updateScrollbars","startWidth","startHeight","updateScrollbarsInner","sizes","paddingBottom","heightForcer","borderBottom","scrollbarFiller","coverGutterNextToScrollbar","gutterFiller","scrollbarModel","initScrollbars","scrollbarStyle","axis","nextOpId","startOperation","updateInput","typing","changeObjs","selectionChanged","updateMaxLine","markArrays","endOperation","endOperations","endOperation_R1","endOperation_W1","endOperation_R2","endOperation_W2","endOperation_finish","maybeClipScrollbars","mustUpdate","DisplayUpdate","updatedDisplay","updateDisplayIfNeeded","barMeasure","adjustWidthTo","maxScrollLeft","preparedSelection","takeFocus","setDocumentHeight","postUpdateDisplay","wheelStartX","wheelStartY","maybeHiddenMarkers","unhidden","maybeUnhiddenMarkers","finish","runInOp","operation","methodOp","docMethodOp","highlight","highlightWorker","workTime","changedLines","oldStyles","highlighted","oldCls","newCls","ischange","workDelay","force","visible","editorIsHidden","wrapperHeight","oldDisplayWidth","events","scrollbarsClipped","marginBottom","borderRightWidth","selectionSnapshot","active","anchorNode","anchorOffset","focusNode","focusOffset","restoreSelection","snapshot","nodeName","removeAllRanges","addRange","renderedView","maybeUpdateLineNumberWidth","viewportMargin","different","lastWrapHeight","lastWrapWidth","toUpdate","selSnapshot","patchDisplay","selectionDiv","reportedViewFrom","reportedViewTo","updateNumbersFrom","container","rm","currentWheelTarget","updateNumber","updateGutterSpace","alignWidgets","comp","align","innerW","lineGutter","lineNumInnerWidth","lineNumWidth","getGutters","sawLineNumbers","renderGutters","specs","gElt","updateGutters","Display","draggable","wheelDX","wheelDY","activeTouch","init","wheelSamples","wheelPixelsPerUnit","wheelEventDelta","dx","wheelDeltaX","dy","wheelDeltaY","HORIZONTAL_AXIS","VERTICAL_AXIS","wheelDelta","wheelEventPixels","delta","onScrollWheel","chromeScrollHack","pointerEvents","pixelsPerUnit","deltaMode","deltaX","deltaY","canScrollX","canScrollY","pixels","movedX","movedY","sample","Selection","equals","here","there","deepCopy","Range","somethingSelected","normalizeSelection","mayTouch","selectionsMayTouch","prim","inv","simpleSelection","changeEnd","adjustForChange","computeSelAfterChange","offsetPos","computeReplacedSel","hint","oldPrev","newPrev","loadMode","modeOption","resetModeState","isWholeLineUpdate","wholeLineUpdateBefore","updateDoc","spansFor","linesFor","firstLine","lastText","lastSpans","nlines","insert","remove","added","added$1","added$2","linkedDocs","sharedHistOnly","propagate","skip","sharedHist","linked","rel","shared","attachDoc","setDirectionClass","directionChanged","History","undone","undoDepth","lastModTime","lastSelTime","lastOp","lastSelOp","lastOrigin","lastSelOrigin","generation","maxGeneration","historyChangeFromChange","histChange","attachLocalSpans","clearSelectionEvents","lastChangeEvent","hist","addChangeToHistory","selAfter","opId","history","historyEventDelay","pushSelectionToHistory","selectionEventCanBeMerged","addSelectionToHistory","clearRedo","dest","existing","removeClearedSpans","explicitlyCleared","getOldSpans","mergeOldSpans","stretched","oldCur","stretchCur","copyHistoryArray","newGroup","instantiateSel","newChanges","extendRange","posBefore","extendSelection","setSelection","extendSelections","heads","replaceOneSelection","setSimpleSelection","filterSelectionChange","setSelectionReplaceHistory","setSelectionNoUndo","NaN","setSelectionInner","skipAtomicInSelection","reCheckSelection","mayClear","newAnchor","skipAtomic","newHead","skipAtomicInner","oldPos","preventCursorLeft","selectLeft","preventCursorRight","selectRight","atomic","near","movePos","far","cantEdit","selectAll","filterChange","canceled","cancel","makeChange","ignoreReadOnly","suppressEdits","makeChangeInner","makeChangeSingleDoc","rebased","rebaseHist","makeChangeFromHistory","allowSelectionOnly","suppress","antiChanges","returned","shiftDoc","distance","removed","makeChangeSingleDocInEditor","recomputeMaxLength","checkWidthStart","changesHandler","changeHandler","replaceRange","splitLines","rebaseHistSelSingle","rebaseHistArray","sub","ok","copied","changeLine","handle","changeType","LeafChunk","BranchChunk","removeInner","insertInner","iterN","remaining","leaf","maybeSpill","me","sibling","myIndex","used","LineWidget","opt","adjustScrollWhenAboveVisible","addLineWidget","insertAt","aboveVisible","this$1","oldH","nextMarkerId","TextMarker","markText","markTextShared","replacedWith","addToHistory","curLine","clearOnEnter","clearHistory","withOp","visual","dHeight","SharedTextMarker","cloneNode","isParent","findSharedMarkers","findMarks","copySharedMarkers","mFrom","mTo","subMark","detachSharedMarkers","subMarker","nextDocId","Doc","lineSep","cleanGeneration","getValue","lineSeparator","setValue","getRange","getLineHandle","getLineNumber","getLineHandleVisualStart","lineCount","listSelections","setCursor","extendSelectionsBy","setSelections","addSelection","getSelections","replaceSelection","dup","replaceSelections","newSel","undo","redo","undoSelection","redoSelection","setExtending","getExtending","historySize","markClean","changeGeneration","forceSplit","isClean","gen","getHistory","setHistory","histData","setGutterMarker","gutterID","clearGutter","lineInfo","addLineClass","where","removeLineClass","removeLineWidget","setBookmark","realOpts","findMarksAt","getAllMarks","posFromIndex","sepSize","indexFromPos","copyHistory","linkedDoc","unlinkDoc","CodeMirror","splitIds","iterLinkedDocs","getEditor","setDirection","eachLine","lastDrop","onDrop","clearDragCursor","files","dataTransfer","isReadOnly","FileReader","File","read","markAsReadAndPasteIfAllFilesAreRead","readTextFromFile","file","allowDropFileTypes","reader","onerror","onload","readAsText","text$1","getData","selected","onDragStart","setData","effectAllowed","setDragImage","img","src","_top","onDragOver","frag","dragCursor","forEachCodeMirror","getElementsByClassName","byClass","editors","globalsRegistered","ensureGlobalHandlers","registerGlobalHandlers","resizeTimer","onResize","setSize","keyNames","fromCharCode","keyMap","normalizeKeyName","alt","ctrl","cmd","mod","normalizeKeyMap","keymap","keyname","lookupKey","getKeyMap","fallthrough","isModifierKey","keyCode","addModifierNames","noShift","altKey","metaKey","shiftKey","keyName","altGraphKey","deleteNearSelection","compute","kill","toKill","replaced","moveCharLogically","moveLogically","endOfLine","visually","prep","targetTop","moveVisually","bidi","mv","getWrappedLineExtent","moveInStorageOrder","searchInVisualLine","getRes","res","nextCh","basic","pcDefault","emacsy","macDefault","commands","singleSelection","killLine","deleteLine","delLineLeft","delWrappedLineLeft","delWrappedLineRight","rightPos","goDocStart","goDocEnd","goLineStart","goLineStartSmart","lineStartSmart","goLineEnd","lineEnd","goLineRight","goLineLeft","goLineLeftSmart","goLineUp","moveV","goLineDown","goPageUp","goPageDown","goCharLeft","moveH","goCharRight","goColumnLeft","goColumnRight","goWordLeft","goGroupRight","goGroupLeft","goWordRight","delCharBefore","deleteH","delCharAfter","delWordBefore","delWordAfter","delGroupBefore","delGroupAfter","indentAuto","indentSelection","indentMore","indentLess","insertTab","insertSoftTab","spaces","defaultTab","execCommand","transposeChars","newlineAndIndent","sels","indentLine","openLine","toggleOverwrite","firstNonWS","inWS","doHandleBinding","bound","dropShift","ensurePolled","prevShift","lookupKeyForEditor","keyMaps","extraKeys","stopSeq","dispatchKey","seq","keySeq","dispatchKeyInner","handleKeyBinding","motion","handleCharBinding","lastStoppedKey","onKeyDown","getField","handled","showCrossHair","up","onKeyUp","onKeyPress","charCode","lastClick","lastDoubleClick","DOUBLECLICK_DELAY","PastClick","clickRepeat","now","compare","onMouseDown","supportsTouch","clickInGutter","repeat","selectingText","handleMappedButton","leftButtonDown","onContextMenu","configureMouse","option","unit","addNew","moveOnDrag","contained","behavior","dragDrop","leftButtonStartDrag","leftButtonSelect","moved","dragEnd","mouseMove","dragStart","preventScroll","e2","rangeForUnit","findWordAt","ourRange","ourIndex","startSel","lastPos","extendTo","startCol","posCol","leftPos","oldRange","ranges$1","bidiSimplify","editorSize","counter","curCount","move","buttons","anchorLine","boundary","headIndex","usePart","gutterEvent","prevent","mX","mY","touches","lineBox","contextMenuInGutter","themeChanged","theme","Init","defaults","optionHandlers","defineOptions","deflt","notOnInit","defineOption","newBreaks","getInputField","spellcheck","autocorrect","autocapitalize","detach","attach","wrappingChanged","integer","blur","readOnlyChanged","screenReaderLabelChanged","dragDropChanged","resetPosition","funcs","dragFunctions","toggle","enter","over","leave","drop","inputStyles","inputStyle","pasteIncoming","cutIncoming","autofocus","registerEventHandlers","finishInit","initHooks","textRendering","word","touchFinished","prevTouch","finishTouch","isMouseLikeTouchEvent","touch","radiusX","radiusY","farAway","pageX","pageY","inp","how","aggressive","indent","curSpace","curSpaceString","indentUnit","indentString","indentWithTabs","pos$1","defineInitHook","lastCopied","setLastCopied","newLastCopied","applyTextInput","inserted","deleted","recent","paste","textLines","multiPaste","pasteLinesPerSelection","lineWise","changeEvent","triggerElectric","handlePaste","pasted","clipboardData","disableInput","electricChars","smartIndent","getModeAt","electricInput","copyableRanges","lineRange","disableBrowserMagic","field","hiddenTextarea","border","addEditorMethods","helpers","setOption","getDoc","addKeyMap","removeKeyMap","addOverlay","modeSpec","removeOverlay","newRanges","getTokenAt","getLineTokens","getTokenTypeAt","getHelper","getHelpers","help","_global","getStateAfter","defaultTextHeight","getViewport","addWidget","vspace","hspace","triggerOnKeyDown","triggerOnKeyPress","triggerOnKeyUp","triggerOnMouseDown","findPosH","amount","hitSide","rtlMoveVisually","findPosV","goalColumn","goals","headPos","startChar","check","scrollTo","getScrollInfo","interpret","swapDoc","phrase","phraseText","phrases","getScrollerElement","getGutterElement","registerHelper","registerGlobalHelper","predicate","origDir","lineDir","findNextLine","moveOnce","boundToLine","astral","sawType","pageSize","moveAmount","ContentEditableInput","lastAnchorNode","lastAnchorOffset","lastFocusNode","lastFocusOffset","polling","composing","gracePeriod","readDOMTimeout","posToDOM","isInGutter","scan","badPos","bad","domTextBetween","closing","extraLinebreak","recognizeMarker","close","addText","walk","cmText","markerID","isBlock","textContent","nodeValue","domToPos","lineNode","locateNodeInLineView","textNode","topNode","curNode","previousSibling","dist$1","belongsToInput","onCopyCut","lineWiseCopyCut","clearData","kludge","hadFocus","showPrimarySelection","contentEditable","updateFromDOM","readFromDOMSoon","forceCompositionEnd","showMultipleSelections","curAnchor","curFocus","rng","rangeCount","getRangeAt","startGracePeriod","rememberSelection","selectionInEditor","commonAncestorContainer","poll","pollSelection","pollInterval","pollContent","fromIndex","fromNode","toNode","toIndex","newText","oldText","cutFront","cutEnd","oldTop","maxCutFront","newBot","oldBot","maxCutEnd","chFrom","chTo","TextareaInput","prevInput","pollingFast","fromTextArea","textarea","tabindex","placeholder","realSubmit","form","leaveSubmitMethodAlone","submit","wrappedSubmit","getTextArea","toTextArea","addLegacyProps","cmpPos","createField","prepareCopyCut","fastPoll","dispatchEvent","Event","_display","moveInputWithCursor","wrapOff","lineOff","teTop","teLeft","drawn","contextMenuPending","slowPoll","missed","same","resetSelectionOnContextMenu","oldScrollY","oldCSS","oldWrapperCSS","wrapperBox","offsetParent","scrollY","rehide","detectingSelectAll","prepareSelectAllHack","mouseup","extval","disabled","dontDelegate","defineExtension","func","defineDocExtension","version","factory","global","noGlobal","getProto","flat","class2type","hasOwn","fnToString","ObjectFunctionString","support","isFunction","item","isWindow","preservedScriptAttributes","nonce","noModule","DOMEval","script","toType","jQuery","fn","isArrayLike","jquery","toArray","num","pushStack","elems","ret","merge","prevObject","each","callback","elem","eq","even","grep","_elem","odd","copyIsArray","clone","deep","isPlainObject","expando","random","isReady","msg","noop","proto","Ctor","isEmptyObject","globalEval","makeArray","results","inArray","second","callbackExpect","arg","guid","Sizzle","Expr","getText","isXML","tokenize","compile","outermostContext","sortInput","hasDuplicate","setDocument","docElem","documentIsHTML","rbuggyQSA","rbuggyMatches","preferredDoc","dirruns","classCache","createCache","tokenCache","compilerCache","nonnativeSelectorCache","sortOrder","pushNative","booleans","whitespace","pseudos","rwhitespace","rtrim","rcomma","rcombinators","rdescend","rpseudo","ridentifier","matchExpr","rhtml","rinputs","rheader","rnative","rquickExpr","rsibling","runescape","funescape","escape","nonHex","high","rcssescape","fcssescape","asCodePoint","unloadHandler","inDisabledFieldset","addCombinator","els","seed","nid","groups","newSelector","newContext","getElementById","getElementsByTagName","qsa","testContext","toSelector","qsaError","cacheLength","markFunction","assert","el","addHandle","attrs","attrHandle","siblingCheck","sourceIndex","createInputPseudo","createButtonPseudo","createDisabledPseudo","isDisabled","createPositionalPseudo","argument","matchIndexes","namespace","namespaceURI","hasCompare","subWindow","defaultView","createComment","getById","getElementsByName","attrId","getAttributeNode","tmp","innerHTML","matchesSelector","webkitMatchesSelector","mozMatchesSelector","oMatchesSelector","msMatchesSelector","disconnectedMatch","compareDocumentPosition","adown","bup","sortDetached","aup","ap","bp","expr","specified","uniqueSort","duplicates","detectDuplicates","sortStable","selectors","createPseudo","relative","preFilter","excess","unquoted","nodeNameSelector","operator","what","_argument","simple","forward","ofType","_context","xml","uniqueCache","outerCache","nodeIndex","useCache","uniqueID","pseudo","setFilters","idx","matched","matcher","unmatched","lang","elemLang","hash","location","href","checked","selectedIndex","_matchIndexes","radio","checkbox","password","image","combinator","checkNonElements","doneName","oldCache","newCache","elementMatcher","matchers","condense","newUnmatched","mapped","setMatcher","postFilter","postFinder","postSelector","temp","preMap","postMap","preexisting","multipleContexts","matcherIn","matcherOut","matcherFromTokens","checkContext","leadingRelative","implicitRelative","matchContext","matchAnyContext","filters","parseOnly","soFar","preFilters","cached","setMatchers","elementMatchers","bySet","byElement","superMatcher","outermost","matchedCount","setMatched","contextBackup","dirrunsUnique","matcherFromGroupMatchers","compiled","_name","defaultValue","unique","isXMLDoc","escapeSelector","until","truncate","is","siblings","rneedsContext","needsContext","rsingleTag","winnow","qualifier","not","rootjQuery","root","parseHTML","ready","rparentsprev","guaranteedUnique","contents","prevAll","addBack","parents","parentsUntil","nextAll","nextUntil","prevUntil","contentDocument","rnothtmlwhite","Identity","Thrower","ex","adoptValue","noValue","promise","fail","Callbacks","flag","createOptions","firing","memory","fired","locked","queue","firingIndex","fire","once","stopOnFalse","disable","lock","fireWith","Deferred","tuples","always","deferred","pipe","fns","newDefer","tuple","progress","notify","onFulfilled","onRejected","onProgress","maxDepth","depth","that","mightThrow","notifyWith","resolveWith","process","exceptionHook","stackTrace","rejectWith","getStackHook","stateString","when","singleValue","resolveContexts","resolveValues","updateFunc","rerrorNames","stack","warn","readyException","readyList","completed","catch","readyWait","wait","access","chainable","emptyGet","raw","bulk","_key","rmsPrefix","rdashAlpha","fcamelCase","_all","letter","camelCase","acceptData","owner","Data","uid","hasData","dataPriv","dataUser","rbrace","rmultiDash","dataAttr","JSON","parse","removeData","_data","_removeData","dequeue","startLength","hooks","_queueHooks","setter","clearQueue","defer","pnum","rcssNum","cssExpand","isAttached","composed","getRootNode","isHiddenWithinTree","adjustCSS","valueParts","tween","adjusted","scale","maxIterations","currentValue","initial","cssNumber","initialInUnit","defaultDisplayMap","getDefaultDisplay","showHide","show","hide","rcheckableType","rtagName","rscriptType","checkClone","noCloneChecked","wrapMap","thead","tr","td","_default","getAll","setGlobalEval","refElements","tbody","tfoot","colgroup","caption","optgroup","buildFragment","scripts","ignored","attached","htmlPrefilter","rtypenamespace","returnTrue","returnFalse","expectSync","err","safeActiveElement","one","origFn","leverageNative","notAsync","isTrigger","delegateType","trigger","handleObjIn","eventHandle","handleObj","namespaces","origType","elemData","triggered","dispatch","bindType","delegateCount","setup","mappedTypes","origCount","teardown","removeEvent","nativeEvent","handlerQueue","fix","delegateTarget","preDispatch","isPropagationStopped","currentTarget","isImmediatePropagationStopped","rnamespace","postDispatch","matchedHandlers","matchedSelectors","addProp","hook","originalEvent","writable","noBubble","click","beforeunload","isDefaultPrevented","relatedTarget","timeStamp","isSimulated","bubbles","cancelable","changedTouches","eventPhase","offsetX","offsetY","pointerId","pointerType","screenX","screenY","targetTouches","toElement","mouseenter","mouseleave","pointerenter","pointerleave","orig","related","rnoInnerhtml","rchecked","rcleanScript","manipulationTarget","disableScript","restoreScript","cloneCopyEvent","udataOld","udataCur","fixInput","domManip","collection","hasScripts","iNoClone","valueIsFunction","html","_evalUrl","keepData","cleanData","dataAndEvents","deepDataAndEvents","srcElements","destElements","inPage","append","prepend","replaceWith","appendTo","prependTo","insertAfter","replaceAll","original","rnumnonpx","getStyles","opener","swap","rboxStyle","curCSS","computed","maxWidth","getPropertyValue","pixelBoxStyles","addGetHookIf","conditionFn","hookFn","computeStyleTests","divStyle","pixelPositionVal","reliableMarginLeftVal","roundPixelMeasures","pixelBoxStylesVal","boxSizingReliableVal","scrollboxSizeVal","parseFloat","reliableTrDimensionsVal","backgroundClip","clearCloneStyle","boxSizingReliable","pixelPosition","reliableMarginLeft","scrollboxSize","reliableTrDimensions","table","trChild","trStyle","borderTopWidth","borderBottomWidth","cssPrefixes","emptyStyle","vendorProps","finalPropName","final","cssProps","capName","vendorPropName","rdisplayswap","rcustomProp","cssShow","cssNormalTransform","letterSpacing","fontWeight","setPositiveNumber","subtract","boxModelAdjustment","dimension","isBorderBox","computedVal","extra","getWidthOrHeight","valueIsBorderBox","offsetProp","Tween","easing","cssHooks","opacity","origName","isCustomProp","setProperty","isFinite","scrollboxSizeBuggy","prefix","suffix","expand","expanded","propHooks","run","percent","eased","duration","fx","linear","swing","cos","PI","fxNow","inProgress","rfxtypes","rrun","schedule","requestAnimationFrame","interval","tick","createFxNow","genFx","includeWidth","createTween","animation","Animation","tweeners","stopped","prefilters","currentTime","startTime","tweens","opts","specialEasing","originalProperties","originalOptions","gotoEnd","propFilter","complete","timer","anim","tweener","oldfire","propTween","restoreDisplay","isBox","dataShow","unqueued","overflow","overflowX","overflowY","prefilter","speed","speeds","fadeTo","animate","optall","doAnimation","stopQueue","timers","cssFn","slideDown","slideUp","slideToggle","fadeIn","fadeOut","fadeToggle","slow","fast","timeout","checkOn","optSelected","radioValue","boolHook","removeAttr","nType","attrHooks","bool","attrNames","lowercaseName","rfocusable","rclickable","stripAndCollapse","getClass","classesToArray","removeProp","propFix","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","rbracket","rCRLF","rsubmitterTypes","rsubmittable","buildParams","traditional","param","valueOrFunction","encodeURIComponent","serialize","serializeArray","r20","rhash","rantiCache","rheaders","rnoContent","rprotocol","transports","allTypes","originAnchor","addToPrefiltersOrTransports","structure","dataTypeExpression","dataType","dataTypes","inspectPrefiltersOrTransports","jqXHR","inspected","seekingTransport","inspect","prefilterOrFactory","dataTypeOrTransport","ajaxExtend","flatOptions","ajaxSettings","lastModified","etag","url","isLocal","protocol","processData","async","contentType","accepts","json","responseFields","converters","ajaxSetup","settings","ajaxPrefilter","ajaxTransport","ajax","transport","cacheURL","responseHeadersString","responseHeaders","timeoutTimer","urlAnchor","fireGlobals","uncached","callbackContext","globalEventContext","completeDeferred","statusCode","requestHeaders","requestHeadersNames","strAbort","getResponseHeader","getAllResponseHeaders","setRequestHeader","overrideMimeType","mimeType","status","abort","statusText","finalText","crossDomain","hasContent","ifModified","headers","beforeSend","success","send","nativeStatusText","responses","isSuccess","response","modified","ct","finalDataType","firstDataType","ajaxHandleResponses","conv2","conv","dataFilter","throws","ajaxConvert","getJSON","getScript","wrapAll","firstElementChild","wrapInner","htmlIsFunction","unwrap","xhr","XMLHttpRequest","xhrSuccessStatus","xhrSupported","cors","errorCallback","open","username","xhrFields","onabort","ontimeout","onreadystatechange","responseType","responseText","binary","scriptAttrs","charset","scriptCharset","evt","oldCallbacks","rjsonp","jsonp","jsonpCallback","originalSettings","callbackName","overwritten","responseContainer","jsonProp","createHTMLDocument","implementation","keepScripts","parsed","params","animated","setOffset","curPosition","curLeft","curCSSTop","curTop","curOffset","curCSSLeft","curElem","using","win","parentOffset","Height","Width","defaultExtra","funcName","unbind","undelegate","hover","fnOver","fnOut","proxy","holdReady","hold","parseJSON","isNumeric","_jQuery","_$","$","noConflict","Rails","linkClickSelector","buttonClickSelector","exclude","inputChangeSelector","formSubmitSelector","formInputClickSelector","formDisableSelector","formEnableSelector","fileInputSelector","linkDisableSelector","buttonDisableSelector","loadCSPNonce","cspNonce","csrfParam","csrfToken","meta","CSRFProtection","refreshCSRFTokens","CustomEvent","createEvent","initCustomEvent","stopEverything","eventType","AcceptHeaders","createXHR","prepareOptions","processResponse","OPENED","accept","withCredentials","DONE","parser","isCrossDomain","serializeElement","additionalParam","inputs","formElements","allowAction","handleConfirm","confirm","answer","disableFormElement","disableFormElements","disableLinkElement","enableFormElement","enableFormElements","enableLinkElement","isXhrRedirect","handleDisabledElement","enableElement","disableElement","replacement","originalText","handleMethod","formContent","link","isRemote","handleRemote","enctype","FormData","formSubmitButtonClick","formNoValidate","preventInsignificantClick","insignificantMetaClick","rails","_rails_loaded","createConsumer","HAS_TEMPLATE_SUPPORT","HAS_RANGE_SUPPORT","template","createFragmentFromTemplate","selectNode","createContextualFragment","createFragmentFromRange","createFragmentFromWrap","compareNodeNames","fromEl","toEl","fromCodeStart","toCodeStart","fromNodeName","toNodeName","syncBooleanAttrProp","specialElHandlers","OPTION","parentName","INPUT","TEXTAREA","newValue","oldValue","SELECT","curChild","defaultGetNodeKey","morphAttrs","toNodeHtml","getNodeKey","onBeforeNodeAdded","onNodeAdded","onBeforeElUpdated","onElUpdated","onBeforeNodeDiscarded","onNodeDiscarded","onBeforeElChildrenUpdated","childrenOnly","fromNodesLookup","keyedRemovalList","addKeyedRemoval","walkDiscardedChildNodes","skipKeyedNodes","removeNode","handleNodeAdded","unmatchedFromEl","morphEl","toElKey","curToNodeKey","curFromNodeKey","fromNextSibling","toNextSibling","matchingFromEl","curToNodeChild","curFromNodeChild","isSameNode","curFromNodeType","isCompatible","onBeforeNodeAddedResult","actualize","cleanupFromEl","specialElHandler","morphChildren","indexTree","morphedNode","morphedNodeType","toNodeType","nextChild","moveChildren","createElementNS","elToRemove","morphdomFactory","attrName","attrNamespaceURI","attrValue","toNodeAttrs","localName","getAttributeNS","setAttributeNS","fromNodeAttrs","hasAttributeNS","removeAttributeNS","inputTags","mutableTags","textInputTypes","color","date","datetime","email","month","number","tel","week","assignFocus","focusElement","getClassNames","names","processElements","shouldMorphCallbacks","isEqualNode","permanentAttributeName","permanent","ignore","attribute","didMorphCallbacks","shouldMorph","includes","didMorph","DOMOperations","focusSelector","insertAdjacentHTML","graft","innerHtml","insertAdjacentHtml","insertAdjacentText","morph","ordinal","outerHtml","outerHTML","addCssClass","classList","removeCssClass","setDatasetProperty","dataset","setStyle","setStyles","entries","clearStorage","storage","sessionStorage","localStorage","go","pushState","removeStorageItem","removeItem","replaceState","setCookie","cookie","setFocus","setStorageItem","setItem","consoleLog","log","notification","Notification","requestPermission","permission","playSound","canplaythrough","audio","play","ended","perform","operations","emitMissingElementWarnings","xpath","evaluate","XPathResult","FIRST_ORDERED_NODE_TYPE","singleNodeValue","Audio","unlockAudio","createChannel","consumer","subscriptions","received","cableReady","CableReady","Function","styleSheet","u","includeContainer","documentOrder","isTabbable","isFocusable","activateTrap","pause","deactivateTrap","unpause","returnFocusOnDeactivate","escapeDeactivates","firstTabbableNode","lastTabbableNode","nodeFocusedBeforeActivation","mostRecentlyFocusedNode","paused","activate","onActivate","deactivate","onDeactivate","returnFocus","capture","passive","clickOutsideDeactivates","allowOutsideClick","Document","ctx","emit","E","C","HTMLElement","z","O","S","M","borderLeftWidth","I","L","A","N","F","InstallTrigger","T","TinyEmitter","B","D","q","R","V","H","K","W","U","requires","requiresIfExists","J","G","placement","modifiers","strategy","X","Y","defaultModifiers","defaultOptions","orderedModifiers","modifiersData","reference","popper","setOptions","scrollParents","phase","enabled","effect","instance","destroy","onFirstUpdate","Z","Q","ee","oe","ne","ae","popperRect","offsets","gpuAcceleration","adaptive","devicePixelRatio","transform","re","se","Boolean","ce","de","innerWidth","ue","ge","ve","le","rootBoundary","elementContext","altBoundary","fe","ye","je","pe","resize","popperOffsets","arrow","_skip","fallbackPlacements","flipVariations","every","mainAxis","altAxis","tether","tetherOffset","preventOverflow","referenceClippingOffsets","popperEscapeOffsets","isReferenceHidden","hasPopperEscaped","he","globalThis","be","convert","fromCodePoint","toCodePoint","folder","Image","we","ke","categories","emoji","category","variations","xe","Ee","render","showPreview","hidePreview","Ce","ze","Oe","getOwnPropertySymbols","getOwnPropertyDescriptor","Se","return","Me","Ie","Pe","Le","performance","Ae","Ne","Fe","Te","Be","De","qe","Re","Ve","He","FontAwesomeConfig","Ke","familyPrefix","replacementClass","autoReplaceSvg","autoAddCss","autoA11y","searchPseudoElements","observeMutations","mutateApproach","keepOriginalSource","measurePerformance","showMissingIcons","We","Ue","___FONT_AWESOME___","shims","Je","Ge","Xe","rotate","flipX","flipY","Ye","Ze","Qe","$e","eo","containerWidth","iconWidth","path","oo","fill","ao","icons","main","mask","iconName","symbol","watchable","class","role","xmlns","viewBox","icon","maskUnits","maskContentUnits","ro","skipHooks","addPack","mo","so","co","uo","vo","lo","fo","attributeType","repeatCount","dur","yo","jo","po","xo","ho","abstract","bo","ko","cx","cy","wo","_pullDefinitions","Eo","focusable","_o","Co","zo","Oo","So","Mo","Io","Po","Lo","Ao","No","Fo","To","Bo","getItem","Do","showVariants","emojiButton","onEmojiHover","onEmojiLeave","onEmojiClick","showRecents","stringify","recentsCount","qo","emojis","emojiVersion","Ro","Vo","i18n","focusedEmojiIndex","emojisPerRow","emojiData","setFocusedEmoji","searchContainer","searchField","searchIcon","onClearSearch","resultsContainer","handleResultsKeydown","notFound","Ho","getEmoji","popup","Ko","recents","smileys","people","animals","food","activities","travel","objects","symbols","flags","Wo","Uo","activeButton","setActiveButton","Jo","Go","currentCategory","focusedIndex","handleKeyDown","highlightCategory","focusedEmoji","currentEmojiCount","showCategoryButtons","categoryButtons","getEmojiCount","addCategory","selectCategory","headerOffsets","currentCategoryEl","Xo","autoHide","autoFocusSearch","showSearch","rows","emojiSize","publicEvents","pickerVisible","rootElement","onDocumentClick","onDocumentKeydown","buildPicker","pickerEl","focusTrap","initialFocus","hidePicker","destroyPicker","hideInProgress","destroyTimeout","showPicker","matchMedia","togglePicker","adapters","logger","WebSocket","_adapters$logger","_len","messages","_typeof","classCallCheck","Constructor","createClass","defineProperties","protoProps","staticProps","getTime","secondsSince","clamp","ConnectionMonitor","connection","visibilityDidChange","reconnectAttempts","isRunning","startedAt","stoppedAt","startPolling","getPollInterval","stopPolling","recordPing","pingedAt","recordConnect","disconnectedAt","recordDisconnect","pollTimeout","reconnectIfStale","_constructor$pollInte","multiplier","connectionIsStale","staleThreshold","disconnectedRecently","reopen","_this2","visibilityState","isOpen","INTERNAL","message_types","welcome","ping","confirmation","rejection","disconnect_reasons","unauthorized","invalid_request","server_restart","default_mount_path","protocols","supportedProtocols","Connection","monitor","disconnected","webSocket","isActive","getState","uninstallEventHandlers","installEventHandlers","allowReconnect","reopenDelay","getProtocol","isState","isProtocolSupported","states","_JSON$parse","reason","reconnect","reload","notifyAll","willAttemptReconnect","Subscription","mixin","command","unsubscribe","Subscriptions","channelName","channel","subscription","ensureActiveConnection","sendCommand","forget","_this3","_len2","_key2","Consumer","_url","createWebSocketURL","getConfig","countdown","starter","innerText","PacketKind","__makeTemplateObject","cooked","AnsiUp","VERSION","setup_palettes","_use_classes","bold","fg","bg","_buffer","_url_whitelist","ansi_colors","rgb","class_name","palette_256","palette","rec","levels","grey_level","gry","escape_txt_for_html","append_buffer","get_next_packet","pkt","kind","EOS","Text","Incomplete","next_char","ESC","_csi_regex","rgx","Unknown","SGR","rpos","_osc_st","rgxG","match_1","match_2","_osc_regex","OSCURL","ansi_to_html","blocks","packet","transform_to_html","with_state","process_ansi","process_hyperlink","sgr_cmds","sgr_cmd_str","is_foreground","mode_cmd","palette_index","class_string","style_string","tmplObj","subst","wsrgx","txt2","default","confetti","config","_Object$assign","backwardPatch","elementCount","colors","angle","spread","startVelocity","decay","dragFriction","stagger","createElements","fettis","physics","randomPhysics","willChange","radAngle","radSpread","wobble","wobbleSpeed","velocity","angle2D","angle3D","tiltAngle","tiltAngleSpeed","elapsed","fetti","sin","_fetti$physics","updateFetti","createCommonjsModule","sparkMd5","hex_chr","md5cycle","md5blk","md5blks","md5blk_array","md51","hi","substring","md51_array","subarray","Uint8Array","rhex","hex","toUtf8","unescape","utf8Str2ArrayBuffer","returnUInt8Array","buff","ArrayBuffer","arrayBuffer2Utf8Str","concatenateArrayBuffers","byteLength","buffer","hexToBinaryString","bytes","SparkMD5","targetArray","sourceArray","appendBinary","_buff","_length","_hash","_finish","setState","hashBinary","fileSlice","mozSlice","webkitSlice","FileChecksum","chunkCount","chunkIndex","md5Buffer","fileReader","fileReaderDidLoad","fileReaderDidError","readNextChunk","binaryDigest","base64digest","btoa","readAsArrayBuffer","getMetaValue","findElements","toArray$1","eventInit","initEvent","BlobRecord","checksum","filename","content_type","byte_size","requestDidLoad","requestDidError","blob","direct_upload","directUploadData","toJSON","_xhr","BlobUpload","_blob$directUploadDat","DirectUpload","upload","DirectUploadController","directUpload","hiddenInput","insertAdjacentElement","dispatchError","signed_id","loaded","total","alert","uploadRequestDidProgress","inputSelector","DirectUploadsController","controllers","createDirectUploadControllers","startNextController","processingAttribute","submitButtonsByForm","didClick","didSubmitForm","didSubmitRemoteElement","handleFormSubmissionEvent","enable","submitForm","autostart","ActiveStorage","channels","require","webpackEmptyContext","req","Popper","_interopDefaultLegacy","$__default","Popper__default","_defineProperties","_createClass","_extends","_inheritsLoose","subClass","superClass","TRANSITION_END","MAX_UID","MILLISECONDS_MULTIPLIER","getSpecialTransitionEndEvent","transitionEndEmulator","called","Util","triggerTransitionEnd","setTransitionEndSupport","emulateTransitionEnd","getUID","getSelectorFromElement","hrefAttr","getTransitionDurationFromElement","transitionDuration","transitionDelay","floatTransitionDuration","floatTransitionDelay","reflow","supportsTransitionEnd","isElement","typeCheckConfig","componentName","configTypes","expectedTypes","valueType","findShadowRoot","attachShadow","ShadowRoot","jQueryDetection","minMajor","ltMajor","minMinor","minPatch","maxMajor","NAME","DATA_KEY","EVENT_KEY","DATA_API_KEY","JQUERY_NO_CONFLICT","SELECTOR_DISMISS","EVENT_CLOSE","EVENT_CLOSED","EVENT_CLICK_DATA_API","CLASS_NAME_ALERT","CLASS_NAME_FADE","CLASS_NAME_SHOW","Alert","_element","_proto","_getRootElement","_triggerCloseEvent","_removeElement","dispose","closeEvent","_destroyElement","_jQueryInterface","$element","_handleDismiss","alertInstance","NAME$1","VERSION$1","DATA_KEY$1","EVENT_KEY$1","DATA_API_KEY$1","JQUERY_NO_CONFLICT$1","CLASS_NAME_ACTIVE","CLASS_NAME_BUTTON","CLASS_NAME_FOCUS","SELECTOR_DATA_TOGGLE_CARROT","SELECTOR_DATA_TOGGLES","SELECTOR_DATA_TOGGLE","SELECTOR_DATA_TOGGLES_BUTTONS","SELECTOR_INPUT","SELECTOR_ACTIVE","SELECTOR_BUTTON","EVENT_CLICK_DATA_API$1","EVENT_FOCUS_BLUR_DATA_API","EVENT_LOAD_DATA_API","Button","shouldAvoidTriggerChange","triggerChangeEvent","addAriaPressed","avoidTriggerChange","initialButton","inputBtn","_button","NAME$2","VERSION$2","DATA_KEY$2","EVENT_KEY$2","DATA_API_KEY$2","JQUERY_NO_CONFLICT$2","ARROW_LEFT_KEYCODE","ARROW_RIGHT_KEYCODE","TOUCHEVENT_COMPAT_WAIT","SWIPE_THRESHOLD","Default","keyboard","slide","DefaultType","DIRECTION_NEXT","DIRECTION_PREV","DIRECTION_LEFT","DIRECTION_RIGHT","EVENT_SLIDE","EVENT_SLID","EVENT_KEYDOWN","EVENT_MOUSEENTER","EVENT_MOUSELEAVE","EVENT_TOUCHSTART","EVENT_TOUCHMOVE","EVENT_TOUCHEND","EVENT_POINTERDOWN","EVENT_POINTERUP","EVENT_DRAG_START","EVENT_LOAD_DATA_API$1","EVENT_CLICK_DATA_API$2","CLASS_NAME_CAROUSEL","CLASS_NAME_ACTIVE$1","CLASS_NAME_SLIDE","CLASS_NAME_RIGHT","CLASS_NAME_LEFT","CLASS_NAME_NEXT","CLASS_NAME_PREV","CLASS_NAME_POINTER_EVENT","SELECTOR_ACTIVE$1","SELECTOR_ACTIVE_ITEM","SELECTOR_ITEM","SELECTOR_ITEM_IMG","SELECTOR_NEXT_PREV","SELECTOR_INDICATORS","SELECTOR_DATA_SLIDE","SELECTOR_DATA_RIDE","PointerType","TOUCH","PEN","Carousel","_items","_interval","_activeElement","_isPaused","_isSliding","touchTimeout","touchStartX","touchDeltaX","_config","_getConfig","_indicatorsElement","_touchSupported","_pointerEvent","PointerEvent","MSPointerEvent","_addEventListeners","_slide","nextWhenVisible","cycle","_updateInterval","activeIndex","_getItemIndex","_handleSwipe","absDeltax","_keydown","_addTouchEventListeners","_getItemByDirection","isNextDirection","isPrevDirection","lastItemIndex","itemIndex","_triggerSlideEvent","eventDirectionName","targetIndex","slideEvent","_setActiveIndicatorElement","indicators","nextIndicator","elementInterval","defaultInterval","directionalClassName","orderClassName","_this4","activeElementIndex","nextElement","nextElementIndex","isCycling","slidEvent","ride","_dataApiClickHandler","slideIndex","carousels","$carousel","NAME$3","VERSION$3","DATA_KEY$3","EVENT_KEY$3","DATA_API_KEY$3","JQUERY_NO_CONFLICT$3","Default$1","DefaultType$1","EVENT_SHOW","EVENT_SHOWN","EVENT_HIDE","EVENT_HIDDEN","EVENT_CLICK_DATA_API$3","CLASS_NAME_SHOW$1","CLASS_NAME_COLLAPSE","CLASS_NAME_COLLAPSING","CLASS_NAME_COLLAPSED","DIMENSION_WIDTH","DIMENSION_HEIGHT","SELECTOR_ACTIVES","SELECTOR_DATA_TOGGLE$1","Collapse","_isTransitioning","_triggerArray","toggleList","filterElement","foundElem","_selector","_parent","_getParent","_addAriaAndCollapsedClass","actives","activesData","startEvent","_getDimension","setTransitioning","scrollSize","triggerArrayLength","isTransitioning","_getTargetFromElement","triggerArray","$trigger","$target","NAME$4","VERSION$4","DATA_KEY$4","EVENT_KEY$4","DATA_API_KEY$4","JQUERY_NO_CONFLICT$4","ESCAPE_KEYCODE","SPACE_KEYCODE","TAB_KEYCODE","ARROW_UP_KEYCODE","ARROW_DOWN_KEYCODE","RIGHT_MOUSE_BUTTON_WHICH","REGEXP_KEYDOWN","EVENT_HIDE$1","EVENT_HIDDEN$1","EVENT_SHOW$1","EVENT_SHOWN$1","EVENT_CLICK","EVENT_CLICK_DATA_API$4","EVENT_KEYDOWN_DATA_API","EVENT_KEYUP_DATA_API","CLASS_NAME_DISABLED","CLASS_NAME_SHOW$2","CLASS_NAME_DROPUP","CLASS_NAME_DROPRIGHT","CLASS_NAME_DROPLEFT","CLASS_NAME_MENURIGHT","CLASS_NAME_POSITION_STATIC","SELECTOR_DATA_TOGGLE$2","SELECTOR_FORM_CHILD","SELECTOR_MENU","SELECTOR_NAVBAR_NAV","SELECTOR_VISIBLE_ITEMS","PLACEMENT_TOP","PLACEMENT_TOPEND","PLACEMENT_BOTTOM","PLACEMENT_BOTTOMEND","PLACEMENT_RIGHT","PLACEMENT_LEFT","Default$2","flip","popperConfig","DefaultType$2","Dropdown","_popper","_menu","_getMenuElement","_inNavbar","_detectNavbar","_clearMenus","usePopper","showEvent","_getParentFromElement","referenceElement","_getPopperConfig","hideEvent","scheduleUpdate","_getPlacement","$parentDropdown","_getOffset","boundariesElement","applyStyle","toggles","clickEvent","dropdownMenu","_dataApiKeydownHandler","items","NAME$5","VERSION$5","DATA_KEY$5","EVENT_KEY$5","DATA_API_KEY$5","JQUERY_NO_CONFLICT$5","ESCAPE_KEYCODE$1","Default$3","backdrop","DefaultType$3","EVENT_HIDE$2","EVENT_HIDE_PREVENTED","EVENT_HIDDEN$2","EVENT_SHOW$2","EVENT_SHOWN$2","EVENT_FOCUSIN","EVENT_RESIZE","EVENT_CLICK_DISMISS","EVENT_KEYDOWN_DISMISS","EVENT_MOUSEUP_DISMISS","EVENT_MOUSEDOWN_DISMISS","EVENT_CLICK_DATA_API$5","CLASS_NAME_SCROLLABLE","CLASS_NAME_SCROLLBAR_MEASURER","CLASS_NAME_BACKDROP","CLASS_NAME_OPEN","CLASS_NAME_FADE$1","CLASS_NAME_SHOW$3","CLASS_NAME_STATIC","SELECTOR_DIALOG","SELECTOR_MODAL_BODY","SELECTOR_DATA_TOGGLE$3","SELECTOR_DATA_DISMISS","SELECTOR_FIXED_CONTENT","SELECTOR_STICKY_CONTENT","Modal","_dialog","_backdrop","_isShown","_isBodyOverflowing","_ignoreBackdropClick","_scrollbarWidth","_checkScrollbar","_setScrollbar","_adjustDialog","_setEscapeEvent","_setResizeEvent","_showBackdrop","_showElement","transition","_hideModal","htmlElement","handleUpdate","_triggerBackdropTransition","hideEventPrevented","isModalOverflowing","modalTransitionDuration","modalBody","_enforceFocus","shownEvent","transitionComplete","_this5","_this6","_this7","_this8","_resetAdjustments","_resetScrollbar","_removeBackdrop","_this9","backdropTransitionDuration","callbackRemove","_backdropTransitionDuration","_getScrollbarWidth","_this10","fixedContent","stickyContent","actualPadding","calculatedPadding","actualMargin","marginRight","calculatedMargin","scrollDiv","scrollbarWidth","_this11","uriAttrs","DefaultWhitelist","area","br","em","hr","h1","h2","h3","h4","h5","h6","li","ol","small","sup","strong","ul","SAFE_URL_PATTERN","DATA_URL_PATTERN","allowedAttribute","allowedAttributeList","regExp","attrRegex","sanitizeHtml","unsafeHtml","whiteList","sanitizeFn","createdDocument","whitelistKeys","_loop","elName","attributeList","whitelistedAttributes","NAME$6","VERSION$6","DATA_KEY$6","EVENT_KEY$6","JQUERY_NO_CONFLICT$6","CLASS_PREFIX","BSCLS_PREFIX_REGEX","DISALLOWED_ATTRIBUTES","DefaultType$4","fallbackPlacement","customClass","sanitize","AttachmentMap","AUTO","TOP","RIGHT","BOTTOM","LEFT","Default$4","HOVER_STATE_SHOW","HOVER_STATE_OUT","HIDE","HIDDEN","SHOW","SHOWN","INSERTED","CLICK","FOCUSIN","FOCUSOUT","MOUSEENTER","MOUSELEAVE","CLASS_NAME_FADE$2","CLASS_NAME_SHOW$4","SELECTOR_TOOLTIP_INNER","SELECTOR_ARROW","TRIGGER_HOVER","TRIGGER_FOCUS","TRIGGER_CLICK","TRIGGER_MANUAL","Tooltip","_isEnabled","_timeout","_hoverState","_activeTrigger","tip","_setListeners","toggleEnabled","dataKey","_getDelegateConfig","_isWithActiveTrigger","_enter","_leave","getTipElement","_hideModalHandler","isWithContent","isInTheDom","tipId","setContent","attachment","_getAttachment","addAttachmentClass","_getContainer","_fixTransition","prevHoverState","_cleanTipClass","getTitle","setElementContent","onCreate","originalPlacement","_handlePopperPlacementChange","onUpdate","eventIn","eventOut","_fixTitle","titleType","dataAttributes","$tip","tabClass","popperData","initConfigAnimation","NAME$7","VERSION$7","DATA_KEY$7","EVENT_KEY$7","JQUERY_NO_CONFLICT$7","CLASS_PREFIX$1","BSCLS_PREFIX_REGEX$1","Default$5","DefaultType$5","CLASS_NAME_FADE$3","CLASS_NAME_SHOW$5","SELECTOR_TITLE","SELECTOR_CONTENT","Event$1","Popover","_Tooltip","_getContent","NAME$8","VERSION$8","DATA_KEY$8","EVENT_KEY$8","DATA_API_KEY$6","JQUERY_NO_CONFLICT$8","Default$6","DefaultType$6","EVENT_ACTIVATE","EVENT_SCROLL","EVENT_LOAD_DATA_API$2","CLASS_NAME_DROPDOWN_ITEM","CLASS_NAME_ACTIVE$2","SELECTOR_DATA_SPY","SELECTOR_NAV_LIST_GROUP","SELECTOR_NAV_LINKS","SELECTOR_NAV_ITEMS","SELECTOR_LIST_ITEMS","SELECTOR_DROPDOWN","SELECTOR_DROPDOWN_ITEMS","SELECTOR_DROPDOWN_TOGGLE","METHOD_OFFSET","METHOD_POSITION","ScrollSpy","_scrollElement","_offsets","_targets","_activeTarget","_scrollHeight","_process","autoMethod","offsetMethod","offsetBase","_getScrollTop","_getScrollHeight","targetSelector","targetBCR","_getOffsetHeight","maxScroll","_activate","_clear","queries","$link","scrollSpys","$spy","NAME$9","VERSION$9","DATA_KEY$9","EVENT_KEY$9","DATA_API_KEY$7","JQUERY_NO_CONFLICT$9","EVENT_HIDE$3","EVENT_HIDDEN$3","EVENT_SHOW$3","EVENT_SHOWN$3","EVENT_CLICK_DATA_API$6","CLASS_NAME_DROPDOWN_MENU","CLASS_NAME_ACTIVE$3","CLASS_NAME_DISABLED$1","CLASS_NAME_FADE$4","CLASS_NAME_SHOW$6","SELECTOR_DROPDOWN$1","SELECTOR_NAV_LIST_GROUP$1","SELECTOR_ACTIVE$2","SELECTOR_ACTIVE_UL","SELECTOR_DATA_TOGGLE$4","SELECTOR_DROPDOWN_TOGGLE$1","SELECTOR_DROPDOWN_ACTIVE_CHILD","Tab","previous","listElement","itemSelector","hiddenEvent","_transitionComplete","dropdownChild","dropdownElement","dropdownToggleList","$this","NAME$a","VERSION$a","DATA_KEY$a","EVENT_KEY$a","JQUERY_NO_CONFLICT$a","EVENT_CLICK_DISMISS$1","EVENT_HIDE$4","EVENT_HIDDEN$4","EVENT_SHOW$4","EVENT_SHOWN$4","CLASS_NAME_FADE$5","CLASS_NAME_HIDE","CLASS_NAME_SHOW$7","CLASS_NAME_SHOWING","DefaultType$7","autohide","Default$7","SELECTOR_DATA_DISMISS$1","Toast","_clearTimeout","_close","Scrollspy","isBrowser","timeoutDuration","longerTimeoutBrowsers","debounce","scheduled","functionToCheck","getStyleComputedProperty","getParentNode","getScrollParent","_getStyleComputedProp","getReferenceNode","referenceNode","isIE11","MSInputMethodContext","isIE10","isIE","getOffsetParent","noOffsetParent","nextElementSibling","getRoot","findCommonOffsetParent","element1","element2","DOCUMENT_POSITION_FOLLOWING","element1root","getScroll","upperSide","scrollingElement","includeScroll","modifier","getBordersSize","sideA","sideB","getSize","computedStyle","getWindowSizes","getClientRect","horizScrollbar","vertScrollbar","getOffsetRectRelativeToArbitraryNode","fixedPosition","isHTML","childrenRect","parentRect","scrollParent","getViewportOffsetRectRelativeToArtbitraryNode","excludeScroll","relativeOffset","isFixed","getFixedPositionOffsetParent","getBoundaries","boundaries","boundariesNode","_getWindowSizes","isPaddingNumber","getArea","_ref","computeAutoPlacement","refRect","sortedAreas","filteredAreas","_ref2","computedPlacement","variation","getReferenceOffsets","commonOffsetParent","getOuterSizes","getOppositePlacement","getPopperOffsets","referenceOffsets","isHoriz","mainSide","secondarySide","measurement","secondaryMeasurement","runModifiers","ends","isDestroyed","arrowStyles","flipped","positionFixed","isCreated","isModifierEnabled","modifierName","getSupportedPropertyName","prefixes","upperProp","toCheck","disableEventListeners","removeOnDestroy","getWindow","attachToScrollParents","isBody","setupEventListeners","updateBound","scrollElement","eventsEnabled","enableEventListeners","cancelAnimationFrame","isFirefox","isModifierRequired","requestingName","requestedName","requesting","isRequired","_requesting","requested","placements","validPlacements","clockwise","BEHAVIORS","parseOffset","basePlacement","useHeight","fragments","divider","splitRegex","mergeWithPrevious","toValue","index2","Defaults","shiftvariation","_data$offsets","isVertical","shiftOffsets","transformProp","popperStyles","escapeWithReference","secondary","keepTogether","opSide","_data$offsets$arrow","arrowElement","sideCapitalized","altSide","arrowElementSize","center","popperMarginSide","popperBorderSide","sideValue","placementOpposite","flipOrder","refOffsets","overlapsRef","overflowsLeft","overflowsRight","overflowsTop","overflowsBottom","overflowsBoundaries","flippedVariationByRef","flippedVariationByContent","flipVariationsByContent","flippedVariation","getOppositeVariation","subtractLength","computeStyle","legacyGpuAccelerationOption","offsetParentRect","shouldRound","noRound","referenceWidth","popperWidth","isVariation","horizontalToInteger","verticalToInteger","getRoundedOffsets","prefixedProperty","invertTop","invertLeft","onLoad","modifierOptions","Utils","PopperUtils","webpackContext","webpackContextResolve","wordObj","words","keywordList","keywords","indentWords","dedentWords","opening","curPunc","chain","newtok","tokenBase","readBlockComment","readQuoted","regexpAhead","embed","delim","propertyIsEnumerable","readHereDoc","varList","lastTok","more","escaped","tokenBaseUntilBrace","tokenBaseOnce","alreadyCalled","quote","unescaped","mayIndent","continuedLine","kwtype","thisTok","textAfter","firstChar","closed","lineComment","fold","wordRegexp","wordOperators","commonKeywords","commonBuiltins","scopes","conf","parserConf","ERRORCLASS","delimiters","singleDelimiters","operators","singleOperators","doubleOperators","doubleDelimiters","tripleDelimiters","hangingIndent","myKeywords","myBuiltins","extra_keywords","extra_builtins","py3","stringPrefixes","builtins","lastToken","scopeOffset","lineOffset","pushPyScope","dedent","errorToken","tokenBaseInner","inFormat","floatLiteral","intLiteral","formatStringFactory","tokenStringFactory","delimiter","tokenOuter","singleline","OUTCLASS","tokenNestedExpr","singleLineStringErrors","isString","pushBracketScope","tokenLexer","beginningOfLine","lambda","delimiter_index","basecolumn","addErr","closeBrackets","triples","pairs","closeBefore","explode","ensureBound","Backspace","handleBackspace","Enter","handleEnter","chars","handleChar","around","charsAround","linesep","moveSel","contractSelection","inverted","identical","curType","stringStartsAfter","cmds","findPosSubword","startPos","cat","moveSubword","insertLine","newSelection","wordAt","addCursorToSelection","newRange","isSelectedRange","goSubwordLeft","goSubwordRight","scrollLineUp","visibleBottomLine","scrollLineDown","visibleTopLine","splitSelectionByLine","lineRanges","singleSelectionTop","selectLine","extended","insertLineAfter","insertLineBefore","selectNextOccurrence","fullWord","sublimeFindFullWord","query","getSearchCursor","findNext","skipAndSelectNextOccurrence","prevAnchor","prevHead","addCursorToPrevLine","addCursorToNextLine","mirror","selectBetweenBrackets","scanForBracket","puncType","sortLines","caseSensitive","toSort","au","bu","modifyWordOrSelection","indices","replacements","getTarget","findAndGoTo","findPrevious","selectScope","goToBracket","swapLineUp","linesToMove","newSels","swapLineDown","toggleCommentIndented","toggleComment","joinLines","joined","actual","duplicateLine","reverseSortLines","sortLinesInsensitive","reverseSortLinesInsensitive","nextBookmark","marks","sublimeBookmarks","prevBookmark","toggleBookmark","sublimeBookmark","clearBookmarks","selectBookmarks","smartBackspace","toStartOfLine","deletePos","prevIndent","delLineRight","upcaseAtCursor","downcaseAtCursor","setSublimeMark","sublimeMark","selectToSublimeMark","deleteToSublimeMark","sublimeKilled","swapWithSublimeMark","sublimeYank","showInCenter","findUnder","findUnderPrevious","findAllUnder","primaryIndex","macSublime","pcSublime","sublime","doFold","noFold","regexpFlags","regexp","ignoreCase","multiline","ensureFlags","maybeMultiline","searchRegexpForward","searchRegexpForwardMultiline","inside","startLine","lastMatchIn","endMargin","newMatch","searchRegexpBackward","searchRegexpBackwardMultiline","adjustPos","folded","foldFunc","searchStringForward","caseFold","cutFrom","endString","searchStringBackward","lastIndexOf","topString","SearchCursor","atOccurrence","afterEmptyMatch","normalize","ie_lt8","matching","bracketRegex","findMatchingBracket","afterCursor","strict","maxScanLen","maxScanLineLength","maxScanLines","matchBrackets","autoclear","maxHighlightLen","maxHighlightLineLength","highlightNonMatching","doMatchBrackets","currentlyHighlighted","clearHighlighted","oldConfig","picker","EmojiButton","inputTarget","updatePlayer","start_round","modal","countdownTarget","gameId","end_round","gameChannel","game_id","updateRounds","player","playerId","hasNotificationsTarget","notificationsTarget","hasLiveRoundsTarget","liveRoundsTarget","live","hasHostRoundsTarget","hostRoundsTarget","host_rounds","host_navbar","hasRegistrationTarget","registrationTarget","registration","hasPlayerCardTarget","player_card","playerCardTargets","player_id","ansi_up","ANSIStdout","stdoutTarget","HTMLStdout","btn","runButtonTarget","_confettiAction","clipboard","writeText","_showModal","_initToast","toast","_initTooltip","tooltip","logicalName","identifierForContextKey","definitionForModuleAndIdentifier","definitionForModuleWithContextAndKey","definitionsFromContext","throttle","enableCall","editor","autoCloseBrackets","hasLivecodeTarget","changeCode","refreshEditor","sendCode","credentials","_defineProperty","_objectSpread","ownKeys","sym","_objectWithoutProperties","excluded","sourceKeys","_objectWithoutPropertiesLoose","sourceSymbolKeys","IE11OrLess","Edge","FireFox","Safari","IOS","ChromeForAndroid","captureMode","getParentOrHost","includeCTX","_throttleTimeout","R_SPACE","matrix","selfOnly","appliedTransforms","matrixFn","DOMMatrix","WebKitCSSMatrix","CSSMatrix","MSCSSMatrix","getWindowScrollingElement","getRect","relativeToContainingBlock","relativeToNonStaticParent","undoScale","elRect","containerRect","elMatrix","isScrolledPast","elSide","parentSide","getParentAutoScrollElement","elSideVal","parentSideVal","getChild","childNum","currentChild","Sortable","ghost","dragged","lastElementChild","previousElementSibling","getRelativeScrollOffset","winScroller","includeSelf","gotSelf","elemCSS","isRectEqual","rect1","rect2","scrollBy","Polymer","Zepto","dom","AnimationStateManager","animationCallbackId","animationStates","captureAnimationState","fromRect","thisAnimationDuration","childMatrix","addAnimationState","removeAnimationState","indexOfObject","animateAll","animating","animationTime","toRect","prevFromRect","prevToRect","animatingRect","targetMatrix","sqrt","pow","calculateRealTime","animationResetTimer","currentRect","translateX","translateY","animatingX","animatingY","forRepaintDummy","repaint","plugins","initializeByDefault","PluginManager","mount","plugin","pluginName","pluginEvent","sortable","eventCanceled","eventNameGlobal","initializePlugins","initialized","modifyOption","getEventProperties","eventProperties","modifiedValue","optionListeners","rootEl","targetEl","cloneEl","oldIndex","newIndex","oldDraggableIndex","newDraggableIndex","putSortable","extraEventProperties","onName","pullMode","lastPutMode","allEventProperties","dragEl","parentEl","ghostEl","nextEl","lastDownEl","cloneHidden","dragStarted","activeSortable","hideGhostForTarget","_hideGhostForTarget","unhideGhostForTarget","_unhideGhostForTarget","cloneNowHidden","cloneNowShown","dispatchSortableEvent","_dispatchEvent","activeGroup","tapEvt","touchEvt","lastDx","lastDy","tapDistanceLeft","tapDistanceTop","lastTarget","lastDirection","targetMoveDistance","ghostRelativeParent","awaitingDragStarted","ignoreNextClick","sortables","pastFirstInvertThresh","isCircumstantialInvert","ghostRelativeParentInitialScroll","_silent","savedInputChecked","documentExists","PositionGhostAbsolutely","CSSFloatProperty","supportDraggable","supportCssPointerEvents","_detectDirection","elCSS","elWidth","child1","child2","firstChildCSS","secondChildCSS","firstChildWidth","secondChildWidth","flexDirection","gridTemplateColumns","touchingSideChild2","_prepareGroup","toFn","pull","sameGroup","otherGroup","originalGroup","checkPull","checkPut","put","revertClone","nearestEmptyInsertDetectEvent","nearest","threshold","emptyInsertThreshold","insideHorizontally","insideVertically","_onDragOver","_checkOutsideTargetEl","_isOutsideThisEl","store","swapThreshold","invertSwap","invertedSwapThreshold","removeCloneOnHide","ghostClass","chosenClass","dragClass","preventOnFilter","dropBubble","dragoverBubble","dataIdAttr","delayOnTouchOnly","touchStartThreshold","forceFallback","fallbackClass","fallbackOnBody","fallbackTolerance","fallbackOffset","supportPointer","nativeDraggable","_onTapStart","_onMove","dragRect","targetRect","willInsertAfter","retVal","onMoveFn","onMove","draggedRect","relatedRect","_disableDraggable","_unsilent","_generateId","sum","_nextTick","_cancelNextTick","_getDirection","originalTarget","composedPath","_saveInputCheckedState","isContentEditable","criteria","_prepareDragStart","dragStartFn","_lastX","_lastY","_onDrop","_disableDelayedDragEvents","_triggerDragStart","_disableDelayedDrag","_delayedDragTouchMoveHandler","_dragStartTimer","_onTouchMove","_onDragStart","_dragStarted","fallback","_appendGhost","_nulling","_emulateDragOver","ghostMatrix","relativeScrollOffset","cssMatrix","_hideClone","cloneId","_loopId","_dragStartId","revert","vertical","isOwner","canSort","fromSortable","completedFired","dragOverEvent","_ignoreWhileAnimating","elLastChild","spacer","_ghostIsLast","targetBeforeFirstSwap","differentLevel","differentRowCol","dragElS1Opp","dragElS2Opp","dragElOppLength","targetS1Opp","targetS2Opp","targetOppLength","_dragElInRowColumn","side1","scrolledPastTop","scrollBefore","isLastTarget","mouseOnAxis","targetLength","targetS1","targetS2","_getInsertDirection","_getSwapDirection","dragIndex","moveVector","insertion","_showClone","_offMoveEvents","_offUpEvents","dropEffect","_globalDragOver","useAnimation","utils","dst","nextTick","cancelNextTick","detectDirection","scrollEl","scrollRootEl","lastAutoScrollX","lastAutoScrollY","touchEvt$1","pointerElemChangedInterval","autoScrolls","scrolling","clearAutoScrolls","autoScroll","pid","clearPointerElemChangedInterval","isFallback","scrollCustomFn","sens","scrollSensitivity","scrollSpeed","scrollThisInstance","scrollFn","layersOut","currentParent","scrollPosX","scrollPosY","vx","vy","layer","scrollOffsetY","scrollOffsetX","bubbleScroll","toSortable","onSpill","Revert","Remove","_ref3","_ref4","parentSortable","AutoScroll","_handleAutoScroll","_handleFallbackAutoScroll","dragOverCompleted","dragOverBubble","nulling","ogElemScroller","newElem","setSortable","hasListTarget","listTarget","onEnd","selectedLineTarget","sendSeats","seats","infoDiv","round_id","roundId","seats_for_next_round"],"mappings":"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","file":"js/application-15e3d4e4b73bde9569eb.js","sourcesContent":[" \t// The module cache\n \tvar installedModules = {};\n\n \t// The require function\n \tfunction __webpack_require__(moduleId) {\n\n \t\t// Check if module is in cache\n \t\tif(installedModules[moduleId]) {\n \t\t\treturn installedModules[moduleId].exports;\n \t\t}\n \t\t// Create a new module (and put it into the cache)\n \t\tvar module = installedModules[moduleId] = {\n \t\t\ti: moduleId,\n \t\t\tl: false,\n \t\t\texports: {}\n \t\t};\n\n \t\t// Execute the module function\n \t\tmodules[moduleId].call(module.exports, module, module.exports, __webpack_require__);\n\n \t\t// Flag the module as loaded\n \t\tmodule.l = true;\n\n \t\t// Return the exports of the module\n \t\treturn module.exports;\n \t}\n\n\n \t// expose the modules object (__webpack_modules__)\n \t__webpack_require__.m = modules;\n\n \t// expose the module cache\n \t__webpack_require__.c = installedModules;\n\n \t// define getter function for harmony exports\n \t__webpack_require__.d = function(exports, name, getter) {\n \t\tif(!__webpack_require__.o(exports, name)) {\n \t\t\tObject.defineProperty(exports, name, { enumerable: true, get: getter });\n \t\t}\n \t};\n\n \t// define __esModule on exports\n \t__webpack_require__.r = function(exports) {\n \t\tif(typeof Symbol !== 'undefined' && Symbol.toStringTag) {\n \t\t\tObject.defineProperty(exports, Symbol.toStringTag, { value: 'Module' });\n \t\t}\n \t\tObject.defineProperty(exports, '__esModule', { value: true });\n \t};\n\n \t// create a fake namespace object\n \t// mode & 1: value is a module id, require it\n \t// mode & 2: merge all properties of value into the ns\n \t// mode & 4: return value when already ns object\n \t// mode & 8|1: behave like require\n \t__webpack_require__.t = function(value, mode) {\n \t\tif(mode & 1) value = __webpack_require__(value);\n \t\tif(mode & 8) return value;\n \t\tif((mode & 4) && typeof value === 'object' && value && value.__esModule) return value;\n \t\tvar ns = Object.create(null);\n \t\t__webpack_require__.r(ns);\n \t\tObject.defineProperty(ns, 'default', { enumerable: true, value: value });\n \t\tif(mode & 2 && typeof value != 'string') for(var key in value) __webpack_require__.d(ns, key, function(key) { return value[key]; }.bind(null, key));\n \t\treturn ns;\n \t};\n\n \t// getDefaultExport function for compatibility with non-harmony modules\n \t__webpack_require__.n = function(module) {\n \t\tvar getter = module && module.__esModule ?\n \t\t\tfunction getDefault() { return module['default']; } :\n \t\t\tfunction getModuleExports() { return module; };\n \t\t__webpack_require__.d(getter, 'a', getter);\n \t\treturn getter;\n \t};\n\n \t// Object.prototype.hasOwnProperty.call\n \t__webpack_require__.o = function(object, property) { return Object.prototype.hasOwnProperty.call(object, property); };\n\n \t// __webpack_public_path__\n \t__webpack_require__.p = \"/packs/\";\n\n\n \t// Load entry module and return exports\n \treturn __webpack_require__(__webpack_require__.s = 35);\n","var EventListener = /** @class */ (function () {\n function EventListener(eventTarget, eventName) {\n this.eventTarget = eventTarget;\n this.eventName = eventName;\n this.unorderedBindings = new Set;\n }\n EventListener.prototype.connect = function () {\n this.eventTarget.addEventListener(this.eventName, this, false);\n };\n EventListener.prototype.disconnect = function () {\n this.eventTarget.removeEventListener(this.eventName, this, false);\n };\n // Binding observer delegate\n /** @hidden */\n EventListener.prototype.bindingConnected = function (binding) {\n this.unorderedBindings.add(binding);\n };\n /** @hidden */\n EventListener.prototype.bindingDisconnected = function (binding) {\n this.unorderedBindings.delete(binding);\n };\n EventListener.prototype.handleEvent = function (event) {\n var extendedEvent = extendEvent(event);\n for (var _i = 0, _a = this.bindings; _i < _a.length; _i++) {\n var binding = _a[_i];\n if (extendedEvent.immediatePropagationStopped) {\n break;\n }\n else {\n binding.handleEvent(extendedEvent);\n }\n }\n };\n Object.defineProperty(EventListener.prototype, \"bindings\", {\n get: function () {\n return Array.from(this.unorderedBindings).sort(function (left, right) {\n var leftIndex = left.index, rightIndex = right.index;\n return leftIndex < rightIndex ? -1 : leftIndex > rightIndex ? 1 : 0;\n });\n },\n enumerable: true,\n configurable: true\n });\n return EventListener;\n}());\nexport { EventListener };\nfunction extendEvent(event) {\n if (\"immediatePropagationStopped\" in event) {\n return event;\n }\n else {\n var stopImmediatePropagation_1 = event.stopImmediatePropagation;\n return Object.assign(event, {\n immediatePropagationStopped: false,\n stopImmediatePropagation: function () {\n this.immediatePropagationStopped = true;\n stopImmediatePropagation_1.call(this);\n }\n });\n }\n}\n//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZXZlbnRfbGlzdGVuZXIuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi9zcmMvZXZlbnRfbGlzdGVuZXIudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBRUE7SUFLRSx1QkFBWSxXQUF3QixFQUFFLFNBQWlCO1FBQ3JELElBQUksQ0FBQyxXQUFXLEdBQUcsV0FBVyxDQUFBO1FBQzlCLElBQUksQ0FBQyxTQUFTLEdBQUcsU0FBUyxDQUFBO1FBQzFCLElBQUksQ0FBQyxpQkFBaUIsR0FBRyxJQUFJLEdBQUcsQ0FBQTtJQUNsQyxDQUFDO0lBRUQsK0JBQU8sR0FBUDtRQUNFLElBQUksQ0FBQyxXQUFXLENBQUMsZ0JBQWdCLENBQUMsSUFBSSxDQUFDLFNBQVMsRUFBRSxJQUFJLEVBQUUsS0FBSyxDQUFDLENBQUE7SUFDaEUsQ0FBQztJQUVELGtDQUFVLEdBQVY7UUFDRSxJQUFJLENBQUMsV0FBVyxDQUFDLG1CQUFtQixDQUFDLElBQUksQ0FBQyxTQUFTLEVBQUUsSUFBSSxFQUFFLEtBQUssQ0FBQyxDQUFBO0lBQ25FLENBQUM7SUFFRCw0QkFBNEI7SUFFNUIsY0FBYztJQUNkLHdDQUFnQixHQUFoQixVQUFpQixPQUFnQjtRQUMvQixJQUFJLENBQUMsaUJBQWlCLENBQUMsR0FBRyxDQUFDLE9BQU8sQ0FBQyxDQUFBO0lBQ3JDLENBQUM7SUFFRCxjQUFjO0lBQ2QsMkNBQW1CLEdBQW5CLFVBQW9CLE9BQWdCO1FBQ2xDLElBQUksQ0FBQyxpQkFBaUIsQ0FBQyxNQUFNLENBQUMsT0FBTyxDQUFDLENBQUE7SUFDeEMsQ0FBQztJQUVELG1DQUFXLEdBQVgsVUFBWSxLQUFZO1FBQ3RCLElBQU0sYUFBYSxHQUFHLFdBQVcsQ0FBQyxLQUFLLENBQUMsQ0FBQTtRQUN4QyxLQUFzQixVQUFhLEVBQWIsS0FBQSxJQUFJLENBQUMsUUFBUSxFQUFiLGNBQWEsRUFBYixJQUFhLEVBQUU7WUFBaEMsSUFBTSxPQUFPLFNBQUE7WUFDaEIsSUFBSSxhQUFhLENBQUMsMkJBQTJCLEVBQUU7Z0JBQzdDLE1BQUs7YUFDTjtpQkFBTTtnQkFDTCxPQUFPLENBQUMsV0FBVyxDQUFDLGFBQWEsQ0FBQyxDQUFBO2FBQ25DO1NBQ0Y7SUFDSCxDQUFDO0lBRUQsc0JBQUksbUNBQVE7YUFBWjtZQUNFLE9BQU8sS0FBSyxDQUFDLElBQUksQ0FBQyxJQUFJLENBQUMsaUJBQWlCLENBQUMsQ0FBQyxJQUFJLENBQUMsVUFBQyxJQUFJLEVBQUUsS0FBSztnQkFDekQsSUFBTSxTQUFTLEdBQUcsSUFBSSxDQUFDLEtBQUssRUFBRSxVQUFVLEdBQUcsS0FBSyxDQUFDLEtBQUssQ0FBQTtnQkFDdEQsT0FBTyxTQUFTLEdBQUcsVUFBVSxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsU0FBUyxHQUFHLFVBQVUsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUE7WUFDckUsQ0FBQyxDQUFDLENBQUE7UUFDSixDQUFDOzs7T0FBQTtJQUNILG9CQUFDO0FBQUQsQ0FBQyxBQWhERCxJQWdEQzs7QUFFRCxxQkFBcUIsS0FBWTtJQUMvQixJQUFJLDZCQUE2QixJQUFJLEtBQUssRUFBRTtRQUMxQyxPQUFPLEtBQUssQ0FBQTtLQUNiO1NBQU07UUFDRyxJQUFBLDJEQUF3QixDQUFVO1FBQzFDLE9BQU8sTUFBTSxDQUFDLE1BQU0sQ0FBQyxLQUFLLEVBQUU7WUFDMUIsMkJBQTJCLEVBQUUsS0FBSztZQUNsQyx3QkFBd0I7Z0JBQ3RCLElBQUksQ0FBQywyQkFBMkIsR0FBRyxJQUFJLENBQUE7Z0JBQ3ZDLDBCQUF3QixDQUFDLElBQUksQ0FBQyxJQUFJLENBQUMsQ0FBQTtZQUNyQyxDQUFDO1NBQ0YsQ0FBQyxDQUFBO0tBQ0g7QUFDSCxDQUFDIn0=","import { EventListener } from \"./event_listener\";\nvar Dispatcher = /** @class */ (function () {\n function Dispatcher(application) {\n this.application = application;\n this.eventListenerMaps = new Map;\n this.started = false;\n }\n Dispatcher.prototype.start = function () {\n if (!this.started) {\n this.started = true;\n this.eventListeners.forEach(function (eventListener) { return eventListener.connect(); });\n }\n };\n Dispatcher.prototype.stop = function () {\n if (this.started) {\n this.started = false;\n this.eventListeners.forEach(function (eventListener) { return eventListener.disconnect(); });\n }\n };\n Object.defineProperty(Dispatcher.prototype, \"eventListeners\", {\n get: function () {\n return Array.from(this.eventListenerMaps.values())\n .reduce(function (listeners, map) { return listeners.concat(Array.from(map.values())); }, []);\n },\n enumerable: true,\n configurable: true\n });\n // Binding observer delegate\n /** @hidden */\n Dispatcher.prototype.bindingConnected = function (binding) {\n this.fetchEventListenerForBinding(binding).bindingConnected(binding);\n };\n /** @hidden */\n Dispatcher.prototype.bindingDisconnected = function (binding) {\n this.fetchEventListenerForBinding(binding).bindingDisconnected(binding);\n };\n // Error handling\n Dispatcher.prototype.handleError = function (error, message, detail) {\n if (detail === void 0) { detail = {}; }\n this.application.handleError(error, \"Error \" + message, detail);\n };\n Dispatcher.prototype.fetchEventListenerForBinding = function (binding) {\n var eventTarget = binding.eventTarget, eventName = binding.eventName;\n return this.fetchEventListener(eventTarget, eventName);\n };\n Dispatcher.prototype.fetchEventListener = function (eventTarget, eventName) {\n var eventListenerMap = this.fetchEventListenerMapForEventTarget(eventTarget);\n var eventListener = eventListenerMap.get(eventName);\n if (!eventListener) {\n eventListener = this.createEventListener(eventTarget, eventName);\n eventListenerMap.set(eventName, eventListener);\n }\n return eventListener;\n };\n Dispatcher.prototype.createEventListener = function (eventTarget, eventName) {\n var eventListener = new EventListener(eventTarget, eventName);\n if (this.started) {\n eventListener.connect();\n }\n return eventListener;\n };\n Dispatcher.prototype.fetchEventListenerMapForEventTarget = function (eventTarget) {\n var eventListenerMap = this.eventListenerMaps.get(eventTarget);\n if (!eventListenerMap) {\n eventListenerMap = new Map;\n this.eventListenerMaps.set(eventTarget, eventListenerMap);\n }\n return eventListenerMap;\n };\n return Dispatcher;\n}());\nexport { Dispatcher };\n//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZGlzcGF0Y2hlci5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uL3NyYy9kaXNwYXRjaGVyLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUdBLE9BQU8sRUFBRSxhQUFhLEVBQUUsTUFBTSxrQkFBa0IsQ0FBQTtBQUVoRDtJQUtFLG9CQUFZLFdBQXdCO1FBQ2xDLElBQUksQ0FBQyxXQUFXLEdBQUcsV0FBVyxDQUFBO1FBQzlCLElBQUksQ0FBQyxpQkFBaUIsR0FBRyxJQUFJLEdBQUcsQ0FBQTtRQUNoQyxJQUFJLENBQUMsT0FBTyxHQUFHLEtBQUssQ0FBQTtJQUN0QixDQUFDO0lBRUQsMEJBQUssR0FBTDtRQUNFLElBQUksQ0FBQyxJQUFJLENBQUMsT0FBTyxFQUFFO1lBQ2pCLElBQUksQ0FBQyxPQUFPLEdBQUcsSUFBSSxDQUFBO1lBQ25CLElBQUksQ0FBQyxjQUFjLENBQUMsT0FBTyxDQUFDLFVBQUEsYUFBYSxJQUFJLE9BQUEsYUFBYSxDQUFDLE9BQU8sRUFBRSxFQUF2QixDQUF1QixDQUFDLENBQUE7U0FDdEU7SUFDSCxDQUFDO0lBRUQseUJBQUksR0FBSjtRQUNFLElBQUksSUFBSSxDQUFDLE9BQU8sRUFBRTtZQUNoQixJQUFJLENBQUMsT0FBTyxHQUFHLEtBQUssQ0FBQTtZQUNwQixJQUFJLENBQUMsY0FBYyxDQUFDLE9BQU8sQ0FBQyxVQUFBLGFBQWEsSUFBSSxPQUFBLGFBQWEsQ0FBQyxVQUFVLEVBQUUsRUFBMUIsQ0FBMEIsQ0FBQyxDQUFBO1NBQ3pFO0lBQ0gsQ0FBQztJQUVELHNCQUFJLHNDQUFjO2FBQWxCO1lBQ0UsT0FBTyxLQUFLLENBQUMsSUFBSSxDQUFDLElBQUksQ0FBQyxpQkFBaUIsQ0FBQyxNQUFNLEVBQUUsQ0FBQztpQkFDL0MsTUFBTSxDQUFDLFVBQUMsU0FBUyxFQUFFLEdBQUcsSUFBSyxPQUFBLFNBQVMsQ0FBQyxNQUFNLENBQUMsS0FBSyxDQUFDLElBQUksQ0FBQyxHQUFHLENBQUMsTUFBTSxFQUFFLENBQUMsQ0FBQyxFQUExQyxDQUEwQyxFQUFFLEVBQXFCLENBQUMsQ0FBQTtRQUNsRyxDQUFDOzs7T0FBQTtJQUVELDRCQUE0QjtJQUU1QixjQUFjO0lBQ2QscUNBQWdCLEdBQWhCLFVBQWlCLE9BQWdCO1FBQy9CLElBQUksQ0FBQyw0QkFBNEIsQ0FBQyxPQUFPLENBQUMsQ0FBQyxnQkFBZ0IsQ0FBQyxPQUFPLENBQUMsQ0FBQTtJQUN0RSxDQUFDO0lBRUQsY0FBYztJQUNkLHdDQUFtQixHQUFuQixVQUFvQixPQUFnQjtRQUNsQyxJQUFJLENBQUMsNEJBQTRCLENBQUMsT0FBTyxDQUFDLENBQUMsbUJBQW1CLENBQUMsT0FBTyxDQUFDLENBQUE7SUFDekUsQ0FBQztJQUVELGlCQUFpQjtJQUVqQixnQ0FBVyxHQUFYLFVBQVksS0FBWSxFQUFFLE9BQWUsRUFBRSxNQUFtQjtRQUFuQix1QkFBQSxFQUFBLFdBQW1CO1FBQzVELElBQUksQ0FBQyxXQUFXLENBQUMsV0FBVyxDQUFDLEtBQUssRUFBRSxXQUFTLE9BQVMsRUFBRSxNQUFNLENBQUMsQ0FBQTtJQUNqRSxDQUFDO0lBRU8saURBQTRCLEdBQXBDLFVBQXFDLE9BQWdCO1FBQzNDLElBQUEsaUNBQVcsRUFBRSw2QkFBUyxDQUFZO1FBQzFDLE9BQU8sSUFBSSxDQUFDLGtCQUFrQixDQUFDLFdBQVcsRUFBRSxTQUFTLENBQUMsQ0FBQTtJQUN4RCxDQUFDO0lBRU8sdUNBQWtCLEdBQTFCLFVBQTJCLFdBQXdCLEVBQUUsU0FBaUI7UUFDcEUsSUFBTSxnQkFBZ0IsR0FBRyxJQUFJLENBQUMsbUNBQW1DLENBQUMsV0FBVyxDQUFDLENBQUE7UUFDOUUsSUFBSSxhQUFhLEdBQUcsZ0JBQWdCLENBQUMsR0FBRyxDQUFDLFNBQVMsQ0FBQyxDQUFBO1FBQ25ELElBQUksQ0FBQyxhQUFhLEVBQUU7WUFDbEIsYUFBYSxHQUFHLElBQUksQ0FBQyxtQkFBbUIsQ0FBQyxXQUFXLEVBQUUsU0FBUyxDQUFDLENBQUE7WUFDaEUsZ0JBQWdCLENBQUMsR0FBRyxDQUFDLFNBQVMsRUFBRSxhQUFhLENBQUMsQ0FBQTtTQUMvQztRQUNELE9BQU8sYUFBYSxDQUFBO0lBQ3RCLENBQUM7SUFFTyx3Q0FBbUIsR0FBM0IsVUFBNEIsV0FBd0IsRUFBRSxTQUFpQjtRQUNyRSxJQUFNLGFBQWEsR0FBRyxJQUFJLGFBQWEsQ0FBQyxXQUFXLEVBQUUsU0FBUyxDQUFDLENBQUE7UUFDL0QsSUFBSSxJQUFJLENBQUMsT0FBTyxFQUFFO1lBQ2hCLGFBQWEsQ0FBQyxPQUFPLEVBQUUsQ0FBQTtTQUN4QjtRQUNELE9BQU8sYUFBYSxDQUFBO0lBQ3RCLENBQUM7SUFFTyx3REFBbUMsR0FBM0MsVUFBNEMsV0FBd0I7UUFDbEUsSUFBSSxnQkFBZ0IsR0FBRyxJQUFJLENBQUMsaUJBQWlCLENBQUMsR0FBRyxDQUFDLFdBQVcsQ0FBQyxDQUFBO1FBQzlELElBQUksQ0FBQyxnQkFBZ0IsRUFBRTtZQUNyQixnQkFBZ0IsR0FBRyxJQUFJLEdBQUcsQ0FBQTtZQUMxQixJQUFJLENBQUMsaUJBQWlCLENBQUMsR0FBRyxDQUFDLFdBQVcsRUFBRSxnQkFBZ0IsQ0FBQyxDQUFBO1NBQzFEO1FBQ0QsT0FBTyxnQkFBZ0IsQ0FBQTtJQUN6QixDQUFDO0lBQ0gsaUJBQUM7QUFBRCxDQUFDLEFBL0VELElBK0VDIn0=","// capture nos.: 12 23 4 43 1 5 56 7 76\nvar descriptorPattern = /^((.+?)(@(window|document))?->)?(.+?)(#(.+))?$/;\nexport function parseDescriptorString(descriptorString) {\n var source = descriptorString.trim();\n var matches = source.match(descriptorPattern) || [];\n return {\n eventTarget: parseEventTarget(matches[4]),\n eventName: matches[2],\n identifier: matches[5],\n methodName: matches[7]\n };\n}\nfunction parseEventTarget(eventTargetName) {\n if (eventTargetName == \"window\") {\n return window;\n }\n else if (eventTargetName == \"document\") {\n return document;\n }\n}\nexport function stringifyEventTarget(eventTarget) {\n if (eventTarget == window) {\n return \"window\";\n }\n else if (eventTarget == document) {\n return \"document\";\n }\n}\n//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiYWN0aW9uX2Rlc2NyaXB0b3IuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi9zcmMvYWN0aW9uX2Rlc2NyaXB0b3IudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBT0EsdUVBQXVFO0FBQ3ZFLElBQU0saUJBQWlCLEdBQUcsZ0RBQWdELENBQUE7QUFFMUUsTUFBTSxnQ0FBZ0MsZ0JBQXdCO0lBQzVELElBQU0sTUFBTSxHQUFHLGdCQUFnQixDQUFDLElBQUksRUFBRSxDQUFBO0lBQ3RDLElBQU0sT0FBTyxHQUFHLE1BQU0sQ0FBQyxLQUFLLENBQUMsaUJBQWlCLENBQUMsSUFBSSxFQUFFLENBQUE7SUFDckQsT0FBTztRQUNMLFdBQVcsRUFBRSxnQkFBZ0IsQ0FBQyxPQUFPLENBQUMsQ0FBQyxDQUFDLENBQUM7UUFDekMsU0FBUyxFQUFJLE9BQU8sQ0FBQyxDQUFDLENBQUM7UUFDdkIsVUFBVSxFQUFHLE9BQU8sQ0FBQyxDQUFDLENBQUM7UUFDdkIsVUFBVSxFQUFHLE9BQU8sQ0FBQyxDQUFDLENBQUM7S0FDeEIsQ0FBQTtBQUNILENBQUM7QUFFRCwwQkFBMEIsZUFBdUI7SUFDL0MsSUFBSSxlQUFlLElBQUksUUFBUSxFQUFFO1FBQy9CLE9BQU8sTUFBTSxDQUFBO0tBQ2Q7U0FBTSxJQUFJLGVBQWUsSUFBSSxVQUFVLEVBQUU7UUFDeEMsT0FBTyxRQUFRLENBQUE7S0FDaEI7QUFDSCxDQUFDO0FBRUQsTUFBTSwrQkFBK0IsV0FBd0I7SUFDM0QsSUFBSSxXQUFXLElBQUksTUFBTSxFQUFFO1FBQ3pCLE9BQU8sUUFBUSxDQUFBO0tBQ2hCO1NBQU0sSUFBSSxXQUFXLElBQUksUUFBUSxFQUFFO1FBQ2xDLE9BQU8sVUFBVSxDQUFBO0tBQ2xCO0FBQ0gsQ0FBQyJ9","import { parseDescriptorString, stringifyEventTarget } from \"./action_descriptor\";\nvar Action = /** @class */ (function () {\n function Action(element, index, descriptor) {\n this.element = element;\n this.index = index;\n this.eventTarget = descriptor.eventTarget || element;\n this.eventName = descriptor.eventName || getDefaultEventNameForElement(element) || error(\"missing event name\");\n this.identifier = descriptor.identifier || error(\"missing identifier\");\n this.methodName = descriptor.methodName || error(\"missing method name\");\n }\n Action.forToken = function (token) {\n return new this(token.element, token.index, parseDescriptorString(token.content));\n };\n Action.prototype.toString = function () {\n var eventNameSuffix = this.eventTargetName ? \"@\" + this.eventTargetName : \"\";\n return \"\" + this.eventName + eventNameSuffix + \"->\" + this.identifier + \"#\" + this.methodName;\n };\n Object.defineProperty(Action.prototype, \"eventTargetName\", {\n get: function () {\n return stringifyEventTarget(this.eventTarget);\n },\n enumerable: true,\n configurable: true\n });\n return Action;\n}());\nexport { Action };\nvar defaultEventNames = {\n \"a\": function (e) { return \"click\"; },\n \"button\": function (e) { return \"click\"; },\n \"form\": function (e) { return \"submit\"; },\n \"input\": function (e) { return e.getAttribute(\"type\") == \"submit\" ? \"click\" : \"change\"; },\n \"select\": function (e) { return \"change\"; },\n \"textarea\": function (e) { return \"change\"; }\n};\nexport function getDefaultEventNameForElement(element) {\n var tagName = element.tagName.toLowerCase();\n if (tagName in defaultEventNames) {\n return defaultEventNames[tagName](element);\n }\n}\nfunction error(message) {\n throw new Error(message);\n}\n//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiYWN0aW9uLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vc3JjL2FjdGlvbi50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQW9CLHFCQUFxQixFQUFFLG9CQUFvQixFQUFFLE1BQU0scUJBQXFCLENBQUE7QUFHbkc7SUFZRSxnQkFBWSxPQUFnQixFQUFFLEtBQWEsRUFBRSxVQUFxQztRQUNoRixJQUFJLENBQUMsT0FBTyxHQUFPLE9BQU8sQ0FBQTtRQUMxQixJQUFJLENBQUMsS0FBSyxHQUFTLEtBQUssQ0FBQTtRQUN4QixJQUFJLENBQUMsV0FBVyxHQUFHLFVBQVUsQ0FBQyxXQUFXLElBQUksT0FBTyxDQUFBO1FBQ3BELElBQUksQ0FBQyxTQUFTLEdBQUssVUFBVSxDQUFDLFNBQVMsSUFBSSw2QkFBNkIsQ0FBQyxPQUFPLENBQUMsSUFBSSxLQUFLLENBQUMsb0JBQW9CLENBQUMsQ0FBQTtRQUNoSCxJQUFJLENBQUMsVUFBVSxHQUFJLFVBQVUsQ0FBQyxVQUFVLElBQUksS0FBSyxDQUFDLG9CQUFvQixDQUFDLENBQUE7UUFDdkUsSUFBSSxDQUFDLFVBQVUsR0FBSSxVQUFVLENBQUMsVUFBVSxJQUFJLEtBQUssQ0FBQyxxQkFBcUIsQ0FBQyxDQUFBO0lBQzFFLENBQUM7SUFYTSxlQUFRLEdBQWYsVUFBZ0IsS0FBWTtRQUMxQixPQUFPLElBQUksSUFBSSxDQUFDLEtBQUssQ0FBQyxPQUFPLEVBQUUsS0FBSyxDQUFDLEtBQUssRUFBRSxxQkFBcUIsQ0FBQyxLQUFLLENBQUMsT0FBTyxDQUFDLENBQUMsQ0FBQTtJQUNuRixDQUFDO0lBV0QseUJBQVEsR0FBUjtRQUNFLElBQU0sZUFBZSxHQUFHLElBQUksQ0FBQyxlQUFlLENBQUMsQ0FBQyxDQUFDLE1BQUksSUFBSSxDQUFDLGVBQWlCLENBQUMsQ0FBQyxDQUFDLEVBQUUsQ0FBQTtRQUM5RSxPQUFPLEtBQUcsSUFBSSxDQUFDLFNBQVMsR0FBRyxlQUFlLFVBQUssSUFBSSxDQUFDLFVBQVUsU0FBSSxJQUFJLENBQUMsVUFBWSxDQUFBO0lBQ3JGLENBQUM7SUFFRCxzQkFBWSxtQ0FBZTthQUEzQjtZQUNFLE9BQU8sb0JBQW9CLENBQUMsSUFBSSxDQUFDLFdBQVcsQ0FBQyxDQUFBO1FBQy9DLENBQUM7OztPQUFBO0lBQ0gsYUFBQztBQUFELENBQUMsQUE3QkQsSUE2QkM7O0FBRUQsSUFBTSxpQkFBaUIsR0FBd0Q7SUFDN0UsR0FBRyxFQUFTLFVBQUEsQ0FBQyxJQUFJLE9BQUEsT0FBTyxFQUFQLENBQU87SUFDeEIsUUFBUSxFQUFJLFVBQUEsQ0FBQyxJQUFJLE9BQUEsT0FBTyxFQUFQLENBQU87SUFDeEIsTUFBTSxFQUFNLFVBQUEsQ0FBQyxJQUFJLE9BQUEsUUFBUSxFQUFSLENBQVE7SUFDekIsT0FBTyxFQUFLLFVBQUEsQ0FBQyxJQUFJLE9BQUEsQ0FBQyxDQUFDLFlBQVksQ0FBQyxNQUFNLENBQUMsSUFBSSxRQUFRLENBQUMsQ0FBQyxDQUFDLE9BQU8sQ0FBQyxDQUFDLENBQUMsUUFBUSxFQUF2RCxDQUF1RDtJQUN4RSxRQUFRLEVBQUksVUFBQSxDQUFDLElBQUksT0FBQSxRQUFRLEVBQVIsQ0FBUTtJQUN6QixVQUFVLEVBQUUsVUFBQSxDQUFDLElBQUksT0FBQSxRQUFRLEVBQVIsQ0FBUTtDQUMxQixDQUFBO0FBRUQsTUFBTSx3Q0FBd0MsT0FBZ0I7SUFDNUQsSUFBTSxPQUFPLEdBQUcsT0FBTyxDQUFDLE9BQU8sQ0FBQyxXQUFXLEVBQUUsQ0FBQTtJQUM3QyxJQUFJLE9BQU8sSUFBSSxpQkFBaUIsRUFBRTtRQUNoQyxPQUFPLGlCQUFpQixDQUFDLE9BQU8sQ0FBQyxDQUFDLE9BQU8sQ0FBQyxDQUFBO0tBQzNDO0FBQ0gsQ0FBQztBQUVELGVBQWUsT0FBZTtJQUM1QixNQUFNLElBQUksS0FBSyxDQUFDLE9BQU8sQ0FBQyxDQUFBO0FBQzFCLENBQUMifQ==","var Binding = /** @class */ (function () {\n function Binding(context, action) {\n this.context = context;\n this.action = action;\n }\n Object.defineProperty(Binding.prototype, \"index\", {\n get: function () {\n return this.action.index;\n },\n enumerable: true,\n configurable: true\n });\n Object.defineProperty(Binding.prototype, \"eventTarget\", {\n get: function () {\n return this.action.eventTarget;\n },\n enumerable: true,\n configurable: true\n });\n Object.defineProperty(Binding.prototype, \"identifier\", {\n get: function () {\n return this.context.identifier;\n },\n enumerable: true,\n configurable: true\n });\n Binding.prototype.handleEvent = function (event) {\n if (this.willBeInvokedByEvent(event)) {\n this.invokeWithEvent(event);\n }\n };\n Object.defineProperty(Binding.prototype, \"eventName\", {\n get: function () {\n return this.action.eventName;\n },\n enumerable: true,\n configurable: true\n });\n Object.defineProperty(Binding.prototype, \"method\", {\n get: function () {\n var method = this.controller[this.methodName];\n if (typeof method == \"function\") {\n return method;\n }\n throw new Error(\"Action \\\"\" + this.action + \"\\\" references undefined method \\\"\" + this.methodName + \"\\\"\");\n },\n enumerable: true,\n configurable: true\n });\n Binding.prototype.invokeWithEvent = function (event) {\n try {\n this.method.call(this.controller, event);\n }\n catch (error) {\n var _a = this, identifier = _a.identifier, controller = _a.controller, element = _a.element, index = _a.index;\n var detail = { identifier: identifier, controller: controller, element: element, index: index, event: event };\n this.context.handleError(error, \"invoking action \\\"\" + this.action + \"\\\"\", detail);\n }\n };\n Binding.prototype.willBeInvokedByEvent = function (event) {\n var eventTarget = event.target;\n if (this.element === eventTarget) {\n return true;\n }\n else if (eventTarget instanceof Element && this.element.contains(eventTarget)) {\n return this.scope.containsElement(eventTarget);\n }\n else {\n return true;\n }\n };\n Object.defineProperty(Binding.prototype, \"controller\", {\n get: function () {\n return this.context.controller;\n },\n enumerable: true,\n configurable: true\n });\n Object.defineProperty(Binding.prototype, \"methodName\", {\n get: function () {\n return this.action.methodName;\n },\n enumerable: true,\n configurable: true\n });\n Object.defineProperty(Binding.prototype, \"element\", {\n get: function () {\n return this.scope.element;\n },\n enumerable: true,\n configurable: true\n });\n Object.defineProperty(Binding.prototype, \"scope\", {\n get: function () {\n return this.context.scope;\n },\n enumerable: true,\n configurable: true\n });\n return Binding;\n}());\nexport { Binding };\n//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiYmluZGluZy5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uL3NyYy9iaW5kaW5nLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUtBO0lBSUUsaUJBQVksT0FBZ0IsRUFBRSxNQUFjO1FBQzFDLElBQUksQ0FBQyxPQUFPLEdBQUcsT0FBTyxDQUFBO1FBQ3RCLElBQUksQ0FBQyxNQUFNLEdBQUcsTUFBTSxDQUFBO0lBQ3RCLENBQUM7SUFFRCxzQkFBSSwwQkFBSzthQUFUO1lBQ0UsT0FBTyxJQUFJLENBQUMsTUFBTSxDQUFDLEtBQUssQ0FBQTtRQUMxQixDQUFDOzs7T0FBQTtJQUVELHNCQUFJLGdDQUFXO2FBQWY7WUFDRSxPQUFPLElBQUksQ0FBQyxNQUFNLENBQUMsV0FBVyxDQUFBO1FBQ2hDLENBQUM7OztPQUFBO0lBRUQsc0JBQUksK0JBQVU7YUFBZDtZQUNFLE9BQU8sSUFBSSxDQUFDLE9BQU8sQ0FBQyxVQUFVLENBQUE7UUFDaEMsQ0FBQzs7O09BQUE7SUFFRCw2QkFBVyxHQUFYLFVBQVksS0FBWTtRQUN0QixJQUFJLElBQUksQ0FBQyxvQkFBb0IsQ0FBQyxLQUFLLENBQUMsRUFBRTtZQUNwQyxJQUFJLENBQUMsZUFBZSxDQUFDLEtBQUssQ0FBQyxDQUFBO1NBQzVCO0lBQ0gsQ0FBQztJQUVELHNCQUFJLDhCQUFTO2FBQWI7WUFDRSxPQUFPLElBQUksQ0FBQyxNQUFNLENBQUMsU0FBUyxDQUFBO1FBQzlCLENBQUM7OztPQUFBO0lBRUQsc0JBQUksMkJBQU07YUFBVjtZQUNFLElBQU0sTUFBTSxHQUFJLElBQUksQ0FBQyxVQUFrQixDQUFDLElBQUksQ0FBQyxVQUFVLENBQUMsQ0FBQTtZQUN4RCxJQUFJLE9BQU8sTUFBTSxJQUFJLFVBQVUsRUFBRTtnQkFDL0IsT0FBTyxNQUFNLENBQUE7YUFDZDtZQUNELE1BQU0sSUFBSSxLQUFLLENBQUMsY0FBVyxJQUFJLENBQUMsTUFBTSx5Q0FBa0MsSUFBSSxDQUFDLFVBQVUsT0FBRyxDQUFDLENBQUE7UUFDN0YsQ0FBQzs7O09BQUE7SUFFTyxpQ0FBZSxHQUF2QixVQUF3QixLQUFZO1FBQ2xDLElBQUk7WUFDRixJQUFJLENBQUMsTUFBTSxDQUFDLElBQUksQ0FBQyxJQUFJLENBQUMsVUFBVSxFQUFFLEtBQUssQ0FBQyxDQUFBO1NBQ3pDO1FBQUMsT0FBTyxLQUFLLEVBQUU7WUFDUixJQUFBLFNBQWlELEVBQS9DLDBCQUFVLEVBQUUsMEJBQVUsRUFBRSxvQkFBTyxFQUFFLGdCQUFLLENBQVM7WUFDdkQsSUFBTSxNQUFNLEdBQUcsRUFBRSxVQUFVLFlBQUEsRUFBRSxVQUFVLFlBQUEsRUFBRSxPQUFPLFNBQUEsRUFBRSxLQUFLLE9BQUEsRUFBRSxLQUFLLE9BQUEsRUFBRSxDQUFBO1lBQ2hFLElBQUksQ0FBQyxPQUFPLENBQUMsV0FBVyxDQUFDLEtBQUssRUFBRSx1QkFBb0IsSUFBSSxDQUFDLE1BQU0sT0FBRyxFQUFFLE1BQU0sQ0FBQyxDQUFBO1NBQzVFO0lBQ0gsQ0FBQztJQUVPLHNDQUFvQixHQUE1QixVQUE2QixLQUFZO1FBQ3ZDLElBQU0sV0FBVyxHQUFHLEtBQUssQ0FBQyxNQUFNLENBQUE7UUFDaEMsSUFBSSxJQUFJLENBQUMsT0FBTyxLQUFLLFdBQVcsRUFBRTtZQUNoQyxPQUFPLElBQUksQ0FBQTtTQUNaO2FBQU0sSUFBSSxXQUFXLFlBQVksT0FBTyxJQUFJLElBQUksQ0FBQyxPQUFPLENBQUMsUUFBUSxDQUFDLFdBQVcsQ0FBQyxFQUFFO1lBQy9FLE9BQU8sSUFBSSxDQUFDLEtBQUssQ0FBQyxlQUFlLENBQUMsV0FBVyxDQUFDLENBQUE7U0FDL0M7YUFBTTtZQUNMLE9BQU8sSUFBSSxDQUFBO1NBQ1o7SUFDSCxDQUFDO0lBRUQsc0JBQVksK0JBQVU7YUFBdEI7WUFDRSxPQUFPLElBQUksQ0FBQyxPQUFPLENBQUMsVUFBVSxDQUFBO1FBQ2hDLENBQUM7OztPQUFBO0lBRUQsc0JBQVksK0JBQVU7YUFBdEI7WUFDRSxPQUFPLElBQUksQ0FBQyxNQUFNLENBQUMsVUFBVSxDQUFBO1FBQy9CLENBQUM7OztPQUFBO0lBRUQsc0JBQVksNEJBQU87YUFBbkI7WUFDRSxPQUFPLElBQUksQ0FBQyxLQUFLLENBQUMsT0FBTyxDQUFBO1FBQzNCLENBQUM7OztPQUFBO0lBRUQsc0JBQVksMEJBQUs7YUFBakI7WUFDRSxPQUFPLElBQUksQ0FBQyxPQUFPLENBQUMsS0FBSyxDQUFBO1FBQzNCLENBQUM7OztPQUFBO0lBQ0gsY0FBQztBQUFELENBQUMsQUEzRUQsSUEyRUMifQ==","var ElementObserver = /** @class */ (function () {\n function ElementObserver(element, delegate) {\n var _this = this;\n this.element = element;\n this.started = false;\n this.delegate = delegate;\n this.elements = new Set;\n this.mutationObserver = new MutationObserver(function (mutations) { return _this.processMutations(mutations); });\n }\n ElementObserver.prototype.start = function () {\n if (!this.started) {\n this.started = true;\n this.mutationObserver.observe(this.element, { attributes: true, childList: true, subtree: true });\n this.refresh();\n }\n };\n ElementObserver.prototype.stop = function () {\n if (this.started) {\n this.mutationObserver.takeRecords();\n this.mutationObserver.disconnect();\n this.started = false;\n }\n };\n ElementObserver.prototype.refresh = function () {\n if (this.started) {\n var matches = new Set(this.matchElementsInTree());\n for (var _i = 0, _a = Array.from(this.elements); _i < _a.length; _i++) {\n var element = _a[_i];\n if (!matches.has(element)) {\n this.removeElement(element);\n }\n }\n for (var _b = 0, _c = Array.from(matches); _b < _c.length; _b++) {\n var element = _c[_b];\n this.addElement(element);\n }\n }\n };\n // Mutation record processing\n ElementObserver.prototype.processMutations = function (mutations) {\n if (this.started) {\n for (var _i = 0, mutations_1 = mutations; _i < mutations_1.length; _i++) {\n var mutation = mutations_1[_i];\n this.processMutation(mutation);\n }\n }\n };\n ElementObserver.prototype.processMutation = function (mutation) {\n if (mutation.type == \"attributes\") {\n this.processAttributeChange(mutation.target, mutation.attributeName);\n }\n else if (mutation.type == \"childList\") {\n this.processRemovedNodes(mutation.removedNodes);\n this.processAddedNodes(mutation.addedNodes);\n }\n };\n ElementObserver.prototype.processAttributeChange = function (node, attributeName) {\n var element = node;\n if (this.elements.has(element)) {\n if (this.delegate.elementAttributeChanged && this.matchElement(element)) {\n this.delegate.elementAttributeChanged(element, attributeName);\n }\n else {\n this.removeElement(element);\n }\n }\n else if (this.matchElement(element)) {\n this.addElement(element);\n }\n };\n ElementObserver.prototype.processRemovedNodes = function (nodes) {\n for (var _i = 0, _a = Array.from(nodes); _i < _a.length; _i++) {\n var node = _a[_i];\n var element = this.elementFromNode(node);\n if (element) {\n this.processTree(element, this.removeElement);\n }\n }\n };\n ElementObserver.prototype.processAddedNodes = function (nodes) {\n for (var _i = 0, _a = Array.from(nodes); _i < _a.length; _i++) {\n var node = _a[_i];\n var element = this.elementFromNode(node);\n if (element && this.elementIsActive(element)) {\n this.processTree(element, this.addElement);\n }\n }\n };\n // Element matching\n ElementObserver.prototype.matchElement = function (element) {\n return this.delegate.matchElement(element);\n };\n ElementObserver.prototype.matchElementsInTree = function (tree) {\n if (tree === void 0) { tree = this.element; }\n return this.delegate.matchElementsInTree(tree);\n };\n ElementObserver.prototype.processTree = function (tree, processor) {\n for (var _i = 0, _a = this.matchElementsInTree(tree); _i < _a.length; _i++) {\n var element = _a[_i];\n processor.call(this, element);\n }\n };\n ElementObserver.prototype.elementFromNode = function (node) {\n if (node.nodeType == Node.ELEMENT_NODE) {\n return node;\n }\n };\n ElementObserver.prototype.elementIsActive = function (element) {\n if (element.isConnected != this.element.isConnected) {\n return false;\n }\n else {\n return this.element.contains(element);\n }\n };\n // Element tracking\n ElementObserver.prototype.addElement = function (element) {\n if (!this.elements.has(element)) {\n if (this.elementIsActive(element)) {\n this.elements.add(element);\n if (this.delegate.elementMatched) {\n this.delegate.elementMatched(element);\n }\n }\n }\n };\n ElementObserver.prototype.removeElement = function (element) {\n if (this.elements.has(element)) {\n this.elements.delete(element);\n if (this.delegate.elementUnmatched) {\n this.delegate.elementUnmatched(element);\n }\n }\n };\n return ElementObserver;\n}());\nexport { ElementObserver };\n//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZWxlbWVudF9vYnNlcnZlci5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uL3NyYy9lbGVtZW50X29ic2VydmVyLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQVNBO0lBUUUseUJBQVksT0FBZ0IsRUFBRSxRQUFpQztRQUEvRCxpQkFPQztRQU5DLElBQUksQ0FBQyxPQUFPLEdBQUcsT0FBTyxDQUFBO1FBQ3RCLElBQUksQ0FBQyxPQUFPLEdBQUcsS0FBSyxDQUFBO1FBQ3BCLElBQUksQ0FBQyxRQUFRLEdBQUcsUUFBUSxDQUFBO1FBRXhCLElBQUksQ0FBQyxRQUFRLEdBQUcsSUFBSSxHQUFHLENBQUE7UUFDdkIsSUFBSSxDQUFDLGdCQUFnQixHQUFHLElBQUksZ0JBQWdCLENBQUMsVUFBQyxTQUFTLElBQUssT0FBQSxLQUFJLENBQUMsZ0JBQWdCLENBQUMsU0FBUyxDQUFDLEVBQWhDLENBQWdDLENBQUMsQ0FBQTtJQUMvRixDQUFDO0lBRUQsK0JBQUssR0FBTDtRQUNFLElBQUksQ0FBQyxJQUFJLENBQUMsT0FBTyxFQUFFO1lBQ2pCLElBQUksQ0FBQyxPQUFPLEdBQUcsSUFBSSxDQUFBO1lBQ25CLElBQUksQ0FBQyxnQkFBZ0IsQ0FBQyxPQUFPLENBQUMsSUFBSSxDQUFDLE9BQU8sRUFBRSxFQUFFLFVBQVUsRUFBRSxJQUFJLEVBQUUsU0FBUyxFQUFFLElBQUksRUFBRSxPQUFPLEVBQUUsSUFBSSxFQUFFLENBQUMsQ0FBQTtZQUNqRyxJQUFJLENBQUMsT0FBTyxFQUFFLENBQUE7U0FDZjtJQUNILENBQUM7SUFFRCw4QkFBSSxHQUFKO1FBQ0UsSUFBSSxJQUFJLENBQUMsT0FBTyxFQUFFO1lBQ2hCLElBQUksQ0FBQyxnQkFBZ0IsQ0FBQyxXQUFXLEVBQUUsQ0FBQTtZQUNuQyxJQUFJLENBQUMsZ0JBQWdCLENBQUMsVUFBVSxFQUFFLENBQUE7WUFDbEMsSUFBSSxDQUFDLE9BQU8sR0FBRyxLQUFLLENBQUE7U0FDckI7SUFDSCxDQUFDO0lB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","import { ElementObserver } from \"./element_observer\";\nvar AttributeObserver = /** @class */ (function () {\n function AttributeObserver(element, attributeName, delegate) {\n this.attributeName = attributeName;\n this.delegate = delegate;\n this.elementObserver = new ElementObserver(element, this);\n }\n Object.defineProperty(AttributeObserver.prototype, \"element\", {\n get: function () {\n return this.elementObserver.element;\n },\n enumerable: true,\n configurable: true\n });\n Object.defineProperty(AttributeObserver.prototype, \"selector\", {\n get: function () {\n return \"[\" + this.attributeName + \"]\";\n },\n enumerable: true,\n configurable: true\n });\n AttributeObserver.prototype.start = function () {\n this.elementObserver.start();\n };\n AttributeObserver.prototype.stop = function () {\n this.elementObserver.stop();\n };\n AttributeObserver.prototype.refresh = function () {\n this.elementObserver.refresh();\n };\n Object.defineProperty(AttributeObserver.prototype, \"started\", {\n get: function () {\n return this.elementObserver.started;\n },\n enumerable: true,\n configurable: true\n });\n // Element observer delegate\n AttributeObserver.prototype.matchElement = function (element) {\n return element.hasAttribute(this.attributeName);\n };\n AttributeObserver.prototype.matchElementsInTree = function (tree) {\n var match = this.matchElement(tree) ? [tree] : [];\n var matches = Array.from(tree.querySelectorAll(this.selector));\n return match.concat(matches);\n };\n AttributeObserver.prototype.elementMatched = function (element) {\n if (this.delegate.elementMatchedAttribute) {\n this.delegate.elementMatchedAttribute(element, this.attributeName);\n }\n };\n AttributeObserver.prototype.elementUnmatched = function (element) {\n if (this.delegate.elementUnmatchedAttribute) {\n this.delegate.elementUnmatchedAttribute(element, this.attributeName);\n }\n };\n AttributeObserver.prototype.elementAttributeChanged = function (element, attributeName) {\n if (this.delegate.elementAttributeValueChanged && this.attributeName == attributeName) {\n this.delegate.elementAttributeValueChanged(element, attributeName);\n }\n };\n return AttributeObserver;\n}());\nexport { AttributeObserver };\n//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiYXR0cmlidXRlX29ic2VydmVyLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vc3JjL2F0dHJpYnV0ZV9vYnNlcnZlci50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQUUsZUFBZSxFQUEyQixNQUFNLG9CQUFvQixDQUFBO0FBUTdFO0lBTUUsMkJBQVksT0FBZ0IsRUFBRSxhQUFxQixFQUFFLFFBQW1DO1FBQ3RGLElBQUksQ0FBQyxhQUFhLEdBQUcsYUFBYSxDQUFBO1FBQ2xDLElBQUksQ0FBQyxRQUFRLEdBQUcsUUFBUSxDQUFBO1FBRXhCLElBQUksQ0FBQyxlQUFlLEdBQUcsSUFBSSxlQUFlLENBQUMsT0FBTyxFQUFFLElBQUksQ0FBQyxDQUFBO0lBQzNELENBQUM7SUFFRCxzQkFBSSxzQ0FBTzthQUFYO1lBQ0UsT0FBTyxJQUFJLENBQUMsZUFBZSxDQUFDLE9BQU8sQ0FBQTtRQUNyQyxDQUFDOzs7T0FBQTtJQUVELHNCQUFJLHVDQUFRO2FBQVo7WUFDRSxPQUFPLE1BQUksSUFBSSxDQUFDLGFBQWEsTUFBRyxDQUFBO1FBQ2xDLENBQUM7OztPQUFBO0lBRUQsaUNBQUssR0FBTDtRQUNFLElBQUksQ0FBQyxlQUFlLENBQUMsS0FBSyxFQUFFLENBQUE7SUFDOUIsQ0FBQztJQUVELGdDQUFJLEdBQUo7UUFDRSxJQUFJLENBQUMsZUFBZSxDQUFDLElBQUksRUFBRSxDQUFBO0lBQzdCLENBQUM7SUFFRCxtQ0FBTyxHQUFQO1FBQ0UsSUFBSSxDQUFDLGVBQWUsQ0FBQyxPQUFPLEVBQUUsQ0FBQTtJQUNoQyxDQUFDO0lBRUQsc0JBQUksc0NBQU87YUFBWDtZQUNFLE9BQU8sSUFBSSxDQUFDLGVBQWUsQ0FBQyxPQUFPLENBQUE7UUFDckMsQ0FBQzs7O09BQUE7SUFFRCw0QkFBNEI7SUFFNUIsd0NBQVksR0FBWixVQUFhLE9BQWdCO1FBQzNCLE9BQU8sT0FBTyxDQUFDLFlBQVksQ0FBQyxJQUFJLENBQUMsYUFBYSxDQUFDLENBQUE7SUFDakQsQ0FBQztJQUVELCtDQUFtQixHQUFuQixVQUFvQixJQUFhO1FBQy9CLElBQU0sS0FBSyxHQUFHLElBQUksQ0FBQyxZQUFZLENBQUMsSUFBSSxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsSUFBSSxDQUFDLENBQUMsQ0FBQyxDQUFDLEVBQUUsQ0FBQTtRQUNuRCxJQUFNLE9BQU8sR0FBRyxLQUFLLENBQUMsSUFBSSxDQUFDLElBQUksQ0FBQyxnQkFBZ0IsQ0FBQyxJQUFJLENBQUMsUUFBUSxDQUFDLENBQUMsQ0FBQTtRQUNoRSxPQUFPLEtBQUssQ0FBQyxNQUFNLENBQUMsT0FBTyxDQUFDLENBQUE7SUFDOUIsQ0FBQztJQUVELDBDQUFjLEdBQWQsVUFBZSxPQUFnQjtRQUM3QixJQUFJLElBQUksQ0FBQyxRQUFRLENBQUMsdUJBQXVCLEVBQUU7WUFDekMsSUFBSSxDQUFDLFFBQVEsQ0FBQyx1QkFBdUIsQ0FBQyxPQUFPLEVBQUUsSUFBSSxDQUFDLGFBQWEsQ0FBQyxDQUFBO1NBQ25FO0lBQ0gsQ0FBQztJQUVELDRDQUFnQixHQUFoQixVQUFpQixPQUFnQjtRQUMvQixJQUFJLElBQUksQ0FBQyxRQUFRLENBQUMseUJBQXlCLEVBQUU7WUFDM0MsSUFBSSxDQUFDLFFBQVEsQ0FBQyx5QkFBeUIsQ0FBQyxPQUFPLEVBQUUsSUFBSSxDQUFDLGFBQWEsQ0FBQyxDQUFBO1NBQ3JFO0lBQ0gsQ0FBQztJQUVELG1EQUF1QixHQUF2QixVQUF3QixPQUFnQixFQUFFLGFBQXFCO1FBQzdELElBQUksSUFBSSxDQUFDLFFBQVEsQ0FBQyw0QkFBNEIsSUFBSSxJQUFJLENBQUMsYUFBYSxJQUFJLGFBQWEsRUFBRTtZQUNyRixJQUFJLENBQUMsUUFBUSxDQUFDLDRCQUE0QixDQUFDLE9BQU8sRUFBRSxhQUFhLENBQUMsQ0FBQTtTQUNuRTtJQUNILENBQUM7SUFDSCx3QkFBQztBQUFELENBQUMsQUFsRUQsSUFrRUMifQ==","export function add(map, key, value) {\n fetch(map, key).add(value);\n}\nexport function del(map, key, value) {\n fetch(map, key).delete(value);\n prune(map, key);\n}\nexport function fetch(map, key) {\n var values = map.get(key);\n if (!values) {\n values = new Set();\n map.set(key, values);\n }\n return values;\n}\nexport function prune(map, key) {\n var values = map.get(key);\n if (values != null && values.size == 0) {\n map.delete(key);\n }\n}\n//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoic2V0X29wZXJhdGlvbnMuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi9zcmMvc2V0X29wZXJhdGlvbnMudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsTUFBTSxjQUFvQixHQUFtQixFQUFFLEdBQU0sRUFBRSxLQUFRO0lBQzdELEtBQUssQ0FBQyxHQUFHLEVBQUUsR0FBRyxDQUFDLENBQUMsR0FBRyxDQUFDLEtBQUssQ0FBQyxDQUFBO0FBQzVCLENBQUM7QUFFRCxNQUFNLGNBQW9CLEdBQW1CLEVBQUUsR0FBTSxFQUFFLEtBQVE7SUFDN0QsS0FBSyxDQUFDLEdBQUcsRUFBRSxHQUFHLENBQUMsQ0FBQyxNQUFNLENBQUMsS0FBSyxDQUFDLENBQUE7SUFDN0IsS0FBSyxDQUFDLEdBQUcsRUFBRSxHQUFHLENBQUMsQ0FBQTtBQUNqQixDQUFDO0FBRUQsTUFBTSxnQkFBc0IsR0FBbUIsRUFBRSxHQUFNO0lBQ3JELElBQUksTUFBTSxHQUFHLEdBQUcsQ0FBQyxHQUFHLENBQUMsR0FBRyxDQUFDLENBQUE7SUFDekIsSUFBSSxDQUFDLE1BQU0sRUFBRTtRQUNYLE1BQU0sR0FBRyxJQUFJLEdBQUcsRUFBRSxDQUFBO1FBQ2xCLEdBQUcsQ0FBQyxHQUFHLENBQUMsR0FBRyxFQUFFLE1BQU0sQ0FBQyxDQUFBO0tBQ3JCO0lBQ0QsT0FBTyxNQUFNLENBQUE7QUFDZixDQUFDO0FBRUQsTUFBTSxnQkFBc0IsR0FBbUIsRUFBRSxHQUFNO0lBQ3JELElBQU0sTUFBTSxHQUFHLEdBQUcsQ0FBQyxHQUFHLENBQUMsR0FBRyxDQUFDLENBQUE7SUFDM0IsSUFBSSxNQUFNLElBQUksSUFBSSxJQUFJLE1BQU0sQ0FBQyxJQUFJLElBQUksQ0FBQyxFQUFFO1FBQ3RDLEdBQUcsQ0FBQyxNQUFNLENBQUMsR0FBRyxDQUFDLENBQUE7S0FDaEI7QUFDSCxDQUFDIn0=","import { add, del } from \"./set_operations\";\nvar Multimap = /** @class */ (function () {\n function Multimap() {\n this.valuesByKey = new Map();\n }\n Object.defineProperty(Multimap.prototype, \"values\", {\n get: function () {\n var sets = Array.from(this.valuesByKey.values());\n return sets.reduce(function (values, set) { return values.concat(Array.from(set)); }, []);\n },\n enumerable: true,\n configurable: true\n });\n Object.defineProperty(Multimap.prototype, \"size\", {\n get: function () {\n var sets = Array.from(this.valuesByKey.values());\n return sets.reduce(function (size, set) { return size + set.size; }, 0);\n },\n enumerable: true,\n configurable: true\n });\n Multimap.prototype.add = function (key, value) {\n add(this.valuesByKey, key, value);\n };\n Multimap.prototype.delete = function (key, value) {\n del(this.valuesByKey, key, value);\n };\n Multimap.prototype.has = function (key, value) {\n var values = this.valuesByKey.get(key);\n return values != null && values.has(value);\n };\n Multimap.prototype.hasKey = function (key) {\n return this.valuesByKey.has(key);\n };\n Multimap.prototype.hasValue = function (value) {\n var sets = Array.from(this.valuesByKey.values());\n return sets.some(function (set) { return set.has(value); });\n };\n Multimap.prototype.getValuesForKey = function (key) {\n var values = this.valuesByKey.get(key);\n return values ? Array.from(values) : [];\n };\n Multimap.prototype.getKeysForValue = function (value) {\n return Array.from(this.valuesByKey)\n .filter(function (_a) {\n var key = _a[0], values = _a[1];\n return values.has(value);\n })\n .map(function (_a) {\n var key = _a[0], values = _a[1];\n return key;\n });\n };\n return Multimap;\n}());\nexport { Multimap };\n//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoibXVsdGltYXAuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi9zcmMvbXVsdGltYXAudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFFLEdBQUcsRUFBRSxHQUFHLEVBQUUsTUFBTSxrQkFBa0IsQ0FBQTtBQUUzQztJQUdFO1FBQ0UsSUFBSSxDQUFDLFdBQVcsR0FBRyxJQUFJLEdBQUcsRUFBYSxDQUFBO0lBQ3pDLENBQUM7SUFFRCxzQkFBSSw0QkFBTTthQUFWO1lBQ0UsSUFBTSxJQUFJLEdBQUcsS0FBSyxDQUFDLElBQUksQ0FBQyxJQUFJLENBQUMsV0FBVyxDQUFDLE1BQU0sRUFBRSxDQUFDLENBQUE7WUFDbEQsT0FBTyxJQUFJLENBQUMsTUFBTSxDQUFDLFVBQUMsTUFBTSxFQUFFLEdBQUcsSUFBSyxPQUFBLE1BQU0sQ0FBQyxNQUFNLENBQUMsS0FBSyxDQUFDLElBQUksQ0FBQyxHQUFHLENBQUMsQ0FBQyxFQUE5QixDQUE4QixFQUFRLEVBQUUsQ0FBQyxDQUFBO1FBQy9FLENBQUM7OztPQUFBO0lBRUQsc0JBQUksMEJBQUk7YUFBUjtZQUNFLElBQU0sSUFBSSxHQUFHLEtBQUssQ0FBQyxJQUFJLENBQUMsSUFBSSxDQUFDLFdBQVcsQ0FBQyxNQUFNLEVBQUUsQ0FBQyxDQUFBO1lBQ2xELE9BQU8sSUFBSSxDQUFDLE1BQU0sQ0FBQyxVQUFDLElBQUksRUFBRSxHQUFHLElBQUssT0FBQSxJQUFJLEdBQUcsR0FBRyxDQUFDLElBQUksRUFBZixDQUFlLEVBQUUsQ0FBQyxDQUFDLENBQUE7UUFDdkQsQ0FBQzs7O09BQUE7SUFFRCxzQkFBRyxHQUFILFVBQUksR0FBTSxFQUFFLEtBQVE7UUFDbEIsR0FBRyxDQUFDLElBQUksQ0FBQyxXQUFXLEVBQUUsR0FBRyxFQUFFLEtBQUssQ0FBQyxDQUFBO0lBQ25DLENBQUM7SUFFRCx5QkFBTSxHQUFOLFVBQU8sR0FBTSxFQUFFLEtBQVE7UUFDckIsR0FBRyxDQUFDLElBQUksQ0FBQyxXQUFXLEVBQUUsR0FBRyxFQUFFLEtBQUssQ0FBQyxDQUFBO0lBQ25DLENBQUM7SUFFRCxzQkFBRyxHQUFILFVBQUksR0FBTSxFQUFFLEtBQVE7UUFDbEIsSUFBTSxNQUFNLEdBQUcsSUFBSSxDQUFDLFdBQVcsQ0FBQyxHQUFHLENBQUMsR0FBRyxDQUFDLENBQUE7UUFDeEMsT0FBTyxNQUFNLElBQUksSUFBSSxJQUFJLE1BQU0sQ0FBQyxHQUFHLENBQUMsS0FBSyxDQUFDLENBQUE7SUFDNUMsQ0FBQztJQUVELHlCQUFNLEdBQU4sVUFBTyxHQUFNO1FBQ1gsT0FBTyxJQUFJLENBQUMsV0FBVyxDQUFDLEdBQUcsQ0FBQyxHQUFHLENBQUMsQ0FBQTtJQUNsQyxDQUFDO0lBRUQsMkJBQVEsR0FBUixVQUFTLEtBQVE7UUFDZixJQUFNLElBQUksR0FBRyxLQUFLLENBQUMsSUFBSSxDQUFDLElBQUksQ0FBQyxXQUFXLENBQUMsTUFBTSxFQUFFLENBQUMsQ0FBQTtRQUNsRCxPQUFPLElBQUksQ0FBQyxJQUFJLENBQUMsVUFBQSxHQUFHLElBQUksT0FBQSxHQUFHLENBQUMsR0FBRyxDQUFDLEtBQUssQ0FBQyxFQUFkLENBQWMsQ0FBQyxDQUFBO0lBQ3pDLENBQUM7SUFFRCxrQ0FBZSxHQUFmLFVBQWdCLEdBQU07UUFDcEIsSUFBTSxNQUFNLEdBQUcsSUFBSSxDQUFDLFdBQVcsQ0FBQyxHQUFHLENBQUMsR0FBRyxDQUFDLENBQUE7UUFDeEMsT0FBTyxNQUFNLENBQUMsQ0FBQyxDQUFDLEtBQUssQ0FBQyxJQUFJLENBQUMsTUFBTSxDQUFDLENBQUMsQ0FBQyxDQUFDLEVBQUUsQ0FBQTtJQUN6QyxDQUFDO0lBRUQsa0NBQWUsR0FBZixVQUFnQixLQUFRO1FBQ3RCLE9BQU8sS0FBSyxDQUFDLElBQUksQ0FBQyxJQUFJLENBQUMsV0FBVyxDQUFDO2FBQ2hDLE1BQU0sQ0FBQyxVQUFDLEVBQWE7Z0JBQVosV0FBRyxFQUFFLGNBQU07WUFBTSxPQUFBLE1BQU0sQ0FBQyxHQUFHLENBQUMsS0FBSyxDQUFDO1FBQWpCLENBQWlCLENBQUM7YUFDNUMsR0FBRyxDQUFDLFVBQUMsRUFBYTtnQkFBWixXQUFHLEVBQUUsY0FBTTtZQUFNLE9BQUEsR0FBRztRQUFILENBQUcsQ0FBQyxDQUFBO0lBQ2hDLENBQUM7SUFDSCxlQUFDO0FBQUQsQ0FBQyxBQWpERCxJQWlEQyJ9","var __extends = (this && this.__extends) || (function () {\n var extendStatics = Object.setPrototypeOf ||\n ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) ||\n function (d, b) { for (var p in b) if (b.hasOwnProperty(p)) d[p] = b[p]; };\n return function (d, b) {\n extendStatics(d, b);\n function __() { this.constructor = d; }\n d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\n };\n})();\nimport { Multimap } from \"./multimap\";\nimport { add, del } from \"./set_operations\";\nvar IndexedMultimap = /** @class */ (function (_super) {\n __extends(IndexedMultimap, _super);\n function IndexedMultimap() {\n var _this = _super.call(this) || this;\n _this.keysByValue = new Map;\n return _this;\n }\n Object.defineProperty(IndexedMultimap.prototype, \"values\", {\n get: function () {\n return Array.from(this.keysByValue.keys());\n },\n enumerable: true,\n configurable: true\n });\n IndexedMultimap.prototype.add = function (key, value) {\n _super.prototype.add.call(this, key, value);\n add(this.keysByValue, value, key);\n };\n IndexedMultimap.prototype.delete = function (key, value) {\n _super.prototype.delete.call(this, key, value);\n del(this.keysByValue, value, key);\n };\n IndexedMultimap.prototype.hasValue = function (value) {\n return this.keysByValue.has(value);\n };\n IndexedMultimap.prototype.getKeysForValue = function (value) {\n var set = this.keysByValue.get(value);\n return set ? Array.from(set) : [];\n };\n return IndexedMultimap;\n}(Multimap));\nexport { IndexedMultimap };\n//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaW5kZXhlZF9tdWx0aW1hcC5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uL3NyYy9pbmRleGVkX211bHRpbWFwLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiI7Ozs7Ozs7Ozs7QUFBQSxPQUFPLEVBQUUsUUFBUSxFQUFFLE1BQU0sWUFBWSxDQUFBO0FBQ3JDLE9BQU8sRUFBRSxHQUFHLEVBQUUsR0FBRyxFQUFFLE1BQU0sa0JBQWtCLENBQUE7QUFFM0M7SUFBMkMsbUNBQWM7SUFHdkQ7UUFBQSxZQUNFLGlCQUFPLFNBRVI7UUFEQyxLQUFJLENBQUMsV0FBVyxHQUFHLElBQUksR0FBRyxDQUFBOztJQUM1QixDQUFDO0lBRUQsc0JBQUksbUNBQU07YUFBVjtZQUNFLE9BQU8sS0FBSyxDQUFDLElBQUksQ0FBQyxJQUFJLENBQUMsV0FBVyxDQUFDLElBQUksRUFBRSxDQUFDLENBQUE7UUFDNUMsQ0FBQzs7O09BQUE7SUFFRCw2QkFBRyxHQUFILFVBQUksR0FBTSxFQUFFLEtBQVE7UUFDbEIsaUJBQU0sR0FBRyxZQUFDLEdBQUcsRUFBRSxLQUFLLENBQUMsQ0FBQTtRQUNyQixHQUFHLENBQUMsSUFBSSxDQUFDLFdBQVcsRUFBRSxLQUFLLEVBQUUsR0FBRyxDQUFDLENBQUE7SUFDbkMsQ0FBQztJQUVELGdDQUFNLEdBQU4sVUFBTyxHQUFNLEVBQUUsS0FBUTtRQUNyQixpQkFBTSxNQUFNLFlBQUMsR0FBRyxFQUFFLEtBQUssQ0FBQyxDQUFBO1FBQ3hCLEdBQUcsQ0FBQyxJQUFJLENBQUMsV0FBVyxFQUFFLEtBQUssRUFBRSxHQUFHLENBQUMsQ0FBQTtJQUNuQyxDQUFDO0lBRUQsa0NBQVEsR0FBUixVQUFTLEtBQVE7UUFDZixPQUFPLElBQUksQ0FBQyxXQUFXLENBQUMsR0FBRyxDQUFDLEtBQUssQ0FBQyxDQUFBO0lBQ3BDLENBQUM7SUFFRCx5Q0FBZSxHQUFmLFVBQWdCLEtBQVE7UUFDdEIsSUFBTSxHQUFHLEdBQUcsSUFBSSxDQUFDLFdBQVcsQ0FBQyxHQUFHLENBQUMsS0FBSyxDQUFDLENBQUE7UUFDdkMsT0FBTyxHQUFHLENBQUMsQ0FBQyxDQUFDLEtBQUssQ0FBQyxJQUFJLENBQUMsR0FBRyxDQUFDLENBQUMsQ0FBQyxDQUFDLEVBQUUsQ0FBQTtJQUNuQyxDQUFDO0lBQ0gsc0JBQUM7QUFBRCxDQUFDLEFBOUJELENBQTJDLFFBQVEsR0E4QmxEIn0=","import { AttributeObserver } from \"./attribute_observer\";\nimport { Multimap } from \"@stimulus/multimap\";\nvar TokenListObserver = /** @class */ (function () {\n function TokenListObserver(element, attributeName, delegate) {\n this.attributeObserver = new AttributeObserver(element, attributeName, this);\n this.delegate = delegate;\n this.tokensByElement = new Multimap;\n }\n Object.defineProperty(TokenListObserver.prototype, \"started\", {\n get: function () {\n return this.attributeObserver.started;\n },\n enumerable: true,\n configurable: true\n });\n TokenListObserver.prototype.start = function () {\n this.attributeObserver.start();\n };\n TokenListObserver.prototype.stop = function () {\n this.attributeObserver.stop();\n };\n TokenListObserver.prototype.refresh = function () {\n this.attributeObserver.refresh();\n };\n Object.defineProperty(TokenListObserver.prototype, \"element\", {\n get: function () {\n return this.attributeObserver.element;\n },\n enumerable: true,\n configurable: true\n });\n Object.defineProperty(TokenListObserver.prototype, \"attributeName\", {\n get: function () {\n return this.attributeObserver.attributeName;\n },\n enumerable: true,\n configurable: true\n });\n // Attribute observer delegate\n TokenListObserver.prototype.elementMatchedAttribute = function (element) {\n this.tokensMatched(this.readTokensForElement(element));\n };\n TokenListObserver.prototype.elementAttributeValueChanged = function (element) {\n var _a = this.refreshTokensForElement(element), unmatchedTokens = _a[0], matchedTokens = _a[1];\n this.tokensUnmatched(unmatchedTokens);\n this.tokensMatched(matchedTokens);\n };\n TokenListObserver.prototype.elementUnmatchedAttribute = function (element) {\n this.tokensUnmatched(this.tokensByElement.getValuesForKey(element));\n };\n TokenListObserver.prototype.tokensMatched = function (tokens) {\n var _this = this;\n tokens.forEach(function (token) { return _this.tokenMatched(token); });\n };\n TokenListObserver.prototype.tokensUnmatched = function (tokens) {\n var _this = this;\n tokens.forEach(function (token) { return _this.tokenUnmatched(token); });\n };\n TokenListObserver.prototype.tokenMatched = function (token) {\n this.delegate.tokenMatched(token);\n this.tokensByElement.add(token.element, token);\n };\n TokenListObserver.prototype.tokenUnmatched = function (token) {\n this.delegate.tokenUnmatched(token);\n this.tokensByElement.delete(token.element, token);\n };\n TokenListObserver.prototype.refreshTokensForElement = function (element) {\n var previousTokens = this.tokensByElement.getValuesForKey(element);\n var currentTokens = this.readTokensForElement(element);\n var firstDifferingIndex = zip(previousTokens, currentTokens)\n .findIndex(function (_a) {\n var previousToken = _a[0], currentToken = _a[1];\n return !tokensAreEqual(previousToken, currentToken);\n });\n if (firstDifferingIndex == -1) {\n return [[], []];\n }\n else {\n return [previousTokens.slice(firstDifferingIndex), currentTokens.slice(firstDifferingIndex)];\n }\n };\n TokenListObserver.prototype.readTokensForElement = function (element) {\n var attributeName = this.attributeName;\n var tokenString = element.getAttribute(attributeName) || \"\";\n return parseTokenString(tokenString, element, attributeName);\n };\n return TokenListObserver;\n}());\nexport { TokenListObserver };\nfunction parseTokenString(tokenString, element, attributeName) {\n return tokenString.trim().split(/\\s+/).filter(function (content) { return content.length; })\n .map(function (content, index) { return ({ element: element, attributeName: attributeName, content: content, index: index }); });\n}\nfunction zip(left, right) {\n var length = Math.max(left.length, right.length);\n return Array.from({ length: length }, function (_, index) { return [left[index], right[index]]; });\n}\nfunction tokensAreEqual(left, right) {\n return left && right && left.index == right.index && left.content == right.content;\n}\n//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidG9rZW5fbGlzdF9vYnNlcnZlci5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uL3NyYy90b2tlbl9saXN0X29ic2VydmVyLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFBRSxpQkFBaUIsRUFBNkIsTUFBTSxzQkFBc0IsQ0FBQTtBQUNuRixPQUFPLEVBQUUsUUFBUSxFQUFFLE1BQU0sb0JBQW9CLENBQUE7QUFjN0M7SUFLRSwyQkFBWSxPQUFnQixFQUFFLGFBQXFCLEVBQUUsUUFBbUM7UUFDdEYsSUFBSSxDQUFDLGlCQUFpQixHQUFHLElBQUksaUJBQWlCLENBQUMsT0FBTyxFQUFFLGFBQWEsRUFBRSxJQUFJLENBQUMsQ0FBQTtRQUM1RSxJQUFJLENBQUMsUUFBUSxHQUFHLFFBQVEsQ0FBQTtRQUN4QixJQUFJLENBQUMsZUFBZSxHQUFHLElBQUksUUFBUSxDQUFBO0lBQ3JDLENBQUM7SUFFRCxzQkFBSSxzQ0FBTzthQUFYO1lBQ0UsT0FBTyxJQUFJLENBQUMsaUJBQWlCLENBQUMsT0FBTyxDQUFBO1FBQ3ZDLENBQUM7OztPQUFBO0lBRUQsaUNBQUssR0FBTDtRQUNFLElBQUksQ0FBQyxpQkFBaUIsQ0FBQyxLQUFLLEVBQUUsQ0FBQTtJQUNoQyxDQUFDO0lBRUQsZ0NBQUksR0FBSjtRQUNFLElBQUksQ0FBQyxpQkFBaUIsQ0FBQyxJQUFJLEVBQUUsQ0FBQTtJQUMvQixDQUFDO0lBRUQsbUNBQU8sR0FBUDtRQUNFLElBQUksQ0FBQyxpQkFBaUIsQ0FBQyxPQUFPLEVBQUUsQ0FBQTtJQUNsQyxDQUFDO0lBRUQsc0JBQUksc0NBQU87YUFBWDtZQUNFLE9BQU8sSUFBSSxDQUFDLGlCQUFpQixDQUFDLE9BQU8sQ0FBQTtRQUN2QyxDQUFDOzs7T0FBQTtJQUVELHNCQUFJLDRDQUFhO2FBQWpCO1lBQ0UsT0FBTyxJQUFJLENBQUMsaUJBQWlCLENBQUMsYUFBYSxDQUFBO1FBQzdDLENBQUM7OztPQUFBO0lBRUQsOEJBQThCO0lB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","import { TokenListObserver } from \"./token_list_observer\";\nvar ValueListObserver = /** @class */ (function () {\n function ValueListObserver(element, attributeName, delegate) {\n this.tokenListObserver = new TokenListObserver(element, attributeName, this);\n this.delegate = delegate;\n this.parseResultsByToken = new WeakMap;\n this.valuesByTokenByElement = new WeakMap;\n }\n Object.defineProperty(ValueListObserver.prototype, \"started\", {\n get: function () {\n return this.tokenListObserver.started;\n },\n enumerable: true,\n configurable: true\n });\n ValueListObserver.prototype.start = function () {\n this.tokenListObserver.start();\n };\n ValueListObserver.prototype.stop = function () {\n this.tokenListObserver.stop();\n };\n ValueListObserver.prototype.refresh = function () {\n this.tokenListObserver.refresh();\n };\n Object.defineProperty(ValueListObserver.prototype, \"element\", {\n get: function () {\n return this.tokenListObserver.element;\n },\n enumerable: true,\n configurable: true\n });\n Object.defineProperty(ValueListObserver.prototype, \"attributeName\", {\n get: function () {\n return this.tokenListObserver.attributeName;\n },\n enumerable: true,\n configurable: true\n });\n ValueListObserver.prototype.tokenMatched = function (token) {\n var element = token.element;\n var value = this.fetchParseResultForToken(token).value;\n if (value) {\n this.fetchValuesByTokenForElement(element).set(token, value);\n this.delegate.elementMatchedValue(element, value);\n }\n };\n ValueListObserver.prototype.tokenUnmatched = function (token) {\n var element = token.element;\n var value = this.fetchParseResultForToken(token).value;\n if (value) {\n this.fetchValuesByTokenForElement(element).delete(token);\n this.delegate.elementUnmatchedValue(element, value);\n }\n };\n ValueListObserver.prototype.fetchParseResultForToken = function (token) {\n var parseResult = this.parseResultsByToken.get(token);\n if (!parseResult) {\n parseResult = this.parseToken(token);\n this.parseResultsByToken.set(token, parseResult);\n }\n return parseResult;\n };\n ValueListObserver.prototype.fetchValuesByTokenForElement = function (element) {\n var valuesByToken = this.valuesByTokenByElement.get(element);\n if (!valuesByToken) {\n valuesByToken = new Map;\n this.valuesByTokenByElement.set(element, valuesByToken);\n }\n return valuesByToken;\n };\n ValueListObserver.prototype.parseToken = function (token) {\n try {\n var value = this.delegate.parseValueForToken(token);\n return { value: value };\n }\n catch (error) {\n return { error: error };\n }\n };\n return ValueListObserver;\n}());\nexport { ValueListObserver };\n//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidmFsdWVfbGlzdF9vYnNlcnZlci5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uL3NyYy92YWx1ZV9saXN0X29ic2VydmVyLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFBUyxpQkFBaUIsRUFBNkIsTUFBTSx1QkFBdUIsQ0FBQTtBQWEzRjtJQU1FLDJCQUFZLE9BQWdCLEVBQUUsYUFBcUIsRUFBRSxRQUFzQztRQUN6RixJQUFJLENBQUMsaUJBQWlCLEdBQUcsSUFBSSxpQkFBaUIsQ0FBQyxPQUFPLEVBQUUsYUFBYSxFQUFFLElBQUksQ0FBQyxDQUFBO1FBQzVFLElBQUksQ0FBQyxRQUFRLEdBQUcsUUFBUSxDQUFBO1FBQ3hCLElBQUksQ0FBQyxtQkFBbUIsR0FBRyxJQUFJLE9BQU8sQ0FBQTtRQUN0QyxJQUFJLENBQUMsc0JBQXNCLEdBQUcsSUFBSSxPQUFPLENBQUE7SUFDM0MsQ0FBQztJQUVELHNCQUFJLHNDQUFPO2FBQVg7WUFDRSxPQUFPLElBQUksQ0FBQyxpQkFBaUIsQ0FBQyxPQUFPLENBQUE7UUFDdkMsQ0FBQzs7O09BQUE7SUFFRCxpQ0FBSyxHQUFMO1FBQ0UsSUFBSSxDQUFDLGlCQUFpQixDQUFDLEtBQUssRUFBRSxDQUFBO0lBQ2hDLENBQUM7SUFFRCxnQ0FBSSxHQUFKO1FBQ0UsSUFBSSxDQUFDLGlCQUFpQixDQUFDLElBQUksRUFBRSxDQUFBO0lBQy9CLENBQUM7SUFFRCxtQ0FBTyxHQUFQO1FBQ0UsSUFBSSxDQUFDLGlCQUFpQixDQUFDLE9BQU8sRUFBRSxDQUFBO0lBQ2xDLENBQUM7SUFFRCxzQkFBSSxzQ0FBTzthQUFYO1lBQ0UsT0FBTyxJQUFJLENBQUMsaUJBQWlCLENBQUMsT0FBTyxDQUFBO1FBQ3ZDLENBQUM7OztPQUFBO0lBRUQsc0JBQUksNENBQWE7YUFBakI7WUFDRSxPQUFPLElBQUksQ0FBQyxpQkFBaUIsQ0FBQyxhQUFhLENBQUE7UUFDN0MsQ0FBQzs7O09BQUE7SUFFRCx3Q0FBWSxHQUFaLFVBQWEsS0FBWTtRQUNmLElBQUEsdUJBQU8sQ0FBVTtRQUNqQixJQUFBLGtEQUFLLENBQXlDO1FBQ3RELElBQUksS0FBSyxFQUFFO1lBQ1QsSUFBSSxDQUFDLDRCQUE0QixDQUFDLE9BQU8sQ0FBQyxDQUFDLEdBQUcsQ0FBQyxLQUFLLEVBQUUsS0FBSyxDQUFDLENBQUE7WUFDNUQsSUFBSSxDQUFDLFFBQVEsQ0FBQyxtQkFBbUIsQ0FBQyxPQUFPLEVBQUUsS0FBSyxDQUFDLENBQUE7U0FDbEQ7SUFDSCxDQUFDO0lBRUQsMENBQWMsR0FBZCxVQUFlLEtBQVk7UUFDakIsSUFBQSx1QkFBTyxDQUFVO1FBQ2pCLElBQUEsa0RBQUssQ0FBeUM7UUFDdEQsSUFBSSxLQUFLLEVBQUU7WUFDVCxJQUFJLENBQUMsNEJBQTRCLENBQUMsT0FBTyxDQUFDLENBQUMsTUFBTSxDQUFDLEtBQUssQ0FBQyxDQUFBO1lBQ3hELElBQUksQ0FBQyxRQUFRLENBQUMscUJBQXFCLENBQUMsT0FBTyxFQUFFLEtBQUssQ0FBQyxDQUFBO1NBQ3BEO0lBQ0gsQ0FBQztJQUVPLG9EQUF3QixHQUFoQyxVQUFpQyxLQUFZO1FBQzNDLElBQUksV0FBVyxHQUFHLElBQUksQ0FBQyxtQkFBbUIsQ0FBQyxHQUFHLENBQUMsS0FBSyxDQUFDLENBQUE7UUFDckQsSUFBSSxDQUFDLFdBQVcsRUFBRTtZQUNoQixXQUFXLEdBQUcsSUFBSSxDQUFDLFVBQVUsQ0FBQyxLQUFLLENBQUMsQ0FBQTtZQUNwQyxJQUFJLENBQUMsbUJBQW1CLENBQUMsR0FBRyxDQUFDLEtBQUssRUFBRSxXQUFXLENBQUMsQ0FBQTtTQUNqRDtRQUNELE9BQU8sV0FBVyxDQUFBO0lBQ3BCLENBQUM7SUFFTyx3REFBNEIsR0FBcEMsVUFBcUMsT0FBZ0I7UUFDbkQsSUFBSSxhQUFhLEdBQUcsSUFBSSxDQUFDLHNCQUFzQixDQUFDLEdBQUcsQ0FBQyxPQUFPLENBQUMsQ0FBQTtRQUM1RCxJQUFJLENBQUMsYUFBYSxFQUFFO1lBQ2xCLGFBQWEsR0FBRyxJQUFJLEdBQUcsQ0FBQTtZQUN2QixJQUFJLENBQUMsc0JBQXNCLENBQUMsR0FBRyxDQUFDLE9BQU8sRUFBRSxhQUFhLENBQUMsQ0FBQTtTQUN4RDtRQUNELE9BQU8sYUFBYSxDQUFBO0lBQ3RCLENBQUM7SUFFTyxzQ0FBVSxHQUFsQixVQUFtQixLQUFZO1FBQzdCLElBQUk7WUFDRixJQUFNLEtBQUssR0FBRyxJQUFJLENBQUMsUUFBUSxDQUFDLGtCQUFrQixDQUFDLEtBQUssQ0FBQyxDQUFBO1lBQ3JELE9BQU8sRUFBRSxLQUFLLE9BQUEsRUFBRSxDQUFBO1NBQ2pCO1FBQUMsT0FBTyxLQUFLLEVBQUU7WUFDZCxPQUFPLEVBQUUsS0FBSyxPQUFBLEVBQUUsQ0FBQTtTQUNqQjtJQUNILENBQUM7SUFDSCx3QkFBQztBQUFELENBQUMsQUFqRkQsSUFpRkMifQ==","import { Action } from \"./action\";\nimport { Binding } from \"./binding\";\nimport { ValueListObserver } from \"@stimulus/mutation-observers\";\nvar BindingObserver = /** @class */ (function () {\n function BindingObserver(context, delegate) {\n this.context = context;\n this.delegate = delegate;\n this.bindingsByAction = new Map;\n }\n BindingObserver.prototype.start = function () {\n if (!this.valueListObserver) {\n this.valueListObserver = new ValueListObserver(this.element, this.actionAttribute, this);\n this.valueListObserver.start();\n }\n };\n BindingObserver.prototype.stop = function () {\n if (this.valueListObserver) {\n this.valueListObserver.stop();\n delete this.valueListObserver;\n this.disconnectAllActions();\n }\n };\n Object.defineProperty(BindingObserver.prototype, \"element\", {\n get: function () {\n return this.context.element;\n },\n enumerable: true,\n configurable: true\n });\n Object.defineProperty(BindingObserver.prototype, \"identifier\", {\n get: function () {\n return this.context.identifier;\n },\n enumerable: true,\n configurable: true\n });\n Object.defineProperty(BindingObserver.prototype, \"actionAttribute\", {\n get: function () {\n return this.schema.actionAttribute;\n },\n enumerable: true,\n configurable: true\n });\n Object.defineProperty(BindingObserver.prototype, \"schema\", {\n get: function () {\n return this.context.schema;\n },\n enumerable: true,\n configurable: true\n });\n Object.defineProperty(BindingObserver.prototype, \"bindings\", {\n get: function () {\n return Array.from(this.bindingsByAction.values());\n },\n enumerable: true,\n configurable: true\n });\n BindingObserver.prototype.connectAction = function (action) {\n var binding = new Binding(this.context, action);\n this.bindingsByAction.set(action, binding);\n this.delegate.bindingConnected(binding);\n };\n BindingObserver.prototype.disconnectAction = function (action) {\n var binding = this.bindingsByAction.get(action);\n if (binding) {\n this.bindingsByAction.delete(action);\n this.delegate.bindingDisconnected(binding);\n }\n };\n BindingObserver.prototype.disconnectAllActions = function () {\n var _this = this;\n this.bindings.forEach(function (binding) { return _this.delegate.bindingDisconnected(binding); });\n this.bindingsByAction.clear();\n };\n // Value observer delegate\n BindingObserver.prototype.parseValueForToken = function (token) {\n var action = Action.forToken(token);\n if (action.identifier == this.identifier) {\n return action;\n }\n };\n BindingObserver.prototype.elementMatchedValue = function (element, action) {\n this.connectAction(action);\n };\n BindingObserver.prototype.elementUnmatchedValue = function (element, action) {\n this.disconnectAction(action);\n };\n return BindingObserver;\n}());\nexport { BindingObserver };\n//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiYmluZGluZ19vYnNlcnZlci5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uL3NyYy9iaW5kaW5nX29ic2VydmVyLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFBRSxNQUFNLEVBQUUsTUFBTSxVQUFVLENBQUE7QUFDakMsT0FBTyxFQUFFLE9BQU8sRUFBRSxNQUFNLFdBQVcsQ0FBQTtBQUluQyxPQUFPLEVBQVMsaUJBQWlCLEVBQTZCLE1BQU0sOEJBQThCLENBQUE7QUFPbEc7SUFNRSx5QkFBWSxPQUFnQixFQUFFLFFBQWlDO1FBQzdELElBQUksQ0FBQyxPQUFPLEdBQUcsT0FBTyxDQUFBO1FBQ3RCLElBQUksQ0FBQyxRQUFRLEdBQUcsUUFBUSxDQUFBO1FBQ3hCLElBQUksQ0FBQyxnQkFBZ0IsR0FBRyxJQUFJLEdBQUcsQ0FBQTtJQUNqQyxDQUFDO0lBRUQsK0JBQUssR0FBTDtRQUNFLElBQUksQ0FBQyxJQUFJLENBQUMsaUJBQWlCLEVBQUU7WUFDM0IsSUFBSSxDQUFDLGlCQUFpQixHQUFHLElBQUksaUJBQWlCLENBQUMsSUFBSSxDQUFDLE9BQU8sRUFBRSxJQUFJLENBQUMsZUFBZSxFQUFFLElBQUksQ0FBQyxDQUFBO1lBQ3hGLElBQUksQ0FBQyxpQkFBaUIsQ0FBQyxLQUFLLEVBQUUsQ0FBQTtTQUMvQjtJQUNILENBQUM7SUFFRCw4QkFBSSxHQUFKO1FBQ0UsSUFBSSxJQUFJLENBQUMsaUJBQWlCLEVBQUU7WUFDMUIsSUFBSSxDQUFDLGlCQUFpQixDQUFDLElBQUksRUFBRSxDQUFBO1lBQzdCLE9BQU8sSUFBSSxDQUFDLGlCQUFpQixDQUFBO1lBQzdCLElBQUksQ0FBQyxvQkFBb0IsRUFBRSxDQUFBO1NBQzVCO0lBQ0gsQ0FBQztJQUVELHNCQUFJLG9DQUFPO2FBQVg7WUFDRSxPQUFPLElBQUksQ0FBQyxPQUFPLENBQUMsT0FBTyxDQUFBO1FBQzdCLENBQUM7OztPQUFBO0lBRUQsc0JBQUksdUNBQVU7YUFBZDtZQUNFLE9BQU8sSUFBSSxDQUFDLE9BQU8sQ0FBQyxVQUFVLENBQUE7UUFDaEMsQ0FBQzs7O09BQUE7SUFFRCxzQkFBSSw0Q0FBZTthQUFuQjtZQUNFLE9BQU8sSUFBSSxDQUFDLE1BQU0sQ0FBQyxlQUFlLENBQUE7UUFDcEMsQ0FBQzs7O09BQUE7SUFFRCxzQkFBSSxtQ0FBTTthQUFWO1lBQ0UsT0FBTyxJQUFJLENBQUMsT0FBTyxDQUFDLE1BQU0sQ0FBQTtRQUM1QixDQUFDOzs7T0FBQTtJQUVELHNCQUFJLHFDQUFRO2FBQVo7WUFDRSxPQUFPLEtBQUssQ0FBQyxJQUFJLENBQUMsSUFBSSxDQUFDLGdCQUFnQixDQUFDLE1BQU0sRUFBRSxDQUFDLENBQUE7UUFDbkQsQ0FBQzs7O09BQUE7SUFFTyx1Q0FBYSxHQUFyQixVQUFzQixNQUFjO1FBQ2xDLElBQU0sT0FBTyxHQUFHLElBQUksT0FBTyxDQUFDLElBQUksQ0FBQyxPQUFPLEVBQUUsTUFBTSxDQUFDLENBQUE7UUFDakQsSUFBSSxDQUFDLGdCQUFnQixDQUFDLEdBQUcsQ0FBQyxNQUFNLEVBQUUsT0FBTyxDQUFDLENBQUE7UUFDMUMsSUFBSSxDQUFDLFFBQVEsQ0FBQyxnQkFBZ0IsQ0FBQyxPQUFPLENBQUMsQ0FBQTtJQUN6QyxDQUFDO0lBRU8sMENBQWdCLEdBQXhCLFVBQXlCLE1BQWM7UUFDckMsSUFBTSxPQUFPLEdBQUcsSUFBSSxDQUFDLGdCQUFnQixDQUFDLEdBQUcsQ0FBQyxNQUFNLENBQUMsQ0FBQTtRQUNqRCxJQUFJLE9BQU8sRUFBRTtZQUNYLElBQUksQ0FBQyxnQkFBZ0IsQ0FBQyxNQUFNLENBQUMsTUFBTSxDQUFDLENBQUE7WUFDcEMsSUFBSSxDQUFDLFFBQVEsQ0FBQyxtQkFBbUIsQ0FBQyxPQUFPLENBQUMsQ0FBQTtTQUMzQztJQUNILENBQUM7SUFFTyw4Q0FBb0IsR0FBNUI7UUFBQSxpQkFHQztRQUZDLElBQUksQ0FBQyxRQUFRLENBQUMsT0FBTyxDQUFDLFVBQUEsT0FBTyxJQUFJLE9BQUEsS0FBSSxDQUFDLFFBQVEsQ0FBQyxtQkFBbUIsQ0FBQyxPQUFPLENBQUMsRUFBMUMsQ0FBMEMsQ0FBQyxDQUFBO1FBQzVFLElBQUksQ0FBQyxnQkFBZ0IsQ0FBQyxLQUFLLEVBQUUsQ0FBQTtJQUMvQixDQUFDO0lBRUQsMEJBQTBCO0lBRTFCLDRDQUFrQixHQUFsQixVQUFtQixLQUFZO1FBQzdCLElBQU0sTUFBTSxHQUFHLE1BQU0sQ0FBQyxRQUFRLENBQUMsS0FBSyxDQUFDLENBQUE7UUFDckMsSUFBSSxNQUFNLENBQUMsVUFBVSxJQUFJLElBQUksQ0FBQyxVQUFVLEVBQUU7WUFDeEMsT0FBTyxNQUFNLENBQUE7U0FDZDtJQUNILENBQUM7SUFFRCw2Q0FBbUIsR0FBbkIsVUFBb0IsT0FBZ0IsRUFBRSxNQUFjO1FBQ2xELElBQUksQ0FBQyxhQUFhLENBQUMsTUFBTSxDQUFDLENBQUE7SUFDNUIsQ0FBQztJQUVELCtDQUFxQixHQUFyQixVQUFzQixPQUFnQixFQUFFLE1BQWM7UUFDcEQsSUFBSSxDQUFDLGdCQUFnQixDQUFDLE1BQU0sQ0FBQyxDQUFBO0lBQy9CLENBQUM7SUFDSCxzQkFBQztBQUFELENBQUMsQUFsRkQsSUFrRkMifQ==","import { BindingObserver } from \"./binding_observer\";\nvar Context = /** @class */ (function () {\n function Context(module, scope) {\n this.module = module;\n this.scope = scope;\n this.controller = new module.controllerConstructor(this);\n this.bindingObserver = new BindingObserver(this, this.dispatcher);\n try {\n this.controller.initialize();\n }\n catch (error) {\n this.handleError(error, \"initializing controller\");\n }\n }\n Context.prototype.connect = function () {\n this.bindingObserver.start();\n try {\n this.controller.connect();\n }\n catch (error) {\n this.handleError(error, \"connecting controller\");\n }\n };\n Context.prototype.disconnect = function () {\n try {\n this.controller.disconnect();\n }\n catch (error) {\n this.handleError(error, \"disconnecting controller\");\n }\n this.bindingObserver.stop();\n };\n Object.defineProperty(Context.prototype, \"application\", {\n get: function () {\n return this.module.application;\n },\n enumerable: true,\n configurable: true\n });\n Object.defineProperty(Context.prototype, \"identifier\", {\n get: function () {\n return this.module.identifier;\n },\n enumerable: true,\n configurable: true\n });\n Object.defineProperty(Context.prototype, \"schema\", {\n get: function () {\n return this.application.schema;\n },\n enumerable: true,\n configurable: true\n });\n Object.defineProperty(Context.prototype, \"dispatcher\", {\n get: function () {\n return this.application.dispatcher;\n },\n enumerable: true,\n configurable: true\n });\n Object.defineProperty(Context.prototype, \"element\", {\n get: function () {\n return this.scope.element;\n },\n enumerable: true,\n configurable: true\n });\n Object.defineProperty(Context.prototype, \"parentElement\", {\n get: function () {\n return this.element.parentElement;\n },\n enumerable: true,\n configurable: true\n });\n // Error handling\n Context.prototype.handleError = function (error, message, detail) {\n if (detail === void 0) { detail = {}; }\n var _a = this, identifier = _a.identifier, controller = _a.controller, element = _a.element;\n detail = Object.assign({ identifier: identifier, controller: controller, element: element }, detail);\n this.application.handleError(error, \"Error \" + message, detail);\n };\n return Context;\n}());\nexport { Context };\n//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiY29udGV4dC5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uL3NyYy9jb250ZXh0LnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUNBLE9BQU8sRUFBRSxlQUFlLEVBQUUsTUFBTSxvQkFBb0IsQ0FBQTtBQVFwRDtJQU1FLGlCQUFZLE1BQWMsRUFBRSxLQUFZO1FBQ3RDLElBQUksQ0FBQyxNQUFNLEdBQUcsTUFBTSxDQUFBO1FBQ3BCLElBQUksQ0FBQyxLQUFLLEdBQUcsS0FBSyxDQUFBO1FBQ2xCLElBQUksQ0FBQyxVQUFVLEdBQUcsSUFBSSxNQUFNLENBQUMscUJBQXFCLENBQUMsSUFBSSxDQUFDLENBQUE7UUFDeEQsSUFBSSxDQUFDLGVBQWUsR0FBRyxJQUFJLGVBQWUsQ0FBQyxJQUFJLEVBQUUsSUFBSSxDQUFDLFVBQVUsQ0FBQyxDQUFBO1FBRWpFLElBQUk7WUFDRixJQUFJLENBQUMsVUFBVSxDQUFDLFVBQVUsRUFBRSxDQUFBO1NBQzdCO1FBQUMsT0FBTyxLQUFLLEVBQUU7WUFDZCxJQUFJLENBQUMsV0FBVyxDQUFDLEtBQUssRUFBRSx5QkFBeUIsQ0FBQyxDQUFBO1NBQ25EO0lBQ0gsQ0FBQztJQUVELHlCQUFPLEdBQVA7UUFDRSxJQUFJLENBQUMsZUFBZSxDQUFDLEtBQUssRUFBRSxDQUFBO1FBRTVCLElBQUk7WUFDRixJQUFJLENBQUMsVUFBVSxDQUFDLE9BQU8sRUFBRSxDQUFBO1NBQzFCO1FBQUMsT0FBTyxLQUFLLEVBQUU7WUFDZCxJQUFJLENBQUMsV0FBVyxDQUFDLEtBQUssRUFBRSx1QkFBdUIsQ0FBQyxDQUFBO1NBQ2pEO0lBQ0gsQ0FBQztJQUVELDRCQUFVLEdBQVY7UUFDRSxJQUFJO1lBQ0YsSUFBSSxDQUFDLFVBQVUsQ0FBQyxVQUFVLEVBQUUsQ0FBQTtTQUM3QjtRQUFDLE9BQU8sS0FBSyxFQUFFO1lBQ2QsSUFBSSxDQUFDLFdBQVcsQ0FBQyxLQUFLLEVBQUUsMEJBQTBCLENBQUMsQ0FBQTtTQUNwRDtRQUVELElBQUksQ0FBQyxlQUFlLENBQUMsSUFBSSxFQUFFLENBQUE7SUFDN0IsQ0FBQztJQUVELHNCQUFJLGdDQUFXO2FBQWY7WUFDRSxPQUFPLElBQUksQ0FBQyxNQUFNLENBQUMsV0FBVyxDQUFBO1FBQ2hDLENBQUM7OztPQUFBO0lBRUQsc0JBQUksK0JBQVU7YUFBZDtZQUNFLE9BQU8sSUFBSSxDQUFDLE1BQU0sQ0FBQyxVQUFVLENBQUE7UUFDL0IsQ0FBQzs7O09BQUE7SUFFRCxzQkFBSSwyQkFBTTthQUFWO1lBQ0UsT0FBTyxJQUFJLENBQUMsV0FBVyxDQUFDLE1BQU0sQ0FBQTtRQUNoQyxDQUFDOzs7T0FBQTtJQUVELHNCQUFJLCtCQUFVO2FBQWQ7WUFDRSxPQUFPLElBQUksQ0FBQyxXQUFXLENBQUMsVUFBVSxDQUFBO1FBQ3BDLENBQUM7OztPQUFBO0lBRUQsc0JBQUksNEJBQU87YUFBWDtZQUNFLE9BQU8sSUFBSSxDQUFDLEtBQUssQ0FBQyxPQUFPLENBQUE7UUFDM0IsQ0FBQzs7O09BQUE7SUFFRCxzQkFBSSxrQ0FBYTthQUFqQjtZQUNFLE9BQU8sSUFBSSxDQUFDLE9BQU8sQ0FBQyxhQUFhLENBQUE7UUFDbkMsQ0FBQzs7O09BQUE7SUFFRCxpQkFBaUI7SUFFakIsNkJBQVcsR0FBWCxVQUFZLEtBQVksRUFBRSxPQUFlLEVBQUUsTUFBbUI7UUFBbkIsdUJBQUEsRUFBQSxXQUFtQjtRQUN0RCxJQUFBLFNBQTBDLEVBQXhDLDBCQUFVLEVBQUUsMEJBQVUsRUFBRSxvQkFBTyxDQUFTO1FBQ2hELE1BQU0sR0FBRyxNQUFNLENBQUMsTUFBTSxDQUFDLEVBQUUsVUFBVSxZQUFBLEVBQUUsVUFBVSxZQUFBLEVBQUUsT0FBTyxTQUFBLEVBQUUsRUFBRSxNQUFNLENBQUMsQ0FBQTtRQUNuRSxJQUFJLENBQUMsV0FBVyxDQUFDLFdBQVcsQ0FBQyxLQUFLLEVBQUUsV0FBUyxPQUFTLEVBQUUsTUFBTSxDQUFDLENBQUE7SUFDakUsQ0FBQztJQUNILGNBQUM7QUFBRCxDQUFDLEFBdEVELElBc0VDIn0=","var __extends = (this && this.__extends) || (function () {\n var extendStatics = Object.setPrototypeOf ||\n ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) ||\n function (d, b) { for (var p in b) if (b.hasOwnProperty(p)) d[p] = b[p]; };\n return function (d, b) {\n extendStatics(d, b);\n function __() { this.constructor = d; }\n d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\n };\n})();\n/** @hidden */\nexport function blessDefinition(definition) {\n return {\n identifier: definition.identifier,\n controllerConstructor: blessControllerConstructor(definition.controllerConstructor)\n };\n}\nfunction blessControllerConstructor(controllerConstructor) {\n var constructor = extend(controllerConstructor);\n constructor.bless();\n return constructor;\n}\nvar extend = (function () {\n function extendWithReflect(constructor) {\n function Controller() {\n var _newTarget = this && this instanceof Controller ? this.constructor : void 0;\n return Reflect.construct(constructor, arguments, _newTarget);\n }\n Controller.prototype = Object.create(constructor.prototype, {\n constructor: { value: Controller }\n });\n Reflect.setPrototypeOf(Controller, constructor);\n return Controller;\n }\n function testReflectExtension() {\n var a = function () { this.a.call(this); };\n var b = extendWithReflect(a);\n b.prototype.a = function () { };\n return new b;\n }\n try {\n testReflectExtension();\n return extendWithReflect;\n }\n catch (error) {\n return function (constructor) { return /** @class */ (function (_super) {\n __extends(Controller, _super);\n function Controller() {\n return _super !== null && _super.apply(this, arguments) || this;\n }\n return Controller;\n }(constructor)); };\n }\n})();\n//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZGVmaW5pdGlvbi5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uL3NyYy9kZWZpbml0aW9uLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiI7Ozs7Ozs7Ozs7QUFPQSxjQUFjO0FBQ2QsTUFBTSwwQkFBMEIsVUFBc0I7SUFDcEQsT0FBTztRQUNMLFVBQVUsRUFBRSxVQUFVLENBQUMsVUFBVTtRQUNqQyxxQkFBcUIsRUFBRSwwQkFBMEIsQ0FBQyxVQUFVLENBQUMscUJBQXFCLENBQUM7S0FDcEYsQ0FBQTtBQUNILENBQUM7QUFFRCxvQ0FBb0MscUJBQTRDO0lBQzlFLElBQU0sV0FBVyxHQUFHLE1BQU0sQ0FBQyxxQkFBcUIsQ0FBQyxDQUFBO0lBQ2pELFdBQVcsQ0FBQyxLQUFLLEVBQUUsQ0FBQTtJQUNuQixPQUFPLFdBQVcsQ0FBQTtBQUNwQixDQUFDO0FBRUQsSUFBTSxNQUFNLEdBQUcsQ0FBQztJQUdkLDJCQUFzRCxXQUFjO1FBQ2xFOztZQUNFLE9BQU8sT0FBTyxDQUFDLFNBQVMsQ0FBQyxXQUFXLEVBQUUsU0FBUyxhQUFhLENBQUE7UUFDOUQsQ0FBQztRQUVELFVBQVUsQ0FBQyxTQUFTLEdBQUcsTUFBTSxDQUFDLE1BQU0sQ0FBQyxXQUFXLENBQUMsU0FBUyxFQUFFO1lBQzFELFdBQVcsRUFBRSxFQUFFLEtBQUssRUFBRSxVQUFVLEVBQUU7U0FDbkMsQ0FBQyxDQUFBO1FBRUYsT0FBTyxDQUFDLGNBQWMsQ0FBQyxVQUFVLEVBQUUsV0FBVyxDQUFDLENBQUE7UUFDL0MsT0FBTyxVQUFpQixDQUFBO0lBQzFCLENBQUM7SUFFRDtRQUNFLElBQU0sQ0FBQyxHQUFHLGNBQXNCLElBQUksQ0FBQyxDQUFDLENBQUMsSUFBSSxDQUFDLElBQUksQ0FBQyxDQUFBLENBQUMsQ0FBUSxDQUFBO1FBQzFELElBQU0sQ0FBQyxHQUFHLGlCQUFpQixDQUFDLENBQUMsQ0FBQyxDQUFBO1FBQzlCLENBQUMsQ0FBQyxTQUFTLENBQUMsQ0FBQyxHQUFHLGNBQVksQ0FBQyxDQUFBO1FBQzdCLE9BQU8sSUFBSSxDQUFDLENBQUE7SUFDZCxDQUFDO0lBRUQsSUFBSTtRQUNGLG9CQUFvQixFQUFFLENBQUE7UUFDdEIsT0FBTyxpQkFBaUIsQ0FBQTtLQUN6QjtJQUFDLE9BQU8sS0FBSyxFQUFFO1FBQ2QsT0FBTyxVQUE0QixXQUFjLElBQUs7WUFBeUIsOEJBQVc7WUFBcEM7O1lBQXNDLENBQUM7WUFBRCxpQkFBQztRQUFELENBQUMsQUFBdkMsQ0FBeUIsV0FBVyxJQUFwQyxDQUF1QyxDQUFBO0tBQzlGO0FBQ0gsQ0FBQyxDQUFDLEVBQUUsQ0FBQSJ9","import { Context } from \"./context\";\nimport { blessDefinition } from \"./definition\";\nvar Module = /** @class */ (function () {\n function Module(application, definition) {\n this.application = application;\n this.definition = blessDefinition(definition);\n this.contextsByScope = new WeakMap;\n this.connectedContexts = new Set;\n }\n Object.defineProperty(Module.prototype, \"identifier\", {\n get: function () {\n return this.definition.identifier;\n },\n enumerable: true,\n configurable: true\n });\n Object.defineProperty(Module.prototype, \"controllerConstructor\", {\n get: function () {\n return this.definition.controllerConstructor;\n },\n enumerable: true,\n configurable: true\n });\n Object.defineProperty(Module.prototype, \"contexts\", {\n get: function () {\n return Array.from(this.connectedContexts);\n },\n enumerable: true,\n configurable: true\n });\n Module.prototype.connectContextForScope = function (scope) {\n var context = this.fetchContextForScope(scope);\n this.connectedContexts.add(context);\n context.connect();\n };\n Module.prototype.disconnectContextForScope = function (scope) {\n var context = this.contextsByScope.get(scope);\n if (context) {\n this.connectedContexts.delete(context);\n context.disconnect();\n }\n };\n Module.prototype.fetchContextForScope = function (scope) {\n var context = this.contextsByScope.get(scope);\n if (!context) {\n context = new Context(this, scope);\n this.contextsByScope.set(scope, context);\n }\n return context;\n };\n return Module;\n}());\nexport { Module };\n//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoibW9kdWxlLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vc3JjL21vZHVsZS50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFDQSxPQUFPLEVBQUUsT0FBTyxFQUFFLE1BQU0sV0FBVyxDQUFBO0FBRW5DLE9BQU8sRUFBYyxlQUFlLEVBQUUsTUFBTSxjQUFjLENBQUE7QUFHMUQ7SUFNRSxnQkFBWSxXQUF3QixFQUFFLFVBQXNCO1FBQzFELElBQUksQ0FBQyxXQUFXLEdBQUcsV0FBVyxDQUFBO1FBQzlCLElBQUksQ0FBQyxVQUFVLEdBQUcsZUFBZSxDQUFDLFVBQVUsQ0FBQyxDQUFBO1FBQzdDLElBQUksQ0FBQyxlQUFlLEdBQUcsSUFBSSxPQUFPLENBQUE7UUFDbEMsSUFBSSxDQUFDLGlCQUFpQixHQUFHLElBQUksR0FBRyxDQUFBO0lBQ2xDLENBQUM7SUFFRCxzQkFBSSw4QkFBVTthQUFkO1lBQ0UsT0FBTyxJQUFJLENBQUMsVUFBVSxDQUFDLFVBQVUsQ0FBQTtRQUNuQyxDQUFDOzs7T0FBQTtJQUVELHNCQUFJLHlDQUFxQjthQUF6QjtZQUNFLE9BQU8sSUFBSSxDQUFDLFVBQVUsQ0FBQyxxQkFBcUIsQ0FBQTtRQUM5QyxDQUFDOzs7T0FBQTtJQUVELHNCQUFJLDRCQUFRO2FBQVo7WUFDRSxPQUFPLEtBQUssQ0FBQyxJQUFJLENBQUMsSUFBSSxDQUFDLGlCQUFpQixDQUFDLENBQUE7UUFDM0MsQ0FBQzs7O09BQUE7SUFFRCx1Q0FBc0IsR0FBdEIsVUFBdUIsS0FBWTtRQUNqQyxJQUFNLE9BQU8sR0FBRyxJQUFJLENBQUMsb0JBQW9CLENBQUMsS0FBSyxDQUFDLENBQUE7UUFDaEQsSUFBSSxDQUFDLGlCQUFpQixDQUFDLEdBQUcsQ0FBQyxPQUFPLENBQUMsQ0FBQTtRQUNuQyxPQUFPLENBQUMsT0FBTyxFQUFFLENBQUE7SUFDbkIsQ0FBQztJQUVELDBDQUF5QixHQUF6QixVQUEwQixLQUFZO1FBQ3BDLElBQU0sT0FBTyxHQUFHLElBQUksQ0FBQyxlQUFlLENBQUMsR0FBRyxDQUFDLEtBQUssQ0FBQyxDQUFBO1FBQy9DLElBQUksT0FBTyxFQUFFO1lBQ1gsSUFBSSxDQUFDLGlCQUFpQixDQUFDLE1BQU0sQ0FBQyxPQUFPLENBQUMsQ0FBQTtZQUN0QyxPQUFPLENBQUMsVUFBVSxFQUFFLENBQUE7U0FDckI7SUFDSCxDQUFDO0lBRU8scUNBQW9CLEdBQTVCLFVBQTZCLEtBQVk7UUFDdkMsSUFBSSxPQUFPLEdBQUcsSUFBSSxDQUFDLGVBQWUsQ0FBQyxHQUFHLENBQUMsS0FBSyxDQUFDLENBQUE7UUFDN0MsSUFBSSxDQUFDLE9BQU8sRUFBRTtZQUNaLE9BQU8sR0FBRyxJQUFJLE9BQU8sQ0FBQyxJQUFJLEVBQUUsS0FBSyxDQUFDLENBQUE7WUFDbEMsSUFBSSxDQUFDLGVBQWUsQ0FBQyxHQUFHLENBQUMsS0FBSyxFQUFFLE9BQU8sQ0FBQyxDQUFBO1NBQ3pDO1FBQ0QsT0FBTyxPQUFPLENBQUE7SUFDaEIsQ0FBQztJQUNILGFBQUM7QUFBRCxDQUFDLEFBL0NELElBK0NDIn0=","var DataMap = /** @class */ (function () {\n function DataMap(scope) {\n this.scope = scope;\n }\n Object.defineProperty(DataMap.prototype, \"element\", {\n get: function () {\n return this.scope.element;\n },\n enumerable: true,\n configurable: true\n });\n Object.defineProperty(DataMap.prototype, \"identifier\", {\n get: function () {\n return this.scope.identifier;\n },\n enumerable: true,\n configurable: true\n });\n DataMap.prototype.get = function (key) {\n key = this.getFormattedKey(key);\n return this.element.getAttribute(key);\n };\n DataMap.prototype.set = function (key, value) {\n key = this.getFormattedKey(key);\n this.element.setAttribute(key, value);\n return this.get(key);\n };\n DataMap.prototype.has = function (key) {\n key = this.getFormattedKey(key);\n return this.element.hasAttribute(key);\n };\n DataMap.prototype.delete = function (key) {\n if (this.has(key)) {\n key = this.getFormattedKey(key);\n this.element.removeAttribute(key);\n return true;\n }\n else {\n return false;\n }\n };\n DataMap.prototype.getFormattedKey = function (key) {\n return \"data-\" + this.identifier + \"-\" + dasherize(key);\n };\n return DataMap;\n}());\nexport { DataMap };\nfunction dasherize(value) {\n return value.replace(/([A-Z])/g, function (_, char) { return \"-\" + char.toLowerCase(); });\n}\n//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZGF0YV9tYXAuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi9zcmMvZGF0YV9tYXAudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBRUE7SUFHRSxpQkFBWSxLQUFZO1FBQ3RCLElBQUksQ0FBQyxLQUFLLEdBQUcsS0FBSyxDQUFBO0lBQ3BCLENBQUM7SUFFRCxzQkFBSSw0QkFBTzthQUFYO1lBQ0UsT0FBTyxJQUFJLENBQUMsS0FBSyxDQUFDLE9BQU8sQ0FBQTtRQUMzQixDQUFDOzs7T0FBQTtJQUVELHNCQUFJLCtCQUFVO2FBQWQ7WUFDRSxPQUFPLElBQUksQ0FBQyxLQUFLLENBQUMsVUFBVSxDQUFBO1FBQzlCLENBQUM7OztPQUFBO0lBRUQscUJBQUcsR0FBSCxVQUFJLEdBQVc7UUFDYixHQUFHLEdBQUcsSUFBSSxDQUFDLGVBQWUsQ0FBQyxHQUFHLENBQUMsQ0FBQTtRQUMvQixPQUFPLElBQUksQ0FBQyxPQUFPLENBQUMsWUFBWSxDQUFDLEdBQUcsQ0FBQyxDQUFBO0lBQ3ZDLENBQUM7SUFFRCxxQkFBRyxHQUFILFVBQUksR0FBVyxFQUFFLEtBQWE7UUFDNUIsR0FBRyxHQUFHLElBQUksQ0FBQyxlQUFlLENBQUMsR0FBRyxDQUFDLENBQUE7UUFDL0IsSUFBSSxDQUFDLE9BQU8sQ0FBQyxZQUFZLENBQUMsR0FBRyxFQUFFLEtBQUssQ0FBQyxDQUFBO1FBQ3JDLE9BQU8sSUFBSSxDQUFDLEdBQUcsQ0FBQyxHQUFHLENBQUMsQ0FBQTtJQUN0QixDQUFDO0lBRUQscUJBQUcsR0FBSCxVQUFJLEdBQVc7UUFDYixHQUFHLEdBQUcsSUFBSSxDQUFDLGVBQWUsQ0FBQyxHQUFHLENBQUMsQ0FBQTtRQUMvQixPQUFPLElBQUksQ0FBQyxPQUFPLENBQUMsWUFBWSxDQUFDLEdBQUcsQ0FBQyxDQUFBO0lBQ3ZDLENBQUM7SUFFRCx3QkFBTSxHQUFOLFVBQU8sR0FBVztRQUNoQixJQUFJLElBQUksQ0FBQyxHQUFHLENBQUMsR0FBRyxDQUFDLEVBQUU7WUFDakIsR0FBRyxHQUFHLElBQUksQ0FBQyxlQUFlLENBQUMsR0FBRyxDQUFDLENBQUE7WUFDL0IsSUFBSSxDQUFDLE9BQU8sQ0FBQyxlQUFlLENBQUMsR0FBRyxDQUFDLENBQUE7WUFDakMsT0FBTyxJQUFJLENBQUE7U0FDWjthQUFNO1lBQ0wsT0FBTyxLQUFLLENBQUE7U0FDYjtJQUNILENBQUM7SUFFTyxpQ0FBZSxHQUF2QixVQUF3QixHQUFXO1FBQ2pDLE9BQU8sVUFBUSxJQUFJLENBQUMsVUFBVSxTQUFJLFNBQVMsQ0FBQyxHQUFHLENBQUcsQ0FBQTtJQUNwRCxDQUFDO0lBQ0gsY0FBQztBQUFELENBQUMsQUE1Q0QsSUE0Q0M7O0FBRUQsbUJBQW1CLEtBQWE7SUFDOUIsT0FBTyxLQUFLLENBQUMsT0FBTyxDQUFDLFVBQVUsRUFBRSxVQUFDLENBQUMsRUFBRSxJQUFJLElBQUssT0FBQSxNQUFJLElBQUksQ0FBQyxXQUFXLEVBQUksRUFBeEIsQ0FBd0IsQ0FBQyxDQUFBO0FBQ3pFLENBQUMifQ==","/** @hidden */\nexport function attributeValueContainsToken(attributeName, token) {\n return \"[\" + attributeName + \"~=\\\"\" + token + \"\\\"]\";\n}\n//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoic2VsZWN0b3JzLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vc3JjL3NlbGVjdG9ycy50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxjQUFjO0FBQ2QsTUFBTSxzQ0FBc0MsYUFBcUIsRUFBRSxLQUFhO0lBQzlFLE9BQU8sTUFBSSxhQUFhLFlBQU0sS0FBSyxRQUFJLENBQUE7QUFDekMsQ0FBQyJ9","import { attributeValueContainsToken } from \"./selectors\";\nvar TargetSet = /** @class */ (function () {\n function TargetSet(scope) {\n this.scope = scope;\n }\n Object.defineProperty(TargetSet.prototype, \"element\", {\n get: function () {\n return this.scope.element;\n },\n enumerable: true,\n configurable: true\n });\n Object.defineProperty(TargetSet.prototype, \"identifier\", {\n get: function () {\n return this.scope.identifier;\n },\n enumerable: true,\n configurable: true\n });\n Object.defineProperty(TargetSet.prototype, \"schema\", {\n get: function () {\n return this.scope.schema;\n },\n enumerable: true,\n configurable: true\n });\n TargetSet.prototype.has = function (targetName) {\n return this.find(targetName) != null;\n };\n TargetSet.prototype.find = function () {\n var targetNames = [];\n for (var _i = 0; _i < arguments.length; _i++) {\n targetNames[_i] = arguments[_i];\n }\n var selector = this.getSelectorForTargetNames(targetNames);\n return this.scope.findElement(selector);\n };\n TargetSet.prototype.findAll = function () {\n var targetNames = [];\n for (var _i = 0; _i < arguments.length; _i++) {\n targetNames[_i] = arguments[_i];\n }\n var selector = this.getSelectorForTargetNames(targetNames);\n return this.scope.findAllElements(selector);\n };\n TargetSet.prototype.getSelectorForTargetNames = function (targetNames) {\n var _this = this;\n return targetNames.map(function (targetName) { return _this.getSelectorForTargetName(targetName); }).join(\", \");\n };\n TargetSet.prototype.getSelectorForTargetName = function (targetName) {\n var targetDescriptor = this.identifier + \".\" + targetName;\n return attributeValueContainsToken(this.schema.targetAttribute, targetDescriptor);\n };\n return TargetSet;\n}());\nexport { TargetSet };\n//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidGFyZ2V0X3NldC5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uL3NyYy90YXJnZXRfc2V0LnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUVBLE9BQU8sRUFBRSwyQkFBMkIsRUFBRSxNQUFNLGFBQWEsQ0FBQTtBQUV6RDtJQUdFLG1CQUFZLEtBQVk7UUFDdEIsSUFBSSxDQUFDLEtBQUssR0FBRyxLQUFLLENBQUE7SUFDcEIsQ0FBQztJQUVELHNCQUFJLDhCQUFPO2FBQVg7WUFDRSxPQUFPLElBQUksQ0FBQyxLQUFLLENBQUMsT0FBTyxDQUFBO1FBQzNCLENBQUM7OztPQUFBO0lBRUQsc0JBQUksaUNBQVU7YUFBZDtZQUNFLE9BQU8sSUFBSSxDQUFDLEtBQUssQ0FBQyxVQUFVLENBQUE7UUFDOUIsQ0FBQzs7O09BQUE7SUFFRCxzQkFBSSw2QkFBTTthQUFWO1lBQ0UsT0FBTyxJQUFJLENBQUMsS0FBSyxDQUFDLE1BQU0sQ0FBQTtRQUMxQixDQUFDOzs7T0FBQTtJQUVELHVCQUFHLEdBQUgsVUFBSSxVQUFrQjtRQUNwQixPQUFPLElBQUksQ0FBQyxJQUFJLENBQUMsVUFBVSxDQUFDLElBQUksSUFBSSxDQUFBO0lBQ3RDLENBQUM7SUFFRCx3QkFBSSxHQUFKO1FBQUsscUJBQXdCO2FBQXhCLFVBQXdCLEVBQXhCLHFCQUF3QixFQUF4QixJQUF3QjtZQUF4QixnQ0FBd0I7O1FBQzNCLElBQU0sUUFBUSxHQUFHLElBQUksQ0FBQyx5QkFBeUIsQ0FBQyxXQUFXLENBQUMsQ0FBQTtRQUM1RCxPQUFPLElBQUksQ0FBQyxLQUFLLENBQUMsV0FBVyxDQUFDLFFBQVEsQ0FBQyxDQUFBO0lBQ3pDLENBQUM7SUFFRCwyQkFBTyxHQUFQO1FBQVEscUJBQXdCO2FBQXhCLFVBQXdCLEVBQXhCLHFCQUF3QixFQUF4QixJQUF3QjtZQUF4QixnQ0FBd0I7O1FBQzlCLElBQU0sUUFBUSxHQUFHLElBQUksQ0FBQyx5QkFBeUIsQ0FBQyxXQUFXLENBQUMsQ0FBQTtRQUM1RCxPQUFPLElBQUksQ0FBQyxLQUFLLENBQUMsZUFBZSxDQUFDLFFBQVEsQ0FBQyxDQUFBO0lBQzdDLENBQUM7SUFFTyw2Q0FBeUIsR0FBakMsVUFBa0MsV0FBcUI7UUFBdkQsaUJBRUM7UUFEQyxPQUFPLFdBQVcsQ0FBQyxHQUFHLENBQUMsVUFBQSxVQUFVLElBQUksT0FBQSxLQUFJLENBQUMsd0JBQXdCLENBQUMsVUFBVSxDQUFDLEVBQXpDLENBQXlDLENBQUMsQ0FBQyxJQUFJLENBQUMsSUFBSSxDQUFDLENBQUE7SUFDNUYsQ0FBQztJQUVPLDRDQUF3QixHQUFoQyxVQUFpQyxVQUFrQjtRQUNqRCxJQUFNLGdCQUFnQixHQUFNLElBQUksQ0FBQyxVQUFVLFNBQUksVUFBWSxDQUFBO1FBQzNELE9BQU8sMkJBQTJCLENBQUMsSUFBSSxDQUFDLE1BQU0sQ0FBQyxlQUFlLEVBQUUsZ0JBQWdCLENBQUMsQ0FBQTtJQUNuRixDQUFDO0lBQ0gsZ0JBQUM7QUFBRCxDQUFDLEFBekNELElBeUNDIn0=","import { DataMap } from \"./data_map\";\nimport { TargetSet } from \"./target_set\";\nimport { attributeValueContainsToken } from \"./selectors\";\nvar Scope = /** @class */ (function () {\n function Scope(schema, identifier, element) {\n this.schema = schema;\n this.identifier = identifier;\n this.element = element;\n this.targets = new TargetSet(this);\n this.data = new DataMap(this);\n }\n Scope.prototype.findElement = function (selector) {\n return this.findAllElements(selector)[0];\n };\n Scope.prototype.findAllElements = function (selector) {\n var head = this.element.matches(selector) ? [this.element] : [];\n var tail = this.filterElements(Array.from(this.element.querySelectorAll(selector)));\n return head.concat(tail);\n };\n Scope.prototype.filterElements = function (elements) {\n var _this = this;\n return elements.filter(function (element) { return _this.containsElement(element); });\n };\n Scope.prototype.containsElement = function (element) {\n return element.closest(this.controllerSelector) === this.element;\n };\n Object.defineProperty(Scope.prototype, \"controllerSelector\", {\n get: function () {\n return attributeValueContainsToken(this.schema.controllerAttribute, this.identifier);\n },\n enumerable: true,\n configurable: true\n });\n return Scope;\n}());\nexport { Scope };\n//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoic2NvcGUuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi9zcmMvc2NvcGUudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFFLE9BQU8sRUFBRSxNQUFNLFlBQVksQ0FBQTtBQUVwQyxPQUFPLEVBQUUsU0FBUyxFQUFFLE1BQU0sY0FBYyxDQUFBO0FBQ3hDLE9BQU8sRUFBRSwyQkFBMkIsRUFBRSxNQUFNLGFBQWEsQ0FBQTtBQUV6RDtJQU9FLGVBQVksTUFBYyxFQUFFLFVBQWtCLEVBQUUsT0FBZ0I7UUFDOUQsSUFBSSxDQUFDLE1BQU0sR0FBRyxNQUFNLENBQUE7UUFDcEIsSUFBSSxDQUFDLFVBQVUsR0FBRyxVQUFVLENBQUE7UUFDNUIsSUFBSSxDQUFDLE9BQU8sR0FBRyxPQUFPLENBQUE7UUFDdEIsSUFBSSxDQUFDLE9BQU8sR0FBRyxJQUFJLFNBQVMsQ0FBQyxJQUFJLENBQUMsQ0FBQTtRQUNsQyxJQUFJLENBQUMsSUFBSSxHQUFHLElBQUksT0FBTyxDQUFDLElBQUksQ0FBQyxDQUFBO0lBQy9CLENBQUM7SUFFRCwyQkFBVyxHQUFYLFVBQVksUUFBZ0I7UUFDMUIsT0FBTyxJQUFJLENBQUMsZUFBZSxDQUFDLFFBQVEsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFBO0lBQzFDLENBQUM7SUFFRCwrQkFBZSxHQUFmLFVBQWdCLFFBQWdCO1FBQzlCLElBQU0sSUFBSSxHQUFHLElBQUksQ0FBQyxPQUFPLENBQUMsT0FBTyxDQUFDLFFBQVEsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLElBQUksQ0FBQyxPQUFPLENBQUMsQ0FBQyxDQUFDLENBQUMsRUFBRSxDQUFBO1FBQ2pFLElBQU0sSUFBSSxHQUFHLElBQUksQ0FBQyxjQUFjLENBQUMsS0FBSyxDQUFDLElBQUksQ0FBQyxJQUFJLENBQUMsT0FBTyxDQUFDLGdCQUFnQixDQUFDLFFBQVEsQ0FBQyxDQUFDLENBQUMsQ0FBQTtRQUNyRixPQUFPLElBQUksQ0FBQyxNQUFNLENBQUMsSUFBSSxDQUFDLENBQUE7SUFDMUIsQ0FBQztJQUVELDhCQUFjLEdBQWQsVUFBZSxRQUFtQjtRQUFsQyxpQkFFQztRQURDLE9BQU8sUUFBUSxDQUFDLE1BQU0sQ0FBQyxVQUFBLE9BQU8sSUFBSSxPQUFBLEtBQUksQ0FBQyxlQUFlLENBQUMsT0FBTyxDQUFDLEVBQTdCLENBQTZCLENBQUMsQ0FBQTtJQUNsRSxDQUFDO0lBRUQsK0JBQWUsR0FBZixVQUFnQixPQUFnQjtRQUM5QixPQUFPLE9BQU8sQ0FBQyxPQUFPLENBQUMsSUFBSSxDQUFDLGtCQUFrQixDQUFDLEtBQUssSUFBSSxDQUFDLE9BQU8sQ0FBQTtJQUNsRSxDQUFDO0lBRUQsc0JBQVkscUNBQWtCO2FBQTlCO1lBQ0UsT0FBTywyQkFBMkIsQ0FBQyxJQUFJLENBQUMsTUFBTSxDQUFDLG1CQUFtQixFQUFFLElBQUksQ0FBQyxVQUFVLENBQUMsQ0FBQTtRQUN0RixDQUFDOzs7T0FBQTtJQUNILFlBQUM7QUFBRCxDQUFDLEFBcENELElBb0NDIn0=","import { Scope } from \"./scope\";\nimport { ValueListObserver } from \"@stimulus/mutation-observers\";\nvar ScopeObserver = /** @class */ (function () {\n function ScopeObserver(element, schema, delegate) {\n this.element = element;\n this.schema = schema;\n this.delegate = delegate;\n this.valueListObserver = new ValueListObserver(this.element, this.controllerAttribute, this);\n this.scopesByIdentifierByElement = new WeakMap;\n this.scopeReferenceCounts = new WeakMap;\n }\n ScopeObserver.prototype.start = function () {\n this.valueListObserver.start();\n };\n ScopeObserver.prototype.stop = function () {\n this.valueListObserver.stop();\n };\n Object.defineProperty(ScopeObserver.prototype, \"controllerAttribute\", {\n get: function () {\n return this.schema.controllerAttribute;\n },\n enumerable: true,\n configurable: true\n });\n // Value observer delegate\n /** @hidden */\n ScopeObserver.prototype.parseValueForToken = function (token) {\n var element = token.element, identifier = token.content;\n var scopesByIdentifier = this.fetchScopesByIdentifierForElement(element);\n var scope = scopesByIdentifier.get(identifier);\n if (!scope) {\n scope = new Scope(this.schema, identifier, element);\n scopesByIdentifier.set(identifier, scope);\n }\n return scope;\n };\n /** @hidden */\n ScopeObserver.prototype.elementMatchedValue = function (element, value) {\n var referenceCount = (this.scopeReferenceCounts.get(value) || 0) + 1;\n this.scopeReferenceCounts.set(value, referenceCount);\n if (referenceCount == 1) {\n this.delegate.scopeConnected(value);\n }\n };\n /** @hidden */\n ScopeObserver.prototype.elementUnmatchedValue = function (element, value) {\n var referenceCount = this.scopeReferenceCounts.get(value);\n if (referenceCount) {\n this.scopeReferenceCounts.set(value, referenceCount - 1);\n if (referenceCount == 1) {\n this.delegate.scopeDisconnected(value);\n }\n }\n };\n ScopeObserver.prototype.fetchScopesByIdentifierForElement = function (element) {\n var scopesByIdentifier = this.scopesByIdentifierByElement.get(element);\n if (!scopesByIdentifier) {\n scopesByIdentifier = new Map;\n this.scopesByIdentifierByElement.set(element, scopesByIdentifier);\n }\n return scopesByIdentifier;\n };\n return ScopeObserver;\n}());\nexport { ScopeObserver };\n//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoic2NvcGVfb2JzZXJ2ZXIuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi9zcmMvc2NvcGVfb2JzZXJ2ZXIudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBRUEsT0FBTyxFQUFFLEtBQUssRUFBRSxNQUFNLFNBQVMsQ0FBQTtBQUMvQixPQUFPLEVBQVMsaUJBQWlCLEVBQTZCLE1BQU0sOEJBQThCLENBQUE7QUFPbEc7SUFRRSx1QkFBWSxPQUFnQixFQUFFLE1BQWMsRUFBRSxRQUErQjtRQUMzRSxJQUFJLENBQUMsT0FBTyxHQUFHLE9BQU8sQ0FBQTtRQUN0QixJQUFJLENBQUMsTUFBTSxHQUFHLE1BQU0sQ0FBQTtRQUNwQixJQUFJLENBQUMsUUFBUSxHQUFHLFFBQVEsQ0FBQTtRQUN4QixJQUFJLENBQUMsaUJBQWlCLEdBQUcsSUFBSSxpQkFBaUIsQ0FBQyxJQUFJLENBQUMsT0FBTyxFQUFFLElBQUksQ0FBQyxtQkFBbUIsRUFBRSxJQUFJLENBQUMsQ0FBQTtRQUM1RixJQUFJLENBQUMsMkJBQTJCLEdBQUcsSUFBSSxPQUFPLENBQUE7UUFDOUMsSUFBSSxDQUFDLG9CQUFvQixHQUFHLElBQUksT0FBTyxDQUFBO0lBQ3pDLENBQUM7SUFFRCw2QkFBSyxHQUFMO1FBQ0UsSUFBSSxDQUFDLGlCQUFpQixDQUFDLEtBQUssRUFBRSxDQUFBO0lBQ2hDLENBQUM7SUFFRCw0QkFBSSxHQUFKO1FBQ0UsSUFBSSxDQUFDLGlCQUFpQixDQUFDLElBQUksRUFBRSxDQUFBO0lBQy9CLENBQUM7SUFFRCxzQkFBSSw4Q0FBbUI7YUFBdkI7WUFDRSxPQUFPLElBQUksQ0FBQyxNQUFNLENBQUMsbUJBQW1CLENBQUE7UUFDeEMsQ0FBQzs7O09BQUE7SUFFRCwwQkFBMEI7SUFFMUIsY0FBYztJQUNkLDBDQUFrQixHQUFsQixVQUFtQixLQUFZO1FBQ3JCLElBQUEsdUJBQU8sRUFBRSwwQkFBbUIsQ0FBVTtRQUM5QyxJQUFNLGtCQUFrQixHQUFHLElBQUksQ0FBQyxpQ0FBaUMsQ0FBQyxPQUFPLENBQUMsQ0FBQTtRQUUxRSxJQUFJLEtBQUssR0FBRyxrQkFBa0IsQ0FBQyxHQUFHLENBQUMsVUFBVSxDQUFDLENBQUE7UUFDOUMsSUFBSSxDQUFDLEtBQUssRUFBRTtZQUNWLEtBQUssR0FBRyxJQUFJLEtBQUssQ0FBQyxJQUFJLENBQUMsTUFBTSxFQUFFLFVBQVUsRUFBRSxPQUFPLENBQUMsQ0FBQTtZQUNuRCxrQkFBa0IsQ0FBQyxHQUFHLENBQUMsVUFBVSxFQUFFLEtBQUssQ0FBQyxDQUFBO1NBQzFDO1FBRUQsT0FBTyxLQUFLLENBQUE7SUFDZCxDQUFDO0lBRUQsY0FBYztJQUNkLDJDQUFtQixHQUFuQixVQUFvQixPQUFnQixFQUFFLEtBQVk7UUFDaEQsSUFBTSxjQUFjLEdBQUcsQ0FBQyxJQUFJLENBQUMsb0JBQW9CLENBQUMsR0FBRyxDQUFDLEtBQUssQ0FBQyxJQUFJLENBQUMsQ0FBQyxHQUFHLENBQUMsQ0FBQTtRQUN0RSxJQUFJLENBQUMsb0JBQW9CLENBQUMsR0FBRyxDQUFDLEtBQUssRUFBRSxjQUFjLENBQUMsQ0FBQTtRQUNwRCxJQUFJLGNBQWMsSUFBSSxDQUFDLEVBQUU7WUFDdkIsSUFBSSxDQUFDLFFBQVEsQ0FBQyxjQUFjLENBQUMsS0FBSyxDQUFDLENBQUE7U0FDcEM7SUFDSCxDQUFDO0lBRUQsY0FBYztJQUNkLDZDQUFxQixHQUFyQixVQUFzQixPQUFnQixFQUFFLEtBQVk7UUFDbEQsSUFBTSxjQUFjLEdBQUcsSUFBSSxDQUFDLG9CQUFvQixDQUFDLEdBQUcsQ0FBQyxLQUFLLENBQUMsQ0FBQTtRQUMzRCxJQUFJLGNBQWMsRUFBRTtZQUNsQixJQUFJLENBQUMsb0JBQW9CLENBQUMsR0FBRyxDQUFDLEtBQUssRUFBRSxjQUFjLEdBQUcsQ0FBQyxDQUFDLENBQUE7WUFDeEQsSUFBSSxjQUFjLElBQUksQ0FBQyxFQUFFO2dCQUN2QixJQUFJLENBQUMsUUFBUSxDQUFDLGlCQUFpQixDQUFDLEtBQUssQ0FBQyxDQUFBO2FBQ3ZDO1NBQ0Y7SUFDSCxDQUFDO0lBRU8seURBQWlDLEdBQXpDLFVBQTBDLE9BQWdCO1FBQ3hELElBQUksa0JBQWtCLEdBQUcsSUFBSSxDQUFDLDJCQUEyQixDQUFDLEdBQUcsQ0FBQyxPQUFPLENBQUMsQ0FBQTtRQUN0RSxJQUFJLENBQUMsa0JBQWtCLEVBQUU7WUFDdkIsa0JBQWtCLEdBQUcsSUFBSSxHQUFHLENBQUE7WUFDNUIsSUFBSSxDQUFDLDJCQUEyQixDQUFDLEdBQUcsQ0FBQyxPQUFPLEVBQUUsa0JBQWtCLENBQUMsQ0FBQTtTQUNsRTtRQUNELE9BQU8sa0JBQWtCLENBQUE7SUFDM0IsQ0FBQztJQUNILG9CQUFDO0FBQUQsQ0FBQyxBQXpFRCxJQXlFQyJ9","import { Module } from \"./module\";\nimport { Multimap } from \"@stimulus/multimap\";\nimport { ScopeObserver } from \"./scope_observer\";\nvar Router = /** @class */ (function () {\n function Router(application) {\n this.application = application;\n this.scopeObserver = new ScopeObserver(this.element, this.schema, this);\n this.scopesByIdentifier = new Multimap;\n this.modulesByIdentifier = new Map;\n }\n Object.defineProperty(Router.prototype, \"element\", {\n get: function () {\n return this.application.element;\n },\n enumerable: true,\n configurable: true\n });\n Object.defineProperty(Router.prototype, \"schema\", {\n get: function () {\n return this.application.schema;\n },\n enumerable: true,\n configurable: true\n });\n Object.defineProperty(Router.prototype, \"controllerAttribute\", {\n get: function () {\n return this.schema.controllerAttribute;\n },\n enumerable: true,\n configurable: true\n });\n Object.defineProperty(Router.prototype, \"modules\", {\n get: function () {\n return Array.from(this.modulesByIdentifier.values());\n },\n enumerable: true,\n configurable: true\n });\n Object.defineProperty(Router.prototype, \"contexts\", {\n get: function () {\n return this.modules.reduce(function (contexts, module) { return contexts.concat(module.contexts); }, []);\n },\n enumerable: true,\n configurable: true\n });\n Router.prototype.start = function () {\n this.scopeObserver.start();\n };\n Router.prototype.stop = function () {\n this.scopeObserver.stop();\n };\n Router.prototype.loadDefinition = function (definition) {\n this.unloadIdentifier(definition.identifier);\n var module = new Module(this.application, definition);\n this.connectModule(module);\n };\n Router.prototype.unloadIdentifier = function (identifier) {\n var module = this.modulesByIdentifier.get(identifier);\n if (module) {\n this.disconnectModule(module);\n }\n };\n Router.prototype.getContextForElementAndIdentifier = function (element, identifier) {\n var module = this.modulesByIdentifier.get(identifier);\n if (module) {\n return module.contexts.find(function (context) { return context.element == element; });\n }\n };\n // Error handler delegate\n /** @hidden */\n Router.prototype.handleError = function (error, message, detail) {\n this.application.handleError(error, message, detail);\n };\n // Scope observer delegate\n /** @hidden */\n Router.prototype.scopeConnected = function (scope) {\n this.scopesByIdentifier.add(scope.identifier, scope);\n var module = this.modulesByIdentifier.get(scope.identifier);\n if (module) {\n module.connectContextForScope(scope);\n }\n };\n /** @hidden */\n Router.prototype.scopeDisconnected = function (scope) {\n this.scopesByIdentifier.delete(scope.identifier, scope);\n var module = this.modulesByIdentifier.get(scope.identifier);\n if (module) {\n module.disconnectContextForScope(scope);\n }\n };\n // Modules\n Router.prototype.connectModule = function (module) {\n this.modulesByIdentifier.set(module.identifier, module);\n var scopes = this.scopesByIdentifier.getValuesForKey(module.identifier);\n scopes.forEach(function (scope) { return module.connectContextForScope(scope); });\n };\n Router.prototype.disconnectModule = function (module) {\n this.modulesByIdentifier.delete(module.identifier);\n var scopes = this.scopesByIdentifier.getValuesForKey(module.identifier);\n scopes.forEach(function (scope) { return module.disconnectContextForScope(scope); });\n };\n return Router;\n}());\nexport { Router };\n//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicm91dGVyLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vc3JjL3JvdXRlci50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFHQSxPQUFPLEVBQUUsTUFBTSxFQUFFLE1BQU0sVUFBVSxDQUFBO0FBQ2pDLE9BQU8sRUFBRSxRQUFRLEVBQUUsTUFBTSxvQkFBb0IsQ0FBQTtBQUc3QyxPQUFPLEVBQUUsYUFBYSxFQUF5QixNQUFNLGtCQUFrQixDQUFBO0FBRXZFO0lBTUUsZ0JBQVksV0FBd0I7UUFDbEMsSUFBSSxDQUFDLFdBQVcsR0FBRyxXQUFXLENBQUE7UUFDOUIsSUFBSSxDQUFDLGFBQWEsR0FBRyxJQUFJLGFBQWEsQ0FBQyxJQUFJLENBQUMsT0FBTyxFQUFFLElBQUksQ0FBQyxNQUFNLEVBQUUsSUFBSSxDQUFDLENBQUE7UUFDdkUsSUFBSSxDQUFDLGtCQUFrQixHQUFHLElBQUksUUFBUSxDQUFBO1FBQ3RDLElBQUksQ0FBQyxtQkFBbUIsR0FBRyxJQUFJLEdBQUcsQ0FBQTtJQUNwQyxDQUFDO0lBRUQsc0JBQUksMkJBQU87YUFBWDtZQUNFLE9BQU8sSUFBSSxDQUFDLFdBQVcsQ0FBQyxPQUFPLENBQUE7UUFDakMsQ0FBQzs7O09BQUE7SUFFRCxzQkFBSSwwQkFBTTthQUFWO1lBQ0UsT0FBTyxJQUFJLENBQUMsV0FBVyxDQUFDLE1BQU0sQ0FBQTtRQUNoQyxDQUFDOzs7T0FBQTtJQUVELHNCQUFJLHVDQUFtQjthQUF2QjtZQUNFLE9BQU8sSUFBSSxDQUFDLE1BQU0sQ0FBQyxtQkFBbUIsQ0FBQTtRQUN4QyxDQUFDOzs7T0FBQTtJQUVELHNCQUFJLDJCQUFPO2FBQVg7WUFDRSxPQUFPLEtBQUssQ0FBQyxJQUFJLENBQUMsSUFBSSxDQUFDLG1CQUFtQixDQUFDLE1BQU0sRUFBRSxDQUFDLENBQUE7UUFDdEQsQ0FBQzs7O09BQUE7SUFFRCxzQkFBSSw0QkFBUTthQUFaO1lBQ0UsT0FBTyxJQUFJLENBQUMsT0FBTyxDQUFDLE1BQU0sQ0FBQyxVQUFDLFFBQVEsRUFBRSxNQUFNLElBQUssT0FBQSxRQUFRLENBQUMsTUFBTSxDQUFDLE1BQU0sQ0FBQyxRQUFRLENBQUMsRUFBaEMsQ0FBZ0MsRUFBRSxFQUFlLENBQUMsQ0FBQTtRQUNyRyxDQUFDOzs7T0FBQTtJQUVELHNCQUFLLEdBQUw7UUFDRSxJQUFJLENBQUMsYUFBYSxDQUFDLEtBQUssRUFBRSxDQUFBO0lBQzVCLENBQUM7SUFFRCxxQkFBSSxHQUFKO1FBQ0UsSUFBSSxDQUFDLGFBQWEsQ0FBQyxJQUFJLEVBQUUsQ0FBQTtJQUMzQixDQUFDO0lBRUQsK0JBQWMsR0FBZCxVQUFlLFVBQXNCO1FBQ25DLElBQUksQ0FBQyxnQkFBZ0IsQ0FBQyxVQUFVLENBQUMsVUFBVSxDQUFDLENBQUE7UUFDNUMsSUFBTSxNQUFNLEdBQUcsSUFBSSxNQUFNLENBQUMsSUFBSSxDQUFDLFdBQVcsRUFBRSxVQUFVLENBQUMsQ0FBQTtRQUN2RCxJQUFJLENBQUMsYUFBYSxDQUFDLE1BQU0sQ0FBQyxDQUFBO0lBQzVCLENBQUM7SUFFRCxpQ0FBZ0IsR0FBaEIsVUFBaUIsVUFBa0I7UUFDakMsSUFBTSxNQUFNLEdBQUcsSUFBSSxDQUFDLG1CQUFtQixDQUFDLEdBQUcsQ0FBQyxVQUFVLENBQUMsQ0FBQTtRQUN2RCxJQUFJLE1BQU0sRUFBRTtZQUNWLElBQUksQ0FBQyxnQkFBZ0IsQ0FBQyxNQUFNLENBQUMsQ0FBQTtTQUM5QjtJQUNILENBQUM7SUFFRCxrREFBaUMsR0FBakMsVUFBa0MsT0FBZ0IsRUFBRSxVQUFrQjtRQUNwRSxJQUFNLE1BQU0sR0FBRyxJQUFJLENBQUMsbUJBQW1CLENBQUMsR0FBRyxDQUFDLFVBQVUsQ0FBQyxDQUFBO1FBQ3ZELElBQUksTUFBTSxFQUFFO1lBQ1YsT0FBTyxNQUFNLENBQUMsUUFBUSxDQUFDLElBQUksQ0FBQyxVQUFBLE9BQU8sSUFBSSxPQUFBLE9BQU8sQ0FBQyxPQUFPLElBQUksT0FBTyxFQUExQixDQUEwQixDQUFDLENBQUE7U0FDbkU7SUFDSCxDQUFDO0lBRUQseUJBQXlCO0lBRXpCLGNBQWM7SUFDZCw0QkFBVyxHQUFYLFVBQVksS0FBWSxFQUFFLE9BQWUsRUFBRSxNQUFXO1FBQ3BELElBQUksQ0FBQyxXQUFXLENBQUMsV0FBVyxDQUFDLEtBQUssRUFBRSxPQUFPLEVBQUUsTUFBTSxDQUFDLENBQUE7SUFDdEQsQ0FBQztJQUVELDBCQUEwQjtJQUUxQixjQUFjO0lBQ2QsK0JBQWMsR0FBZCxVQUFlLEtBQVk7UUFDekIsSUFBSSxDQUFDLGtCQUFrQixDQUFDLEdBQUcsQ0FBQyxLQUFLLENBQUMsVUFBVSxFQUFFLEtBQUssQ0FBQyxDQUFBO1FBQ3BELElBQU0sTUFBTSxHQUFHLElBQUksQ0FBQyxtQkFBbUIsQ0FBQyxHQUFHLENBQUMsS0FBSyxDQUFDLFVBQVUsQ0FBQyxDQUFBO1FBQzdELElBQUksTUFBTSxFQUFFO1lBQ1YsTUFBTSxDQUFDLHNCQUFzQixDQUFDLEtBQUssQ0FBQyxDQUFBO1NBQ3JDO0lBQ0gsQ0FBQztJQUVELGNBQWM7SUFDZCxrQ0FBaUIsR0FBakIsVUFBa0IsS0FBWTtRQUM1QixJQUFJLENBQUMsa0JBQWtCLENBQUMsTUFBTSxDQUFDLEtBQUssQ0FBQyxVQUFVLEVBQUUsS0FBSyxDQUFDLENBQUE7UUFDdkQsSUFBTSxNQUFNLEdBQUcsSUFBSSxDQUFDLG1CQUFtQixDQUFDLEdBQUcsQ0FBQyxLQUFLLENBQUMsVUFBVSxDQUFDLENBQUE7UUFDN0QsSUFBSSxNQUFNLEVBQUU7WUFDVixNQUFNLENBQUMseUJBQXlCLENBQUMsS0FBSyxDQUFDLENBQUE7U0FDeEM7SUFDSCxDQUFDO0lBRUQsVUFBVTtJQUVGLDhCQUFhLEdBQXJCLFVBQXNCLE1BQWM7UUFDbEMsSUFBSSxDQUFDLG1CQUFtQixDQUFDLEdBQUcsQ0FBQyxNQUFNLENBQUMsVUFBVSxFQUFFLE1BQU0sQ0FBQyxDQUFBO1FBQ3ZELElBQU0sTUFBTSxHQUFHLElBQUksQ0FBQyxrQkFBa0IsQ0FBQyxlQUFlLENBQUMsTUFBTSxDQUFDLFVBQVUsQ0FBQyxDQUFBO1FBQ3pFLE1BQU0sQ0FBQyxPQUFPLENBQUMsVUFBQSxLQUFLLElBQUksT0FBQSxNQUFNLENBQUMsc0JBQXNCLENBQUMsS0FBSyxDQUFDLEVBQXBDLENBQW9DLENBQUMsQ0FBQTtJQUMvRCxDQUFDO0lBRU8saUNBQWdCLEdBQXhCLFVBQXlCLE1BQWM7UUFDckMsSUFBSSxDQUFDLG1CQUFtQixDQUFDLE1BQU0sQ0FBQyxNQUFNLENBQUMsVUFBVSxDQUFDLENBQUE7UUFDbEQsSUFBTSxNQUFNLEdBQUcsSUFBSSxDQUFDLGtCQUFrQixDQUFDLGVBQWUsQ0FBQyxNQUFNLENBQUMsVUFBVSxDQUFDLENBQUE7UUFDekUsTUFBTSxDQUFDLE9BQU8sQ0FBQyxVQUFBLEtBQUssSUFBSSxPQUFBLE1BQU0sQ0FBQyx5QkFBeUIsQ0FBQyxLQUFLLENBQUMsRUFBdkMsQ0FBdUMsQ0FBQyxDQUFBO0lBQ2xFLENBQUM7SUFDSCxhQUFDO0FBQUQsQ0FBQyxBQXJHRCxJQXFHQyJ9","export var defaultSchema = {\n controllerAttribute: \"data-controller\",\n actionAttribute: \"data-action\",\n targetAttribute: \"data-target\"\n};\n//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoic2NoZW1hLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vc3JjL3NjaGVtYS50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFNQSxNQUFNLENBQUMsSUFBTSxhQUFhLEdBQVc7SUFDbkMsbUJBQW1CLEVBQUUsaUJBQWlCO0lBQ3RDLGVBQWUsRUFBRSxhQUFhO0lBQzlCLGVBQWUsRUFBRSxhQUFhO0NBQy9CLENBQUEifQ==","var __awaiter = (this && this.__awaiter) || function (thisArg, _arguments, P, generator) {\n return new (P || (P = Promise))(function (resolve, reject) {\n function fulfilled(value) { try { step(generator.next(value)); } catch (e) { reject(e); } }\n function rejected(value) { try { step(generator[\"throw\"](value)); } catch (e) { reject(e); } }\n function step(result) { result.done ? resolve(result.value) : new P(function (resolve) { resolve(result.value); }).then(fulfilled, rejected); }\n step((generator = generator.apply(thisArg, _arguments || [])).next());\n });\n};\nvar __generator = (this && this.__generator) || function (thisArg, body) {\n var _ = { label: 0, sent: function() { if (t[0] & 1) throw t[1]; return t[1]; }, trys: [], ops: [] }, f, y, t, g;\n return g = { next: verb(0), \"throw\": verb(1), \"return\": verb(2) }, typeof Symbol === \"function\" && (g[Symbol.iterator] = function() { return this; }), g;\n function verb(n) { return function (v) { return step([n, v]); }; }\n function step(op) {\n if (f) throw new TypeError(\"Generator is already executing.\");\n while (_) try {\n if (f = 1, y && (t = y[op[0] & 2 ? \"return\" : op[0] ? \"throw\" : \"next\"]) && !(t = t.call(y, op[1])).done) return t;\n if (y = 0, t) op = [0, t.value];\n switch (op[0]) {\n case 0: case 1: t = op; break;\n case 4: _.label++; return { value: op[1], done: false };\n case 5: _.label++; y = op[1]; op = [0]; continue;\n case 7: op = _.ops.pop(); _.trys.pop(); continue;\n default:\n if (!(t = _.trys, t = t.length > 0 && t[t.length - 1]) && (op[0] === 6 || op[0] === 2)) { _ = 0; continue; }\n if (op[0] === 3 && (!t || (op[1] > t[0] && op[1] < t[3]))) { _.label = op[1]; break; }\n if (op[0] === 6 && _.label < t[1]) { _.label = t[1]; t = op; break; }\n if (t && _.label < t[2]) { _.label = t[2]; _.ops.push(op); break; }\n if (t[2]) _.ops.pop();\n _.trys.pop(); continue;\n }\n op = body.call(thisArg, _);\n } catch (e) { op = [6, e]; y = 0; } finally { f = t = 0; }\n if (op[0] & 5) throw op[1]; return { value: op[0] ? op[1] : void 0, done: true };\n }\n};\nimport { Dispatcher } from \"./dispatcher\";\nimport { Router } from \"./router\";\nimport { defaultSchema } from \"./schema\";\nvar Application = /** @class */ (function () {\n function Application(element, schema) {\n if (element === void 0) { element = document.documentElement; }\n if (schema === void 0) { schema = defaultSchema; }\n this.element = element;\n this.schema = schema;\n this.dispatcher = new Dispatcher(this);\n this.router = new Router(this);\n }\n Application.start = function (element, schema) {\n var application = new Application(element, schema);\n application.start();\n return application;\n };\n Application.prototype.start = function () {\n return __awaiter(this, void 0, void 0, function () {\n return __generator(this, function (_a) {\n switch (_a.label) {\n case 0: return [4 /*yield*/, domReady()];\n case 1:\n _a.sent();\n this.router.start();\n this.dispatcher.start();\n return [2 /*return*/];\n }\n });\n });\n };\n Application.prototype.stop = function () {\n this.router.stop();\n this.dispatcher.stop();\n };\n Application.prototype.register = function (identifier, controllerConstructor) {\n this.load({ identifier: identifier, controllerConstructor: controllerConstructor });\n };\n Application.prototype.load = function (head) {\n var _this = this;\n var rest = [];\n for (var _i = 1; _i < arguments.length; _i++) {\n rest[_i - 1] = arguments[_i];\n }\n var definitions = Array.isArray(head) ? head : [head].concat(rest);\n definitions.forEach(function (definition) { return _this.router.loadDefinition(definition); });\n };\n Application.prototype.unload = function (head) {\n var _this = this;\n var rest = [];\n for (var _i = 1; _i < arguments.length; _i++) {\n rest[_i - 1] = arguments[_i];\n }\n var identifiers = Array.isArray(head) ? head : [head].concat(rest);\n identifiers.forEach(function (identifier) { return _this.router.unloadIdentifier(identifier); });\n };\n Object.defineProperty(Application.prototype, \"controllers\", {\n // Controllers\n get: function () {\n return this.router.contexts.map(function (context) { return context.controller; });\n },\n enumerable: true,\n configurable: true\n });\n Application.prototype.getControllerForElementAndIdentifier = function (element, identifier) {\n var context = this.router.getContextForElementAndIdentifier(element, identifier);\n return context ? context.controller : null;\n };\n // Error handling\n Application.prototype.handleError = function (error, message, detail) {\n console.error(\"%s\\n\\n%o\\n\\n%o\", message, error, detail);\n };\n return Application;\n}());\nexport { Application };\nfunction domReady() {\n return new Promise(function (resolve) {\n if (document.readyState == \"loading\") {\n document.addEventListener(\"DOMContentLoaded\", resolve);\n }\n else {\n resolve();\n }\n });\n}\n//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiYXBwbGljYXRpb24uanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi9zcmMvYXBwbGljYXRpb24udHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6Ijs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7QUFFQSxPQUFPLEVBQUUsVUFBVSxFQUFFLE1BQU0sY0FBYyxDQUFBO0FBRXpDLE9BQU8sRUFBRSxNQUFNLEVBQUUsTUFBTSxVQUFVLENBQUE7QUFDakMsT0FBTyxFQUFVLGFBQWEsRUFBRSxNQUFNLFVBQVUsQ0FBQTtBQUVoRDtJQVlFLHFCQUFZLE9BQTJDLEVBQUUsTUFBOEI7UUFBM0Usd0JBQUEsRUFBQSxVQUFtQixRQUFRLENBQUMsZUFBZTtRQUFFLHVCQUFBLEVBQUEsc0JBQThCO1FBQ3JGLElBQUksQ0FBQyxPQUFPLEdBQUcsT0FBTyxDQUFBO1FBQ3RCLElBQUksQ0FBQyxNQUFNLEdBQUcsTUFBTSxDQUFBO1FBQ3BCLElBQUksQ0FBQyxVQUFVLEdBQUcsSUFBSSxVQUFVLENBQUMsSUFBSSxDQUFDLENBQUE7UUFDdEMsSUFBSSxDQUFDLE1BQU0sR0FBRyxJQUFJLE1BQU0sQ0FBQyxJQUFJLENBQUMsQ0FBQTtJQUNoQyxDQUFDO0lBWE0saUJBQUssR0FBWixVQUFhLE9BQWlCLEVBQUUsTUFBZTtRQUM3QyxJQUFNLFdBQVcsR0FBRyxJQUFJLFdBQVcsQ0FBQyxPQUFPLEVBQUUsTUFBTSxDQUFDLENBQUE7UUFDcEQsV0FBVyxDQUFDLEtBQUssRUFBRSxDQUFBO1FBQ25CLE9BQU8sV0FBVyxDQUFBO0lBQ3BCLENBQUM7SUFTSywyQkFBSyxHQUFYOzs7OzRCQUNFLHFCQUFNLFFBQVEsRUFBRSxFQUFBOzt3QkFBaEIsU0FBZ0IsQ0FBQTt3QkFDaEIsSUFBSSxDQUFDLE1BQU0sQ0FBQyxLQUFLLEVBQUUsQ0FBQTt3QkFDbkIsSUFBSSxDQUFDLFVBQVUsQ0FBQyxLQUFLLEVBQUUsQ0FBQTs7Ozs7S0FDeEI7SUFFRCwwQkFBSSxHQUFKO1FB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","/** @hidden */\nexport function defineTargetProperties(constructor) {\n var prototype = constructor.prototype;\n var targetNames = getTargetNamesForConstructor(constructor);\n targetNames.forEach(function (name) {\n var _a;\n return defineLinkedProperties(prototype, (_a = {},\n _a[name + \"Target\"] = {\n get: function () {\n var target = this.targets.find(name);\n if (target) {\n return target;\n }\n else {\n throw new Error(\"Missing target element \\\"\" + this.identifier + \".\" + name + \"\\\"\");\n }\n }\n },\n _a[name + \"Targets\"] = {\n get: function () {\n return this.targets.findAll(name);\n }\n },\n _a[\"has\" + capitalize(name) + \"Target\"] = {\n get: function () {\n return this.targets.has(name);\n }\n },\n _a));\n });\n}\nfunction getTargetNamesForConstructor(constructor) {\n var ancestors = getAncestorsForConstructor(constructor);\n return Array.from(ancestors.reduce(function (targetNames, constructor) {\n getOwnTargetNamesForConstructor(constructor).forEach(function (name) { return targetNames.add(name); });\n return targetNames;\n }, new Set));\n}\nfunction getAncestorsForConstructor(constructor) {\n var ancestors = [];\n while (constructor) {\n ancestors.push(constructor);\n constructor = Object.getPrototypeOf(constructor);\n }\n return ancestors;\n}\nfunction getOwnTargetNamesForConstructor(constructor) {\n var definition = constructor[\"targets\"];\n return Array.isArray(definition) ? definition : [];\n}\nfunction defineLinkedProperties(object, properties) {\n Object.keys(properties).forEach(function (name) {\n if (!(name in object)) {\n var descriptor = properties[name];\n Object.defineProperty(object, name, descriptor);\n }\n });\n}\nfunction capitalize(name) {\n return name.charAt(0).toUpperCase() + name.slice(1);\n}\n//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidGFyZ2V0X3Byb3BlcnRpZXMuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi9zcmMvdGFyZ2V0X3Byb3BlcnRpZXMudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBRUEsY0FBYztBQUNkLE1BQU0saUNBQWlDLFdBQXFCO0lBQzFELElBQU0sU0FBUyxHQUFHLFdBQVcsQ0FBQyxTQUFTLENBQUE7SUFDdkMsSUFBTSxXQUFXLEdBQUcsNEJBQTRCLENBQUMsV0FBVyxDQUFDLENBQUE7SUFDN0QsV0FBVyxDQUFDLE9BQU8sQ0FBQyxVQUFBLElBQUk7O1FBQUksT0FBQSxzQkFBc0IsQ0FBQyxTQUFTO1lBQzFELEdBQUksSUFBSSxXQUFRLElBQUc7Z0JBQ2pCLEdBQUc7b0JBQ0QsSUFBTSxNQUFNLEdBQUcsSUFBSSxDQUFDLE9BQU8sQ0FBQyxJQUFJLENBQUMsSUFBSSxDQUFDLENBQUE7b0JBQ3RDLElBQUksTUFBTSxFQUFFO3dCQUNWLE9BQU8sTUFBTSxDQUFBO3FCQUNkO3lCQUFNO3dCQUNMLE1BQU0sSUFBSSxLQUFLLENBQUMsOEJBQTJCLElBQUksQ0FBQyxVQUFVLFNBQUksSUFBSSxPQUFHLENBQUMsQ0FBQTtxQkFDdkU7Z0JBQ0gsQ0FBQzthQUNGO1lBQ0QsR0FBSSxJQUFJLFlBQVMsSUFBRztnQkFDbEIsR0FBRztvQkFDRCxPQUFPLElBQUksQ0FBQyxPQUFPLENBQUMsT0FBTyxDQUFDLElBQUksQ0FBQyxDQUFBO2dCQUNuQyxDQUFDO2FBQ0Y7WUFDRCxHQUFDLFFBQU0sVUFBVSxDQUFDLElBQUksQ0FBQyxXQUFRLElBQUc7Z0JBQ2hDLEdBQUc7b0JBQ0QsT0FBTyxJQUFJLENBQUMsT0FBTyxDQUFDLEdBQUcsQ0FBQyxJQUFJLENBQUMsQ0FBQTtnQkFDL0IsQ0FBQzthQUNGO2dCQUNEO0lBckIwQixDQXFCMUIsQ0FBQyxDQUFBO0FBQ0wsQ0FBQztBQUVELHNDQUFzQyxXQUFxQjtJQUN6RCxJQUFNLFNBQVMsR0FBRywwQkFBMEIsQ0FBQyxXQUFXLENBQUMsQ0FBQTtJQUN6RCxPQUFPLEtBQUssQ0FBQyxJQUFJLENBQUMsU0FBUyxDQUFDLE1BQU0sQ0FBQyxVQUFDLFdBQVcsRUFBRSxXQUFXO1FBQzFELCtCQUErQixDQUFDLFdBQVcsQ0FBQyxDQUFDLE9BQU8sQ0FBQyxVQUFBLElBQUksSUFBSSxPQUFBLFdBQVcsQ0FBQyxHQUFHLENBQUMsSUFBSSxDQUFDLEVBQXJCLENBQXFCLENBQUMsQ0FBQTtRQUNuRixPQUFPLFdBQVcsQ0FBQTtJQUNwQixDQUFDLEVBQUUsSUFBSSxHQUFrQixDQUFDLENBQUMsQ0FBQTtBQUM3QixDQUFDO0FBRUQsb0NBQW9DLFdBQXFCO0lBQ3ZELElBQU0sU0FBUyxHQUFlLEVBQUUsQ0FBQTtJQUNoQyxPQUFPLFdBQVcsRUFBRTtRQUNsQixTQUFTLENBQUMsSUFBSSxDQUFDLFdBQVcsQ0FBQyxDQUFBO1FBQzNCLFdBQVcsR0FBRyxNQUFNLENBQUMsY0FBYyxDQUFDLFdBQVcsQ0FBQyxDQUFBO0tBQ2pEO0lBQ0QsT0FBTyxTQUFTLENBQUE7QUFDbEIsQ0FBQztBQUVELHlDQUF5QyxXQUFxQjtJQUM1RCxJQUFNLFVBQVUsR0FBSSxXQUFtQixDQUFDLFNBQVMsQ0FBQyxDQUFBO0lBQ2xELE9BQU8sS0FBSyxDQUFDLE9BQU8sQ0FBQyxVQUFVLENBQUMsQ0FBQyxDQUFDLENBQUMsVUFBVSxDQUFDLENBQUMsQ0FBQyxFQUFFLENBQUE7QUFDcEQsQ0FBQztBQUVELGdDQUFnQyxNQUFXLEVBQUUsVUFBaUM7SUFDNUUsTUFBTSxDQUFDLElBQUksQ0FBQyxVQUFVLENBQUMsQ0FBQyxPQUFPLENBQUMsVUFBQyxJQUFJO1FBQ25DLElBQUksQ0FBQyxDQUFDLElBQUksSUFBSSxNQUFNLENBQUMsRUFBRTtZQUNyQixJQUFNLFVBQVUsR0FBRyxVQUFVLENBQUMsSUFBSSxDQUFDLENBQUE7WUFDbkMsTUFBTSxDQUFDLGNBQWMsQ0FBQyxNQUFNLEVBQUUsSUFBSSxFQUFFLFVBQVUsQ0FBQyxDQUFBO1NBQ2hEO0lBQ0gsQ0FBQyxDQUFDLENBQUE7QUFDSixDQUFDO0FBRUQsb0JBQW9CLElBQVk7SUFDOUIsT0FBTyxJQUFJLENBQUMsTUFBTSxDQUFDLENBQUMsQ0FBQyxDQUFDLFdBQVcsRUFBRSxHQUFHLElBQUksQ0FBQyxLQUFLLENBQUMsQ0FBQyxDQUFDLENBQUE7QUFDckQsQ0FBQyJ9","import { defineTargetProperties } from \"./target_properties\";\nvar Controller = /** @class */ (function () {\n function Controller(context) {\n this.context = context;\n }\n Controller.bless = function () {\n defineTargetProperties(this);\n };\n Object.defineProperty(Controller.prototype, \"application\", {\n get: function () {\n return this.context.application;\n },\n enumerable: true,\n configurable: true\n });\n Object.defineProperty(Controller.prototype, \"scope\", {\n get: function () {\n return this.context.scope;\n },\n enumerable: true,\n configurable: true\n });\n Object.defineProperty(Controller.prototype, \"element\", {\n get: function () {\n return this.scope.element;\n },\n enumerable: true,\n configurable: true\n });\n Object.defineProperty(Controller.prototype, \"identifier\", {\n get: function () {\n return this.scope.identifier;\n },\n enumerable: true,\n configurable: true\n });\n Object.defineProperty(Controller.prototype, \"targets\", {\n get: function () {\n return this.scope.targets;\n },\n enumerable: true,\n configurable: true\n });\n Object.defineProperty(Controller.prototype, \"data\", {\n get: function () {\n return this.scope.data;\n },\n enumerable: true,\n configurable: true\n });\n Controller.prototype.initialize = function () {\n // Override in your subclass to set up initial controller state\n };\n Controller.prototype.connect = function () {\n // Override in your subclass to respond when the controller is connected to the DOM\n };\n Controller.prototype.disconnect = function () {\n // Override in your subclass to respond when the controller is disconnected from the DOM\n };\n Controller.targets = [];\n return Controller;\n}());\nexport { Controller };\n//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiY29udHJvbGxlci5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uL3NyYy9jb250cm9sbGVyLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUtBLE9BQU8sRUFBRSxzQkFBc0IsRUFBRSxNQUFNLHFCQUFxQixDQUFBO0FBTzVEO0lBU0Usb0JBQVksT0FBZ0I7UUFDMUIsSUFBSSxDQUFDLE9BQU8sR0FBRyxPQUFPLENBQUE7SUFDeEIsQ0FBQztJQU5NLGdCQUFLLEdBQVo7UUFDRSxzQkFBc0IsQ0FBQyxJQUFJLENBQUMsQ0FBQTtJQUM5QixDQUFDO0lBTUQsc0JBQUksbUNBQVc7YUFBZjtZQUNFLE9BQU8sSUFBSSxDQUFDLE9BQU8sQ0FBQyxXQUFXLENBQUE7UUFDakMsQ0FBQzs7O09BQUE7SUFFRCxzQkFBSSw2QkFBSzthQUFUO1lBQ0UsT0FBTyxJQUFJLENBQUMsT0FBTyxDQUFDLEtBQUssQ0FBQTtRQUMzQixDQUFDOzs7T0FBQTtJQUVELHNCQUFJLCtCQUFPO2FBQVg7WUFDRSxPQUFPLElBQUksQ0FBQyxLQUFLLENBQUMsT0FBTyxDQUFBO1FBQzNCLENBQUM7OztPQUFBO0lBRUQsc0JBQUksa0NBQVU7YUFBZDtZQUNFLE9BQU8sSUFBSSxDQUFDLEtBQUssQ0FBQyxVQUFVLENBQUE7UUFDOUIsQ0FBQzs7O09BQUE7SUFFRCxzQkFBSSwrQkFBTzthQUFYO1lBQ0UsT0FBTyxJQUFJLENBQUMsS0FBSyxDQUFDLE9BQU8sQ0FBQTtRQUMzQixDQUFDOzs7T0FBQTtJQUVELHNCQUFJLDRCQUFJO2FBQVI7WUFDRSxPQUFPLElBQUksQ0FBQyxLQUFLLENBQUMsSUFBSSxDQUFBO1FBQ3hCLENBQUM7OztPQUFBO0lBRUQsK0JBQVUsR0FBVjtRQUNFLCtEQUErRDtJQUNqRSxDQUFDO0lBRUQsNEJBQU8sR0FBUDtRQUNFLG1GQUFtRjtJQUNyRixDQUFDO0lBRUQsK0JBQVUsR0FBVjtRQUNFLHdGQUF3RjtJQUMxRixDQUFDO0lBOUNNLGtCQUFPLEdBQWEsRUFBRSxDQUFBO0lBK0MvQixpQkFBQztDQUFBLEFBaERELElBZ0RDO1NBaERZLFVBQVUifQ==","// CodeMirror, copyright (c) by Marijn Haverbeke and others\n// Distributed under an MIT license: https://codemirror.net/5/LICENSE\n\n// This is CodeMirror (https://codemirror.net/5), a code editor\n// implemented in JavaScript on top of the browser's DOM.\n//\n// You can find some technical background for some of the code below\n// at http://marijnhaverbeke.nl/blog/#cm-internals .\n\n(function (global, factory) {\n typeof exports === 'object' && typeof module !== 'undefined' ? module.exports = factory() :\n typeof define === 'function' && define.amd ? define(factory) :\n (global = global || self, global.CodeMirror = factory());\n}(this, (function () { 'use strict';\n\n // Kludges for bugs and behavior differences that can't be feature\n // detected are enabled based on userAgent etc sniffing.\n var userAgent = navigator.userAgent;\n var platform = navigator.platform;\n\n var gecko = /gecko\\/\\d/i.test(userAgent);\n var ie_upto10 = /MSIE \\d/.test(userAgent);\n var ie_11up = /Trident\\/(?:[7-9]|\\d{2,})\\..*rv:(\\d+)/.exec(userAgent);\n var edge = /Edge\\/(\\d+)/.exec(userAgent);\n var ie = ie_upto10 || ie_11up || edge;\n var ie_version = ie && (ie_upto10 ? document.documentMode || 6 : +(edge || ie_11up)[1]);\n var webkit = !edge && /WebKit\\//.test(userAgent);\n var qtwebkit = webkit && /Qt\\/\\d+\\.\\d+/.test(userAgent);\n var chrome = !edge && /Chrome\\/(\\d+)/.exec(userAgent);\n var chrome_version = chrome && +chrome[1];\n var presto = /Opera\\//.test(userAgent);\n var safari = /Apple Computer/.test(navigator.vendor);\n var mac_geMountainLion = /Mac OS X 1\\d\\D([8-9]|\\d\\d)\\D/.test(userAgent);\n var phantom = /PhantomJS/.test(userAgent);\n\n var ios = safari && (/Mobile\\/\\w+/.test(userAgent) || navigator.maxTouchPoints > 2);\n var android = /Android/.test(userAgent);\n // This is woefully incomplete. Suggestions for alternative methods welcome.\n var mobile = ios || android || /webOS|BlackBerry|Opera Mini|Opera Mobi|IEMobile/i.test(userAgent);\n var mac = ios || /Mac/.test(platform);\n var chromeOS = /\\bCrOS\\b/.test(userAgent);\n var windows = /win/i.test(platform);\n\n var presto_version = presto && userAgent.match(/Version\\/(\\d*\\.\\d*)/);\n if (presto_version) { presto_version = Number(presto_version[1]); }\n if (presto_version && presto_version >= 15) { presto = false; webkit = true; }\n // Some browsers use the wrong event properties to signal cmd/ctrl on OS X\n var flipCtrlCmd = mac && (qtwebkit || presto && (presto_version == null || presto_version < 12.11));\n var captureRightClick = gecko || (ie && ie_version >= 9);\n\n function classTest(cls) { return new RegExp(\"(^|\\\\s)\" + cls + \"(?:$|\\\\s)\\\\s*\") }\n\n var rmClass = function(node, cls) {\n var current = node.className;\n var match = classTest(cls).exec(current);\n if (match) {\n var after = current.slice(match.index + match[0].length);\n node.className = current.slice(0, match.index) + (after ? match[1] + after : \"\");\n }\n };\n\n function removeChildren(e) {\n for (var count = e.childNodes.length; count > 0; --count)\n { e.removeChild(e.firstChild); }\n return e\n }\n\n function removeChildrenAndAdd(parent, e) {\n return removeChildren(parent).appendChild(e)\n }\n\n function elt(tag, content, className, style) {\n var e = document.createElement(tag);\n if (className) { e.className = className; }\n if (style) { e.style.cssText = style; }\n if (typeof content == \"string\") { e.appendChild(document.createTextNode(content)); }\n else if (content) { for (var i = 0; i < content.length; ++i) { e.appendChild(content[i]); } }\n return e\n }\n // wrapper for elt, which removes the elt from the accessibility tree\n function eltP(tag, content, className, style) {\n var e = elt(tag, content, className, style);\n e.setAttribute(\"role\", \"presentation\");\n return e\n }\n\n var range;\n if (document.createRange) { range = function(node, start, end, endNode) {\n var r = document.createRange();\n r.setEnd(endNode || node, end);\n r.setStart(node, start);\n return r\n }; }\n else { range = function(node, start, end) {\n var r = document.body.createTextRange();\n try { r.moveToElementText(node.parentNode); }\n catch(e) { return r }\n r.collapse(true);\n r.moveEnd(\"character\", end);\n r.moveStart(\"character\", start);\n return r\n }; }\n\n function contains(parent, child) {\n if (child.nodeType == 3) // Android browser always returns false when child is a textnode\n { child = child.parentNode; }\n if (parent.contains)\n { return parent.contains(child) }\n do {\n if (child.nodeType == 11) { child = child.host; }\n if (child == parent) { return true }\n } while (child = child.parentNode)\n }\n\n function activeElt() {\n // IE and Edge may throw an \"Unspecified Error\" when accessing document.activeElement.\n // IE < 10 will throw when accessed while the page is loading or in an iframe.\n // IE > 9 and Edge will throw when accessed in an iframe if document.body is unavailable.\n var activeElement;\n try {\n activeElement = document.activeElement;\n } catch(e) {\n activeElement = document.body || null;\n }\n while (activeElement && activeElement.shadowRoot && activeElement.shadowRoot.activeElement)\n { activeElement = activeElement.shadowRoot.activeElement; }\n return activeElement\n }\n\n function addClass(node, cls) {\n var current = node.className;\n if (!classTest(cls).test(current)) { node.className += (current ? \" \" : \"\") + cls; }\n }\n function joinClasses(a, b) {\n var as = a.split(\" \");\n for (var i = 0; i < as.length; i++)\n { if (as[i] && !classTest(as[i]).test(b)) { b += \" \" + as[i]; } }\n return b\n }\n\n var selectInput = function(node) { node.select(); };\n if (ios) // Mobile Safari apparently has a bug where select() is broken.\n { selectInput = function(node) { node.selectionStart = 0; node.selectionEnd = node.value.length; }; }\n else if (ie) // Suppress mysterious IE10 errors\n { selectInput = function(node) { try { node.select(); } catch(_e) {} }; }\n\n function bind(f) {\n var args = Array.prototype.slice.call(arguments, 1);\n return function(){return f.apply(null, args)}\n }\n\n function copyObj(obj, target, overwrite) {\n if (!target) { target = {}; }\n for (var prop in obj)\n { if (obj.hasOwnProperty(prop) && (overwrite !== false || !target.hasOwnProperty(prop)))\n { target[prop] = obj[prop]; } }\n return target\n }\n\n // Counts the column offset in a string, taking tabs into account.\n // Used mostly to find indentation.\n function countColumn(string, end, tabSize, startIndex, startValue) {\n if (end == null) {\n end = string.search(/[^\\s\\u00a0]/);\n if (end == -1) { end = string.length; }\n }\n for (var i = startIndex || 0, n = startValue || 0;;) {\n var nextTab = string.indexOf(\"\\t\", i);\n if (nextTab < 0 || nextTab >= end)\n { return n + (end - i) }\n n += nextTab - i;\n n += tabSize - (n % tabSize);\n i = nextTab + 1;\n }\n }\n\n var Delayed = function() {\n this.id = null;\n this.f = null;\n this.time = 0;\n this.handler = bind(this.onTimeout, this);\n };\n Delayed.prototype.onTimeout = function (self) {\n self.id = 0;\n if (self.time <= +new Date) {\n self.f();\n } else {\n setTimeout(self.handler, self.time - +new Date);\n }\n };\n Delayed.prototype.set = function (ms, f) {\n this.f = f;\n var time = +new Date + ms;\n if (!this.id || time < this.time) {\n clearTimeout(this.id);\n this.id = setTimeout(this.handler, ms);\n this.time = time;\n }\n };\n\n function indexOf(array, elt) {\n for (var i = 0; i < array.length; ++i)\n { if (array[i] == elt) { return i } }\n return -1\n }\n\n // Number of pixels added to scroller and sizer to hide scrollbar\n var scrollerGap = 50;\n\n // Returned or thrown by various protocols to signal 'I'm not\n // handling this'.\n var Pass = {toString: function(){return \"CodeMirror.Pass\"}};\n\n // Reused option objects for setSelection & friends\n var sel_dontScroll = {scroll: false}, sel_mouse = {origin: \"*mouse\"}, sel_move = {origin: \"+move\"};\n\n // The inverse of countColumn -- find the offset that corresponds to\n // a particular column.\n function findColumn(string, goal, tabSize) {\n for (var pos = 0, col = 0;;) {\n var nextTab = string.indexOf(\"\\t\", pos);\n if (nextTab == -1) { nextTab = string.length; }\n var skipped = nextTab - pos;\n if (nextTab == string.length || col + skipped >= goal)\n { return pos + Math.min(skipped, goal - col) }\n col += nextTab - pos;\n col += tabSize - (col % tabSize);\n pos = nextTab + 1;\n if (col >= goal) { return pos }\n }\n }\n\n var spaceStrs = [\"\"];\n function spaceStr(n) {\n while (spaceStrs.length <= n)\n { spaceStrs.push(lst(spaceStrs) + \" \"); }\n return spaceStrs[n]\n }\n\n function lst(arr) { return arr[arr.length-1] }\n\n function map(array, f) {\n var out = [];\n for (var i = 0; i < array.length; i++) { out[i] = f(array[i], i); }\n return out\n }\n\n function insertSorted(array, value, score) {\n var pos = 0, priority = score(value);\n while (pos < array.length && score(array[pos]) <= priority) { pos++; }\n array.splice(pos, 0, value);\n }\n\n function nothing() {}\n\n function createObj(base, props) {\n var inst;\n if (Object.create) {\n inst = Object.create(base);\n } else {\n nothing.prototype = base;\n inst = new nothing();\n }\n if (props) { copyObj(props, inst); }\n return inst\n }\n\n var nonASCIISingleCaseWordChar = /[\\u00df\\u0587\\u0590-\\u05f4\\u0600-\\u06ff\\u3040-\\u309f\\u30a0-\\u30ff\\u3400-\\u4db5\\u4e00-\\u9fcc\\uac00-\\ud7af]/;\n function isWordCharBasic(ch) {\n return /\\w/.test(ch) || ch > \"\\x80\" &&\n (ch.toUpperCase() != ch.toLowerCase() || nonASCIISingleCaseWordChar.test(ch))\n }\n function isWordChar(ch, helper) {\n if (!helper) { return isWordCharBasic(ch) }\n if (helper.source.indexOf(\"\\\\w\") > -1 && isWordCharBasic(ch)) { return true }\n return helper.test(ch)\n }\n\n function isEmpty(obj) {\n for (var n in obj) { if (obj.hasOwnProperty(n) && obj[n]) { return false } }\n return true\n }\n\n // Extending unicode characters. A series of a non-extending char +\n // any number of extending chars is treated as a single unit as far\n // as editing and measuring is concerned. This is not fully correct,\n // since some scripts/fonts/browsers also treat other configurations\n // of code points as a group.\n var extendingChars = /[\\u0300-\\u036f\\u0483-\\u0489\\u0591-\\u05bd\\u05bf\\u05c1\\u05c2\\u05c4\\u05c5\\u05c7\\u0610-\\u061a\\u064b-\\u065e\\u0670\\u06d6-\\u06dc\\u06de-\\u06e4\\u06e7\\u06e8\\u06ea-\\u06ed\\u0711\\u0730-\\u074a\\u07a6-\\u07b0\\u07eb-\\u07f3\\u0816-\\u0819\\u081b-\\u0823\\u0825-\\u0827\\u0829-\\u082d\\u0900-\\u0902\\u093c\\u0941-\\u0948\\u094d\\u0951-\\u0955\\u0962\\u0963\\u0981\\u09bc\\u09be\\u09c1-\\u09c4\\u09cd\\u09d7\\u09e2\\u09e3\\u0a01\\u0a02\\u0a3c\\u0a41\\u0a42\\u0a47\\u0a48\\u0a4b-\\u0a4d\\u0a51\\u0a70\\u0a71\\u0a75\\u0a81\\u0a82\\u0abc\\u0ac1-\\u0ac5\\u0ac7\\u0ac8\\u0acd\\u0ae2\\u0ae3\\u0b01\\u0b3c\\u0b3e\\u0b3f\\u0b41-\\u0b44\\u0b4d\\u0b56\\u0b57\\u0b62\\u0b63\\u0b82\\u0bbe\\u0bc0\\u0bcd\\u0bd7\\u0c3e-\\u0c40\\u0c46-\\u0c48\\u0c4a-\\u0c4d\\u0c55\\u0c56\\u0c62\\u0c63\\u0cbc\\u0cbf\\u0cc2\\u0cc6\\u0ccc\\u0ccd\\u0cd5\\u0cd6\\u0ce2\\u0ce3\\u0d3e\\u0d41-\\u0d44\\u0d4d\\u0d57\\u0d62\\u0d63\\u0dca\\u0dcf\\u0dd2-\\u0dd4\\u0dd6\\u0ddf\\u0e31\\u0e34-\\u0e3a\\u0e47-\\u0e4e\\u0eb1\\u0eb4-\\u0eb9\\u0ebb\\u0ebc\\u0ec8-\\u0ecd\\u0f18\\u0f19\\u0f35\\u0f37\\u0f39\\u0f71-\\u0f7e\\u0f80-\\u0f84\\u0f86\\u0f87\\u0f90-\\u0f97\\u0f99-\\u0fbc\\u0fc6\\u102d-\\u1030\\u1032-\\u1037\\u1039\\u103a\\u103d\\u103e\\u1058\\u1059\\u105e-\\u1060\\u1071-\\u1074\\u1082\\u1085\\u1086\\u108d\\u109d\\u135f\\u1712-\\u1714\\u1732-\\u1734\\u1752\\u1753\\u1772\\u1773\\u17b7-\\u17bd\\u17c6\\u17c9-\\u17d3\\u17dd\\u180b-\\u180d\\u18a9\\u1920-\\u1922\\u1927\\u1928\\u1932\\u1939-\\u193b\\u1a17\\u1a18\\u1a56\\u1a58-\\u1a5e\\u1a60\\u1a62\\u1a65-\\u1a6c\\u1a73-\\u1a7c\\u1a7f\\u1b00-\\u1b03\\u1b34\\u1b36-\\u1b3a\\u1b3c\\u1b42\\u1b6b-\\u1b73\\u1b80\\u1b81\\u1ba2-\\u1ba5\\u1ba8\\u1ba9\\u1c2c-\\u1c33\\u1c36\\u1c37\\u1cd0-\\u1cd2\\u1cd4-\\u1ce0\\u1ce2-\\u1ce8\\u1ced\\u1dc0-\\u1de6\\u1dfd-\\u1dff\\u200c\\u200d\\u20d0-\\u20f0\\u2cef-\\u2cf1\\u2de0-\\u2dff\\u302a-\\u302f\\u3099\\u309a\\ua66f-\\ua672\\ua67c\\ua67d\\ua6f0\\ua6f1\\ua802\\ua806\\ua80b\\ua825\\ua826\\ua8c4\\ua8e0-\\ua8f1\\ua926-\\ua92d\\ua947-\\ua951\\ua980-\\ua982\\ua9b3\\ua9b6-\\ua9b9\\ua9bc\\uaa29-\\uaa2e\\uaa31\\uaa32\\uaa35\\uaa36\\uaa43\\uaa4c\\uaab0\\uaab2-\\uaab4\\uaab7\\uaab8\\uaabe\\uaabf\\uaac1\\uabe5\\uabe8\\uabed\\udc00-\\udfff\\ufb1e\\ufe00-\\ufe0f\\ufe20-\\ufe26\\uff9e\\uff9f]/;\n function isExtendingChar(ch) { return ch.charCodeAt(0) >= 768 && extendingChars.test(ch) }\n\n // Returns a number from the range [`0`; `str.length`] unless `pos` is outside that range.\n function skipExtendingChars(str, pos, dir) {\n while ((dir < 0 ? pos > 0 : pos < str.length) && isExtendingChar(str.charAt(pos))) { pos += dir; }\n return pos\n }\n\n // Returns the value from the range [`from`; `to`] that satisfies\n // `pred` and is closest to `from`. Assumes that at least `to`\n // satisfies `pred`. Supports `from` being greater than `to`.\n function findFirst(pred, from, to) {\n // At any point we are certain `to` satisfies `pred`, don't know\n // whether `from` does.\n var dir = from > to ? -1 : 1;\n for (;;) {\n if (from == to) { return from }\n var midF = (from + to) / 2, mid = dir < 0 ? Math.ceil(midF) : Math.floor(midF);\n if (mid == from) { return pred(mid) ? from : to }\n if (pred(mid)) { to = mid; }\n else { from = mid + dir; }\n }\n }\n\n // BIDI HELPERS\n\n function iterateBidiSections(order, from, to, f) {\n if (!order) { return f(from, to, \"ltr\", 0) }\n var found = false;\n for (var i = 0; i < order.length; ++i) {\n var part = order[i];\n if (part.from < to && part.to > from || from == to && part.to == from) {\n f(Math.max(part.from, from), Math.min(part.to, to), part.level == 1 ? \"rtl\" : \"ltr\", i);\n found = true;\n }\n }\n if (!found) { f(from, to, \"ltr\"); }\n }\n\n var bidiOther = null;\n function getBidiPartAt(order, ch, sticky) {\n var found;\n bidiOther = null;\n for (var i = 0; i < order.length; ++i) {\n var cur = order[i];\n if (cur.from < ch && cur.to > ch) { return i }\n if (cur.to == ch) {\n if (cur.from != cur.to && sticky == \"before\") { found = i; }\n else { bidiOther = i; }\n }\n if (cur.from == ch) {\n if (cur.from != cur.to && sticky != \"before\") { found = i; }\n else { bidiOther = i; }\n }\n }\n return found != null ? found : bidiOther\n }\n\n // Bidirectional ordering algorithm\n // See http://unicode.org/reports/tr9/tr9-13.html for the algorithm\n // that this (partially) implements.\n\n // One-char codes used for character types:\n // L (L): Left-to-Right\n // R (R): Right-to-Left\n // r (AL): Right-to-Left Arabic\n // 1 (EN): European Number\n // + (ES): European Number Separator\n // % (ET): European Number Terminator\n // n (AN): Arabic Number\n // , (CS): Common Number Separator\n // m (NSM): Non-Spacing Mark\n // b (BN): Boundary Neutral\n // s (B): Paragraph Separator\n // t (S): Segment Separator\n // w (WS): Whitespace\n // N (ON): Other Neutrals\n\n // Returns null if characters are ordered as they appear\n // (left-to-right), or an array of sections ({from, to, level}\n // objects) in the order in which they occur visually.\n var bidiOrdering = (function() {\n // Character types for codepoints 0 to 0xff\n var lowTypes = \"bbbbbbbbbtstwsbbbbbbbbbbbbbbssstwNN%%%NNNNNN,N,N1111111111NNNNNNNLLLLLLLLLLLLLLLLLLLLLLLLLLNNNNNNLLLLLLLLLLLLLLLLLLLLLLLLLLNNNNbbbbbbsbbbbbbbbbbbbbbbbbbbbbbbbbb,N%%%%NNNNLNNNNN%%11NLNNN1LNNNNNLLLLLLLLLLLLLLLLLLLLLLLNLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLN\";\n // Character types for codepoints 0x600 to 0x6f9\n var arabicTypes = \"nnnnnnNNr%%r,rNNmmmmmmmmmmmrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrmmmmmmmmmmmmmmmmmmmmmnnnnnnnnnn%nnrrrmrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrmmmmmmmnNmmmmmmrrmmNmmmmrr1111111111\";\n function charType(code) {\n if (code <= 0xf7) { return lowTypes.charAt(code) }\n else if (0x590 <= code && code <= 0x5f4) { return \"R\" }\n else if (0x600 <= code && code <= 0x6f9) { return arabicTypes.charAt(code - 0x600) }\n else if (0x6ee <= code && code <= 0x8ac) { return \"r\" }\n else if (0x2000 <= code && code <= 0x200b) { return \"w\" }\n else if (code == 0x200c) { return \"b\" }\n else { return \"L\" }\n }\n\n var bidiRE = /[\\u0590-\\u05f4\\u0600-\\u06ff\\u0700-\\u08ac]/;\n var isNeutral = /[stwN]/, isStrong = /[LRr]/, countsAsLeft = /[Lb1n]/, countsAsNum = /[1n]/;\n\n function BidiSpan(level, from, to) {\n this.level = level;\n this.from = from; this.to = to;\n }\n\n return function(str, direction) {\n var outerType = direction == \"ltr\" ? \"L\" : \"R\";\n\n if (str.length == 0 || direction == \"ltr\" && !bidiRE.test(str)) { return false }\n var len = str.length, types = [];\n for (var i = 0; i < len; ++i)\n { types.push(charType(str.charCodeAt(i))); }\n\n // W1. Examine each non-spacing mark (NSM) in the level run, and\n // change the type of the NSM to the type of the previous\n // character. If the NSM is at the start of the level run, it will\n // get the type of sor.\n for (var i$1 = 0, prev = outerType; i$1 < len; ++i$1) {\n var type = types[i$1];\n if (type == \"m\") { types[i$1] = prev; }\n else { prev = type; }\n }\n\n // W2. Search backwards from each instance of a European number\n // until the first strong type (R, L, AL, or sor) is found. If an\n // AL is found, change the type of the European number to Arabic\n // number.\n // W3. Change all ALs to R.\n for (var i$2 = 0, cur = outerType; i$2 < len; ++i$2) {\n var type$1 = types[i$2];\n if (type$1 == \"1\" && cur == \"r\") { types[i$2] = \"n\"; }\n else if (isStrong.test(type$1)) { cur = type$1; if (type$1 == \"r\") { types[i$2] = \"R\"; } }\n }\n\n // W4. A single European separator between two European numbers\n // changes to a European number. A single common separator between\n // two numbers of the same type changes to that type.\n for (var i$3 = 1, prev$1 = types[0]; i$3 < len - 1; ++i$3) {\n var type$2 = types[i$3];\n if (type$2 == \"+\" && prev$1 == \"1\" && types[i$3+1] == \"1\") { types[i$3] = \"1\"; }\n else if (type$2 == \",\" && prev$1 == types[i$3+1] &&\n (prev$1 == \"1\" || prev$1 == \"n\")) { types[i$3] = prev$1; }\n prev$1 = type$2;\n }\n\n // W5. A sequence of European terminators adjacent to European\n // numbers changes to all European numbers.\n // W6. Otherwise, separators and terminators change to Other\n // Neutral.\n for (var i$4 = 0; i$4 < len; ++i$4) {\n var type$3 = types[i$4];\n if (type$3 == \",\") { types[i$4] = \"N\"; }\n else if (type$3 == \"%\") {\n var end = (void 0);\n for (end = i$4 + 1; end < len && types[end] == \"%\"; ++end) {}\n var replace = (i$4 && types[i$4-1] == \"!\") || (end < len && types[end] == \"1\") ? \"1\" : \"N\";\n for (var j = i$4; j < end; ++j) { types[j] = replace; }\n i$4 = end - 1;\n }\n }\n\n // W7. Search backwards from each instance of a European number\n // until the first strong type (R, L, or sor) is found. If an L is\n // found, then change the type of the European number to L.\n for (var i$5 = 0, cur$1 = outerType; i$5 < len; ++i$5) {\n var type$4 = types[i$5];\n if (cur$1 == \"L\" && type$4 == \"1\") { types[i$5] = \"L\"; }\n else if (isStrong.test(type$4)) { cur$1 = type$4; }\n }\n\n // N1. A sequence of neutrals takes the direction of the\n // surrounding strong text if the text on both sides has the same\n // direction. European and Arabic numbers act as if they were R in\n // terms of their influence on neutrals. Start-of-level-run (sor)\n // and end-of-level-run (eor) are used at level run boundaries.\n // N2. Any remaining neutrals take the embedding direction.\n for (var i$6 = 0; i$6 < len; ++i$6) {\n if (isNeutral.test(types[i$6])) {\n var end$1 = (void 0);\n for (end$1 = i$6 + 1; end$1 < len && isNeutral.test(types[end$1]); ++end$1) {}\n var before = (i$6 ? types[i$6-1] : outerType) == \"L\";\n var after = (end$1 < len ? types[end$1] : outerType) == \"L\";\n var replace$1 = before == after ? (before ? \"L\" : \"R\") : outerType;\n for (var j$1 = i$6; j$1 < end$1; ++j$1) { types[j$1] = replace$1; }\n i$6 = end$1 - 1;\n }\n }\n\n // Here we depart from the documented algorithm, in order to avoid\n // building up an actual levels array. Since there are only three\n // levels (0, 1, 2) in an implementation that doesn't take\n // explicit embedding into account, we can build up the order on\n // the fly, without following the level-based algorithm.\n var order = [], m;\n for (var i$7 = 0; i$7 < len;) {\n if (countsAsLeft.test(types[i$7])) {\n var start = i$7;\n for (++i$7; i$7 < len && countsAsLeft.test(types[i$7]); ++i$7) {}\n order.push(new BidiSpan(0, start, i$7));\n } else {\n var pos = i$7, at = order.length, isRTL = direction == \"rtl\" ? 1 : 0;\n for (++i$7; i$7 < len && types[i$7] != \"L\"; ++i$7) {}\n for (var j$2 = pos; j$2 < i$7;) {\n if (countsAsNum.test(types[j$2])) {\n if (pos < j$2) { order.splice(at, 0, new BidiSpan(1, pos, j$2)); at += isRTL; }\n var nstart = j$2;\n for (++j$2; j$2 < i$7 && countsAsNum.test(types[j$2]); ++j$2) {}\n order.splice(at, 0, new BidiSpan(2, nstart, j$2));\n at += isRTL;\n pos = j$2;\n } else { ++j$2; }\n }\n if (pos < i$7) { order.splice(at, 0, new BidiSpan(1, pos, i$7)); }\n }\n }\n if (direction == \"ltr\") {\n if (order[0].level == 1 && (m = str.match(/^\\s+/))) {\n order[0].from = m[0].length;\n order.unshift(new BidiSpan(0, 0, m[0].length));\n }\n if (lst(order).level == 1 && (m = str.match(/\\s+$/))) {\n lst(order).to -= m[0].length;\n order.push(new BidiSpan(0, len - m[0].length, len));\n }\n }\n\n return direction == \"rtl\" ? order.reverse() : order\n }\n })();\n\n // Get the bidi ordering for the given line (and cache it). Returns\n // false for lines that are fully left-to-right, and an array of\n // BidiSpan objects otherwise.\n function getOrder(line, direction) {\n var order = line.order;\n if (order == null) { order = line.order = bidiOrdering(line.text, direction); }\n return order\n }\n\n // EVENT HANDLING\n\n // Lightweight event framework. on/off also work on DOM nodes,\n // registering native DOM handlers.\n\n var noHandlers = [];\n\n var on = function(emitter, type, f) {\n if (emitter.addEventListener) {\n emitter.addEventListener(type, f, false);\n } else if (emitter.attachEvent) {\n emitter.attachEvent(\"on\" + type, f);\n } else {\n var map = emitter._handlers || (emitter._handlers = {});\n map[type] = (map[type] || noHandlers).concat(f);\n }\n };\n\n function getHandlers(emitter, type) {\n return emitter._handlers && emitter._handlers[type] || noHandlers\n }\n\n function off(emitter, type, f) {\n if (emitter.removeEventListener) {\n emitter.removeEventListener(type, f, false);\n } else if (emitter.detachEvent) {\n emitter.detachEvent(\"on\" + type, f);\n } else {\n var map = emitter._handlers, arr = map && map[type];\n if (arr) {\n var index = indexOf(arr, f);\n if (index > -1)\n { map[type] = arr.slice(0, index).concat(arr.slice(index + 1)); }\n }\n }\n }\n\n function signal(emitter, type /*, values...*/) {\n var handlers = getHandlers(emitter, type);\n if (!handlers.length) { return }\n var args = Array.prototype.slice.call(arguments, 2);\n for (var i = 0; i < handlers.length; ++i) { handlers[i].apply(null, args); }\n }\n\n // The DOM events that CodeMirror handles can be overridden by\n // registering a (non-DOM) handler on the editor for the event name,\n // and preventDefault-ing the event in that handler.\n function signalDOMEvent(cm, e, override) {\n if (typeof e == \"string\")\n { e = {type: e, preventDefault: function() { this.defaultPrevented = true; }}; }\n signal(cm, override || e.type, cm, e);\n return e_defaultPrevented(e) || e.codemirrorIgnore\n }\n\n function signalCursorActivity(cm) {\n var arr = cm._handlers && cm._handlers.cursorActivity;\n if (!arr) { return }\n var set = cm.curOp.cursorActivityHandlers || (cm.curOp.cursorActivityHandlers = []);\n for (var i = 0; i < arr.length; ++i) { if (indexOf(set, arr[i]) == -1)\n { set.push(arr[i]); } }\n }\n\n function hasHandler(emitter, type) {\n return getHandlers(emitter, type).length > 0\n }\n\n // Add on and off methods to a constructor's prototype, to make\n // registering events on such objects more convenient.\n function eventMixin(ctor) {\n ctor.prototype.on = function(type, f) {on(this, type, f);};\n ctor.prototype.off = function(type, f) {off(this, type, f);};\n }\n\n // Due to the fact that we still support jurassic IE versions, some\n // compatibility wrappers are needed.\n\n function e_preventDefault(e) {\n if (e.preventDefault) { e.preventDefault(); }\n else { e.returnValue = false; }\n }\n function e_stopPropagation(e) {\n if (e.stopPropagation) { e.stopPropagation(); }\n else { e.cancelBubble = true; }\n }\n function e_defaultPrevented(e) {\n return e.defaultPrevented != null ? e.defaultPrevented : e.returnValue == false\n }\n function e_stop(e) {e_preventDefault(e); e_stopPropagation(e);}\n\n function e_target(e) {return e.target || e.srcElement}\n function e_button(e) {\n var b = e.which;\n if (b == null) {\n if (e.button & 1) { b = 1; }\n else if (e.button & 2) { b = 3; }\n else if (e.button & 4) { b = 2; }\n }\n if (mac && e.ctrlKey && b == 1) { b = 3; }\n return b\n }\n\n // Detect drag-and-drop\n var dragAndDrop = function() {\n // There is *some* kind of drag-and-drop support in IE6-8, but I\n // couldn't get it to work yet.\n if (ie && ie_version < 9) { return false }\n var div = elt('div');\n return \"draggable\" in div || \"dragDrop\" in div\n }();\n\n var zwspSupported;\n function zeroWidthElement(measure) {\n if (zwspSupported == null) {\n var test = elt(\"span\", \"\\u200b\");\n removeChildrenAndAdd(measure, elt(\"span\", [test, document.createTextNode(\"x\")]));\n if (measure.firstChild.offsetHeight != 0)\n { zwspSupported = test.offsetWidth <= 1 && test.offsetHeight > 2 && !(ie && ie_version < 8); }\n }\n var node = zwspSupported ? elt(\"span\", \"\\u200b\") :\n elt(\"span\", \"\\u00a0\", null, \"display: inline-block; width: 1px; margin-right: -1px\");\n node.setAttribute(\"cm-text\", \"\");\n return node\n }\n\n // Feature-detect IE's crummy client rect reporting for bidi text\n var badBidiRects;\n function hasBadBidiRects(measure) {\n if (badBidiRects != null) { return badBidiRects }\n var txt = removeChildrenAndAdd(measure, document.createTextNode(\"A\\u062eA\"));\n var r0 = range(txt, 0, 1).getBoundingClientRect();\n var r1 = range(txt, 1, 2).getBoundingClientRect();\n removeChildren(measure);\n if (!r0 || r0.left == r0.right) { return false } // Safari returns null in some cases (#2780)\n return badBidiRects = (r1.right - r0.right < 3)\n }\n\n // See if \"\".split is the broken IE version, if so, provide an\n // alternative way to split lines.\n var splitLinesAuto = \"\\n\\nb\".split(/\\n/).length != 3 ? function (string) {\n var pos = 0, result = [], l = string.length;\n while (pos <= l) {\n var nl = string.indexOf(\"\\n\", pos);\n if (nl == -1) { nl = string.length; }\n var line = string.slice(pos, string.charAt(nl - 1) == \"\\r\" ? nl - 1 : nl);\n var rt = line.indexOf(\"\\r\");\n if (rt != -1) {\n result.push(line.slice(0, rt));\n pos += rt + 1;\n } else {\n result.push(line);\n pos = nl + 1;\n }\n }\n return result\n } : function (string) { return string.split(/\\r\\n?|\\n/); };\n\n var hasSelection = window.getSelection ? function (te) {\n try { return te.selectionStart != te.selectionEnd }\n catch(e) { return false }\n } : function (te) {\n var range;\n try {range = te.ownerDocument.selection.createRange();}\n catch(e) {}\n if (!range || range.parentElement() != te) { return false }\n return range.compareEndPoints(\"StartToEnd\", range) != 0\n };\n\n var hasCopyEvent = (function () {\n var e = elt(\"div\");\n if (\"oncopy\" in e) { return true }\n e.setAttribute(\"oncopy\", \"return;\");\n return typeof e.oncopy == \"function\"\n })();\n\n var badZoomedRects = null;\n function hasBadZoomedRects(measure) {\n if (badZoomedRects != null) { return badZoomedRects }\n var node = removeChildrenAndAdd(measure, elt(\"span\", \"x\"));\n var normal = node.getBoundingClientRect();\n var fromRange = range(node, 0, 1).getBoundingClientRect();\n return badZoomedRects = Math.abs(normal.left - fromRange.left) > 1\n }\n\n // Known modes, by name and by MIME\n var modes = {}, mimeModes = {};\n\n // Extra arguments are stored as the mode's dependencies, which is\n // used by (legacy) mechanisms like loadmode.js to automatically\n // load a mode. (Preferred mechanism is the require/define calls.)\n function defineMode(name, mode) {\n if (arguments.length > 2)\n { mode.dependencies = Array.prototype.slice.call(arguments, 2); }\n modes[name] = mode;\n }\n\n function defineMIME(mime, spec) {\n mimeModes[mime] = spec;\n }\n\n // Given a MIME type, a {name, ...options} config object, or a name\n // string, return a mode config object.\n function resolveMode(spec) {\n if (typeof spec == \"string\" && mimeModes.hasOwnProperty(spec)) {\n spec = mimeModes[spec];\n } else if (spec && typeof spec.name == \"string\" && mimeModes.hasOwnProperty(spec.name)) {\n var found = mimeModes[spec.name];\n if (typeof found == \"string\") { found = {name: found}; }\n spec = createObj(found, spec);\n spec.name = found.name;\n } else if (typeof spec == \"string\" && /^[\\w\\-]+\\/[\\w\\-]+\\+xml$/.test(spec)) {\n return resolveMode(\"application/xml\")\n } else if (typeof spec == \"string\" && /^[\\w\\-]+\\/[\\w\\-]+\\+json$/.test(spec)) {\n return resolveMode(\"application/json\")\n }\n if (typeof spec == \"string\") { return {name: spec} }\n else { return spec || {name: \"null\"} }\n }\n\n // Given a mode spec (anything that resolveMode accepts), find and\n // initialize an actual mode object.\n function getMode(options, spec) {\n spec = resolveMode(spec);\n var mfactory = modes[spec.name];\n if (!mfactory) { return getMode(options, \"text/plain\") }\n var modeObj = mfactory(options, spec);\n if (modeExtensions.hasOwnProperty(spec.name)) {\n var exts = modeExtensions[spec.name];\n for (var prop in exts) {\n if (!exts.hasOwnProperty(prop)) { continue }\n if (modeObj.hasOwnProperty(prop)) { modeObj[\"_\" + prop] = modeObj[prop]; }\n modeObj[prop] = exts[prop];\n }\n }\n modeObj.name = spec.name;\n if (spec.helperType) { modeObj.helperType = spec.helperType; }\n if (spec.modeProps) { for (var prop$1 in spec.modeProps)\n { modeObj[prop$1] = spec.modeProps[prop$1]; } }\n\n return modeObj\n }\n\n // This can be used to attach properties to mode objects from\n // outside the actual mode definition.\n var modeExtensions = {};\n function extendMode(mode, properties) {\n var exts = modeExtensions.hasOwnProperty(mode) ? modeExtensions[mode] : (modeExtensions[mode] = {});\n copyObj(properties, exts);\n }\n\n function copyState(mode, state) {\n if (state === true) { return state }\n if (mode.copyState) { return mode.copyState(state) }\n var nstate = {};\n for (var n in state) {\n var val = state[n];\n if (val instanceof Array) { val = val.concat([]); }\n nstate[n] = val;\n }\n return nstate\n }\n\n // Given a mode and a state (for that mode), find the inner mode and\n // state at the position that the state refers to.\n function innerMode(mode, state) {\n var info;\n while (mode.innerMode) {\n info = mode.innerMode(state);\n if (!info || info.mode == mode) { break }\n state = info.state;\n mode = info.mode;\n }\n return info || {mode: mode, state: state}\n }\n\n function startState(mode, a1, a2) {\n return mode.startState ? mode.startState(a1, a2) : true\n }\n\n // STRING STREAM\n\n // Fed to the mode parsers, provides helper functions to make\n // parsers more succinct.\n\n var StringStream = function(string, tabSize, lineOracle) {\n this.pos = this.start = 0;\n this.string = string;\n this.tabSize = tabSize || 8;\n this.lastColumnPos = this.lastColumnValue = 0;\n this.lineStart = 0;\n this.lineOracle = lineOracle;\n };\n\n StringStream.prototype.eol = function () {return this.pos >= this.string.length};\n StringStream.prototype.sol = function () {return this.pos == this.lineStart};\n StringStream.prototype.peek = function () {return this.string.charAt(this.pos) || undefined};\n StringStream.prototype.next = function () {\n if (this.pos < this.string.length)\n { return this.string.charAt(this.pos++) }\n };\n StringStream.prototype.eat = function (match) {\n var ch = this.string.charAt(this.pos);\n var ok;\n if (typeof match == \"string\") { ok = ch == match; }\n else { ok = ch && (match.test ? match.test(ch) : match(ch)); }\n if (ok) {++this.pos; return ch}\n };\n StringStream.prototype.eatWhile = function (match) {\n var start = this.pos;\n while (this.eat(match)){}\n return this.pos > start\n };\n StringStream.prototype.eatSpace = function () {\n var start = this.pos;\n while (/[\\s\\u00a0]/.test(this.string.charAt(this.pos))) { ++this.pos; }\n return this.pos > start\n };\n StringStream.prototype.skipToEnd = function () {this.pos = this.string.length;};\n StringStream.prototype.skipTo = function (ch) {\n var found = this.string.indexOf(ch, this.pos);\n if (found > -1) {this.pos = found; return true}\n };\n StringStream.prototype.backUp = function (n) {this.pos -= n;};\n StringStream.prototype.column = function () {\n if (this.lastColumnPos < this.start) {\n this.lastColumnValue = countColumn(this.string, this.start, this.tabSize, this.lastColumnPos, this.lastColumnValue);\n this.lastColumnPos = this.start;\n }\n return this.lastColumnValue - (this.lineStart ? countColumn(this.string, this.lineStart, this.tabSize) : 0)\n };\n StringStream.prototype.indentation = function () {\n return countColumn(this.string, null, this.tabSize) -\n (this.lineStart ? countColumn(this.string, this.lineStart, this.tabSize) : 0)\n };\n StringStream.prototype.match = function (pattern, consume, caseInsensitive) {\n if (typeof pattern == \"string\") {\n var cased = function (str) { return caseInsensitive ? str.toLowerCase() : str; };\n var substr = this.string.substr(this.pos, pattern.length);\n if (cased(substr) == cased(pattern)) {\n if (consume !== false) { this.pos += pattern.length; }\n return true\n }\n } else {\n var match = this.string.slice(this.pos).match(pattern);\n if (match && match.index > 0) { return null }\n if (match && consume !== false) { this.pos += match[0].length; }\n return match\n }\n };\n StringStream.prototype.current = function (){return this.string.slice(this.start, this.pos)};\n StringStream.prototype.hideFirstChars = function (n, inner) {\n this.lineStart += n;\n try { return inner() }\n finally { this.lineStart -= n; }\n };\n StringStream.prototype.lookAhead = function (n) {\n var oracle = this.lineOracle;\n return oracle && oracle.lookAhead(n)\n };\n StringStream.prototype.baseToken = function () {\n var oracle = this.lineOracle;\n return oracle && oracle.baseToken(this.pos)\n };\n\n // Find the line object corresponding to the given line number.\n function getLine(doc, n) {\n n -= doc.first;\n if (n < 0 || n >= doc.size) { throw new Error(\"There is no line \" + (n + doc.first) + \" in the document.\") }\n var chunk = doc;\n while (!chunk.lines) {\n for (var i = 0;; ++i) {\n var child = chunk.children[i], sz = child.chunkSize();\n if (n < sz) { chunk = child; break }\n n -= sz;\n }\n }\n return chunk.lines[n]\n }\n\n // Get the part of a document between two positions, as an array of\n // strings.\n function getBetween(doc, start, end) {\n var out = [], n = start.line;\n doc.iter(start.line, end.line + 1, function (line) {\n var text = line.text;\n if (n == end.line) { text = text.slice(0, end.ch); }\n if (n == start.line) { text = text.slice(start.ch); }\n out.push(text);\n ++n;\n });\n return out\n }\n // Get the lines between from and to, as array of strings.\n function getLines(doc, from, to) {\n var out = [];\n doc.iter(from, to, function (line) { out.push(line.text); }); // iter aborts when callback returns truthy value\n return out\n }\n\n // Update the height of a line, propagating the height change\n // upwards to parent nodes.\n function updateLineHeight(line, height) {\n var diff = height - line.height;\n if (diff) { for (var n = line; n; n = n.parent) { n.height += diff; } }\n }\n\n // Given a line object, find its line number by walking up through\n // its parent links.\n function lineNo(line) {\n if (line.parent == null) { return null }\n var cur = line.parent, no = indexOf(cur.lines, line);\n for (var chunk = cur.parent; chunk; cur = chunk, chunk = chunk.parent) {\n for (var i = 0;; ++i) {\n if (chunk.children[i] == cur) { break }\n no += chunk.children[i].chunkSize();\n }\n }\n return no + cur.first\n }\n\n // Find the line at the given vertical position, using the height\n // information in the document tree.\n function lineAtHeight(chunk, h) {\n var n = chunk.first;\n outer: do {\n for (var i$1 = 0; i$1 < chunk.children.length; ++i$1) {\n var child = chunk.children[i$1], ch = child.height;\n if (h < ch) { chunk = child; continue outer }\n h -= ch;\n n += child.chunkSize();\n }\n return n\n } while (!chunk.lines)\n var i = 0;\n for (; i < chunk.lines.length; ++i) {\n var line = chunk.lines[i], lh = line.height;\n if (h < lh) { break }\n h -= lh;\n }\n return n + i\n }\n\n function isLine(doc, l) {return l >= doc.first && l < doc.first + doc.size}\n\n function lineNumberFor(options, i) {\n return String(options.lineNumberFormatter(i + options.firstLineNumber))\n }\n\n // A Pos instance represents a position within the text.\n function Pos(line, ch, sticky) {\n if ( sticky === void 0 ) sticky = null;\n\n if (!(this instanceof Pos)) { return new Pos(line, ch, sticky) }\n this.line = line;\n this.ch = ch;\n this.sticky = sticky;\n }\n\n // Compare two positions, return 0 if they are the same, a negative\n // number when a is less, and a positive number otherwise.\n function cmp(a, b) { return a.line - b.line || a.ch - b.ch }\n\n function equalCursorPos(a, b) { return a.sticky == b.sticky && cmp(a, b) == 0 }\n\n function copyPos(x) {return Pos(x.line, x.ch)}\n function maxPos(a, b) { return cmp(a, b) < 0 ? b : a }\n function minPos(a, b) { return cmp(a, b) < 0 ? a : b }\n\n // Most of the external API clips given positions to make sure they\n // actually exist within the document.\n function clipLine(doc, n) {return Math.max(doc.first, Math.min(n, doc.first + doc.size - 1))}\n function clipPos(doc, pos) {\n if (pos.line < doc.first) { return Pos(doc.first, 0) }\n var last = doc.first + doc.size - 1;\n if (pos.line > last) { return Pos(last, getLine(doc, last).text.length) }\n return clipToLen(pos, getLine(doc, pos.line).text.length)\n }\n function clipToLen(pos, linelen) {\n var ch = pos.ch;\n if (ch == null || ch > linelen) { return Pos(pos.line, linelen) }\n else if (ch < 0) { return Pos(pos.line, 0) }\n else { return pos }\n }\n function clipPosArray(doc, array) {\n var out = [];\n for (var i = 0; i < array.length; i++) { out[i] = clipPos(doc, array[i]); }\n return out\n }\n\n var SavedContext = function(state, lookAhead) {\n this.state = state;\n this.lookAhead = lookAhead;\n };\n\n var Context = function(doc, state, line, lookAhead) {\n this.state = state;\n this.doc = doc;\n this.line = line;\n this.maxLookAhead = lookAhead || 0;\n this.baseTokens = null;\n this.baseTokenPos = 1;\n };\n\n Context.prototype.lookAhead = function (n) {\n var line = this.doc.getLine(this.line + n);\n if (line != null && n > this.maxLookAhead) { this.maxLookAhead = n; }\n return line\n };\n\n Context.prototype.baseToken = function (n) {\n if (!this.baseTokens) { return null }\n while (this.baseTokens[this.baseTokenPos] <= n)\n { this.baseTokenPos += 2; }\n var type = this.baseTokens[this.baseTokenPos + 1];\n return {type: type && type.replace(/( |^)overlay .*/, \"\"),\n size: this.baseTokens[this.baseTokenPos] - n}\n };\n\n Context.prototype.nextLine = function () {\n this.line++;\n if (this.maxLookAhead > 0) { this.maxLookAhead--; }\n };\n\n Context.fromSaved = function (doc, saved, line) {\n if (saved instanceof SavedContext)\n { return new Context(doc, copyState(doc.mode, saved.state), line, saved.lookAhead) }\n else\n { return new Context(doc, copyState(doc.mode, saved), line) }\n };\n\n Context.prototype.save = function (copy) {\n var state = copy !== false ? copyState(this.doc.mode, this.state) : this.state;\n return this.maxLookAhead > 0 ? new SavedContext(state, this.maxLookAhead) : state\n };\n\n\n // Compute a style array (an array starting with a mode generation\n // -- for invalidation -- followed by pairs of end positions and\n // style strings), which is used to highlight the tokens on the\n // line.\n function highlightLine(cm, line, context, forceToEnd) {\n // A styles array always starts with a number identifying the\n // mode/overlays that it is based on (for easy invalidation).\n var st = [cm.state.modeGen], lineClasses = {};\n // Compute the base array of styles\n runMode(cm, line.text, cm.doc.mode, context, function (end, style) { return st.push(end, style); },\n lineClasses, forceToEnd);\n var state = context.state;\n\n // Run overlays, adjust style array.\n var loop = function ( o ) {\n context.baseTokens = st;\n var overlay = cm.state.overlays[o], i = 1, at = 0;\n context.state = true;\n runMode(cm, line.text, overlay.mode, context, function (end, style) {\n var start = i;\n // Ensure there's a token end at the current position, and that i points at it\n while (at < end) {\n var i_end = st[i];\n if (i_end > end)\n { st.splice(i, 1, end, st[i+1], i_end); }\n i += 2;\n at = Math.min(end, i_end);\n }\n if (!style) { return }\n if (overlay.opaque) {\n st.splice(start, i - start, end, \"overlay \" + style);\n i = start + 2;\n } else {\n for (; start < i; start += 2) {\n var cur = st[start+1];\n st[start+1] = (cur ? cur + \" \" : \"\") + \"overlay \" + style;\n }\n }\n }, lineClasses);\n context.state = state;\n context.baseTokens = null;\n context.baseTokenPos = 1;\n };\n\n for (var o = 0; o < cm.state.overlays.length; ++o) loop( o );\n\n return {styles: st, classes: lineClasses.bgClass || lineClasses.textClass ? lineClasses : null}\n }\n\n function getLineStyles(cm, line, updateFrontier) {\n if (!line.styles || line.styles[0] != cm.state.modeGen) {\n var context = getContextBefore(cm, lineNo(line));\n var resetState = line.text.length > cm.options.maxHighlightLength && copyState(cm.doc.mode, context.state);\n var result = highlightLine(cm, line, context);\n if (resetState) { context.state = resetState; }\n line.stateAfter = context.save(!resetState);\n line.styles = result.styles;\n if (result.classes) { line.styleClasses = result.classes; }\n else if (line.styleClasses) { line.styleClasses = null; }\n if (updateFrontier === cm.doc.highlightFrontier)\n { cm.doc.modeFrontier = Math.max(cm.doc.modeFrontier, ++cm.doc.highlightFrontier); }\n }\n return line.styles\n }\n\n function getContextBefore(cm, n, precise) {\n var doc = cm.doc, display = cm.display;\n if (!doc.mode.startState) { return new Context(doc, true, n) }\n var start = findStartLine(cm, n, precise);\n var saved = start > doc.first && getLine(doc, start - 1).stateAfter;\n var context = saved ? Context.fromSaved(doc, saved, start) : new Context(doc, startState(doc.mode), start);\n\n doc.iter(start, n, function (line) {\n processLine(cm, line.text, context);\n var pos = context.line;\n line.stateAfter = pos == n - 1 || pos % 5 == 0 || pos >= display.viewFrom && pos < display.viewTo ? context.save() : null;\n context.nextLine();\n });\n if (precise) { doc.modeFrontier = context.line; }\n return context\n }\n\n // Lightweight form of highlight -- proceed over this line and\n // update state, but don't save a style array. Used for lines that\n // aren't currently visible.\n function processLine(cm, text, context, startAt) {\n var mode = cm.doc.mode;\n var stream = new StringStream(text, cm.options.tabSize, context);\n stream.start = stream.pos = startAt || 0;\n if (text == \"\") { callBlankLine(mode, context.state); }\n while (!stream.eol()) {\n readToken(mode, stream, context.state);\n stream.start = stream.pos;\n }\n }\n\n function callBlankLine(mode, state) {\n if (mode.blankLine) { return mode.blankLine(state) }\n if (!mode.innerMode) { return }\n var inner = innerMode(mode, state);\n if (inner.mode.blankLine) { return inner.mode.blankLine(inner.state) }\n }\n\n function readToken(mode, stream, state, inner) {\n for (var i = 0; i < 10; i++) {\n if (inner) { inner[0] = innerMode(mode, state).mode; }\n var style = mode.token(stream, state);\n if (stream.pos > stream.start) { return style }\n }\n throw new Error(\"Mode \" + mode.name + \" failed to advance stream.\")\n }\n\n var Token = function(stream, type, state) {\n this.start = stream.start; this.end = stream.pos;\n this.string = stream.current();\n this.type = type || null;\n this.state = state;\n };\n\n // Utility for getTokenAt and getLineTokens\n function takeToken(cm, pos, precise, asArray) {\n var doc = cm.doc, mode = doc.mode, style;\n pos = clipPos(doc, pos);\n var line = getLine(doc, pos.line), context = getContextBefore(cm, pos.line, precise);\n var stream = new StringStream(line.text, cm.options.tabSize, context), tokens;\n if (asArray) { tokens = []; }\n while ((asArray || stream.pos < pos.ch) && !stream.eol()) {\n stream.start = stream.pos;\n style = readToken(mode, stream, context.state);\n if (asArray) { tokens.push(new Token(stream, style, copyState(doc.mode, context.state))); }\n }\n return asArray ? tokens : new Token(stream, style, context.state)\n }\n\n function extractLineClasses(type, output) {\n if (type) { for (;;) {\n var lineClass = type.match(/(?:^|\\s+)line-(background-)?(\\S+)/);\n if (!lineClass) { break }\n type = type.slice(0, lineClass.index) + type.slice(lineClass.index + lineClass[0].length);\n var prop = lineClass[1] ? \"bgClass\" : \"textClass\";\n if (output[prop] == null)\n { output[prop] = lineClass[2]; }\n else if (!(new RegExp(\"(?:^|\\\\s)\" + lineClass[2] + \"(?:$|\\\\s)\")).test(output[prop]))\n { output[prop] += \" \" + lineClass[2]; }\n } }\n return type\n }\n\n // Run the given mode's parser over a line, calling f for each token.\n function runMode(cm, text, mode, context, f, lineClasses, forceToEnd) {\n var flattenSpans = mode.flattenSpans;\n if (flattenSpans == null) { flattenSpans = cm.options.flattenSpans; }\n var curStart = 0, curStyle = null;\n var stream = new StringStream(text, cm.options.tabSize, context), style;\n var inner = cm.options.addModeClass && [null];\n if (text == \"\") { extractLineClasses(callBlankLine(mode, context.state), lineClasses); }\n while (!stream.eol()) {\n if (stream.pos > cm.options.maxHighlightLength) {\n flattenSpans = false;\n if (forceToEnd) { processLine(cm, text, context, stream.pos); }\n stream.pos = text.length;\n style = null;\n } else {\n style = extractLineClasses(readToken(mode, stream, context.state, inner), lineClasses);\n }\n if (inner) {\n var mName = inner[0].name;\n if (mName) { style = \"m-\" + (style ? mName + \" \" + style : mName); }\n }\n if (!flattenSpans || curStyle != style) {\n while (curStart < stream.start) {\n curStart = Math.min(stream.start, curStart + 5000);\n f(curStart, curStyle);\n }\n curStyle = style;\n }\n stream.start = stream.pos;\n }\n while (curStart < stream.pos) {\n // Webkit seems to refuse to render text nodes longer than 57444\n // characters, and returns inaccurate measurements in nodes\n // starting around 5000 chars.\n var pos = Math.min(stream.pos, curStart + 5000);\n f(pos, curStyle);\n curStart = pos;\n }\n }\n\n // Finds the line to start with when starting a parse. Tries to\n // find a line with a stateAfter, so that it can start with a\n // valid state. If that fails, it returns the line with the\n // smallest indentation, which tends to need the least context to\n // parse correctly.\n function findStartLine(cm, n, precise) {\n var minindent, minline, doc = cm.doc;\n var lim = precise ? -1 : n - (cm.doc.mode.innerMode ? 1000 : 100);\n for (var search = n; search > lim; --search) {\n if (search <= doc.first) { return doc.first }\n var line = getLine(doc, search - 1), after = line.stateAfter;\n if (after && (!precise || search + (after instanceof SavedContext ? after.lookAhead : 0) <= doc.modeFrontier))\n { return search }\n var indented = countColumn(line.text, null, cm.options.tabSize);\n if (minline == null || minindent > indented) {\n minline = search - 1;\n minindent = indented;\n }\n }\n return minline\n }\n\n function retreatFrontier(doc, n) {\n doc.modeFrontier = Math.min(doc.modeFrontier, n);\n if (doc.highlightFrontier < n - 10) { return }\n var start = doc.first;\n for (var line = n - 1; line > start; line--) {\n var saved = getLine(doc, line).stateAfter;\n // change is on 3\n // state on line 1 looked ahead 2 -- so saw 3\n // test 1 + 2 < 3 should cover this\n if (saved && (!(saved instanceof SavedContext) || line + saved.lookAhead < n)) {\n start = line + 1;\n break\n }\n }\n doc.highlightFrontier = Math.min(doc.highlightFrontier, start);\n }\n\n // Optimize some code when these features are not used.\n var sawReadOnlySpans = false, sawCollapsedSpans = false;\n\n function seeReadOnlySpans() {\n sawReadOnlySpans = true;\n }\n\n function seeCollapsedSpans() {\n sawCollapsedSpans = true;\n }\n\n // TEXTMARKER SPANS\n\n function MarkedSpan(marker, from, to) {\n this.marker = marker;\n this.from = from; this.to = to;\n }\n\n // Search an array of spans for a span matching the given marker.\n function getMarkedSpanFor(spans, marker) {\n if (spans) { for (var i = 0; i < spans.length; ++i) {\n var span = spans[i];\n if (span.marker == marker) { return span }\n } }\n }\n\n // Remove a span from an array, returning undefined if no spans are\n // left (we don't store arrays for lines without spans).\n function removeMarkedSpan(spans, span) {\n var r;\n for (var i = 0; i < spans.length; ++i)\n { if (spans[i] != span) { (r || (r = [])).push(spans[i]); } }\n return r\n }\n\n // Add a span to a line.\n function addMarkedSpan(line, span, op) {\n var inThisOp = op && window.WeakSet && (op.markedSpans || (op.markedSpans = new WeakSet));\n if (inThisOp && line.markedSpans && inThisOp.has(line.markedSpans)) {\n line.markedSpans.push(span);\n } else {\n line.markedSpans = line.markedSpans ? line.markedSpans.concat([span]) : [span];\n if (inThisOp) { inThisOp.add(line.markedSpans); }\n }\n span.marker.attachLine(line);\n }\n\n // Used for the algorithm that adjusts markers for a change in the\n // document. These functions cut an array of spans at a given\n // character position, returning an array of remaining chunks (or\n // undefined if nothing remains).\n function markedSpansBefore(old, startCh, isInsert) {\n var nw;\n if (old) { for (var i = 0; i < old.length; ++i) {\n var span = old[i], marker = span.marker;\n var startsBefore = span.from == null || (marker.inclusiveLeft ? span.from <= startCh : span.from < startCh);\n if (startsBefore || span.from == startCh && marker.type == \"bookmark\" && (!isInsert || !span.marker.insertLeft)) {\n var endsAfter = span.to == null || (marker.inclusiveRight ? span.to >= startCh : span.to > startCh)\n ;(nw || (nw = [])).push(new MarkedSpan(marker, span.from, endsAfter ? null : span.to));\n }\n } }\n return nw\n }\n function markedSpansAfter(old, endCh, isInsert) {\n var nw;\n if (old) { for (var i = 0; i < old.length; ++i) {\n var span = old[i], marker = span.marker;\n var endsAfter = span.to == null || (marker.inclusiveRight ? span.to >= endCh : span.to > endCh);\n if (endsAfter || span.from == endCh && marker.type == \"bookmark\" && (!isInsert || span.marker.insertLeft)) {\n var startsBefore = span.from == null || (marker.inclusiveLeft ? span.from <= endCh : span.from < endCh)\n ;(nw || (nw = [])).push(new MarkedSpan(marker, startsBefore ? null : span.from - endCh,\n span.to == null ? null : span.to - endCh));\n }\n } }\n return nw\n }\n\n // Given a change object, compute the new set of marker spans that\n // cover the line in which the change took place. Removes spans\n // entirely within the change, reconnects spans belonging to the\n // same marker that appear on both sides of the change, and cuts off\n // spans partially within the change. Returns an array of span\n // arrays with one element for each line in (after) the change.\n function stretchSpansOverChange(doc, change) {\n if (change.full) { return null }\n var oldFirst = isLine(doc, change.from.line) && getLine(doc, change.from.line).markedSpans;\n var oldLast = isLine(doc, change.to.line) && getLine(doc, change.to.line).markedSpans;\n if (!oldFirst && !oldLast) { return null }\n\n var startCh = change.from.ch, endCh = change.to.ch, isInsert = cmp(change.from, change.to) == 0;\n // Get the spans that 'stick out' on both sides\n var first = markedSpansBefore(oldFirst, startCh, isInsert);\n var last = markedSpansAfter(oldLast, endCh, isInsert);\n\n // Next, merge those two ends\n var sameLine = change.text.length == 1, offset = lst(change.text).length + (sameLine ? startCh : 0);\n if (first) {\n // Fix up .to properties of first\n for (var i = 0; i < first.length; ++i) {\n var span = first[i];\n if (span.to == null) {\n var found = getMarkedSpanFor(last, span.marker);\n if (!found) { span.to = startCh; }\n else if (sameLine) { span.to = found.to == null ? null : found.to + offset; }\n }\n }\n }\n if (last) {\n // Fix up .from in last (or move them into first in case of sameLine)\n for (var i$1 = 0; i$1 < last.length; ++i$1) {\n var span$1 = last[i$1];\n if (span$1.to != null) { span$1.to += offset; }\n if (span$1.from == null) {\n var found$1 = getMarkedSpanFor(first, span$1.marker);\n if (!found$1) {\n span$1.from = offset;\n if (sameLine) { (first || (first = [])).push(span$1); }\n }\n } else {\n span$1.from += offset;\n if (sameLine) { (first || (first = [])).push(span$1); }\n }\n }\n }\n // Make sure we didn't create any zero-length spans\n if (first) { first = clearEmptySpans(first); }\n if (last && last != first) { last = clearEmptySpans(last); }\n\n var newMarkers = [first];\n if (!sameLine) {\n // Fill gap with whole-line-spans\n var gap = change.text.length - 2, gapMarkers;\n if (gap > 0 && first)\n { for (var i$2 = 0; i$2 < first.length; ++i$2)\n { if (first[i$2].to == null)\n { (gapMarkers || (gapMarkers = [])).push(new MarkedSpan(first[i$2].marker, null, null)); } } }\n for (var i$3 = 0; i$3 < gap; ++i$3)\n { newMarkers.push(gapMarkers); }\n newMarkers.push(last);\n }\n return newMarkers\n }\n\n // Remove spans that are empty and don't have a clearWhenEmpty\n // option of false.\n function clearEmptySpans(spans) {\n for (var i = 0; i < spans.length; ++i) {\n var span = spans[i];\n if (span.from != null && span.from == span.to && span.marker.clearWhenEmpty !== false)\n { spans.splice(i--, 1); }\n }\n if (!spans.length) { return null }\n return spans\n }\n\n // Used to 'clip' out readOnly ranges when making a change.\n function removeReadOnlyRanges(doc, from, to) {\n var markers = null;\n doc.iter(from.line, to.line + 1, function (line) {\n if (line.markedSpans) { for (var i = 0; i < line.markedSpans.length; ++i) {\n var mark = line.markedSpans[i].marker;\n if (mark.readOnly && (!markers || indexOf(markers, mark) == -1))\n { (markers || (markers = [])).push(mark); }\n } }\n });\n if (!markers) { return null }\n var parts = [{from: from, to: to}];\n for (var i = 0; i < markers.length; ++i) {\n var mk = markers[i], m = mk.find(0);\n for (var j = 0; j < parts.length; ++j) {\n var p = parts[j];\n if (cmp(p.to, m.from) < 0 || cmp(p.from, m.to) > 0) { continue }\n var newParts = [j, 1], dfrom = cmp(p.from, m.from), dto = cmp(p.to, m.to);\n if (dfrom < 0 || !mk.inclusiveLeft && !dfrom)\n { newParts.push({from: p.from, to: m.from}); }\n if (dto > 0 || !mk.inclusiveRight && !dto)\n { newParts.push({from: m.to, to: p.to}); }\n parts.splice.apply(parts, newParts);\n j += newParts.length - 3;\n }\n }\n return parts\n }\n\n // Connect or disconnect spans from a line.\n function detachMarkedSpans(line) {\n var spans = line.markedSpans;\n if (!spans) { return }\n for (var i = 0; i < spans.length; ++i)\n { spans[i].marker.detachLine(line); }\n line.markedSpans = null;\n }\n function attachMarkedSpans(line, spans) {\n if (!spans) { return }\n for (var i = 0; i < spans.length; ++i)\n { spans[i].marker.attachLine(line); }\n line.markedSpans = spans;\n }\n\n // Helpers used when computing which overlapping collapsed span\n // counts as the larger one.\n function extraLeft(marker) { return marker.inclusiveLeft ? -1 : 0 }\n function extraRight(marker) { return marker.inclusiveRight ? 1 : 0 }\n\n // Returns a number indicating which of two overlapping collapsed\n // spans is larger (and thus includes the other). Falls back to\n // comparing ids when the spans cover exactly the same range.\n function compareCollapsedMarkers(a, b) {\n var lenDiff = a.lines.length - b.lines.length;\n if (lenDiff != 0) { return lenDiff }\n var aPos = a.find(), bPos = b.find();\n var fromCmp = cmp(aPos.from, bPos.from) || extraLeft(a) - extraLeft(b);\n if (fromCmp) { return -fromCmp }\n var toCmp = cmp(aPos.to, bPos.to) || extraRight(a) - extraRight(b);\n if (toCmp) { return toCmp }\n return b.id - a.id\n }\n\n // Find out whether a line ends or starts in a collapsed span. If\n // so, return the marker for that span.\n function collapsedSpanAtSide(line, start) {\n var sps = sawCollapsedSpans && line.markedSpans, found;\n if (sps) { for (var sp = (void 0), i = 0; i < sps.length; ++i) {\n sp = sps[i];\n if (sp.marker.collapsed && (start ? sp.from : sp.to) == null &&\n (!found || compareCollapsedMarkers(found, sp.marker) < 0))\n { found = sp.marker; }\n } }\n return found\n }\n function collapsedSpanAtStart(line) { return collapsedSpanAtSide(line, true) }\n function collapsedSpanAtEnd(line) { return collapsedSpanAtSide(line, false) }\n\n function collapsedSpanAround(line, ch) {\n var sps = sawCollapsedSpans && line.markedSpans, found;\n if (sps) { for (var i = 0; i < sps.length; ++i) {\n var sp = sps[i];\n if (sp.marker.collapsed && (sp.from == null || sp.from < ch) && (sp.to == null || sp.to > ch) &&\n (!found || compareCollapsedMarkers(found, sp.marker) < 0)) { found = sp.marker; }\n } }\n return found\n }\n\n // Test whether there exists a collapsed span that partially\n // overlaps (covers the start or end, but not both) of a new span.\n // Such overlap is not allowed.\n function conflictingCollapsedRange(doc, lineNo, from, to, marker) {\n var line = getLine(doc, lineNo);\n var sps = sawCollapsedSpans && line.markedSpans;\n if (sps) { for (var i = 0; i < sps.length; ++i) {\n var sp = sps[i];\n if (!sp.marker.collapsed) { continue }\n var found = sp.marker.find(0);\n var fromCmp = cmp(found.from, from) || extraLeft(sp.marker) - extraLeft(marker);\n var toCmp = cmp(found.to, to) || extraRight(sp.marker) - extraRight(marker);\n if (fromCmp >= 0 && toCmp <= 0 || fromCmp <= 0 && toCmp >= 0) { continue }\n if (fromCmp <= 0 && (sp.marker.inclusiveRight && marker.inclusiveLeft ? cmp(found.to, from) >= 0 : cmp(found.to, from) > 0) ||\n fromCmp >= 0 && (sp.marker.inclusiveRight && marker.inclusiveLeft ? cmp(found.from, to) <= 0 : cmp(found.from, to) < 0))\n { return true }\n } }\n }\n\n // A visual line is a line as drawn on the screen. Folding, for\n // example, can cause multiple logical lines to appear on the same\n // visual line. This finds the start of the visual line that the\n // given line is part of (usually that is the line itself).\n function visualLine(line) {\n var merged;\n while (merged = collapsedSpanAtStart(line))\n { line = merged.find(-1, true).line; }\n return line\n }\n\n function visualLineEnd(line) {\n var merged;\n while (merged = collapsedSpanAtEnd(line))\n { line = merged.find(1, true).line; }\n return line\n }\n\n // Returns an array of logical lines that continue the visual line\n // started by the argument, or undefined if there are no such lines.\n function visualLineContinued(line) {\n var merged, lines;\n while (merged = collapsedSpanAtEnd(line)) {\n line = merged.find(1, true).line\n ;(lines || (lines = [])).push(line);\n }\n return lines\n }\n\n // Get the line number of the start of the visual line that the\n // given line number is part of.\n function visualLineNo(doc, lineN) {\n var line = getLine(doc, lineN), vis = visualLine(line);\n if (line == vis) { return lineN }\n return lineNo(vis)\n }\n\n // Get the line number of the start of the next visual line after\n // the given line.\n function visualLineEndNo(doc, lineN) {\n if (lineN > doc.lastLine()) { return lineN }\n var line = getLine(doc, lineN), merged;\n if (!lineIsHidden(doc, line)) { return lineN }\n while (merged = collapsedSpanAtEnd(line))\n { line = merged.find(1, true).line; }\n return lineNo(line) + 1\n }\n\n // Compute whether a line is hidden. Lines count as hidden when they\n // are part of a visual line that starts with another line, or when\n // they are entirely covered by collapsed, non-widget span.\n function lineIsHidden(doc, line) {\n var sps = sawCollapsedSpans && line.markedSpans;\n if (sps) { for (var sp = (void 0), i = 0; i < sps.length; ++i) {\n sp = sps[i];\n if (!sp.marker.collapsed) { continue }\n if (sp.from == null) { return true }\n if (sp.marker.widgetNode) { continue }\n if (sp.from == 0 && sp.marker.inclusiveLeft && lineIsHiddenInner(doc, line, sp))\n { return true }\n } }\n }\n function lineIsHiddenInner(doc, line, span) {\n if (span.to == null) {\n var end = span.marker.find(1, true);\n return lineIsHiddenInner(doc, end.line, getMarkedSpanFor(end.line.markedSpans, span.marker))\n }\n if (span.marker.inclusiveRight && span.to == line.text.length)\n { return true }\n for (var sp = (void 0), i = 0; i < line.markedSpans.length; ++i) {\n sp = line.markedSpans[i];\n if (sp.marker.collapsed && !sp.marker.widgetNode && sp.from == span.to &&\n (sp.to == null || sp.to != span.from) &&\n (sp.marker.inclusiveLeft || span.marker.inclusiveRight) &&\n lineIsHiddenInner(doc, line, sp)) { return true }\n }\n }\n\n // Find the height above the given line.\n function heightAtLine(lineObj) {\n lineObj = visualLine(lineObj);\n\n var h = 0, chunk = lineObj.parent;\n for (var i = 0; i < chunk.lines.length; ++i) {\n var line = chunk.lines[i];\n if (line == lineObj) { break }\n else { h += line.height; }\n }\n for (var p = chunk.parent; p; chunk = p, p = chunk.parent) {\n for (var i$1 = 0; i$1 < p.children.length; ++i$1) {\n var cur = p.children[i$1];\n if (cur == chunk) { break }\n else { h += cur.height; }\n }\n }\n return h\n }\n\n // Compute the character length of a line, taking into account\n // collapsed ranges (see markText) that might hide parts, and join\n // other lines onto it.\n function lineLength(line) {\n if (line.height == 0) { return 0 }\n var len = line.text.length, merged, cur = line;\n while (merged = collapsedSpanAtStart(cur)) {\n var found = merged.find(0, true);\n cur = found.from.line;\n len += found.from.ch - found.to.ch;\n }\n cur = line;\n while (merged = collapsedSpanAtEnd(cur)) {\n var found$1 = merged.find(0, true);\n len -= cur.text.length - found$1.from.ch;\n cur = found$1.to.line;\n len += cur.text.length - found$1.to.ch;\n }\n return len\n }\n\n // Find the longest line in the document.\n function findMaxLine(cm) {\n var d = cm.display, doc = cm.doc;\n d.maxLine = getLine(doc, doc.first);\n d.maxLineLength = lineLength(d.maxLine);\n d.maxLineChanged = true;\n doc.iter(function (line) {\n var len = lineLength(line);\n if (len > d.maxLineLength) {\n d.maxLineLength = len;\n d.maxLine = line;\n }\n });\n }\n\n // LINE DATA STRUCTURE\n\n // Line objects. These hold state related to a line, including\n // highlighting info (the styles array).\n var Line = function(text, markedSpans, estimateHeight) {\n this.text = text;\n attachMarkedSpans(this, markedSpans);\n this.height = estimateHeight ? estimateHeight(this) : 1;\n };\n\n Line.prototype.lineNo = function () { return lineNo(this) };\n eventMixin(Line);\n\n // Change the content (text, markers) of a line. Automatically\n // invalidates cached information and tries to re-estimate the\n // line's height.\n function updateLine(line, text, markedSpans, estimateHeight) {\n line.text = text;\n if (line.stateAfter) { line.stateAfter = null; }\n if (line.styles) { line.styles = null; }\n if (line.order != null) { line.order = null; }\n detachMarkedSpans(line);\n attachMarkedSpans(line, markedSpans);\n var estHeight = estimateHeight ? estimateHeight(line) : 1;\n if (estHeight != line.height) { updateLineHeight(line, estHeight); }\n }\n\n // Detach a line from the document tree and its markers.\n function cleanUpLine(line) {\n line.parent = null;\n detachMarkedSpans(line);\n }\n\n // Convert a style as returned by a mode (either null, or a string\n // containing one or more styles) to a CSS style. This is cached,\n // and also looks for line-wide styles.\n var styleToClassCache = {}, styleToClassCacheWithMode = {};\n function interpretTokenStyle(style, options) {\n if (!style || /^\\s*$/.test(style)) { return null }\n var cache = options.addModeClass ? styleToClassCacheWithMode : styleToClassCache;\n return cache[style] ||\n (cache[style] = style.replace(/\\S+/g, \"cm-$&\"))\n }\n\n // Render the DOM representation of the text of a line. Also builds\n // up a 'line map', which points at the DOM nodes that represent\n // specific stretches of text, and is used by the measuring code.\n // The returned object contains the DOM node, this map, and\n // information about line-wide styles that were set by the mode.\n function buildLineContent(cm, lineView) {\n // The padding-right forces the element to have a 'border', which\n // is needed on Webkit to be able to get line-level bounding\n // rectangles for it (in measureChar).\n var content = eltP(\"span\", null, null, webkit ? \"padding-right: .1px\" : null);\n var builder = {pre: eltP(\"pre\", [content], \"CodeMirror-line\"), content: content,\n col: 0, pos: 0, cm: cm,\n trailingSpace: false,\n splitSpaces: cm.getOption(\"lineWrapping\")};\n lineView.measure = {};\n\n // Iterate over the logical lines that make up this visual line.\n for (var i = 0; i <= (lineView.rest ? lineView.rest.length : 0); i++) {\n var line = i ? lineView.rest[i - 1] : lineView.line, order = (void 0);\n builder.pos = 0;\n builder.addToken = buildToken;\n // Optionally wire in some hacks into the token-rendering\n // algorithm, to deal with browser quirks.\n if (hasBadBidiRects(cm.display.measure) && (order = getOrder(line, cm.doc.direction)))\n { builder.addToken = buildTokenBadBidi(builder.addToken, order); }\n builder.map = [];\n var allowFrontierUpdate = lineView != cm.display.externalMeasured && lineNo(line);\n insertLineContent(line, builder, getLineStyles(cm, line, allowFrontierUpdate));\n if (line.styleClasses) {\n if (line.styleClasses.bgClass)\n { builder.bgClass = joinClasses(line.styleClasses.bgClass, builder.bgClass || \"\"); }\n if (line.styleClasses.textClass)\n { builder.textClass = joinClasses(line.styleClasses.textClass, builder.textClass || \"\"); }\n }\n\n // Ensure at least a single node is present, for measuring.\n if (builder.map.length == 0)\n { builder.map.push(0, 0, builder.content.appendChild(zeroWidthElement(cm.display.measure))); }\n\n // Store the map and a cache object for the current logical line\n if (i == 0) {\n lineView.measure.map = builder.map;\n lineView.measure.cache = {};\n } else {\n (lineView.measure.maps || (lineView.measure.maps = [])).push(builder.map)\n ;(lineView.measure.caches || (lineView.measure.caches = [])).push({});\n }\n }\n\n // See issue #2901\n if (webkit) {\n var last = builder.content.lastChild;\n if (/\\bcm-tab\\b/.test(last.className) || (last.querySelector && last.querySelector(\".cm-tab\")))\n { builder.content.className = \"cm-tab-wrap-hack\"; }\n }\n\n signal(cm, \"renderLine\", cm, lineView.line, builder.pre);\n if (builder.pre.className)\n { builder.textClass = joinClasses(builder.pre.className, builder.textClass || \"\"); }\n\n return builder\n }\n\n function defaultSpecialCharPlaceholder(ch) {\n var token = elt(\"span\", \"\\u2022\", \"cm-invalidchar\");\n token.title = \"\\\\u\" + ch.charCodeAt(0).toString(16);\n token.setAttribute(\"aria-label\", token.title);\n return token\n }\n\n // Build up the DOM representation for a single token, and add it to\n // the line map. Takes care to render special characters separately.\n function buildToken(builder, text, style, startStyle, endStyle, css, attributes) {\n if (!text) { return }\n var displayText = builder.splitSpaces ? splitSpaces(text, builder.trailingSpace) : text;\n var special = builder.cm.state.specialChars, mustWrap = false;\n var content;\n if (!special.test(text)) {\n builder.col += text.length;\n content = document.createTextNode(displayText);\n builder.map.push(builder.pos, builder.pos + text.length, content);\n if (ie && ie_version < 9) { mustWrap = true; }\n builder.pos += text.length;\n } else {\n content = document.createDocumentFragment();\n var pos = 0;\n while (true) {\n special.lastIndex = pos;\n var m = special.exec(text);\n var skipped = m ? m.index - pos : text.length - pos;\n if (skipped) {\n var txt = document.createTextNode(displayText.slice(pos, pos + skipped));\n if (ie && ie_version < 9) { content.appendChild(elt(\"span\", [txt])); }\n else { content.appendChild(txt); }\n builder.map.push(builder.pos, builder.pos + skipped, txt);\n builder.col += skipped;\n builder.pos += skipped;\n }\n if (!m) { break }\n pos += skipped + 1;\n var txt$1 = (void 0);\n if (m[0] == \"\\t\") {\n var tabSize = builder.cm.options.tabSize, tabWidth = tabSize - builder.col % tabSize;\n txt$1 = content.appendChild(elt(\"span\", spaceStr(tabWidth), \"cm-tab\"));\n txt$1.setAttribute(\"role\", \"presentation\");\n txt$1.setAttribute(\"cm-text\", \"\\t\");\n builder.col += tabWidth;\n } else if (m[0] == \"\\r\" || m[0] == \"\\n\") {\n txt$1 = content.appendChild(elt(\"span\", m[0] == \"\\r\" ? \"\\u240d\" : \"\\u2424\", \"cm-invalidchar\"));\n txt$1.setAttribute(\"cm-text\", m[0]);\n builder.col += 1;\n } else {\n txt$1 = builder.cm.options.specialCharPlaceholder(m[0]);\n txt$1.setAttribute(\"cm-text\", m[0]);\n if (ie && ie_version < 9) { content.appendChild(elt(\"span\", [txt$1])); }\n else { content.appendChild(txt$1); }\n builder.col += 1;\n }\n builder.map.push(builder.pos, builder.pos + 1, txt$1);\n builder.pos++;\n }\n }\n builder.trailingSpace = displayText.charCodeAt(text.length - 1) == 32;\n if (style || startStyle || endStyle || mustWrap || css || attributes) {\n var fullStyle = style || \"\";\n if (startStyle) { fullStyle += startStyle; }\n if (endStyle) { fullStyle += endStyle; }\n var token = elt(\"span\", [content], fullStyle, css);\n if (attributes) {\n for (var attr in attributes) { if (attributes.hasOwnProperty(attr) && attr != \"style\" && attr != \"class\")\n { token.setAttribute(attr, attributes[attr]); } }\n }\n return builder.content.appendChild(token)\n }\n builder.content.appendChild(content);\n }\n\n // Change some spaces to NBSP to prevent the browser from collapsing\n // trailing spaces at the end of a line when rendering text (issue #1362).\n function splitSpaces(text, trailingBefore) {\n if (text.length > 1 && !/ /.test(text)) { return text }\n var spaceBefore = trailingBefore, result = \"\";\n for (var i = 0; i < text.length; i++) {\n var ch = text.charAt(i);\n if (ch == \" \" && spaceBefore && (i == text.length - 1 || text.charCodeAt(i + 1) == 32))\n { ch = \"\\u00a0\"; }\n result += ch;\n spaceBefore = ch == \" \";\n }\n return result\n }\n\n // Work around nonsense dimensions being reported for stretches of\n // right-to-left text.\n function buildTokenBadBidi(inner, order) {\n return function (builder, text, style, startStyle, endStyle, css, attributes) {\n style = style ? style + \" cm-force-border\" : \"cm-force-border\";\n var start = builder.pos, end = start + text.length;\n for (;;) {\n // Find the part that overlaps with the start of this text\n var part = (void 0);\n for (var i = 0; i < order.length; i++) {\n part = order[i];\n if (part.to > start && part.from <= start) { break }\n }\n if (part.to >= end) { return inner(builder, text, style, startStyle, endStyle, css, attributes) }\n inner(builder, text.slice(0, part.to - start), style, startStyle, null, css, attributes);\n startStyle = null;\n text = text.slice(part.to - start);\n start = part.to;\n }\n }\n }\n\n function buildCollapsedSpan(builder, size, marker, ignoreWidget) {\n var widget = !ignoreWidget && marker.widgetNode;\n if (widget) { builder.map.push(builder.pos, builder.pos + size, widget); }\n if (!ignoreWidget && builder.cm.display.input.needsContentAttribute) {\n if (!widget)\n { widget = builder.content.appendChild(document.createElement(\"span\")); }\n widget.setAttribute(\"cm-marker\", marker.id);\n }\n if (widget) {\n builder.cm.display.input.setUneditable(widget);\n builder.content.appendChild(widget);\n }\n builder.pos += size;\n builder.trailingSpace = false;\n }\n\n // Outputs a number of spans to make up a line, taking highlighting\n // and marked text into account.\n function insertLineContent(line, builder, styles) {\n var spans = line.markedSpans, allText = line.text, at = 0;\n if (!spans) {\n for (var i$1 = 1; i$1 < styles.length; i$1+=2)\n { builder.addToken(builder, allText.slice(at, at = styles[i$1]), interpretTokenStyle(styles[i$1+1], builder.cm.options)); }\n return\n }\n\n var len = allText.length, pos = 0, i = 1, text = \"\", style, css;\n var nextChange = 0, spanStyle, spanEndStyle, spanStartStyle, collapsed, attributes;\n for (;;) {\n if (nextChange == pos) { // Update current marker set\n spanStyle = spanEndStyle = spanStartStyle = css = \"\";\n attributes = null;\n collapsed = null; nextChange = Infinity;\n var foundBookmarks = [], endStyles = (void 0);\n for (var j = 0; j < spans.length; ++j) {\n var sp = spans[j], m = sp.marker;\n if (m.type == \"bookmark\" && sp.from == pos && m.widgetNode) {\n foundBookmarks.push(m);\n } else if (sp.from <= pos && (sp.to == null || sp.to > pos || m.collapsed && sp.to == pos && sp.from == pos)) {\n if (sp.to != null && sp.to != pos && nextChange > sp.to) {\n nextChange = sp.to;\n spanEndStyle = \"\";\n }\n if (m.className) { spanStyle += \" \" + m.className; }\n if (m.css) { css = (css ? css + \";\" : \"\") + m.css; }\n if (m.startStyle && sp.from == pos) { spanStartStyle += \" \" + m.startStyle; }\n if (m.endStyle && sp.to == nextChange) { (endStyles || (endStyles = [])).push(m.endStyle, sp.to); }\n // support for the old title property\n // https://github.com/codemirror/CodeMirror/pull/5673\n if (m.title) { (attributes || (attributes = {})).title = m.title; }\n if (m.attributes) {\n for (var attr in m.attributes)\n { (attributes || (attributes = {}))[attr] = m.attributes[attr]; }\n }\n if (m.collapsed && (!collapsed || compareCollapsedMarkers(collapsed.marker, m) < 0))\n { collapsed = sp; }\n } else if (sp.from > pos && nextChange > sp.from) {\n nextChange = sp.from;\n }\n }\n if (endStyles) { for (var j$1 = 0; j$1 < endStyles.length; j$1 += 2)\n { if (endStyles[j$1 + 1] == nextChange) { spanEndStyle += \" \" + endStyles[j$1]; } } }\n\n if (!collapsed || collapsed.from == pos) { for (var j$2 = 0; j$2 < foundBookmarks.length; ++j$2)\n { buildCollapsedSpan(builder, 0, foundBookmarks[j$2]); } }\n if (collapsed && (collapsed.from || 0) == pos) {\n buildCollapsedSpan(builder, (collapsed.to == null ? len + 1 : collapsed.to) - pos,\n collapsed.marker, collapsed.from == null);\n if (collapsed.to == null) { return }\n if (collapsed.to == pos) { collapsed = false; }\n }\n }\n if (pos >= len) { break }\n\n var upto = Math.min(len, nextChange);\n while (true) {\n if (text) {\n var end = pos + text.length;\n if (!collapsed) {\n var tokenText = end > upto ? text.slice(0, upto - pos) : text;\n builder.addToken(builder, tokenText, style ? style + spanStyle : spanStyle,\n spanStartStyle, pos + tokenText.length == nextChange ? spanEndStyle : \"\", css, attributes);\n }\n if (end >= upto) {text = text.slice(upto - pos); pos = upto; break}\n pos = end;\n spanStartStyle = \"\";\n }\n text = allText.slice(at, at = styles[i++]);\n style = interpretTokenStyle(styles[i++], builder.cm.options);\n }\n }\n }\n\n\n // These objects are used to represent the visible (currently drawn)\n // part of the document. A LineView may correspond to multiple\n // logical lines, if those are connected by collapsed ranges.\n function LineView(doc, line, lineN) {\n // The starting line\n this.line = line;\n // Continuing lines, if any\n this.rest = visualLineContinued(line);\n // Number of logical lines in this visual line\n this.size = this.rest ? lineNo(lst(this.rest)) - lineN + 1 : 1;\n this.node = this.text = null;\n this.hidden = lineIsHidden(doc, line);\n }\n\n // Create a range of LineView objects for the given lines.\n function buildViewArray(cm, from, to) {\n var array = [], nextPos;\n for (var pos = from; pos < to; pos = nextPos) {\n var view = new LineView(cm.doc, getLine(cm.doc, pos), pos);\n nextPos = pos + view.size;\n array.push(view);\n }\n return array\n }\n\n var operationGroup = null;\n\n function pushOperation(op) {\n if (operationGroup) {\n operationGroup.ops.push(op);\n } else {\n op.ownsGroup = operationGroup = {\n ops: [op],\n delayedCallbacks: []\n };\n }\n }\n\n function fireCallbacksForOps(group) {\n // Calls delayed callbacks and cursorActivity handlers until no\n // new ones appear\n var callbacks = group.delayedCallbacks, i = 0;\n do {\n for (; i < callbacks.length; i++)\n { callbacks[i].call(null); }\n for (var j = 0; j < group.ops.length; j++) {\n var op = group.ops[j];\n if (op.cursorActivityHandlers)\n { while (op.cursorActivityCalled < op.cursorActivityHandlers.length)\n { op.cursorActivityHandlers[op.cursorActivityCalled++].call(null, op.cm); } }\n }\n } while (i < callbacks.length)\n }\n\n function finishOperation(op, endCb) {\n var group = op.ownsGroup;\n if (!group) { return }\n\n try { fireCallbacksForOps(group); }\n finally {\n operationGroup = null;\n endCb(group);\n }\n }\n\n var orphanDelayedCallbacks = null;\n\n // Often, we want to signal events at a point where we are in the\n // middle of some work, but don't want the handler to start calling\n // other methods on the editor, which might be in an inconsistent\n // state or simply not expect any other events to happen.\n // signalLater looks whether there are any handlers, and schedules\n // them to be executed when the last operation ends, or, if no\n // operation is active, when a timeout fires.\n function signalLater(emitter, type /*, values...*/) {\n var arr = getHandlers(emitter, type);\n if (!arr.length) { return }\n var args = Array.prototype.slice.call(arguments, 2), list;\n if (operationGroup) {\n list = operationGroup.delayedCallbacks;\n } else if (orphanDelayedCallbacks) {\n list = orphanDelayedCallbacks;\n } else {\n list = orphanDelayedCallbacks = [];\n setTimeout(fireOrphanDelayed, 0);\n }\n var loop = function ( i ) {\n list.push(function () { return arr[i].apply(null, args); });\n };\n\n for (var i = 0; i < arr.length; ++i)\n loop( i );\n }\n\n function fireOrphanDelayed() {\n var delayed = orphanDelayedCallbacks;\n orphanDelayedCallbacks = null;\n for (var i = 0; i < delayed.length; ++i) { delayed[i](); }\n }\n\n // When an aspect of a line changes, a string is added to\n // lineView.changes. This updates the relevant part of the line's\n // DOM structure.\n function updateLineForChanges(cm, lineView, lineN, dims) {\n for (var j = 0; j < lineView.changes.length; j++) {\n var type = lineView.changes[j];\n if (type == \"text\") { updateLineText(cm, lineView); }\n else if (type == \"gutter\") { updateLineGutter(cm, lineView, lineN, dims); }\n else if (type == \"class\") { updateLineClasses(cm, lineView); }\n else if (type == \"widget\") { updateLineWidgets(cm, lineView, dims); }\n }\n lineView.changes = null;\n }\n\n // Lines with gutter elements, widgets or a background class need to\n // be wrapped, and have the extra elements added to the wrapper div\n function ensureLineWrapped(lineView) {\n if (lineView.node == lineView.text) {\n lineView.node = elt(\"div\", null, null, \"position: relative\");\n if (lineView.text.parentNode)\n { lineView.text.parentNode.replaceChild(lineView.node, lineView.text); }\n lineView.node.appendChild(lineView.text);\n if (ie && ie_version < 8) { lineView.node.style.zIndex = 2; }\n }\n return lineView.node\n }\n\n function updateLineBackground(cm, lineView) {\n var cls = lineView.bgClass ? lineView.bgClass + \" \" + (lineView.line.bgClass || \"\") : lineView.line.bgClass;\n if (cls) { cls += \" CodeMirror-linebackground\"; }\n if (lineView.background) {\n if (cls) { lineView.background.className = cls; }\n else { lineView.background.parentNode.removeChild(lineView.background); lineView.background = null; }\n } else if (cls) {\n var wrap = ensureLineWrapped(lineView);\n lineView.background = wrap.insertBefore(elt(\"div\", null, cls), wrap.firstChild);\n cm.display.input.setUneditable(lineView.background);\n }\n }\n\n // Wrapper around buildLineContent which will reuse the structure\n // in display.externalMeasured when possible.\n function getLineContent(cm, lineView) {\n var ext = cm.display.externalMeasured;\n if (ext && ext.line == lineView.line) {\n cm.display.externalMeasured = null;\n lineView.measure = ext.measure;\n return ext.built\n }\n return buildLineContent(cm, lineView)\n }\n\n // Redraw the line's text. Interacts with the background and text\n // classes because the mode may output tokens that influence these\n // classes.\n function updateLineText(cm, lineView) {\n var cls = lineView.text.className;\n var built = getLineContent(cm, lineView);\n if (lineView.text == lineView.node) { lineView.node = built.pre; }\n lineView.text.parentNode.replaceChild(built.pre, lineView.text);\n lineView.text = built.pre;\n if (built.bgClass != lineView.bgClass || built.textClass != lineView.textClass) {\n lineView.bgClass = built.bgClass;\n lineView.textClass = built.textClass;\n updateLineClasses(cm, lineView);\n } else if (cls) {\n lineView.text.className = cls;\n }\n }\n\n function updateLineClasses(cm, lineView) {\n updateLineBackground(cm, lineView);\n if (lineView.line.wrapClass)\n { ensureLineWrapped(lineView).className = lineView.line.wrapClass; }\n else if (lineView.node != lineView.text)\n { lineView.node.className = \"\"; }\n var textClass = lineView.textClass ? lineView.textClass + \" \" + (lineView.line.textClass || \"\") : lineView.line.textClass;\n lineView.text.className = textClass || \"\";\n }\n\n function updateLineGutter(cm, lineView, lineN, dims) {\n if (lineView.gutter) {\n lineView.node.removeChild(lineView.gutter);\n lineView.gutter = null;\n }\n if (lineView.gutterBackground) {\n lineView.node.removeChild(lineView.gutterBackground);\n lineView.gutterBackground = null;\n }\n if (lineView.line.gutterClass) {\n var wrap = ensureLineWrapped(lineView);\n lineView.gutterBackground = elt(\"div\", null, \"CodeMirror-gutter-background \" + lineView.line.gutterClass,\n (\"left: \" + (cm.options.fixedGutter ? dims.fixedPos : -dims.gutterTotalWidth) + \"px; width: \" + (dims.gutterTotalWidth) + \"px\"));\n cm.display.input.setUneditable(lineView.gutterBackground);\n wrap.insertBefore(lineView.gutterBackground, lineView.text);\n }\n var markers = lineView.line.gutterMarkers;\n if (cm.options.lineNumbers || markers) {\n var wrap$1 = ensureLineWrapped(lineView);\n var gutterWrap = lineView.gutter = elt(\"div\", null, \"CodeMirror-gutter-wrapper\", (\"left: \" + (cm.options.fixedGutter ? dims.fixedPos : -dims.gutterTotalWidth) + \"px\"));\n gutterWrap.setAttribute(\"aria-hidden\", \"true\");\n cm.display.input.setUneditable(gutterWrap);\n wrap$1.insertBefore(gutterWrap, lineView.text);\n if (lineView.line.gutterClass)\n { gutterWrap.className += \" \" + lineView.line.gutterClass; }\n if (cm.options.lineNumbers && (!markers || !markers[\"CodeMirror-linenumbers\"]))\n { lineView.lineNumber = gutterWrap.appendChild(\n elt(\"div\", lineNumberFor(cm.options, lineN),\n \"CodeMirror-linenumber CodeMirror-gutter-elt\",\n (\"left: \" + (dims.gutterLeft[\"CodeMirror-linenumbers\"]) + \"px; width: \" + (cm.display.lineNumInnerWidth) + \"px\"))); }\n if (markers) { for (var k = 0; k < cm.display.gutterSpecs.length; ++k) {\n var id = cm.display.gutterSpecs[k].className, found = markers.hasOwnProperty(id) && markers[id];\n if (found)\n { gutterWrap.appendChild(elt(\"div\", [found], \"CodeMirror-gutter-elt\",\n (\"left: \" + (dims.gutterLeft[id]) + \"px; width: \" + (dims.gutterWidth[id]) + \"px\"))); }\n } }\n }\n }\n\n function updateLineWidgets(cm, lineView, dims) {\n if (lineView.alignable) { lineView.alignable = null; }\n var isWidget = classTest(\"CodeMirror-linewidget\");\n for (var node = lineView.node.firstChild, next = (void 0); node; node = next) {\n next = node.nextSibling;\n if (isWidget.test(node.className)) { lineView.node.removeChild(node); }\n }\n insertLineWidgets(cm, lineView, dims);\n }\n\n // Build a line's DOM representation from scratch\n function buildLineElement(cm, lineView, lineN, dims) {\n var built = getLineContent(cm, lineView);\n lineView.text = lineView.node = built.pre;\n if (built.bgClass) { lineView.bgClass = built.bgClass; }\n if (built.textClass) { lineView.textClass = built.textClass; }\n\n updateLineClasses(cm, lineView);\n updateLineGutter(cm, lineView, lineN, dims);\n insertLineWidgets(cm, lineView, dims);\n return lineView.node\n }\n\n // A lineView may contain multiple logical lines (when merged by\n // collapsed spans). The widgets for all of them need to be drawn.\n function insertLineWidgets(cm, lineView, dims) {\n insertLineWidgetsFor(cm, lineView.line, lineView, dims, true);\n if (lineView.rest) { for (var i = 0; i < lineView.rest.length; i++)\n { insertLineWidgetsFor(cm, lineView.rest[i], lineView, dims, false); } }\n }\n\n function insertLineWidgetsFor(cm, line, lineView, dims, allowAbove) {\n if (!line.widgets) { return }\n var wrap = ensureLineWrapped(lineView);\n for (var i = 0, ws = line.widgets; i < ws.length; ++i) {\n var widget = ws[i], node = elt(\"div\", [widget.node], \"CodeMirror-linewidget\" + (widget.className ? \" \" + widget.className : \"\"));\n if (!widget.handleMouseEvents) { node.setAttribute(\"cm-ignore-events\", \"true\"); }\n positionLineWidget(widget, node, lineView, dims);\n cm.display.input.setUneditable(node);\n if (allowAbove && widget.above)\n { wrap.insertBefore(node, lineView.gutter || lineView.text); }\n else\n { wrap.appendChild(node); }\n signalLater(widget, \"redraw\");\n }\n }\n\n function positionLineWidget(widget, node, lineView, dims) {\n if (widget.noHScroll) {\n (lineView.alignable || (lineView.alignable = [])).push(node);\n var width = dims.wrapperWidth;\n node.style.left = dims.fixedPos + \"px\";\n if (!widget.coverGutter) {\n width -= dims.gutterTotalWidth;\n node.style.paddingLeft = dims.gutterTotalWidth + \"px\";\n }\n node.style.width = width + \"px\";\n }\n if (widget.coverGutter) {\n node.style.zIndex = 5;\n node.style.position = \"relative\";\n if (!widget.noHScroll) { node.style.marginLeft = -dims.gutterTotalWidth + \"px\"; }\n }\n }\n\n function widgetHeight(widget) {\n if (widget.height != null) { return widget.height }\n var cm = widget.doc.cm;\n if (!cm) { return 0 }\n if (!contains(document.body, widget.node)) {\n var parentStyle = \"position: relative;\";\n if (widget.coverGutter)\n { parentStyle += \"margin-left: -\" + cm.display.gutters.offsetWidth + \"px;\"; }\n if (widget.noHScroll)\n { parentStyle += \"width: \" + cm.display.wrapper.clientWidth + \"px;\"; }\n removeChildrenAndAdd(cm.display.measure, elt(\"div\", [widget.node], null, parentStyle));\n }\n return widget.height = widget.node.parentNode.offsetHeight\n }\n\n // Return true when the given mouse event happened in a widget\n function eventInWidget(display, e) {\n for (var n = e_target(e); n != display.wrapper; n = n.parentNode) {\n if (!n || (n.nodeType == 1 && n.getAttribute(\"cm-ignore-events\") == \"true\") ||\n (n.parentNode == display.sizer && n != display.mover))\n { return true }\n }\n }\n\n // POSITION MEASUREMENT\n\n function paddingTop(display) {return display.lineSpace.offsetTop}\n function paddingVert(display) {return display.mover.offsetHeight - display.lineSpace.offsetHeight}\n function paddingH(display) {\n if (display.cachedPaddingH) { return display.cachedPaddingH }\n var e = removeChildrenAndAdd(display.measure, elt(\"pre\", \"x\", \"CodeMirror-line-like\"));\n var style = window.getComputedStyle ? window.getComputedStyle(e) : e.currentStyle;\n var data = {left: parseInt(style.paddingLeft), right: parseInt(style.paddingRight)};\n if (!isNaN(data.left) && !isNaN(data.right)) { display.cachedPaddingH = data; }\n return data\n }\n\n function scrollGap(cm) { return scrollerGap - cm.display.nativeBarWidth }\n function displayWidth(cm) {\n return cm.display.scroller.clientWidth - scrollGap(cm) - cm.display.barWidth\n }\n function displayHeight(cm) {\n return cm.display.scroller.clientHeight - scrollGap(cm) - cm.display.barHeight\n }\n\n // Ensure the lineView.wrapping.heights array is populated. This is\n // an array of bottom offsets for the lines that make up a drawn\n // line. When lineWrapping is on, there might be more than one\n // height.\n function ensureLineHeights(cm, lineView, rect) {\n var wrapping = cm.options.lineWrapping;\n var curWidth = wrapping && displayWidth(cm);\n if (!lineView.measure.heights || wrapping && lineView.measure.width != curWidth) {\n var heights = lineView.measure.heights = [];\n if (wrapping) {\n lineView.measure.width = curWidth;\n var rects = lineView.text.firstChild.getClientRects();\n for (var i = 0; i < rects.length - 1; i++) {\n var cur = rects[i], next = rects[i + 1];\n if (Math.abs(cur.bottom - next.bottom) > 2)\n { heights.push((cur.bottom + next.top) / 2 - rect.top); }\n }\n }\n heights.push(rect.bottom - rect.top);\n }\n }\n\n // Find a line map (mapping character offsets to text nodes) and a\n // measurement cache for the given line number. (A line view might\n // contain multiple lines when collapsed ranges are present.)\n function mapFromLineView(lineView, line, lineN) {\n if (lineView.line == line)\n { return {map: lineView.measure.map, cache: lineView.measure.cache} }\n if (lineView.rest) {\n for (var i = 0; i < lineView.rest.length; i++)\n { if (lineView.rest[i] == line)\n { return {map: lineView.measure.maps[i], cache: lineView.measure.caches[i]} } }\n for (var i$1 = 0; i$1 < lineView.rest.length; i$1++)\n { if (lineNo(lineView.rest[i$1]) > lineN)\n { return {map: lineView.measure.maps[i$1], cache: lineView.measure.caches[i$1], before: true} } }\n }\n }\n\n // Render a line into the hidden node display.externalMeasured. Used\n // when measurement is needed for a line that's not in the viewport.\n function updateExternalMeasurement(cm, line) {\n line = visualLine(line);\n var lineN = lineNo(line);\n var view = cm.display.externalMeasured = new LineView(cm.doc, line, lineN);\n view.lineN = lineN;\n var built = view.built = buildLineContent(cm, view);\n view.text = built.pre;\n removeChildrenAndAdd(cm.display.lineMeasure, built.pre);\n return view\n }\n\n // Get a {top, bottom, left, right} box (in line-local coordinates)\n // for a given character.\n function measureChar(cm, line, ch, bias) {\n return measureCharPrepared(cm, prepareMeasureForLine(cm, line), ch, bias)\n }\n\n // Find a line view that corresponds to the given line number.\n function findViewForLine(cm, lineN) {\n if (lineN >= cm.display.viewFrom && lineN < cm.display.viewTo)\n { return cm.display.view[findViewIndex(cm, lineN)] }\n var ext = cm.display.externalMeasured;\n if (ext && lineN >= ext.lineN && lineN < ext.lineN + ext.size)\n { return ext }\n }\n\n // Measurement can be split in two steps, the set-up work that\n // applies to the whole line, and the measurement of the actual\n // character. Functions like coordsChar, that need to do a lot of\n // measurements in a row, can thus ensure that the set-up work is\n // only done once.\n function prepareMeasureForLine(cm, line) {\n var lineN = lineNo(line);\n var view = findViewForLine(cm, lineN);\n if (view && !view.text) {\n view = null;\n } else if (view && view.changes) {\n updateLineForChanges(cm, view, lineN, getDimensions(cm));\n cm.curOp.forceUpdate = true;\n }\n if (!view)\n { view = updateExternalMeasurement(cm, line); }\n\n var info = mapFromLineView(view, line, lineN);\n return {\n line: line, view: view, rect: null,\n map: info.map, cache: info.cache, before: info.before,\n hasHeights: false\n }\n }\n\n // Given a prepared measurement object, measures the position of an\n // actual character (or fetches it from the cache).\n function measureCharPrepared(cm, prepared, ch, bias, varHeight) {\n if (prepared.before) { ch = -1; }\n var key = ch + (bias || \"\"), found;\n if (prepared.cache.hasOwnProperty(key)) {\n found = prepared.cache[key];\n } else {\n if (!prepared.rect)\n { prepared.rect = prepared.view.text.getBoundingClientRect(); }\n if (!prepared.hasHeights) {\n ensureLineHeights(cm, prepared.view, prepared.rect);\n prepared.hasHeights = true;\n }\n found = measureCharInner(cm, prepared, ch, bias);\n if (!found.bogus) { prepared.cache[key] = found; }\n }\n return {left: found.left, right: found.right,\n top: varHeight ? found.rtop : found.top,\n bottom: varHeight ? found.rbottom : found.bottom}\n }\n\n var nullRect = {left: 0, right: 0, top: 0, bottom: 0};\n\n function nodeAndOffsetInLineMap(map, ch, bias) {\n var node, start, end, collapse, mStart, mEnd;\n // First, search the line map for the text node corresponding to,\n // or closest to, the target character.\n for (var i = 0; i < map.length; i += 3) {\n mStart = map[i];\n mEnd = map[i + 1];\n if (ch < mStart) {\n start = 0; end = 1;\n collapse = \"left\";\n } else if (ch < mEnd) {\n start = ch - mStart;\n end = start + 1;\n } else if (i == map.length - 3 || ch == mEnd && map[i + 3] > ch) {\n end = mEnd - mStart;\n start = end - 1;\n if (ch >= mEnd) { collapse = \"right\"; }\n }\n if (start != null) {\n node = map[i + 2];\n if (mStart == mEnd && bias == (node.insertLeft ? \"left\" : \"right\"))\n { collapse = bias; }\n if (bias == \"left\" && start == 0)\n { while (i && map[i - 2] == map[i - 3] && map[i - 1].insertLeft) {\n node = map[(i -= 3) + 2];\n collapse = \"left\";\n } }\n if (bias == \"right\" && start == mEnd - mStart)\n { while (i < map.length - 3 && map[i + 3] == map[i + 4] && !map[i + 5].insertLeft) {\n node = map[(i += 3) + 2];\n collapse = \"right\";\n } }\n break\n }\n }\n return {node: node, start: start, end: end, collapse: collapse, coverStart: mStart, coverEnd: mEnd}\n }\n\n function getUsefulRect(rects, bias) {\n var rect = nullRect;\n if (bias == \"left\") { for (var i = 0; i < rects.length; i++) {\n if ((rect = rects[i]).left != rect.right) { break }\n } } else { for (var i$1 = rects.length - 1; i$1 >= 0; i$1--) {\n if ((rect = rects[i$1]).left != rect.right) { break }\n } }\n return rect\n }\n\n function measureCharInner(cm, prepared, ch, bias) {\n var place = nodeAndOffsetInLineMap(prepared.map, ch, bias);\n var node = place.node, start = place.start, end = place.end, collapse = place.collapse;\n\n var rect;\n if (node.nodeType == 3) { // If it is a text node, use a range to retrieve the coordinates.\n for (var i$1 = 0; i$1 < 4; i$1++) { // Retry a maximum of 4 times when nonsense rectangles are returned\n while (start && isExtendingChar(prepared.line.text.charAt(place.coverStart + start))) { --start; }\n while (place.coverStart + end < place.coverEnd && isExtendingChar(prepared.line.text.charAt(place.coverStart + end))) { ++end; }\n if (ie && ie_version < 9 && start == 0 && end == place.coverEnd - place.coverStart)\n { rect = node.parentNode.getBoundingClientRect(); }\n else\n { rect = getUsefulRect(range(node, start, end).getClientRects(), bias); }\n if (rect.left || rect.right || start == 0) { break }\n end = start;\n start = start - 1;\n collapse = \"right\";\n }\n if (ie && ie_version < 11) { rect = maybeUpdateRectForZooming(cm.display.measure, rect); }\n } else { // If it is a widget, simply get the box for the whole widget.\n if (start > 0) { collapse = bias = \"right\"; }\n var rects;\n if (cm.options.lineWrapping && (rects = node.getClientRects()).length > 1)\n { rect = rects[bias == \"right\" ? rects.length - 1 : 0]; }\n else\n { rect = node.getBoundingClientRect(); }\n }\n if (ie && ie_version < 9 && !start && (!rect || !rect.left && !rect.right)) {\n var rSpan = node.parentNode.getClientRects()[0];\n if (rSpan)\n { rect = {left: rSpan.left, right: rSpan.left + charWidth(cm.display), top: rSpan.top, bottom: rSpan.bottom}; }\n else\n { rect = nullRect; }\n }\n\n var rtop = rect.top - prepared.rect.top, rbot = rect.bottom - prepared.rect.top;\n var mid = (rtop + rbot) / 2;\n var heights = prepared.view.measure.heights;\n var i = 0;\n for (; i < heights.length - 1; i++)\n { if (mid < heights[i]) { break } }\n var top = i ? heights[i - 1] : 0, bot = heights[i];\n var result = {left: (collapse == \"right\" ? rect.right : rect.left) - prepared.rect.left,\n right: (collapse == \"left\" ? rect.left : rect.right) - prepared.rect.left,\n top: top, bottom: bot};\n if (!rect.left && !rect.right) { result.bogus = true; }\n if (!cm.options.singleCursorHeightPerLine) { result.rtop = rtop; result.rbottom = rbot; }\n\n return result\n }\n\n // Work around problem with bounding client rects on ranges being\n // returned incorrectly when zoomed on IE10 and below.\n function maybeUpdateRectForZooming(measure, rect) {\n if (!window.screen || screen.logicalXDPI == null ||\n screen.logicalXDPI == screen.deviceXDPI || !hasBadZoomedRects(measure))\n { return rect }\n var scaleX = screen.logicalXDPI / screen.deviceXDPI;\n var scaleY = screen.logicalYDPI / screen.deviceYDPI;\n return {left: rect.left * scaleX, right: rect.right * scaleX,\n top: rect.top * scaleY, bottom: rect.bottom * scaleY}\n }\n\n function clearLineMeasurementCacheFor(lineView) {\n if (lineView.measure) {\n lineView.measure.cache = {};\n lineView.measure.heights = null;\n if (lineView.rest) { for (var i = 0; i < lineView.rest.length; i++)\n { lineView.measure.caches[i] = {}; } }\n }\n }\n\n function clearLineMeasurementCache(cm) {\n cm.display.externalMeasure = null;\n removeChildren(cm.display.lineMeasure);\n for (var i = 0; i < cm.display.view.length; i++)\n { clearLineMeasurementCacheFor(cm.display.view[i]); }\n }\n\n function clearCaches(cm) {\n clearLineMeasurementCache(cm);\n cm.display.cachedCharWidth = cm.display.cachedTextHeight = cm.display.cachedPaddingH = null;\n if (!cm.options.lineWrapping) { cm.display.maxLineChanged = true; }\n cm.display.lineNumChars = null;\n }\n\n function pageScrollX() {\n // Work around https://bugs.chromium.org/p/chromium/issues/detail?id=489206\n // which causes page_Offset and bounding client rects to use\n // different reference viewports and invalidate our calculations.\n if (chrome && android) { return -(document.body.getBoundingClientRect().left - parseInt(getComputedStyle(document.body).marginLeft)) }\n return window.pageXOffset || (document.documentElement || document.body).scrollLeft\n }\n function pageScrollY() {\n if (chrome && android) { return -(document.body.getBoundingClientRect().top - parseInt(getComputedStyle(document.body).marginTop)) }\n return window.pageYOffset || (document.documentElement || document.body).scrollTop\n }\n\n function widgetTopHeight(lineObj) {\n var ref = visualLine(lineObj);\n var widgets = ref.widgets;\n var height = 0;\n if (widgets) { for (var i = 0; i < widgets.length; ++i) { if (widgets[i].above)\n { height += widgetHeight(widgets[i]); } } }\n return height\n }\n\n // Converts a {top, bottom, left, right} box from line-local\n // coordinates into another coordinate system. Context may be one of\n // \"line\", \"div\" (display.lineDiv), \"local\"./null (editor), \"window\",\n // or \"page\".\n function intoCoordSystem(cm, lineObj, rect, context, includeWidgets) {\n if (!includeWidgets) {\n var height = widgetTopHeight(lineObj);\n rect.top += height; rect.bottom += height;\n }\n if (context == \"line\") { return rect }\n if (!context) { context = \"local\"; }\n var yOff = heightAtLine(lineObj);\n if (context == \"local\") { yOff += paddingTop(cm.display); }\n else { yOff -= cm.display.viewOffset; }\n if (context == \"page\" || context == \"window\") {\n var lOff = cm.display.lineSpace.getBoundingClientRect();\n yOff += lOff.top + (context == \"window\" ? 0 : pageScrollY());\n var xOff = lOff.left + (context == \"window\" ? 0 : pageScrollX());\n rect.left += xOff; rect.right += xOff;\n }\n rect.top += yOff; rect.bottom += yOff;\n return rect\n }\n\n // Coverts a box from \"div\" coords to another coordinate system.\n // Context may be \"window\", \"page\", \"div\", or \"local\"./null.\n function fromCoordSystem(cm, coords, context) {\n if (context == \"div\") { return coords }\n var left = coords.left, top = coords.top;\n // First move into \"page\" coordinate system\n if (context == \"page\") {\n left -= pageScrollX();\n top -= pageScrollY();\n } else if (context == \"local\" || !context) {\n var localBox = cm.display.sizer.getBoundingClientRect();\n left += localBox.left;\n top += localBox.top;\n }\n\n var lineSpaceBox = cm.display.lineSpace.getBoundingClientRect();\n return {left: left - lineSpaceBox.left, top: top - lineSpaceBox.top}\n }\n\n function charCoords(cm, pos, context, lineObj, bias) {\n if (!lineObj) { lineObj = getLine(cm.doc, pos.line); }\n return intoCoordSystem(cm, lineObj, measureChar(cm, lineObj, pos.ch, bias), context)\n }\n\n // Returns a box for a given cursor position, which may have an\n // 'other' property containing the position of the secondary cursor\n // on a bidi boundary.\n // A cursor Pos(line, char, \"before\") is on the same visual line as `char - 1`\n // and after `char - 1` in writing order of `char - 1`\n // A cursor Pos(line, char, \"after\") is on the same visual line as `char`\n // and before `char` in writing order of `char`\n // Examples (upper-case letters are RTL, lower-case are LTR):\n // Pos(0, 1, ...)\n // before after\n // ab a|b a|b\n // aB a|B aB|\n // Ab |Ab A|b\n // AB B|A B|A\n // Every position after the last character on a line is considered to stick\n // to the last character on the line.\n function cursorCoords(cm, pos, context, lineObj, preparedMeasure, varHeight) {\n lineObj = lineObj || getLine(cm.doc, pos.line);\n if (!preparedMeasure) { preparedMeasure = prepareMeasureForLine(cm, lineObj); }\n function get(ch, right) {\n var m = measureCharPrepared(cm, preparedMeasure, ch, right ? \"right\" : \"left\", varHeight);\n if (right) { m.left = m.right; } else { m.right = m.left; }\n return intoCoordSystem(cm, lineObj, m, context)\n }\n var order = getOrder(lineObj, cm.doc.direction), ch = pos.ch, sticky = pos.sticky;\n if (ch >= lineObj.text.length) {\n ch = lineObj.text.length;\n sticky = \"before\";\n } else if (ch <= 0) {\n ch = 0;\n sticky = \"after\";\n }\n if (!order) { return get(sticky == \"before\" ? ch - 1 : ch, sticky == \"before\") }\n\n function getBidi(ch, partPos, invert) {\n var part = order[partPos], right = part.level == 1;\n return get(invert ? ch - 1 : ch, right != invert)\n }\n var partPos = getBidiPartAt(order, ch, sticky);\n var other = bidiOther;\n var val = getBidi(ch, partPos, sticky == \"before\");\n if (other != null) { val.other = getBidi(ch, other, sticky != \"before\"); }\n return val\n }\n\n // Used to cheaply estimate the coordinates for a position. Used for\n // intermediate scroll updates.\n function estimateCoords(cm, pos) {\n var left = 0;\n pos = clipPos(cm.doc, pos);\n if (!cm.options.lineWrapping) { left = charWidth(cm.display) * pos.ch; }\n var lineObj = getLine(cm.doc, pos.line);\n var top = heightAtLine(lineObj) + paddingTop(cm.display);\n return {left: left, right: left, top: top, bottom: top + lineObj.height}\n }\n\n // Positions returned by coordsChar contain some extra information.\n // xRel is the relative x position of the input coordinates compared\n // to the found position (so xRel > 0 means the coordinates are to\n // the right of the character position, for example). When outside\n // is true, that means the coordinates lie outside the line's\n // vertical range.\n function PosWithInfo(line, ch, sticky, outside, xRel) {\n var pos = Pos(line, ch, sticky);\n pos.xRel = xRel;\n if (outside) { pos.outside = outside; }\n return pos\n }\n\n // Compute the character position closest to the given coordinates.\n // Input must be lineSpace-local (\"div\" coordinate system).\n function coordsChar(cm, x, y) {\n var doc = cm.doc;\n y += cm.display.viewOffset;\n if (y < 0) { return PosWithInfo(doc.first, 0, null, -1, -1) }\n var lineN = lineAtHeight(doc, y), last = doc.first + doc.size - 1;\n if (lineN > last)\n { return PosWithInfo(doc.first + doc.size - 1, getLine(doc, last).text.length, null, 1, 1) }\n if (x < 0) { x = 0; }\n\n var lineObj = getLine(doc, lineN);\n for (;;) {\n var found = coordsCharInner(cm, lineObj, lineN, x, y);\n var collapsed = collapsedSpanAround(lineObj, found.ch + (found.xRel > 0 || found.outside > 0 ? 1 : 0));\n if (!collapsed) { return found }\n var rangeEnd = collapsed.find(1);\n if (rangeEnd.line == lineN) { return rangeEnd }\n lineObj = getLine(doc, lineN = rangeEnd.line);\n }\n }\n\n function wrappedLineExtent(cm, lineObj, preparedMeasure, y) {\n y -= widgetTopHeight(lineObj);\n var end = lineObj.text.length;\n var begin = findFirst(function (ch) { return measureCharPrepared(cm, preparedMeasure, ch - 1).bottom <= y; }, end, 0);\n end = findFirst(function (ch) { return measureCharPrepared(cm, preparedMeasure, ch).top > y; }, begin, end);\n return {begin: begin, end: end}\n }\n\n function wrappedLineExtentChar(cm, lineObj, preparedMeasure, target) {\n if (!preparedMeasure) { preparedMeasure = prepareMeasureForLine(cm, lineObj); }\n var targetTop = intoCoordSystem(cm, lineObj, measureCharPrepared(cm, preparedMeasure, target), \"line\").top;\n return wrappedLineExtent(cm, lineObj, preparedMeasure, targetTop)\n }\n\n // Returns true if the given side of a box is after the given\n // coordinates, in top-to-bottom, left-to-right order.\n function boxIsAfter(box, x, y, left) {\n return box.bottom <= y ? false : box.top > y ? true : (left ? box.left : box.right) > x\n }\n\n function coordsCharInner(cm, lineObj, lineNo, x, y) {\n // Move y into line-local coordinate space\n y -= heightAtLine(lineObj);\n var preparedMeasure = prepareMeasureForLine(cm, lineObj);\n // When directly calling `measureCharPrepared`, we have to adjust\n // for the widgets at this line.\n var widgetHeight = widgetTopHeight(lineObj);\n var begin = 0, end = lineObj.text.length, ltr = true;\n\n var order = getOrder(lineObj, cm.doc.direction);\n // If the line isn't plain left-to-right text, first figure out\n // which bidi section the coordinates fall into.\n if (order) {\n var part = (cm.options.lineWrapping ? coordsBidiPartWrapped : coordsBidiPart)\n (cm, lineObj, lineNo, preparedMeasure, order, x, y);\n ltr = part.level != 1;\n // The awkward -1 offsets are needed because findFirst (called\n // on these below) will treat its first bound as inclusive,\n // second as exclusive, but we want to actually address the\n // characters in the part's range\n begin = ltr ? part.from : part.to - 1;\n end = ltr ? part.to : part.from - 1;\n }\n\n // A binary search to find the first character whose bounding box\n // starts after the coordinates. If we run across any whose box wrap\n // the coordinates, store that.\n var chAround = null, boxAround = null;\n var ch = findFirst(function (ch) {\n var box = measureCharPrepared(cm, preparedMeasure, ch);\n box.top += widgetHeight; box.bottom += widgetHeight;\n if (!boxIsAfter(box, x, y, false)) { return false }\n if (box.top <= y && box.left <= x) {\n chAround = ch;\n boxAround = box;\n }\n return true\n }, begin, end);\n\n var baseX, sticky, outside = false;\n // If a box around the coordinates was found, use that\n if (boxAround) {\n // Distinguish coordinates nearer to the left or right side of the box\n var atLeft = x - boxAround.left < boxAround.right - x, atStart = atLeft == ltr;\n ch = chAround + (atStart ? 0 : 1);\n sticky = atStart ? \"after\" : \"before\";\n baseX = atLeft ? boxAround.left : boxAround.right;\n } else {\n // (Adjust for extended bound, if necessary.)\n if (!ltr && (ch == end || ch == begin)) { ch++; }\n // To determine which side to associate with, get the box to the\n // left of the character and compare it's vertical position to the\n // coordinates\n sticky = ch == 0 ? \"after\" : ch == lineObj.text.length ? \"before\" :\n (measureCharPrepared(cm, preparedMeasure, ch - (ltr ? 1 : 0)).bottom + widgetHeight <= y) == ltr ?\n \"after\" : \"before\";\n // Now get accurate coordinates for this place, in order to get a\n // base X position\n var coords = cursorCoords(cm, Pos(lineNo, ch, sticky), \"line\", lineObj, preparedMeasure);\n baseX = coords.left;\n outside = y < coords.top ? -1 : y >= coords.bottom ? 1 : 0;\n }\n\n ch = skipExtendingChars(lineObj.text, ch, 1);\n return PosWithInfo(lineNo, ch, sticky, outside, x - baseX)\n }\n\n function coordsBidiPart(cm, lineObj, lineNo, preparedMeasure, order, x, y) {\n // Bidi parts are sorted left-to-right, and in a non-line-wrapping\n // situation, we can take this ordering to correspond to the visual\n // ordering. This finds the first part whose end is after the given\n // coordinates.\n var index = findFirst(function (i) {\n var part = order[i], ltr = part.level != 1;\n return boxIsAfter(cursorCoords(cm, Pos(lineNo, ltr ? part.to : part.from, ltr ? \"before\" : \"after\"),\n \"line\", lineObj, preparedMeasure), x, y, true)\n }, 0, order.length - 1);\n var part = order[index];\n // If this isn't the first part, the part's start is also after\n // the coordinates, and the coordinates aren't on the same line as\n // that start, move one part back.\n if (index > 0) {\n var ltr = part.level != 1;\n var start = cursorCoords(cm, Pos(lineNo, ltr ? part.from : part.to, ltr ? \"after\" : \"before\"),\n \"line\", lineObj, preparedMeasure);\n if (boxIsAfter(start, x, y, true) && start.top > y)\n { part = order[index - 1]; }\n }\n return part\n }\n\n function coordsBidiPartWrapped(cm, lineObj, _lineNo, preparedMeasure, order, x, y) {\n // In a wrapped line, rtl text on wrapping boundaries can do things\n // that don't correspond to the ordering in our `order` array at\n // all, so a binary search doesn't work, and we want to return a\n // part that only spans one line so that the binary search in\n // coordsCharInner is safe. As such, we first find the extent of the\n // wrapped line, and then do a flat search in which we discard any\n // spans that aren't on the line.\n var ref = wrappedLineExtent(cm, lineObj, preparedMeasure, y);\n var begin = ref.begin;\n var end = ref.end;\n if (/\\s/.test(lineObj.text.charAt(end - 1))) { end--; }\n var part = null, closestDist = null;\n for (var i = 0; i < order.length; i++) {\n var p = order[i];\n if (p.from >= end || p.to <= begin) { continue }\n var ltr = p.level != 1;\n var endX = measureCharPrepared(cm, preparedMeasure, ltr ? Math.min(end, p.to) - 1 : Math.max(begin, p.from)).right;\n // Weigh against spans ending before this, so that they are only\n // picked if nothing ends after\n var dist = endX < x ? x - endX + 1e9 : endX - x;\n if (!part || closestDist > dist) {\n part = p;\n closestDist = dist;\n }\n }\n if (!part) { part = order[order.length - 1]; }\n // Clip the part to the wrapped line.\n if (part.from < begin) { part = {from: begin, to: part.to, level: part.level}; }\n if (part.to > end) { part = {from: part.from, to: end, level: part.level}; }\n return part\n }\n\n var measureText;\n // Compute the default text height.\n function textHeight(display) {\n if (display.cachedTextHeight != null) { return display.cachedTextHeight }\n if (measureText == null) {\n measureText = elt(\"pre\", null, \"CodeMirror-line-like\");\n // Measure a bunch of lines, for browsers that compute\n // fractional heights.\n for (var i = 0; i < 49; ++i) {\n measureText.appendChild(document.createTextNode(\"x\"));\n measureText.appendChild(elt(\"br\"));\n }\n measureText.appendChild(document.createTextNode(\"x\"));\n }\n removeChildrenAndAdd(display.measure, measureText);\n var height = measureText.offsetHeight / 50;\n if (height > 3) { display.cachedTextHeight = height; }\n removeChildren(display.measure);\n return height || 1\n }\n\n // Compute the default character width.\n function charWidth(display) {\n if (display.cachedCharWidth != null) { return display.cachedCharWidth }\n var anchor = elt(\"span\", \"xxxxxxxxxx\");\n var pre = elt(\"pre\", [anchor], \"CodeMirror-line-like\");\n removeChildrenAndAdd(display.measure, pre);\n var rect = anchor.getBoundingClientRect(), width = (rect.right - rect.left) / 10;\n if (width > 2) { display.cachedCharWidth = width; }\n return width || 10\n }\n\n // Do a bulk-read of the DOM positions and sizes needed to draw the\n // view, so that we don't interleave reading and writing to the DOM.\n function getDimensions(cm) {\n var d = cm.display, left = {}, width = {};\n var gutterLeft = d.gutters.clientLeft;\n for (var n = d.gutters.firstChild, i = 0; n; n = n.nextSibling, ++i) {\n var id = cm.display.gutterSpecs[i].className;\n left[id] = n.offsetLeft + n.clientLeft + gutterLeft;\n width[id] = n.clientWidth;\n }\n return {fixedPos: compensateForHScroll(d),\n gutterTotalWidth: d.gutters.offsetWidth,\n gutterLeft: left,\n gutterWidth: width,\n wrapperWidth: d.wrapper.clientWidth}\n }\n\n // Computes display.scroller.scrollLeft + display.gutters.offsetWidth,\n // but using getBoundingClientRect to get a sub-pixel-accurate\n // result.\n function compensateForHScroll(display) {\n return display.scroller.getBoundingClientRect().left - display.sizer.getBoundingClientRect().left\n }\n\n // Returns a function that estimates the height of a line, to use as\n // first approximation until the line becomes visible (and is thus\n // properly measurable).\n function estimateHeight(cm) {\n var th = textHeight(cm.display), wrapping = cm.options.lineWrapping;\n var perLine = wrapping && Math.max(5, cm.display.scroller.clientWidth / charWidth(cm.display) - 3);\n return function (line) {\n if (lineIsHidden(cm.doc, line)) { return 0 }\n\n var widgetsHeight = 0;\n if (line.widgets) { for (var i = 0; i < line.widgets.length; i++) {\n if (line.widgets[i].height) { widgetsHeight += line.widgets[i].height; }\n } }\n\n if (wrapping)\n { return widgetsHeight + (Math.ceil(line.text.length / perLine) || 1) * th }\n else\n { return widgetsHeight + th }\n }\n }\n\n function estimateLineHeights(cm) {\n var doc = cm.doc, est = estimateHeight(cm);\n doc.iter(function (line) {\n var estHeight = est(line);\n if (estHeight != line.height) { updateLineHeight(line, estHeight); }\n });\n }\n\n // Given a mouse event, find the corresponding position. If liberal\n // is false, it checks whether a gutter or scrollbar was clicked,\n // and returns null if it was. forRect is used by rectangular\n // selections, and tries to estimate a character position even for\n // coordinates beyond the right of the text.\n function posFromMouse(cm, e, liberal, forRect) {\n var display = cm.display;\n if (!liberal && e_target(e).getAttribute(\"cm-not-content\") == \"true\") { return null }\n\n var x, y, space = display.lineSpace.getBoundingClientRect();\n // Fails unpredictably on IE[67] when mouse is dragged around quickly.\n try { x = e.clientX - space.left; y = e.clientY - space.top; }\n catch (e$1) { return null }\n var coords = coordsChar(cm, x, y), line;\n if (forRect && coords.xRel > 0 && (line = getLine(cm.doc, coords.line).text).length == coords.ch) {\n var colDiff = countColumn(line, line.length, cm.options.tabSize) - line.length;\n coords = Pos(coords.line, Math.max(0, Math.round((x - paddingH(cm.display).left) / charWidth(cm.display)) - colDiff));\n }\n return coords\n }\n\n // Find the view element corresponding to a given line. Return null\n // when the line isn't visible.\n function findViewIndex(cm, n) {\n if (n >= cm.display.viewTo) { return null }\n n -= cm.display.viewFrom;\n if (n < 0) { return null }\n var view = cm.display.view;\n for (var i = 0; i < view.length; i++) {\n n -= view[i].size;\n if (n < 0) { return i }\n }\n }\n\n // Updates the display.view data structure for a given change to the\n // document. From and to are in pre-change coordinates. Lendiff is\n // the amount of lines added or subtracted by the change. This is\n // used for changes that span multiple lines, or change the way\n // lines are divided into visual lines. regLineChange (below)\n // registers single-line changes.\n function regChange(cm, from, to, lendiff) {\n if (from == null) { from = cm.doc.first; }\n if (to == null) { to = cm.doc.first + cm.doc.size; }\n if (!lendiff) { lendiff = 0; }\n\n var display = cm.display;\n if (lendiff && to < display.viewTo &&\n (display.updateLineNumbers == null || display.updateLineNumbers > from))\n { display.updateLineNumbers = from; }\n\n cm.curOp.viewChanged = true;\n\n if (from >= display.viewTo) { // Change after\n if (sawCollapsedSpans && visualLineNo(cm.doc, from) < display.viewTo)\n { resetView(cm); }\n } else if (to <= display.viewFrom) { // Change before\n if (sawCollapsedSpans && visualLineEndNo(cm.doc, to + lendiff) > display.viewFrom) {\n resetView(cm);\n } else {\n display.viewFrom += lendiff;\n display.viewTo += lendiff;\n }\n } else if (from <= display.viewFrom && to >= display.viewTo) { // Full overlap\n resetView(cm);\n } else if (from <= display.viewFrom) { // Top overlap\n var cut = viewCuttingPoint(cm, to, to + lendiff, 1);\n if (cut) {\n display.view = display.view.slice(cut.index);\n display.viewFrom = cut.lineN;\n display.viewTo += lendiff;\n } else {\n resetView(cm);\n }\n } else if (to >= display.viewTo) { // Bottom overlap\n var cut$1 = viewCuttingPoint(cm, from, from, -1);\n if (cut$1) {\n display.view = display.view.slice(0, cut$1.index);\n display.viewTo = cut$1.lineN;\n } else {\n resetView(cm);\n }\n } else { // Gap in the middle\n var cutTop = viewCuttingPoint(cm, from, from, -1);\n var cutBot = viewCuttingPoint(cm, to, to + lendiff, 1);\n if (cutTop && cutBot) {\n display.view = display.view.slice(0, cutTop.index)\n .concat(buildViewArray(cm, cutTop.lineN, cutBot.lineN))\n .concat(display.view.slice(cutBot.index));\n display.viewTo += lendiff;\n } else {\n resetView(cm);\n }\n }\n\n var ext = display.externalMeasured;\n if (ext) {\n if (to < ext.lineN)\n { ext.lineN += lendiff; }\n else if (from < ext.lineN + ext.size)\n { display.externalMeasured = null; }\n }\n }\n\n // Register a change to a single line. Type must be one of \"text\",\n // \"gutter\", \"class\", \"widget\"\n function regLineChange(cm, line, type) {\n cm.curOp.viewChanged = true;\n var display = cm.display, ext = cm.display.externalMeasured;\n if (ext && line >= ext.lineN && line < ext.lineN + ext.size)\n { display.externalMeasured = null; }\n\n if (line < display.viewFrom || line >= display.viewTo) { return }\n var lineView = display.view[findViewIndex(cm, line)];\n if (lineView.node == null) { return }\n var arr = lineView.changes || (lineView.changes = []);\n if (indexOf(arr, type) == -1) { arr.push(type); }\n }\n\n // Clear the view.\n function resetView(cm) {\n cm.display.viewFrom = cm.display.viewTo = cm.doc.first;\n cm.display.view = [];\n cm.display.viewOffset = 0;\n }\n\n function viewCuttingPoint(cm, oldN, newN, dir) {\n var index = findViewIndex(cm, oldN), diff, view = cm.display.view;\n if (!sawCollapsedSpans || newN == cm.doc.first + cm.doc.size)\n { return {index: index, lineN: newN} }\n var n = cm.display.viewFrom;\n for (var i = 0; i < index; i++)\n { n += view[i].size; }\n if (n != oldN) {\n if (dir > 0) {\n if (index == view.length - 1) { return null }\n diff = (n + view[index].size) - oldN;\n index++;\n } else {\n diff = n - oldN;\n }\n oldN += diff; newN += diff;\n }\n while (visualLineNo(cm.doc, newN) != newN) {\n if (index == (dir < 0 ? 0 : view.length - 1)) { return null }\n newN += dir * view[index - (dir < 0 ? 1 : 0)].size;\n index += dir;\n }\n return {index: index, lineN: newN}\n }\n\n // Force the view to cover a given range, adding empty view element\n // or clipping off existing ones as needed.\n function adjustView(cm, from, to) {\n var display = cm.display, view = display.view;\n if (view.length == 0 || from >= display.viewTo || to <= display.viewFrom) {\n display.view = buildViewArray(cm, from, to);\n display.viewFrom = from;\n } else {\n if (display.viewFrom > from)\n { display.view = buildViewArray(cm, from, display.viewFrom).concat(display.view); }\n else if (display.viewFrom < from)\n { display.view = display.view.slice(findViewIndex(cm, from)); }\n display.viewFrom = from;\n if (display.viewTo < to)\n { display.view = display.view.concat(buildViewArray(cm, display.viewTo, to)); }\n else if (display.viewTo > to)\n { display.view = display.view.slice(0, findViewIndex(cm, to)); }\n }\n display.viewTo = to;\n }\n\n // Count the number of lines in the view whose DOM representation is\n // out of date (or nonexistent).\n function countDirtyView(cm) {\n var view = cm.display.view, dirty = 0;\n for (var i = 0; i < view.length; i++) {\n var lineView = view[i];\n if (!lineView.hidden && (!lineView.node || lineView.changes)) { ++dirty; }\n }\n return dirty\n }\n\n function updateSelection(cm) {\n cm.display.input.showSelection(cm.display.input.prepareSelection());\n }\n\n function prepareSelection(cm, primary) {\n if ( primary === void 0 ) primary = true;\n\n var doc = cm.doc, result = {};\n var curFragment = result.cursors = document.createDocumentFragment();\n var selFragment = result.selection = document.createDocumentFragment();\n\n var customCursor = cm.options.$customCursor;\n if (customCursor) { primary = true; }\n for (var i = 0; i < doc.sel.ranges.length; i++) {\n if (!primary && i == doc.sel.primIndex) { continue }\n var range = doc.sel.ranges[i];\n if (range.from().line >= cm.display.viewTo || range.to().line < cm.display.viewFrom) { continue }\n var collapsed = range.empty();\n if (customCursor) {\n var head = customCursor(cm, range);\n if (head) { drawSelectionCursor(cm, head, curFragment); }\n } else if (collapsed || cm.options.showCursorWhenSelecting) {\n drawSelectionCursor(cm, range.head, curFragment);\n }\n if (!collapsed)\n { drawSelectionRange(cm, range, selFragment); }\n }\n return result\n }\n\n // Draws a cursor for the given range\n function drawSelectionCursor(cm, head, output) {\n var pos = cursorCoords(cm, head, \"div\", null, null, !cm.options.singleCursorHeightPerLine);\n\n var cursor = output.appendChild(elt(\"div\", \"\\u00a0\", \"CodeMirror-cursor\"));\n cursor.style.left = pos.left + \"px\";\n cursor.style.top = pos.top + \"px\";\n cursor.style.height = Math.max(0, pos.bottom - pos.top) * cm.options.cursorHeight + \"px\";\n\n if (/\\bcm-fat-cursor\\b/.test(cm.getWrapperElement().className)) {\n var charPos = charCoords(cm, head, \"div\", null, null);\n var width = charPos.right - charPos.left;\n cursor.style.width = (width > 0 ? width : cm.defaultCharWidth()) + \"px\";\n }\n\n if (pos.other) {\n // Secondary cursor, shown when on a 'jump' in bi-directional text\n var otherCursor = output.appendChild(elt(\"div\", \"\\u00a0\", \"CodeMirror-cursor CodeMirror-secondarycursor\"));\n otherCursor.style.display = \"\";\n otherCursor.style.left = pos.other.left + \"px\";\n otherCursor.style.top = pos.other.top + \"px\";\n otherCursor.style.height = (pos.other.bottom - pos.other.top) * .85 + \"px\";\n }\n }\n\n function cmpCoords(a, b) { return a.top - b.top || a.left - b.left }\n\n // Draws the given range as a highlighted selection\n function drawSelectionRange(cm, range, output) {\n var display = cm.display, doc = cm.doc;\n var fragment = document.createDocumentFragment();\n var padding = paddingH(cm.display), leftSide = padding.left;\n var rightSide = Math.max(display.sizerWidth, displayWidth(cm) - display.sizer.offsetLeft) - padding.right;\n var docLTR = doc.direction == \"ltr\";\n\n function add(left, top, width, bottom) {\n if (top < 0) { top = 0; }\n top = Math.round(top);\n bottom = Math.round(bottom);\n fragment.appendChild(elt(\"div\", null, \"CodeMirror-selected\", (\"position: absolute; left: \" + left + \"px;\\n top: \" + top + \"px; width: \" + (width == null ? rightSide - left : width) + \"px;\\n height: \" + (bottom - top) + \"px\")));\n }\n\n function drawForLine(line, fromArg, toArg) {\n var lineObj = getLine(doc, line);\n var lineLen = lineObj.text.length;\n var start, end;\n function coords(ch, bias) {\n return charCoords(cm, Pos(line, ch), \"div\", lineObj, bias)\n }\n\n function wrapX(pos, dir, side) {\n var extent = wrappedLineExtentChar(cm, lineObj, null, pos);\n var prop = (dir == \"ltr\") == (side == \"after\") ? \"left\" : \"right\";\n var ch = side == \"after\" ? extent.begin : extent.end - (/\\s/.test(lineObj.text.charAt(extent.end - 1)) ? 2 : 1);\n return coords(ch, prop)[prop]\n }\n\n var order = getOrder(lineObj, doc.direction);\n iterateBidiSections(order, fromArg || 0, toArg == null ? lineLen : toArg, function (from, to, dir, i) {\n var ltr = dir == \"ltr\";\n var fromPos = coords(from, ltr ? \"left\" : \"right\");\n var toPos = coords(to - 1, ltr ? \"right\" : \"left\");\n\n var openStart = fromArg == null && from == 0, openEnd = toArg == null && to == lineLen;\n var first = i == 0, last = !order || i == order.length - 1;\n if (toPos.top - fromPos.top <= 3) { // Single line\n var openLeft = (docLTR ? openStart : openEnd) && first;\n var openRight = (docLTR ? openEnd : openStart) && last;\n var left = openLeft ? leftSide : (ltr ? fromPos : toPos).left;\n var right = openRight ? rightSide : (ltr ? toPos : fromPos).right;\n add(left, fromPos.top, right - left, fromPos.bottom);\n } else { // Multiple lines\n var topLeft, topRight, botLeft, botRight;\n if (ltr) {\n topLeft = docLTR && openStart && first ? leftSide : fromPos.left;\n topRight = docLTR ? rightSide : wrapX(from, dir, \"before\");\n botLeft = docLTR ? leftSide : wrapX(to, dir, \"after\");\n botRight = docLTR && openEnd && last ? rightSide : toPos.right;\n } else {\n topLeft = !docLTR ? leftSide : wrapX(from, dir, \"before\");\n topRight = !docLTR && openStart && first ? rightSide : fromPos.right;\n botLeft = !docLTR && openEnd && last ? leftSide : toPos.left;\n botRight = !docLTR ? rightSide : wrapX(to, dir, \"after\");\n }\n add(topLeft, fromPos.top, topRight - topLeft, fromPos.bottom);\n if (fromPos.bottom < toPos.top) { add(leftSide, fromPos.bottom, null, toPos.top); }\n add(botLeft, toPos.top, botRight - botLeft, toPos.bottom);\n }\n\n if (!start || cmpCoords(fromPos, start) < 0) { start = fromPos; }\n if (cmpCoords(toPos, start) < 0) { start = toPos; }\n if (!end || cmpCoords(fromPos, end) < 0) { end = fromPos; }\n if (cmpCoords(toPos, end) < 0) { end = toPos; }\n });\n return {start: start, end: end}\n }\n\n var sFrom = range.from(), sTo = range.to();\n if (sFrom.line == sTo.line) {\n drawForLine(sFrom.line, sFrom.ch, sTo.ch);\n } else {\n var fromLine = getLine(doc, sFrom.line), toLine = getLine(doc, sTo.line);\n var singleVLine = visualLine(fromLine) == visualLine(toLine);\n var leftEnd = drawForLine(sFrom.line, sFrom.ch, singleVLine ? fromLine.text.length + 1 : null).end;\n var rightStart = drawForLine(sTo.line, singleVLine ? 0 : null, sTo.ch).start;\n if (singleVLine) {\n if (leftEnd.top < rightStart.top - 2) {\n add(leftEnd.right, leftEnd.top, null, leftEnd.bottom);\n add(leftSide, rightStart.top, rightStart.left, rightStart.bottom);\n } else {\n add(leftEnd.right, leftEnd.top, rightStart.left - leftEnd.right, leftEnd.bottom);\n }\n }\n if (leftEnd.bottom < rightStart.top)\n { add(leftSide, leftEnd.bottom, null, rightStart.top); }\n }\n\n output.appendChild(fragment);\n }\n\n // Cursor-blinking\n function restartBlink(cm) {\n if (!cm.state.focused) { return }\n var display = cm.display;\n clearInterval(display.blinker);\n var on = true;\n display.cursorDiv.style.visibility = \"\";\n if (cm.options.cursorBlinkRate > 0)\n { display.blinker = setInterval(function () {\n if (!cm.hasFocus()) { onBlur(cm); }\n display.cursorDiv.style.visibility = (on = !on) ? \"\" : \"hidden\";\n }, cm.options.cursorBlinkRate); }\n else if (cm.options.cursorBlinkRate < 0)\n { display.cursorDiv.style.visibility = \"hidden\"; }\n }\n\n function ensureFocus(cm) {\n if (!cm.hasFocus()) {\n cm.display.input.focus();\n if (!cm.state.focused) { onFocus(cm); }\n }\n }\n\n function delayBlurEvent(cm) {\n cm.state.delayingBlurEvent = true;\n setTimeout(function () { if (cm.state.delayingBlurEvent) {\n cm.state.delayingBlurEvent = false;\n if (cm.state.focused) { onBlur(cm); }\n } }, 100);\n }\n\n function onFocus(cm, e) {\n if (cm.state.delayingBlurEvent && !cm.state.draggingText) { cm.state.delayingBlurEvent = false; }\n\n if (cm.options.readOnly == \"nocursor\") { return }\n if (!cm.state.focused) {\n signal(cm, \"focus\", cm, e);\n cm.state.focused = true;\n addClass(cm.display.wrapper, \"CodeMirror-focused\");\n // This test prevents this from firing when a context\n // menu is closed (since the input reset would kill the\n // select-all detection hack)\n if (!cm.curOp && cm.display.selForContextMenu != cm.doc.sel) {\n cm.display.input.reset();\n if (webkit) { setTimeout(function () { return cm.display.input.reset(true); }, 20); } // Issue #1730\n }\n cm.display.input.receivedFocus();\n }\n restartBlink(cm);\n }\n function onBlur(cm, e) {\n if (cm.state.delayingBlurEvent) { return }\n\n if (cm.state.focused) {\n signal(cm, \"blur\", cm, e);\n cm.state.focused = false;\n rmClass(cm.display.wrapper, \"CodeMirror-focused\");\n }\n clearInterval(cm.display.blinker);\n setTimeout(function () { if (!cm.state.focused) { cm.display.shift = false; } }, 150);\n }\n\n // Read the actual heights of the rendered lines, and update their\n // stored heights to match.\n function updateHeightsInViewport(cm) {\n var display = cm.display;\n var prevBottom = display.lineDiv.offsetTop;\n var viewTop = Math.max(0, display.scroller.getBoundingClientRect().top);\n var oldHeight = display.lineDiv.getBoundingClientRect().top;\n var mustScroll = 0;\n for (var i = 0; i < display.view.length; i++) {\n var cur = display.view[i], wrapping = cm.options.lineWrapping;\n var height = (void 0), width = 0;\n if (cur.hidden) { continue }\n oldHeight += cur.line.height;\n if (ie && ie_version < 8) {\n var bot = cur.node.offsetTop + cur.node.offsetHeight;\n height = bot - prevBottom;\n prevBottom = bot;\n } else {\n var box = cur.node.getBoundingClientRect();\n height = box.bottom - box.top;\n // Check that lines don't extend past the right of the current\n // editor width\n if (!wrapping && cur.text.firstChild)\n { width = cur.text.firstChild.getBoundingClientRect().right - box.left - 1; }\n }\n var diff = cur.line.height - height;\n if (diff > .005 || diff < -.005) {\n if (oldHeight < viewTop) { mustScroll -= diff; }\n updateLineHeight(cur.line, height);\n updateWidgetHeight(cur.line);\n if (cur.rest) { for (var j = 0; j < cur.rest.length; j++)\n { updateWidgetHeight(cur.rest[j]); } }\n }\n if (width > cm.display.sizerWidth) {\n var chWidth = Math.ceil(width / charWidth(cm.display));\n if (chWidth > cm.display.maxLineLength) {\n cm.display.maxLineLength = chWidth;\n cm.display.maxLine = cur.line;\n cm.display.maxLineChanged = true;\n }\n }\n }\n if (Math.abs(mustScroll) > 2) { display.scroller.scrollTop += mustScroll; }\n }\n\n // Read and store the height of line widgets associated with the\n // given line.\n function updateWidgetHeight(line) {\n if (line.widgets) { for (var i = 0; i < line.widgets.length; ++i) {\n var w = line.widgets[i], parent = w.node.parentNode;\n if (parent) { w.height = parent.offsetHeight; }\n } }\n }\n\n // Compute the lines that are visible in a given viewport (defaults\n // the the current scroll position). viewport may contain top,\n // height, and ensure (see op.scrollToPos) properties.\n function visibleLines(display, doc, viewport) {\n var top = viewport && viewport.top != null ? Math.max(0, viewport.top) : display.scroller.scrollTop;\n top = Math.floor(top - paddingTop(display));\n var bottom = viewport && viewport.bottom != null ? viewport.bottom : top + display.wrapper.clientHeight;\n\n var from = lineAtHeight(doc, top), to = lineAtHeight(doc, bottom);\n // Ensure is a {from: {line, ch}, to: {line, ch}} object, and\n // forces those lines into the viewport (if possible).\n if (viewport && viewport.ensure) {\n var ensureFrom = viewport.ensure.from.line, ensureTo = viewport.ensure.to.line;\n if (ensureFrom < from) {\n from = ensureFrom;\n to = lineAtHeight(doc, heightAtLine(getLine(doc, ensureFrom)) + display.wrapper.clientHeight);\n } else if (Math.min(ensureTo, doc.lastLine()) >= to) {\n from = lineAtHeight(doc, heightAtLine(getLine(doc, ensureTo)) - display.wrapper.clientHeight);\n to = ensureTo;\n }\n }\n return {from: from, to: Math.max(to, from + 1)}\n }\n\n // SCROLLING THINGS INTO VIEW\n\n // If an editor sits on the top or bottom of the window, partially\n // scrolled out of view, this ensures that the cursor is visible.\n function maybeScrollWindow(cm, rect) {\n if (signalDOMEvent(cm, \"scrollCursorIntoView\")) { return }\n\n var display = cm.display, box = display.sizer.getBoundingClientRect(), doScroll = null;\n if (rect.top + box.top < 0) { doScroll = true; }\n else if (rect.bottom + box.top > (window.innerHeight || document.documentElement.clientHeight)) { doScroll = false; }\n if (doScroll != null && !phantom) {\n var scrollNode = elt(\"div\", \"\\u200b\", null, (\"position: absolute;\\n top: \" + (rect.top - display.viewOffset - paddingTop(cm.display)) + \"px;\\n height: \" + (rect.bottom - rect.top + scrollGap(cm) + display.barHeight) + \"px;\\n left: \" + (rect.left) + \"px; width: \" + (Math.max(2, rect.right - rect.left)) + \"px;\"));\n cm.display.lineSpace.appendChild(scrollNode);\n scrollNode.scrollIntoView(doScroll);\n cm.display.lineSpace.removeChild(scrollNode);\n }\n }\n\n // Scroll a given position into view (immediately), verifying that\n // it actually became visible (as line heights are accurately\n // measured, the position of something may 'drift' during drawing).\n function scrollPosIntoView(cm, pos, end, margin) {\n if (margin == null) { margin = 0; }\n var rect;\n if (!cm.options.lineWrapping && pos == end) {\n // Set pos and end to the cursor positions around the character pos sticks to\n // If pos.sticky == \"before\", that is around pos.ch - 1, otherwise around pos.ch\n // If pos == Pos(_, 0, \"before\"), pos and end are unchanged\n end = pos.sticky == \"before\" ? Pos(pos.line, pos.ch + 1, \"before\") : pos;\n pos = pos.ch ? Pos(pos.line, pos.sticky == \"before\" ? pos.ch - 1 : pos.ch, \"after\") : pos;\n }\n for (var limit = 0; limit < 5; limit++) {\n var changed = false;\n var coords = cursorCoords(cm, pos);\n var endCoords = !end || end == pos ? coords : cursorCoords(cm, end);\n rect = {left: Math.min(coords.left, endCoords.left),\n top: Math.min(coords.top, endCoords.top) - margin,\n right: Math.max(coords.left, endCoords.left),\n bottom: Math.max(coords.bottom, endCoords.bottom) + margin};\n var scrollPos = calculateScrollPos(cm, rect);\n var startTop = cm.doc.scrollTop, startLeft = cm.doc.scrollLeft;\n if (scrollPos.scrollTop != null) {\n updateScrollTop(cm, scrollPos.scrollTop);\n if (Math.abs(cm.doc.scrollTop - startTop) > 1) { changed = true; }\n }\n if (scrollPos.scrollLeft != null) {\n setScrollLeft(cm, scrollPos.scrollLeft);\n if (Math.abs(cm.doc.scrollLeft - startLeft) > 1) { changed = true; }\n }\n if (!changed) { break }\n }\n return rect\n }\n\n // Scroll a given set of coordinates into view (immediately).\n function scrollIntoView(cm, rect) {\n var scrollPos = calculateScrollPos(cm, rect);\n if (scrollPos.scrollTop != null) { updateScrollTop(cm, scrollPos.scrollTop); }\n if (scrollPos.scrollLeft != null) { setScrollLeft(cm, scrollPos.scrollLeft); }\n }\n\n // Calculate a new scroll position needed to scroll the given\n // rectangle into view. Returns an object with scrollTop and\n // scrollLeft properties. When these are undefined, the\n // vertical/horizontal position does not need to be adjusted.\n function calculateScrollPos(cm, rect) {\n var display = cm.display, snapMargin = textHeight(cm.display);\n if (rect.top < 0) { rect.top = 0; }\n var screentop = cm.curOp && cm.curOp.scrollTop != null ? cm.curOp.scrollTop : display.scroller.scrollTop;\n var screen = displayHeight(cm), result = {};\n if (rect.bottom - rect.top > screen) { rect.bottom = rect.top + screen; }\n var docBottom = cm.doc.height + paddingVert(display);\n var atTop = rect.top < snapMargin, atBottom = rect.bottom > docBottom - snapMargin;\n if (rect.top < screentop) {\n result.scrollTop = atTop ? 0 : rect.top;\n } else if (rect.bottom > screentop + screen) {\n var newTop = Math.min(rect.top, (atBottom ? docBottom : rect.bottom) - screen);\n if (newTop != screentop) { result.scrollTop = newTop; }\n }\n\n var gutterSpace = cm.options.fixedGutter ? 0 : display.gutters.offsetWidth;\n var screenleft = cm.curOp && cm.curOp.scrollLeft != null ? cm.curOp.scrollLeft : display.scroller.scrollLeft - gutterSpace;\n var screenw = displayWidth(cm) - display.gutters.offsetWidth;\n var tooWide = rect.right - rect.left > screenw;\n if (tooWide) { rect.right = rect.left + screenw; }\n if (rect.left < 10)\n { result.scrollLeft = 0; }\n else if (rect.left < screenleft)\n { result.scrollLeft = Math.max(0, rect.left + gutterSpace - (tooWide ? 0 : 10)); }\n else if (rect.right > screenw + screenleft - 3)\n { result.scrollLeft = rect.right + (tooWide ? 0 : 10) - screenw; }\n return result\n }\n\n // Store a relative adjustment to the scroll position in the current\n // operation (to be applied when the operation finishes).\n function addToScrollTop(cm, top) {\n if (top == null) { return }\n resolveScrollToPos(cm);\n cm.curOp.scrollTop = (cm.curOp.scrollTop == null ? cm.doc.scrollTop : cm.curOp.scrollTop) + top;\n }\n\n // Make sure that at the end of the operation the current cursor is\n // shown.\n function ensureCursorVisible(cm) {\n resolveScrollToPos(cm);\n var cur = cm.getCursor();\n cm.curOp.scrollToPos = {from: cur, to: cur, margin: cm.options.cursorScrollMargin};\n }\n\n function scrollToCoords(cm, x, y) {\n if (x != null || y != null) { resolveScrollToPos(cm); }\n if (x != null) { cm.curOp.scrollLeft = x; }\n if (y != null) { cm.curOp.scrollTop = y; }\n }\n\n function scrollToRange(cm, range) {\n resolveScrollToPos(cm);\n cm.curOp.scrollToPos = range;\n }\n\n // When an operation has its scrollToPos property set, and another\n // scroll action is applied before the end of the operation, this\n // 'simulates' scrolling that position into view in a cheap way, so\n // that the effect of intermediate scroll commands is not ignored.\n function resolveScrollToPos(cm) {\n var range = cm.curOp.scrollToPos;\n if (range) {\n cm.curOp.scrollToPos = null;\n var from = estimateCoords(cm, range.from), to = estimateCoords(cm, range.to);\n scrollToCoordsRange(cm, from, to, range.margin);\n }\n }\n\n function scrollToCoordsRange(cm, from, to, margin) {\n var sPos = calculateScrollPos(cm, {\n left: Math.min(from.left, to.left),\n top: Math.min(from.top, to.top) - margin,\n right: Math.max(from.right, to.right),\n bottom: Math.max(from.bottom, to.bottom) + margin\n });\n scrollToCoords(cm, sPos.scrollLeft, sPos.scrollTop);\n }\n\n // Sync the scrollable area and scrollbars, ensure the viewport\n // covers the visible area.\n function updateScrollTop(cm, val) {\n if (Math.abs(cm.doc.scrollTop - val) < 2) { return }\n if (!gecko) { updateDisplaySimple(cm, {top: val}); }\n setScrollTop(cm, val, true);\n if (gecko) { updateDisplaySimple(cm); }\n startWorker(cm, 100);\n }\n\n function setScrollTop(cm, val, forceScroll) {\n val = Math.max(0, Math.min(cm.display.scroller.scrollHeight - cm.display.scroller.clientHeight, val));\n if (cm.display.scroller.scrollTop == val && !forceScroll) { return }\n cm.doc.scrollTop = val;\n cm.display.scrollbars.setScrollTop(val);\n if (cm.display.scroller.scrollTop != val) { cm.display.scroller.scrollTop = val; }\n }\n\n // Sync scroller and scrollbar, ensure the gutter elements are\n // aligned.\n function setScrollLeft(cm, val, isScroller, forceScroll) {\n val = Math.max(0, Math.min(val, cm.display.scroller.scrollWidth - cm.display.scroller.clientWidth));\n if ((isScroller ? val == cm.doc.scrollLeft : Math.abs(cm.doc.scrollLeft - val) < 2) && !forceScroll) { return }\n cm.doc.scrollLeft = val;\n alignHorizontally(cm);\n if (cm.display.scroller.scrollLeft != val) { cm.display.scroller.scrollLeft = val; }\n cm.display.scrollbars.setScrollLeft(val);\n }\n\n // SCROLLBARS\n\n // Prepare DOM reads needed to update the scrollbars. Done in one\n // shot to minimize update/measure roundtrips.\n function measureForScrollbars(cm) {\n var d = cm.display, gutterW = d.gutters.offsetWidth;\n var docH = Math.round(cm.doc.height + paddingVert(cm.display));\n return {\n clientHeight: d.scroller.clientHeight,\n viewHeight: d.wrapper.clientHeight,\n scrollWidth: d.scroller.scrollWidth, clientWidth: d.scroller.clientWidth,\n viewWidth: d.wrapper.clientWidth,\n barLeft: cm.options.fixedGutter ? gutterW : 0,\n docHeight: docH,\n scrollHeight: docH + scrollGap(cm) + d.barHeight,\n nativeBarWidth: d.nativeBarWidth,\n gutterWidth: gutterW\n }\n }\n\n var NativeScrollbars = function(place, scroll, cm) {\n this.cm = cm;\n var vert = this.vert = elt(\"div\", [elt(\"div\", null, null, \"min-width: 1px\")], \"CodeMirror-vscrollbar\");\n var horiz = this.horiz = elt(\"div\", [elt(\"div\", null, null, \"height: 100%; min-height: 1px\")], \"CodeMirror-hscrollbar\");\n vert.tabIndex = horiz.tabIndex = -1;\n place(vert); place(horiz);\n\n on(vert, \"scroll\", function () {\n if (vert.clientHeight) { scroll(vert.scrollTop, \"vertical\"); }\n });\n on(horiz, \"scroll\", function () {\n if (horiz.clientWidth) { scroll(horiz.scrollLeft, \"horizontal\"); }\n });\n\n this.checkedZeroWidth = false;\n // Need to set a minimum width to see the scrollbar on IE7 (but must not set it on IE8).\n if (ie && ie_version < 8) { this.horiz.style.minHeight = this.vert.style.minWidth = \"18px\"; }\n };\n\n NativeScrollbars.prototype.update = function (measure) {\n var needsH = measure.scrollWidth > measure.clientWidth + 1;\n var needsV = measure.scrollHeight > measure.clientHeight + 1;\n var sWidth = measure.nativeBarWidth;\n\n if (needsV) {\n this.vert.style.display = \"block\";\n this.vert.style.bottom = needsH ? sWidth + \"px\" : \"0\";\n var totalHeight = measure.viewHeight - (needsH ? sWidth : 0);\n // A bug in IE8 can cause this value to be negative, so guard it.\n this.vert.firstChild.style.height =\n Math.max(0, measure.scrollHeight - measure.clientHeight + totalHeight) + \"px\";\n } else {\n this.vert.scrollTop = 0;\n this.vert.style.display = \"\";\n this.vert.firstChild.style.height = \"0\";\n }\n\n if (needsH) {\n this.horiz.style.display = \"block\";\n this.horiz.style.right = needsV ? sWidth + \"px\" : \"0\";\n this.horiz.style.left = measure.barLeft + \"px\";\n var totalWidth = measure.viewWidth - measure.barLeft - (needsV ? sWidth : 0);\n this.horiz.firstChild.style.width =\n Math.max(0, measure.scrollWidth - measure.clientWidth + totalWidth) + \"px\";\n } else {\n this.horiz.style.display = \"\";\n this.horiz.firstChild.style.width = \"0\";\n }\n\n if (!this.checkedZeroWidth && measure.clientHeight > 0) {\n if (sWidth == 0) { this.zeroWidthHack(); }\n this.checkedZeroWidth = true;\n }\n\n return {right: needsV ? sWidth : 0, bottom: needsH ? sWidth : 0}\n };\n\n NativeScrollbars.prototype.setScrollLeft = function (pos) {\n if (this.horiz.scrollLeft != pos) { this.horiz.scrollLeft = pos; }\n if (this.disableHoriz) { this.enableZeroWidthBar(this.horiz, this.disableHoriz, \"horiz\"); }\n };\n\n NativeScrollbars.prototype.setScrollTop = function (pos) {\n if (this.vert.scrollTop != pos) { this.vert.scrollTop = pos; }\n if (this.disableVert) { this.enableZeroWidthBar(this.vert, this.disableVert, \"vert\"); }\n };\n\n NativeScrollbars.prototype.zeroWidthHack = function () {\n var w = mac && !mac_geMountainLion ? \"12px\" : \"18px\";\n this.horiz.style.height = this.vert.style.width = w;\n this.horiz.style.visibility = this.vert.style.visibility = \"hidden\";\n this.disableHoriz = new Delayed;\n this.disableVert = new Delayed;\n };\n\n NativeScrollbars.prototype.enableZeroWidthBar = function (bar, delay, type) {\n bar.style.visibility = \"\";\n function maybeDisable() {\n // To find out whether the scrollbar is still visible, we\n // check whether the element under the pixel in the bottom\n // right corner of the scrollbar box is the scrollbar box\n // itself (when the bar is still visible) or its filler child\n // (when the bar is hidden). If it is still visible, we keep\n // it enabled, if it's hidden, we disable pointer events.\n var box = bar.getBoundingClientRect();\n var elt = type == \"vert\" ? document.elementFromPoint(box.right - 1, (box.top + box.bottom) / 2)\n : document.elementFromPoint((box.right + box.left) / 2, box.bottom - 1);\n if (elt != bar) { bar.style.visibility = \"hidden\"; }\n else { delay.set(1000, maybeDisable); }\n }\n delay.set(1000, maybeDisable);\n };\n\n NativeScrollbars.prototype.clear = function () {\n var parent = this.horiz.parentNode;\n parent.removeChild(this.horiz);\n parent.removeChild(this.vert);\n };\n\n var NullScrollbars = function () {};\n\n NullScrollbars.prototype.update = function () { return {bottom: 0, right: 0} };\n NullScrollbars.prototype.setScrollLeft = function () {};\n NullScrollbars.prototype.setScrollTop = function () {};\n NullScrollbars.prototype.clear = function () {};\n\n function updateScrollbars(cm, measure) {\n if (!measure) { measure = measureForScrollbars(cm); }\n var startWidth = cm.display.barWidth, startHeight = cm.display.barHeight;\n updateScrollbarsInner(cm, measure);\n for (var i = 0; i < 4 && startWidth != cm.display.barWidth || startHeight != cm.display.barHeight; i++) {\n if (startWidth != cm.display.barWidth && cm.options.lineWrapping)\n { updateHeightsInViewport(cm); }\n updateScrollbarsInner(cm, measureForScrollbars(cm));\n startWidth = cm.display.barWidth; startHeight = cm.display.barHeight;\n }\n }\n\n // Re-synchronize the fake scrollbars with the actual size of the\n // content.\n function updateScrollbarsInner(cm, measure) {\n var d = cm.display;\n var sizes = d.scrollbars.update(measure);\n\n d.sizer.style.paddingRight = (d.barWidth = sizes.right) + \"px\";\n d.sizer.style.paddingBottom = (d.barHeight = sizes.bottom) + \"px\";\n d.heightForcer.style.borderBottom = sizes.bottom + \"px solid transparent\";\n\n if (sizes.right && sizes.bottom) {\n d.scrollbarFiller.style.display = \"block\";\n d.scrollbarFiller.style.height = sizes.bottom + \"px\";\n d.scrollbarFiller.style.width = sizes.right + \"px\";\n } else { d.scrollbarFiller.style.display = \"\"; }\n if (sizes.bottom && cm.options.coverGutterNextToScrollbar && cm.options.fixedGutter) {\n d.gutterFiller.style.display = \"block\";\n d.gutterFiller.style.height = sizes.bottom + \"px\";\n d.gutterFiller.style.width = measure.gutterWidth + \"px\";\n } else { d.gutterFiller.style.display = \"\"; }\n }\n\n var scrollbarModel = {\"native\": NativeScrollbars, \"null\": NullScrollbars};\n\n function initScrollbars(cm) {\n if (cm.display.scrollbars) {\n cm.display.scrollbars.clear();\n if (cm.display.scrollbars.addClass)\n { rmClass(cm.display.wrapper, cm.display.scrollbars.addClass); }\n }\n\n cm.display.scrollbars = new scrollbarModel[cm.options.scrollbarStyle](function (node) {\n cm.display.wrapper.insertBefore(node, cm.display.scrollbarFiller);\n // Prevent clicks in the scrollbars from killing focus\n on(node, \"mousedown\", function () {\n if (cm.state.focused) { setTimeout(function () { return cm.display.input.focus(); }, 0); }\n });\n node.setAttribute(\"cm-not-content\", \"true\");\n }, function (pos, axis) {\n if (axis == \"horizontal\") { setScrollLeft(cm, pos); }\n else { updateScrollTop(cm, pos); }\n }, cm);\n if (cm.display.scrollbars.addClass)\n { addClass(cm.display.wrapper, cm.display.scrollbars.addClass); }\n }\n\n // Operations are used to wrap a series of changes to the editor\n // state in such a way that each change won't have to update the\n // cursor and display (which would be awkward, slow, and\n // error-prone). Instead, display updates are batched and then all\n // combined and executed at once.\n\n var nextOpId = 0;\n // Start a new operation.\n function startOperation(cm) {\n cm.curOp = {\n cm: cm,\n viewChanged: false, // Flag that indicates that lines might need to be redrawn\n startHeight: cm.doc.height, // Used to detect need to update scrollbar\n forceUpdate: false, // Used to force a redraw\n updateInput: 0, // Whether to reset the input textarea\n typing: false, // Whether this reset should be careful to leave existing text (for compositing)\n changeObjs: null, // Accumulated changes, for firing change events\n cursorActivityHandlers: null, // Set of handlers to fire cursorActivity on\n cursorActivityCalled: 0, // Tracks which cursorActivity handlers have been called already\n selectionChanged: false, // Whether the selection needs to be redrawn\n updateMaxLine: false, // Set when the widest line needs to be determined anew\n scrollLeft: null, scrollTop: null, // Intermediate scroll position, not pushed to DOM yet\n scrollToPos: null, // Used to scroll to a specific position\n focus: false,\n id: ++nextOpId, // Unique ID\n markArrays: null // Used by addMarkedSpan\n };\n pushOperation(cm.curOp);\n }\n\n // Finish an operation, updating the display and signalling delayed events\n function endOperation(cm) {\n var op = cm.curOp;\n if (op) { finishOperation(op, function (group) {\n for (var i = 0; i < group.ops.length; i++)\n { group.ops[i].cm.curOp = null; }\n endOperations(group);\n }); }\n }\n\n // The DOM updates done when an operation finishes are batched so\n // that the minimum number of relayouts are required.\n function endOperations(group) {\n var ops = group.ops;\n for (var i = 0; i < ops.length; i++) // Read DOM\n { endOperation_R1(ops[i]); }\n for (var i$1 = 0; i$1 < ops.length; i$1++) // Write DOM (maybe)\n { endOperation_W1(ops[i$1]); }\n for (var i$2 = 0; i$2 < ops.length; i$2++) // Read DOM\n { endOperation_R2(ops[i$2]); }\n for (var i$3 = 0; i$3 < ops.length; i$3++) // Write DOM (maybe)\n { endOperation_W2(ops[i$3]); }\n for (var i$4 = 0; i$4 < ops.length; i$4++) // Read DOM\n { endOperation_finish(ops[i$4]); }\n }\n\n function endOperation_R1(op) {\n var cm = op.cm, display = cm.display;\n maybeClipScrollbars(cm);\n if (op.updateMaxLine) { findMaxLine(cm); }\n\n op.mustUpdate = op.viewChanged || op.forceUpdate || op.scrollTop != null ||\n op.scrollToPos && (op.scrollToPos.from.line < display.viewFrom ||\n op.scrollToPos.to.line >= display.viewTo) ||\n display.maxLineChanged && cm.options.lineWrapping;\n op.update = op.mustUpdate &&\n new DisplayUpdate(cm, op.mustUpdate && {top: op.scrollTop, ensure: op.scrollToPos}, op.forceUpdate);\n }\n\n function endOperation_W1(op) {\n op.updatedDisplay = op.mustUpdate && updateDisplayIfNeeded(op.cm, op.update);\n }\n\n function endOperation_R2(op) {\n var cm = op.cm, display = cm.display;\n if (op.updatedDisplay) { updateHeightsInViewport(cm); }\n\n op.barMeasure = measureForScrollbars(cm);\n\n // If the max line changed since it was last measured, measure it,\n // and ensure the document's width matches it.\n // updateDisplay_W2 will use these properties to do the actual resizing\n if (display.maxLineChanged && !cm.options.lineWrapping) {\n op.adjustWidthTo = measureChar(cm, display.maxLine, display.maxLine.text.length).left + 3;\n cm.display.sizerWidth = op.adjustWidthTo;\n op.barMeasure.scrollWidth =\n Math.max(display.scroller.clientWidth, display.sizer.offsetLeft + op.adjustWidthTo + scrollGap(cm) + cm.display.barWidth);\n op.maxScrollLeft = Math.max(0, display.sizer.offsetLeft + op.adjustWidthTo - displayWidth(cm));\n }\n\n if (op.updatedDisplay || op.selectionChanged)\n { op.preparedSelection = display.input.prepareSelection(); }\n }\n\n function endOperation_W2(op) {\n var cm = op.cm;\n\n if (op.adjustWidthTo != null) {\n cm.display.sizer.style.minWidth = op.adjustWidthTo + \"px\";\n if (op.maxScrollLeft < cm.doc.scrollLeft)\n { setScrollLeft(cm, Math.min(cm.display.scroller.scrollLeft, op.maxScrollLeft), true); }\n cm.display.maxLineChanged = false;\n }\n\n var takeFocus = op.focus && op.focus == activeElt();\n if (op.preparedSelection)\n { cm.display.input.showSelection(op.preparedSelection, takeFocus); }\n if (op.updatedDisplay || op.startHeight != cm.doc.height)\n { updateScrollbars(cm, op.barMeasure); }\n if (op.updatedDisplay)\n { setDocumentHeight(cm, op.barMeasure); }\n\n if (op.selectionChanged) { restartBlink(cm); }\n\n if (cm.state.focused && op.updateInput)\n { cm.display.input.reset(op.typing); }\n if (takeFocus) { ensureFocus(op.cm); }\n }\n\n function endOperation_finish(op) {\n var cm = op.cm, display = cm.display, doc = cm.doc;\n\n if (op.updatedDisplay) { postUpdateDisplay(cm, op.update); }\n\n // Abort mouse wheel delta measurement, when scrolling explicitly\n if (display.wheelStartX != null && (op.scrollTop != null || op.scrollLeft != null || op.scrollToPos))\n { display.wheelStartX = display.wheelStartY = null; }\n\n // Propagate the scroll position to the actual DOM scroller\n if (op.scrollTop != null) { setScrollTop(cm, op.scrollTop, op.forceScroll); }\n\n if (op.scrollLeft != null) { setScrollLeft(cm, op.scrollLeft, true, true); }\n // If we need to scroll a specific position into view, do so.\n if (op.scrollToPos) {\n var rect = scrollPosIntoView(cm, clipPos(doc, op.scrollToPos.from),\n clipPos(doc, op.scrollToPos.to), op.scrollToPos.margin);\n maybeScrollWindow(cm, rect);\n }\n\n // Fire events for markers that are hidden/unidden by editing or\n // undoing\n var hidden = op.maybeHiddenMarkers, unhidden = op.maybeUnhiddenMarkers;\n if (hidden) { for (var i = 0; i < hidden.length; ++i)\n { if (!hidden[i].lines.length) { signal(hidden[i], \"hide\"); } } }\n if (unhidden) { for (var i$1 = 0; i$1 < unhidden.length; ++i$1)\n { if (unhidden[i$1].lines.length) { signal(unhidden[i$1], \"unhide\"); } } }\n\n if (display.wrapper.offsetHeight)\n { doc.scrollTop = cm.display.scroller.scrollTop; }\n\n // Fire change events, and delayed event handlers\n if (op.changeObjs)\n { signal(cm, \"changes\", cm, op.changeObjs); }\n if (op.update)\n { op.update.finish(); }\n }\n\n // Run the given function in an operation\n function runInOp(cm, f) {\n if (cm.curOp) { return f() }\n startOperation(cm);\n try { return f() }\n finally { endOperation(cm); }\n }\n // Wraps a function in an operation. Returns the wrapped function.\n function operation(cm, f) {\n return function() {\n if (cm.curOp) { return f.apply(cm, arguments) }\n startOperation(cm);\n try { return f.apply(cm, arguments) }\n finally { endOperation(cm); }\n }\n }\n // Used to add methods to editor and doc instances, wrapping them in\n // operations.\n function methodOp(f) {\n return function() {\n if (this.curOp) { return f.apply(this, arguments) }\n startOperation(this);\n try { return f.apply(this, arguments) }\n finally { endOperation(this); }\n }\n }\n function docMethodOp(f) {\n return function() {\n var cm = this.cm;\n if (!cm || cm.curOp) { return f.apply(this, arguments) }\n startOperation(cm);\n try { return f.apply(this, arguments) }\n finally { endOperation(cm); }\n }\n }\n\n // HIGHLIGHT WORKER\n\n function startWorker(cm, time) {\n if (cm.doc.highlightFrontier < cm.display.viewTo)\n { cm.state.highlight.set(time, bind(highlightWorker, cm)); }\n }\n\n function highlightWorker(cm) {\n var doc = cm.doc;\n if (doc.highlightFrontier >= cm.display.viewTo) { return }\n var end = +new Date + cm.options.workTime;\n var context = getContextBefore(cm, doc.highlightFrontier);\n var changedLines = [];\n\n doc.iter(context.line, Math.min(doc.first + doc.size, cm.display.viewTo + 500), function (line) {\n if (context.line >= cm.display.viewFrom) { // Visible\n var oldStyles = line.styles;\n var resetState = line.text.length > cm.options.maxHighlightLength ? copyState(doc.mode, context.state) : null;\n var highlighted = highlightLine(cm, line, context, true);\n if (resetState) { context.state = resetState; }\n line.styles = highlighted.styles;\n var oldCls = line.styleClasses, newCls = highlighted.classes;\n if (newCls) { line.styleClasses = newCls; }\n else if (oldCls) { line.styleClasses = null; }\n var ischange = !oldStyles || oldStyles.length != line.styles.length ||\n oldCls != newCls && (!oldCls || !newCls || oldCls.bgClass != newCls.bgClass || oldCls.textClass != newCls.textClass);\n for (var i = 0; !ischange && i < oldStyles.length; ++i) { ischange = oldStyles[i] != line.styles[i]; }\n if (ischange) { changedLines.push(context.line); }\n line.stateAfter = context.save();\n context.nextLine();\n } else {\n if (line.text.length <= cm.options.maxHighlightLength)\n { processLine(cm, line.text, context); }\n line.stateAfter = context.line % 5 == 0 ? context.save() : null;\n context.nextLine();\n }\n if (+new Date > end) {\n startWorker(cm, cm.options.workDelay);\n return true\n }\n });\n doc.highlightFrontier = context.line;\n doc.modeFrontier = Math.max(doc.modeFrontier, context.line);\n if (changedLines.length) { runInOp(cm, function () {\n for (var i = 0; i < changedLines.length; i++)\n { regLineChange(cm, changedLines[i], \"text\"); }\n }); }\n }\n\n // DISPLAY DRAWING\n\n var DisplayUpdate = function(cm, viewport, force) {\n var display = cm.display;\n\n this.viewport = viewport;\n // Store some values that we'll need later (but don't want to force a relayout for)\n this.visible = visibleLines(display, cm.doc, viewport);\n this.editorIsHidden = !display.wrapper.offsetWidth;\n this.wrapperHeight = display.wrapper.clientHeight;\n this.wrapperWidth = display.wrapper.clientWidth;\n this.oldDisplayWidth = displayWidth(cm);\n this.force = force;\n this.dims = getDimensions(cm);\n this.events = [];\n };\n\n DisplayUpdate.prototype.signal = function (emitter, type) {\n if (hasHandler(emitter, type))\n { this.events.push(arguments); }\n };\n DisplayUpdate.prototype.finish = function () {\n for (var i = 0; i < this.events.length; i++)\n { signal.apply(null, this.events[i]); }\n };\n\n function maybeClipScrollbars(cm) {\n var display = cm.display;\n if (!display.scrollbarsClipped && display.scroller.offsetWidth) {\n display.nativeBarWidth = display.scroller.offsetWidth - display.scroller.clientWidth;\n display.heightForcer.style.height = scrollGap(cm) + \"px\";\n display.sizer.style.marginBottom = -display.nativeBarWidth + \"px\";\n display.sizer.style.borderRightWidth = scrollGap(cm) + \"px\";\n display.scrollbarsClipped = true;\n }\n }\n\n function selectionSnapshot(cm) {\n if (cm.hasFocus()) { return null }\n var active = activeElt();\n if (!active || !contains(cm.display.lineDiv, active)) { return null }\n var result = {activeElt: active};\n if (window.getSelection) {\n var sel = window.getSelection();\n if (sel.anchorNode && sel.extend && contains(cm.display.lineDiv, sel.anchorNode)) {\n result.anchorNode = sel.anchorNode;\n result.anchorOffset = sel.anchorOffset;\n result.focusNode = sel.focusNode;\n result.focusOffset = sel.focusOffset;\n }\n }\n return result\n }\n\n function restoreSelection(snapshot) {\n if (!snapshot || !snapshot.activeElt || snapshot.activeElt == activeElt()) { return }\n snapshot.activeElt.focus();\n if (!/^(INPUT|TEXTAREA)$/.test(snapshot.activeElt.nodeName) &&\n snapshot.anchorNode && contains(document.body, snapshot.anchorNode) && contains(document.body, snapshot.focusNode)) {\n var sel = window.getSelection(), range = document.createRange();\n range.setEnd(snapshot.anchorNode, snapshot.anchorOffset);\n range.collapse(false);\n sel.removeAllRanges();\n sel.addRange(range);\n sel.extend(snapshot.focusNode, snapshot.focusOffset);\n }\n }\n\n // Does the actual updating of the line display. Bails out\n // (returning false) when there is nothing to be done and forced is\n // false.\n function updateDisplayIfNeeded(cm, update) {\n var display = cm.display, doc = cm.doc;\n\n if (update.editorIsHidden) {\n resetView(cm);\n return false\n }\n\n // Bail out if the visible area is already rendered and nothing changed.\n if (!update.force &&\n update.visible.from >= display.viewFrom && update.visible.to <= display.viewTo &&\n (display.updateLineNumbers == null || display.updateLineNumbers >= display.viewTo) &&\n display.renderedView == display.view && countDirtyView(cm) == 0)\n { return false }\n\n if (maybeUpdateLineNumberWidth(cm)) {\n resetView(cm);\n update.dims = getDimensions(cm);\n }\n\n // Compute a suitable new viewport (from & to)\n var end = doc.first + doc.size;\n var from = Math.max(update.visible.from - cm.options.viewportMargin, doc.first);\n var to = Math.min(end, update.visible.to + cm.options.viewportMargin);\n if (display.viewFrom < from && from - display.viewFrom < 20) { from = Math.max(doc.first, display.viewFrom); }\n if (display.viewTo > to && display.viewTo - to < 20) { to = Math.min(end, display.viewTo); }\n if (sawCollapsedSpans) {\n from = visualLineNo(cm.doc, from);\n to = visualLineEndNo(cm.doc, to);\n }\n\n var different = from != display.viewFrom || to != display.viewTo ||\n display.lastWrapHeight != update.wrapperHeight || display.lastWrapWidth != update.wrapperWidth;\n adjustView(cm, from, to);\n\n display.viewOffset = heightAtLine(getLine(cm.doc, display.viewFrom));\n // Position the mover div to align with the current scroll position\n cm.display.mover.style.top = display.viewOffset + \"px\";\n\n var toUpdate = countDirtyView(cm);\n if (!different && toUpdate == 0 && !update.force && display.renderedView == display.view &&\n (display.updateLineNumbers == null || display.updateLineNumbers >= display.viewTo))\n { return false }\n\n // For big changes, we hide the enclosing element during the\n // update, since that speeds up the operations on most browsers.\n var selSnapshot = selectionSnapshot(cm);\n if (toUpdate > 4) { display.lineDiv.style.display = \"none\"; }\n patchDisplay(cm, display.updateLineNumbers, update.dims);\n if (toUpdate > 4) { display.lineDiv.style.display = \"\"; }\n display.renderedView = display.view;\n // There might have been a widget with a focused element that got\n // hidden or updated, if so re-focus it.\n restoreSelection(selSnapshot);\n\n // Prevent selection and cursors from interfering with the scroll\n // width and height.\n removeChildren(display.cursorDiv);\n removeChildren(display.selectionDiv);\n display.gutters.style.height = display.sizer.style.minHeight = 0;\n\n if (different) {\n display.lastWrapHeight = update.wrapperHeight;\n display.lastWrapWidth = update.wrapperWidth;\n startWorker(cm, 400);\n }\n\n display.updateLineNumbers = null;\n\n return true\n }\n\n function postUpdateDisplay(cm, update) {\n var viewport = update.viewport;\n\n for (var first = true;; first = false) {\n if (!first || !cm.options.lineWrapping || update.oldDisplayWidth == displayWidth(cm)) {\n // Clip forced viewport to actual scrollable area.\n if (viewport && viewport.top != null)\n { viewport = {top: Math.min(cm.doc.height + paddingVert(cm.display) - displayHeight(cm), viewport.top)}; }\n // Updated line heights might result in the drawn area not\n // actually covering the viewport. Keep looping until it does.\n update.visible = visibleLines(cm.display, cm.doc, viewport);\n if (update.visible.from >= cm.display.viewFrom && update.visible.to <= cm.display.viewTo)\n { break }\n } else if (first) {\n update.visible = visibleLines(cm.display, cm.doc, viewport);\n }\n if (!updateDisplayIfNeeded(cm, update)) { break }\n updateHeightsInViewport(cm);\n var barMeasure = measureForScrollbars(cm);\n updateSelection(cm);\n updateScrollbars(cm, barMeasure);\n setDocumentHeight(cm, barMeasure);\n update.force = false;\n }\n\n update.signal(cm, \"update\", cm);\n if (cm.display.viewFrom != cm.display.reportedViewFrom || cm.display.viewTo != cm.display.reportedViewTo) {\n update.signal(cm, \"viewportChange\", cm, cm.display.viewFrom, cm.display.viewTo);\n cm.display.reportedViewFrom = cm.display.viewFrom; cm.display.reportedViewTo = cm.display.viewTo;\n }\n }\n\n function updateDisplaySimple(cm, viewport) {\n var update = new DisplayUpdate(cm, viewport);\n if (updateDisplayIfNeeded(cm, update)) {\n updateHeightsInViewport(cm);\n postUpdateDisplay(cm, update);\n var barMeasure = measureForScrollbars(cm);\n updateSelection(cm);\n updateScrollbars(cm, barMeasure);\n setDocumentHeight(cm, barMeasure);\n update.finish();\n }\n }\n\n // Sync the actual display DOM structure with display.view, removing\n // nodes for lines that are no longer in view, and creating the ones\n // that are not there yet, and updating the ones that are out of\n // date.\n function patchDisplay(cm, updateNumbersFrom, dims) {\n var display = cm.display, lineNumbers = cm.options.lineNumbers;\n var container = display.lineDiv, cur = container.firstChild;\n\n function rm(node) {\n var next = node.nextSibling;\n // Works around a throw-scroll bug in OS X Webkit\n if (webkit && mac && cm.display.currentWheelTarget == node)\n { node.style.display = \"none\"; }\n else\n { node.parentNode.removeChild(node); }\n return next\n }\n\n var view = display.view, lineN = display.viewFrom;\n // Loop over the elements in the view, syncing cur (the DOM nodes\n // in display.lineDiv) with the view as we go.\n for (var i = 0; i < view.length; i++) {\n var lineView = view[i];\n if (lineView.hidden) ; else if (!lineView.node || lineView.node.parentNode != container) { // Not drawn yet\n var node = buildLineElement(cm, lineView, lineN, dims);\n container.insertBefore(node, cur);\n } else { // Already drawn\n while (cur != lineView.node) { cur = rm(cur); }\n var updateNumber = lineNumbers && updateNumbersFrom != null &&\n updateNumbersFrom <= lineN && lineView.lineNumber;\n if (lineView.changes) {\n if (indexOf(lineView.changes, \"gutter\") > -1) { updateNumber = false; }\n updateLineForChanges(cm, lineView, lineN, dims);\n }\n if (updateNumber) {\n removeChildren(lineView.lineNumber);\n lineView.lineNumber.appendChild(document.createTextNode(lineNumberFor(cm.options, lineN)));\n }\n cur = lineView.node.nextSibling;\n }\n lineN += lineView.size;\n }\n while (cur) { cur = rm(cur); }\n }\n\n function updateGutterSpace(display) {\n var width = display.gutters.offsetWidth;\n display.sizer.style.marginLeft = width + \"px\";\n // Send an event to consumers responding to changes in gutter width.\n signalLater(display, \"gutterChanged\", display);\n }\n\n function setDocumentHeight(cm, measure) {\n cm.display.sizer.style.minHeight = measure.docHeight + \"px\";\n cm.display.heightForcer.style.top = measure.docHeight + \"px\";\n cm.display.gutters.style.height = (measure.docHeight + cm.display.barHeight + scrollGap(cm)) + \"px\";\n }\n\n // Re-align line numbers and gutter marks to compensate for\n // horizontal scrolling.\n function alignHorizontally(cm) {\n var display = cm.display, view = display.view;\n if (!display.alignWidgets && (!display.gutters.firstChild || !cm.options.fixedGutter)) { return }\n var comp = compensateForHScroll(display) - display.scroller.scrollLeft + cm.doc.scrollLeft;\n var gutterW = display.gutters.offsetWidth, left = comp + \"px\";\n for (var i = 0; i < view.length; i++) { if (!view[i].hidden) {\n if (cm.options.fixedGutter) {\n if (view[i].gutter)\n { view[i].gutter.style.left = left; }\n if (view[i].gutterBackground)\n { view[i].gutterBackground.style.left = left; }\n }\n var align = view[i].alignable;\n if (align) { for (var j = 0; j < align.length; j++)\n { align[j].style.left = left; } }\n } }\n if (cm.options.fixedGutter)\n { display.gutters.style.left = (comp + gutterW) + \"px\"; }\n }\n\n // Used to ensure that the line number gutter is still the right\n // size for the current document size. Returns true when an update\n // is needed.\n function maybeUpdateLineNumberWidth(cm) {\n if (!cm.options.lineNumbers) { return false }\n var doc = cm.doc, last = lineNumberFor(cm.options, doc.first + doc.size - 1), display = cm.display;\n if (last.length != display.lineNumChars) {\n var test = display.measure.appendChild(elt(\"div\", [elt(\"div\", last)],\n \"CodeMirror-linenumber CodeMirror-gutter-elt\"));\n var innerW = test.firstChild.offsetWidth, padding = test.offsetWidth - innerW;\n display.lineGutter.style.width = \"\";\n display.lineNumInnerWidth = Math.max(innerW, display.lineGutter.offsetWidth - padding) + 1;\n display.lineNumWidth = display.lineNumInnerWidth + padding;\n display.lineNumChars = display.lineNumInnerWidth ? last.length : -1;\n display.lineGutter.style.width = display.lineNumWidth + \"px\";\n updateGutterSpace(cm.display);\n return true\n }\n return false\n }\n\n function getGutters(gutters, lineNumbers) {\n var result = [], sawLineNumbers = false;\n for (var i = 0; i < gutters.length; i++) {\n var name = gutters[i], style = null;\n if (typeof name != \"string\") { style = name.style; name = name.className; }\n if (name == \"CodeMirror-linenumbers\") {\n if (!lineNumbers) { continue }\n else { sawLineNumbers = true; }\n }\n result.push({className: name, style: style});\n }\n if (lineNumbers && !sawLineNumbers) { result.push({className: \"CodeMirror-linenumbers\", style: null}); }\n return result\n }\n\n // Rebuild the gutter elements, ensure the margin to the left of the\n // code matches their width.\n function renderGutters(display) {\n var gutters = display.gutters, specs = display.gutterSpecs;\n removeChildren(gutters);\n display.lineGutter = null;\n for (var i = 0; i < specs.length; ++i) {\n var ref = specs[i];\n var className = ref.className;\n var style = ref.style;\n var gElt = gutters.appendChild(elt(\"div\", null, \"CodeMirror-gutter \" + className));\n if (style) { gElt.style.cssText = style; }\n if (className == \"CodeMirror-linenumbers\") {\n display.lineGutter = gElt;\n gElt.style.width = (display.lineNumWidth || 1) + \"px\";\n }\n }\n gutters.style.display = specs.length ? \"\" : \"none\";\n updateGutterSpace(display);\n }\n\n function updateGutters(cm) {\n renderGutters(cm.display);\n regChange(cm);\n alignHorizontally(cm);\n }\n\n // The display handles the DOM integration, both for input reading\n // and content drawing. It holds references to DOM nodes and\n // display-related state.\n\n function Display(place, doc, input, options) {\n var d = this;\n this.input = input;\n\n // Covers bottom-right square when both scrollbars are present.\n d.scrollbarFiller = elt(\"div\", null, \"CodeMirror-scrollbar-filler\");\n d.scrollbarFiller.setAttribute(\"cm-not-content\", \"true\");\n // Covers bottom of gutter when coverGutterNextToScrollbar is on\n // and h scrollbar is present.\n d.gutterFiller = elt(\"div\", null, \"CodeMirror-gutter-filler\");\n d.gutterFiller.setAttribute(\"cm-not-content\", \"true\");\n // Will contain the actual code, positioned to cover the viewport.\n d.lineDiv = eltP(\"div\", null, \"CodeMirror-code\");\n // Elements are added to these to represent selection and cursors.\n d.selectionDiv = elt(\"div\", null, null, \"position: relative; z-index: 1\");\n d.cursorDiv = elt(\"div\", null, \"CodeMirror-cursors\");\n // A visibility: hidden element used to find the size of things.\n d.measure = elt(\"div\", null, \"CodeMirror-measure\");\n // When lines outside of the viewport are measured, they are drawn in this.\n d.lineMeasure = elt(\"div\", null, \"CodeMirror-measure\");\n // Wraps everything that needs to exist inside the vertically-padded coordinate system\n d.lineSpace = eltP(\"div\", [d.measure, d.lineMeasure, d.selectionDiv, d.cursorDiv, d.lineDiv],\n null, \"position: relative; outline: none\");\n var lines = eltP(\"div\", [d.lineSpace], \"CodeMirror-lines\");\n // Moved around its parent to cover visible view.\n d.mover = elt(\"div\", [lines], null, \"position: relative\");\n // Set to the height of the document, allowing scrolling.\n d.sizer = elt(\"div\", [d.mover], \"CodeMirror-sizer\");\n d.sizerWidth = null;\n // Behavior of elts with overflow: auto and padding is\n // inconsistent across browsers. This is used to ensure the\n // scrollable area is big enough.\n d.heightForcer = elt(\"div\", null, null, \"position: absolute; height: \" + scrollerGap + \"px; width: 1px;\");\n // Will contain the gutters, if any.\n d.gutters = elt(\"div\", null, \"CodeMirror-gutters\");\n d.lineGutter = null;\n // Actual scrollable element.\n d.scroller = elt(\"div\", [d.sizer, d.heightForcer, d.gutters], \"CodeMirror-scroll\");\n d.scroller.setAttribute(\"tabIndex\", \"-1\");\n // The element in which the editor lives.\n d.wrapper = elt(\"div\", [d.scrollbarFiller, d.gutterFiller, d.scroller], \"CodeMirror\");\n\n // This attribute is respected by automatic translation systems such as Google Translate,\n // and may also be respected by tools used by human translators.\n d.wrapper.setAttribute('translate', 'no');\n\n // Work around IE7 z-index bug (not perfect, hence IE7 not really being supported)\n if (ie && ie_version < 8) { d.gutters.style.zIndex = -1; d.scroller.style.paddingRight = 0; }\n if (!webkit && !(gecko && mobile)) { d.scroller.draggable = true; }\n\n if (place) {\n if (place.appendChild) { place.appendChild(d.wrapper); }\n else { place(d.wrapper); }\n }\n\n // Current rendered range (may be bigger than the view window).\n d.viewFrom = d.viewTo = doc.first;\n d.reportedViewFrom = d.reportedViewTo = doc.first;\n // Information about the rendered lines.\n d.view = [];\n d.renderedView = null;\n // Holds info about a single rendered line when it was rendered\n // for measurement, while not in view.\n d.externalMeasured = null;\n // Empty space (in pixels) above the view\n d.viewOffset = 0;\n d.lastWrapHeight = d.lastWrapWidth = 0;\n d.updateLineNumbers = null;\n\n d.nativeBarWidth = d.barHeight = d.barWidth = 0;\n d.scrollbarsClipped = false;\n\n // Used to only resize the line number gutter when necessary (when\n // the amount of lines crosses a boundary that makes its width change)\n d.lineNumWidth = d.lineNumInnerWidth = d.lineNumChars = null;\n // Set to true when a non-horizontal-scrolling line widget is\n // added. As an optimization, line widget aligning is skipped when\n // this is false.\n d.alignWidgets = false;\n\n d.cachedCharWidth = d.cachedTextHeight = d.cachedPaddingH = null;\n\n // Tracks the maximum line length so that the horizontal scrollbar\n // can be kept static when scrolling.\n d.maxLine = null;\n d.maxLineLength = 0;\n d.maxLineChanged = false;\n\n // Used for measuring wheel scrolling granularity\n d.wheelDX = d.wheelDY = d.wheelStartX = d.wheelStartY = null;\n\n // True when shift is held down.\n d.shift = false;\n\n // Used to track whether anything happened since the context menu\n // was opened.\n d.selForContextMenu = null;\n\n d.activeTouch = null;\n\n d.gutterSpecs = getGutters(options.gutters, options.lineNumbers);\n renderGutters(d);\n\n input.init(d);\n }\n\n // Since the delta values reported on mouse wheel events are\n // unstandardized between browsers and even browser versions, and\n // generally horribly unpredictable, this code starts by measuring\n // the scroll effect that the first few mouse wheel events have,\n // and, from that, detects the way it can convert deltas to pixel\n // offsets afterwards.\n //\n // The reason we want to know the amount a wheel event will scroll\n // is that it gives us a chance to update the display before the\n // actual scrolling happens, reducing flickering.\n\n var wheelSamples = 0, wheelPixelsPerUnit = null;\n // Fill in a browser-detected starting value on browsers where we\n // know one. These don't have to be accurate -- the result of them\n // being wrong would just be a slight flicker on the first wheel\n // scroll (if it is large enough).\n if (ie) { wheelPixelsPerUnit = -.53; }\n else if (gecko) { wheelPixelsPerUnit = 15; }\n else if (chrome) { wheelPixelsPerUnit = -.7; }\n else if (safari) { wheelPixelsPerUnit = -1/3; }\n\n function wheelEventDelta(e) {\n var dx = e.wheelDeltaX, dy = e.wheelDeltaY;\n if (dx == null && e.detail && e.axis == e.HORIZONTAL_AXIS) { dx = e.detail; }\n if (dy == null && e.detail && e.axis == e.VERTICAL_AXIS) { dy = e.detail; }\n else if (dy == null) { dy = e.wheelDelta; }\n return {x: dx, y: dy}\n }\n function wheelEventPixels(e) {\n var delta = wheelEventDelta(e);\n delta.x *= wheelPixelsPerUnit;\n delta.y *= wheelPixelsPerUnit;\n return delta\n }\n\n function onScrollWheel(cm, e) {\n // On Chrome 102, viewport updates somehow stop wheel-based\n // scrolling. Turning off pointer events during the scroll seems\n // to avoid the issue.\n if (chrome && chrome_version >= 102) {\n if (cm.display.chromeScrollHack == null) { cm.display.sizer.style.pointerEvents = \"none\"; }\n else { clearTimeout(cm.display.chromeScrollHack); }\n cm.display.chromeScrollHack = setTimeout(function () {\n cm.display.chromeScrollHack = null;\n cm.display.sizer.style.pointerEvents = \"\";\n }, 100);\n }\n var delta = wheelEventDelta(e), dx = delta.x, dy = delta.y;\n var pixelsPerUnit = wheelPixelsPerUnit;\n if (e.deltaMode === 0) {\n dx = e.deltaX;\n dy = e.deltaY;\n pixelsPerUnit = 1;\n }\n\n var display = cm.display, scroll = display.scroller;\n // Quit if there's nothing to scroll here\n var canScrollX = scroll.scrollWidth > scroll.clientWidth;\n var canScrollY = scroll.scrollHeight > scroll.clientHeight;\n if (!(dx && canScrollX || dy && canScrollY)) { return }\n\n // Webkit browsers on OS X abort momentum scrolls when the target\n // of the scroll event is removed from the scrollable element.\n // This hack (see related code in patchDisplay) makes sure the\n // element is kept around.\n if (dy && mac && webkit) {\n outer: for (var cur = e.target, view = display.view; cur != scroll; cur = cur.parentNode) {\n for (var i = 0; i < view.length; i++) {\n if (view[i].node == cur) {\n cm.display.currentWheelTarget = cur;\n break outer\n }\n }\n }\n }\n\n // On some browsers, horizontal scrolling will cause redraws to\n // happen before the gutter has been realigned, causing it to\n // wriggle around in a most unseemly way. When we have an\n // estimated pixels/delta value, we just handle horizontal\n // scrolling entirely here. It'll be slightly off from native, but\n // better than glitching out.\n if (dx && !gecko && !presto && pixelsPerUnit != null) {\n if (dy && canScrollY)\n { updateScrollTop(cm, Math.max(0, scroll.scrollTop + dy * pixelsPerUnit)); }\n setScrollLeft(cm, Math.max(0, scroll.scrollLeft + dx * pixelsPerUnit));\n // Only prevent default scrolling if vertical scrolling is\n // actually possible. Otherwise, it causes vertical scroll\n // jitter on OSX trackpads when deltaX is small and deltaY\n // is large (issue #3579)\n if (!dy || (dy && canScrollY))\n { e_preventDefault(e); }\n display.wheelStartX = null; // Abort measurement, if in progress\n return\n }\n\n // 'Project' the visible viewport to cover the area that is being\n // scrolled into view (if we know enough to estimate it).\n if (dy && pixelsPerUnit != null) {\n var pixels = dy * pixelsPerUnit;\n var top = cm.doc.scrollTop, bot = top + display.wrapper.clientHeight;\n if (pixels < 0) { top = Math.max(0, top + pixels - 50); }\n else { bot = Math.min(cm.doc.height, bot + pixels + 50); }\n updateDisplaySimple(cm, {top: top, bottom: bot});\n }\n\n if (wheelSamples < 20 && e.deltaMode !== 0) {\n if (display.wheelStartX == null) {\n display.wheelStartX = scroll.scrollLeft; display.wheelStartY = scroll.scrollTop;\n display.wheelDX = dx; display.wheelDY = dy;\n setTimeout(function () {\n if (display.wheelStartX == null) { return }\n var movedX = scroll.scrollLeft - display.wheelStartX;\n var movedY = scroll.scrollTop - display.wheelStartY;\n var sample = (movedY && display.wheelDY && movedY / display.wheelDY) ||\n (movedX && display.wheelDX && movedX / display.wheelDX);\n display.wheelStartX = display.wheelStartY = null;\n if (!sample) { return }\n wheelPixelsPerUnit = (wheelPixelsPerUnit * wheelSamples + sample) / (wheelSamples + 1);\n ++wheelSamples;\n }, 200);\n } else {\n display.wheelDX += dx; display.wheelDY += dy;\n }\n }\n }\n\n // Selection objects are immutable. A new one is created every time\n // the selection changes. A selection is one or more non-overlapping\n // (and non-touching) ranges, sorted, and an integer that indicates\n // which one is the primary selection (the one that's scrolled into\n // view, that getCursor returns, etc).\n var Selection = function(ranges, primIndex) {\n this.ranges = ranges;\n this.primIndex = primIndex;\n };\n\n Selection.prototype.primary = function () { return this.ranges[this.primIndex] };\n\n Selection.prototype.equals = function (other) {\n if (other == this) { return true }\n if (other.primIndex != this.primIndex || other.ranges.length != this.ranges.length) { return false }\n for (var i = 0; i < this.ranges.length; i++) {\n var here = this.ranges[i], there = other.ranges[i];\n if (!equalCursorPos(here.anchor, there.anchor) || !equalCursorPos(here.head, there.head)) { return false }\n }\n return true\n };\n\n Selection.prototype.deepCopy = function () {\n var out = [];\n for (var i = 0; i < this.ranges.length; i++)\n { out[i] = new Range(copyPos(this.ranges[i].anchor), copyPos(this.ranges[i].head)); }\n return new Selection(out, this.primIndex)\n };\n\n Selection.prototype.somethingSelected = function () {\n for (var i = 0; i < this.ranges.length; i++)\n { if (!this.ranges[i].empty()) { return true } }\n return false\n };\n\n Selection.prototype.contains = function (pos, end) {\n if (!end) { end = pos; }\n for (var i = 0; i < this.ranges.length; i++) {\n var range = this.ranges[i];\n if (cmp(end, range.from()) >= 0 && cmp(pos, range.to()) <= 0)\n { return i }\n }\n return -1\n };\n\n var Range = function(anchor, head) {\n this.anchor = anchor; this.head = head;\n };\n\n Range.prototype.from = function () { return minPos(this.anchor, this.head) };\n Range.prototype.to = function () { return maxPos(this.anchor, this.head) };\n Range.prototype.empty = function () { return this.head.line == this.anchor.line && this.head.ch == this.anchor.ch };\n\n // Take an unsorted, potentially overlapping set of ranges, and\n // build a selection out of it. 'Consumes' ranges array (modifying\n // it).\n function normalizeSelection(cm, ranges, primIndex) {\n var mayTouch = cm && cm.options.selectionsMayTouch;\n var prim = ranges[primIndex];\n ranges.sort(function (a, b) { return cmp(a.from(), b.from()); });\n primIndex = indexOf(ranges, prim);\n for (var i = 1; i < ranges.length; i++) {\n var cur = ranges[i], prev = ranges[i - 1];\n var diff = cmp(prev.to(), cur.from());\n if (mayTouch && !cur.empty() ? diff > 0 : diff >= 0) {\n var from = minPos(prev.from(), cur.from()), to = maxPos(prev.to(), cur.to());\n var inv = prev.empty() ? cur.from() == cur.head : prev.from() == prev.head;\n if (i <= primIndex) { --primIndex; }\n ranges.splice(--i, 2, new Range(inv ? to : from, inv ? from : to));\n }\n }\n return new Selection(ranges, primIndex)\n }\n\n function simpleSelection(anchor, head) {\n return new Selection([new Range(anchor, head || anchor)], 0)\n }\n\n // Compute the position of the end of a change (its 'to' property\n // refers to the pre-change end).\n function changeEnd(change) {\n if (!change.text) { return change.to }\n return Pos(change.from.line + change.text.length - 1,\n lst(change.text).length + (change.text.length == 1 ? change.from.ch : 0))\n }\n\n // Adjust a position to refer to the post-change position of the\n // same text, or the end of the change if the change covers it.\n function adjustForChange(pos, change) {\n if (cmp(pos, change.from) < 0) { return pos }\n if (cmp(pos, change.to) <= 0) { return changeEnd(change) }\n\n var line = pos.line + change.text.length - (change.to.line - change.from.line) - 1, ch = pos.ch;\n if (pos.line == change.to.line) { ch += changeEnd(change).ch - change.to.ch; }\n return Pos(line, ch)\n }\n\n function computeSelAfterChange(doc, change) {\n var out = [];\n for (var i = 0; i < doc.sel.ranges.length; i++) {\n var range = doc.sel.ranges[i];\n out.push(new Range(adjustForChange(range.anchor, change),\n adjustForChange(range.head, change)));\n }\n return normalizeSelection(doc.cm, out, doc.sel.primIndex)\n }\n\n function offsetPos(pos, old, nw) {\n if (pos.line == old.line)\n { return Pos(nw.line, pos.ch - old.ch + nw.ch) }\n else\n { return Pos(nw.line + (pos.line - old.line), pos.ch) }\n }\n\n // Used by replaceSelections to allow moving the selection to the\n // start or around the replaced test. Hint may be \"start\" or \"around\".\n function computeReplacedSel(doc, changes, hint) {\n var out = [];\n var oldPrev = Pos(doc.first, 0), newPrev = oldPrev;\n for (var i = 0; i < changes.length; i++) {\n var change = changes[i];\n var from = offsetPos(change.from, oldPrev, newPrev);\n var to = offsetPos(changeEnd(change), oldPrev, newPrev);\n oldPrev = change.to;\n newPrev = to;\n if (hint == \"around\") {\n var range = doc.sel.ranges[i], inv = cmp(range.head, range.anchor) < 0;\n out[i] = new Range(inv ? to : from, inv ? from : to);\n } else {\n out[i] = new Range(from, from);\n }\n }\n return new Selection(out, doc.sel.primIndex)\n }\n\n // Used to get the editor into a consistent state again when options change.\n\n function loadMode(cm) {\n cm.doc.mode = getMode(cm.options, cm.doc.modeOption);\n resetModeState(cm);\n }\n\n function resetModeState(cm) {\n cm.doc.iter(function (line) {\n if (line.stateAfter) { line.stateAfter = null; }\n if (line.styles) { line.styles = null; }\n });\n cm.doc.modeFrontier = cm.doc.highlightFrontier = cm.doc.first;\n startWorker(cm, 100);\n cm.state.modeGen++;\n if (cm.curOp) { regChange(cm); }\n }\n\n // DOCUMENT DATA STRUCTURE\n\n // By default, updates that start and end at the beginning of a line\n // are treated specially, in order to make the association of line\n // widgets and marker elements with the text behave more intuitive.\n function isWholeLineUpdate(doc, change) {\n return change.from.ch == 0 && change.to.ch == 0 && lst(change.text) == \"\" &&\n (!doc.cm || doc.cm.options.wholeLineUpdateBefore)\n }\n\n // Perform a change on the document data structure.\n function updateDoc(doc, change, markedSpans, estimateHeight) {\n function spansFor(n) {return markedSpans ? markedSpans[n] : null}\n function update(line, text, spans) {\n updateLine(line, text, spans, estimateHeight);\n signalLater(line, \"change\", line, change);\n }\n function linesFor(start, end) {\n var result = [];\n for (var i = start; i < end; ++i)\n { result.push(new Line(text[i], spansFor(i), estimateHeight)); }\n return result\n }\n\n var from = change.from, to = change.to, text = change.text;\n var firstLine = getLine(doc, from.line), lastLine = getLine(doc, to.line);\n var lastText = lst(text), lastSpans = spansFor(text.length - 1), nlines = to.line - from.line;\n\n // Adjust the line structure\n if (change.full) {\n doc.insert(0, linesFor(0, text.length));\n doc.remove(text.length, doc.size - text.length);\n } else if (isWholeLineUpdate(doc, change)) {\n // This is a whole-line replace. Treated specially to make\n // sure line objects move the way they are supposed to.\n var added = linesFor(0, text.length - 1);\n update(lastLine, lastLine.text, lastSpans);\n if (nlines) { doc.remove(from.line, nlines); }\n if (added.length) { doc.insert(from.line, added); }\n } else if (firstLine == lastLine) {\n if (text.length == 1) {\n update(firstLine, firstLine.text.slice(0, from.ch) + lastText + firstLine.text.slice(to.ch), lastSpans);\n } else {\n var added$1 = linesFor(1, text.length - 1);\n added$1.push(new Line(lastText + firstLine.text.slice(to.ch), lastSpans, estimateHeight));\n update(firstLine, firstLine.text.slice(0, from.ch) + text[0], spansFor(0));\n doc.insert(from.line + 1, added$1);\n }\n } else if (text.length == 1) {\n update(firstLine, firstLine.text.slice(0, from.ch) + text[0] + lastLine.text.slice(to.ch), spansFor(0));\n doc.remove(from.line + 1, nlines);\n } else {\n update(firstLine, firstLine.text.slice(0, from.ch) + text[0], spansFor(0));\n update(lastLine, lastText + lastLine.text.slice(to.ch), lastSpans);\n var added$2 = linesFor(1, text.length - 1);\n if (nlines > 1) { doc.remove(from.line + 1, nlines - 1); }\n doc.insert(from.line + 1, added$2);\n }\n\n signalLater(doc, \"change\", doc, change);\n }\n\n // Call f for all linked documents.\n function linkedDocs(doc, f, sharedHistOnly) {\n function propagate(doc, skip, sharedHist) {\n if (doc.linked) { for (var i = 0; i < doc.linked.length; ++i) {\n var rel = doc.linked[i];\n if (rel.doc == skip) { continue }\n var shared = sharedHist && rel.sharedHist;\n if (sharedHistOnly && !shared) { continue }\n f(rel.doc, shared);\n propagate(rel.doc, doc, shared);\n } }\n }\n propagate(doc, null, true);\n }\n\n // Attach a document to an editor.\n function attachDoc(cm, doc) {\n if (doc.cm) { throw new Error(\"This document is already in use.\") }\n cm.doc = doc;\n doc.cm = cm;\n estimateLineHeights(cm);\n loadMode(cm);\n setDirectionClass(cm);\n cm.options.direction = doc.direction;\n if (!cm.options.lineWrapping) { findMaxLine(cm); }\n cm.options.mode = doc.modeOption;\n regChange(cm);\n }\n\n function setDirectionClass(cm) {\n (cm.doc.direction == \"rtl\" ? addClass : rmClass)(cm.display.lineDiv, \"CodeMirror-rtl\");\n }\n\n function directionChanged(cm) {\n runInOp(cm, function () {\n setDirectionClass(cm);\n regChange(cm);\n });\n }\n\n function History(prev) {\n // Arrays of change events and selections. Doing something adds an\n // event to done and clears undo. Undoing moves events from done\n // to undone, redoing moves them in the other direction.\n this.done = []; this.undone = [];\n this.undoDepth = prev ? prev.undoDepth : Infinity;\n // Used to track when changes can be merged into a single undo\n // event\n this.lastModTime = this.lastSelTime = 0;\n this.lastOp = this.lastSelOp = null;\n this.lastOrigin = this.lastSelOrigin = null;\n // Used by the isClean() method\n this.generation = this.maxGeneration = prev ? prev.maxGeneration : 1;\n }\n\n // Create a history change event from an updateDoc-style change\n // object.\n function historyChangeFromChange(doc, change) {\n var histChange = {from: copyPos(change.from), to: changeEnd(change), text: getBetween(doc, change.from, change.to)};\n attachLocalSpans(doc, histChange, change.from.line, change.to.line + 1);\n linkedDocs(doc, function (doc) { return attachLocalSpans(doc, histChange, change.from.line, change.to.line + 1); }, true);\n return histChange\n }\n\n // Pop all selection events off the end of a history array. Stop at\n // a change event.\n function clearSelectionEvents(array) {\n while (array.length) {\n var last = lst(array);\n if (last.ranges) { array.pop(); }\n else { break }\n }\n }\n\n // Find the top change event in the history. Pop off selection\n // events that are in the way.\n function lastChangeEvent(hist, force) {\n if (force) {\n clearSelectionEvents(hist.done);\n return lst(hist.done)\n } else if (hist.done.length && !lst(hist.done).ranges) {\n return lst(hist.done)\n } else if (hist.done.length > 1 && !hist.done[hist.done.length - 2].ranges) {\n hist.done.pop();\n return lst(hist.done)\n }\n }\n\n // Register a change in the history. Merges changes that are within\n // a single operation, or are close together with an origin that\n // allows merging (starting with \"+\") into a single event.\n function addChangeToHistory(doc, change, selAfter, opId) {\n var hist = doc.history;\n hist.undone.length = 0;\n var time = +new Date, cur;\n var last;\n\n if ((hist.lastOp == opId ||\n hist.lastOrigin == change.origin && change.origin &&\n ((change.origin.charAt(0) == \"+\" && hist.lastModTime > time - (doc.cm ? doc.cm.options.historyEventDelay : 500)) ||\n change.origin.charAt(0) == \"*\")) &&\n (cur = lastChangeEvent(hist, hist.lastOp == opId))) {\n // Merge this change into the last event\n last = lst(cur.changes);\n if (cmp(change.from, change.to) == 0 && cmp(change.from, last.to) == 0) {\n // Optimized case for simple insertion -- don't want to add\n // new changesets for every character typed\n last.to = changeEnd(change);\n } else {\n // Add new sub-event\n cur.changes.push(historyChangeFromChange(doc, change));\n }\n } else {\n // Can not be merged, start a new event.\n var before = lst(hist.done);\n if (!before || !before.ranges)\n { pushSelectionToHistory(doc.sel, hist.done); }\n cur = {changes: [historyChangeFromChange(doc, change)],\n generation: hist.generation};\n hist.done.push(cur);\n while (hist.done.length > hist.undoDepth) {\n hist.done.shift();\n if (!hist.done[0].ranges) { hist.done.shift(); }\n }\n }\n hist.done.push(selAfter);\n hist.generation = ++hist.maxGeneration;\n hist.lastModTime = hist.lastSelTime = time;\n hist.lastOp = hist.lastSelOp = opId;\n hist.lastOrigin = hist.lastSelOrigin = change.origin;\n\n if (!last) { signal(doc, \"historyAdded\"); }\n }\n\n function selectionEventCanBeMerged(doc, origin, prev, sel) {\n var ch = origin.charAt(0);\n return ch == \"*\" ||\n ch == \"+\" &&\n prev.ranges.length == sel.ranges.length &&\n prev.somethingSelected() == sel.somethingSelected() &&\n new Date - doc.history.lastSelTime <= (doc.cm ? doc.cm.options.historyEventDelay : 500)\n }\n\n // Called whenever the selection changes, sets the new selection as\n // the pending selection in the history, and pushes the old pending\n // selection into the 'done' array when it was significantly\n // different (in number of selected ranges, emptiness, or time).\n function addSelectionToHistory(doc, sel, opId, options) {\n var hist = doc.history, origin = options && options.origin;\n\n // A new event is started when the previous origin does not match\n // the current, or the origins don't allow matching. Origins\n // starting with * are always merged, those starting with + are\n // merged when similar and close together in time.\n if (opId == hist.lastSelOp ||\n (origin && hist.lastSelOrigin == origin &&\n (hist.lastModTime == hist.lastSelTime && hist.lastOrigin == origin ||\n selectionEventCanBeMerged(doc, origin, lst(hist.done), sel))))\n { hist.done[hist.done.length - 1] = sel; }\n else\n { pushSelectionToHistory(sel, hist.done); }\n\n hist.lastSelTime = +new Date;\n hist.lastSelOrigin = origin;\n hist.lastSelOp = opId;\n if (options && options.clearRedo !== false)\n { clearSelectionEvents(hist.undone); }\n }\n\n function pushSelectionToHistory(sel, dest) {\n var top = lst(dest);\n if (!(top && top.ranges && top.equals(sel)))\n { dest.push(sel); }\n }\n\n // Used to store marked span information in the history.\n function attachLocalSpans(doc, change, from, to) {\n var existing = change[\"spans_\" + doc.id], n = 0;\n doc.iter(Math.max(doc.first, from), Math.min(doc.first + doc.size, to), function (line) {\n if (line.markedSpans)\n { (existing || (existing = change[\"spans_\" + doc.id] = {}))[n] = line.markedSpans; }\n ++n;\n });\n }\n\n // When un/re-doing restores text containing marked spans, those\n // that have been explicitly cleared should not be restored.\n function removeClearedSpans(spans) {\n if (!spans) { return null }\n var out;\n for (var i = 0; i < spans.length; ++i) {\n if (spans[i].marker.explicitlyCleared) { if (!out) { out = spans.slice(0, i); } }\n else if (out) { out.push(spans[i]); }\n }\n return !out ? spans : out.length ? out : null\n }\n\n // Retrieve and filter the old marked spans stored in a change event.\n function getOldSpans(doc, change) {\n var found = change[\"spans_\" + doc.id];\n if (!found) { return null }\n var nw = [];\n for (var i = 0; i < change.text.length; ++i)\n { nw.push(removeClearedSpans(found[i])); }\n return nw\n }\n\n // Used for un/re-doing changes from the history. Combines the\n // result of computing the existing spans with the set of spans that\n // existed in the history (so that deleting around a span and then\n // undoing brings back the span).\n function mergeOldSpans(doc, change) {\n var old = getOldSpans(doc, change);\n var stretched = stretchSpansOverChange(doc, change);\n if (!old) { return stretched }\n if (!stretched) { return old }\n\n for (var i = 0; i < old.length; ++i) {\n var oldCur = old[i], stretchCur = stretched[i];\n if (oldCur && stretchCur) {\n spans: for (var j = 0; j < stretchCur.length; ++j) {\n var span = stretchCur[j];\n for (var k = 0; k < oldCur.length; ++k)\n { if (oldCur[k].marker == span.marker) { continue spans } }\n oldCur.push(span);\n }\n } else if (stretchCur) {\n old[i] = stretchCur;\n }\n }\n return old\n }\n\n // Used both to provide a JSON-safe object in .getHistory, and, when\n // detaching a document, to split the history in two\n function copyHistoryArray(events, newGroup, instantiateSel) {\n var copy = [];\n for (var i = 0; i < events.length; ++i) {\n var event = events[i];\n if (event.ranges) {\n copy.push(instantiateSel ? Selection.prototype.deepCopy.call(event) : event);\n continue\n }\n var changes = event.changes, newChanges = [];\n copy.push({changes: newChanges});\n for (var j = 0; j < changes.length; ++j) {\n var change = changes[j], m = (void 0);\n newChanges.push({from: change.from, to: change.to, text: change.text});\n if (newGroup) { for (var prop in change) { if (m = prop.match(/^spans_(\\d+)$/)) {\n if (indexOf(newGroup, Number(m[1])) > -1) {\n lst(newChanges)[prop] = change[prop];\n delete change[prop];\n }\n } } }\n }\n }\n return copy\n }\n\n // The 'scroll' parameter given to many of these indicated whether\n // the new cursor position should be scrolled into view after\n // modifying the selection.\n\n // If shift is held or the extend flag is set, extends a range to\n // include a given position (and optionally a second position).\n // Otherwise, simply returns the range between the given positions.\n // Used for cursor motion and such.\n function extendRange(range, head, other, extend) {\n if (extend) {\n var anchor = range.anchor;\n if (other) {\n var posBefore = cmp(head, anchor) < 0;\n if (posBefore != (cmp(other, anchor) < 0)) {\n anchor = head;\n head = other;\n } else if (posBefore != (cmp(head, other) < 0)) {\n head = other;\n }\n }\n return new Range(anchor, head)\n } else {\n return new Range(other || head, head)\n }\n }\n\n // Extend the primary selection range, discard the rest.\n function extendSelection(doc, head, other, options, extend) {\n if (extend == null) { extend = doc.cm && (doc.cm.display.shift || doc.extend); }\n setSelection(doc, new Selection([extendRange(doc.sel.primary(), head, other, extend)], 0), options);\n }\n\n // Extend all selections (pos is an array of selections with length\n // equal the number of selections)\n function extendSelections(doc, heads, options) {\n var out = [];\n var extend = doc.cm && (doc.cm.display.shift || doc.extend);\n for (var i = 0; i < doc.sel.ranges.length; i++)\n { out[i] = extendRange(doc.sel.ranges[i], heads[i], null, extend); }\n var newSel = normalizeSelection(doc.cm, out, doc.sel.primIndex);\n setSelection(doc, newSel, options);\n }\n\n // Updates a single range in the selection.\n function replaceOneSelection(doc, i, range, options) {\n var ranges = doc.sel.ranges.slice(0);\n ranges[i] = range;\n setSelection(doc, normalizeSelection(doc.cm, ranges, doc.sel.primIndex), options);\n }\n\n // Reset the selection to a single range.\n function setSimpleSelection(doc, anchor, head, options) {\n setSelection(doc, simpleSelection(anchor, head), options);\n }\n\n // Give beforeSelectionChange handlers a change to influence a\n // selection update.\n function filterSelectionChange(doc, sel, options) {\n var obj = {\n ranges: sel.ranges,\n update: function(ranges) {\n this.ranges = [];\n for (var i = 0; i < ranges.length; i++)\n { this.ranges[i] = new Range(clipPos(doc, ranges[i].anchor),\n clipPos(doc, ranges[i].head)); }\n },\n origin: options && options.origin\n };\n signal(doc, \"beforeSelectionChange\", doc, obj);\n if (doc.cm) { signal(doc.cm, \"beforeSelectionChange\", doc.cm, obj); }\n if (obj.ranges != sel.ranges) { return normalizeSelection(doc.cm, obj.ranges, obj.ranges.length - 1) }\n else { return sel }\n }\n\n function setSelectionReplaceHistory(doc, sel, options) {\n var done = doc.history.done, last = lst(done);\n if (last && last.ranges) {\n done[done.length - 1] = sel;\n setSelectionNoUndo(doc, sel, options);\n } else {\n setSelection(doc, sel, options);\n }\n }\n\n // Set a new selection.\n function setSelection(doc, sel, options) {\n setSelectionNoUndo(doc, sel, options);\n addSelectionToHistory(doc, doc.sel, doc.cm ? doc.cm.curOp.id : NaN, options);\n }\n\n function setSelectionNoUndo(doc, sel, options) {\n if (hasHandler(doc, \"beforeSelectionChange\") || doc.cm && hasHandler(doc.cm, \"beforeSelectionChange\"))\n { sel = filterSelectionChange(doc, sel, options); }\n\n var bias = options && options.bias ||\n (cmp(sel.primary().head, doc.sel.primary().head) < 0 ? -1 : 1);\n setSelectionInner(doc, skipAtomicInSelection(doc, sel, bias, true));\n\n if (!(options && options.scroll === false) && doc.cm && doc.cm.getOption(\"readOnly\") != \"nocursor\")\n { ensureCursorVisible(doc.cm); }\n }\n\n function setSelectionInner(doc, sel) {\n if (sel.equals(doc.sel)) { return }\n\n doc.sel = sel;\n\n if (doc.cm) {\n doc.cm.curOp.updateInput = 1;\n doc.cm.curOp.selectionChanged = true;\n signalCursorActivity(doc.cm);\n }\n signalLater(doc, \"cursorActivity\", doc);\n }\n\n // Verify that the selection does not partially select any atomic\n // marked ranges.\n function reCheckSelection(doc) {\n setSelectionInner(doc, skipAtomicInSelection(doc, doc.sel, null, false));\n }\n\n // Return a selection that does not partially select any atomic\n // ranges.\n function skipAtomicInSelection(doc, sel, bias, mayClear) {\n var out;\n for (var i = 0; i < sel.ranges.length; i++) {\n var range = sel.ranges[i];\n var old = sel.ranges.length == doc.sel.ranges.length && doc.sel.ranges[i];\n var newAnchor = skipAtomic(doc, range.anchor, old && old.anchor, bias, mayClear);\n var newHead = range.head == range.anchor ? newAnchor : skipAtomic(doc, range.head, old && old.head, bias, mayClear);\n if (out || newAnchor != range.anchor || newHead != range.head) {\n if (!out) { out = sel.ranges.slice(0, i); }\n out[i] = new Range(newAnchor, newHead);\n }\n }\n return out ? normalizeSelection(doc.cm, out, sel.primIndex) : sel\n }\n\n function skipAtomicInner(doc, pos, oldPos, dir, mayClear) {\n var line = getLine(doc, pos.line);\n if (line.markedSpans) { for (var i = 0; i < line.markedSpans.length; ++i) {\n var sp = line.markedSpans[i], m = sp.marker;\n\n // Determine if we should prevent the cursor being placed to the left/right of an atomic marker\n // Historically this was determined using the inclusiveLeft/Right option, but the new way to control it\n // is with selectLeft/Right\n var preventCursorLeft = (\"selectLeft\" in m) ? !m.selectLeft : m.inclusiveLeft;\n var preventCursorRight = (\"selectRight\" in m) ? !m.selectRight : m.inclusiveRight;\n\n if ((sp.from == null || (preventCursorLeft ? sp.from <= pos.ch : sp.from < pos.ch)) &&\n (sp.to == null || (preventCursorRight ? sp.to >= pos.ch : sp.to > pos.ch))) {\n if (mayClear) {\n signal(m, \"beforeCursorEnter\");\n if (m.explicitlyCleared) {\n if (!line.markedSpans) { break }\n else {--i; continue}\n }\n }\n if (!m.atomic) { continue }\n\n if (oldPos) {\n var near = m.find(dir < 0 ? 1 : -1), diff = (void 0);\n if (dir < 0 ? preventCursorRight : preventCursorLeft)\n { near = movePos(doc, near, -dir, near && near.line == pos.line ? line : null); }\n if (near && near.line == pos.line && (diff = cmp(near, oldPos)) && (dir < 0 ? diff < 0 : diff > 0))\n { return skipAtomicInner(doc, near, pos, dir, mayClear) }\n }\n\n var far = m.find(dir < 0 ? -1 : 1);\n if (dir < 0 ? preventCursorLeft : preventCursorRight)\n { far = movePos(doc, far, dir, far.line == pos.line ? line : null); }\n return far ? skipAtomicInner(doc, far, pos, dir, mayClear) : null\n }\n } }\n return pos\n }\n\n // Ensure a given position is not inside an atomic range.\n function skipAtomic(doc, pos, oldPos, bias, mayClear) {\n var dir = bias || 1;\n var found = skipAtomicInner(doc, pos, oldPos, dir, mayClear) ||\n (!mayClear && skipAtomicInner(doc, pos, oldPos, dir, true)) ||\n skipAtomicInner(doc, pos, oldPos, -dir, mayClear) ||\n (!mayClear && skipAtomicInner(doc, pos, oldPos, -dir, true));\n if (!found) {\n doc.cantEdit = true;\n return Pos(doc.first, 0)\n }\n return found\n }\n\n function movePos(doc, pos, dir, line) {\n if (dir < 0 && pos.ch == 0) {\n if (pos.line > doc.first) { return clipPos(doc, Pos(pos.line - 1)) }\n else { return null }\n } else if (dir > 0 && pos.ch == (line || getLine(doc, pos.line)).text.length) {\n if (pos.line < doc.first + doc.size - 1) { return Pos(pos.line + 1, 0) }\n else { return null }\n } else {\n return new Pos(pos.line, pos.ch + dir)\n }\n }\n\n function selectAll(cm) {\n cm.setSelection(Pos(cm.firstLine(), 0), Pos(cm.lastLine()), sel_dontScroll);\n }\n\n // UPDATING\n\n // Allow \"beforeChange\" event handlers to influence a change\n function filterChange(doc, change, update) {\n var obj = {\n canceled: false,\n from: change.from,\n to: change.to,\n text: change.text,\n origin: change.origin,\n cancel: function () { return obj.canceled = true; }\n };\n if (update) { obj.update = function (from, to, text, origin) {\n if (from) { obj.from = clipPos(doc, from); }\n if (to) { obj.to = clipPos(doc, to); }\n if (text) { obj.text = text; }\n if (origin !== undefined) { obj.origin = origin; }\n }; }\n signal(doc, \"beforeChange\", doc, obj);\n if (doc.cm) { signal(doc.cm, \"beforeChange\", doc.cm, obj); }\n\n if (obj.canceled) {\n if (doc.cm) { doc.cm.curOp.updateInput = 2; }\n return null\n }\n return {from: obj.from, to: obj.to, text: obj.text, origin: obj.origin}\n }\n\n // Apply a change to a document, and add it to the document's\n // history, and propagating it to all linked documents.\n function makeChange(doc, change, ignoreReadOnly) {\n if (doc.cm) {\n if (!doc.cm.curOp) { return operation(doc.cm, makeChange)(doc, change, ignoreReadOnly) }\n if (doc.cm.state.suppressEdits) { return }\n }\n\n if (hasHandler(doc, \"beforeChange\") || doc.cm && hasHandler(doc.cm, \"beforeChange\")) {\n change = filterChange(doc, change, true);\n if (!change) { return }\n }\n\n // Possibly split or suppress the update based on the presence\n // of read-only spans in its range.\n var split = sawReadOnlySpans && !ignoreReadOnly && removeReadOnlyRanges(doc, change.from, change.to);\n if (split) {\n for (var i = split.length - 1; i >= 0; --i)\n { makeChangeInner(doc, {from: split[i].from, to: split[i].to, text: i ? [\"\"] : change.text, origin: change.origin}); }\n } else {\n makeChangeInner(doc, change);\n }\n }\n\n function makeChangeInner(doc, change) {\n if (change.text.length == 1 && change.text[0] == \"\" && cmp(change.from, change.to) == 0) { return }\n var selAfter = computeSelAfterChange(doc, change);\n addChangeToHistory(doc, change, selAfter, doc.cm ? doc.cm.curOp.id : NaN);\n\n makeChangeSingleDoc(doc, change, selAfter, stretchSpansOverChange(doc, change));\n var rebased = [];\n\n linkedDocs(doc, function (doc, sharedHist) {\n if (!sharedHist && indexOf(rebased, doc.history) == -1) {\n rebaseHist(doc.history, change);\n rebased.push(doc.history);\n }\n makeChangeSingleDoc(doc, change, null, stretchSpansOverChange(doc, change));\n });\n }\n\n // Revert a change stored in a document's history.\n function makeChangeFromHistory(doc, type, allowSelectionOnly) {\n var suppress = doc.cm && doc.cm.state.suppressEdits;\n if (suppress && !allowSelectionOnly) { return }\n\n var hist = doc.history, event, selAfter = doc.sel;\n var source = type == \"undo\" ? hist.done : hist.undone, dest = type == \"undo\" ? hist.undone : hist.done;\n\n // Verify that there is a useable event (so that ctrl-z won't\n // needlessly clear selection events)\n var i = 0;\n for (; i < source.length; i++) {\n event = source[i];\n if (allowSelectionOnly ? event.ranges && !event.equals(doc.sel) : !event.ranges)\n { break }\n }\n if (i == source.length) { return }\n hist.lastOrigin = hist.lastSelOrigin = null;\n\n for (;;) {\n event = source.pop();\n if (event.ranges) {\n pushSelectionToHistory(event, dest);\n if (allowSelectionOnly && !event.equals(doc.sel)) {\n setSelection(doc, event, {clearRedo: false});\n return\n }\n selAfter = event;\n } else if (suppress) {\n source.push(event);\n return\n } else { break }\n }\n\n // Build up a reverse change object to add to the opposite history\n // stack (redo when undoing, and vice versa).\n var antiChanges = [];\n pushSelectionToHistory(selAfter, dest);\n dest.push({changes: antiChanges, generation: hist.generation});\n hist.generation = event.generation || ++hist.maxGeneration;\n\n var filter = hasHandler(doc, \"beforeChange\") || doc.cm && hasHandler(doc.cm, \"beforeChange\");\n\n var loop = function ( i ) {\n var change = event.changes[i];\n change.origin = type;\n if (filter && !filterChange(doc, change, false)) {\n source.length = 0;\n return {}\n }\n\n antiChanges.push(historyChangeFromChange(doc, change));\n\n var after = i ? computeSelAfterChange(doc, change) : lst(source);\n makeChangeSingleDoc(doc, change, after, mergeOldSpans(doc, change));\n if (!i && doc.cm) { doc.cm.scrollIntoView({from: change.from, to: changeEnd(change)}); }\n var rebased = [];\n\n // Propagate to the linked documents\n linkedDocs(doc, function (doc, sharedHist) {\n if (!sharedHist && indexOf(rebased, doc.history) == -1) {\n rebaseHist(doc.history, change);\n rebased.push(doc.history);\n }\n makeChangeSingleDoc(doc, change, null, mergeOldSpans(doc, change));\n });\n };\n\n for (var i$1 = event.changes.length - 1; i$1 >= 0; --i$1) {\n var returned = loop( i$1 );\n\n if ( returned ) return returned.v;\n }\n }\n\n // Sub-views need their line numbers shifted when text is added\n // above or below them in the parent document.\n function shiftDoc(doc, distance) {\n if (distance == 0) { return }\n doc.first += distance;\n doc.sel = new Selection(map(doc.sel.ranges, function (range) { return new Range(\n Pos(range.anchor.line + distance, range.anchor.ch),\n Pos(range.head.line + distance, range.head.ch)\n ); }), doc.sel.primIndex);\n if (doc.cm) {\n regChange(doc.cm, doc.first, doc.first - distance, distance);\n for (var d = doc.cm.display, l = d.viewFrom; l < d.viewTo; l++)\n { regLineChange(doc.cm, l, \"gutter\"); }\n }\n }\n\n // More lower-level change function, handling only a single document\n // (not linked ones).\n function makeChangeSingleDoc(doc, change, selAfter, spans) {\n if (doc.cm && !doc.cm.curOp)\n { return operation(doc.cm, makeChangeSingleDoc)(doc, change, selAfter, spans) }\n\n if (change.to.line < doc.first) {\n shiftDoc(doc, change.text.length - 1 - (change.to.line - change.from.line));\n return\n }\n if (change.from.line > doc.lastLine()) { return }\n\n // Clip the change to the size of this doc\n if (change.from.line < doc.first) {\n var shift = change.text.length - 1 - (doc.first - change.from.line);\n shiftDoc(doc, shift);\n change = {from: Pos(doc.first, 0), to: Pos(change.to.line + shift, change.to.ch),\n text: [lst(change.text)], origin: change.origin};\n }\n var last = doc.lastLine();\n if (change.to.line > last) {\n change = {from: change.from, to: Pos(last, getLine(doc, last).text.length),\n text: [change.text[0]], origin: change.origin};\n }\n\n change.removed = getBetween(doc, change.from, change.to);\n\n if (!selAfter) { selAfter = computeSelAfterChange(doc, change); }\n if (doc.cm) { makeChangeSingleDocInEditor(doc.cm, change, spans); }\n else { updateDoc(doc, change, spans); }\n setSelectionNoUndo(doc, selAfter, sel_dontScroll);\n\n if (doc.cantEdit && skipAtomic(doc, Pos(doc.firstLine(), 0)))\n { doc.cantEdit = false; }\n }\n\n // Handle the interaction of a change to a document with the editor\n // that this document is part of.\n function makeChangeSingleDocInEditor(cm, change, spans) {\n var doc = cm.doc, display = cm.display, from = change.from, to = change.to;\n\n var recomputeMaxLength = false, checkWidthStart = from.line;\n if (!cm.options.lineWrapping) {\n checkWidthStart = lineNo(visualLine(getLine(doc, from.line)));\n doc.iter(checkWidthStart, to.line + 1, function (line) {\n if (line == display.maxLine) {\n recomputeMaxLength = true;\n return true\n }\n });\n }\n\n if (doc.sel.contains(change.from, change.to) > -1)\n { signalCursorActivity(cm); }\n\n updateDoc(doc, change, spans, estimateHeight(cm));\n\n if (!cm.options.lineWrapping) {\n doc.iter(checkWidthStart, from.line + change.text.length, function (line) {\n var len = lineLength(line);\n if (len > display.maxLineLength) {\n display.maxLine = line;\n display.maxLineLength = len;\n display.maxLineChanged = true;\n recomputeMaxLength = false;\n }\n });\n if (recomputeMaxLength) { cm.curOp.updateMaxLine = true; }\n }\n\n retreatFrontier(doc, from.line);\n startWorker(cm, 400);\n\n var lendiff = change.text.length - (to.line - from.line) - 1;\n // Remember that these lines changed, for updating the display\n if (change.full)\n { regChange(cm); }\n else if (from.line == to.line && change.text.length == 1 && !isWholeLineUpdate(cm.doc, change))\n { regLineChange(cm, from.line, \"text\"); }\n else\n { regChange(cm, from.line, to.line + 1, lendiff); }\n\n var changesHandler = hasHandler(cm, \"changes\"), changeHandler = hasHandler(cm, \"change\");\n if (changeHandler || changesHandler) {\n var obj = {\n from: from, to: to,\n text: change.text,\n removed: change.removed,\n origin: change.origin\n };\n if (changeHandler) { signalLater(cm, \"change\", cm, obj); }\n if (changesHandler) { (cm.curOp.changeObjs || (cm.curOp.changeObjs = [])).push(obj); }\n }\n cm.display.selForContextMenu = null;\n }\n\n function replaceRange(doc, code, from, to, origin) {\n var assign;\n\n if (!to) { to = from; }\n if (cmp(to, from) < 0) { (assign = [to, from], from = assign[0], to = assign[1]); }\n if (typeof code == \"string\") { code = doc.splitLines(code); }\n makeChange(doc, {from: from, to: to, text: code, origin: origin});\n }\n\n // Rebasing/resetting history to deal with externally-sourced changes\n\n function rebaseHistSelSingle(pos, from, to, diff) {\n if (to < pos.line) {\n pos.line += diff;\n } else if (from < pos.line) {\n pos.line = from;\n pos.ch = 0;\n }\n }\n\n // Tries to rebase an array of history events given a change in the\n // document. If the change touches the same lines as the event, the\n // event, and everything 'behind' it, is discarded. If the change is\n // before the event, the event's positions are updated. Uses a\n // copy-on-write scheme for the positions, to avoid having to\n // reallocate them all on every rebase, but also avoid problems with\n // shared position objects being unsafely updated.\n function rebaseHistArray(array, from, to, diff) {\n for (var i = 0; i < array.length; ++i) {\n var sub = array[i], ok = true;\n if (sub.ranges) {\n if (!sub.copied) { sub = array[i] = sub.deepCopy(); sub.copied = true; }\n for (var j = 0; j < sub.ranges.length; j++) {\n rebaseHistSelSingle(sub.ranges[j].anchor, from, to, diff);\n rebaseHistSelSingle(sub.ranges[j].head, from, to, diff);\n }\n continue\n }\n for (var j$1 = 0; j$1 < sub.changes.length; ++j$1) {\n var cur = sub.changes[j$1];\n if (to < cur.from.line) {\n cur.from = Pos(cur.from.line + diff, cur.from.ch);\n cur.to = Pos(cur.to.line + diff, cur.to.ch);\n } else if (from <= cur.to.line) {\n ok = false;\n break\n }\n }\n if (!ok) {\n array.splice(0, i + 1);\n i = 0;\n }\n }\n }\n\n function rebaseHist(hist, change) {\n var from = change.from.line, to = change.to.line, diff = change.text.length - (to - from) - 1;\n rebaseHistArray(hist.done, from, to, diff);\n rebaseHistArray(hist.undone, from, to, diff);\n }\n\n // Utility for applying a change to a line by handle or number,\n // returning the number and optionally registering the line as\n // changed.\n function changeLine(doc, handle, changeType, op) {\n var no = handle, line = handle;\n if (typeof handle == \"number\") { line = getLine(doc, clipLine(doc, handle)); }\n else { no = lineNo(handle); }\n if (no == null) { return null }\n if (op(line, no) && doc.cm) { regLineChange(doc.cm, no, changeType); }\n return line\n }\n\n // The document is represented as a BTree consisting of leaves, with\n // chunk of lines in them, and branches, with up to ten leaves or\n // other branch nodes below them. The top node is always a branch\n // node, and is the document object itself (meaning it has\n // additional methods and properties).\n //\n // All nodes have parent links. The tree is used both to go from\n // line numbers to line objects, and to go from objects to numbers.\n // It also indexes by height, and is used to convert between height\n // and line object, and to find the total height of the document.\n //\n // See also http://marijnhaverbeke.nl/blog/codemirror-line-tree.html\n\n function LeafChunk(lines) {\n this.lines = lines;\n this.parent = null;\n var height = 0;\n for (var i = 0; i < lines.length; ++i) {\n lines[i].parent = this;\n height += lines[i].height;\n }\n this.height = height;\n }\n\n LeafChunk.prototype = {\n chunkSize: function() { return this.lines.length },\n\n // Remove the n lines at offset 'at'.\n removeInner: function(at, n) {\n for (var i = at, e = at + n; i < e; ++i) {\n var line = this.lines[i];\n this.height -= line.height;\n cleanUpLine(line);\n signalLater(line, \"delete\");\n }\n this.lines.splice(at, n);\n },\n\n // Helper used to collapse a small branch into a single leaf.\n collapse: function(lines) {\n lines.push.apply(lines, this.lines);\n },\n\n // Insert the given array of lines at offset 'at', count them as\n // having the given height.\n insertInner: function(at, lines, height) {\n this.height += height;\n this.lines = this.lines.slice(0, at).concat(lines).concat(this.lines.slice(at));\n for (var i = 0; i < lines.length; ++i) { lines[i].parent = this; }\n },\n\n // Used to iterate over a part of the tree.\n iterN: function(at, n, op) {\n for (var e = at + n; at < e; ++at)\n { if (op(this.lines[at])) { return true } }\n }\n };\n\n function BranchChunk(children) {\n this.children = children;\n var size = 0, height = 0;\n for (var i = 0; i < children.length; ++i) {\n var ch = children[i];\n size += ch.chunkSize(); height += ch.height;\n ch.parent = this;\n }\n this.size = size;\n this.height = height;\n this.parent = null;\n }\n\n BranchChunk.prototype = {\n chunkSize: function() { return this.size },\n\n removeInner: function(at, n) {\n this.size -= n;\n for (var i = 0; i < this.children.length; ++i) {\n var child = this.children[i], sz = child.chunkSize();\n if (at < sz) {\n var rm = Math.min(n, sz - at), oldHeight = child.height;\n child.removeInner(at, rm);\n this.height -= oldHeight - child.height;\n if (sz == rm) { this.children.splice(i--, 1); child.parent = null; }\n if ((n -= rm) == 0) { break }\n at = 0;\n } else { at -= sz; }\n }\n // If the result is smaller than 25 lines, ensure that it is a\n // single leaf node.\n if (this.size - n < 25 &&\n (this.children.length > 1 || !(this.children[0] instanceof LeafChunk))) {\n var lines = [];\n this.collapse(lines);\n this.children = [new LeafChunk(lines)];\n this.children[0].parent = this;\n }\n },\n\n collapse: function(lines) {\n for (var i = 0; i < this.children.length; ++i) { this.children[i].collapse(lines); }\n },\n\n insertInner: function(at, lines, height) {\n this.size += lines.length;\n this.height += height;\n for (var i = 0; i < this.children.length; ++i) {\n var child = this.children[i], sz = child.chunkSize();\n if (at <= sz) {\n child.insertInner(at, lines, height);\n if (child.lines && child.lines.length > 50) {\n // To avoid memory thrashing when child.lines is huge (e.g. first view of a large file), it's never spliced.\n // Instead, small slices are taken. They're taken in order because sequential memory accesses are fastest.\n var remaining = child.lines.length % 25 + 25;\n for (var pos = remaining; pos < child.lines.length;) {\n var leaf = new LeafChunk(child.lines.slice(pos, pos += 25));\n child.height -= leaf.height;\n this.children.splice(++i, 0, leaf);\n leaf.parent = this;\n }\n child.lines = child.lines.slice(0, remaining);\n this.maybeSpill();\n }\n break\n }\n at -= sz;\n }\n },\n\n // When a node has grown, check whether it should be split.\n maybeSpill: function() {\n if (this.children.length <= 10) { return }\n var me = this;\n do {\n var spilled = me.children.splice(me.children.length - 5, 5);\n var sibling = new BranchChunk(spilled);\n if (!me.parent) { // Become the parent node\n var copy = new BranchChunk(me.children);\n copy.parent = me;\n me.children = [copy, sibling];\n me = copy;\n } else {\n me.size -= sibling.size;\n me.height -= sibling.height;\n var myIndex = indexOf(me.parent.children, me);\n me.parent.children.splice(myIndex + 1, 0, sibling);\n }\n sibling.parent = me.parent;\n } while (me.children.length > 10)\n me.parent.maybeSpill();\n },\n\n iterN: function(at, n, op) {\n for (var i = 0; i < this.children.length; ++i) {\n var child = this.children[i], sz = child.chunkSize();\n if (at < sz) {\n var used = Math.min(n, sz - at);\n if (child.iterN(at, used, op)) { return true }\n if ((n -= used) == 0) { break }\n at = 0;\n } else { at -= sz; }\n }\n }\n };\n\n // Line widgets are block elements displayed above or below a line.\n\n var LineWidget = function(doc, node, options) {\n if (options) { for (var opt in options) { if (options.hasOwnProperty(opt))\n { this[opt] = options[opt]; } } }\n this.doc = doc;\n this.node = node;\n };\n\n LineWidget.prototype.clear = function () {\n var cm = this.doc.cm, ws = this.line.widgets, line = this.line, no = lineNo(line);\n if (no == null || !ws) { return }\n for (var i = 0; i < ws.length; ++i) { if (ws[i] == this) { ws.splice(i--, 1); } }\n if (!ws.length) { line.widgets = null; }\n var height = widgetHeight(this);\n updateLineHeight(line, Math.max(0, line.height - height));\n if (cm) {\n runInOp(cm, function () {\n adjustScrollWhenAboveVisible(cm, line, -height);\n regLineChange(cm, no, \"widget\");\n });\n signalLater(cm, \"lineWidgetCleared\", cm, this, no);\n }\n };\n\n LineWidget.prototype.changed = function () {\n var this$1 = this;\n\n var oldH = this.height, cm = this.doc.cm, line = this.line;\n this.height = null;\n var diff = widgetHeight(this) - oldH;\n if (!diff) { return }\n if (!lineIsHidden(this.doc, line)) { updateLineHeight(line, line.height + diff); }\n if (cm) {\n runInOp(cm, function () {\n cm.curOp.forceUpdate = true;\n adjustScrollWhenAboveVisible(cm, line, diff);\n signalLater(cm, \"lineWidgetChanged\", cm, this$1, lineNo(line));\n });\n }\n };\n eventMixin(LineWidget);\n\n function adjustScrollWhenAboveVisible(cm, line, diff) {\n if (heightAtLine(line) < ((cm.curOp && cm.curOp.scrollTop) || cm.doc.scrollTop))\n { addToScrollTop(cm, diff); }\n }\n\n function addLineWidget(doc, handle, node, options) {\n var widget = new LineWidget(doc, node, options);\n var cm = doc.cm;\n if (cm && widget.noHScroll) { cm.display.alignWidgets = true; }\n changeLine(doc, handle, \"widget\", function (line) {\n var widgets = line.widgets || (line.widgets = []);\n if (widget.insertAt == null) { widgets.push(widget); }\n else { widgets.splice(Math.min(widgets.length, Math.max(0, widget.insertAt)), 0, widget); }\n widget.line = line;\n if (cm && !lineIsHidden(doc, line)) {\n var aboveVisible = heightAtLine(line) < doc.scrollTop;\n updateLineHeight(line, line.height + widgetHeight(widget));\n if (aboveVisible) { addToScrollTop(cm, widget.height); }\n cm.curOp.forceUpdate = true;\n }\n return true\n });\n if (cm) { signalLater(cm, \"lineWidgetAdded\", cm, widget, typeof handle == \"number\" ? handle : lineNo(handle)); }\n return widget\n }\n\n // TEXTMARKERS\n\n // Created with markText and setBookmark methods. A TextMarker is a\n // handle that can be used to clear or find a marked position in the\n // document. Line objects hold arrays (markedSpans) containing\n // {from, to, marker} object pointing to such marker objects, and\n // indicating that such a marker is present on that line. Multiple\n // lines may point to the same marker when it spans across lines.\n // The spans will have null for their from/to properties when the\n // marker continues beyond the start/end of the line. Markers have\n // links back to the lines they currently touch.\n\n // Collapsed markers have unique ids, in order to be able to order\n // them, which is needed for uniquely determining an outer marker\n // when they overlap (they may nest, but not partially overlap).\n var nextMarkerId = 0;\n\n var TextMarker = function(doc, type) {\n this.lines = [];\n this.type = type;\n this.doc = doc;\n this.id = ++nextMarkerId;\n };\n\n // Clear the marker.\n TextMarker.prototype.clear = function () {\n if (this.explicitlyCleared) { return }\n var cm = this.doc.cm, withOp = cm && !cm.curOp;\n if (withOp) { startOperation(cm); }\n if (hasHandler(this, \"clear\")) {\n var found = this.find();\n if (found) { signalLater(this, \"clear\", found.from, found.to); }\n }\n var min = null, max = null;\n for (var i = 0; i < this.lines.length; ++i) {\n var line = this.lines[i];\n var span = getMarkedSpanFor(line.markedSpans, this);\n if (cm && !this.collapsed) { regLineChange(cm, lineNo(line), \"text\"); }\n else if (cm) {\n if (span.to != null) { max = lineNo(line); }\n if (span.from != null) { min = lineNo(line); }\n }\n line.markedSpans = removeMarkedSpan(line.markedSpans, span);\n if (span.from == null && this.collapsed && !lineIsHidden(this.doc, line) && cm)\n { updateLineHeight(line, textHeight(cm.display)); }\n }\n if (cm && this.collapsed && !cm.options.lineWrapping) { for (var i$1 = 0; i$1 < this.lines.length; ++i$1) {\n var visual = visualLine(this.lines[i$1]), len = lineLength(visual);\n if (len > cm.display.maxLineLength) {\n cm.display.maxLine = visual;\n cm.display.maxLineLength = len;\n cm.display.maxLineChanged = true;\n }\n } }\n\n if (min != null && cm && this.collapsed) { regChange(cm, min, max + 1); }\n this.lines.length = 0;\n this.explicitlyCleared = true;\n if (this.atomic && this.doc.cantEdit) {\n this.doc.cantEdit = false;\n if (cm) { reCheckSelection(cm.doc); }\n }\n if (cm) { signalLater(cm, \"markerCleared\", cm, this, min, max); }\n if (withOp) { endOperation(cm); }\n if (this.parent) { this.parent.clear(); }\n };\n\n // Find the position of the marker in the document. Returns a {from,\n // to} object by default. Side can be passed to get a specific side\n // -- 0 (both), -1 (left), or 1 (right). When lineObj is true, the\n // Pos objects returned contain a line object, rather than a line\n // number (used to prevent looking up the same line twice).\n TextMarker.prototype.find = function (side, lineObj) {\n if (side == null && this.type == \"bookmark\") { side = 1; }\n var from, to;\n for (var i = 0; i < this.lines.length; ++i) {\n var line = this.lines[i];\n var span = getMarkedSpanFor(line.markedSpans, this);\n if (span.from != null) {\n from = Pos(lineObj ? line : lineNo(line), span.from);\n if (side == -1) { return from }\n }\n if (span.to != null) {\n to = Pos(lineObj ? line : lineNo(line), span.to);\n if (side == 1) { return to }\n }\n }\n return from && {from: from, to: to}\n };\n\n // Signals that the marker's widget changed, and surrounding layout\n // should be recomputed.\n TextMarker.prototype.changed = function () {\n var this$1 = this;\n\n var pos = this.find(-1, true), widget = this, cm = this.doc.cm;\n if (!pos || !cm) { return }\n runInOp(cm, function () {\n var line = pos.line, lineN = lineNo(pos.line);\n var view = findViewForLine(cm, lineN);\n if (view) {\n clearLineMeasurementCacheFor(view);\n cm.curOp.selectionChanged = cm.curOp.forceUpdate = true;\n }\n cm.curOp.updateMaxLine = true;\n if (!lineIsHidden(widget.doc, line) && widget.height != null) {\n var oldHeight = widget.height;\n widget.height = null;\n var dHeight = widgetHeight(widget) - oldHeight;\n if (dHeight)\n { updateLineHeight(line, line.height + dHeight); }\n }\n signalLater(cm, \"markerChanged\", cm, this$1);\n });\n };\n\n TextMarker.prototype.attachLine = function (line) {\n if (!this.lines.length && this.doc.cm) {\n var op = this.doc.cm.curOp;\n if (!op.maybeHiddenMarkers || indexOf(op.maybeHiddenMarkers, this) == -1)\n { (op.maybeUnhiddenMarkers || (op.maybeUnhiddenMarkers = [])).push(this); }\n }\n this.lines.push(line);\n };\n\n TextMarker.prototype.detachLine = function (line) {\n this.lines.splice(indexOf(this.lines, line), 1);\n if (!this.lines.length && this.doc.cm) {\n var op = this.doc.cm.curOp\n ;(op.maybeHiddenMarkers || (op.maybeHiddenMarkers = [])).push(this);\n }\n };\n eventMixin(TextMarker);\n\n // Create a marker, wire it up to the right lines, and\n function markText(doc, from, to, options, type) {\n // Shared markers (across linked documents) are handled separately\n // (markTextShared will call out to this again, once per\n // document).\n if (options && options.shared) { return markTextShared(doc, from, to, options, type) }\n // Ensure we are in an operation.\n if (doc.cm && !doc.cm.curOp) { return operation(doc.cm, markText)(doc, from, to, options, type) }\n\n var marker = new TextMarker(doc, type), diff = cmp(from, to);\n if (options) { copyObj(options, marker, false); }\n // Don't connect empty markers unless clearWhenEmpty is false\n if (diff > 0 || diff == 0 && marker.clearWhenEmpty !== false)\n { return marker }\n if (marker.replacedWith) {\n // Showing up as a widget implies collapsed (widget replaces text)\n marker.collapsed = true;\n marker.widgetNode = eltP(\"span\", [marker.replacedWith], \"CodeMirror-widget\");\n if (!options.handleMouseEvents) { marker.widgetNode.setAttribute(\"cm-ignore-events\", \"true\"); }\n if (options.insertLeft) { marker.widgetNode.insertLeft = true; }\n }\n if (marker.collapsed) {\n if (conflictingCollapsedRange(doc, from.line, from, to, marker) ||\n from.line != to.line && conflictingCollapsedRange(doc, to.line, from, to, marker))\n { throw new Error(\"Inserting collapsed marker partially overlapping an existing one\") }\n seeCollapsedSpans();\n }\n\n if (marker.addToHistory)\n { addChangeToHistory(doc, {from: from, to: to, origin: \"markText\"}, doc.sel, NaN); }\n\n var curLine = from.line, cm = doc.cm, updateMaxLine;\n doc.iter(curLine, to.line + 1, function (line) {\n if (cm && marker.collapsed && !cm.options.lineWrapping && visualLine(line) == cm.display.maxLine)\n { updateMaxLine = true; }\n if (marker.collapsed && curLine != from.line) { updateLineHeight(line, 0); }\n addMarkedSpan(line, new MarkedSpan(marker,\n curLine == from.line ? from.ch : null,\n curLine == to.line ? to.ch : null), doc.cm && doc.cm.curOp);\n ++curLine;\n });\n // lineIsHidden depends on the presence of the spans, so needs a second pass\n if (marker.collapsed) { doc.iter(from.line, to.line + 1, function (line) {\n if (lineIsHidden(doc, line)) { updateLineHeight(line, 0); }\n }); }\n\n if (marker.clearOnEnter) { on(marker, \"beforeCursorEnter\", function () { return marker.clear(); }); }\n\n if (marker.readOnly) {\n seeReadOnlySpans();\n if (doc.history.done.length || doc.history.undone.length)\n { doc.clearHistory(); }\n }\n if (marker.collapsed) {\n marker.id = ++nextMarkerId;\n marker.atomic = true;\n }\n if (cm) {\n // Sync editor state\n if (updateMaxLine) { cm.curOp.updateMaxLine = true; }\n if (marker.collapsed)\n { regChange(cm, from.line, to.line + 1); }\n else if (marker.className || marker.startStyle || marker.endStyle || marker.css ||\n marker.attributes || marker.title)\n { for (var i = from.line; i <= to.line; i++) { regLineChange(cm, i, \"text\"); } }\n if (marker.atomic) { reCheckSelection(cm.doc); }\n signalLater(cm, \"markerAdded\", cm, marker);\n }\n return marker\n }\n\n // SHARED TEXTMARKERS\n\n // A shared marker spans multiple linked documents. It is\n // implemented as a meta-marker-object controlling multiple normal\n // markers.\n var SharedTextMarker = function(markers, primary) {\n this.markers = markers;\n this.primary = primary;\n for (var i = 0; i < markers.length; ++i)\n { markers[i].parent = this; }\n };\n\n SharedTextMarker.prototype.clear = function () {\n if (this.explicitlyCleared) { return }\n this.explicitlyCleared = true;\n for (var i = 0; i < this.markers.length; ++i)\n { this.markers[i].clear(); }\n signalLater(this, \"clear\");\n };\n\n SharedTextMarker.prototype.find = function (side, lineObj) {\n return this.primary.find(side, lineObj)\n };\n eventMixin(SharedTextMarker);\n\n function markTextShared(doc, from, to, options, type) {\n options = copyObj(options);\n options.shared = false;\n var markers = [markText(doc, from, to, options, type)], primary = markers[0];\n var widget = options.widgetNode;\n linkedDocs(doc, function (doc) {\n if (widget) { options.widgetNode = widget.cloneNode(true); }\n markers.push(markText(doc, clipPos(doc, from), clipPos(doc, to), options, type));\n for (var i = 0; i < doc.linked.length; ++i)\n { if (doc.linked[i].isParent) { return } }\n primary = lst(markers);\n });\n return new SharedTextMarker(markers, primary)\n }\n\n function findSharedMarkers(doc) {\n return doc.findMarks(Pos(doc.first, 0), doc.clipPos(Pos(doc.lastLine())), function (m) { return m.parent; })\n }\n\n function copySharedMarkers(doc, markers) {\n for (var i = 0; i < markers.length; i++) {\n var marker = markers[i], pos = marker.find();\n var mFrom = doc.clipPos(pos.from), mTo = doc.clipPos(pos.to);\n if (cmp(mFrom, mTo)) {\n var subMark = markText(doc, mFrom, mTo, marker.primary, marker.primary.type);\n marker.markers.push(subMark);\n subMark.parent = marker;\n }\n }\n }\n\n function detachSharedMarkers(markers) {\n var loop = function ( i ) {\n var marker = markers[i], linked = [marker.primary.doc];\n linkedDocs(marker.primary.doc, function (d) { return linked.push(d); });\n for (var j = 0; j < marker.markers.length; j++) {\n var subMarker = marker.markers[j];\n if (indexOf(linked, subMarker.doc) == -1) {\n subMarker.parent = null;\n marker.markers.splice(j--, 1);\n }\n }\n };\n\n for (var i = 0; i < markers.length; i++) loop( i );\n }\n\n var nextDocId = 0;\n var Doc = function(text, mode, firstLine, lineSep, direction) {\n if (!(this instanceof Doc)) { return new Doc(text, mode, firstLine, lineSep, direction) }\n if (firstLine == null) { firstLine = 0; }\n\n BranchChunk.call(this, [new LeafChunk([new Line(\"\", null)])]);\n this.first = firstLine;\n this.scrollTop = this.scrollLeft = 0;\n this.cantEdit = false;\n this.cleanGeneration = 1;\n this.modeFrontier = this.highlightFrontier = firstLine;\n var start = Pos(firstLine, 0);\n this.sel = simpleSelection(start);\n this.history = new History(null);\n this.id = ++nextDocId;\n this.modeOption = mode;\n this.lineSep = lineSep;\n this.direction = (direction == \"rtl\") ? \"rtl\" : \"ltr\";\n this.extend = false;\n\n if (typeof text == \"string\") { text = this.splitLines(text); }\n updateDoc(this, {from: start, to: start, text: text});\n setSelection(this, simpleSelection(start), sel_dontScroll);\n };\n\n Doc.prototype = createObj(BranchChunk.prototype, {\n constructor: Doc,\n // Iterate over the document. Supports two forms -- with only one\n // argument, it calls that for each line in the document. With\n // three, it iterates over the range given by the first two (with\n // the second being non-inclusive).\n iter: function(from, to, op) {\n if (op) { this.iterN(from - this.first, to - from, op); }\n else { this.iterN(this.first, this.first + this.size, from); }\n },\n\n // Non-public interface for adding and removing lines.\n insert: function(at, lines) {\n var height = 0;\n for (var i = 0; i < lines.length; ++i) { height += lines[i].height; }\n this.insertInner(at - this.first, lines, height);\n },\n remove: function(at, n) { this.removeInner(at - this.first, n); },\n\n // From here, the methods are part of the public interface. Most\n // are also available from CodeMirror (editor) instances.\n\n getValue: function(lineSep) {\n var lines = getLines(this, this.first, this.first + this.size);\n if (lineSep === false) { return lines }\n return lines.join(lineSep || this.lineSeparator())\n },\n setValue: docMethodOp(function(code) {\n var top = Pos(this.first, 0), last = this.first + this.size - 1;\n makeChange(this, {from: top, to: Pos(last, getLine(this, last).text.length),\n text: this.splitLines(code), origin: \"setValue\", full: true}, true);\n if (this.cm) { scrollToCoords(this.cm, 0, 0); }\n setSelection(this, simpleSelection(top), sel_dontScroll);\n }),\n replaceRange: function(code, from, to, origin) {\n from = clipPos(this, from);\n to = to ? clipPos(this, to) : from;\n replaceRange(this, code, from, to, origin);\n },\n getRange: function(from, to, lineSep) {\n var lines = getBetween(this, clipPos(this, from), clipPos(this, to));\n if (lineSep === false) { return lines }\n if (lineSep === '') { return lines.join('') }\n return lines.join(lineSep || this.lineSeparator())\n },\n\n getLine: function(line) {var l = this.getLineHandle(line); return l && l.text},\n\n getLineHandle: function(line) {if (isLine(this, line)) { return getLine(this, line) }},\n getLineNumber: function(line) {return lineNo(line)},\n\n getLineHandleVisualStart: function(line) {\n if (typeof line == \"number\") { line = getLine(this, line); }\n return visualLine(line)\n },\n\n lineCount: function() {return this.size},\n firstLine: function() {return this.first},\n lastLine: function() {return this.first + this.size - 1},\n\n clipPos: function(pos) {return clipPos(this, pos)},\n\n getCursor: function(start) {\n var range = this.sel.primary(), pos;\n if (start == null || start == \"head\") { pos = range.head; }\n else if (start == \"anchor\") { pos = range.anchor; }\n else if (start == \"end\" || start == \"to\" || start === false) { pos = range.to(); }\n else { pos = range.from(); }\n return pos\n },\n listSelections: function() { return this.sel.ranges },\n somethingSelected: function() {return this.sel.somethingSelected()},\n\n setCursor: docMethodOp(function(line, ch, options) {\n setSimpleSelection(this, clipPos(this, typeof line == \"number\" ? Pos(line, ch || 0) : line), null, options);\n }),\n setSelection: docMethodOp(function(anchor, head, options) {\n setSimpleSelection(this, clipPos(this, anchor), clipPos(this, head || anchor), options);\n }),\n extendSelection: docMethodOp(function(head, other, options) {\n extendSelection(this, clipPos(this, head), other && clipPos(this, other), options);\n }),\n extendSelections: docMethodOp(function(heads, options) {\n extendSelections(this, clipPosArray(this, heads), options);\n }),\n extendSelectionsBy: docMethodOp(function(f, options) {\n var heads = map(this.sel.ranges, f);\n extendSelections(this, clipPosArray(this, heads), options);\n }),\n setSelections: docMethodOp(function(ranges, primary, options) {\n if (!ranges.length) { return }\n var out = [];\n for (var i = 0; i < ranges.length; i++)\n { out[i] = new Range(clipPos(this, ranges[i].anchor),\n clipPos(this, ranges[i].head || ranges[i].anchor)); }\n if (primary == null) { primary = Math.min(ranges.length - 1, this.sel.primIndex); }\n setSelection(this, normalizeSelection(this.cm, out, primary), options);\n }),\n addSelection: docMethodOp(function(anchor, head, options) {\n var ranges = this.sel.ranges.slice(0);\n ranges.push(new Range(clipPos(this, anchor), clipPos(this, head || anchor)));\n setSelection(this, normalizeSelection(this.cm, ranges, ranges.length - 1), options);\n }),\n\n getSelection: function(lineSep) {\n var ranges = this.sel.ranges, lines;\n for (var i = 0; i < ranges.length; i++) {\n var sel = getBetween(this, ranges[i].from(), ranges[i].to());\n lines = lines ? lines.concat(sel) : sel;\n }\n if (lineSep === false) { return lines }\n else { return lines.join(lineSep || this.lineSeparator()) }\n },\n getSelections: function(lineSep) {\n var parts = [], ranges = this.sel.ranges;\n for (var i = 0; i < ranges.length; i++) {\n var sel = getBetween(this, ranges[i].from(), ranges[i].to());\n if (lineSep !== false) { sel = sel.join(lineSep || this.lineSeparator()); }\n parts[i] = sel;\n }\n return parts\n },\n replaceSelection: function(code, collapse, origin) {\n var dup = [];\n for (var i = 0; i < this.sel.ranges.length; i++)\n { dup[i] = code; }\n this.replaceSelections(dup, collapse, origin || \"+input\");\n },\n replaceSelections: docMethodOp(function(code, collapse, origin) {\n var changes = [], sel = this.sel;\n for (var i = 0; i < sel.ranges.length; i++) {\n var range = sel.ranges[i];\n changes[i] = {from: range.from(), to: range.to(), text: this.splitLines(code[i]), origin: origin};\n }\n var newSel = collapse && collapse != \"end\" && computeReplacedSel(this, changes, collapse);\n for (var i$1 = changes.length - 1; i$1 >= 0; i$1--)\n { makeChange(this, changes[i$1]); }\n if (newSel) { setSelectionReplaceHistory(this, newSel); }\n else if (this.cm) { ensureCursorVisible(this.cm); }\n }),\n undo: docMethodOp(function() {makeChangeFromHistory(this, \"undo\");}),\n redo: docMethodOp(function() {makeChangeFromHistory(this, \"redo\");}),\n undoSelection: docMethodOp(function() {makeChangeFromHistory(this, \"undo\", true);}),\n redoSelection: docMethodOp(function() {makeChangeFromHistory(this, \"redo\", true);}),\n\n setExtending: function(val) {this.extend = val;},\n getExtending: function() {return this.extend},\n\n historySize: function() {\n var hist = this.history, done = 0, undone = 0;\n for (var i = 0; i < hist.done.length; i++) { if (!hist.done[i].ranges) { ++done; } }\n for (var i$1 = 0; i$1 < hist.undone.length; i$1++) { if (!hist.undone[i$1].ranges) { ++undone; } }\n return {undo: done, redo: undone}\n },\n clearHistory: function() {\n var this$1 = this;\n\n this.history = new History(this.history);\n linkedDocs(this, function (doc) { return doc.history = this$1.history; }, true);\n },\n\n markClean: function() {\n this.cleanGeneration = this.changeGeneration(true);\n },\n changeGeneration: function(forceSplit) {\n if (forceSplit)\n { this.history.lastOp = this.history.lastSelOp = this.history.lastOrigin = null; }\n return this.history.generation\n },\n isClean: function (gen) {\n return this.history.generation == (gen || this.cleanGeneration)\n },\n\n getHistory: function() {\n return {done: copyHistoryArray(this.history.done),\n undone: copyHistoryArray(this.history.undone)}\n },\n setHistory: function(histData) {\n var hist = this.history = new History(this.history);\n hist.done = copyHistoryArray(histData.done.slice(0), null, true);\n hist.undone = copyHistoryArray(histData.undone.slice(0), null, true);\n },\n\n setGutterMarker: docMethodOp(function(line, gutterID, value) {\n return changeLine(this, line, \"gutter\", function (line) {\n var markers = line.gutterMarkers || (line.gutterMarkers = {});\n markers[gutterID] = value;\n if (!value && isEmpty(markers)) { line.gutterMarkers = null; }\n return true\n })\n }),\n\n clearGutter: docMethodOp(function(gutterID) {\n var this$1 = this;\n\n this.iter(function (line) {\n if (line.gutterMarkers && line.gutterMarkers[gutterID]) {\n changeLine(this$1, line, \"gutter\", function () {\n line.gutterMarkers[gutterID] = null;\n if (isEmpty(line.gutterMarkers)) { line.gutterMarkers = null; }\n return true\n });\n }\n });\n }),\n\n lineInfo: function(line) {\n var n;\n if (typeof line == \"number\") {\n if (!isLine(this, line)) { return null }\n n = line;\n line = getLine(this, line);\n if (!line) { return null }\n } else {\n n = lineNo(line);\n if (n == null) { return null }\n }\n return {line: n, handle: line, text: line.text, gutterMarkers: line.gutterMarkers,\n textClass: line.textClass, bgClass: line.bgClass, wrapClass: line.wrapClass,\n widgets: line.widgets}\n },\n\n addLineClass: docMethodOp(function(handle, where, cls) {\n return changeLine(this, handle, where == \"gutter\" ? \"gutter\" : \"class\", function (line) {\n var prop = where == \"text\" ? \"textClass\"\n : where == \"background\" ? \"bgClass\"\n : where == \"gutter\" ? \"gutterClass\" : \"wrapClass\";\n if (!line[prop]) { line[prop] = cls; }\n else if (classTest(cls).test(line[prop])) { return false }\n else { line[prop] += \" \" + cls; }\n return true\n })\n }),\n removeLineClass: docMethodOp(function(handle, where, cls) {\n return changeLine(this, handle, where == \"gutter\" ? \"gutter\" : \"class\", function (line) {\n var prop = where == \"text\" ? \"textClass\"\n : where == \"background\" ? \"bgClass\"\n : where == \"gutter\" ? \"gutterClass\" : \"wrapClass\";\n var cur = line[prop];\n if (!cur) { return false }\n else if (cls == null) { line[prop] = null; }\n else {\n var found = cur.match(classTest(cls));\n if (!found) { return false }\n var end = found.index + found[0].length;\n line[prop] = cur.slice(0, found.index) + (!found.index || end == cur.length ? \"\" : \" \") + cur.slice(end) || null;\n }\n return true\n })\n }),\n\n addLineWidget: docMethodOp(function(handle, node, options) {\n return addLineWidget(this, handle, node, options)\n }),\n removeLineWidget: function(widget) { widget.clear(); },\n\n markText: function(from, to, options) {\n return markText(this, clipPos(this, from), clipPos(this, to), options, options && options.type || \"range\")\n },\n setBookmark: function(pos, options) {\n var realOpts = {replacedWith: options && (options.nodeType == null ? options.widget : options),\n insertLeft: options && options.insertLeft,\n clearWhenEmpty: false, shared: options && options.shared,\n handleMouseEvents: options && options.handleMouseEvents};\n pos = clipPos(this, pos);\n return markText(this, pos, pos, realOpts, \"bookmark\")\n },\n findMarksAt: function(pos) {\n pos = clipPos(this, pos);\n var markers = [], spans = getLine(this, pos.line).markedSpans;\n if (spans) { for (var i = 0; i < spans.length; ++i) {\n var span = spans[i];\n if ((span.from == null || span.from <= pos.ch) &&\n (span.to == null || span.to >= pos.ch))\n { markers.push(span.marker.parent || span.marker); }\n } }\n return markers\n },\n findMarks: function(from, to, filter) {\n from = clipPos(this, from); to = clipPos(this, to);\n var found = [], lineNo = from.line;\n this.iter(from.line, to.line + 1, function (line) {\n var spans = line.markedSpans;\n if (spans) { for (var i = 0; i < spans.length; i++) {\n var span = spans[i];\n if (!(span.to != null && lineNo == from.line && from.ch >= span.to ||\n span.from == null && lineNo != from.line ||\n span.from != null && lineNo == to.line && span.from >= to.ch) &&\n (!filter || filter(span.marker)))\n { found.push(span.marker.parent || span.marker); }\n } }\n ++lineNo;\n });\n return found\n },\n getAllMarks: function() {\n var markers = [];\n this.iter(function (line) {\n var sps = line.markedSpans;\n if (sps) { for (var i = 0; i < sps.length; ++i)\n { if (sps[i].from != null) { markers.push(sps[i].marker); } } }\n });\n return markers\n },\n\n posFromIndex: function(off) {\n var ch, lineNo = this.first, sepSize = this.lineSeparator().length;\n this.iter(function (line) {\n var sz = line.text.length + sepSize;\n if (sz > off) { ch = off; return true }\n off -= sz;\n ++lineNo;\n });\n return clipPos(this, Pos(lineNo, ch))\n },\n indexFromPos: function (coords) {\n coords = clipPos(this, coords);\n var index = coords.ch;\n if (coords.line < this.first || coords.ch < 0) { return 0 }\n var sepSize = this.lineSeparator().length;\n this.iter(this.first, coords.line, function (line) { // iter aborts when callback returns a truthy value\n index += line.text.length + sepSize;\n });\n return index\n },\n\n copy: function(copyHistory) {\n var doc = new Doc(getLines(this, this.first, this.first + this.size),\n this.modeOption, this.first, this.lineSep, this.direction);\n doc.scrollTop = this.scrollTop; doc.scrollLeft = this.scrollLeft;\n doc.sel = this.sel;\n doc.extend = false;\n if (copyHistory) {\n doc.history.undoDepth = this.history.undoDepth;\n doc.setHistory(this.getHistory());\n }\n return doc\n },\n\n linkedDoc: function(options) {\n if (!options) { options = {}; }\n var from = this.first, to = this.first + this.size;\n if (options.from != null && options.from > from) { from = options.from; }\n if (options.to != null && options.to < to) { to = options.to; }\n var copy = new Doc(getLines(this, from, to), options.mode || this.modeOption, from, this.lineSep, this.direction);\n if (options.sharedHist) { copy.history = this.history\n ; }(this.linked || (this.linked = [])).push({doc: copy, sharedHist: options.sharedHist});\n copy.linked = [{doc: this, isParent: true, sharedHist: options.sharedHist}];\n copySharedMarkers(copy, findSharedMarkers(this));\n return copy\n },\n unlinkDoc: function(other) {\n if (other instanceof CodeMirror) { other = other.doc; }\n if (this.linked) { for (var i = 0; i < this.linked.length; ++i) {\n var link = this.linked[i];\n if (link.doc != other) { continue }\n this.linked.splice(i, 1);\n other.unlinkDoc(this);\n detachSharedMarkers(findSharedMarkers(this));\n break\n } }\n // If the histories were shared, split them again\n if (other.history == this.history) {\n var splitIds = [other.id];\n linkedDocs(other, function (doc) { return splitIds.push(doc.id); }, true);\n other.history = new History(null);\n other.history.done = copyHistoryArray(this.history.done, splitIds);\n other.history.undone = copyHistoryArray(this.history.undone, splitIds);\n }\n },\n iterLinkedDocs: function(f) {linkedDocs(this, f);},\n\n getMode: function() {return this.mode},\n getEditor: function() {return this.cm},\n\n splitLines: function(str) {\n if (this.lineSep) { return str.split(this.lineSep) }\n return splitLinesAuto(str)\n },\n lineSeparator: function() { return this.lineSep || \"\\n\" },\n\n setDirection: docMethodOp(function (dir) {\n if (dir != \"rtl\") { dir = \"ltr\"; }\n if (dir == this.direction) { return }\n this.direction = dir;\n this.iter(function (line) { return line.order = null; });\n if (this.cm) { directionChanged(this.cm); }\n })\n });\n\n // Public alias.\n Doc.prototype.eachLine = Doc.prototype.iter;\n\n // Kludge to work around strange IE behavior where it'll sometimes\n // re-fire a series of drag-related events right after the drop (#1551)\n var lastDrop = 0;\n\n function onDrop(e) {\n var cm = this;\n clearDragCursor(cm);\n if (signalDOMEvent(cm, e) || eventInWidget(cm.display, e))\n { return }\n e_preventDefault(e);\n if (ie) { lastDrop = +new Date; }\n var pos = posFromMouse(cm, e, true), files = e.dataTransfer.files;\n if (!pos || cm.isReadOnly()) { return }\n // Might be a file drop, in which case we simply extract the text\n // and insert it.\n if (files && files.length && window.FileReader && window.File) {\n var n = files.length, text = Array(n), read = 0;\n var markAsReadAndPasteIfAllFilesAreRead = function () {\n if (++read == n) {\n operation(cm, function () {\n pos = clipPos(cm.doc, pos);\n var change = {from: pos, to: pos,\n text: cm.doc.splitLines(\n text.filter(function (t) { return t != null; }).join(cm.doc.lineSeparator())),\n origin: \"paste\"};\n makeChange(cm.doc, change);\n setSelectionReplaceHistory(cm.doc, simpleSelection(clipPos(cm.doc, pos), clipPos(cm.doc, changeEnd(change))));\n })();\n }\n };\n var readTextFromFile = function (file, i) {\n if (cm.options.allowDropFileTypes &&\n indexOf(cm.options.allowDropFileTypes, file.type) == -1) {\n markAsReadAndPasteIfAllFilesAreRead();\n return\n }\n var reader = new FileReader;\n reader.onerror = function () { return markAsReadAndPasteIfAllFilesAreRead(); };\n reader.onload = function () {\n var content = reader.result;\n if (/[\\x00-\\x08\\x0e-\\x1f]{2}/.test(content)) {\n markAsReadAndPasteIfAllFilesAreRead();\n return\n }\n text[i] = content;\n markAsReadAndPasteIfAllFilesAreRead();\n };\n reader.readAsText(file);\n };\n for (var i = 0; i < files.length; i++) { readTextFromFile(files[i], i); }\n } else { // Normal drop\n // Don't do a replace if the drop happened inside of the selected text.\n if (cm.state.draggingText && cm.doc.sel.contains(pos) > -1) {\n cm.state.draggingText(e);\n // Ensure the editor is re-focused\n setTimeout(function () { return cm.display.input.focus(); }, 20);\n return\n }\n try {\n var text$1 = e.dataTransfer.getData(\"Text\");\n if (text$1) {\n var selected;\n if (cm.state.draggingText && !cm.state.draggingText.copy)\n { selected = cm.listSelections(); }\n setSelectionNoUndo(cm.doc, simpleSelection(pos, pos));\n if (selected) { for (var i$1 = 0; i$1 < selected.length; ++i$1)\n { replaceRange(cm.doc, \"\", selected[i$1].anchor, selected[i$1].head, \"drag\"); } }\n cm.replaceSelection(text$1, \"around\", \"paste\");\n cm.display.input.focus();\n }\n }\n catch(e$1){}\n }\n }\n\n function onDragStart(cm, e) {\n if (ie && (!cm.state.draggingText || +new Date - lastDrop < 100)) { e_stop(e); return }\n if (signalDOMEvent(cm, e) || eventInWidget(cm.display, e)) { return }\n\n e.dataTransfer.setData(\"Text\", cm.getSelection());\n e.dataTransfer.effectAllowed = \"copyMove\";\n\n // Use dummy image instead of default browsers image.\n // Recent Safari (~6.0.2) have a tendency to segfault when this happens, so we don't do it there.\n if (e.dataTransfer.setDragImage && !safari) {\n var img = elt(\"img\", null, null, \"position: fixed; left: 0; top: 0;\");\n img.src = \"data:image/gif;base64,R0lGODlhAQABAAAAACH5BAEKAAEALAAAAAABAAEAAAICTAEAOw==\";\n if (presto) {\n img.width = img.height = 1;\n cm.display.wrapper.appendChild(img);\n // Force a relayout, or Opera won't use our image for some obscure reason\n img._top = img.offsetTop;\n }\n e.dataTransfer.setDragImage(img, 0, 0);\n if (presto) { img.parentNode.removeChild(img); }\n }\n }\n\n function onDragOver(cm, e) {\n var pos = posFromMouse(cm, e);\n if (!pos) { return }\n var frag = document.createDocumentFragment();\n drawSelectionCursor(cm, pos, frag);\n if (!cm.display.dragCursor) {\n cm.display.dragCursor = elt(\"div\", null, \"CodeMirror-cursors CodeMirror-dragcursors\");\n cm.display.lineSpace.insertBefore(cm.display.dragCursor, cm.display.cursorDiv);\n }\n removeChildrenAndAdd(cm.display.dragCursor, frag);\n }\n\n function clearDragCursor(cm) {\n if (cm.display.dragCursor) {\n cm.display.lineSpace.removeChild(cm.display.dragCursor);\n cm.display.dragCursor = null;\n }\n }\n\n // These must be handled carefully, because naively registering a\n // handler for each editor will cause the editors to never be\n // garbage collected.\n\n function forEachCodeMirror(f) {\n if (!document.getElementsByClassName) { return }\n var byClass = document.getElementsByClassName(\"CodeMirror\"), editors = [];\n for (var i = 0; i < byClass.length; i++) {\n var cm = byClass[i].CodeMirror;\n if (cm) { editors.push(cm); }\n }\n if (editors.length) { editors[0].operation(function () {\n for (var i = 0; i < editors.length; i++) { f(editors[i]); }\n }); }\n }\n\n var globalsRegistered = false;\n function ensureGlobalHandlers() {\n if (globalsRegistered) { return }\n registerGlobalHandlers();\n globalsRegistered = true;\n }\n function registerGlobalHandlers() {\n // When the window resizes, we need to refresh active editors.\n var resizeTimer;\n on(window, \"resize\", function () {\n if (resizeTimer == null) { resizeTimer = setTimeout(function () {\n resizeTimer = null;\n forEachCodeMirror(onResize);\n }, 100); }\n });\n // When the window loses focus, we want to show the editor as blurred\n on(window, \"blur\", function () { return forEachCodeMirror(onBlur); });\n }\n // Called when the window resizes\n function onResize(cm) {\n var d = cm.display;\n // Might be a text scaling operation, clear size caches.\n d.cachedCharWidth = d.cachedTextHeight = d.cachedPaddingH = null;\n d.scrollbarsClipped = false;\n cm.setSize();\n }\n\n var keyNames = {\n 3: \"Pause\", 8: \"Backspace\", 9: \"Tab\", 13: \"Enter\", 16: \"Shift\", 17: \"Ctrl\", 18: \"Alt\",\n 19: \"Pause\", 20: \"CapsLock\", 27: \"Esc\", 32: \"Space\", 33: \"PageUp\", 34: \"PageDown\", 35: \"End\",\n 36: \"Home\", 37: \"Left\", 38: \"Up\", 39: \"Right\", 40: \"Down\", 44: \"PrintScrn\", 45: \"Insert\",\n 46: \"Delete\", 59: \";\", 61: \"=\", 91: \"Mod\", 92: \"Mod\", 93: \"Mod\",\n 106: \"*\", 107: \"=\", 109: \"-\", 110: \".\", 111: \"/\", 145: \"ScrollLock\",\n 173: \"-\", 186: \";\", 187: \"=\", 188: \",\", 189: \"-\", 190: \".\", 191: \"/\", 192: \"`\", 219: \"[\", 220: \"\\\\\",\n 221: \"]\", 222: \"'\", 224: \"Mod\", 63232: \"Up\", 63233: \"Down\", 63234: \"Left\", 63235: \"Right\", 63272: \"Delete\",\n 63273: \"Home\", 63275: \"End\", 63276: \"PageUp\", 63277: \"PageDown\", 63302: \"Insert\"\n };\n\n // Number keys\n for (var i = 0; i < 10; i++) { keyNames[i + 48] = keyNames[i + 96] = String(i); }\n // Alphabetic keys\n for (var i$1 = 65; i$1 <= 90; i$1++) { keyNames[i$1] = String.fromCharCode(i$1); }\n // Function keys\n for (var i$2 = 1; i$2 <= 12; i$2++) { keyNames[i$2 + 111] = keyNames[i$2 + 63235] = \"F\" + i$2; }\n\n var keyMap = {};\n\n keyMap.basic = {\n \"Left\": \"goCharLeft\", \"Right\": \"goCharRight\", \"Up\": \"goLineUp\", \"Down\": \"goLineDown\",\n \"End\": \"goLineEnd\", \"Home\": \"goLineStartSmart\", \"PageUp\": \"goPageUp\", \"PageDown\": \"goPageDown\",\n \"Delete\": \"delCharAfter\", \"Backspace\": \"delCharBefore\", \"Shift-Backspace\": \"delCharBefore\",\n \"Tab\": \"defaultTab\", \"Shift-Tab\": \"indentAuto\",\n \"Enter\": \"newlineAndIndent\", \"Insert\": \"toggleOverwrite\",\n \"Esc\": \"singleSelection\"\n };\n // Note that the save and find-related commands aren't defined by\n // default. User code or addons can define them. Unknown commands\n // are simply ignored.\n keyMap.pcDefault = {\n \"Ctrl-A\": \"selectAll\", \"Ctrl-D\": \"deleteLine\", \"Ctrl-Z\": \"undo\", \"Shift-Ctrl-Z\": \"redo\", \"Ctrl-Y\": \"redo\",\n \"Ctrl-Home\": \"goDocStart\", \"Ctrl-End\": \"goDocEnd\", \"Ctrl-Up\": \"goLineUp\", \"Ctrl-Down\": \"goLineDown\",\n \"Ctrl-Left\": \"goGroupLeft\", \"Ctrl-Right\": \"goGroupRight\", \"Alt-Left\": \"goLineStart\", \"Alt-Right\": \"goLineEnd\",\n \"Ctrl-Backspace\": \"delGroupBefore\", \"Ctrl-Delete\": \"delGroupAfter\", \"Ctrl-S\": \"save\", \"Ctrl-F\": \"find\",\n \"Ctrl-G\": \"findNext\", \"Shift-Ctrl-G\": \"findPrev\", \"Shift-Ctrl-F\": \"replace\", \"Shift-Ctrl-R\": \"replaceAll\",\n \"Ctrl-[\": \"indentLess\", \"Ctrl-]\": \"indentMore\",\n \"Ctrl-U\": \"undoSelection\", \"Shift-Ctrl-U\": \"redoSelection\", \"Alt-U\": \"redoSelection\",\n \"fallthrough\": \"basic\"\n };\n // Very basic readline/emacs-style bindings, which are standard on Mac.\n keyMap.emacsy = {\n \"Ctrl-F\": \"goCharRight\", \"Ctrl-B\": \"goCharLeft\", \"Ctrl-P\": \"goLineUp\", \"Ctrl-N\": \"goLineDown\",\n \"Ctrl-A\": \"goLineStart\", \"Ctrl-E\": \"goLineEnd\", \"Ctrl-V\": \"goPageDown\", \"Shift-Ctrl-V\": \"goPageUp\",\n \"Ctrl-D\": \"delCharAfter\", \"Ctrl-H\": \"delCharBefore\", \"Alt-Backspace\": \"delWordBefore\", \"Ctrl-K\": \"killLine\",\n \"Ctrl-T\": \"transposeChars\", \"Ctrl-O\": \"openLine\"\n };\n keyMap.macDefault = {\n \"Cmd-A\": \"selectAll\", \"Cmd-D\": \"deleteLine\", \"Cmd-Z\": \"undo\", \"Shift-Cmd-Z\": \"redo\", \"Cmd-Y\": \"redo\",\n \"Cmd-Home\": \"goDocStart\", \"Cmd-Up\": \"goDocStart\", \"Cmd-End\": \"goDocEnd\", \"Cmd-Down\": \"goDocEnd\", \"Alt-Left\": \"goGroupLeft\",\n \"Alt-Right\": \"goGroupRight\", \"Cmd-Left\": \"goLineLeft\", \"Cmd-Right\": \"goLineRight\", \"Alt-Backspace\": \"delGroupBefore\",\n \"Ctrl-Alt-Backspace\": \"delGroupAfter\", \"Alt-Delete\": \"delGroupAfter\", \"Cmd-S\": \"save\", \"Cmd-F\": \"find\",\n \"Cmd-G\": \"findNext\", \"Shift-Cmd-G\": \"findPrev\", \"Cmd-Alt-F\": \"replace\", \"Shift-Cmd-Alt-F\": \"replaceAll\",\n \"Cmd-[\": \"indentLess\", \"Cmd-]\": \"indentMore\", \"Cmd-Backspace\": \"delWrappedLineLeft\", \"Cmd-Delete\": \"delWrappedLineRight\",\n \"Cmd-U\": \"undoSelection\", \"Shift-Cmd-U\": \"redoSelection\", \"Ctrl-Up\": \"goDocStart\", \"Ctrl-Down\": \"goDocEnd\",\n \"fallthrough\": [\"basic\", \"emacsy\"]\n };\n keyMap[\"default\"] = mac ? keyMap.macDefault : keyMap.pcDefault;\n\n // KEYMAP DISPATCH\n\n function normalizeKeyName(name) {\n var parts = name.split(/-(?!$)/);\n name = parts[parts.length - 1];\n var alt, ctrl, shift, cmd;\n for (var i = 0; i < parts.length - 1; i++) {\n var mod = parts[i];\n if (/^(cmd|meta|m)$/i.test(mod)) { cmd = true; }\n else if (/^a(lt)?$/i.test(mod)) { alt = true; }\n else if (/^(c|ctrl|control)$/i.test(mod)) { ctrl = true; }\n else if (/^s(hift)?$/i.test(mod)) { shift = true; }\n else { throw new Error(\"Unrecognized modifier name: \" + mod) }\n }\n if (alt) { name = \"Alt-\" + name; }\n if (ctrl) { name = \"Ctrl-\" + name; }\n if (cmd) { name = \"Cmd-\" + name; }\n if (shift) { name = \"Shift-\" + name; }\n return name\n }\n\n // This is a kludge to keep keymaps mostly working as raw objects\n // (backwards compatibility) while at the same time support features\n // like normalization and multi-stroke key bindings. It compiles a\n // new normalized keymap, and then updates the old object to reflect\n // this.\n function normalizeKeyMap(keymap) {\n var copy = {};\n for (var keyname in keymap) { if (keymap.hasOwnProperty(keyname)) {\n var value = keymap[keyname];\n if (/^(name|fallthrough|(de|at)tach)$/.test(keyname)) { continue }\n if (value == \"...\") { delete keymap[keyname]; continue }\n\n var keys = map(keyname.split(\" \"), normalizeKeyName);\n for (var i = 0; i < keys.length; i++) {\n var val = (void 0), name = (void 0);\n if (i == keys.length - 1) {\n name = keys.join(\" \");\n val = value;\n } else {\n name = keys.slice(0, i + 1).join(\" \");\n val = \"...\";\n }\n var prev = copy[name];\n if (!prev) { copy[name] = val; }\n else if (prev != val) { throw new Error(\"Inconsistent bindings for \" + name) }\n }\n delete keymap[keyname];\n } }\n for (var prop in copy) { keymap[prop] = copy[prop]; }\n return keymap\n }\n\n function lookupKey(key, map, handle, context) {\n map = getKeyMap(map);\n var found = map.call ? map.call(key, context) : map[key];\n if (found === false) { return \"nothing\" }\n if (found === \"...\") { return \"multi\" }\n if (found != null && handle(found)) { return \"handled\" }\n\n if (map.fallthrough) {\n if (Object.prototype.toString.call(map.fallthrough) != \"[object Array]\")\n { return lookupKey(key, map.fallthrough, handle, context) }\n for (var i = 0; i < map.fallthrough.length; i++) {\n var result = lookupKey(key, map.fallthrough[i], handle, context);\n if (result) { return result }\n }\n }\n }\n\n // Modifier key presses don't count as 'real' key presses for the\n // purpose of keymap fallthrough.\n function isModifierKey(value) {\n var name = typeof value == \"string\" ? value : keyNames[value.keyCode];\n return name == \"Ctrl\" || name == \"Alt\" || name == \"Shift\" || name == \"Mod\"\n }\n\n function addModifierNames(name, event, noShift) {\n var base = name;\n if (event.altKey && base != \"Alt\") { name = \"Alt-\" + name; }\n if ((flipCtrlCmd ? event.metaKey : event.ctrlKey) && base != \"Ctrl\") { name = \"Ctrl-\" + name; }\n if ((flipCtrlCmd ? event.ctrlKey : event.metaKey) && base != \"Mod\") { name = \"Cmd-\" + name; }\n if (!noShift && event.shiftKey && base != \"Shift\") { name = \"Shift-\" + name; }\n return name\n }\n\n // Look up the name of a key as indicated by an event object.\n function keyName(event, noShift) {\n if (presto && event.keyCode == 34 && event[\"char\"]) { return false }\n var name = keyNames[event.keyCode];\n if (name == null || event.altGraphKey) { return false }\n // Ctrl-ScrollLock has keyCode 3, same as Ctrl-Pause,\n // so we'll use event.code when available (Chrome 48+, FF 38+, Safari 10.1+)\n if (event.keyCode == 3 && event.code) { name = event.code; }\n return addModifierNames(name, event, noShift)\n }\n\n function getKeyMap(val) {\n return typeof val == \"string\" ? keyMap[val] : val\n }\n\n // Helper for deleting text near the selection(s), used to implement\n // backspace, delete, and similar functionality.\n function deleteNearSelection(cm, compute) {\n var ranges = cm.doc.sel.ranges, kill = [];\n // Build up a set of ranges to kill first, merging overlapping\n // ranges.\n for (var i = 0; i < ranges.length; i++) {\n var toKill = compute(ranges[i]);\n while (kill.length && cmp(toKill.from, lst(kill).to) <= 0) {\n var replaced = kill.pop();\n if (cmp(replaced.from, toKill.from) < 0) {\n toKill.from = replaced.from;\n break\n }\n }\n kill.push(toKill);\n }\n // Next, remove those actual ranges.\n runInOp(cm, function () {\n for (var i = kill.length - 1; i >= 0; i--)\n { replaceRange(cm.doc, \"\", kill[i].from, kill[i].to, \"+delete\"); }\n ensureCursorVisible(cm);\n });\n }\n\n function moveCharLogically(line, ch, dir) {\n var target = skipExtendingChars(line.text, ch + dir, dir);\n return target < 0 || target > line.text.length ? null : target\n }\n\n function moveLogically(line, start, dir) {\n var ch = moveCharLogically(line, start.ch, dir);\n return ch == null ? null : new Pos(start.line, ch, dir < 0 ? \"after\" : \"before\")\n }\n\n function endOfLine(visually, cm, lineObj, lineNo, dir) {\n if (visually) {\n if (cm.doc.direction == \"rtl\") { dir = -dir; }\n var order = getOrder(lineObj, cm.doc.direction);\n if (order) {\n var part = dir < 0 ? lst(order) : order[0];\n var moveInStorageOrder = (dir < 0) == (part.level == 1);\n var sticky = moveInStorageOrder ? \"after\" : \"before\";\n var ch;\n // With a wrapped rtl chunk (possibly spanning multiple bidi parts),\n // it could be that the last bidi part is not on the last visual line,\n // since visual lines contain content order-consecutive chunks.\n // Thus, in rtl, we are looking for the first (content-order) character\n // in the rtl chunk that is on the last line (that is, the same line\n // as the last (content-order) character).\n if (part.level > 0 || cm.doc.direction == \"rtl\") {\n var prep = prepareMeasureForLine(cm, lineObj);\n ch = dir < 0 ? lineObj.text.length - 1 : 0;\n var targetTop = measureCharPrepared(cm, prep, ch).top;\n ch = findFirst(function (ch) { return measureCharPrepared(cm, prep, ch).top == targetTop; }, (dir < 0) == (part.level == 1) ? part.from : part.to - 1, ch);\n if (sticky == \"before\") { ch = moveCharLogically(lineObj, ch, 1); }\n } else { ch = dir < 0 ? part.to : part.from; }\n return new Pos(lineNo, ch, sticky)\n }\n }\n return new Pos(lineNo, dir < 0 ? lineObj.text.length : 0, dir < 0 ? \"before\" : \"after\")\n }\n\n function moveVisually(cm, line, start, dir) {\n var bidi = getOrder(line, cm.doc.direction);\n if (!bidi) { return moveLogically(line, start, dir) }\n if (start.ch >= line.text.length) {\n start.ch = line.text.length;\n start.sticky = \"before\";\n } else if (start.ch <= 0) {\n start.ch = 0;\n start.sticky = \"after\";\n }\n var partPos = getBidiPartAt(bidi, start.ch, start.sticky), part = bidi[partPos];\n if (cm.doc.direction == \"ltr\" && part.level % 2 == 0 && (dir > 0 ? part.to > start.ch : part.from < start.ch)) {\n // Case 1: We move within an ltr part in an ltr editor. Even with wrapped lines,\n // nothing interesting happens.\n return moveLogically(line, start, dir)\n }\n\n var mv = function (pos, dir) { return moveCharLogically(line, pos instanceof Pos ? pos.ch : pos, dir); };\n var prep;\n var getWrappedLineExtent = function (ch) {\n if (!cm.options.lineWrapping) { return {begin: 0, end: line.text.length} }\n prep = prep || prepareMeasureForLine(cm, line);\n return wrappedLineExtentChar(cm, line, prep, ch)\n };\n var wrappedLineExtent = getWrappedLineExtent(start.sticky == \"before\" ? mv(start, -1) : start.ch);\n\n if (cm.doc.direction == \"rtl\" || part.level == 1) {\n var moveInStorageOrder = (part.level == 1) == (dir < 0);\n var ch = mv(start, moveInStorageOrder ? 1 : -1);\n if (ch != null && (!moveInStorageOrder ? ch >= part.from && ch >= wrappedLineExtent.begin : ch <= part.to && ch <= wrappedLineExtent.end)) {\n // Case 2: We move within an rtl part or in an rtl editor on the same visual line\n var sticky = moveInStorageOrder ? \"before\" : \"after\";\n return new Pos(start.line, ch, sticky)\n }\n }\n\n // Case 3: Could not move within this bidi part in this visual line, so leave\n // the current bidi part\n\n var searchInVisualLine = function (partPos, dir, wrappedLineExtent) {\n var getRes = function (ch, moveInStorageOrder) { return moveInStorageOrder\n ? new Pos(start.line, mv(ch, 1), \"before\")\n : new Pos(start.line, ch, \"after\"); };\n\n for (; partPos >= 0 && partPos < bidi.length; partPos += dir) {\n var part = bidi[partPos];\n var moveInStorageOrder = (dir > 0) == (part.level != 1);\n var ch = moveInStorageOrder ? wrappedLineExtent.begin : mv(wrappedLineExtent.end, -1);\n if (part.from <= ch && ch < part.to) { return getRes(ch, moveInStorageOrder) }\n ch = moveInStorageOrder ? part.from : mv(part.to, -1);\n if (wrappedLineExtent.begin <= ch && ch < wrappedLineExtent.end) { return getRes(ch, moveInStorageOrder) }\n }\n };\n\n // Case 3a: Look for other bidi parts on the same visual line\n var res = searchInVisualLine(partPos + dir, dir, wrappedLineExtent);\n if (res) { return res }\n\n // Case 3b: Look for other bidi parts on the next visual line\n var nextCh = dir > 0 ? wrappedLineExtent.end : mv(wrappedLineExtent.begin, -1);\n if (nextCh != null && !(dir > 0 && nextCh == line.text.length)) {\n res = searchInVisualLine(dir > 0 ? 0 : bidi.length - 1, dir, getWrappedLineExtent(nextCh));\n if (res) { return res }\n }\n\n // Case 4: Nowhere to move\n return null\n }\n\n // Commands are parameter-less actions that can be performed on an\n // editor, mostly used for keybindings.\n var commands = {\n selectAll: selectAll,\n singleSelection: function (cm) { return cm.setSelection(cm.getCursor(\"anchor\"), cm.getCursor(\"head\"), sel_dontScroll); },\n killLine: function (cm) { return deleteNearSelection(cm, function (range) {\n if (range.empty()) {\n var len = getLine(cm.doc, range.head.line).text.length;\n if (range.head.ch == len && range.head.line < cm.lastLine())\n { return {from: range.head, to: Pos(range.head.line + 1, 0)} }\n else\n { return {from: range.head, to: Pos(range.head.line, len)} }\n } else {\n return {from: range.from(), to: range.to()}\n }\n }); },\n deleteLine: function (cm) { return deleteNearSelection(cm, function (range) { return ({\n from: Pos(range.from().line, 0),\n to: clipPos(cm.doc, Pos(range.to().line + 1, 0))\n }); }); },\n delLineLeft: function (cm) { return deleteNearSelection(cm, function (range) { return ({\n from: Pos(range.from().line, 0), to: range.from()\n }); }); },\n delWrappedLineLeft: function (cm) { return deleteNearSelection(cm, function (range) {\n var top = cm.charCoords(range.head, \"div\").top + 5;\n var leftPos = cm.coordsChar({left: 0, top: top}, \"div\");\n return {from: leftPos, to: range.from()}\n }); },\n delWrappedLineRight: function (cm) { return deleteNearSelection(cm, function (range) {\n var top = cm.charCoords(range.head, \"div\").top + 5;\n var rightPos = cm.coordsChar({left: cm.display.lineDiv.offsetWidth + 100, top: top}, \"div\");\n return {from: range.from(), to: rightPos }\n }); },\n undo: function (cm) { return cm.undo(); },\n redo: function (cm) { return cm.redo(); },\n undoSelection: function (cm) { return cm.undoSelection(); },\n redoSelection: function (cm) { return cm.redoSelection(); },\n goDocStart: function (cm) { return cm.extendSelection(Pos(cm.firstLine(), 0)); },\n goDocEnd: function (cm) { return cm.extendSelection(Pos(cm.lastLine())); },\n goLineStart: function (cm) { return cm.extendSelectionsBy(function (range) { return lineStart(cm, range.head.line); },\n {origin: \"+move\", bias: 1}\n ); },\n goLineStartSmart: function (cm) { return cm.extendSelectionsBy(function (range) { return lineStartSmart(cm, range.head); },\n {origin: \"+move\", bias: 1}\n ); },\n goLineEnd: function (cm) { return cm.extendSelectionsBy(function (range) { return lineEnd(cm, range.head.line); },\n {origin: \"+move\", bias: -1}\n ); },\n goLineRight: function (cm) { return cm.extendSelectionsBy(function (range) {\n var top = cm.cursorCoords(range.head, \"div\").top + 5;\n return cm.coordsChar({left: cm.display.lineDiv.offsetWidth + 100, top: top}, \"div\")\n }, sel_move); },\n goLineLeft: function (cm) { return cm.extendSelectionsBy(function (range) {\n var top = cm.cursorCoords(range.head, \"div\").top + 5;\n return cm.coordsChar({left: 0, top: top}, \"div\")\n }, sel_move); },\n goLineLeftSmart: function (cm) { return cm.extendSelectionsBy(function (range) {\n var top = cm.cursorCoords(range.head, \"div\").top + 5;\n var pos = cm.coordsChar({left: 0, top: top}, \"div\");\n if (pos.ch < cm.getLine(pos.line).search(/\\S/)) { return lineStartSmart(cm, range.head) }\n return pos\n }, sel_move); },\n goLineUp: function (cm) { return cm.moveV(-1, \"line\"); },\n goLineDown: function (cm) { return cm.moveV(1, \"line\"); },\n goPageUp: function (cm) { return cm.moveV(-1, \"page\"); },\n goPageDown: function (cm) { return cm.moveV(1, \"page\"); },\n goCharLeft: function (cm) { return cm.moveH(-1, \"char\"); },\n goCharRight: function (cm) { return cm.moveH(1, \"char\"); },\n goColumnLeft: function (cm) { return cm.moveH(-1, \"column\"); },\n goColumnRight: function (cm) { return cm.moveH(1, \"column\"); },\n goWordLeft: function (cm) { return cm.moveH(-1, \"word\"); },\n goGroupRight: function (cm) { return cm.moveH(1, \"group\"); },\n goGroupLeft: function (cm) { return cm.moveH(-1, \"group\"); },\n goWordRight: function (cm) { return cm.moveH(1, \"word\"); },\n delCharBefore: function (cm) { return cm.deleteH(-1, \"codepoint\"); },\n delCharAfter: function (cm) { return cm.deleteH(1, \"char\"); },\n delWordBefore: function (cm) { return cm.deleteH(-1, \"word\"); },\n delWordAfter: function (cm) { return cm.deleteH(1, \"word\"); },\n delGroupBefore: function (cm) { return cm.deleteH(-1, \"group\"); },\n delGroupAfter: function (cm) { return cm.deleteH(1, \"group\"); },\n indentAuto: function (cm) { return cm.indentSelection(\"smart\"); },\n indentMore: function (cm) { return cm.indentSelection(\"add\"); },\n indentLess: function (cm) { return cm.indentSelection(\"subtract\"); },\n insertTab: function (cm) { return cm.replaceSelection(\"\\t\"); },\n insertSoftTab: function (cm) {\n var spaces = [], ranges = cm.listSelections(), tabSize = cm.options.tabSize;\n for (var i = 0; i < ranges.length; i++) {\n var pos = ranges[i].from();\n var col = countColumn(cm.getLine(pos.line), pos.ch, tabSize);\n spaces.push(spaceStr(tabSize - col % tabSize));\n }\n cm.replaceSelections(spaces);\n },\n defaultTab: function (cm) {\n if (cm.somethingSelected()) { cm.indentSelection(\"add\"); }\n else { cm.execCommand(\"insertTab\"); }\n },\n // Swap the two chars left and right of each selection's head.\n // Move cursor behind the two swapped characters afterwards.\n //\n // Doesn't consider line feeds a character.\n // Doesn't scan more than one line above to find a character.\n // Doesn't do anything on an empty line.\n // Doesn't do anything with non-empty selections.\n transposeChars: function (cm) { return runInOp(cm, function () {\n var ranges = cm.listSelections(), newSel = [];\n for (var i = 0; i < ranges.length; i++) {\n if (!ranges[i].empty()) { continue }\n var cur = ranges[i].head, line = getLine(cm.doc, cur.line).text;\n if (line) {\n if (cur.ch == line.length) { cur = new Pos(cur.line, cur.ch - 1); }\n if (cur.ch > 0) {\n cur = new Pos(cur.line, cur.ch + 1);\n cm.replaceRange(line.charAt(cur.ch - 1) + line.charAt(cur.ch - 2),\n Pos(cur.line, cur.ch - 2), cur, \"+transpose\");\n } else if (cur.line > cm.doc.first) {\n var prev = getLine(cm.doc, cur.line - 1).text;\n if (prev) {\n cur = new Pos(cur.line, 1);\n cm.replaceRange(line.charAt(0) + cm.doc.lineSeparator() +\n prev.charAt(prev.length - 1),\n Pos(cur.line - 1, prev.length - 1), cur, \"+transpose\");\n }\n }\n }\n newSel.push(new Range(cur, cur));\n }\n cm.setSelections(newSel);\n }); },\n newlineAndIndent: function (cm) { return runInOp(cm, function () {\n var sels = cm.listSelections();\n for (var i = sels.length - 1; i >= 0; i--)\n { cm.replaceRange(cm.doc.lineSeparator(), sels[i].anchor, sels[i].head, \"+input\"); }\n sels = cm.listSelections();\n for (var i$1 = 0; i$1 < sels.length; i$1++)\n { cm.indentLine(sels[i$1].from().line, null, true); }\n ensureCursorVisible(cm);\n }); },\n openLine: function (cm) { return cm.replaceSelection(\"\\n\", \"start\"); },\n toggleOverwrite: function (cm) { return cm.toggleOverwrite(); }\n };\n\n\n function lineStart(cm, lineN) {\n var line = getLine(cm.doc, lineN);\n var visual = visualLine(line);\n if (visual != line) { lineN = lineNo(visual); }\n return endOfLine(true, cm, visual, lineN, 1)\n }\n function lineEnd(cm, lineN) {\n var line = getLine(cm.doc, lineN);\n var visual = visualLineEnd(line);\n if (visual != line) { lineN = lineNo(visual); }\n return endOfLine(true, cm, line, lineN, -1)\n }\n function lineStartSmart(cm, pos) {\n var start = lineStart(cm, pos.line);\n var line = getLine(cm.doc, start.line);\n var order = getOrder(line, cm.doc.direction);\n if (!order || order[0].level == 0) {\n var firstNonWS = Math.max(start.ch, line.text.search(/\\S/));\n var inWS = pos.line == start.line && pos.ch <= firstNonWS && pos.ch;\n return Pos(start.line, inWS ? 0 : firstNonWS, start.sticky)\n }\n return start\n }\n\n // Run a handler that was bound to a key.\n function doHandleBinding(cm, bound, dropShift) {\n if (typeof bound == \"string\") {\n bound = commands[bound];\n if (!bound) { return false }\n }\n // Ensure previous input has been read, so that the handler sees a\n // consistent view of the document\n cm.display.input.ensurePolled();\n var prevShift = cm.display.shift, done = false;\n try {\n if (cm.isReadOnly()) { cm.state.suppressEdits = true; }\n if (dropShift) { cm.display.shift = false; }\n done = bound(cm) != Pass;\n } finally {\n cm.display.shift = prevShift;\n cm.state.suppressEdits = false;\n }\n return done\n }\n\n function lookupKeyForEditor(cm, name, handle) {\n for (var i = 0; i < cm.state.keyMaps.length; i++) {\n var result = lookupKey(name, cm.state.keyMaps[i], handle, cm);\n if (result) { return result }\n }\n return (cm.options.extraKeys && lookupKey(name, cm.options.extraKeys, handle, cm))\n || lookupKey(name, cm.options.keyMap, handle, cm)\n }\n\n // Note that, despite the name, this function is also used to check\n // for bound mouse clicks.\n\n var stopSeq = new Delayed;\n\n function dispatchKey(cm, name, e, handle) {\n var seq = cm.state.keySeq;\n if (seq) {\n if (isModifierKey(name)) { return \"handled\" }\n if (/\\'$/.test(name))\n { cm.state.keySeq = null; }\n else\n { stopSeq.set(50, function () {\n if (cm.state.keySeq == seq) {\n cm.state.keySeq = null;\n cm.display.input.reset();\n }\n }); }\n if (dispatchKeyInner(cm, seq + \" \" + name, e, handle)) { return true }\n }\n return dispatchKeyInner(cm, name, e, handle)\n }\n\n function dispatchKeyInner(cm, name, e, handle) {\n var result = lookupKeyForEditor(cm, name, handle);\n\n if (result == \"multi\")\n { cm.state.keySeq = name; }\n if (result == \"handled\")\n { signalLater(cm, \"keyHandled\", cm, name, e); }\n\n if (result == \"handled\" || result == \"multi\") {\n e_preventDefault(e);\n restartBlink(cm);\n }\n\n return !!result\n }\n\n // Handle a key from the keydown event.\n function handleKeyBinding(cm, e) {\n var name = keyName(e, true);\n if (!name) { return false }\n\n if (e.shiftKey && !cm.state.keySeq) {\n // First try to resolve full name (including 'Shift-'). Failing\n // that, see if there is a cursor-motion command (starting with\n // 'go') bound to the keyname without 'Shift-'.\n return dispatchKey(cm, \"Shift-\" + name, e, function (b) { return doHandleBinding(cm, b, true); })\n || dispatchKey(cm, name, e, function (b) {\n if (typeof b == \"string\" ? /^go[A-Z]/.test(b) : b.motion)\n { return doHandleBinding(cm, b) }\n })\n } else {\n return dispatchKey(cm, name, e, function (b) { return doHandleBinding(cm, b); })\n }\n }\n\n // Handle a key from the keypress event\n function handleCharBinding(cm, e, ch) {\n return dispatchKey(cm, \"'\" + ch + \"'\", e, function (b) { return doHandleBinding(cm, b, true); })\n }\n\n var lastStoppedKey = null;\n function onKeyDown(e) {\n var cm = this;\n if (e.target && e.target != cm.display.input.getField()) { return }\n cm.curOp.focus = activeElt();\n if (signalDOMEvent(cm, e)) { return }\n // IE does strange things with escape.\n if (ie && ie_version < 11 && e.keyCode == 27) { e.returnValue = false; }\n var code = e.keyCode;\n cm.display.shift = code == 16 || e.shiftKey;\n var handled = handleKeyBinding(cm, e);\n if (presto) {\n lastStoppedKey = handled ? code : null;\n // Opera has no cut event... we try to at least catch the key combo\n if (!handled && code == 88 && !hasCopyEvent && (mac ? e.metaKey : e.ctrlKey))\n { cm.replaceSelection(\"\", null, \"cut\"); }\n }\n if (gecko && !mac && !handled && code == 46 && e.shiftKey && !e.ctrlKey && document.execCommand)\n { document.execCommand(\"cut\"); }\n\n // Turn mouse into crosshair when Alt is held on Mac.\n if (code == 18 && !/\\bCodeMirror-crosshair\\b/.test(cm.display.lineDiv.className))\n { showCrossHair(cm); }\n }\n\n function showCrossHair(cm) {\n var lineDiv = cm.display.lineDiv;\n addClass(lineDiv, \"CodeMirror-crosshair\");\n\n function up(e) {\n if (e.keyCode == 18 || !e.altKey) {\n rmClass(lineDiv, \"CodeMirror-crosshair\");\n off(document, \"keyup\", up);\n off(document, \"mouseover\", up);\n }\n }\n on(document, \"keyup\", up);\n on(document, \"mouseover\", up);\n }\n\n function onKeyUp(e) {\n if (e.keyCode == 16) { this.doc.sel.shift = false; }\n signalDOMEvent(this, e);\n }\n\n function onKeyPress(e) {\n var cm = this;\n if (e.target && e.target != cm.display.input.getField()) { return }\n if (eventInWidget(cm.display, e) || signalDOMEvent(cm, e) || e.ctrlKey && !e.altKey || mac && e.metaKey) { return }\n var keyCode = e.keyCode, charCode = e.charCode;\n if (presto && keyCode == lastStoppedKey) {lastStoppedKey = null; e_preventDefault(e); return}\n if ((presto && (!e.which || e.which < 10)) && handleKeyBinding(cm, e)) { return }\n var ch = String.fromCharCode(charCode == null ? keyCode : charCode);\n // Some browsers fire keypress events for backspace\n if (ch == \"\\x08\") { return }\n if (handleCharBinding(cm, e, ch)) { return }\n cm.display.input.onKeyPress(e);\n }\n\n var DOUBLECLICK_DELAY = 400;\n\n var PastClick = function(time, pos, button) {\n this.time = time;\n this.pos = pos;\n this.button = button;\n };\n\n PastClick.prototype.compare = function (time, pos, button) {\n return this.time + DOUBLECLICK_DELAY > time &&\n cmp(pos, this.pos) == 0 && button == this.button\n };\n\n var lastClick, lastDoubleClick;\n function clickRepeat(pos, button) {\n var now = +new Date;\n if (lastDoubleClick && lastDoubleClick.compare(now, pos, button)) {\n lastClick = lastDoubleClick = null;\n return \"triple\"\n } else if (lastClick && lastClick.compare(now, pos, button)) {\n lastDoubleClick = new PastClick(now, pos, button);\n lastClick = null;\n return \"double\"\n } else {\n lastClick = new PastClick(now, pos, button);\n lastDoubleClick = null;\n return \"single\"\n }\n }\n\n // A mouse down can be a single click, double click, triple click,\n // start of selection drag, start of text drag, new cursor\n // (ctrl-click), rectangle drag (alt-drag), or xwin\n // middle-click-paste. Or it might be a click on something we should\n // not interfere with, such as a scrollbar or widget.\n function onMouseDown(e) {\n var cm = this, display = cm.display;\n if (signalDOMEvent(cm, e) || display.activeTouch && display.input.supportsTouch()) { return }\n display.input.ensurePolled();\n display.shift = e.shiftKey;\n\n if (eventInWidget(display, e)) {\n if (!webkit) {\n // Briefly turn off draggability, to allow widgets to do\n // normal dragging things.\n display.scroller.draggable = false;\n setTimeout(function () { return display.scroller.draggable = true; }, 100);\n }\n return\n }\n if (clickInGutter(cm, e)) { return }\n var pos = posFromMouse(cm, e), button = e_button(e), repeat = pos ? clickRepeat(pos, button) : \"single\";\n window.focus();\n\n // #3261: make sure, that we're not starting a second selection\n if (button == 1 && cm.state.selectingText)\n { cm.state.selectingText(e); }\n\n if (pos && handleMappedButton(cm, button, pos, repeat, e)) { return }\n\n if (button == 1) {\n if (pos) { leftButtonDown(cm, pos, repeat, e); }\n else if (e_target(e) == display.scroller) { e_preventDefault(e); }\n } else if (button == 2) {\n if (pos) { extendSelection(cm.doc, pos); }\n setTimeout(function () { return display.input.focus(); }, 20);\n } else if (button == 3) {\n if (captureRightClick) { cm.display.input.onContextMenu(e); }\n else { delayBlurEvent(cm); }\n }\n }\n\n function handleMappedButton(cm, button, pos, repeat, event) {\n var name = \"Click\";\n if (repeat == \"double\") { name = \"Double\" + name; }\n else if (repeat == \"triple\") { name = \"Triple\" + name; }\n name = (button == 1 ? \"Left\" : button == 2 ? \"Middle\" : \"Right\") + name;\n\n return dispatchKey(cm, addModifierNames(name, event), event, function (bound) {\n if (typeof bound == \"string\") { bound = commands[bound]; }\n if (!bound) { return false }\n var done = false;\n try {\n if (cm.isReadOnly()) { cm.state.suppressEdits = true; }\n done = bound(cm, pos) != Pass;\n } finally {\n cm.state.suppressEdits = false;\n }\n return done\n })\n }\n\n function configureMouse(cm, repeat, event) {\n var option = cm.getOption(\"configureMouse\");\n var value = option ? option(cm, repeat, event) : {};\n if (value.unit == null) {\n var rect = chromeOS ? event.shiftKey && event.metaKey : event.altKey;\n value.unit = rect ? \"rectangle\" : repeat == \"single\" ? \"char\" : repeat == \"double\" ? \"word\" : \"line\";\n }\n if (value.extend == null || cm.doc.extend) { value.extend = cm.doc.extend || event.shiftKey; }\n if (value.addNew == null) { value.addNew = mac ? event.metaKey : event.ctrlKey; }\n if (value.moveOnDrag == null) { value.moveOnDrag = !(mac ? event.altKey : event.ctrlKey); }\n return value\n }\n\n function leftButtonDown(cm, pos, repeat, event) {\n if (ie) { setTimeout(bind(ensureFocus, cm), 0); }\n else { cm.curOp.focus = activeElt(); }\n\n var behavior = configureMouse(cm, repeat, event);\n\n var sel = cm.doc.sel, contained;\n if (cm.options.dragDrop && dragAndDrop && !cm.isReadOnly() &&\n repeat == \"single\" && (contained = sel.contains(pos)) > -1 &&\n (cmp((contained = sel.ranges[contained]).from(), pos) < 0 || pos.xRel > 0) &&\n (cmp(contained.to(), pos) > 0 || pos.xRel < 0))\n { leftButtonStartDrag(cm, event, pos, behavior); }\n else\n { leftButtonSelect(cm, event, pos, behavior); }\n }\n\n // Start a text drag. When it ends, see if any dragging actually\n // happen, and treat as a click if it didn't.\n function leftButtonStartDrag(cm, event, pos, behavior) {\n var display = cm.display, moved = false;\n var dragEnd = operation(cm, function (e) {\n if (webkit) { display.scroller.draggable = false; }\n cm.state.draggingText = false;\n if (cm.state.delayingBlurEvent) {\n if (cm.hasFocus()) { cm.state.delayingBlurEvent = false; }\n else { delayBlurEvent(cm); }\n }\n off(display.wrapper.ownerDocument, \"mouseup\", dragEnd);\n off(display.wrapper.ownerDocument, \"mousemove\", mouseMove);\n off(display.scroller, \"dragstart\", dragStart);\n off(display.scroller, \"drop\", dragEnd);\n if (!moved) {\n e_preventDefault(e);\n if (!behavior.addNew)\n { extendSelection(cm.doc, pos, null, null, behavior.extend); }\n // Work around unexplainable focus problem in IE9 (#2127) and Chrome (#3081)\n if ((webkit && !safari) || ie && ie_version == 9)\n { setTimeout(function () {display.wrapper.ownerDocument.body.focus({preventScroll: true}); display.input.focus();}, 20); }\n else\n { display.input.focus(); }\n }\n });\n var mouseMove = function(e2) {\n moved = moved || Math.abs(event.clientX - e2.clientX) + Math.abs(event.clientY - e2.clientY) >= 10;\n };\n var dragStart = function () { return moved = true; };\n // Let the drag handler handle this.\n if (webkit) { display.scroller.draggable = true; }\n cm.state.draggingText = dragEnd;\n dragEnd.copy = !behavior.moveOnDrag;\n on(display.wrapper.ownerDocument, \"mouseup\", dragEnd);\n on(display.wrapper.ownerDocument, \"mousemove\", mouseMove);\n on(display.scroller, \"dragstart\", dragStart);\n on(display.scroller, \"drop\", dragEnd);\n\n cm.state.delayingBlurEvent = true;\n setTimeout(function () { return display.input.focus(); }, 20);\n // IE's approach to draggable\n if (display.scroller.dragDrop) { display.scroller.dragDrop(); }\n }\n\n function rangeForUnit(cm, pos, unit) {\n if (unit == \"char\") { return new Range(pos, pos) }\n if (unit == \"word\") { return cm.findWordAt(pos) }\n if (unit == \"line\") { return new Range(Pos(pos.line, 0), clipPos(cm.doc, Pos(pos.line + 1, 0))) }\n var result = unit(cm, pos);\n return new Range(result.from, result.to)\n }\n\n // Normal selection, as opposed to text dragging.\n function leftButtonSelect(cm, event, start, behavior) {\n if (ie) { delayBlurEvent(cm); }\n var display = cm.display, doc = cm.doc;\n e_preventDefault(event);\n\n var ourRange, ourIndex, startSel = doc.sel, ranges = startSel.ranges;\n if (behavior.addNew && !behavior.extend) {\n ourIndex = doc.sel.contains(start);\n if (ourIndex > -1)\n { ourRange = ranges[ourIndex]; }\n else\n { ourRange = new Range(start, start); }\n } else {\n ourRange = doc.sel.primary();\n ourIndex = doc.sel.primIndex;\n }\n\n if (behavior.unit == \"rectangle\") {\n if (!behavior.addNew) { ourRange = new Range(start, start); }\n start = posFromMouse(cm, event, true, true);\n ourIndex = -1;\n } else {\n var range = rangeForUnit(cm, start, behavior.unit);\n if (behavior.extend)\n { ourRange = extendRange(ourRange, range.anchor, range.head, behavior.extend); }\n else\n { ourRange = range; }\n }\n\n if (!behavior.addNew) {\n ourIndex = 0;\n setSelection(doc, new Selection([ourRange], 0), sel_mouse);\n startSel = doc.sel;\n } else if (ourIndex == -1) {\n ourIndex = ranges.length;\n setSelection(doc, normalizeSelection(cm, ranges.concat([ourRange]), ourIndex),\n {scroll: false, origin: \"*mouse\"});\n } else if (ranges.length > 1 && ranges[ourIndex].empty() && behavior.unit == \"char\" && !behavior.extend) {\n setSelection(doc, normalizeSelection(cm, ranges.slice(0, ourIndex).concat(ranges.slice(ourIndex + 1)), 0),\n {scroll: false, origin: \"*mouse\"});\n startSel = doc.sel;\n } else {\n replaceOneSelection(doc, ourIndex, ourRange, sel_mouse);\n }\n\n var lastPos = start;\n function extendTo(pos) {\n if (cmp(lastPos, pos) == 0) { return }\n lastPos = pos;\n\n if (behavior.unit == \"rectangle\") {\n var ranges = [], tabSize = cm.options.tabSize;\n var startCol = countColumn(getLine(doc, start.line).text, start.ch, tabSize);\n var posCol = countColumn(getLine(doc, pos.line).text, pos.ch, tabSize);\n var left = Math.min(startCol, posCol), right = Math.max(startCol, posCol);\n for (var line = Math.min(start.line, pos.line), end = Math.min(cm.lastLine(), Math.max(start.line, pos.line));\n line <= end; line++) {\n var text = getLine(doc, line).text, leftPos = findColumn(text, left, tabSize);\n if (left == right)\n { ranges.push(new Range(Pos(line, leftPos), Pos(line, leftPos))); }\n else if (text.length > leftPos)\n { ranges.push(new Range(Pos(line, leftPos), Pos(line, findColumn(text, right, tabSize)))); }\n }\n if (!ranges.length) { ranges.push(new Range(start, start)); }\n setSelection(doc, normalizeSelection(cm, startSel.ranges.slice(0, ourIndex).concat(ranges), ourIndex),\n {origin: \"*mouse\", scroll: false});\n cm.scrollIntoView(pos);\n } else {\n var oldRange = ourRange;\n var range = rangeForUnit(cm, pos, behavior.unit);\n var anchor = oldRange.anchor, head;\n if (cmp(range.anchor, anchor) > 0) {\n head = range.head;\n anchor = minPos(oldRange.from(), range.anchor);\n } else {\n head = range.anchor;\n anchor = maxPos(oldRange.to(), range.head);\n }\n var ranges$1 = startSel.ranges.slice(0);\n ranges$1[ourIndex] = bidiSimplify(cm, new Range(clipPos(doc, anchor), head));\n setSelection(doc, normalizeSelection(cm, ranges$1, ourIndex), sel_mouse);\n }\n }\n\n var editorSize = display.wrapper.getBoundingClientRect();\n // Used to ensure timeout re-tries don't fire when another extend\n // happened in the meantime (clearTimeout isn't reliable -- at\n // least on Chrome, the timeouts still happen even when cleared,\n // if the clear happens after their scheduled firing time).\n var counter = 0;\n\n function extend(e) {\n var curCount = ++counter;\n var cur = posFromMouse(cm, e, true, behavior.unit == \"rectangle\");\n if (!cur) { return }\n if (cmp(cur, lastPos) != 0) {\n cm.curOp.focus = activeElt();\n extendTo(cur);\n var visible = visibleLines(display, doc);\n if (cur.line >= visible.to || cur.line < visible.from)\n { setTimeout(operation(cm, function () {if (counter == curCount) { extend(e); }}), 150); }\n } else {\n var outside = e.clientY < editorSize.top ? -20 : e.clientY > editorSize.bottom ? 20 : 0;\n if (outside) { setTimeout(operation(cm, function () {\n if (counter != curCount) { return }\n display.scroller.scrollTop += outside;\n extend(e);\n }), 50); }\n }\n }\n\n function done(e) {\n cm.state.selectingText = false;\n counter = Infinity;\n // If e is null or undefined we interpret this as someone trying\n // to explicitly cancel the selection rather than the user\n // letting go of the mouse button.\n if (e) {\n e_preventDefault(e);\n display.input.focus();\n }\n off(display.wrapper.ownerDocument, \"mousemove\", move);\n off(display.wrapper.ownerDocument, \"mouseup\", up);\n doc.history.lastSelOrigin = null;\n }\n\n var move = operation(cm, function (e) {\n if (e.buttons === 0 || !e_button(e)) { done(e); }\n else { extend(e); }\n });\n var up = operation(cm, done);\n cm.state.selectingText = up;\n on(display.wrapper.ownerDocument, \"mousemove\", move);\n on(display.wrapper.ownerDocument, \"mouseup\", up);\n }\n\n // Used when mouse-selecting to adjust the anchor to the proper side\n // of a bidi jump depending on the visual position of the head.\n function bidiSimplify(cm, range) {\n var anchor = range.anchor;\n var head = range.head;\n var anchorLine = getLine(cm.doc, anchor.line);\n if (cmp(anchor, head) == 0 && anchor.sticky == head.sticky) { return range }\n var order = getOrder(anchorLine);\n if (!order) { return range }\n var index = getBidiPartAt(order, anchor.ch, anchor.sticky), part = order[index];\n if (part.from != anchor.ch && part.to != anchor.ch) { return range }\n var boundary = index + ((part.from == anchor.ch) == (part.level != 1) ? 0 : 1);\n if (boundary == 0 || boundary == order.length) { return range }\n\n // Compute the relative visual position of the head compared to the\n // anchor (<0 is to the left, >0 to the right)\n var leftSide;\n if (head.line != anchor.line) {\n leftSide = (head.line - anchor.line) * (cm.doc.direction == \"ltr\" ? 1 : -1) > 0;\n } else {\n var headIndex = getBidiPartAt(order, head.ch, head.sticky);\n var dir = headIndex - index || (head.ch - anchor.ch) * (part.level == 1 ? -1 : 1);\n if (headIndex == boundary - 1 || headIndex == boundary)\n { leftSide = dir < 0; }\n else\n { leftSide = dir > 0; }\n }\n\n var usePart = order[boundary + (leftSide ? -1 : 0)];\n var from = leftSide == (usePart.level == 1);\n var ch = from ? usePart.from : usePart.to, sticky = from ? \"after\" : \"before\";\n return anchor.ch == ch && anchor.sticky == sticky ? range : new Range(new Pos(anchor.line, ch, sticky), head)\n }\n\n\n // Determines whether an event happened in the gutter, and fires the\n // handlers for the corresponding event.\n function gutterEvent(cm, e, type, prevent) {\n var mX, mY;\n if (e.touches) {\n mX = e.touches[0].clientX;\n mY = e.touches[0].clientY;\n } else {\n try { mX = e.clientX; mY = e.clientY; }\n catch(e$1) { return false }\n }\n if (mX >= Math.floor(cm.display.gutters.getBoundingClientRect().right)) { return false }\n if (prevent) { e_preventDefault(e); }\n\n var display = cm.display;\n var lineBox = display.lineDiv.getBoundingClientRect();\n\n if (mY > lineBox.bottom || !hasHandler(cm, type)) { return e_defaultPrevented(e) }\n mY -= lineBox.top - display.viewOffset;\n\n for (var i = 0; i < cm.display.gutterSpecs.length; ++i) {\n var g = display.gutters.childNodes[i];\n if (g && g.getBoundingClientRect().right >= mX) {\n var line = lineAtHeight(cm.doc, mY);\n var gutter = cm.display.gutterSpecs[i];\n signal(cm, type, cm, line, gutter.className, e);\n return e_defaultPrevented(e)\n }\n }\n }\n\n function clickInGutter(cm, e) {\n return gutterEvent(cm, e, \"gutterClick\", true)\n }\n\n // CONTEXT MENU HANDLING\n\n // To make the context menu work, we need to briefly unhide the\n // textarea (making it as unobtrusive as possible) to let the\n // right-click take effect on it.\n function onContextMenu(cm, e) {\n if (eventInWidget(cm.display, e) || contextMenuInGutter(cm, e)) { return }\n if (signalDOMEvent(cm, e, \"contextmenu\")) { return }\n if (!captureRightClick) { cm.display.input.onContextMenu(e); }\n }\n\n function contextMenuInGutter(cm, e) {\n if (!hasHandler(cm, \"gutterContextMenu\")) { return false }\n return gutterEvent(cm, e, \"gutterContextMenu\", false)\n }\n\n function themeChanged(cm) {\n cm.display.wrapper.className = cm.display.wrapper.className.replace(/\\s*cm-s-\\S+/g, \"\") +\n cm.options.theme.replace(/(^|\\s)\\s*/g, \" cm-s-\");\n clearCaches(cm);\n }\n\n var Init = {toString: function(){return \"CodeMirror.Init\"}};\n\n var defaults = {};\n var optionHandlers = {};\n\n function defineOptions(CodeMirror) {\n var optionHandlers = CodeMirror.optionHandlers;\n\n function option(name, deflt, handle, notOnInit) {\n CodeMirror.defaults[name] = deflt;\n if (handle) { optionHandlers[name] =\n notOnInit ? function (cm, val, old) {if (old != Init) { handle(cm, val, old); }} : handle; }\n }\n\n CodeMirror.defineOption = option;\n\n // Passed to option handlers when there is no old value.\n CodeMirror.Init = Init;\n\n // These two are, on init, called from the constructor because they\n // have to be initialized before the editor can start at all.\n option(\"value\", \"\", function (cm, val) { return cm.setValue(val); }, true);\n option(\"mode\", null, function (cm, val) {\n cm.doc.modeOption = val;\n loadMode(cm);\n }, true);\n\n option(\"indentUnit\", 2, loadMode, true);\n option(\"indentWithTabs\", false);\n option(\"smartIndent\", true);\n option(\"tabSize\", 4, function (cm) {\n resetModeState(cm);\n clearCaches(cm);\n regChange(cm);\n }, true);\n\n option(\"lineSeparator\", null, function (cm, val) {\n cm.doc.lineSep = val;\n if (!val) { return }\n var newBreaks = [], lineNo = cm.doc.first;\n cm.doc.iter(function (line) {\n for (var pos = 0;;) {\n var found = line.text.indexOf(val, pos);\n if (found == -1) { break }\n pos = found + val.length;\n newBreaks.push(Pos(lineNo, found));\n }\n lineNo++;\n });\n for (var i = newBreaks.length - 1; i >= 0; i--)\n { replaceRange(cm.doc, val, newBreaks[i], Pos(newBreaks[i].line, newBreaks[i].ch + val.length)); }\n });\n option(\"specialChars\", /[\\u0000-\\u001f\\u007f-\\u009f\\u00ad\\u061c\\u200b\\u200e\\u200f\\u2028\\u2029\\ufeff\\ufff9-\\ufffc]/g, function (cm, val, old) {\n cm.state.specialChars = new RegExp(val.source + (val.test(\"\\t\") ? \"\" : \"|\\t\"), \"g\");\n if (old != Init) { cm.refresh(); }\n });\n option(\"specialCharPlaceholder\", defaultSpecialCharPlaceholder, function (cm) { return cm.refresh(); }, true);\n option(\"electricChars\", true);\n option(\"inputStyle\", mobile ? \"contenteditable\" : \"textarea\", function () {\n throw new Error(\"inputStyle can not (yet) be changed in a running editor\") // FIXME\n }, true);\n option(\"spellcheck\", false, function (cm, val) { return cm.getInputField().spellcheck = val; }, true);\n option(\"autocorrect\", false, function (cm, val) { return cm.getInputField().autocorrect = val; }, true);\n option(\"autocapitalize\", false, function (cm, val) { return cm.getInputField().autocapitalize = val; }, true);\n option(\"rtlMoveVisually\", !windows);\n option(\"wholeLineUpdateBefore\", true);\n\n option(\"theme\", \"default\", function (cm) {\n themeChanged(cm);\n updateGutters(cm);\n }, true);\n option(\"keyMap\", \"default\", function (cm, val, old) {\n var next = getKeyMap(val);\n var prev = old != Init && getKeyMap(old);\n if (prev && prev.detach) { prev.detach(cm, next); }\n if (next.attach) { next.attach(cm, prev || null); }\n });\n option(\"extraKeys\", null);\n option(\"configureMouse\", null);\n\n option(\"lineWrapping\", false, wrappingChanged, true);\n option(\"gutters\", [], function (cm, val) {\n cm.display.gutterSpecs = getGutters(val, cm.options.lineNumbers);\n updateGutters(cm);\n }, true);\n option(\"fixedGutter\", true, function (cm, val) {\n cm.display.gutters.style.left = val ? compensateForHScroll(cm.display) + \"px\" : \"0\";\n cm.refresh();\n }, true);\n option(\"coverGutterNextToScrollbar\", false, function (cm) { return updateScrollbars(cm); }, true);\n option(\"scrollbarStyle\", \"native\", function (cm) {\n initScrollbars(cm);\n updateScrollbars(cm);\n cm.display.scrollbars.setScrollTop(cm.doc.scrollTop);\n cm.display.scrollbars.setScrollLeft(cm.doc.scrollLeft);\n }, true);\n option(\"lineNumbers\", false, function (cm, val) {\n cm.display.gutterSpecs = getGutters(cm.options.gutters, val);\n updateGutters(cm);\n }, true);\n option(\"firstLineNumber\", 1, updateGutters, true);\n option(\"lineNumberFormatter\", function (integer) { return integer; }, updateGutters, true);\n option(\"showCursorWhenSelecting\", false, updateSelection, true);\n\n option(\"resetSelectionOnContextMenu\", true);\n option(\"lineWiseCopyCut\", true);\n option(\"pasteLinesPerSelection\", true);\n option(\"selectionsMayTouch\", false);\n\n option(\"readOnly\", false, function (cm, val) {\n if (val == \"nocursor\") {\n onBlur(cm);\n cm.display.input.blur();\n }\n cm.display.input.readOnlyChanged(val);\n });\n\n option(\"screenReaderLabel\", null, function (cm, val) {\n val = (val === '') ? null : val;\n cm.display.input.screenReaderLabelChanged(val);\n });\n\n option(\"disableInput\", false, function (cm, val) {if (!val) { cm.display.input.reset(); }}, true);\n option(\"dragDrop\", true, dragDropChanged);\n option(\"allowDropFileTypes\", null);\n\n option(\"cursorBlinkRate\", 530);\n option(\"cursorScrollMargin\", 0);\n option(\"cursorHeight\", 1, updateSelection, true);\n option(\"singleCursorHeightPerLine\", true, updateSelection, true);\n option(\"workTime\", 100);\n option(\"workDelay\", 100);\n option(\"flattenSpans\", true, resetModeState, true);\n option(\"addModeClass\", false, resetModeState, true);\n option(\"pollInterval\", 100);\n option(\"undoDepth\", 200, function (cm, val) { return cm.doc.history.undoDepth = val; });\n option(\"historyEventDelay\", 1250);\n option(\"viewportMargin\", 10, function (cm) { return cm.refresh(); }, true);\n option(\"maxHighlightLength\", 10000, resetModeState, true);\n option(\"moveInputWithCursor\", true, function (cm, val) {\n if (!val) { cm.display.input.resetPosition(); }\n });\n\n option(\"tabindex\", null, function (cm, val) { return cm.display.input.getField().tabIndex = val || \"\"; });\n option(\"autofocus\", null);\n option(\"direction\", \"ltr\", function (cm, val) { return cm.doc.setDirection(val); }, true);\n option(\"phrases\", null);\n }\n\n function dragDropChanged(cm, value, old) {\n var wasOn = old && old != Init;\n if (!value != !wasOn) {\n var funcs = cm.display.dragFunctions;\n var toggle = value ? on : off;\n toggle(cm.display.scroller, \"dragstart\", funcs.start);\n toggle(cm.display.scroller, \"dragenter\", funcs.enter);\n toggle(cm.display.scroller, \"dragover\", funcs.over);\n toggle(cm.display.scroller, \"dragleave\", funcs.leave);\n toggle(cm.display.scroller, \"drop\", funcs.drop);\n }\n }\n\n function wrappingChanged(cm) {\n if (cm.options.lineWrapping) {\n addClass(cm.display.wrapper, \"CodeMirror-wrap\");\n cm.display.sizer.style.minWidth = \"\";\n cm.display.sizerWidth = null;\n } else {\n rmClass(cm.display.wrapper, \"CodeMirror-wrap\");\n findMaxLine(cm);\n }\n estimateLineHeights(cm);\n regChange(cm);\n clearCaches(cm);\n setTimeout(function () { return updateScrollbars(cm); }, 100);\n }\n\n // A CodeMirror instance represents an editor. This is the object\n // that user code is usually dealing with.\n\n function CodeMirror(place, options) {\n var this$1 = this;\n\n if (!(this instanceof CodeMirror)) { return new CodeMirror(place, options) }\n\n this.options = options = options ? copyObj(options) : {};\n // Determine effective options based on given values and defaults.\n copyObj(defaults, options, false);\n\n var doc = options.value;\n if (typeof doc == \"string\") { doc = new Doc(doc, options.mode, null, options.lineSeparator, options.direction); }\n else if (options.mode) { doc.modeOption = options.mode; }\n this.doc = doc;\n\n var input = new CodeMirror.inputStyles[options.inputStyle](this);\n var display = this.display = new Display(place, doc, input, options);\n display.wrapper.CodeMirror = this;\n themeChanged(this);\n if (options.lineWrapping)\n { this.display.wrapper.className += \" CodeMirror-wrap\"; }\n initScrollbars(this);\n\n this.state = {\n keyMaps: [], // stores maps added by addKeyMap\n overlays: [], // highlighting overlays, as added by addOverlay\n modeGen: 0, // bumped when mode/overlay changes, used to invalidate highlighting info\n overwrite: false,\n delayingBlurEvent: false,\n focused: false,\n suppressEdits: false, // used to disable editing during key handlers when in readOnly mode\n pasteIncoming: -1, cutIncoming: -1, // help recognize paste/cut edits in input.poll\n selectingText: false,\n draggingText: false,\n highlight: new Delayed(), // stores highlight worker timeout\n keySeq: null, // Unfinished key sequence\n specialChars: null\n };\n\n if (options.autofocus && !mobile) { display.input.focus(); }\n\n // Override magic textarea content restore that IE sometimes does\n // on our hidden textarea on reload\n if (ie && ie_version < 11) { setTimeout(function () { return this$1.display.input.reset(true); }, 20); }\n\n registerEventHandlers(this);\n ensureGlobalHandlers();\n\n startOperation(this);\n this.curOp.forceUpdate = true;\n attachDoc(this, doc);\n\n if ((options.autofocus && !mobile) || this.hasFocus())\n { setTimeout(function () {\n if (this$1.hasFocus() && !this$1.state.focused) { onFocus(this$1); }\n }, 20); }\n else\n { onBlur(this); }\n\n for (var opt in optionHandlers) { if (optionHandlers.hasOwnProperty(opt))\n { optionHandlers[opt](this, options[opt], Init); } }\n maybeUpdateLineNumberWidth(this);\n if (options.finishInit) { options.finishInit(this); }\n for (var i = 0; i < initHooks.length; ++i) { initHooks[i](this); }\n endOperation(this);\n // Suppress optimizelegibility in Webkit, since it breaks text\n // measuring on line wrapping boundaries.\n if (webkit && options.lineWrapping &&\n getComputedStyle(display.lineDiv).textRendering == \"optimizelegibility\")\n { display.lineDiv.style.textRendering = \"auto\"; }\n }\n\n // The default configuration options.\n CodeMirror.defaults = defaults;\n // Functions to run when options are changed.\n CodeMirror.optionHandlers = optionHandlers;\n\n // Attach the necessary event handlers when initializing the editor\n function registerEventHandlers(cm) {\n var d = cm.display;\n on(d.scroller, \"mousedown\", operation(cm, onMouseDown));\n // Older IE's will not fire a second mousedown for a double click\n if (ie && ie_version < 11)\n { on(d.scroller, \"dblclick\", operation(cm, function (e) {\n if (signalDOMEvent(cm, e)) { return }\n var pos = posFromMouse(cm, e);\n if (!pos || clickInGutter(cm, e) || eventInWidget(cm.display, e)) { return }\n e_preventDefault(e);\n var word = cm.findWordAt(pos);\n extendSelection(cm.doc, word.anchor, word.head);\n })); }\n else\n { on(d.scroller, \"dblclick\", function (e) { return signalDOMEvent(cm, e) || e_preventDefault(e); }); }\n // Some browsers fire contextmenu *after* opening the menu, at\n // which point we can't mess with it anymore. Context menu is\n // handled in onMouseDown for these browsers.\n on(d.scroller, \"contextmenu\", function (e) { return onContextMenu(cm, e); });\n on(d.input.getField(), \"contextmenu\", function (e) {\n if (!d.scroller.contains(e.target)) { onContextMenu(cm, e); }\n });\n\n // Used to suppress mouse event handling when a touch happens\n var touchFinished, prevTouch = {end: 0};\n function finishTouch() {\n if (d.activeTouch) {\n touchFinished = setTimeout(function () { return d.activeTouch = null; }, 1000);\n prevTouch = d.activeTouch;\n prevTouch.end = +new Date;\n }\n }\n function isMouseLikeTouchEvent(e) {\n if (e.touches.length != 1) { return false }\n var touch = e.touches[0];\n return touch.radiusX <= 1 && touch.radiusY <= 1\n }\n function farAway(touch, other) {\n if (other.left == null) { return true }\n var dx = other.left - touch.left, dy = other.top - touch.top;\n return dx * dx + dy * dy > 20 * 20\n }\n on(d.scroller, \"touchstart\", function (e) {\n if (!signalDOMEvent(cm, e) && !isMouseLikeTouchEvent(e) && !clickInGutter(cm, e)) {\n d.input.ensurePolled();\n clearTimeout(touchFinished);\n var now = +new Date;\n d.activeTouch = {start: now, moved: false,\n prev: now - prevTouch.end <= 300 ? prevTouch : null};\n if (e.touches.length == 1) {\n d.activeTouch.left = e.touches[0].pageX;\n d.activeTouch.top = e.touches[0].pageY;\n }\n }\n });\n on(d.scroller, \"touchmove\", function () {\n if (d.activeTouch) { d.activeTouch.moved = true; }\n });\n on(d.scroller, \"touchend\", function (e) {\n var touch = d.activeTouch;\n if (touch && !eventInWidget(d, e) && touch.left != null &&\n !touch.moved && new Date - touch.start < 300) {\n var pos = cm.coordsChar(d.activeTouch, \"page\"), range;\n if (!touch.prev || farAway(touch, touch.prev)) // Single tap\n { range = new Range(pos, pos); }\n else if (!touch.prev.prev || farAway(touch, touch.prev.prev)) // Double tap\n { range = cm.findWordAt(pos); }\n else // Triple tap\n { range = new Range(Pos(pos.line, 0), clipPos(cm.doc, Pos(pos.line + 1, 0))); }\n cm.setSelection(range.anchor, range.head);\n cm.focus();\n e_preventDefault(e);\n }\n finishTouch();\n });\n on(d.scroller, \"touchcancel\", finishTouch);\n\n // Sync scrolling between fake scrollbars and real scrollable\n // area, ensure viewport is updated when scrolling.\n on(d.scroller, \"scroll\", function () {\n if (d.scroller.clientHeight) {\n updateScrollTop(cm, d.scroller.scrollTop);\n setScrollLeft(cm, d.scroller.scrollLeft, true);\n signal(cm, \"scroll\", cm);\n }\n });\n\n // Listen to wheel events in order to try and update the viewport on time.\n on(d.scroller, \"mousewheel\", function (e) { return onScrollWheel(cm, e); });\n on(d.scroller, \"DOMMouseScroll\", function (e) { return onScrollWheel(cm, e); });\n\n // Prevent wrapper from ever scrolling\n on(d.wrapper, \"scroll\", function () { return d.wrapper.scrollTop = d.wrapper.scrollLeft = 0; });\n\n d.dragFunctions = {\n enter: function (e) {if (!signalDOMEvent(cm, e)) { e_stop(e); }},\n over: function (e) {if (!signalDOMEvent(cm, e)) { onDragOver(cm, e); e_stop(e); }},\n start: function (e) { return onDragStart(cm, e); },\n drop: operation(cm, onDrop),\n leave: function (e) {if (!signalDOMEvent(cm, e)) { clearDragCursor(cm); }}\n };\n\n var inp = d.input.getField();\n on(inp, \"keyup\", function (e) { return onKeyUp.call(cm, e); });\n on(inp, \"keydown\", operation(cm, onKeyDown));\n on(inp, \"keypress\", operation(cm, onKeyPress));\n on(inp, \"focus\", function (e) { return onFocus(cm, e); });\n on(inp, \"blur\", function (e) { return onBlur(cm, e); });\n }\n\n var initHooks = [];\n CodeMirror.defineInitHook = function (f) { return initHooks.push(f); };\n\n // Indent the given line. The how parameter can be \"smart\",\n // \"add\"/null, \"subtract\", or \"prev\". When aggressive is false\n // (typically set to true for forced single-line indents), empty\n // lines are not indented, and places where the mode returns Pass\n // are left alone.\n function indentLine(cm, n, how, aggressive) {\n var doc = cm.doc, state;\n if (how == null) { how = \"add\"; }\n if (how == \"smart\") {\n // Fall back to \"prev\" when the mode doesn't have an indentation\n // method.\n if (!doc.mode.indent) { how = \"prev\"; }\n else { state = getContextBefore(cm, n).state; }\n }\n\n var tabSize = cm.options.tabSize;\n var line = getLine(doc, n), curSpace = countColumn(line.text, null, tabSize);\n if (line.stateAfter) { line.stateAfter = null; }\n var curSpaceString = line.text.match(/^\\s*/)[0], indentation;\n if (!aggressive && !/\\S/.test(line.text)) {\n indentation = 0;\n how = \"not\";\n } else if (how == \"smart\") {\n indentation = doc.mode.indent(state, line.text.slice(curSpaceString.length), line.text);\n if (indentation == Pass || indentation > 150) {\n if (!aggressive) { return }\n how = \"prev\";\n }\n }\n if (how == \"prev\") {\n if (n > doc.first) { indentation = countColumn(getLine(doc, n-1).text, null, tabSize); }\n else { indentation = 0; }\n } else if (how == \"add\") {\n indentation = curSpace + cm.options.indentUnit;\n } else if (how == \"subtract\") {\n indentation = curSpace - cm.options.indentUnit;\n } else if (typeof how == \"number\") {\n indentation = curSpace + how;\n }\n indentation = Math.max(0, indentation);\n\n var indentString = \"\", pos = 0;\n if (cm.options.indentWithTabs)\n { for (var i = Math.floor(indentation / tabSize); i; --i) {pos += tabSize; indentString += \"\\t\";} }\n if (pos < indentation) { indentString += spaceStr(indentation - pos); }\n\n if (indentString != curSpaceString) {\n replaceRange(doc, indentString, Pos(n, 0), Pos(n, curSpaceString.length), \"+input\");\n line.stateAfter = null;\n return true\n } else {\n // Ensure that, if the cursor was in the whitespace at the start\n // of the line, it is moved to the end of that space.\n for (var i$1 = 0; i$1 < doc.sel.ranges.length; i$1++) {\n var range = doc.sel.ranges[i$1];\n if (range.head.line == n && range.head.ch < curSpaceString.length) {\n var pos$1 = Pos(n, curSpaceString.length);\n replaceOneSelection(doc, i$1, new Range(pos$1, pos$1));\n break\n }\n }\n }\n }\n\n // This will be set to a {lineWise: bool, text: [string]} object, so\n // that, when pasting, we know what kind of selections the copied\n // text was made out of.\n var lastCopied = null;\n\n function setLastCopied(newLastCopied) {\n lastCopied = newLastCopied;\n }\n\n function applyTextInput(cm, inserted, deleted, sel, origin) {\n var doc = cm.doc;\n cm.display.shift = false;\n if (!sel) { sel = doc.sel; }\n\n var recent = +new Date - 200;\n var paste = origin == \"paste\" || cm.state.pasteIncoming > recent;\n var textLines = splitLinesAuto(inserted), multiPaste = null;\n // When pasting N lines into N selections, insert one line per selection\n if (paste && sel.ranges.length > 1) {\n if (lastCopied && lastCopied.text.join(\"\\n\") == inserted) {\n if (sel.ranges.length % lastCopied.text.length == 0) {\n multiPaste = [];\n for (var i = 0; i < lastCopied.text.length; i++)\n { multiPaste.push(doc.splitLines(lastCopied.text[i])); }\n }\n } else if (textLines.length == sel.ranges.length && cm.options.pasteLinesPerSelection) {\n multiPaste = map(textLines, function (l) { return [l]; });\n }\n }\n\n var updateInput = cm.curOp.updateInput;\n // Normal behavior is to insert the new text into every selection\n for (var i$1 = sel.ranges.length - 1; i$1 >= 0; i$1--) {\n var range = sel.ranges[i$1];\n var from = range.from(), to = range.to();\n if (range.empty()) {\n if (deleted && deleted > 0) // Handle deletion\n { from = Pos(from.line, from.ch - deleted); }\n else if (cm.state.overwrite && !paste) // Handle overwrite\n { to = Pos(to.line, Math.min(getLine(doc, to.line).text.length, to.ch + lst(textLines).length)); }\n else if (paste && lastCopied && lastCopied.lineWise && lastCopied.text.join(\"\\n\") == textLines.join(\"\\n\"))\n { from = to = Pos(from.line, 0); }\n }\n var changeEvent = {from: from, to: to, text: multiPaste ? multiPaste[i$1 % multiPaste.length] : textLines,\n origin: origin || (paste ? \"paste\" : cm.state.cutIncoming > recent ? \"cut\" : \"+input\")};\n makeChange(cm.doc, changeEvent);\n signalLater(cm, \"inputRead\", cm, changeEvent);\n }\n if (inserted && !paste)\n { triggerElectric(cm, inserted); }\n\n ensureCursorVisible(cm);\n if (cm.curOp.updateInput < 2) { cm.curOp.updateInput = updateInput; }\n cm.curOp.typing = true;\n cm.state.pasteIncoming = cm.state.cutIncoming = -1;\n }\n\n function handlePaste(e, cm) {\n var pasted = e.clipboardData && e.clipboardData.getData(\"Text\");\n if (pasted) {\n e.preventDefault();\n if (!cm.isReadOnly() && !cm.options.disableInput && cm.hasFocus())\n { runInOp(cm, function () { return applyTextInput(cm, pasted, 0, null, \"paste\"); }); }\n return true\n }\n }\n\n function triggerElectric(cm, inserted) {\n // When an 'electric' character is inserted, immediately trigger a reindent\n if (!cm.options.electricChars || !cm.options.smartIndent) { return }\n var sel = cm.doc.sel;\n\n for (var i = sel.ranges.length - 1; i >= 0; i--) {\n var range = sel.ranges[i];\n if (range.head.ch > 100 || (i && sel.ranges[i - 1].head.line == range.head.line)) { continue }\n var mode = cm.getModeAt(range.head);\n var indented = false;\n if (mode.electricChars) {\n for (var j = 0; j < mode.electricChars.length; j++)\n { if (inserted.indexOf(mode.electricChars.charAt(j)) > -1) {\n indented = indentLine(cm, range.head.line, \"smart\");\n break\n } }\n } else if (mode.electricInput) {\n if (mode.electricInput.test(getLine(cm.doc, range.head.line).text.slice(0, range.head.ch)))\n { indented = indentLine(cm, range.head.line, \"smart\"); }\n }\n if (indented) { signalLater(cm, \"electricInput\", cm, range.head.line); }\n }\n }\n\n function copyableRanges(cm) {\n var text = [], ranges = [];\n for (var i = 0; i < cm.doc.sel.ranges.length; i++) {\n var line = cm.doc.sel.ranges[i].head.line;\n var lineRange = {anchor: Pos(line, 0), head: Pos(line + 1, 0)};\n ranges.push(lineRange);\n text.push(cm.getRange(lineRange.anchor, lineRange.head));\n }\n return {text: text, ranges: ranges}\n }\n\n function disableBrowserMagic(field, spellcheck, autocorrect, autocapitalize) {\n field.setAttribute(\"autocorrect\", autocorrect ? \"\" : \"off\");\n field.setAttribute(\"autocapitalize\", autocapitalize ? \"\" : \"off\");\n field.setAttribute(\"spellcheck\", !!spellcheck);\n }\n\n function hiddenTextarea() {\n var te = elt(\"textarea\", null, null, \"position: absolute; bottom: -1em; padding: 0; width: 1px; height: 1em; min-height: 1em; outline: none\");\n var div = elt(\"div\", [te], null, \"overflow: hidden; position: relative; width: 3px; height: 0px;\");\n // The textarea is kept positioned near the cursor to prevent the\n // fact that it'll be scrolled into view on input from scrolling\n // our fake cursor out of view. On webkit, when wrap=off, paste is\n // very slow. So make the area wide instead.\n if (webkit) { te.style.width = \"1000px\"; }\n else { te.setAttribute(\"wrap\", \"off\"); }\n // If border: 0; -- iOS fails to open keyboard (issue #1287)\n if (ios) { te.style.border = \"1px solid black\"; }\n disableBrowserMagic(te);\n return div\n }\n\n // The publicly visible API. Note that methodOp(f) means\n // 'wrap f in an operation, performed on its `this` parameter'.\n\n // This is not the complete set of editor methods. Most of the\n // methods defined on the Doc type are also injected into\n // CodeMirror.prototype, for backwards compatibility and\n // convenience.\n\n function addEditorMethods(CodeMirror) {\n var optionHandlers = CodeMirror.optionHandlers;\n\n var helpers = CodeMirror.helpers = {};\n\n CodeMirror.prototype = {\n constructor: CodeMirror,\n focus: function(){window.focus(); this.display.input.focus();},\n\n setOption: function(option, value) {\n var options = this.options, old = options[option];\n if (options[option] == value && option != \"mode\") { return }\n options[option] = value;\n if (optionHandlers.hasOwnProperty(option))\n { operation(this, optionHandlers[option])(this, value, old); }\n signal(this, \"optionChange\", this, option);\n },\n\n getOption: function(option) {return this.options[option]},\n getDoc: function() {return this.doc},\n\n addKeyMap: function(map, bottom) {\n this.state.keyMaps[bottom ? \"push\" : \"unshift\"](getKeyMap(map));\n },\n removeKeyMap: function(map) {\n var maps = this.state.keyMaps;\n for (var i = 0; i < maps.length; ++i)\n { if (maps[i] == map || maps[i].name == map) {\n maps.splice(i, 1);\n return true\n } }\n },\n\n addOverlay: methodOp(function(spec, options) {\n var mode = spec.token ? spec : CodeMirror.getMode(this.options, spec);\n if (mode.startState) { throw new Error(\"Overlays may not be stateful.\") }\n insertSorted(this.state.overlays,\n {mode: mode, modeSpec: spec, opaque: options && options.opaque,\n priority: (options && options.priority) || 0},\n function (overlay) { return overlay.priority; });\n this.state.modeGen++;\n regChange(this);\n }),\n removeOverlay: methodOp(function(spec) {\n var overlays = this.state.overlays;\n for (var i = 0; i < overlays.length; ++i) {\n var cur = overlays[i].modeSpec;\n if (cur == spec || typeof spec == \"string\" && cur.name == spec) {\n overlays.splice(i, 1);\n this.state.modeGen++;\n regChange(this);\n return\n }\n }\n }),\n\n indentLine: methodOp(function(n, dir, aggressive) {\n if (typeof dir != \"string\" && typeof dir != \"number\") {\n if (dir == null) { dir = this.options.smartIndent ? \"smart\" : \"prev\"; }\n else { dir = dir ? \"add\" : \"subtract\"; }\n }\n if (isLine(this.doc, n)) { indentLine(this, n, dir, aggressive); }\n }),\n indentSelection: methodOp(function(how) {\n var ranges = this.doc.sel.ranges, end = -1;\n for (var i = 0; i < ranges.length; i++) {\n var range = ranges[i];\n if (!range.empty()) {\n var from = range.from(), to = range.to();\n var start = Math.max(end, from.line);\n end = Math.min(this.lastLine(), to.line - (to.ch ? 0 : 1)) + 1;\n for (var j = start; j < end; ++j)\n { indentLine(this, j, how); }\n var newRanges = this.doc.sel.ranges;\n if (from.ch == 0 && ranges.length == newRanges.length && newRanges[i].from().ch > 0)\n { replaceOneSelection(this.doc, i, new Range(from, newRanges[i].to()), sel_dontScroll); }\n } else if (range.head.line > end) {\n indentLine(this, range.head.line, how, true);\n end = range.head.line;\n if (i == this.doc.sel.primIndex) { ensureCursorVisible(this); }\n }\n }\n }),\n\n // Fetch the parser token for a given character. Useful for hacks\n // that want to inspect the mode state (say, for completion).\n getTokenAt: function(pos, precise) {\n return takeToken(this, pos, precise)\n },\n\n getLineTokens: function(line, precise) {\n return takeToken(this, Pos(line), precise, true)\n },\n\n getTokenTypeAt: function(pos) {\n pos = clipPos(this.doc, pos);\n var styles = getLineStyles(this, getLine(this.doc, pos.line));\n var before = 0, after = (styles.length - 1) / 2, ch = pos.ch;\n var type;\n if (ch == 0) { type = styles[2]; }\n else { for (;;) {\n var mid = (before + after) >> 1;\n if ((mid ? styles[mid * 2 - 1] : 0) >= ch) { after = mid; }\n else if (styles[mid * 2 + 1] < ch) { before = mid + 1; }\n else { type = styles[mid * 2 + 2]; break }\n } }\n var cut = type ? type.indexOf(\"overlay \") : -1;\n return cut < 0 ? type : cut == 0 ? null : type.slice(0, cut - 1)\n },\n\n getModeAt: function(pos) {\n var mode = this.doc.mode;\n if (!mode.innerMode) { return mode }\n return CodeMirror.innerMode(mode, this.getTokenAt(pos).state).mode\n },\n\n getHelper: function(pos, type) {\n return this.getHelpers(pos, type)[0]\n },\n\n getHelpers: function(pos, type) {\n var found = [];\n if (!helpers.hasOwnProperty(type)) { return found }\n var help = helpers[type], mode = this.getModeAt(pos);\n if (typeof mode[type] == \"string\") {\n if (help[mode[type]]) { found.push(help[mode[type]]); }\n } else if (mode[type]) {\n for (var i = 0; i < mode[type].length; i++) {\n var val = help[mode[type][i]];\n if (val) { found.push(val); }\n }\n } else if (mode.helperType && help[mode.helperType]) {\n found.push(help[mode.helperType]);\n } else if (help[mode.name]) {\n found.push(help[mode.name]);\n }\n for (var i$1 = 0; i$1 < help._global.length; i$1++) {\n var cur = help._global[i$1];\n if (cur.pred(mode, this) && indexOf(found, cur.val) == -1)\n { found.push(cur.val); }\n }\n return found\n },\n\n getStateAfter: function(line, precise) {\n var doc = this.doc;\n line = clipLine(doc, line == null ? doc.first + doc.size - 1: line);\n return getContextBefore(this, line + 1, precise).state\n },\n\n cursorCoords: function(start, mode) {\n var pos, range = this.doc.sel.primary();\n if (start == null) { pos = range.head; }\n else if (typeof start == \"object\") { pos = clipPos(this.doc, start); }\n else { pos = start ? range.from() : range.to(); }\n return cursorCoords(this, pos, mode || \"page\")\n },\n\n charCoords: function(pos, mode) {\n return charCoords(this, clipPos(this.doc, pos), mode || \"page\")\n },\n\n coordsChar: function(coords, mode) {\n coords = fromCoordSystem(this, coords, mode || \"page\");\n return coordsChar(this, coords.left, coords.top)\n },\n\n lineAtHeight: function(height, mode) {\n height = fromCoordSystem(this, {top: height, left: 0}, mode || \"page\").top;\n return lineAtHeight(this.doc, height + this.display.viewOffset)\n },\n heightAtLine: function(line, mode, includeWidgets) {\n var end = false, lineObj;\n if (typeof line == \"number\") {\n var last = this.doc.first + this.doc.size - 1;\n if (line < this.doc.first) { line = this.doc.first; }\n else if (line > last) { line = last; end = true; }\n lineObj = getLine(this.doc, line);\n } else {\n lineObj = line;\n }\n return intoCoordSystem(this, lineObj, {top: 0, left: 0}, mode || \"page\", includeWidgets || end).top +\n (end ? this.doc.height - heightAtLine(lineObj) : 0)\n },\n\n defaultTextHeight: function() { return textHeight(this.display) },\n defaultCharWidth: function() { return charWidth(this.display) },\n\n getViewport: function() { return {from: this.display.viewFrom, to: this.display.viewTo}},\n\n addWidget: function(pos, node, scroll, vert, horiz) {\n var display = this.display;\n pos = cursorCoords(this, clipPos(this.doc, pos));\n var top = pos.bottom, left = pos.left;\n node.style.position = \"absolute\";\n node.setAttribute(\"cm-ignore-events\", \"true\");\n this.display.input.setUneditable(node);\n display.sizer.appendChild(node);\n if (vert == \"over\") {\n top = pos.top;\n } else if (vert == \"above\" || vert == \"near\") {\n var vspace = Math.max(display.wrapper.clientHeight, this.doc.height),\n hspace = Math.max(display.sizer.clientWidth, display.lineSpace.clientWidth);\n // Default to positioning above (if specified and possible); otherwise default to positioning below\n if ((vert == 'above' || pos.bottom + node.offsetHeight > vspace) && pos.top > node.offsetHeight)\n { top = pos.top - node.offsetHeight; }\n else if (pos.bottom + node.offsetHeight <= vspace)\n { top = pos.bottom; }\n if (left + node.offsetWidth > hspace)\n { left = hspace - node.offsetWidth; }\n }\n node.style.top = top + \"px\";\n node.style.left = node.style.right = \"\";\n if (horiz == \"right\") {\n left = display.sizer.clientWidth - node.offsetWidth;\n node.style.right = \"0px\";\n } else {\n if (horiz == \"left\") { left = 0; }\n else if (horiz == \"middle\") { left = (display.sizer.clientWidth - node.offsetWidth) / 2; }\n node.style.left = left + \"px\";\n }\n if (scroll)\n { scrollIntoView(this, {left: left, top: top, right: left + node.offsetWidth, bottom: top + node.offsetHeight}); }\n },\n\n triggerOnKeyDown: methodOp(onKeyDown),\n triggerOnKeyPress: methodOp(onKeyPress),\n triggerOnKeyUp: onKeyUp,\n triggerOnMouseDown: methodOp(onMouseDown),\n\n execCommand: function(cmd) {\n if (commands.hasOwnProperty(cmd))\n { return commands[cmd].call(null, this) }\n },\n\n triggerElectric: methodOp(function(text) { triggerElectric(this, text); }),\n\n findPosH: function(from, amount, unit, visually) {\n var dir = 1;\n if (amount < 0) { dir = -1; amount = -amount; }\n var cur = clipPos(this.doc, from);\n for (var i = 0; i < amount; ++i) {\n cur = findPosH(this.doc, cur, dir, unit, visually);\n if (cur.hitSide) { break }\n }\n return cur\n },\n\n moveH: methodOp(function(dir, unit) {\n var this$1 = this;\n\n this.extendSelectionsBy(function (range) {\n if (this$1.display.shift || this$1.doc.extend || range.empty())\n { return findPosH(this$1.doc, range.head, dir, unit, this$1.options.rtlMoveVisually) }\n else\n { return dir < 0 ? range.from() : range.to() }\n }, sel_move);\n }),\n\n deleteH: methodOp(function(dir, unit) {\n var sel = this.doc.sel, doc = this.doc;\n if (sel.somethingSelected())\n { doc.replaceSelection(\"\", null, \"+delete\"); }\n else\n { deleteNearSelection(this, function (range) {\n var other = findPosH(doc, range.head, dir, unit, false);\n return dir < 0 ? {from: other, to: range.head} : {from: range.head, to: other}\n }); }\n }),\n\n findPosV: function(from, amount, unit, goalColumn) {\n var dir = 1, x = goalColumn;\n if (amount < 0) { dir = -1; amount = -amount; }\n var cur = clipPos(this.doc, from);\n for (var i = 0; i < amount; ++i) {\n var coords = cursorCoords(this, cur, \"div\");\n if (x == null) { x = coords.left; }\n else { coords.left = x; }\n cur = findPosV(this, coords, dir, unit);\n if (cur.hitSide) { break }\n }\n return cur\n },\n\n moveV: methodOp(function(dir, unit) {\n var this$1 = this;\n\n var doc = this.doc, goals = [];\n var collapse = !this.display.shift && !doc.extend && doc.sel.somethingSelected();\n doc.extendSelectionsBy(function (range) {\n if (collapse)\n { return dir < 0 ? range.from() : range.to() }\n var headPos = cursorCoords(this$1, range.head, \"div\");\n if (range.goalColumn != null) { headPos.left = range.goalColumn; }\n goals.push(headPos.left);\n var pos = findPosV(this$1, headPos, dir, unit);\n if (unit == \"page\" && range == doc.sel.primary())\n { addToScrollTop(this$1, charCoords(this$1, pos, \"div\").top - headPos.top); }\n return pos\n }, sel_move);\n if (goals.length) { for (var i = 0; i < doc.sel.ranges.length; i++)\n { doc.sel.ranges[i].goalColumn = goals[i]; } }\n }),\n\n // Find the word at the given position (as returned by coordsChar).\n findWordAt: function(pos) {\n var doc = this.doc, line = getLine(doc, pos.line).text;\n var start = pos.ch, end = pos.ch;\n if (line) {\n var helper = this.getHelper(pos, \"wordChars\");\n if ((pos.sticky == \"before\" || end == line.length) && start) { --start; } else { ++end; }\n var startChar = line.charAt(start);\n var check = isWordChar(startChar, helper)\n ? function (ch) { return isWordChar(ch, helper); }\n : /\\s/.test(startChar) ? function (ch) { return /\\s/.test(ch); }\n : function (ch) { return (!/\\s/.test(ch) && !isWordChar(ch)); };\n while (start > 0 && check(line.charAt(start - 1))) { --start; }\n while (end < line.length && check(line.charAt(end))) { ++end; }\n }\n return new Range(Pos(pos.line, start), Pos(pos.line, end))\n },\n\n toggleOverwrite: function(value) {\n if (value != null && value == this.state.overwrite) { return }\n if (this.state.overwrite = !this.state.overwrite)\n { addClass(this.display.cursorDiv, \"CodeMirror-overwrite\"); }\n else\n { rmClass(this.display.cursorDiv, \"CodeMirror-overwrite\"); }\n\n signal(this, \"overwriteToggle\", this, this.state.overwrite);\n },\n hasFocus: function() { return this.display.input.getField() == activeElt() },\n isReadOnly: function() { return !!(this.options.readOnly || this.doc.cantEdit) },\n\n scrollTo: methodOp(function (x, y) { scrollToCoords(this, x, y); }),\n getScrollInfo: function() {\n var scroller = this.display.scroller;\n return {left: scroller.scrollLeft, top: scroller.scrollTop,\n height: scroller.scrollHeight - scrollGap(this) - this.display.barHeight,\n width: scroller.scrollWidth - scrollGap(this) - this.display.barWidth,\n clientHeight: displayHeight(this), clientWidth: displayWidth(this)}\n },\n\n scrollIntoView: methodOp(function(range, margin) {\n if (range == null) {\n range = {from: this.doc.sel.primary().head, to: null};\n if (margin == null) { margin = this.options.cursorScrollMargin; }\n } else if (typeof range == \"number\") {\n range = {from: Pos(range, 0), to: null};\n } else if (range.from == null) {\n range = {from: range, to: null};\n }\n if (!range.to) { range.to = range.from; }\n range.margin = margin || 0;\n\n if (range.from.line != null) {\n scrollToRange(this, range);\n } else {\n scrollToCoordsRange(this, range.from, range.to, range.margin);\n }\n }),\n\n setSize: methodOp(function(width, height) {\n var this$1 = this;\n\n var interpret = function (val) { return typeof val == \"number\" || /^\\d+$/.test(String(val)) ? val + \"px\" : val; };\n if (width != null) { this.display.wrapper.style.width = interpret(width); }\n if (height != null) { this.display.wrapper.style.height = interpret(height); }\n if (this.options.lineWrapping) { clearLineMeasurementCache(this); }\n var lineNo = this.display.viewFrom;\n this.doc.iter(lineNo, this.display.viewTo, function (line) {\n if (line.widgets) { for (var i = 0; i < line.widgets.length; i++)\n { if (line.widgets[i].noHScroll) { regLineChange(this$1, lineNo, \"widget\"); break } } }\n ++lineNo;\n });\n this.curOp.forceUpdate = true;\n signal(this, \"refresh\", this);\n }),\n\n operation: function(f){return runInOp(this, f)},\n startOperation: function(){return startOperation(this)},\n endOperation: function(){return endOperation(this)},\n\n refresh: methodOp(function() {\n var oldHeight = this.display.cachedTextHeight;\n regChange(this);\n this.curOp.forceUpdate = true;\n clearCaches(this);\n scrollToCoords(this, this.doc.scrollLeft, this.doc.scrollTop);\n updateGutterSpace(this.display);\n if (oldHeight == null || Math.abs(oldHeight - textHeight(this.display)) > .5 || this.options.lineWrapping)\n { estimateLineHeights(this); }\n signal(this, \"refresh\", this);\n }),\n\n swapDoc: methodOp(function(doc) {\n var old = this.doc;\n old.cm = null;\n // Cancel the current text selection if any (#5821)\n if (this.state.selectingText) { this.state.selectingText(); }\n attachDoc(this, doc);\n clearCaches(this);\n this.display.input.reset();\n scrollToCoords(this, doc.scrollLeft, doc.scrollTop);\n this.curOp.forceScroll = true;\n signalLater(this, \"swapDoc\", this, old);\n return old\n }),\n\n phrase: function(phraseText) {\n var phrases = this.options.phrases;\n return phrases && Object.prototype.hasOwnProperty.call(phrases, phraseText) ? phrases[phraseText] : phraseText\n },\n\n getInputField: function(){return this.display.input.getField()},\n getWrapperElement: function(){return this.display.wrapper},\n getScrollerElement: function(){return this.display.scroller},\n getGutterElement: function(){return this.display.gutters}\n };\n eventMixin(CodeMirror);\n\n CodeMirror.registerHelper = function(type, name, value) {\n if (!helpers.hasOwnProperty(type)) { helpers[type] = CodeMirror[type] = {_global: []}; }\n helpers[type][name] = value;\n };\n CodeMirror.registerGlobalHelper = function(type, name, predicate, value) {\n CodeMirror.registerHelper(type, name, value);\n helpers[type]._global.push({pred: predicate, val: value});\n };\n }\n\n // Used for horizontal relative motion. Dir is -1 or 1 (left or\n // right), unit can be \"codepoint\", \"char\", \"column\" (like char, but\n // doesn't cross line boundaries), \"word\" (across next word), or\n // \"group\" (to the start of next group of word or\n // non-word-non-whitespace chars). The visually param controls\n // whether, in right-to-left text, direction 1 means to move towards\n // the next index in the string, or towards the character to the right\n // of the current position. The resulting position will have a\n // hitSide=true property if it reached the end of the document.\n function findPosH(doc, pos, dir, unit, visually) {\n var oldPos = pos;\n var origDir = dir;\n var lineObj = getLine(doc, pos.line);\n var lineDir = visually && doc.direction == \"rtl\" ? -dir : dir;\n function findNextLine() {\n var l = pos.line + lineDir;\n if (l < doc.first || l >= doc.first + doc.size) { return false }\n pos = new Pos(l, pos.ch, pos.sticky);\n return lineObj = getLine(doc, l)\n }\n function moveOnce(boundToLine) {\n var next;\n if (unit == \"codepoint\") {\n var ch = lineObj.text.charCodeAt(pos.ch + (dir > 0 ? 0 : -1));\n if (isNaN(ch)) {\n next = null;\n } else {\n var astral = dir > 0 ? ch >= 0xD800 && ch < 0xDC00 : ch >= 0xDC00 && ch < 0xDFFF;\n next = new Pos(pos.line, Math.max(0, Math.min(lineObj.text.length, pos.ch + dir * (astral ? 2 : 1))), -dir);\n }\n } else if (visually) {\n next = moveVisually(doc.cm, lineObj, pos, dir);\n } else {\n next = moveLogically(lineObj, pos, dir);\n }\n if (next == null) {\n if (!boundToLine && findNextLine())\n { pos = endOfLine(visually, doc.cm, lineObj, pos.line, lineDir); }\n else\n { return false }\n } else {\n pos = next;\n }\n return true\n }\n\n if (unit == \"char\" || unit == \"codepoint\") {\n moveOnce();\n } else if (unit == \"column\") {\n moveOnce(true);\n } else if (unit == \"word\" || unit == \"group\") {\n var sawType = null, group = unit == \"group\";\n var helper = doc.cm && doc.cm.getHelper(pos, \"wordChars\");\n for (var first = true;; first = false) {\n if (dir < 0 && !moveOnce(!first)) { break }\n var cur = lineObj.text.charAt(pos.ch) || \"\\n\";\n var type = isWordChar(cur, helper) ? \"w\"\n : group && cur == \"\\n\" ? \"n\"\n : !group || /\\s/.test(cur) ? null\n : \"p\";\n if (group && !first && !type) { type = \"s\"; }\n if (sawType && sawType != type) {\n if (dir < 0) {dir = 1; moveOnce(); pos.sticky = \"after\";}\n break\n }\n\n if (type) { sawType = type; }\n if (dir > 0 && !moveOnce(!first)) { break }\n }\n }\n var result = skipAtomic(doc, pos, oldPos, origDir, true);\n if (equalCursorPos(oldPos, result)) { result.hitSide = true; }\n return result\n }\n\n // For relative vertical movement. Dir may be -1 or 1. Unit can be\n // \"page\" or \"line\". The resulting position will have a hitSide=true\n // property if it reached the end of the document.\n function findPosV(cm, pos, dir, unit) {\n var doc = cm.doc, x = pos.left, y;\n if (unit == \"page\") {\n var pageSize = Math.min(cm.display.wrapper.clientHeight, window.innerHeight || document.documentElement.clientHeight);\n var moveAmount = Math.max(pageSize - .5 * textHeight(cm.display), 3);\n y = (dir > 0 ? pos.bottom : pos.top) + dir * moveAmount;\n\n } else if (unit == \"line\") {\n y = dir > 0 ? pos.bottom + 3 : pos.top - 3;\n }\n var target;\n for (;;) {\n target = coordsChar(cm, x, y);\n if (!target.outside) { break }\n if (dir < 0 ? y <= 0 : y >= doc.height) { target.hitSide = true; break }\n y += dir * 5;\n }\n return target\n }\n\n // CONTENTEDITABLE INPUT STYLE\n\n var ContentEditableInput = function(cm) {\n this.cm = cm;\n this.lastAnchorNode = this.lastAnchorOffset = this.lastFocusNode = this.lastFocusOffset = null;\n this.polling = new Delayed();\n this.composing = null;\n this.gracePeriod = false;\n this.readDOMTimeout = null;\n };\n\n ContentEditableInput.prototype.init = function (display) {\n var this$1 = this;\n\n var input = this, cm = input.cm;\n var div = input.div = display.lineDiv;\n div.contentEditable = true;\n disableBrowserMagic(div, cm.options.spellcheck, cm.options.autocorrect, cm.options.autocapitalize);\n\n function belongsToInput(e) {\n for (var t = e.target; t; t = t.parentNode) {\n if (t == div) { return true }\n if (/\\bCodeMirror-(?:line)?widget\\b/.test(t.className)) { break }\n }\n return false\n }\n\n on(div, \"paste\", function (e) {\n if (!belongsToInput(e) || signalDOMEvent(cm, e) || handlePaste(e, cm)) { return }\n // IE doesn't fire input events, so we schedule a read for the pasted content in this way\n if (ie_version <= 11) { setTimeout(operation(cm, function () { return this$1.updateFromDOM(); }), 20); }\n });\n\n on(div, \"compositionstart\", function (e) {\n this$1.composing = {data: e.data, done: false};\n });\n on(div, \"compositionupdate\", function (e) {\n if (!this$1.composing) { this$1.composing = {data: e.data, done: false}; }\n });\n on(div, \"compositionend\", function (e) {\n if (this$1.composing) {\n if (e.data != this$1.composing.data) { this$1.readFromDOMSoon(); }\n this$1.composing.done = true;\n }\n });\n\n on(div, \"touchstart\", function () { return input.forceCompositionEnd(); });\n\n on(div, \"input\", function () {\n if (!this$1.composing) { this$1.readFromDOMSoon(); }\n });\n\n function onCopyCut(e) {\n if (!belongsToInput(e) || signalDOMEvent(cm, e)) { return }\n if (cm.somethingSelected()) {\n setLastCopied({lineWise: false, text: cm.getSelections()});\n if (e.type == \"cut\") { cm.replaceSelection(\"\", null, \"cut\"); }\n } else if (!cm.options.lineWiseCopyCut) {\n return\n } else {\n var ranges = copyableRanges(cm);\n setLastCopied({lineWise: true, text: ranges.text});\n if (e.type == \"cut\") {\n cm.operation(function () {\n cm.setSelections(ranges.ranges, 0, sel_dontScroll);\n cm.replaceSelection(\"\", null, \"cut\");\n });\n }\n }\n if (e.clipboardData) {\n e.clipboardData.clearData();\n var content = lastCopied.text.join(\"\\n\");\n // iOS exposes the clipboard API, but seems to discard content inserted into it\n e.clipboardData.setData(\"Text\", content);\n if (e.clipboardData.getData(\"Text\") == content) {\n e.preventDefault();\n return\n }\n }\n // Old-fashioned briefly-focus-a-textarea hack\n var kludge = hiddenTextarea(), te = kludge.firstChild;\n cm.display.lineSpace.insertBefore(kludge, cm.display.lineSpace.firstChild);\n te.value = lastCopied.text.join(\"\\n\");\n var hadFocus = activeElt();\n selectInput(te);\n setTimeout(function () {\n cm.display.lineSpace.removeChild(kludge);\n hadFocus.focus();\n if (hadFocus == div) { input.showPrimarySelection(); }\n }, 50);\n }\n on(div, \"copy\", onCopyCut);\n on(div, \"cut\", onCopyCut);\n };\n\n ContentEditableInput.prototype.screenReaderLabelChanged = function (label) {\n // Label for screenreaders, accessibility\n if(label) {\n this.div.setAttribute('aria-label', label);\n } else {\n this.div.removeAttribute('aria-label');\n }\n };\n\n ContentEditableInput.prototype.prepareSelection = function () {\n var result = prepareSelection(this.cm, false);\n result.focus = activeElt() == this.div;\n return result\n };\n\n ContentEditableInput.prototype.showSelection = function (info, takeFocus) {\n if (!info || !this.cm.display.view.length) { return }\n if (info.focus || takeFocus) { this.showPrimarySelection(); }\n this.showMultipleSelections(info);\n };\n\n ContentEditableInput.prototype.getSelection = function () {\n return this.cm.display.wrapper.ownerDocument.getSelection()\n };\n\n ContentEditableInput.prototype.showPrimarySelection = function () {\n var sel = this.getSelection(), cm = this.cm, prim = cm.doc.sel.primary();\n var from = prim.from(), to = prim.to();\n\n if (cm.display.viewTo == cm.display.viewFrom || from.line >= cm.display.viewTo || to.line < cm.display.viewFrom) {\n sel.removeAllRanges();\n return\n }\n\n var curAnchor = domToPos(cm, sel.anchorNode, sel.anchorOffset);\n var curFocus = domToPos(cm, sel.focusNode, sel.focusOffset);\n if (curAnchor && !curAnchor.bad && curFocus && !curFocus.bad &&\n cmp(minPos(curAnchor, curFocus), from) == 0 &&\n cmp(maxPos(curAnchor, curFocus), to) == 0)\n { return }\n\n var view = cm.display.view;\n var start = (from.line >= cm.display.viewFrom && posToDOM(cm, from)) ||\n {node: view[0].measure.map[2], offset: 0};\n var end = to.line < cm.display.viewTo && posToDOM(cm, to);\n if (!end) {\n var measure = view[view.length - 1].measure;\n var map = measure.maps ? measure.maps[measure.maps.length - 1] : measure.map;\n end = {node: map[map.length - 1], offset: map[map.length - 2] - map[map.length - 3]};\n }\n\n if (!start || !end) {\n sel.removeAllRanges();\n return\n }\n\n var old = sel.rangeCount && sel.getRangeAt(0), rng;\n try { rng = range(start.node, start.offset, end.offset, end.node); }\n catch(e) {} // Our model of the DOM might be outdated, in which case the range we try to set can be impossible\n if (rng) {\n if (!gecko && cm.state.focused) {\n sel.collapse(start.node, start.offset);\n if (!rng.collapsed) {\n sel.removeAllRanges();\n sel.addRange(rng);\n }\n } else {\n sel.removeAllRanges();\n sel.addRange(rng);\n }\n if (old && sel.anchorNode == null) { sel.addRange(old); }\n else if (gecko) { this.startGracePeriod(); }\n }\n this.rememberSelection();\n };\n\n ContentEditableInput.prototype.startGracePeriod = function () {\n var this$1 = this;\n\n clearTimeout(this.gracePeriod);\n this.gracePeriod = setTimeout(function () {\n this$1.gracePeriod = false;\n if (this$1.selectionChanged())\n { this$1.cm.operation(function () { return this$1.cm.curOp.selectionChanged = true; }); }\n }, 20);\n };\n\n ContentEditableInput.prototype.showMultipleSelections = function (info) {\n removeChildrenAndAdd(this.cm.display.cursorDiv, info.cursors);\n removeChildrenAndAdd(this.cm.display.selectionDiv, info.selection);\n };\n\n ContentEditableInput.prototype.rememberSelection = function () {\n var sel = this.getSelection();\n this.lastAnchorNode = sel.anchorNode; this.lastAnchorOffset = sel.anchorOffset;\n this.lastFocusNode = sel.focusNode; this.lastFocusOffset = sel.focusOffset;\n };\n\n ContentEditableInput.prototype.selectionInEditor = function () {\n var sel = this.getSelection();\n if (!sel.rangeCount) { return false }\n var node = sel.getRangeAt(0).commonAncestorContainer;\n return contains(this.div, node)\n };\n\n ContentEditableInput.prototype.focus = function () {\n if (this.cm.options.readOnly != \"nocursor\") {\n if (!this.selectionInEditor() || activeElt() != this.div)\n { this.showSelection(this.prepareSelection(), true); }\n this.div.focus();\n }\n };\n ContentEditableInput.prototype.blur = function () { this.div.blur(); };\n ContentEditableInput.prototype.getField = function () { return this.div };\n\n ContentEditableInput.prototype.supportsTouch = function () { return true };\n\n ContentEditableInput.prototype.receivedFocus = function () {\n var this$1 = this;\n\n var input = this;\n if (this.selectionInEditor())\n { setTimeout(function () { return this$1.pollSelection(); }, 20); }\n else\n { runInOp(this.cm, function () { return input.cm.curOp.selectionChanged = true; }); }\n\n function poll() {\n if (input.cm.state.focused) {\n input.pollSelection();\n input.polling.set(input.cm.options.pollInterval, poll);\n }\n }\n this.polling.set(this.cm.options.pollInterval, poll);\n };\n\n ContentEditableInput.prototype.selectionChanged = function () {\n var sel = this.getSelection();\n return sel.anchorNode != this.lastAnchorNode || sel.anchorOffset != this.lastAnchorOffset ||\n sel.focusNode != this.lastFocusNode || sel.focusOffset != this.lastFocusOffset\n };\n\n ContentEditableInput.prototype.pollSelection = function () {\n if (this.readDOMTimeout != null || this.gracePeriod || !this.selectionChanged()) { return }\n var sel = this.getSelection(), cm = this.cm;\n // On Android Chrome (version 56, at least), backspacing into an\n // uneditable block element will put the cursor in that element,\n // and then, because it's not editable, hide the virtual keyboard.\n // Because Android doesn't allow us to actually detect backspace\n // presses in a sane way, this code checks for when that happens\n // and simulates a backspace press in this case.\n if (android && chrome && this.cm.display.gutterSpecs.length && isInGutter(sel.anchorNode)) {\n this.cm.triggerOnKeyDown({type: \"keydown\", keyCode: 8, preventDefault: Math.abs});\n this.blur();\n this.focus();\n return\n }\n if (this.composing) { return }\n this.rememberSelection();\n var anchor = domToPos(cm, sel.anchorNode, sel.anchorOffset);\n var head = domToPos(cm, sel.focusNode, sel.focusOffset);\n if (anchor && head) { runInOp(cm, function () {\n setSelection(cm.doc, simpleSelection(anchor, head), sel_dontScroll);\n if (anchor.bad || head.bad) { cm.curOp.selectionChanged = true; }\n }); }\n };\n\n ContentEditableInput.prototype.pollContent = function () {\n if (this.readDOMTimeout != null) {\n clearTimeout(this.readDOMTimeout);\n this.readDOMTimeout = null;\n }\n\n var cm = this.cm, display = cm.display, sel = cm.doc.sel.primary();\n var from = sel.from(), to = sel.to();\n if (from.ch == 0 && from.line > cm.firstLine())\n { from = Pos(from.line - 1, getLine(cm.doc, from.line - 1).length); }\n if (to.ch == getLine(cm.doc, to.line).text.length && to.line < cm.lastLine())\n { to = Pos(to.line + 1, 0); }\n if (from.line < display.viewFrom || to.line > display.viewTo - 1) { return false }\n\n var fromIndex, fromLine, fromNode;\n if (from.line == display.viewFrom || (fromIndex = findViewIndex(cm, from.line)) == 0) {\n fromLine = lineNo(display.view[0].line);\n fromNode = display.view[0].node;\n } else {\n fromLine = lineNo(display.view[fromIndex].line);\n fromNode = display.view[fromIndex - 1].node.nextSibling;\n }\n var toIndex = findViewIndex(cm, to.line);\n var toLine, toNode;\n if (toIndex == display.view.length - 1) {\n toLine = display.viewTo - 1;\n toNode = display.lineDiv.lastChild;\n } else {\n toLine = lineNo(display.view[toIndex + 1].line) - 1;\n toNode = display.view[toIndex + 1].node.previousSibling;\n }\n\n if (!fromNode) { return false }\n var newText = cm.doc.splitLines(domTextBetween(cm, fromNode, toNode, fromLine, toLine));\n var oldText = getBetween(cm.doc, Pos(fromLine, 0), Pos(toLine, getLine(cm.doc, toLine).text.length));\n while (newText.length > 1 && oldText.length > 1) {\n if (lst(newText) == lst(oldText)) { newText.pop(); oldText.pop(); toLine--; }\n else if (newText[0] == oldText[0]) { newText.shift(); oldText.shift(); fromLine++; }\n else { break }\n }\n\n var cutFront = 0, cutEnd = 0;\n var newTop = newText[0], oldTop = oldText[0], maxCutFront = Math.min(newTop.length, oldTop.length);\n while (cutFront < maxCutFront && newTop.charCodeAt(cutFront) == oldTop.charCodeAt(cutFront))\n { ++cutFront; }\n var newBot = lst(newText), oldBot = lst(oldText);\n var maxCutEnd = Math.min(newBot.length - (newText.length == 1 ? cutFront : 0),\n oldBot.length - (oldText.length == 1 ? cutFront : 0));\n while (cutEnd < maxCutEnd &&\n newBot.charCodeAt(newBot.length - cutEnd - 1) == oldBot.charCodeAt(oldBot.length - cutEnd - 1))\n { ++cutEnd; }\n // Try to move start of change to start of selection if ambiguous\n if (newText.length == 1 && oldText.length == 1 && fromLine == from.line) {\n while (cutFront && cutFront > from.ch &&\n newBot.charCodeAt(newBot.length - cutEnd - 1) == oldBot.charCodeAt(oldBot.length - cutEnd - 1)) {\n cutFront--;\n cutEnd++;\n }\n }\n\n newText[newText.length - 1] = newBot.slice(0, newBot.length - cutEnd).replace(/^\\u200b+/, \"\");\n newText[0] = newText[0].slice(cutFront).replace(/\\u200b+$/, \"\");\n\n var chFrom = Pos(fromLine, cutFront);\n var chTo = Pos(toLine, oldText.length ? lst(oldText).length - cutEnd : 0);\n if (newText.length > 1 || newText[0] || cmp(chFrom, chTo)) {\n replaceRange(cm.doc, newText, chFrom, chTo, \"+input\");\n return true\n }\n };\n\n ContentEditableInput.prototype.ensurePolled = function () {\n this.forceCompositionEnd();\n };\n ContentEditableInput.prototype.reset = function () {\n this.forceCompositionEnd();\n };\n ContentEditableInput.prototype.forceCompositionEnd = function () {\n if (!this.composing) { return }\n clearTimeout(this.readDOMTimeout);\n this.composing = null;\n this.updateFromDOM();\n this.div.blur();\n this.div.focus();\n };\n ContentEditableInput.prototype.readFromDOMSoon = function () {\n var this$1 = this;\n\n if (this.readDOMTimeout != null) { return }\n this.readDOMTimeout = setTimeout(function () {\n this$1.readDOMTimeout = null;\n if (this$1.composing) {\n if (this$1.composing.done) { this$1.composing = null; }\n else { return }\n }\n this$1.updateFromDOM();\n }, 80);\n };\n\n ContentEditableInput.prototype.updateFromDOM = function () {\n var this$1 = this;\n\n if (this.cm.isReadOnly() || !this.pollContent())\n { runInOp(this.cm, function () { return regChange(this$1.cm); }); }\n };\n\n ContentEditableInput.prototype.setUneditable = function (node) {\n node.contentEditable = \"false\";\n };\n\n ContentEditableInput.prototype.onKeyPress = function (e) {\n if (e.charCode == 0 || this.composing) { return }\n e.preventDefault();\n if (!this.cm.isReadOnly())\n { operation(this.cm, applyTextInput)(this.cm, String.fromCharCode(e.charCode == null ? e.keyCode : e.charCode), 0); }\n };\n\n ContentEditableInput.prototype.readOnlyChanged = function (val) {\n this.div.contentEditable = String(val != \"nocursor\");\n };\n\n ContentEditableInput.prototype.onContextMenu = function () {};\n ContentEditableInput.prototype.resetPosition = function () {};\n\n ContentEditableInput.prototype.needsContentAttribute = true;\n\n function posToDOM(cm, pos) {\n var view = findViewForLine(cm, pos.line);\n if (!view || view.hidden) { return null }\n var line = getLine(cm.doc, pos.line);\n var info = mapFromLineView(view, line, pos.line);\n\n var order = getOrder(line, cm.doc.direction), side = \"left\";\n if (order) {\n var partPos = getBidiPartAt(order, pos.ch);\n side = partPos % 2 ? \"right\" : \"left\";\n }\n var result = nodeAndOffsetInLineMap(info.map, pos.ch, side);\n result.offset = result.collapse == \"right\" ? result.end : result.start;\n return result\n }\n\n function isInGutter(node) {\n for (var scan = node; scan; scan = scan.parentNode)\n { if (/CodeMirror-gutter-wrapper/.test(scan.className)) { return true } }\n return false\n }\n\n function badPos(pos, bad) { if (bad) { pos.bad = true; } return pos }\n\n function domTextBetween(cm, from, to, fromLine, toLine) {\n var text = \"\", closing = false, lineSep = cm.doc.lineSeparator(), extraLinebreak = false;\n function recognizeMarker(id) { return function (marker) { return marker.id == id; } }\n function close() {\n if (closing) {\n text += lineSep;\n if (extraLinebreak) { text += lineSep; }\n closing = extraLinebreak = false;\n }\n }\n function addText(str) {\n if (str) {\n close();\n text += str;\n }\n }\n function walk(node) {\n if (node.nodeType == 1) {\n var cmText = node.getAttribute(\"cm-text\");\n if (cmText) {\n addText(cmText);\n return\n }\n var markerID = node.getAttribute(\"cm-marker\"), range;\n if (markerID) {\n var found = cm.findMarks(Pos(fromLine, 0), Pos(toLine + 1, 0), recognizeMarker(+markerID));\n if (found.length && (range = found[0].find(0)))\n { addText(getBetween(cm.doc, range.from, range.to).join(lineSep)); }\n return\n }\n if (node.getAttribute(\"contenteditable\") == \"false\") { return }\n var isBlock = /^(pre|div|p|li|table|br)$/i.test(node.nodeName);\n if (!/^br$/i.test(node.nodeName) && node.textContent.length == 0) { return }\n\n if (isBlock) { close(); }\n for (var i = 0; i < node.childNodes.length; i++)\n { walk(node.childNodes[i]); }\n\n if (/^(pre|p)$/i.test(node.nodeName)) { extraLinebreak = true; }\n if (isBlock) { closing = true; }\n } else if (node.nodeType == 3) {\n addText(node.nodeValue.replace(/\\u200b/g, \"\").replace(/\\u00a0/g, \" \"));\n }\n }\n for (;;) {\n walk(from);\n if (from == to) { break }\n from = from.nextSibling;\n extraLinebreak = false;\n }\n return text\n }\n\n function domToPos(cm, node, offset) {\n var lineNode;\n if (node == cm.display.lineDiv) {\n lineNode = cm.display.lineDiv.childNodes[offset];\n if (!lineNode) { return badPos(cm.clipPos(Pos(cm.display.viewTo - 1)), true) }\n node = null; offset = 0;\n } else {\n for (lineNode = node;; lineNode = lineNode.parentNode) {\n if (!lineNode || lineNode == cm.display.lineDiv) { return null }\n if (lineNode.parentNode && lineNode.parentNode == cm.display.lineDiv) { break }\n }\n }\n for (var i = 0; i < cm.display.view.length; i++) {\n var lineView = cm.display.view[i];\n if (lineView.node == lineNode)\n { return locateNodeInLineView(lineView, node, offset) }\n }\n }\n\n function locateNodeInLineView(lineView, node, offset) {\n var wrapper = lineView.text.firstChild, bad = false;\n if (!node || !contains(wrapper, node)) { return badPos(Pos(lineNo(lineView.line), 0), true) }\n if (node == wrapper) {\n bad = true;\n node = wrapper.childNodes[offset];\n offset = 0;\n if (!node) {\n var line = lineView.rest ? lst(lineView.rest) : lineView.line;\n return badPos(Pos(lineNo(line), line.text.length), bad)\n }\n }\n\n var textNode = node.nodeType == 3 ? node : null, topNode = node;\n if (!textNode && node.childNodes.length == 1 && node.firstChild.nodeType == 3) {\n textNode = node.firstChild;\n if (offset) { offset = textNode.nodeValue.length; }\n }\n while (topNode.parentNode != wrapper) { topNode = topNode.parentNode; }\n var measure = lineView.measure, maps = measure.maps;\n\n function find(textNode, topNode, offset) {\n for (var i = -1; i < (maps ? maps.length : 0); i++) {\n var map = i < 0 ? measure.map : maps[i];\n for (var j = 0; j < map.length; j += 3) {\n var curNode = map[j + 2];\n if (curNode == textNode || curNode == topNode) {\n var line = lineNo(i < 0 ? lineView.line : lineView.rest[i]);\n var ch = map[j] + offset;\n if (offset < 0 || curNode != textNode) { ch = map[j + (offset ? 1 : 0)]; }\n return Pos(line, ch)\n }\n }\n }\n }\n var found = find(textNode, topNode, offset);\n if (found) { return badPos(found, bad) }\n\n // FIXME this is all really shaky. might handle the few cases it needs to handle, but likely to cause problems\n for (var after = topNode.nextSibling, dist = textNode ? textNode.nodeValue.length - offset : 0; after; after = after.nextSibling) {\n found = find(after, after.firstChild, 0);\n if (found)\n { return badPos(Pos(found.line, found.ch - dist), bad) }\n else\n { dist += after.textContent.length; }\n }\n for (var before = topNode.previousSibling, dist$1 = offset; before; before = before.previousSibling) {\n found = find(before, before.firstChild, -1);\n if (found)\n { return badPos(Pos(found.line, found.ch + dist$1), bad) }\n else\n { dist$1 += before.textContent.length; }\n }\n }\n\n // TEXTAREA INPUT STYLE\n\n var TextareaInput = function(cm) {\n this.cm = cm;\n // See input.poll and input.reset\n this.prevInput = \"\";\n\n // Flag that indicates whether we expect input to appear real soon\n // now (after some event like 'keypress' or 'input') and are\n // polling intensively.\n this.pollingFast = false;\n // Self-resetting timeout for the poller\n this.polling = new Delayed();\n // Used to work around IE issue with selection being forgotten when focus moves away from textarea\n this.hasSelection = false;\n this.composing = null;\n };\n\n TextareaInput.prototype.init = function (display) {\n var this$1 = this;\n\n var input = this, cm = this.cm;\n this.createField(display);\n var te = this.textarea;\n\n display.wrapper.insertBefore(this.wrapper, display.wrapper.firstChild);\n\n // Needed to hide big blue blinking cursor on Mobile Safari (doesn't seem to work in iOS 8 anymore)\n if (ios) { te.style.width = \"0px\"; }\n\n on(te, \"input\", function () {\n if (ie && ie_version >= 9 && this$1.hasSelection) { this$1.hasSelection = null; }\n input.poll();\n });\n\n on(te, \"paste\", function (e) {\n if (signalDOMEvent(cm, e) || handlePaste(e, cm)) { return }\n\n cm.state.pasteIncoming = +new Date;\n input.fastPoll();\n });\n\n function prepareCopyCut(e) {\n if (signalDOMEvent(cm, e)) { return }\n if (cm.somethingSelected()) {\n setLastCopied({lineWise: false, text: cm.getSelections()});\n } else if (!cm.options.lineWiseCopyCut) {\n return\n } else {\n var ranges = copyableRanges(cm);\n setLastCopied({lineWise: true, text: ranges.text});\n if (e.type == \"cut\") {\n cm.setSelections(ranges.ranges, null, sel_dontScroll);\n } else {\n input.prevInput = \"\";\n te.value = ranges.text.join(\"\\n\");\n selectInput(te);\n }\n }\n if (e.type == \"cut\") { cm.state.cutIncoming = +new Date; }\n }\n on(te, \"cut\", prepareCopyCut);\n on(te, \"copy\", prepareCopyCut);\n\n on(display.scroller, \"paste\", function (e) {\n if (eventInWidget(display, e) || signalDOMEvent(cm, e)) { return }\n if (!te.dispatchEvent) {\n cm.state.pasteIncoming = +new Date;\n input.focus();\n return\n }\n\n // Pass the `paste` event to the textarea so it's handled by its event listener.\n var event = new Event(\"paste\");\n event.clipboardData = e.clipboardData;\n te.dispatchEvent(event);\n });\n\n // Prevent normal selection in the editor (we handle our own)\n on(display.lineSpace, \"selectstart\", function (e) {\n if (!eventInWidget(display, e)) { e_preventDefault(e); }\n });\n\n on(te, \"compositionstart\", function () {\n var start = cm.getCursor(\"from\");\n if (input.composing) { input.composing.range.clear(); }\n input.composing = {\n start: start,\n range: cm.markText(start, cm.getCursor(\"to\"), {className: \"CodeMirror-composing\"})\n };\n });\n on(te, \"compositionend\", function () {\n if (input.composing) {\n input.poll();\n input.composing.range.clear();\n input.composing = null;\n }\n });\n };\n\n TextareaInput.prototype.createField = function (_display) {\n // Wraps and hides input textarea\n this.wrapper = hiddenTextarea();\n // The semihidden textarea that is focused when the editor is\n // focused, and receives input.\n this.textarea = this.wrapper.firstChild;\n };\n\n TextareaInput.prototype.screenReaderLabelChanged = function (label) {\n // Label for screenreaders, accessibility\n if(label) {\n this.textarea.setAttribute('aria-label', label);\n } else {\n this.textarea.removeAttribute('aria-label');\n }\n };\n\n TextareaInput.prototype.prepareSelection = function () {\n // Redraw the selection and/or cursor\n var cm = this.cm, display = cm.display, doc = cm.doc;\n var result = prepareSelection(cm);\n\n // Move the hidden textarea near the cursor to prevent scrolling artifacts\n if (cm.options.moveInputWithCursor) {\n var headPos = cursorCoords(cm, doc.sel.primary().head, \"div\");\n var wrapOff = display.wrapper.getBoundingClientRect(), lineOff = display.lineDiv.getBoundingClientRect();\n result.teTop = Math.max(0, Math.min(display.wrapper.clientHeight - 10,\n headPos.top + lineOff.top - wrapOff.top));\n result.teLeft = Math.max(0, Math.min(display.wrapper.clientWidth - 10,\n headPos.left + lineOff.left - wrapOff.left));\n }\n\n return result\n };\n\n TextareaInput.prototype.showSelection = function (drawn) {\n var cm = this.cm, display = cm.display;\n removeChildrenAndAdd(display.cursorDiv, drawn.cursors);\n removeChildrenAndAdd(display.selectionDiv, drawn.selection);\n if (drawn.teTop != null) {\n this.wrapper.style.top = drawn.teTop + \"px\";\n this.wrapper.style.left = drawn.teLeft + \"px\";\n }\n };\n\n // Reset the input to correspond to the selection (or to be empty,\n // when not typing and nothing is selected)\n TextareaInput.prototype.reset = function (typing) {\n if (this.contextMenuPending || this.composing) { return }\n var cm = this.cm;\n if (cm.somethingSelected()) {\n this.prevInput = \"\";\n var content = cm.getSelection();\n this.textarea.value = content;\n if (cm.state.focused) { selectInput(this.textarea); }\n if (ie && ie_version >= 9) { this.hasSelection = content; }\n } else if (!typing) {\n this.prevInput = this.textarea.value = \"\";\n if (ie && ie_version >= 9) { this.hasSelection = null; }\n }\n };\n\n TextareaInput.prototype.getField = function () { return this.textarea };\n\n TextareaInput.prototype.supportsTouch = function () { return false };\n\n TextareaInput.prototype.focus = function () {\n if (this.cm.options.readOnly != \"nocursor\" && (!mobile || activeElt() != this.textarea)) {\n try { this.textarea.focus(); }\n catch (e) {} // IE8 will throw if the textarea is display: none or not in DOM\n }\n };\n\n TextareaInput.prototype.blur = function () { this.textarea.blur(); };\n\n TextareaInput.prototype.resetPosition = function () {\n this.wrapper.style.top = this.wrapper.style.left = 0;\n };\n\n TextareaInput.prototype.receivedFocus = function () { this.slowPoll(); };\n\n // Poll for input changes, using the normal rate of polling. This\n // runs as long as the editor is focused.\n TextareaInput.prototype.slowPoll = function () {\n var this$1 = this;\n\n if (this.pollingFast) { return }\n this.polling.set(this.cm.options.pollInterval, function () {\n this$1.poll();\n if (this$1.cm.state.focused) { this$1.slowPoll(); }\n });\n };\n\n // When an event has just come in that is likely to add or change\n // something in the input textarea, we poll faster, to ensure that\n // the change appears on the screen quickly.\n TextareaInput.prototype.fastPoll = function () {\n var missed = false, input = this;\n input.pollingFast = true;\n function p() {\n var changed = input.poll();\n if (!changed && !missed) {missed = true; input.polling.set(60, p);}\n else {input.pollingFast = false; input.slowPoll();}\n }\n input.polling.set(20, p);\n };\n\n // Read input from the textarea, and update the document to match.\n // When something is selected, it is present in the textarea, and\n // selected (unless it is huge, in which case a placeholder is\n // used). When nothing is selected, the cursor sits after previously\n // seen text (can be empty), which is stored in prevInput (we must\n // not reset the textarea when typing, because that breaks IME).\n TextareaInput.prototype.poll = function () {\n var this$1 = this;\n\n var cm = this.cm, input = this.textarea, prevInput = this.prevInput;\n // Since this is called a *lot*, try to bail out as cheaply as\n // possible when it is clear that nothing happened. hasSelection\n // will be the case when there is a lot of text in the textarea,\n // in which case reading its value would be expensive.\n if (this.contextMenuPending || !cm.state.focused ||\n (hasSelection(input) && !prevInput && !this.composing) ||\n cm.isReadOnly() || cm.options.disableInput || cm.state.keySeq)\n { return false }\n\n var text = input.value;\n // If nothing changed, bail.\n if (text == prevInput && !cm.somethingSelected()) { return false }\n // Work around nonsensical selection resetting in IE9/10, and\n // inexplicable appearance of private area unicode characters on\n // some key combos in Mac (#2689).\n if (ie && ie_version >= 9 && this.hasSelection === text ||\n mac && /[\\uf700-\\uf7ff]/.test(text)) {\n cm.display.input.reset();\n return false\n }\n\n if (cm.doc.sel == cm.display.selForContextMenu) {\n var first = text.charCodeAt(0);\n if (first == 0x200b && !prevInput) { prevInput = \"\\u200b\"; }\n if (first == 0x21da) { this.reset(); return this.cm.execCommand(\"undo\") }\n }\n // Find the part of the input that is actually new\n var same = 0, l = Math.min(prevInput.length, text.length);\n while (same < l && prevInput.charCodeAt(same) == text.charCodeAt(same)) { ++same; }\n\n runInOp(cm, function () {\n applyTextInput(cm, text.slice(same), prevInput.length - same,\n null, this$1.composing ? \"*compose\" : null);\n\n // Don't leave long text in the textarea, since it makes further polling slow\n if (text.length > 1000 || text.indexOf(\"\\n\") > -1) { input.value = this$1.prevInput = \"\"; }\n else { this$1.prevInput = text; }\n\n if (this$1.composing) {\n this$1.composing.range.clear();\n this$1.composing.range = cm.markText(this$1.composing.start, cm.getCursor(\"to\"),\n {className: \"CodeMirror-composing\"});\n }\n });\n return true\n };\n\n TextareaInput.prototype.ensurePolled = function () {\n if (this.pollingFast && this.poll()) { this.pollingFast = false; }\n };\n\n TextareaInput.prototype.onKeyPress = function () {\n if (ie && ie_version >= 9) { this.hasSelection = null; }\n this.fastPoll();\n };\n\n TextareaInput.prototype.onContextMenu = function (e) {\n var input = this, cm = input.cm, display = cm.display, te = input.textarea;\n if (input.contextMenuPending) { input.contextMenuPending(); }\n var pos = posFromMouse(cm, e), scrollPos = display.scroller.scrollTop;\n if (!pos || presto) { return } // Opera is difficult.\n\n // Reset the current text selection only if the click is done outside of the selection\n // and 'resetSelectionOnContextMenu' option is true.\n var reset = cm.options.resetSelectionOnContextMenu;\n if (reset && cm.doc.sel.contains(pos) == -1)\n { operation(cm, setSelection)(cm.doc, simpleSelection(pos), sel_dontScroll); }\n\n var oldCSS = te.style.cssText, oldWrapperCSS = input.wrapper.style.cssText;\n var wrapperBox = input.wrapper.offsetParent.getBoundingClientRect();\n input.wrapper.style.cssText = \"position: static\";\n te.style.cssText = \"position: absolute; width: 30px; height: 30px;\\n top: \" + (e.clientY - wrapperBox.top - 5) + \"px; left: \" + (e.clientX - wrapperBox.left - 5) + \"px;\\n z-index: 1000; background: \" + (ie ? \"rgba(255, 255, 255, .05)\" : \"transparent\") + \";\\n outline: none; border-width: 0; outline: none; overflow: hidden; opacity: .05; filter: alpha(opacity=5);\";\n var oldScrollY;\n if (webkit) { oldScrollY = window.scrollY; } // Work around Chrome issue (#2712)\n display.input.focus();\n if (webkit) { window.scrollTo(null, oldScrollY); }\n display.input.reset();\n // Adds \"Select all\" to context menu in FF\n if (!cm.somethingSelected()) { te.value = input.prevInput = \" \"; }\n input.contextMenuPending = rehide;\n display.selForContextMenu = cm.doc.sel;\n clearTimeout(display.detectingSelectAll);\n\n // Select-all will be greyed out if there's nothing to select, so\n // this adds a zero-width space so that we can later check whether\n // it got selected.\n function prepareSelectAllHack() {\n if (te.selectionStart != null) {\n var selected = cm.somethingSelected();\n var extval = \"\\u200b\" + (selected ? te.value : \"\");\n te.value = \"\\u21da\"; // Used to catch context-menu undo\n te.value = extval;\n input.prevInput = selected ? \"\" : \"\\u200b\";\n te.selectionStart = 1; te.selectionEnd = extval.length;\n // Re-set this, in case some other handler touched the\n // selection in the meantime.\n display.selForContextMenu = cm.doc.sel;\n }\n }\n function rehide() {\n if (input.contextMenuPending != rehide) { return }\n input.contextMenuPending = false;\n input.wrapper.style.cssText = oldWrapperCSS;\n te.style.cssText = oldCSS;\n if (ie && ie_version < 9) { display.scrollbars.setScrollTop(display.scroller.scrollTop = scrollPos); }\n\n // Try to detect the user choosing select-all\n if (te.selectionStart != null) {\n if (!ie || (ie && ie_version < 9)) { prepareSelectAllHack(); }\n var i = 0, poll = function () {\n if (display.selForContextMenu == cm.doc.sel && te.selectionStart == 0 &&\n te.selectionEnd > 0 && input.prevInput == \"\\u200b\") {\n operation(cm, selectAll)(cm);\n } else if (i++ < 10) {\n display.detectingSelectAll = setTimeout(poll, 500);\n } else {\n display.selForContextMenu = null;\n display.input.reset();\n }\n };\n display.detectingSelectAll = setTimeout(poll, 200);\n }\n }\n\n if (ie && ie_version >= 9) { prepareSelectAllHack(); }\n if (captureRightClick) {\n e_stop(e);\n var mouseup = function () {\n off(window, \"mouseup\", mouseup);\n setTimeout(rehide, 20);\n };\n on(window, \"mouseup\", mouseup);\n } else {\n setTimeout(rehide, 50);\n }\n };\n\n TextareaInput.prototype.readOnlyChanged = function (val) {\n if (!val) { this.reset(); }\n this.textarea.disabled = val == \"nocursor\";\n this.textarea.readOnly = !!val;\n };\n\n TextareaInput.prototype.setUneditable = function () {};\n\n TextareaInput.prototype.needsContentAttribute = false;\n\n function fromTextArea(textarea, options) {\n options = options ? copyObj(options) : {};\n options.value = textarea.value;\n if (!options.tabindex && textarea.tabIndex)\n { options.tabindex = textarea.tabIndex; }\n if (!options.placeholder && textarea.placeholder)\n { options.placeholder = textarea.placeholder; }\n // Set autofocus to true if this textarea is focused, or if it has\n // autofocus and no other element is focused.\n if (options.autofocus == null) {\n var hasFocus = activeElt();\n options.autofocus = hasFocus == textarea ||\n textarea.getAttribute(\"autofocus\") != null && hasFocus == document.body;\n }\n\n function save() {textarea.value = cm.getValue();}\n\n var realSubmit;\n if (textarea.form) {\n on(textarea.form, \"submit\", save);\n // Deplorable hack to make the submit method do the right thing.\n if (!options.leaveSubmitMethodAlone) {\n var form = textarea.form;\n realSubmit = form.submit;\n try {\n var wrappedSubmit = form.submit = function () {\n save();\n form.submit = realSubmit;\n form.submit();\n form.submit = wrappedSubmit;\n };\n } catch(e) {}\n }\n }\n\n options.finishInit = function (cm) {\n cm.save = save;\n cm.getTextArea = function () { return textarea; };\n cm.toTextArea = function () {\n cm.toTextArea = isNaN; // Prevent this from being ran twice\n save();\n textarea.parentNode.removeChild(cm.getWrapperElement());\n textarea.style.display = \"\";\n if (textarea.form) {\n off(textarea.form, \"submit\", save);\n if (!options.leaveSubmitMethodAlone && typeof textarea.form.submit == \"function\")\n { textarea.form.submit = realSubmit; }\n }\n };\n };\n\n textarea.style.display = \"none\";\n var cm = CodeMirror(function (node) { return textarea.parentNode.insertBefore(node, textarea.nextSibling); },\n options);\n return cm\n }\n\n function addLegacyProps(CodeMirror) {\n CodeMirror.off = off;\n CodeMirror.on = on;\n CodeMirror.wheelEventPixels = wheelEventPixels;\n CodeMirror.Doc = Doc;\n CodeMirror.splitLines = splitLinesAuto;\n CodeMirror.countColumn = countColumn;\n CodeMirror.findColumn = findColumn;\n CodeMirror.isWordChar = isWordCharBasic;\n CodeMirror.Pass = Pass;\n CodeMirror.signal = signal;\n CodeMirror.Line = Line;\n CodeMirror.changeEnd = changeEnd;\n CodeMirror.scrollbarModel = scrollbarModel;\n CodeMirror.Pos = Pos;\n CodeMirror.cmpPos = cmp;\n CodeMirror.modes = modes;\n CodeMirror.mimeModes = mimeModes;\n CodeMirror.resolveMode = resolveMode;\n CodeMirror.getMode = getMode;\n CodeMirror.modeExtensions = modeExtensions;\n CodeMirror.extendMode = extendMode;\n CodeMirror.copyState = copyState;\n CodeMirror.startState = startState;\n CodeMirror.innerMode = innerMode;\n CodeMirror.commands = commands;\n CodeMirror.keyMap = keyMap;\n CodeMirror.keyName = keyName;\n CodeMirror.isModifierKey = isModifierKey;\n CodeMirror.lookupKey = lookupKey;\n CodeMirror.normalizeKeyMap = normalizeKeyMap;\n CodeMirror.StringStream = StringStream;\n CodeMirror.SharedTextMarker = SharedTextMarker;\n CodeMirror.TextMarker = TextMarker;\n CodeMirror.LineWidget = LineWidget;\n CodeMirror.e_preventDefault = e_preventDefault;\n CodeMirror.e_stopPropagation = e_stopPropagation;\n CodeMirror.e_stop = e_stop;\n CodeMirror.addClass = addClass;\n CodeMirror.contains = contains;\n CodeMirror.rmClass = rmClass;\n CodeMirror.keyNames = keyNames;\n }\n\n // EDITOR CONSTRUCTOR\n\n defineOptions(CodeMirror);\n\n addEditorMethods(CodeMirror);\n\n // Set up methods on CodeMirror's prototype to redirect to the editor's document.\n var dontDelegate = \"iter insert remove copy getEditor constructor\".split(\" \");\n for (var prop in Doc.prototype) { if (Doc.prototype.hasOwnProperty(prop) && indexOf(dontDelegate, prop) < 0)\n { CodeMirror.prototype[prop] = (function(method) {\n return function() {return method.apply(this.doc, arguments)}\n })(Doc.prototype[prop]); } }\n\n eventMixin(Doc);\n CodeMirror.inputStyles = {\"textarea\": TextareaInput, \"contenteditable\": ContentEditableInput};\n\n // Extra arguments are stored as the mode's dependencies, which is\n // used by (legacy) mechanisms like loadmode.js to automatically\n // load a mode. (Preferred mechanism is the require/define calls.)\n CodeMirror.defineMode = function(name/*, mode, …*/) {\n if (!CodeMirror.defaults.mode && name != \"null\") { CodeMirror.defaults.mode = name; }\n defineMode.apply(this, arguments);\n };\n\n CodeMirror.defineMIME = defineMIME;\n\n // Minimal default mode.\n CodeMirror.defineMode(\"null\", function () { return ({token: function (stream) { return stream.skipToEnd(); }}); });\n CodeMirror.defineMIME(\"text/plain\", \"null\");\n\n // EXTENSIONS\n\n CodeMirror.defineExtension = function (name, func) {\n CodeMirror.prototype[name] = func;\n };\n CodeMirror.defineDocExtension = function (name, func) {\n Doc.prototype[name] = func;\n };\n\n CodeMirror.fromTextArea = fromTextArea;\n\n addLegacyProps(CodeMirror);\n\n CodeMirror.version = \"5.65.6\";\n\n return CodeMirror;\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( \"