{"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:///(webpack)/buildin/global.js","webpack:///./node_modules/@stimulus/webpack-helpers/dist/index.js","webpack:///./node_modules/bootstrap/dist/js/bootstrap.js","webpack:///./app/webpack/controllers/public/page_controller.js","webpack:///./app/webpack/controllers/public/entrant_form_controller.js","webpack:///./app/webpack/packs/public.js","webpack:///./app/webpack/controllers/public sync \\.js$","webpack:///./node_modules/jquery/dist/jquery.js","webpack:///./node_modules/rails-ujs/lib/assets/compiled/rails-ujs.js","webpack:///./node_modules/popper.js/dist/esm/popper.js","webpack:///(webpack)/buildin/module.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","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","testReflectExtension","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","_typeof","obj","Function","definitionsFromContext","logicalName","identifierForContextKey","definitionForModuleAndIdentifier","definitionForModuleWithContextAndKey","factory","$","Popper","_interopDefaultLegacy","$__default","Popper__default","_defineProperties","props","writable","_createClass","Constructor","protoProps","staticProps","_extends","source","_setPrototypeOf","TRANSITION_END","transitionEndEmulator","duration","called","one","Util","setTimeout","triggerTransitionEnd","getUID","prefix","random","getElementById","getSelectorFromElement","hrefAttr","querySelector","getTransitionDurationFromElement","transitionDuration","css","transitionDelay","floatTransitionDuration","parseFloat","floatTransitionDelay","reflow","offsetHeight","trigger","supportsTransitionEnd","Boolean","isElement","typeCheckConfig","componentName","config","configTypes","expectedTypes","valueType","RegExp","test","findShadowRoot","attachShadow","getRootNode","root","ShadowRoot","parentNode","jQueryDetection","version","fn","jquery","emulateTransitionEnd","special","bindType","delegateType","handle","is","handleObj","handler","DATA_KEY$a","JQUERY_NO_CONFLICT$a","Alert","_element","_proto","close","rootElement","_getRootElement","_triggerCloseEvent","isDefaultPrevented","_removeElement","dispose","removeData","parent","closeEvent","Event","removeClass","hasClass","_destroyElement","detach","remove","_jQueryInterface","each","$element","_handleDismiss","alertInstance","preventDefault","on","noConflict","DATA_KEY$9","JQUERY_NO_CONFLICT$9","CLASS_NAME_ACTIVE$3","SELECTOR_DATA_TOGGLE_CARROT","SELECTOR_INPUT","SELECTOR_BUTTON","Button","shouldAvoidTriggerChange","toggle","triggerChangeEvent","addAriaPressed","input","checked","classList","activeElement","focus","toggleClass","avoidTriggerChange","button","initialButton","inputBtn","buttons","len","_len","_button","NAME$8","DATA_KEY$8","EVENT_KEY$8","JQUERY_NO_CONFLICT$8","CLASS_NAME_ACTIVE$2","DIRECTION_NEXT","DIRECTION_PREV","EVENT_SLID","SELECTOR_ACTIVE_ITEM","Default$7","interval","keyboard","slide","pause","wrap","touch","DefaultType$7","PointerType","TOUCH","PEN","Carousel","_items","_interval","_activeElement","_isPaused","_isSliding","touchTimeout","touchStartX","touchDeltaX","_config","_getConfig","_indicatorsElement","_touchSupported","navigator","maxTouchPoints","_pointerEvent","PointerEvent","MSPointerEvent","_addEventListeners","_slide","nextWhenVisible","hidden","prev","cycle","clearInterval","_updateInterval","setInterval","visibilityState","to","activeIndex","_getItemIndex","direction","off","_handleSwipe","absDeltax","abs","_this2","_keydown","_addTouchEventListeners","_this3","originalEvent","pointerType","clientX","touches","end","clearTimeout","move","which","indexOf","_getItemByDirection","isNextDirection","isPrevDirection","lastItemIndex","itemIndex","_triggerSlideEvent","relatedTarget","eventDirectionName","targetIndex","fromIndex","slideEvent","_setActiveIndicatorElement","indicators","nextIndicator","children","addClass","elementInterval","parseInt","defaultInterval","directionalClassName","orderClassName","_this4","activeElementIndex","nextElement","nextElementIndex","isCycling","slidEvent","ride","_dataApiClickHandler","slideIndex","carousels","$carousel","NAME$7","DATA_KEY$7","JQUERY_NO_CONFLICT$7","CLASS_NAME_SHOW$6","CLASS_NAME_COLLAPSE","CLASS_NAME_COLLAPSING","CLASS_NAME_COLLAPSED","DIMENSION_WIDTH","SELECTOR_DATA_TOGGLE$3","Default$6","DefaultType$6","Collapse","_isTransitioning","_triggerArray","id","toggleList","elem","filterElement","foundElem","_selector","_parent","_getParent","_addAriaAndCollapsedClass","hide","show","actives","activesData","not","startEvent","dimension","_getDimension","style","attr","setTransitioning","scrollSize","getBoundingClientRect","triggerArrayLength","isTransitioning","_getTargetFromElement","triggerArray","isOpen","currentTarget","$trigger","selectors","$target","NAME$6","DATA_KEY$6","EVENT_KEY$6","JQUERY_NO_CONFLICT$6","REGEXP_KEYDOWN","ARROW_UP_KEYCODE","CLASS_NAME_DISABLED$1","CLASS_NAME_SHOW$5","CLASS_NAME_MENURIGHT","EVENT_HIDE$3","EVENT_HIDDEN$3","EVENT_CLICK_DATA_API$2","EVENT_KEYDOWN_DATA_API","SELECTOR_DATA_TOGGLE$2","SELECTOR_MENU","Default$5","offset","flip","boundary","reference","display","popperConfig","DefaultType$5","Dropdown","_popper","_menu","_getMenuElement","_inNavbar","_detectNavbar","disabled","isActive","_clearMenus","usePopper","showEvent","_getParentFromElement","referenceElement","_getPopperConfig","noop","hideEvent","destroy","update","scheduleUpdate","stopPropagation","Default","DefaultType","_getPlacement","$parentDropdown","placement","_getOffset","offsets","modifiers","enabled","preventOverflow","boundariesElement","applyStyle","toggles","clickEvent","dropdownMenu","_dataApiKeydownHandler","items","item","NAME$5","DATA_KEY$5","EVENT_KEY$5","JQUERY_NO_CONFLICT$5","CLASS_NAME_OPEN","CLASS_NAME_FADE$4","CLASS_NAME_SHOW$4","CLASS_NAME_STATIC","EVENT_HIDDEN$2","EVENT_SHOW$2","EVENT_FOCUSIN","EVENT_RESIZE","EVENT_CLICK_DISMISS$1","EVENT_KEYDOWN_DISMISS","EVENT_MOUSEDOWN_DISMISS","SELECTOR_FIXED_CONTENT","SELECTOR_STICKY_CONTENT","Default$4","backdrop","DefaultType$4","Modal","_dialog","_backdrop","_isShown","_isBodyOverflowing","_ignoreBackdropClick","_scrollbarWidth","_checkScrollbar","_setScrollbar","_adjustDialog","_setEscapeEvent","_setResizeEvent","_showBackdrop","_showElement","transition","_hideModal","htmlElement","handleUpdate","_triggerBackdropTransition","hideEventPrevented","isModalOverflowing","scrollHeight","clientHeight","overflowY","modalTransitionDuration","modalBody","appendChild","scrollTop","_enforceFocus","shownEvent","transitionComplete","_this5","_this6","_this7","_this8","_resetAdjustments","_resetScrollbar","_removeBackdrop","callback","_this9","animate","createElement","className","appendTo","backdropTransitionDuration","callbackRemove","_backdropTransitionDuration","paddingLeft","paddingRight","rect","round","innerWidth","_getScrollbarWidth","_this10","fixedContent","stickyContent","actualPadding","calculatedPadding","actualMargin","marginRight","calculatedMargin","padding","margin","scrollDiv","scrollbarWidth","width","clientWidth","removeChild","_this11","uriAttrs","DefaultWhitelist","area","br","col","code","div","em","hr","h1","h2","h3","h4","h5","h6","img","li","ol","pre","small","span","sub","sup","strong","u","ul","SAFE_URL_PATTERN","DATA_URL_PATTERN","sanitizeHtml","unsafeHtml","whiteList","sanitizeFn","createdDocument","DOMParser","parseFromString","whitelistKeys","_loop","el","elName","nodeName","attributeList","whitelistedAttributes","allowedAttributeList","attrName","nodeValue","regExp","attrRegex","allowedAttribute","innerHTML","NAME$4","DATA_KEY$4","EVENT_KEY$4","JQUERY_NO_CONFLICT$4","BSCLS_PREFIX_REGEX$1","DISALLOWED_ATTRIBUTES","CLASS_NAME_FADE$3","CLASS_NAME_SHOW$3","HOVER_STATE_SHOW","HOVER_STATE_OUT","TRIGGER_HOVER","TRIGGER_FOCUS","AttachmentMap","AUTO","TOP","RIGHT","BOTTOM","LEFT","Default$3","animation","template","title","delay","html","container","fallbackPlacement","customClass","sanitize","DefaultType$3","Event$1","HIDE","HIDDEN","SHOW","SHOWN","INSERTED","CLICK","FOCUSIN","FOCUSOUT","MOUSEENTER","MOUSELEAVE","Tooltip","_isEnabled","_timeout","_hoverState","_activeTrigger","tip","_setListeners","enable","disable","toggleEnabled","dataKey","DATA_KEY","_getDelegateConfig","click","_isWithActiveTrigger","_enter","_leave","getTipElement","EVENT_KEY","_hideModalHandler","isWithContent","shadowRoot","isInTheDom","ownerDocument","tipId","NAME","setContent","attachment","_getAttachment","addAttachmentClass","_getContainer","complete","_fixTransition","prevHoverState","_cleanTipClass","getTitle","CLASS_PREFIX$1","setElementContent","text","empty","append","behavior","arrow","onCreate","originalPlacement","_handlePopperPlacementChange","onUpdate","eventIn","eventOut","_fixTitle","titleType","dataAttributes","dataAttr","$tip","tabClass","popperData","instance","popper","initConfigAnimation","NAME$3","DATA_KEY$3","EVENT_KEY$3","JQUERY_NO_CONFLICT$3","BSCLS_PREFIX_REGEX","Default$2","DefaultType$2","Popover","_Tooltip","subClass","superClass","_getContent","CLASS_PREFIX","CLASS_NAME_FADE$2","NAME$2","DATA_KEY$2","EVENT_KEY$2","JQUERY_NO_CONFLICT$2","CLASS_NAME_ACTIVE$1","METHOD_POSITION","SELECTOR_NAV_LIST_GROUP$1","SELECTOR_NAV_LINKS","Default$1","DefaultType$1","ScrollSpy","_scrollElement","_offsets","_targets","_activeTarget","_scrollHeight","_process","autoMethod","offsetMethod","offsetBase","_getScrollTop","_getScrollHeight","targetSelector","targetBCR","height","top","pageYOffset","_getOffsetHeight","innerHeight","maxScroll","_activate","_clear","queries","$link","parents","scrollSpys","$spy","DATA_KEY$1","JQUERY_NO_CONFLICT$1","CLASS_NAME_ACTIVE","CLASS_NAME_FADE$1","CLASS_NAME_SHOW$1","SELECTOR_ACTIVE","SELECTOR_ACTIVE_UL","Tab","previous","listElement","itemSelector","makeArray","hiddenEvent","active","_transitionComplete","dropdownChild","dropdownElement","dropdownToggleList","$this","JQUERY_NO_CONFLICT","CLASS_NAME_HIDE","CLASS_NAME_SHOW","CLASS_NAME_SHOWING","EVENT_CLICK_DISMISS","autohide","Toast","_clearTimeout","_close","Scrollspy","_setupPages","ev","valid","_validateBirthDate","pageEl","_validatePage","targetPageEl","reverse","reportValidity","_validateSurveyAnswers","birthDateEl","maxDate","Date","birthYear","birthMonth","birthDay","errorNode","textContent","numberQuestions","question","required","errorEls","pageEls","errorPageEl","Rails","require","webpackContext","req","webpackContextResolve","global","w","noGlobal","arr","getProto","_slice","flat","array","class2type","hasOwn","fnToString","ObjectFunctionString","support","isFunction","isWindow","preservedScriptAttributes","src","nonce","noModule","DOMEval","doc","val","script","toType","jQuery","init","isArrayLike","toArray","num","pushStack","elems","ret","merge","prevObject","first","eq","last","even","grep","_elem","odd","j","splice","options","copy","copyIsArray","clone","deep","isPlainObject","undefined","expando","isReady","msg","proto","Ctor","isEmptyObject","globalEval","results","inArray","second","invert","callbackExpect","arg","guid","Sizzle","Expr","getText","isXML","tokenize","compile","select","outermostContext","sortInput","hasDuplicate","setDocument","docElem","documentIsHTML","rbuggyQSA","rbuggyMatches","preferredDoc","dirruns","classCache","createCache","tokenCache","compilerCache","nonnativeSelectorCache","sortOrder","pushNative","list","booleans","whitespace","pseudos","rwhitespace","rtrim","rcomma","rcombinators","rdescend","rpseudo","ridentifier","matchExpr","rhtml","rinputs","rheader","rnative","rquickExpr","rsibling","runescape","funescape","escape","nonHex","high","String","fromCharCode","rcssescape","fcssescape","ch","asCodePoint","charCodeAt","unloadHandler","inDisabledFieldset","addCombinator","dir","childNodes","els","seed","nid","groups","newSelector","newContext","exec","getElementsByTagName","getElementsByClassName","qsa","testContext","toSelector","qsaError","cache","cacheLength","shift","markFunction","assert","addHandle","attrs","attrHandle","siblingCheck","cur","diff","sourceIndex","nextSibling","createInputPseudo","createButtonPseudo","createDisabledPseudo","isDisabled","createPositionalPseudo","argument","matchIndexes","namespace","namespaceURI","hasCompare","subWindow","defaultView","attachEvent","createComment","getById","getElementsByName","attrId","getAttributeNode","tag","tmp","matchesSelector","webkitMatchesSelector","mozMatchesSelector","oMatchesSelector","msMatchesSelector","disconnectedMatch","compareDocumentPosition","adown","bup","compare","sortDetached","aup","ap","bp","unshift","expr","specified","sel","uniqueSort","duplicates","detectDuplicates","sortStable","firstChild","createPseudo","relative","preFilter","excess","unquoted","nodeNameSelector","pattern","operator","check","what","_argument","simple","forward","ofType","_context","xml","uniqueCache","outerCache","nodeIndex","useCache","lastChild","uniqueID","pseudo","args","setFilters","idx","matched","matcher","unmatched","lang","elemLang","hash","location","hasFocus","href","tabIndex","selected","selectedIndex","_matchIndexes","radio","checkbox","file","password","image","submit","reset","combinator","base","skip","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","_dir","until","truncate","_siblings","rneedsContext","needsContext","rsingleTag","winnow","qualifier","self","rootjQuery","parseHTML","ready","rparentsprev","guaranteedUnique","contents","sibling","prevAll","addBack","parentsUntil","nextAll","nextUntil","prevUntil","siblings","contentDocument","rnothtmlwhite","Identity","Thrower","ex","adoptValue","noValue","promise","fail","Callbacks","flag","createOptions","firing","memory","_fired","_locked","queue","firingIndex","fire","once","stopOnFalse","lock","locked","fireWith","fired","Deferred","func","tuples","_state","_promise","state","always","deferred","pipe","fns","newDefer","tuple","returned","progress","notify","onFulfilled","onRejected","onProgress","maxDepth","depth","that","mightThrow","notifyWith","resolveWith","process","exceptionHook","stackTrace","rejectWith","getStackHook","stateString","when","singleValue","remaining","resolveContexts","resolveValues","primary","updateFunc","rerrorNames","stack","warn","readyException","readyList","completed","readyWait","wait","doScroll","access","chainable","emptyGet","raw","bulk","_key","rmsPrefix","rdashAlpha","fcamelCase","_all","letter","camelCase","string","acceptData","owner","Data","uid","prop","hasData","dataPriv","dataUser","rbrace","rmultiDash","JSON","parse","getData","_data","_removeData","dequeue","startLength","hooks","_queueHooks","setter","clearQueue","count","defer","pnum","rcssNum","cssExpand","isAttached","composed","isHiddenWithinTree","adjustCSS","valueParts","tween","adjusted","scale","maxIterations","currentValue","initial","unit","cssNumber","initialInUnit","defaultDisplayMap","getDefaultDisplay","showHide","rcheckableType","rtagName","rscriptType","createDocumentFragment","checkClone","cloneNode","noCloneChecked","option","wrapMap","thead","tr","td","_default","getAll","setGlobalEval","refElements","tbody","tfoot","colgroup","caption","th","optgroup","buildFragment","scripts","selection","ignored","attached","fragment","htmlPrefilter","createTextNode","rtypenamespace","returnTrue","returnFalse","expectSync","err","safeActiveElement","_on","types","origFn","leverageNative","notAsync","saved","isTrigger","handleObjIn","eventHandle","events","handlers","namespaces","origType","elemData","triggered","dispatch","delegateCount","setup","mappedTypes","origCount","teardown","removeEvent","nativeEvent","handlerQueue","fix","delegateTarget","preDispatch","isPropagationStopped","isImmediatePropagationStopped","rnamespace","postDispatch","_handlers","matchedHandlers","matchedSelectors","addProp","hook","noBubble","beforeunload","returnValue","defaultPrevented","timeStamp","now","isSimulated","altKey","bubbles","cancelable","changedTouches","ctrlKey","eventPhase","metaKey","pageX","pageY","shiftKey","view","charCode","keyCode","clientY","offsetX","offsetY","pointerId","screenX","screenY","targetTouches","toElement","blur","mouseenter","mouseleave","pointerenter","pointerleave","orig","related","rnoInnerhtml","rchecked","rcleanScript","manipulationTarget","disableScript","restoreScript","cloneCopyEvent","dest","udataOld","udataCur","fixInput","domManip","collection","hasScripts","iNoClone","valueIsFunction","_evalUrl","_remove","keepData","cleanData","dataAndEvents","deepDataAndEvents","srcElements","destElements","inPage","prepend","insertBefore","before","after","replaceWith","replaceChild","prependTo","insertAfter","replaceAll","original","insert","rnumnonpx","rcustomProp","getStyles","opener","getComputedStyle","swap","old","rboxStyle","rtrimCSS","curCSS","computed","minWidth","maxWidth","isCustomProp","getPropertyValue","pixelBoxStyles","addGetHookIf","conditionFn","hookFn","computeStyleTests","cssText","divStyle","pixelPositionVal","reliableMarginLeftVal","roundPixelMeasures","marginLeft","pixelBoxStylesVal","boxSizingReliableVal","position","scrollboxSizeVal","offsetWidth","measure","reliableTrDimensionsVal","backgroundClip","clearCloneStyle","boxSizingReliable","pixelPosition","reliableMarginLeft","scrollboxSize","reliableTrDimensions","table","trChild","trStyle","borderTopWidth","borderBottomWidth","cssPrefixes","emptyStyle","vendorProps","finalPropName","_final","cssProps","capName","vendorPropName","rdisplayswap","cssShow","visibility","cssNormalTransform","letterSpacing","fontWeight","setPositiveNumber","subtract","boxModelAdjustment","box","isBorderBox","styles","computedVal","extra","delta","ceil","getWidthOrHeight","valueIsBorderBox","offsetProp","getClientRects","Tween","easing","cssHooks","opacity","origName","setProperty","isFinite","scrollboxSizeBuggy","border","suffix","expand","expanded","parts","propHooks","run","percent","eased","pos","fx","scrollLeft","linear","swing","cos","PI","fxNow","inProgress","rfxtypes","rrun","schedule","requestAnimationFrame","tick","createFxNow","genFx","includeWidth","createTween","Animation","tweeners","stopped","prefilters","currentTime","startTime","tweens","opts","specialEasing","originalProperties","originalOptions","gotoEnd","propFilter","timer","anim","tweener","oldfire","propTween","restoreDisplay","isBox","dataShow","unqueued","overflow","overflowX","prefilter","speed","opt","speeds","fadeTo","optall","doAnimation","finish","stopQueue","timers","cssFn","slideDown","slideUp","slideToggle","fadeIn","fadeOut","fadeToggle","slow","fast","time","timeout","checkOn","optSelected","radioValue","boolHook","removeAttr","nType","attrHooks","bool","attrNames","lowercaseName","rfocusable","rclickable","stripAndCollapse","getClass","classesToArray","removeProp","propFix","tabindex","classNames","curValue","finalValue","stateVal","isValidValue","rreturn","valHooks","optionSet","focusin","rfocusMorph","stopPropagationCallback","onlyHandlers","bubbleType","ontype","lastElement","eventPath","parentWindow","simulate","triggerHandler","attaches","rquery","parseXML","parserErrorElem","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","statusCode","requestHeaders","requestHeadersNames","strAbort","getResponseHeader","getAllResponseHeaders","setRequestHeader","overrideMimeType","mimeType","status","abort","statusText","finalText","crossDomain","host","hasContent","ifModified","headers","beforeSend","success","send","nativeStatusText","responses","isSuccess","response","modified","ct","finalDataType","firstDataType","ajaxHandleResponses","conv2","current","conv","dataFilter","ajaxConvert","getJSON","getScript","wrapAll","firstElementChild","wrapInner","htmlIsFunction","unwrap","visible","xhr","XMLHttpRequest","xhrSuccessStatus","xhrSupported","cors","_callback","errorCallback","open","username","xhrFields","onload","onerror","onabort","ontimeout","onreadystatechange","responseType","responseText","binary","_callback2","scriptAttrs","charset","scriptCharset","evt","oldCallbacks","rjsonp","jsonp","jsonpCallback","originalSettings","callbackName","overwritten","responseContainer","jsonProp","createHTMLDocument","implementation","keepScripts","parsed","params","animated","setOffset","curPosition","curLeft","curCSSTop","curTop","curOffset","curCSSLeft","curElem","using","win","pageXOffset","offsetParent","parentOffset","scrollTo","Height","Width","defaultExtra","funcName","unbind","undelegate","hover","fnOver","fnOut","proxy","holdReady","hold","parseJSON","isNumeric","isNaN","_jQuery","_$","linkClickSelector","buttonClickSelector","exclude","inputChangeSelector","formSubmitSelector","formInputClickSelector","formDisableSelector","formEnableSelector","fileInputSelector","linkDisableSelector","buttonDisableSelector","cspNonce","meta","ref","setData","csrfParam","csrfToken","CSRFProtection","refreshCSRFTokens","CustomEvent","createEvent","initCustomEvent","dispatchEvent","stopEverything","eventType","AcceptHeaders","createXHR","prepareOptions","processResponse","floor","OPENED","accept","withCredentials","DONE","parser","isCrossDomain","serializeElement","additionalParam","inputs","formElements","form","allowAction","handleConfirm","answer","confirm","disableFormElement","disableFormElements","disableLinkElement","enableFormElement","enableFormElements","enableLinkElement","handleDisabledElement","enableElement","disableElement","replacement","originalText","handleMethod","formContent","link","isRemote","handleRemote","enctype","FormData","formSubmitButtonClick","formNoValidate","handleMetaClick","rails","_rails_loaded","isBrowser","longerTimeoutBrowsers","timeoutDuration","userAgent","debounce","scheduled","functionToCheck","getStyleComputedProperty","getParentNode","getScrollParent","_getStyleComputedProp","isIE11","MSInputMethodContext","documentMode","isIE10","isIE","getOffsetParent","noOffsetParent","nextElementSibling","getRoot","findCommonOffsetParent","element1","element2","order","DOCUMENT_POSITION_FOLLOWING","range","createRange","setStart","setEnd","commonAncestorContainer","element1root","getScroll","side","upperSide","scrollingElement","includeScroll","modifier","bottom","getBordersSize","axis","sideA","sideB","getSize","computedStyle","getWindowSizes","classCallCheck","createClass","defineProperties","getClientRect","sizes","horizScrollbar","vertScrollbar","getOffsetRectRelativeToArbitraryNode","fixedPosition","isHTML","childrenRect","parentRect","scrollParent","borderLeftWidth","marginTop","getViewportOffsetRectRelativeToArtbitraryNode","excludeScroll","relativeOffset","isFixed","getFixedPositionOffsetParent","getBoundaries","boundaries","boundariesNode","_getWindowSizes","isPaddingNumber","getArea","_ref","computeAutoPlacement","refRect","rects","sortedAreas","filteredAreas","_ref2","computedPlacement","variation","getReferenceOffsets","commonOffsetParent","getOuterSizes","x","marginBottom","getOppositePlacement","getPopperOffsets","referenceOffsets","popperRect","popperOffsets","isHoriz","mainSide","secondarySide","measurement","secondaryMeasurement","runModifiers","ends","isDestroyed","arrowStyles","flipped","positionFixed","isCreated","isModifierEnabled","modifierName","getSupportedPropertyName","prefixes","upperProp","toCheck","willChange","disableEventListeners","removeOnDestroy","getWindow","attachToScrollParents","scrollParents","isBody","passive","setupEventListeners","updateBound","scrollElement","eventsEnabled","enableEventListeners","cancelAnimationFrame","setStyles","isFirefox","isModifierRequired","requestingName","requestedName","requesting","isRequired","_requesting","requested","placements","validPlacements","clockwise","counter","BEHAVIORS","parseOffset","basePlacement","useHeight","fragments","frag","divider","search","splitRegex","mergeWithPrevious","str","toValue","index2","shiftvariation","_data$offsets","isVertical","shiftOffsets","transformProp","popperStyles","transform","priority","escapeWithReference","secondary","min","keepTogether","opSide","_data$offsets$arrow","arrowElement","sideCapitalized","altSide","arrowElementSize","center","popperMarginSide","popperBorderSide","sideValue","placementOpposite","flipOrder","refOffsets","overlapsRef","overflowsLeft","overflowsRight","overflowsTop","overflowsBottom","overflowsBoundaries","flippedVariation","flipVariations","getOppositeVariation","inner","subtractLength","bound","computeStyle","legacyGpuAccelerationOption","gpuAcceleration","offsetParentRect","shouldRound","isVariation","sameWidthOddness","bothOddWidth","noRound","horizontalToInteger","verticalToInteger","getRoundedOffsets","devicePixelRatio","prefixedProperty","invertTop","invertLeft","onLoad","modifierOptions","Defaults","Utils","PopperUtils","webpackPolyfill","deprecate","paths"],"mappings":"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","file":"js/public-b1b7f4e065d90506957b.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 = 210);\n","var EventListener =\n/** @class */\nfunction () {\n function EventListener(eventTarget, eventName) {\n this.eventTarget = eventTarget;\n this.eventName = eventName;\n this.unorderedBindings = new Set();\n }\n\n EventListener.prototype.connect = function () {\n this.eventTarget.addEventListener(this.eventName, this, false);\n };\n\n EventListener.prototype.disconnect = function () {\n this.eventTarget.removeEventListener(this.eventName, this, false);\n }; // Binding observer delegate\n\n\n EventListener.prototype.bindingConnected = function (binding) {\n this.unorderedBindings.add(binding);\n };\n\n EventListener.prototype.bindingDisconnected = function (binding) {\n this.unorderedBindings[\"delete\"](binding);\n };\n\n EventListener.prototype.handleEvent = function (event) {\n var extendedEvent = extendEvent(event);\n\n for (var _i = 0, _a = this.bindings; _i < _a.length; _i++) {\n var binding = _a[_i];\n\n if (extendedEvent.immediatePropagationStopped) {\n break;\n } else {\n binding.handleEvent(extendedEvent);\n }\n }\n };\n\n Object.defineProperty(EventListener.prototype, \"bindings\", {\n get: function get() {\n return Array.from(this.unorderedBindings).sort(function (left, right) {\n var leftIndex = left.index,\n 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}();\n\nexport { EventListener };\n\nfunction extendEvent(event) {\n if (\"immediatePropagationStopped\" in event) {\n return event;\n } else {\n var stopImmediatePropagation_1 = event.stopImmediatePropagation;\n return Object.assign(event, {\n immediatePropagationStopped: false,\n stopImmediatePropagation: function stopImmediatePropagation() {\n this.immediatePropagationStopped = true;\n stopImmediatePropagation_1.call(this);\n }\n });\n }\n}","import { EventListener } from \"./event_listener\";\n\nvar Dispatcher =\n/** @class */\nfunction () {\n function Dispatcher(application) {\n this.application = application;\n this.eventListenerMaps = new Map();\n this.started = false;\n }\n\n Dispatcher.prototype.start = function () {\n if (!this.started) {\n this.started = true;\n this.eventListeners.forEach(function (eventListener) {\n return eventListener.connect();\n });\n }\n };\n\n Dispatcher.prototype.stop = function () {\n if (this.started) {\n this.started = false;\n this.eventListeners.forEach(function (eventListener) {\n return eventListener.disconnect();\n });\n }\n };\n\n Object.defineProperty(Dispatcher.prototype, \"eventListeners\", {\n get: function get() {\n return Array.from(this.eventListenerMaps.values()).reduce(function (listeners, map) {\n return listeners.concat(Array.from(map.values()));\n }, []);\n },\n enumerable: true,\n configurable: true\n }); // Binding observer delegate\n\n Dispatcher.prototype.bindingConnected = function (binding) {\n this.fetchEventListenerForBinding(binding).bindingConnected(binding);\n };\n\n Dispatcher.prototype.bindingDisconnected = function (binding) {\n this.fetchEventListenerForBinding(binding).bindingDisconnected(binding);\n }; // Error handling\n\n\n Dispatcher.prototype.handleError = function (error, message, detail) {\n if (detail === void 0) {\n detail = {};\n }\n\n this.application.handleError(error, \"Error \" + message, detail);\n };\n\n Dispatcher.prototype.fetchEventListenerForBinding = function (binding) {\n var eventTarget = binding.eventTarget,\n eventName = binding.eventName;\n return this.fetchEventListener(eventTarget, eventName);\n };\n\n Dispatcher.prototype.fetchEventListener = function (eventTarget, eventName) {\n var eventListenerMap = this.fetchEventListenerMapForEventTarget(eventTarget);\n var eventListener = eventListenerMap.get(eventName);\n\n if (!eventListener) {\n eventListener = this.createEventListener(eventTarget, eventName);\n eventListenerMap.set(eventName, eventListener);\n }\n\n return eventListener;\n };\n\n Dispatcher.prototype.createEventListener = function (eventTarget, eventName) {\n var eventListener = new EventListener(eventTarget, eventName);\n\n if (this.started) {\n eventListener.connect();\n }\n\n return eventListener;\n };\n\n Dispatcher.prototype.fetchEventListenerMapForEventTarget = function (eventTarget) {\n var eventListenerMap = this.eventListenerMaps.get(eventTarget);\n\n if (!eventListenerMap) {\n eventListenerMap = new Map();\n this.eventListenerMaps.set(eventTarget, eventListenerMap);\n }\n\n return eventListenerMap;\n };\n\n return Dispatcher;\n}();\n\nexport { Dispatcher };","// 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}\n\nfunction parseEventTarget(eventTargetName) {\n if (eventTargetName == \"window\") {\n return window;\n } else if (eventTargetName == \"document\") {\n return document;\n }\n}\n\nexport function stringifyEventTarget(eventTarget) {\n if (eventTarget == window) {\n return \"window\";\n } else if (eventTarget == document) {\n return \"document\";\n }\n}","import { parseDescriptorString, stringifyEventTarget } from \"./action_descriptor\";\n\nvar Action =\n/** @class */\nfunction () {\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\n Action.forToken = function (token) {\n return new this(token.element, token.index, parseDescriptorString(token.content));\n };\n\n Action.prototype.toString = function () {\n var eventNameSuffix = this.eventTargetName ? \"@\" + this.eventTargetName : \"\";\n return \"\" + this.eventName + eventNameSuffix + \"->\" + this.identifier + \"#\" + this.methodName;\n };\n\n Object.defineProperty(Action.prototype, \"eventTargetName\", {\n get: function get() {\n return stringifyEventTarget(this.eventTarget);\n },\n enumerable: true,\n configurable: true\n });\n return Action;\n}();\n\nexport { Action };\nvar defaultEventNames = {\n \"a\": function a(e) {\n return \"click\";\n },\n \"button\": function button(e) {\n return \"click\";\n },\n \"form\": function form(e) {\n return \"submit\";\n },\n \"input\": function input(e) {\n return e.getAttribute(\"type\") == \"submit\" ? \"click\" : \"change\";\n },\n \"select\": function select(e) {\n return \"change\";\n },\n \"textarea\": function textarea(e) {\n return \"change\";\n }\n};\nexport function getDefaultEventNameForElement(element) {\n var tagName = element.tagName.toLowerCase();\n\n if (tagName in defaultEventNames) {\n return defaultEventNames[tagName](element);\n }\n}\n\nfunction error(message) {\n throw new Error(message);\n}","var Binding =\n/** @class */\nfunction () {\n function Binding(context, action) {\n this.context = context;\n this.action = action;\n }\n\n Object.defineProperty(Binding.prototype, \"index\", {\n get: function get() {\n return this.action.index;\n },\n enumerable: true,\n configurable: true\n });\n Object.defineProperty(Binding.prototype, \"eventTarget\", {\n get: function get() {\n return this.action.eventTarget;\n },\n enumerable: true,\n configurable: true\n });\n Object.defineProperty(Binding.prototype, \"identifier\", {\n get: function get() {\n return this.context.identifier;\n },\n enumerable: true,\n configurable: true\n });\n\n Binding.prototype.handleEvent = function (event) {\n if (this.willBeInvokedByEvent(event)) {\n this.invokeWithEvent(event);\n }\n };\n\n Object.defineProperty(Binding.prototype, \"eventName\", {\n get: function get() {\n return this.action.eventName;\n },\n enumerable: true,\n configurable: true\n });\n Object.defineProperty(Binding.prototype, \"method\", {\n get: function get() {\n var method = this.controller[this.methodName];\n\n if (typeof method == \"function\") {\n return method;\n }\n\n throw new Error(\"Action \\\"\" + this.action + \"\\\" references undefined method \\\"\" + this.methodName + \"\\\"\");\n },\n enumerable: true,\n configurable: true\n });\n\n Binding.prototype.invokeWithEvent = function (event) {\n try {\n this.method.call(this.controller, event);\n } catch (error) {\n var _a = this,\n identifier = _a.identifier,\n controller = _a.controller,\n element = _a.element,\n index = _a.index;\n\n var detail = {\n identifier: identifier,\n controller: controller,\n element: element,\n index: index,\n event: event\n };\n this.context.handleError(error, \"invoking action \\\"\" + this.action + \"\\\"\", detail);\n }\n };\n\n Binding.prototype.willBeInvokedByEvent = function (event) {\n var eventTarget = event.target;\n\n if (this.element === eventTarget) {\n return true;\n } else if (eventTarget instanceof Element && this.element.contains(eventTarget)) {\n return this.scope.containsElement(eventTarget);\n } else {\n return true;\n }\n };\n\n Object.defineProperty(Binding.prototype, \"controller\", {\n get: function get() {\n return this.context.controller;\n },\n enumerable: true,\n configurable: true\n });\n Object.defineProperty(Binding.prototype, \"methodName\", {\n get: function get() {\n return this.action.methodName;\n },\n enumerable: true,\n configurable: true\n });\n Object.defineProperty(Binding.prototype, \"element\", {\n get: function get() {\n return this.scope.element;\n },\n enumerable: true,\n configurable: true\n });\n Object.defineProperty(Binding.prototype, \"scope\", {\n get: function get() {\n return this.context.scope;\n },\n enumerable: true,\n configurable: true\n });\n return Binding;\n}();\n\nexport { Binding };","var ElementObserver =\n/** @class */\nfunction () {\n function ElementObserver(element, delegate) {\n var _this = this;\n\n this.element = element;\n this.started = false;\n this.delegate = delegate;\n this.elements = new Set();\n this.mutationObserver = new MutationObserver(function (mutations) {\n return _this.processMutations(mutations);\n });\n }\n\n ElementObserver.prototype.start = function () {\n if (!this.started) {\n this.started = true;\n this.mutationObserver.observe(this.element, {\n attributes: true,\n childList: true,\n subtree: true\n });\n this.refresh();\n }\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\n ElementObserver.prototype.refresh = function () {\n if (this.started) {\n var matches = new Set(this.matchElementsInTree());\n\n for (var _i = 0, _a = Array.from(this.elements); _i < _a.length; _i++) {\n var element = _a[_i];\n\n if (!matches.has(element)) {\n this.removeElement(element);\n }\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 }; // Mutation record processing\n\n\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\n ElementObserver.prototype.processMutation = function (mutation) {\n if (mutation.type == \"attributes\") {\n this.processAttributeChange(mutation.target, mutation.attributeName);\n } else if (mutation.type == \"childList\") {\n this.processRemovedNodes(mutation.removedNodes);\n this.processAddedNodes(mutation.addedNodes);\n }\n };\n\n ElementObserver.prototype.processAttributeChange = function (node, attributeName) {\n var element = node;\n\n if (this.elements.has(element)) {\n if (this.delegate.elementAttributeChanged && this.matchElement(element)) {\n this.delegate.elementAttributeChanged(element, attributeName);\n } else {\n this.removeElement(element);\n }\n } else if (this.matchElement(element)) {\n this.addElement(element);\n }\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\n if (element) {\n this.processTree(element, this.removeElement);\n }\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\n if (element && this.elementIsActive(element)) {\n this.processTree(element, this.addElement);\n }\n }\n }; // Element matching\n\n\n ElementObserver.prototype.matchElement = function (element) {\n return this.delegate.matchElement(element);\n };\n\n ElementObserver.prototype.matchElementsInTree = function (tree) {\n if (tree === void 0) {\n tree = this.element;\n }\n\n return this.delegate.matchElementsInTree(tree);\n };\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\n ElementObserver.prototype.elementFromNode = function (node) {\n if (node.nodeType == Node.ELEMENT_NODE) {\n return node;\n }\n };\n\n ElementObserver.prototype.elementIsActive = function (element) {\n if (element.isConnected != this.element.isConnected) {\n return false;\n } else {\n return this.element.contains(element);\n }\n }; // Element tracking\n\n\n ElementObserver.prototype.addElement = function (element) {\n if (!this.elements.has(element)) {\n if (this.elementIsActive(element)) {\n this.elements.add(element);\n\n if (this.delegate.elementMatched) {\n this.delegate.elementMatched(element);\n }\n }\n }\n };\n\n ElementObserver.prototype.removeElement = function (element) {\n if (this.elements.has(element)) {\n this.elements[\"delete\"](element);\n\n if (this.delegate.elementUnmatched) {\n this.delegate.elementUnmatched(element);\n }\n }\n };\n\n return ElementObserver;\n}();\n\nexport { ElementObserver };","import { ElementObserver } from \"./element_observer\";\n\nvar AttributeObserver =\n/** @class */\nfunction () {\n function AttributeObserver(element, attributeName, delegate) {\n this.attributeName = attributeName;\n this.delegate = delegate;\n this.elementObserver = new ElementObserver(element, this);\n }\n\n Object.defineProperty(AttributeObserver.prototype, \"element\", {\n get: function get() {\n return this.elementObserver.element;\n },\n enumerable: true,\n configurable: true\n });\n Object.defineProperty(AttributeObserver.prototype, \"selector\", {\n get: function get() {\n return \"[\" + this.attributeName + \"]\";\n },\n enumerable: true,\n configurable: true\n });\n\n AttributeObserver.prototype.start = function () {\n this.elementObserver.start();\n };\n\n AttributeObserver.prototype.stop = function () {\n this.elementObserver.stop();\n };\n\n AttributeObserver.prototype.refresh = function () {\n this.elementObserver.refresh();\n };\n\n Object.defineProperty(AttributeObserver.prototype, \"started\", {\n get: function get() {\n return this.elementObserver.started;\n },\n enumerable: true,\n configurable: true\n }); // Element observer delegate\n\n AttributeObserver.prototype.matchElement = function (element) {\n return element.hasAttribute(this.attributeName);\n };\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\n AttributeObserver.prototype.elementMatched = function (element) {\n if (this.delegate.elementMatchedAttribute) {\n this.delegate.elementMatchedAttribute(element, this.attributeName);\n }\n };\n\n AttributeObserver.prototype.elementUnmatched = function (element) {\n if (this.delegate.elementUnmatchedAttribute) {\n this.delegate.elementUnmatchedAttribute(element, this.attributeName);\n }\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\n return AttributeObserver;\n}();\n\nexport { AttributeObserver };","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\n if (!values) {\n values = new Set();\n map.set(key, values);\n }\n\n return values;\n}\nexport function prune(map, key) {\n var values = map.get(key);\n\n if (values != null && values.size == 0) {\n map[\"delete\"](key);\n }\n}","import { add, del } from \"./set_operations\";\n\nvar Multimap =\n/** @class */\nfunction () {\n function Multimap() {\n this.valuesByKey = new Map();\n }\n\n Object.defineProperty(Multimap.prototype, \"values\", {\n get: function get() {\n var sets = Array.from(this.valuesByKey.values());\n return sets.reduce(function (values, set) {\n return values.concat(Array.from(set));\n }, []);\n },\n enumerable: true,\n configurable: true\n });\n Object.defineProperty(Multimap.prototype, \"size\", {\n get: function get() {\n var sets = Array.from(this.valuesByKey.values());\n return sets.reduce(function (size, set) {\n return size + set.size;\n }, 0);\n },\n enumerable: true,\n configurable: true\n });\n\n Multimap.prototype.add = function (key, value) {\n add(this.valuesByKey, key, value);\n };\n\n Multimap.prototype[\"delete\"] = function (key, value) {\n del(this.valuesByKey, key, value);\n };\n\n Multimap.prototype.has = function (key, value) {\n var values = this.valuesByKey.get(key);\n return values != null && values.has(value);\n };\n\n Multimap.prototype.hasKey = function (key) {\n return this.valuesByKey.has(key);\n };\n\n Multimap.prototype.hasValue = function (value) {\n var sets = Array.from(this.valuesByKey.values());\n return sets.some(function (set) {\n return set.has(value);\n });\n };\n\n Multimap.prototype.getValuesForKey = function (key) {\n var values = this.valuesByKey.get(key);\n return values ? Array.from(values) : [];\n };\n\n Multimap.prototype.getKeysForValue = function (value) {\n return Array.from(this.valuesByKey).filter(function (_a) {\n var key = _a[0],\n values = _a[1];\n return values.has(value);\n }).map(function (_a) {\n var key = _a[0],\n values = _a[1];\n return key;\n });\n };\n\n return Multimap;\n}();\n\nexport { Multimap };","var __extends = this && this.__extends || function () {\n var extendStatics = Object.setPrototypeOf || {\n __proto__: []\n } instanceof Array && function (d, b) {\n d.__proto__ = b;\n } || function (d, b) {\n for (var p in b) {\n if (b.hasOwnProperty(p)) d[p] = b[p];\n }\n };\n\n return function (d, b) {\n extendStatics(d, b);\n\n function __() {\n this.constructor = d;\n }\n\n d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\n };\n}();\n\nimport { Multimap } from \"./multimap\";\nimport { add, del } from \"./set_operations\";\n\nvar IndexedMultimap =\n/** @class */\nfunction (_super) {\n __extends(IndexedMultimap, _super);\n\n function IndexedMultimap() {\n var _this = _super.call(this) || this;\n\n _this.keysByValue = new Map();\n return _this;\n }\n\n Object.defineProperty(IndexedMultimap.prototype, \"values\", {\n get: function get() {\n return Array.from(this.keysByValue.keys());\n },\n enumerable: true,\n configurable: true\n });\n\n IndexedMultimap.prototype.add = function (key, value) {\n _super.prototype.add.call(this, key, value);\n\n add(this.keysByValue, value, key);\n };\n\n IndexedMultimap.prototype[\"delete\"] = function (key, value) {\n _super.prototype[\"delete\"].call(this, key, value);\n\n del(this.keysByValue, value, key);\n };\n\n IndexedMultimap.prototype.hasValue = function (value) {\n return this.keysByValue.has(value);\n };\n\n IndexedMultimap.prototype.getKeysForValue = function (value) {\n var set = this.keysByValue.get(value);\n return set ? Array.from(set) : [];\n };\n\n return IndexedMultimap;\n}(Multimap);\n\nexport { IndexedMultimap };","import { AttributeObserver } from \"./attribute_observer\";\nimport { Multimap } from \"@stimulus/multimap\";\n\nvar TokenListObserver =\n/** @class */\nfunction () {\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\n Object.defineProperty(TokenListObserver.prototype, \"started\", {\n get: function get() {\n return this.attributeObserver.started;\n },\n enumerable: true,\n configurable: true\n });\n\n TokenListObserver.prototype.start = function () {\n this.attributeObserver.start();\n };\n\n TokenListObserver.prototype.stop = function () {\n this.attributeObserver.stop();\n };\n\n TokenListObserver.prototype.refresh = function () {\n this.attributeObserver.refresh();\n };\n\n Object.defineProperty(TokenListObserver.prototype, \"element\", {\n get: function get() {\n return this.attributeObserver.element;\n },\n enumerable: true,\n configurable: true\n });\n Object.defineProperty(TokenListObserver.prototype, \"attributeName\", {\n get: function get() {\n return this.attributeObserver.attributeName;\n },\n enumerable: true,\n configurable: true\n }); // Attribute observer delegate\n\n TokenListObserver.prototype.elementMatchedAttribute = function (element) {\n this.tokensMatched(this.readTokensForElement(element));\n };\n\n TokenListObserver.prototype.elementAttributeValueChanged = function (element) {\n var _a = this.refreshTokensForElement(element),\n unmatchedTokens = _a[0],\n matchedTokens = _a[1];\n\n this.tokensUnmatched(unmatchedTokens);\n this.tokensMatched(matchedTokens);\n };\n\n TokenListObserver.prototype.elementUnmatchedAttribute = function (element) {\n this.tokensUnmatched(this.tokensByElement.getValuesForKey(element));\n };\n\n TokenListObserver.prototype.tokensMatched = function (tokens) {\n var _this = this;\n\n tokens.forEach(function (token) {\n return _this.tokenMatched(token);\n });\n };\n\n TokenListObserver.prototype.tokensUnmatched = function (tokens) {\n var _this = this;\n\n tokens.forEach(function (token) {\n return _this.tokenUnmatched(token);\n });\n };\n\n TokenListObserver.prototype.tokenMatched = function (token) {\n this.delegate.tokenMatched(token);\n this.tokensByElement.add(token.element, token);\n };\n\n TokenListObserver.prototype.tokenUnmatched = function (token) {\n this.delegate.tokenUnmatched(token);\n this.tokensByElement[\"delete\"](token.element, token);\n };\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).findIndex(function (_a) {\n var previousToken = _a[0],\n currentToken = _a[1];\n return !tokensAreEqual(previousToken, currentToken);\n });\n\n if (firstDifferingIndex == -1) {\n return [[], []];\n } else {\n return [previousTokens.slice(firstDifferingIndex), currentTokens.slice(firstDifferingIndex)];\n }\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\n return TokenListObserver;\n}();\n\nexport { TokenListObserver };\n\nfunction parseTokenString(tokenString, element, attributeName) {\n return tokenString.trim().split(/\\s+/).filter(function (content) {\n return content.length;\n }).map(function (content, index) {\n return {\n element: element,\n attributeName: attributeName,\n content: content,\n index: index\n };\n });\n}\n\nfunction zip(left, right) {\n var length = Math.max(left.length, right.length);\n return Array.from({\n length: length\n }, function (_, index) {\n return [left[index], right[index]];\n });\n}\n\nfunction tokensAreEqual(left, right) {\n return left && right && left.index == right.index && left.content == right.content;\n}","import { TokenListObserver } from \"./token_list_observer\";\n\nvar ValueListObserver =\n/** @class */\nfunction () {\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\n Object.defineProperty(ValueListObserver.prototype, \"started\", {\n get: function get() {\n return this.tokenListObserver.started;\n },\n enumerable: true,\n configurable: true\n });\n\n ValueListObserver.prototype.start = function () {\n this.tokenListObserver.start();\n };\n\n ValueListObserver.prototype.stop = function () {\n this.tokenListObserver.stop();\n };\n\n ValueListObserver.prototype.refresh = function () {\n this.tokenListObserver.refresh();\n };\n\n Object.defineProperty(ValueListObserver.prototype, \"element\", {\n get: function get() {\n return this.tokenListObserver.element;\n },\n enumerable: true,\n configurable: true\n });\n Object.defineProperty(ValueListObserver.prototype, \"attributeName\", {\n get: function get() {\n return this.tokenListObserver.attributeName;\n },\n enumerable: true,\n configurable: true\n });\n\n ValueListObserver.prototype.tokenMatched = function (token) {\n var element = token.element;\n var value = this.fetchParseResultForToken(token).value;\n\n if (value) {\n this.fetchValuesByTokenForElement(element).set(token, value);\n this.delegate.elementMatchedValue(element, value);\n }\n };\n\n ValueListObserver.prototype.tokenUnmatched = function (token) {\n var element = token.element;\n var value = this.fetchParseResultForToken(token).value;\n\n if (value) {\n this.fetchValuesByTokenForElement(element)[\"delete\"](token);\n this.delegate.elementUnmatchedValue(element, value);\n }\n };\n\n ValueListObserver.prototype.fetchParseResultForToken = function (token) {\n var parseResult = this.parseResultsByToken.get(token);\n\n if (!parseResult) {\n parseResult = this.parseToken(token);\n this.parseResultsByToken.set(token, parseResult);\n }\n\n return parseResult;\n };\n\n ValueListObserver.prototype.fetchValuesByTokenForElement = function (element) {\n var valuesByToken = this.valuesByTokenByElement.get(element);\n\n if (!valuesByToken) {\n valuesByToken = new Map();\n this.valuesByTokenByElement.set(element, valuesByToken);\n }\n\n return valuesByToken;\n };\n\n ValueListObserver.prototype.parseToken = function (token) {\n try {\n var value = this.delegate.parseValueForToken(token);\n return {\n value: value\n };\n } catch (error) {\n return {\n error: error\n };\n }\n };\n\n return ValueListObserver;\n}();\n\nexport { ValueListObserver };","import { Action } from \"./action\";\nimport { Binding } from \"./binding\";\nimport { ValueListObserver } from \"@stimulus/mutation-observers\";\n\nvar BindingObserver =\n/** @class */\nfunction () {\n function BindingObserver(context, delegate) {\n this.context = context;\n this.delegate = delegate;\n this.bindingsByAction = new Map();\n }\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\n BindingObserver.prototype.stop = function () {\n if (this.valueListObserver) {\n this.valueListObserver.stop();\n delete this.valueListObserver;\n this.disconnectAllActions();\n }\n };\n\n Object.defineProperty(BindingObserver.prototype, \"element\", {\n get: function get() {\n return this.context.element;\n },\n enumerable: true,\n configurable: true\n });\n Object.defineProperty(BindingObserver.prototype, \"identifier\", {\n get: function get() {\n return this.context.identifier;\n },\n enumerable: true,\n configurable: true\n });\n Object.defineProperty(BindingObserver.prototype, \"actionAttribute\", {\n get: function get() {\n return this.schema.actionAttribute;\n },\n enumerable: true,\n configurable: true\n });\n Object.defineProperty(BindingObserver.prototype, \"schema\", {\n get: function get() {\n return this.context.schema;\n },\n enumerable: true,\n configurable: true\n });\n Object.defineProperty(BindingObserver.prototype, \"bindings\", {\n get: function get() {\n return Array.from(this.bindingsByAction.values());\n },\n enumerable: true,\n configurable: true\n });\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\n BindingObserver.prototype.disconnectAction = function (action) {\n var binding = this.bindingsByAction.get(action);\n\n if (binding) {\n this.bindingsByAction[\"delete\"](action);\n this.delegate.bindingDisconnected(binding);\n }\n };\n\n BindingObserver.prototype.disconnectAllActions = function () {\n var _this = this;\n\n this.bindings.forEach(function (binding) {\n return _this.delegate.bindingDisconnected(binding);\n });\n this.bindingsByAction.clear();\n }; // Value observer delegate\n\n\n BindingObserver.prototype.parseValueForToken = function (token) {\n var action = Action.forToken(token);\n\n if (action.identifier == this.identifier) {\n return action;\n }\n };\n\n BindingObserver.prototype.elementMatchedValue = function (element, action) {\n this.connectAction(action);\n };\n\n BindingObserver.prototype.elementUnmatchedValue = function (element, action) {\n this.disconnectAction(action);\n };\n\n return BindingObserver;\n}();\n\nexport { BindingObserver };","import { BindingObserver } from \"./binding_observer\";\n\nvar Context =\n/** @class */\nfunction () {\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\n try {\n this.controller.initialize();\n } catch (error) {\n this.handleError(error, \"initializing controller\");\n }\n }\n\n Context.prototype.connect = function () {\n this.bindingObserver.start();\n\n try {\n this.controller.connect();\n } catch (error) {\n this.handleError(error, \"connecting controller\");\n }\n };\n\n Context.prototype.disconnect = function () {\n try {\n this.controller.disconnect();\n } catch (error) {\n this.handleError(error, \"disconnecting controller\");\n }\n\n this.bindingObserver.stop();\n };\n\n Object.defineProperty(Context.prototype, \"application\", {\n get: function get() {\n return this.module.application;\n },\n enumerable: true,\n configurable: true\n });\n Object.defineProperty(Context.prototype, \"identifier\", {\n get: function get() {\n return this.module.identifier;\n },\n enumerable: true,\n configurable: true\n });\n Object.defineProperty(Context.prototype, \"schema\", {\n get: function get() {\n return this.application.schema;\n },\n enumerable: true,\n configurable: true\n });\n Object.defineProperty(Context.prototype, \"dispatcher\", {\n get: function get() {\n return this.application.dispatcher;\n },\n enumerable: true,\n configurable: true\n });\n Object.defineProperty(Context.prototype, \"element\", {\n get: function get() {\n return this.scope.element;\n },\n enumerable: true,\n configurable: true\n });\n Object.defineProperty(Context.prototype, \"parentElement\", {\n get: function get() {\n return this.element.parentElement;\n },\n enumerable: true,\n configurable: true\n }); // Error handling\n\n Context.prototype.handleError = function (error, message, detail) {\n if (detail === void 0) {\n detail = {};\n }\n\n var _a = this,\n identifier = _a.identifier,\n controller = _a.controller,\n element = _a.element;\n\n detail = Object.assign({\n identifier: identifier,\n controller: controller,\n element: element\n }, detail);\n this.application.handleError(error, \"Error \" + message, detail);\n };\n\n return Context;\n}();\n\nexport { Context };","var __extends = this && this.__extends || function () {\n var extendStatics = Object.setPrototypeOf || {\n __proto__: []\n } instanceof Array && function (d, b) {\n d.__proto__ = b;\n } || function (d, b) {\n for (var p in b) {\n if (b.hasOwnProperty(p)) d[p] = b[p];\n }\n };\n\n return function (d, b) {\n extendStatics(d, b);\n\n function __() {\n this.constructor = d;\n }\n\n d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\n };\n}();\n\nexport function blessDefinition(definition) {\n return {\n identifier: definition.identifier,\n controllerConstructor: blessControllerConstructor(definition.controllerConstructor)\n };\n}\n\nfunction blessControllerConstructor(controllerConstructor) {\n var constructor = extend(controllerConstructor);\n constructor.bless();\n return constructor;\n}\n\nvar extend = function () {\n function extendWithReflect(constructor) {\n function Controller() {\n var _newTarget = this && this instanceof Controller ? this.constructor : void 0;\n\n return Reflect.construct(constructor, arguments, _newTarget);\n }\n\n Controller.prototype = Object.create(constructor.prototype, {\n constructor: {\n value: Controller\n }\n });\n Reflect.setPrototypeOf(Controller, constructor);\n return Controller;\n }\n\n function testReflectExtension() {\n var a = function a() {\n this.a.call(this);\n };\n\n var b = extendWithReflect(a);\n\n b.prototype.a = function () {};\n\n return new b();\n }\n\n try {\n testReflectExtension();\n return extendWithReflect;\n } catch (error) {\n return function (constructor) {\n return (\n /** @class */\n function (_super) {\n __extends(Controller, _super);\n\n function Controller() {\n return _super !== null && _super.apply(this, arguments) || this;\n }\n\n return Controller;\n }(constructor)\n );\n };\n }\n}();","import { Context } from \"./context\";\nimport { blessDefinition } from \"./definition\";\n\nvar Module =\n/** @class */\nfunction () {\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\n Object.defineProperty(Module.prototype, \"identifier\", {\n get: function get() {\n return this.definition.identifier;\n },\n enumerable: true,\n configurable: true\n });\n Object.defineProperty(Module.prototype, \"controllerConstructor\", {\n get: function get() {\n return this.definition.controllerConstructor;\n },\n enumerable: true,\n configurable: true\n });\n Object.defineProperty(Module.prototype, \"contexts\", {\n get: function get() {\n return Array.from(this.connectedContexts);\n },\n enumerable: true,\n configurable: true\n });\n\n Module.prototype.connectContextForScope = function (scope) {\n var context = this.fetchContextForScope(scope);\n this.connectedContexts.add(context);\n context.connect();\n };\n\n Module.prototype.disconnectContextForScope = function (scope) {\n var context = this.contextsByScope.get(scope);\n\n if (context) {\n this.connectedContexts[\"delete\"](context);\n context.disconnect();\n }\n };\n\n Module.prototype.fetchContextForScope = function (scope) {\n var context = this.contextsByScope.get(scope);\n\n if (!context) {\n context = new Context(this, scope);\n this.contextsByScope.set(scope, context);\n }\n\n return context;\n };\n\n return Module;\n}();\n\nexport { Module };","var DataMap =\n/** @class */\nfunction () {\n function DataMap(scope) {\n this.scope = scope;\n }\n\n Object.defineProperty(DataMap.prototype, \"element\", {\n get: function get() {\n return this.scope.element;\n },\n enumerable: true,\n configurable: true\n });\n Object.defineProperty(DataMap.prototype, \"identifier\", {\n get: function get() {\n return this.scope.identifier;\n },\n enumerable: true,\n configurable: true\n });\n\n DataMap.prototype.get = function (key) {\n key = this.getFormattedKey(key);\n return this.element.getAttribute(key);\n };\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\n DataMap.prototype.has = function (key) {\n key = this.getFormattedKey(key);\n return this.element.hasAttribute(key);\n };\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 } else {\n return false;\n }\n };\n\n DataMap.prototype.getFormattedKey = function (key) {\n return \"data-\" + this.identifier + \"-\" + dasherize(key);\n };\n\n return DataMap;\n}();\n\nexport { DataMap };\n\nfunction dasherize(value) {\n return value.replace(/([A-Z])/g, function (_, _char) {\n return \"-\" + _char.toLowerCase();\n });\n}","/** @private */\nexport function attributeValueContainsToken(attributeName, token) {\n return \"[\" + attributeName + \"~=\\\"\" + token + \"\\\"]\";\n}","import { attributeValueContainsToken } from \"./selectors\";\n\nvar TargetSet =\n/** @class */\nfunction () {\n function TargetSet(scope) {\n this.scope = scope;\n }\n\n Object.defineProperty(TargetSet.prototype, \"element\", {\n get: function get() {\n return this.scope.element;\n },\n enumerable: true,\n configurable: true\n });\n Object.defineProperty(TargetSet.prototype, \"identifier\", {\n get: function get() {\n return this.scope.identifier;\n },\n enumerable: true,\n configurable: true\n });\n Object.defineProperty(TargetSet.prototype, \"schema\", {\n get: function get() {\n return this.scope.schema;\n },\n enumerable: true,\n configurable: true\n });\n\n TargetSet.prototype.has = function (targetName) {\n return this.find(targetName) != null;\n };\n\n TargetSet.prototype.find = function () {\n var targetNames = [];\n\n for (var _i = 0; _i < arguments.length; _i++) {\n targetNames[_i] = arguments[_i];\n }\n\n var selector = this.getSelectorForTargetNames(targetNames);\n return this.scope.findElement(selector);\n };\n\n TargetSet.prototype.findAll = function () {\n var targetNames = [];\n\n for (var _i = 0; _i < arguments.length; _i++) {\n targetNames[_i] = arguments[_i];\n }\n\n var selector = this.getSelectorForTargetNames(targetNames);\n return this.scope.findAllElements(selector);\n };\n\n TargetSet.prototype.getSelectorForTargetNames = function (targetNames) {\n var _this = this;\n\n return targetNames.map(function (targetName) {\n return _this.getSelectorForTargetName(targetName);\n }).join(\", \");\n };\n\n TargetSet.prototype.getSelectorForTargetName = function (targetName) {\n var targetDescriptor = this.identifier + \".\" + targetName;\n return attributeValueContainsToken(this.schema.targetAttribute, targetDescriptor);\n };\n\n return TargetSet;\n}();\n\nexport { TargetSet };","import { DataMap } from \"./data_map\";\nimport { TargetSet } from \"./target_set\";\nimport { attributeValueContainsToken } from \"./selectors\";\n\nvar Scope =\n/** @class */\nfunction () {\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\n Scope.prototype.findElement = function (selector) {\n return this.findAllElements(selector)[0];\n };\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\n Scope.prototype.filterElements = function (elements) {\n var _this = this;\n\n return elements.filter(function (element) {\n return _this.containsElement(element);\n });\n };\n\n Scope.prototype.containsElement = function (element) {\n return element.closest(this.controllerSelector) === this.element;\n };\n\n Object.defineProperty(Scope.prototype, \"controllerSelector\", {\n get: function get() {\n return attributeValueContainsToken(this.schema.controllerAttribute, this.identifier);\n },\n enumerable: true,\n configurable: true\n });\n return Scope;\n}();\n\nexport { Scope };","import { Scope } from \"./scope\";\nimport { ValueListObserver } from \"@stimulus/mutation-observers\";\n\nvar ScopeObserver =\n/** @class */\nfunction () {\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\n ScopeObserver.prototype.start = function () {\n this.valueListObserver.start();\n };\n\n ScopeObserver.prototype.stop = function () {\n this.valueListObserver.stop();\n };\n\n Object.defineProperty(ScopeObserver.prototype, \"controllerAttribute\", {\n get: function get() {\n return this.schema.controllerAttribute;\n },\n enumerable: true,\n configurable: true\n }); // Value observer delegate\n\n ScopeObserver.prototype.parseValueForToken = function (token) {\n var element = token.element,\n identifier = token.content;\n var scopesByIdentifier = this.fetchScopesByIdentifierForElement(element);\n var scope = scopesByIdentifier.get(identifier);\n\n if (!scope) {\n scope = new Scope(this.schema, identifier, element);\n scopesByIdentifier.set(identifier, scope);\n }\n\n return scope;\n };\n\n ScopeObserver.prototype.elementMatchedValue = function (element, value) {\n var referenceCount = (this.scopeReferenceCounts.get(value) || 0) + 1;\n this.scopeReferenceCounts.set(value, referenceCount);\n\n if (referenceCount == 1) {\n this.delegate.scopeConnected(value);\n }\n };\n\n ScopeObserver.prototype.elementUnmatchedValue = function (element, value) {\n var referenceCount = this.scopeReferenceCounts.get(value);\n\n if (referenceCount) {\n this.scopeReferenceCounts.set(value, referenceCount - 1);\n\n if (referenceCount == 1) {\n this.delegate.scopeDisconnected(value);\n }\n }\n };\n\n ScopeObserver.prototype.fetchScopesByIdentifierForElement = function (element) {\n var scopesByIdentifier = this.scopesByIdentifierByElement.get(element);\n\n if (!scopesByIdentifier) {\n scopesByIdentifier = new Map();\n this.scopesByIdentifierByElement.set(element, scopesByIdentifier);\n }\n\n return scopesByIdentifier;\n };\n\n return ScopeObserver;\n}();\n\nexport { ScopeObserver };","import { Module } from \"./module\";\nimport { Multimap } from \"@stimulus/multimap\";\nimport { ScopeObserver } from \"./scope_observer\";\n\nvar Router =\n/** @class */\nfunction () {\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\n Object.defineProperty(Router.prototype, \"element\", {\n get: function get() {\n return this.application.element;\n },\n enumerable: true,\n configurable: true\n });\n Object.defineProperty(Router.prototype, \"schema\", {\n get: function get() {\n return this.application.schema;\n },\n enumerable: true,\n configurable: true\n });\n Object.defineProperty(Router.prototype, \"controllerAttribute\", {\n get: function get() {\n return this.schema.controllerAttribute;\n },\n enumerable: true,\n configurable: true\n });\n Object.defineProperty(Router.prototype, \"modules\", {\n get: function get() {\n return Array.from(this.modulesByIdentifier.values());\n },\n enumerable: true,\n configurable: true\n });\n Object.defineProperty(Router.prototype, \"contexts\", {\n get: function get() {\n return this.modules.reduce(function (contexts, module) {\n return contexts.concat(module.contexts);\n }, []);\n },\n enumerable: true,\n configurable: true\n });\n\n Router.prototype.start = function () {\n this.scopeObserver.start();\n };\n\n Router.prototype.stop = function () {\n this.scopeObserver.stop();\n };\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\n Router.prototype.unloadIdentifier = function (identifier) {\n var module = this.modulesByIdentifier.get(identifier);\n\n if (module) {\n this.disconnectModule(module);\n }\n };\n\n Router.prototype.getContextForElementAndIdentifier = function (element, identifier) {\n var module = this.modulesByIdentifier.get(identifier);\n\n if (module) {\n return module.contexts.find(function (context) {\n return context.element == element;\n });\n }\n }; // Error handler delegate\n\n /** @private */\n\n\n Router.prototype.handleError = function (error, message, detail) {\n this.application.handleError(error, message, detail);\n }; // Scope observer delegate\n\n /** @private */\n\n\n Router.prototype.scopeConnected = function (scope) {\n this.scopesByIdentifier.add(scope.identifier, scope);\n var module = this.modulesByIdentifier.get(scope.identifier);\n\n if (module) {\n module.connectContextForScope(scope);\n }\n };\n /** @private */\n\n\n Router.prototype.scopeDisconnected = function (scope) {\n this.scopesByIdentifier[\"delete\"](scope.identifier, scope);\n var module = this.modulesByIdentifier.get(scope.identifier);\n\n if (module) {\n module.disconnectContextForScope(scope);\n }\n }; // Modules\n\n\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) {\n return module.connectContextForScope(scope);\n });\n };\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) {\n return module.disconnectContextForScope(scope);\n });\n };\n\n return Router;\n}();\n\nexport { Router };","export var defaultSchema = {\n controllerAttribute: \"data-controller\",\n actionAttribute: \"data-action\",\n targetAttribute: \"data-target\"\n};","var __awaiter = this && this.__awaiter || function (thisArg, _arguments, P, generator) {\n return new (P || (P = Promise))(function (resolve, reject) {\n function fulfilled(value) {\n try {\n step(generator.next(value));\n } catch (e) {\n reject(e);\n }\n }\n\n function rejected(value) {\n try {\n step(generator[\"throw\"](value));\n } catch (e) {\n reject(e);\n }\n }\n\n function step(result) {\n result.done ? resolve(result.value) : new P(function (resolve) {\n resolve(result.value);\n }).then(fulfilled, rejected);\n }\n\n step((generator = generator.apply(thisArg, _arguments || [])).next());\n });\n};\n\nvar __generator = this && this.__generator || function (thisArg, body) {\n var _ = {\n label: 0,\n sent: function sent() {\n if (t[0] & 1) throw t[1];\n return t[1];\n },\n trys: [],\n ops: []\n },\n f,\n y,\n t,\n g;\n return g = {\n next: verb(0),\n \"throw\": verb(1),\n \"return\": verb(2)\n }, typeof Symbol === \"function\" && (g[Symbol.iterator] = function () {\n return this;\n }), g;\n\n function verb(n) {\n return function (v) {\n return step([n, v]);\n };\n }\n\n function step(op) {\n if (f) throw new TypeError(\"Generator is already executing.\");\n\n while (_) {\n 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\n switch (op[0]) {\n case 0:\n case 1:\n t = op;\n break;\n\n case 4:\n _.label++;\n return {\n value: op[1],\n done: false\n };\n\n case 5:\n _.label++;\n y = op[1];\n op = [0];\n continue;\n\n case 7:\n op = _.ops.pop();\n\n _.trys.pop();\n\n continue;\n\n default:\n if (!(t = _.trys, t = t.length > 0 && t[t.length - 1]) && (op[0] === 6 || op[0] === 2)) {\n _ = 0;\n continue;\n }\n\n if (op[0] === 3 && (!t || op[1] > t[0] && op[1] < t[3])) {\n _.label = op[1];\n break;\n }\n\n if (op[0] === 6 && _.label < t[1]) {\n _.label = t[1];\n t = op;\n break;\n }\n\n if (t && _.label < t[2]) {\n _.label = t[2];\n\n _.ops.push(op);\n\n break;\n }\n\n if (t[2]) _.ops.pop();\n\n _.trys.pop();\n\n continue;\n }\n\n op = body.call(thisArg, _);\n } catch (e) {\n op = [6, e];\n y = 0;\n } finally {\n f = t = 0;\n }\n }\n\n if (op[0] & 5) throw op[1];\n return {\n value: op[0] ? op[1] : void 0,\n done: true\n };\n }\n};\n\nimport { Dispatcher } from \"./dispatcher\";\nimport { Router } from \"./router\";\nimport { defaultSchema } from \"./schema\";\n\nvar Application =\n/** @class */\nfunction () {\n function Application(element, schema) {\n if (element === void 0) {\n element = document.documentElement;\n }\n\n if (schema === void 0) {\n schema = defaultSchema;\n }\n\n this.element = element;\n this.schema = schema;\n this.dispatcher = new Dispatcher(this);\n this.router = new Router(this);\n }\n\n Application.start = function (element, schema) {\n var application = new Application(element, schema);\n application.start();\n return application;\n };\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:\n return [4\n /*yield*/\n , domReady()];\n\n case 1:\n _a.sent();\n\n this.router.start();\n this.dispatcher.start();\n return [2\n /*return*/\n ];\n }\n });\n });\n };\n\n Application.prototype.stop = function () {\n this.router.stop();\n this.dispatcher.stop();\n };\n\n Application.prototype.register = function (identifier, controllerConstructor) {\n this.load({\n identifier: identifier,\n controllerConstructor: controllerConstructor\n });\n };\n\n Application.prototype.load = function (head) {\n var _this = this;\n\n var rest = [];\n\n for (var _i = 1; _i < arguments.length; _i++) {\n rest[_i - 1] = arguments[_i];\n }\n\n var definitions = Array.isArray(head) ? head : [head].concat(rest);\n definitions.forEach(function (definition) {\n return _this.router.loadDefinition(definition);\n });\n };\n\n Application.prototype.unload = function (head) {\n var _this = this;\n\n var rest = [];\n\n for (var _i = 1; _i < arguments.length; _i++) {\n rest[_i - 1] = arguments[_i];\n }\n\n var identifiers = Array.isArray(head) ? head : [head].concat(rest);\n identifiers.forEach(function (identifier) {\n return _this.router.unloadIdentifier(identifier);\n });\n };\n\n Object.defineProperty(Application.prototype, \"controllers\", {\n // Controllers\n get: function get() {\n return this.router.contexts.map(function (context) {\n return context.controller;\n });\n },\n enumerable: true,\n configurable: true\n });\n\n Application.prototype.getControllerForElementAndIdentifier = function (element, identifier) {\n var context = this.router.getContextForElementAndIdentifier(element, identifier);\n return context ? context.controller : null;\n }; // Error handling\n\n\n Application.prototype.handleError = function (error, message, detail) {\n console.error(\"%s\\n\\n%o\\n\\n%o\", message, error, detail);\n };\n\n return Application;\n}();\n\nexport { Application };\n\nfunction domReady() {\n return new Promise(function (resolve) {\n if (document.readyState == \"loading\") {\n document.addEventListener(\"DOMContentLoaded\", resolve);\n } else {\n resolve();\n }\n });\n}","export function defineTargetProperties(constructor) {\n var prototype = constructor.prototype;\n var targetNames = getTargetNamesForConstructor(constructor);\n targetNames.forEach(function (name) {\n var _a;\n\n return defineLinkedProperties(prototype, (_a = {}, _a[name + \"Target\"] = {\n get: function get() {\n var target = this.targets.find(name);\n\n if (target) {\n return target;\n } else {\n throw new Error(\"Missing target element \\\"\" + this.identifier + \".\" + name + \"\\\"\");\n }\n }\n }, _a[name + \"Targets\"] = {\n get: function get() {\n return this.targets.findAll(name);\n }\n }, _a[\"has\" + capitalize(name) + \"Target\"] = {\n get: function get() {\n return this.targets.has(name);\n }\n }, _a));\n });\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) {\n return targetNames.add(name);\n });\n return targetNames;\n }, new Set()));\n}\n\nfunction getAncestorsForConstructor(constructor) {\n var ancestors = [];\n\n while (constructor) {\n ancestors.push(constructor);\n constructor = Object.getPrototypeOf(constructor);\n }\n\n return ancestors;\n}\n\nfunction getOwnTargetNamesForConstructor(constructor) {\n var definition = constructor[\"targets\"];\n return Array.isArray(definition) ? definition : [];\n}\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}\n\nfunction capitalize(name) {\n return name.charAt(0).toUpperCase() + name.slice(1);\n}","import { defineTargetProperties } from \"./target_properties\";\n\nvar Controller =\n/** @class */\nfunction () {\n function Controller(context) {\n this.context = context;\n }\n\n Controller.bless = function () {\n defineTargetProperties(this);\n };\n\n Object.defineProperty(Controller.prototype, \"application\", {\n get: function get() {\n return this.context.application;\n },\n enumerable: true,\n configurable: true\n });\n Object.defineProperty(Controller.prototype, \"scope\", {\n get: function get() {\n return this.context.scope;\n },\n enumerable: true,\n configurable: true\n });\n Object.defineProperty(Controller.prototype, \"element\", {\n get: function get() {\n return this.scope.element;\n },\n enumerable: true,\n configurable: true\n });\n Object.defineProperty(Controller.prototype, \"identifier\", {\n get: function get() {\n return this.scope.identifier;\n },\n enumerable: true,\n configurable: true\n });\n Object.defineProperty(Controller.prototype, \"targets\", {\n get: function get() {\n return this.scope.targets;\n },\n enumerable: true,\n configurable: true\n });\n Object.defineProperty(Controller.prototype, \"data\", {\n get: function get() {\n return this.scope.data;\n },\n enumerable: true,\n configurable: true\n });\n\n Controller.prototype.initialize = function () {// Override in your subclass to set up initial controller state\n };\n\n Controller.prototype.connect = function () {// Override in your subclass to respond when the controller is connected to the DOM\n };\n\n Controller.prototype.disconnect = function () {// Override in your subclass to respond when the controller is disconnected from the DOM\n };\n\n Controller.targets = [];\n return Controller;\n}();\n\nexport { Controller };","function _typeof(obj) { \"@babel/helpers - typeof\"; return _typeof = \"function\" == typeof Symbol && \"symbol\" == typeof Symbol.iterator ? function (obj) { return typeof obj; } : function (obj) { return obj && \"function\" == typeof Symbol && obj.constructor === Symbol && obj !== Symbol.prototype ? \"symbol\" : typeof obj; }, _typeof(obj); }\n\nvar g; // This works in non-strict mode\n\ng = function () {\n return this;\n}();\n\ntry {\n // This works if eval is allowed (see CSP)\n g = g || new Function(\"return this\")();\n} catch (e) {\n // This works if the window reference is available\n if ((typeof window === \"undefined\" ? \"undefined\" : _typeof(window)) === \"object\") g = window;\n} // g can still be undefined, but nothing to do about it...\n// We return undefined, instead of nothing here, so it's\n// easier to handle this case. if(!global) { ...}\n\n\nmodule.exports = g;","export function definitionsFromContext(context) {\n return context.keys().map(function (key) {\n return definitionForModuleWithContextAndKey(context, key);\n }).filter(function (value) {\n return value;\n });\n}\n\nfunction definitionForModuleWithContextAndKey(context, key) {\n var identifier = identifierForContextKey(key);\n\n if (identifier) {\n return definitionForModuleAndIdentifier(context(key), identifier);\n }\n}\n\nfunction definitionForModuleAndIdentifier(module, identifier) {\n var controllerConstructor = module[\"default\"];\n\n if (typeof controllerConstructor == \"function\") {\n return {\n identifier: identifier,\n controllerConstructor: controllerConstructor\n };\n }\n}\n\nexport function identifierForContextKey(key) {\n var logicalName = (key.match(/^(?:\\.\\/)?(.+)(?:[_-]controller\\..+?)$/) || [])[1];\n\n if (logicalName) {\n return logicalName.replace(/_/g, \"-\").replace(/\\//g, \"--\");\n }\n}","function _typeof(obj) { \"@babel/helpers - typeof\"; return _typeof = \"function\" == typeof Symbol && \"symbol\" == typeof Symbol.iterator ? function (obj) { return typeof obj; } : function (obj) { return obj && \"function\" == typeof Symbol && obj.constructor === Symbol && obj !== Symbol.prototype ? \"symbol\" : typeof obj; }, _typeof(obj); }\n\n/*!\n * Bootstrap v4.6.2 (https://getbootstrap.com/)\n * Copyright 2011-2022 The Bootstrap Authors (https://github.com/twbs/bootstrap/graphs/contributors)\n * Licensed under MIT (https://github.com/twbs/bootstrap/blob/main/LICENSE)\n */\n(function (global, factory) {\n (typeof exports === \"undefined\" ? \"undefined\" : _typeof(exports)) === 'object' && typeof module !== 'undefined' ? factory(exports, require('jquery'), require('popper.js')) : typeof define === 'function' && define.amd ? define(['exports', 'jquery', 'popper.js'], factory) : (global = typeof globalThis !== 'undefined' ? globalThis : global || self, factory(global.bootstrap = {}, global.jQuery, global.Popper));\n})(this, function (exports, $, Popper) {\n 'use strict';\n\n function _interopDefaultLegacy(e) {\n return e && _typeof(e) === 'object' && 'default' in e ? e : {\n 'default': e\n };\n }\n\n var $__default = /*#__PURE__*/_interopDefaultLegacy($);\n\n var Popper__default = /*#__PURE__*/_interopDefaultLegacy(Popper);\n\n function _defineProperties(target, props) {\n for (var i = 0; i < props.length; i++) {\n var descriptor = props[i];\n descriptor.enumerable = descriptor.enumerable || false;\n descriptor.configurable = true;\n if (\"value\" in descriptor) descriptor.writable = true;\n Object.defineProperty(target, descriptor.key, descriptor);\n }\n }\n\n function _createClass(Constructor, protoProps, staticProps) {\n if (protoProps) _defineProperties(Constructor.prototype, protoProps);\n if (staticProps) _defineProperties(Constructor, staticProps);\n Object.defineProperty(Constructor, \"prototype\", {\n writable: false\n });\n return Constructor;\n }\n\n function _extends() {\n _extends = Object.assign ? Object.assign.bind() : function (target) {\n for (var i = 1; i < arguments.length; i++) {\n var source = arguments[i];\n\n for (var key in source) {\n if (Object.prototype.hasOwnProperty.call(source, key)) {\n target[key] = source[key];\n }\n }\n }\n\n return target;\n };\n return _extends.apply(this, arguments);\n }\n\n function _inheritsLoose(subClass, superClass) {\n subClass.prototype = Object.create(superClass.prototype);\n subClass.prototype.constructor = subClass;\n\n _setPrototypeOf(subClass, superClass);\n }\n\n function _setPrototypeOf(o, p) {\n _setPrototypeOf = Object.setPrototypeOf ? Object.setPrototypeOf.bind() : function _setPrototypeOf(o, p) {\n o.__proto__ = p;\n return o;\n };\n return _setPrototypeOf(o, p);\n }\n /**\n * --------------------------------------------------------------------------\n * Bootstrap (v4.6.2): util.js\n * Licensed under MIT (https://github.com/twbs/bootstrap/blob/main/LICENSE)\n * --------------------------------------------------------------------------\n */\n\n /**\n * Private TransitionEnd Helpers\n */\n\n\n var TRANSITION_END = 'transitionend';\n var MAX_UID = 1000000;\n var MILLISECONDS_MULTIPLIER = 1000; // Shoutout AngusCroll (https://goo.gl/pxwQGp)\n\n function toType(obj) {\n if (obj === null || typeof obj === 'undefined') {\n return \"\" + obj;\n }\n\n return {}.toString.call(obj).match(/\\s([a-z]+)/i)[1].toLowerCase();\n }\n\n function getSpecialTransitionEndEvent() {\n return {\n bindType: TRANSITION_END,\n delegateType: TRANSITION_END,\n handle: function handle(event) {\n if ($__default[\"default\"](event.target).is(this)) {\n return event.handleObj.handler.apply(this, arguments); // eslint-disable-line prefer-rest-params\n }\n\n return undefined;\n }\n };\n }\n\n function transitionEndEmulator(duration) {\n var _this = this;\n\n var called = false;\n $__default[\"default\"](this).one(Util.TRANSITION_END, function () {\n called = true;\n });\n setTimeout(function () {\n if (!called) {\n Util.triggerTransitionEnd(_this);\n }\n }, duration);\n return this;\n }\n\n function setTransitionEndSupport() {\n $__default[\"default\"].fn.emulateTransitionEnd = transitionEndEmulator;\n $__default[\"default\"].event.special[Util.TRANSITION_END] = getSpecialTransitionEndEvent();\n }\n /**\n * Public Util API\n */\n\n\n var Util = {\n TRANSITION_END: 'bsTransitionEnd',\n getUID: function getUID(prefix) {\n do {\n // eslint-disable-next-line no-bitwise\n prefix += ~~(Math.random() * MAX_UID); // \"~~\" acts like a faster Math.floor() here\n } while (document.getElementById(prefix));\n\n return prefix;\n },\n getSelectorFromElement: function getSelectorFromElement(element) {\n var selector = element.getAttribute('data-target');\n\n if (!selector || selector === '#') {\n var hrefAttr = element.getAttribute('href');\n selector = hrefAttr && hrefAttr !== '#' ? hrefAttr.trim() : '';\n }\n\n try {\n return document.querySelector(selector) ? selector : null;\n } catch (_) {\n return null;\n }\n },\n getTransitionDurationFromElement: function getTransitionDurationFromElement(element) {\n if (!element) {\n return 0;\n } // Get transition-duration of the element\n\n\n var transitionDuration = $__default[\"default\"](element).css('transition-duration');\n var transitionDelay = $__default[\"default\"](element).css('transition-delay');\n var floatTransitionDuration = parseFloat(transitionDuration);\n var floatTransitionDelay = parseFloat(transitionDelay); // Return 0 if element or transition duration is not found\n\n if (!floatTransitionDuration && !floatTransitionDelay) {\n return 0;\n } // If multiple durations are defined, take the first\n\n\n transitionDuration = transitionDuration.split(',')[0];\n transitionDelay = transitionDelay.split(',')[0];\n return (parseFloat(transitionDuration) + parseFloat(transitionDelay)) * MILLISECONDS_MULTIPLIER;\n },\n reflow: function reflow(element) {\n return element.offsetHeight;\n },\n triggerTransitionEnd: function triggerTransitionEnd(element) {\n $__default[\"default\"](element).trigger(TRANSITION_END);\n },\n supportsTransitionEnd: function supportsTransitionEnd() {\n return Boolean(TRANSITION_END);\n },\n isElement: function isElement(obj) {\n return (obj[0] || obj).nodeType;\n },\n typeCheckConfig: function typeCheckConfig(componentName, config, configTypes) {\n for (var property in configTypes) {\n if (Object.prototype.hasOwnProperty.call(configTypes, property)) {\n var expectedTypes = configTypes[property];\n var value = config[property];\n var valueType = value && Util.isElement(value) ? 'element' : toType(value);\n\n if (!new RegExp(expectedTypes).test(valueType)) {\n throw new Error(componentName.toUpperCase() + \": \" + (\"Option \\\"\" + property + \"\\\" provided type \\\"\" + valueType + \"\\\" \") + (\"but expected type \\\"\" + expectedTypes + \"\\\".\"));\n }\n }\n }\n },\n findShadowRoot: function findShadowRoot(element) {\n if (!document.documentElement.attachShadow) {\n return null;\n } // Can find the shadow root otherwise it'll return the document\n\n\n if (typeof element.getRootNode === 'function') {\n var root = element.getRootNode();\n return root instanceof ShadowRoot ? root : null;\n }\n\n if (element instanceof ShadowRoot) {\n return element;\n } // when we don't find a shadow root\n\n\n if (!element.parentNode) {\n return null;\n }\n\n return Util.findShadowRoot(element.parentNode);\n },\n jQueryDetection: function jQueryDetection() {\n if (typeof $__default[\"default\"] === 'undefined') {\n throw new TypeError('Bootstrap\\'s JavaScript requires jQuery. jQuery must be included before Bootstrap\\'s JavaScript.');\n }\n\n var version = $__default[\"default\"].fn.jquery.split(' ')[0].split('.');\n var minMajor = 1;\n var ltMajor = 2;\n var minMinor = 9;\n var minPatch = 1;\n var maxMajor = 4;\n\n if (version[0] < ltMajor && version[1] < minMinor || version[0] === minMajor && version[1] === minMinor && version[2] < minPatch || version[0] >= maxMajor) {\n throw new Error('Bootstrap\\'s JavaScript requires at least jQuery v1.9.1 but less than v4.0.0');\n }\n }\n };\n Util.jQueryDetection();\n setTransitionEndSupport();\n /**\n * Constants\n */\n\n var NAME$a = 'alert';\n var VERSION$a = '4.6.2';\n var DATA_KEY$a = 'bs.alert';\n var EVENT_KEY$a = \".\" + DATA_KEY$a;\n var DATA_API_KEY$7 = '.data-api';\n var JQUERY_NO_CONFLICT$a = $__default[\"default\"].fn[NAME$a];\n var CLASS_NAME_ALERT = 'alert';\n var CLASS_NAME_FADE$5 = 'fade';\n var CLASS_NAME_SHOW$7 = 'show';\n var EVENT_CLOSE = \"close\" + EVENT_KEY$a;\n var EVENT_CLOSED = \"closed\" + EVENT_KEY$a;\n var EVENT_CLICK_DATA_API$6 = \"click\" + EVENT_KEY$a + DATA_API_KEY$7;\n var SELECTOR_DISMISS = '[data-dismiss=\"alert\"]';\n /**\n * Class definition\n */\n\n var Alert = /*#__PURE__*/function () {\n function Alert(element) {\n this._element = element;\n } // Getters\n\n\n var _proto = Alert.prototype; // Public\n\n _proto.close = function close(element) {\n var rootElement = this._element;\n\n if (element) {\n rootElement = this._getRootElement(element);\n }\n\n var customEvent = this._triggerCloseEvent(rootElement);\n\n if (customEvent.isDefaultPrevented()) {\n return;\n }\n\n this._removeElement(rootElement);\n };\n\n _proto.dispose = function dispose() {\n $__default[\"default\"].removeData(this._element, DATA_KEY$a);\n this._element = null;\n } // Private\n ;\n\n _proto._getRootElement = function _getRootElement(element) {\n var selector = Util.getSelectorFromElement(element);\n var parent = false;\n\n if (selector) {\n parent = document.querySelector(selector);\n }\n\n if (!parent) {\n parent = $__default[\"default\"](element).closest(\".\" + CLASS_NAME_ALERT)[0];\n }\n\n return parent;\n };\n\n _proto._triggerCloseEvent = function _triggerCloseEvent(element) {\n var closeEvent = $__default[\"default\"].Event(EVENT_CLOSE);\n $__default[\"default\"](element).trigger(closeEvent);\n return closeEvent;\n };\n\n _proto._removeElement = function _removeElement(element) {\n var _this = this;\n\n $__default[\"default\"](element).removeClass(CLASS_NAME_SHOW$7);\n\n if (!$__default[\"default\"](element).hasClass(CLASS_NAME_FADE$5)) {\n this._destroyElement(element);\n\n return;\n }\n\n var transitionDuration = Util.getTransitionDurationFromElement(element);\n $__default[\"default\"](element).one(Util.TRANSITION_END, function (event) {\n return _this._destroyElement(element, event);\n }).emulateTransitionEnd(transitionDuration);\n };\n\n _proto._destroyElement = function _destroyElement(element) {\n $__default[\"default\"](element).detach().trigger(EVENT_CLOSED).remove();\n } // Static\n ;\n\n Alert._jQueryInterface = function _jQueryInterface(config) {\n return this.each(function () {\n var $element = $__default[\"default\"](this);\n var data = $element.data(DATA_KEY$a);\n\n if (!data) {\n data = new Alert(this);\n $element.data(DATA_KEY$a, data);\n }\n\n if (config === 'close') {\n data[config](this);\n }\n });\n };\n\n Alert._handleDismiss = function _handleDismiss(alertInstance) {\n return function (event) {\n if (event) {\n event.preventDefault();\n }\n\n alertInstance.close(this);\n };\n };\n\n _createClass(Alert, null, [{\n key: \"VERSION\",\n get: function get() {\n return VERSION$a;\n }\n }]);\n\n return Alert;\n }();\n /**\n * Data API implementation\n */\n\n\n $__default[\"default\"](document).on(EVENT_CLICK_DATA_API$6, SELECTOR_DISMISS, Alert._handleDismiss(new Alert()));\n /**\n * jQuery\n */\n\n $__default[\"default\"].fn[NAME$a] = Alert._jQueryInterface;\n $__default[\"default\"].fn[NAME$a].Constructor = Alert;\n\n $__default[\"default\"].fn[NAME$a].noConflict = function () {\n $__default[\"default\"].fn[NAME$a] = JQUERY_NO_CONFLICT$a;\n return Alert._jQueryInterface;\n };\n /**\n * Constants\n */\n\n\n var NAME$9 = 'button';\n var VERSION$9 = '4.6.2';\n var DATA_KEY$9 = 'bs.button';\n var EVENT_KEY$9 = \".\" + DATA_KEY$9;\n var DATA_API_KEY$6 = '.data-api';\n var JQUERY_NO_CONFLICT$9 = $__default[\"default\"].fn[NAME$9];\n var CLASS_NAME_ACTIVE$3 = 'active';\n var CLASS_NAME_BUTTON = 'btn';\n var CLASS_NAME_FOCUS = 'focus';\n var EVENT_CLICK_DATA_API$5 = \"click\" + EVENT_KEY$9 + DATA_API_KEY$6;\n var EVENT_FOCUS_BLUR_DATA_API = \"focus\" + EVENT_KEY$9 + DATA_API_KEY$6 + \" \" + (\"blur\" + EVENT_KEY$9 + DATA_API_KEY$6);\n var EVENT_LOAD_DATA_API$2 = \"load\" + EVENT_KEY$9 + DATA_API_KEY$6;\n var SELECTOR_DATA_TOGGLE_CARROT = '[data-toggle^=\"button\"]';\n var SELECTOR_DATA_TOGGLES = '[data-toggle=\"buttons\"]';\n var SELECTOR_DATA_TOGGLE$4 = '[data-toggle=\"button\"]';\n var SELECTOR_DATA_TOGGLES_BUTTONS = '[data-toggle=\"buttons\"] .btn';\n var SELECTOR_INPUT = 'input:not([type=\"hidden\"])';\n var SELECTOR_ACTIVE$2 = '.active';\n var SELECTOR_BUTTON = '.btn';\n /**\n * Class definition\n */\n\n var Button = /*#__PURE__*/function () {\n function Button(element) {\n this._element = element;\n this.shouldAvoidTriggerChange = false;\n } // Getters\n\n\n var _proto = Button.prototype; // Public\n\n _proto.toggle = function toggle() {\n var triggerChangeEvent = true;\n var addAriaPressed = true;\n var rootElement = $__default[\"default\"](this._element).closest(SELECTOR_DATA_TOGGLES)[0];\n\n if (rootElement) {\n var input = this._element.querySelector(SELECTOR_INPUT);\n\n if (input) {\n if (input.type === 'radio') {\n if (input.checked && this._element.classList.contains(CLASS_NAME_ACTIVE$3)) {\n triggerChangeEvent = false;\n } else {\n var activeElement = rootElement.querySelector(SELECTOR_ACTIVE$2);\n\n if (activeElement) {\n $__default[\"default\"](activeElement).removeClass(CLASS_NAME_ACTIVE$3);\n }\n }\n }\n\n if (triggerChangeEvent) {\n // if it's not a radio button or checkbox don't add a pointless/invalid checked property to the input\n if (input.type === 'checkbox' || input.type === 'radio') {\n input.checked = !this._element.classList.contains(CLASS_NAME_ACTIVE$3);\n }\n\n if (!this.shouldAvoidTriggerChange) {\n $__default[\"default\"](input).trigger('change');\n }\n }\n\n input.focus();\n addAriaPressed = false;\n }\n }\n\n if (!(this._element.hasAttribute('disabled') || this._element.classList.contains('disabled'))) {\n if (addAriaPressed) {\n this._element.setAttribute('aria-pressed', !this._element.classList.contains(CLASS_NAME_ACTIVE$3));\n }\n\n if (triggerChangeEvent) {\n $__default[\"default\"](this._element).toggleClass(CLASS_NAME_ACTIVE$3);\n }\n }\n };\n\n _proto.dispose = function dispose() {\n $__default[\"default\"].removeData(this._element, DATA_KEY$9);\n this._element = null;\n } // Static\n ;\n\n Button._jQueryInterface = function _jQueryInterface(config, avoidTriggerChange) {\n return this.each(function () {\n var $element = $__default[\"default\"](this);\n var data = $element.data(DATA_KEY$9);\n\n if (!data) {\n data = new Button(this);\n $element.data(DATA_KEY$9, data);\n }\n\n data.shouldAvoidTriggerChange = avoidTriggerChange;\n\n if (config === 'toggle') {\n data[config]();\n }\n });\n };\n\n _createClass(Button, null, [{\n key: \"VERSION\",\n get: function get() {\n return VERSION$9;\n }\n }]);\n\n return Button;\n }();\n /**\n * Data API implementation\n */\n\n\n $__default[\"default\"](document).on(EVENT_CLICK_DATA_API$5, SELECTOR_DATA_TOGGLE_CARROT, function (event) {\n var button = event.target;\n var initialButton = button;\n\n if (!$__default[\"default\"](button).hasClass(CLASS_NAME_BUTTON)) {\n button = $__default[\"default\"](button).closest(SELECTOR_BUTTON)[0];\n }\n\n if (!button || button.hasAttribute('disabled') || button.classList.contains('disabled')) {\n event.preventDefault(); // work around Firefox bug #1540995\n } else {\n var inputBtn = button.querySelector(SELECTOR_INPUT);\n\n if (inputBtn && (inputBtn.hasAttribute('disabled') || inputBtn.classList.contains('disabled'))) {\n event.preventDefault(); // work around Firefox bug #1540995\n\n return;\n }\n\n if (initialButton.tagName === 'INPUT' || button.tagName !== 'LABEL') {\n Button._jQueryInterface.call($__default[\"default\"](button), 'toggle', initialButton.tagName === 'INPUT');\n }\n }\n }).on(EVENT_FOCUS_BLUR_DATA_API, SELECTOR_DATA_TOGGLE_CARROT, function (event) {\n var button = $__default[\"default\"](event.target).closest(SELECTOR_BUTTON)[0];\n $__default[\"default\"](button).toggleClass(CLASS_NAME_FOCUS, /^focus(in)?$/.test(event.type));\n });\n $__default[\"default\"](window).on(EVENT_LOAD_DATA_API$2, function () {\n // ensure correct active class is set to match the controls' actual values/states\n // find all checkboxes/readio buttons inside data-toggle groups\n var buttons = [].slice.call(document.querySelectorAll(SELECTOR_DATA_TOGGLES_BUTTONS));\n\n for (var i = 0, len = buttons.length; i < len; i++) {\n var button = buttons[i];\n var input = button.querySelector(SELECTOR_INPUT);\n\n if (input.checked || input.hasAttribute('checked')) {\n button.classList.add(CLASS_NAME_ACTIVE$3);\n } else {\n button.classList.remove(CLASS_NAME_ACTIVE$3);\n }\n } // find all button toggles\n\n\n buttons = [].slice.call(document.querySelectorAll(SELECTOR_DATA_TOGGLE$4));\n\n for (var _i = 0, _len = buttons.length; _i < _len; _i++) {\n var _button = buttons[_i];\n\n if (_button.getAttribute('aria-pressed') === 'true') {\n _button.classList.add(CLASS_NAME_ACTIVE$3);\n } else {\n _button.classList.remove(CLASS_NAME_ACTIVE$3);\n }\n }\n });\n /**\n * jQuery\n */\n\n $__default[\"default\"].fn[NAME$9] = Button._jQueryInterface;\n $__default[\"default\"].fn[NAME$9].Constructor = Button;\n\n $__default[\"default\"].fn[NAME$9].noConflict = function () {\n $__default[\"default\"].fn[NAME$9] = JQUERY_NO_CONFLICT$9;\n return Button._jQueryInterface;\n };\n /**\n * Constants\n */\n\n\n var NAME$8 = 'carousel';\n var VERSION$8 = '4.6.2';\n var DATA_KEY$8 = 'bs.carousel';\n var EVENT_KEY$8 = \".\" + DATA_KEY$8;\n var DATA_API_KEY$5 = '.data-api';\n var JQUERY_NO_CONFLICT$8 = $__default[\"default\"].fn[NAME$8];\n var ARROW_LEFT_KEYCODE = 37; // KeyboardEvent.which value for left arrow key\n\n var ARROW_RIGHT_KEYCODE = 39; // KeyboardEvent.which value for right arrow key\n\n var TOUCHEVENT_COMPAT_WAIT = 500; // Time for mouse compat events to fire after touch\n\n var SWIPE_THRESHOLD = 40;\n var CLASS_NAME_CAROUSEL = 'carousel';\n var CLASS_NAME_ACTIVE$2 = 'active';\n var CLASS_NAME_SLIDE = 'slide';\n var CLASS_NAME_RIGHT = 'carousel-item-right';\n var CLASS_NAME_LEFT = 'carousel-item-left';\n var CLASS_NAME_NEXT = 'carousel-item-next';\n var CLASS_NAME_PREV = 'carousel-item-prev';\n var CLASS_NAME_POINTER_EVENT = 'pointer-event';\n var DIRECTION_NEXT = 'next';\n var DIRECTION_PREV = 'prev';\n var DIRECTION_LEFT = 'left';\n var DIRECTION_RIGHT = 'right';\n var EVENT_SLIDE = \"slide\" + EVENT_KEY$8;\n var EVENT_SLID = \"slid\" + EVENT_KEY$8;\n var EVENT_KEYDOWN = \"keydown\" + EVENT_KEY$8;\n var EVENT_MOUSEENTER = \"mouseenter\" + EVENT_KEY$8;\n var EVENT_MOUSELEAVE = \"mouseleave\" + EVENT_KEY$8;\n var EVENT_TOUCHSTART = \"touchstart\" + EVENT_KEY$8;\n var EVENT_TOUCHMOVE = \"touchmove\" + EVENT_KEY$8;\n var EVENT_TOUCHEND = \"touchend\" + EVENT_KEY$8;\n var EVENT_POINTERDOWN = \"pointerdown\" + EVENT_KEY$8;\n var EVENT_POINTERUP = \"pointerup\" + EVENT_KEY$8;\n var EVENT_DRAG_START = \"dragstart\" + EVENT_KEY$8;\n var EVENT_LOAD_DATA_API$1 = \"load\" + EVENT_KEY$8 + DATA_API_KEY$5;\n var EVENT_CLICK_DATA_API$4 = \"click\" + EVENT_KEY$8 + DATA_API_KEY$5;\n var SELECTOR_ACTIVE$1 = '.active';\n var SELECTOR_ACTIVE_ITEM = '.active.carousel-item';\n var SELECTOR_ITEM = '.carousel-item';\n var SELECTOR_ITEM_IMG = '.carousel-item img';\n var SELECTOR_NEXT_PREV = '.carousel-item-next, .carousel-item-prev';\n var SELECTOR_INDICATORS = '.carousel-indicators';\n var SELECTOR_DATA_SLIDE = '[data-slide], [data-slide-to]';\n var SELECTOR_DATA_RIDE = '[data-ride=\"carousel\"]';\n var Default$7 = {\n interval: 5000,\n keyboard: true,\n slide: false,\n pause: 'hover',\n wrap: true,\n touch: true\n };\n var DefaultType$7 = {\n interval: '(number|boolean)',\n keyboard: 'boolean',\n slide: '(boolean|string)',\n pause: '(string|boolean)',\n wrap: 'boolean',\n touch: 'boolean'\n };\n var PointerType = {\n TOUCH: 'touch',\n PEN: 'pen'\n };\n /**\n * Class definition\n */\n\n var Carousel = /*#__PURE__*/function () {\n function Carousel(element, config) {\n this._items = null;\n this._interval = null;\n this._activeElement = null;\n this._isPaused = false;\n this._isSliding = false;\n this.touchTimeout = null;\n this.touchStartX = 0;\n this.touchDeltaX = 0;\n this._config = this._getConfig(config);\n this._element = element;\n this._indicatorsElement = this._element.querySelector(SELECTOR_INDICATORS);\n this._touchSupported = 'ontouchstart' in document.documentElement || navigator.maxTouchPoints > 0;\n this._pointerEvent = Boolean(window.PointerEvent || window.MSPointerEvent);\n\n this._addEventListeners();\n } // Getters\n\n\n var _proto = Carousel.prototype; // Public\n\n _proto.next = function next() {\n if (!this._isSliding) {\n this._slide(DIRECTION_NEXT);\n }\n };\n\n _proto.nextWhenVisible = function nextWhenVisible() {\n var $element = $__default[\"default\"](this._element); // Don't call next when the page isn't visible\n // or the carousel or its parent isn't visible\n\n if (!document.hidden && $element.is(':visible') && $element.css('visibility') !== 'hidden') {\n this.next();\n }\n };\n\n _proto.prev = function prev() {\n if (!this._isSliding) {\n this._slide(DIRECTION_PREV);\n }\n };\n\n _proto.pause = function pause(event) {\n if (!event) {\n this._isPaused = true;\n }\n\n if (this._element.querySelector(SELECTOR_NEXT_PREV)) {\n Util.triggerTransitionEnd(this._element);\n this.cycle(true);\n }\n\n clearInterval(this._interval);\n this._interval = null;\n };\n\n _proto.cycle = function cycle(event) {\n if (!event) {\n this._isPaused = false;\n }\n\n if (this._interval) {\n clearInterval(this._interval);\n this._interval = null;\n }\n\n if (this._config.interval && !this._isPaused) {\n this._updateInterval();\n\n this._interval = setInterval((document.visibilityState ? this.nextWhenVisible : this.next).bind(this), this._config.interval);\n }\n };\n\n _proto.to = function to(index) {\n var _this = this;\n\n this._activeElement = this._element.querySelector(SELECTOR_ACTIVE_ITEM);\n\n var activeIndex = this._getItemIndex(this._activeElement);\n\n if (index > this._items.length - 1 || index < 0) {\n return;\n }\n\n if (this._isSliding) {\n $__default[\"default\"](this._element).one(EVENT_SLID, function () {\n return _this.to(index);\n });\n return;\n }\n\n if (activeIndex === index) {\n this.pause();\n this.cycle();\n return;\n }\n\n var direction = index > activeIndex ? DIRECTION_NEXT : DIRECTION_PREV;\n\n this._slide(direction, this._items[index]);\n };\n\n _proto.dispose = function dispose() {\n $__default[\"default\"](this._element).off(EVENT_KEY$8);\n $__default[\"default\"].removeData(this._element, DATA_KEY$8);\n this._items = null;\n this._config = null;\n this._element = null;\n this._interval = null;\n this._isPaused = null;\n this._isSliding = null;\n this._activeElement = null;\n this._indicatorsElement = null;\n } // Private\n ;\n\n _proto._getConfig = function _getConfig(config) {\n config = _extends({}, Default$7, config);\n Util.typeCheckConfig(NAME$8, config, DefaultType$7);\n return config;\n };\n\n _proto._handleSwipe = function _handleSwipe() {\n var absDeltax = Math.abs(this.touchDeltaX);\n\n if (absDeltax <= SWIPE_THRESHOLD) {\n return;\n }\n\n var direction = absDeltax / this.touchDeltaX;\n this.touchDeltaX = 0; // swipe left\n\n if (direction > 0) {\n this.prev();\n } // swipe right\n\n\n if (direction < 0) {\n this.next();\n }\n };\n\n _proto._addEventListeners = function _addEventListeners() {\n var _this2 = this;\n\n if (this._config.keyboard) {\n $__default[\"default\"](this._element).on(EVENT_KEYDOWN, function (event) {\n return _this2._keydown(event);\n });\n }\n\n if (this._config.pause === 'hover') {\n $__default[\"default\"](this._element).on(EVENT_MOUSEENTER, function (event) {\n return _this2.pause(event);\n }).on(EVENT_MOUSELEAVE, function (event) {\n return _this2.cycle(event);\n });\n }\n\n if (this._config.touch) {\n this._addTouchEventListeners();\n }\n };\n\n _proto._addTouchEventListeners = function _addTouchEventListeners() {\n var _this3 = this;\n\n if (!this._touchSupported) {\n return;\n }\n\n var start = function start(event) {\n if (_this3._pointerEvent && PointerType[event.originalEvent.pointerType.toUpperCase()]) {\n _this3.touchStartX = event.originalEvent.clientX;\n } else if (!_this3._pointerEvent) {\n _this3.touchStartX = event.originalEvent.touches[0].clientX;\n }\n };\n\n var move = function move(event) {\n // ensure swiping with one touch and not pinching\n _this3.touchDeltaX = event.originalEvent.touches && event.originalEvent.touches.length > 1 ? 0 : event.originalEvent.touches[0].clientX - _this3.touchStartX;\n };\n\n var end = function end(event) {\n if (_this3._pointerEvent && PointerType[event.originalEvent.pointerType.toUpperCase()]) {\n _this3.touchDeltaX = event.originalEvent.clientX - _this3.touchStartX;\n }\n\n _this3._handleSwipe();\n\n if (_this3._config.pause === 'hover') {\n // If it's a touch-enabled device, mouseenter/leave are fired as\n // part of the mouse compatibility events on first tap - the carousel\n // would stop cycling until user tapped out of it;\n // here, we listen for touchend, explicitly pause the carousel\n // (as if it's the second time we tap on it, mouseenter compat event\n // is NOT fired) and after a timeout (to allow for mouse compatibility\n // events to fire) we explicitly restart cycling\n _this3.pause();\n\n if (_this3.touchTimeout) {\n clearTimeout(_this3.touchTimeout);\n }\n\n _this3.touchTimeout = setTimeout(function (event) {\n return _this3.cycle(event);\n }, TOUCHEVENT_COMPAT_WAIT + _this3._config.interval);\n }\n };\n\n $__default[\"default\"](this._element.querySelectorAll(SELECTOR_ITEM_IMG)).on(EVENT_DRAG_START, function (e) {\n return e.preventDefault();\n });\n\n if (this._pointerEvent) {\n $__default[\"default\"](this._element).on(EVENT_POINTERDOWN, function (event) {\n return start(event);\n });\n $__default[\"default\"](this._element).on(EVENT_POINTERUP, function (event) {\n return end(event);\n });\n\n this._element.classList.add(CLASS_NAME_POINTER_EVENT);\n } else {\n $__default[\"default\"](this._element).on(EVENT_TOUCHSTART, function (event) {\n return start(event);\n });\n $__default[\"default\"](this._element).on(EVENT_TOUCHMOVE, function (event) {\n return move(event);\n });\n $__default[\"default\"](this._element).on(EVENT_TOUCHEND, function (event) {\n return end(event);\n });\n }\n };\n\n _proto._keydown = function _keydown(event) {\n if (/input|textarea/i.test(event.target.tagName)) {\n return;\n }\n\n switch (event.which) {\n case ARROW_LEFT_KEYCODE:\n event.preventDefault();\n this.prev();\n break;\n\n case ARROW_RIGHT_KEYCODE:\n event.preventDefault();\n this.next();\n break;\n }\n };\n\n _proto._getItemIndex = function _getItemIndex(element) {\n this._items = element && element.parentNode ? [].slice.call(element.parentNode.querySelectorAll(SELECTOR_ITEM)) : [];\n return this._items.indexOf(element);\n };\n\n _proto._getItemByDirection = function _getItemByDirection(direction, activeElement) {\n var isNextDirection = direction === DIRECTION_NEXT;\n var isPrevDirection = direction === DIRECTION_PREV;\n\n var activeIndex = this._getItemIndex(activeElement);\n\n var lastItemIndex = this._items.length - 1;\n var isGoingToWrap = isPrevDirection && activeIndex === 0 || isNextDirection && activeIndex === lastItemIndex;\n\n if (isGoingToWrap && !this._config.wrap) {\n return activeElement;\n }\n\n var delta = direction === DIRECTION_PREV ? -1 : 1;\n var itemIndex = (activeIndex + delta) % this._items.length;\n return itemIndex === -1 ? this._items[this._items.length - 1] : this._items[itemIndex];\n };\n\n _proto._triggerSlideEvent = function _triggerSlideEvent(relatedTarget, eventDirectionName) {\n var targetIndex = this._getItemIndex(relatedTarget);\n\n var fromIndex = this._getItemIndex(this._element.querySelector(SELECTOR_ACTIVE_ITEM));\n\n var slideEvent = $__default[\"default\"].Event(EVENT_SLIDE, {\n relatedTarget: relatedTarget,\n direction: eventDirectionName,\n from: fromIndex,\n to: targetIndex\n });\n $__default[\"default\"](this._element).trigger(slideEvent);\n return slideEvent;\n };\n\n _proto._setActiveIndicatorElement = function _setActiveIndicatorElement(element) {\n if (this._indicatorsElement) {\n var indicators = [].slice.call(this._indicatorsElement.querySelectorAll(SELECTOR_ACTIVE$1));\n $__default[\"default\"](indicators).removeClass(CLASS_NAME_ACTIVE$2);\n\n var nextIndicator = this._indicatorsElement.children[this._getItemIndex(element)];\n\n if (nextIndicator) {\n $__default[\"default\"](nextIndicator).addClass(CLASS_NAME_ACTIVE$2);\n }\n }\n };\n\n _proto._updateInterval = function _updateInterval() {\n var element = this._activeElement || this._element.querySelector(SELECTOR_ACTIVE_ITEM);\n\n if (!element) {\n return;\n }\n\n var elementInterval = parseInt(element.getAttribute('data-interval'), 10);\n\n if (elementInterval) {\n this._config.defaultInterval = this._config.defaultInterval || this._config.interval;\n this._config.interval = elementInterval;\n } else {\n this._config.interval = this._config.defaultInterval || this._config.interval;\n }\n };\n\n _proto._slide = function _slide(direction, element) {\n var _this4 = this;\n\n var activeElement = this._element.querySelector(SELECTOR_ACTIVE_ITEM);\n\n var activeElementIndex = this._getItemIndex(activeElement);\n\n var nextElement = element || activeElement && this._getItemByDirection(direction, activeElement);\n\n var nextElementIndex = this._getItemIndex(nextElement);\n\n var isCycling = Boolean(this._interval);\n var directionalClassName;\n var orderClassName;\n var eventDirectionName;\n\n if (direction === DIRECTION_NEXT) {\n directionalClassName = CLASS_NAME_LEFT;\n orderClassName = CLASS_NAME_NEXT;\n eventDirectionName = DIRECTION_LEFT;\n } else {\n directionalClassName = CLASS_NAME_RIGHT;\n orderClassName = CLASS_NAME_PREV;\n eventDirectionName = DIRECTION_RIGHT;\n }\n\n if (nextElement && $__default[\"default\"](nextElement).hasClass(CLASS_NAME_ACTIVE$2)) {\n this._isSliding = false;\n return;\n }\n\n var slideEvent = this._triggerSlideEvent(nextElement, eventDirectionName);\n\n if (slideEvent.isDefaultPrevented()) {\n return;\n }\n\n if (!activeElement || !nextElement) {\n // Some weirdness is happening, so we bail\n return;\n }\n\n this._isSliding = true;\n\n if (isCycling) {\n this.pause();\n }\n\n this._setActiveIndicatorElement(nextElement);\n\n this._activeElement = nextElement;\n var slidEvent = $__default[\"default\"].Event(EVENT_SLID, {\n relatedTarget: nextElement,\n direction: eventDirectionName,\n from: activeElementIndex,\n to: nextElementIndex\n });\n\n if ($__default[\"default\"](this._element).hasClass(CLASS_NAME_SLIDE)) {\n $__default[\"default\"](nextElement).addClass(orderClassName);\n Util.reflow(nextElement);\n $__default[\"default\"](activeElement).addClass(directionalClassName);\n $__default[\"default\"](nextElement).addClass(directionalClassName);\n var transitionDuration = Util.getTransitionDurationFromElement(activeElement);\n $__default[\"default\"](activeElement).one(Util.TRANSITION_END, function () {\n $__default[\"default\"](nextElement).removeClass(directionalClassName + \" \" + orderClassName).addClass(CLASS_NAME_ACTIVE$2);\n $__default[\"default\"](activeElement).removeClass(CLASS_NAME_ACTIVE$2 + \" \" + orderClassName + \" \" + directionalClassName);\n _this4._isSliding = false;\n setTimeout(function () {\n return $__default[\"default\"](_this4._element).trigger(slidEvent);\n }, 0);\n }).emulateTransitionEnd(transitionDuration);\n } else {\n $__default[\"default\"](activeElement).removeClass(CLASS_NAME_ACTIVE$2);\n $__default[\"default\"](nextElement).addClass(CLASS_NAME_ACTIVE$2);\n this._isSliding = false;\n $__default[\"default\"](this._element).trigger(slidEvent);\n }\n\n if (isCycling) {\n this.cycle();\n }\n } // Static\n ;\n\n Carousel._jQueryInterface = function _jQueryInterface(config) {\n return this.each(function () {\n var data = $__default[\"default\"](this).data(DATA_KEY$8);\n\n var _config = _extends({}, Default$7, $__default[\"default\"](this).data());\n\n if (_typeof(config) === 'object') {\n _config = _extends({}, _config, config);\n }\n\n var action = typeof config === 'string' ? config : _config.slide;\n\n if (!data) {\n data = new Carousel(this, _config);\n $__default[\"default\"](this).data(DATA_KEY$8, data);\n }\n\n if (typeof config === 'number') {\n data.to(config);\n } else if (typeof action === 'string') {\n if (typeof data[action] === 'undefined') {\n throw new TypeError(\"No method named \\\"\" + action + \"\\\"\");\n }\n\n data[action]();\n } else if (_config.interval && _config.ride) {\n data.pause();\n data.cycle();\n }\n });\n };\n\n Carousel._dataApiClickHandler = function _dataApiClickHandler(event) {\n var selector = Util.getSelectorFromElement(this);\n\n if (!selector) {\n return;\n }\n\n var target = $__default[\"default\"](selector)[0];\n\n if (!target || !$__default[\"default\"](target).hasClass(CLASS_NAME_CAROUSEL)) {\n return;\n }\n\n var config = _extends({}, $__default[\"default\"](target).data(), $__default[\"default\"](this).data());\n\n var slideIndex = this.getAttribute('data-slide-to');\n\n if (slideIndex) {\n config.interval = false;\n }\n\n Carousel._jQueryInterface.call($__default[\"default\"](target), config);\n\n if (slideIndex) {\n $__default[\"default\"](target).data(DATA_KEY$8).to(slideIndex);\n }\n\n event.preventDefault();\n };\n\n _createClass(Carousel, null, [{\n key: \"VERSION\",\n get: function get() {\n return VERSION$8;\n }\n }, {\n key: \"Default\",\n get: function get() {\n return Default$7;\n }\n }]);\n\n return Carousel;\n }();\n /**\n * Data API implementation\n */\n\n\n $__default[\"default\"](document).on(EVENT_CLICK_DATA_API$4, SELECTOR_DATA_SLIDE, Carousel._dataApiClickHandler);\n $__default[\"default\"](window).on(EVENT_LOAD_DATA_API$1, function () {\n var carousels = [].slice.call(document.querySelectorAll(SELECTOR_DATA_RIDE));\n\n for (var i = 0, len = carousels.length; i < len; i++) {\n var $carousel = $__default[\"default\"](carousels[i]);\n\n Carousel._jQueryInterface.call($carousel, $carousel.data());\n }\n });\n /**\n * jQuery\n */\n\n $__default[\"default\"].fn[NAME$8] = Carousel._jQueryInterface;\n $__default[\"default\"].fn[NAME$8].Constructor = Carousel;\n\n $__default[\"default\"].fn[NAME$8].noConflict = function () {\n $__default[\"default\"].fn[NAME$8] = JQUERY_NO_CONFLICT$8;\n return Carousel._jQueryInterface;\n };\n /**\n * Constants\n */\n\n\n var NAME$7 = 'collapse';\n var VERSION$7 = '4.6.2';\n var DATA_KEY$7 = 'bs.collapse';\n var EVENT_KEY$7 = \".\" + DATA_KEY$7;\n var DATA_API_KEY$4 = '.data-api';\n var JQUERY_NO_CONFLICT$7 = $__default[\"default\"].fn[NAME$7];\n var CLASS_NAME_SHOW$6 = 'show';\n var CLASS_NAME_COLLAPSE = 'collapse';\n var CLASS_NAME_COLLAPSING = 'collapsing';\n var CLASS_NAME_COLLAPSED = 'collapsed';\n var DIMENSION_WIDTH = 'width';\n var DIMENSION_HEIGHT = 'height';\n var EVENT_SHOW$4 = \"show\" + EVENT_KEY$7;\n var EVENT_SHOWN$4 = \"shown\" + EVENT_KEY$7;\n var EVENT_HIDE$4 = \"hide\" + EVENT_KEY$7;\n var EVENT_HIDDEN$4 = \"hidden\" + EVENT_KEY$7;\n var EVENT_CLICK_DATA_API$3 = \"click\" + EVENT_KEY$7 + DATA_API_KEY$4;\n var SELECTOR_ACTIVES = '.show, .collapsing';\n var SELECTOR_DATA_TOGGLE$3 = '[data-toggle=\"collapse\"]';\n var Default$6 = {\n toggle: true,\n parent: ''\n };\n var DefaultType$6 = {\n toggle: 'boolean',\n parent: '(string|element)'\n };\n /**\n * Class definition\n */\n\n var Collapse = /*#__PURE__*/function () {\n function Collapse(element, config) {\n this._isTransitioning = false;\n this._element = element;\n this._config = this._getConfig(config);\n this._triggerArray = [].slice.call(document.querySelectorAll(\"[data-toggle=\\\"collapse\\\"][href=\\\"#\" + element.id + \"\\\"],\" + (\"[data-toggle=\\\"collapse\\\"][data-target=\\\"#\" + element.id + \"\\\"]\")));\n var toggleList = [].slice.call(document.querySelectorAll(SELECTOR_DATA_TOGGLE$3));\n\n for (var i = 0, len = toggleList.length; i < len; i++) {\n var elem = toggleList[i];\n var selector = Util.getSelectorFromElement(elem);\n var filterElement = [].slice.call(document.querySelectorAll(selector)).filter(function (foundElem) {\n return foundElem === element;\n });\n\n if (selector !== null && filterElement.length > 0) {\n this._selector = selector;\n\n this._triggerArray.push(elem);\n }\n }\n\n this._parent = this._config.parent ? this._getParent() : null;\n\n if (!this._config.parent) {\n this._addAriaAndCollapsedClass(this._element, this._triggerArray);\n }\n\n if (this._config.toggle) {\n this.toggle();\n }\n } // Getters\n\n\n var _proto = Collapse.prototype; // Public\n\n _proto.toggle = function toggle() {\n if ($__default[\"default\"](this._element).hasClass(CLASS_NAME_SHOW$6)) {\n this.hide();\n } else {\n this.show();\n }\n };\n\n _proto.show = function show() {\n var _this = this;\n\n if (this._isTransitioning || $__default[\"default\"](this._element).hasClass(CLASS_NAME_SHOW$6)) {\n return;\n }\n\n var actives;\n var activesData;\n\n if (this._parent) {\n actives = [].slice.call(this._parent.querySelectorAll(SELECTOR_ACTIVES)).filter(function (elem) {\n if (typeof _this._config.parent === 'string') {\n return elem.getAttribute('data-parent') === _this._config.parent;\n }\n\n return elem.classList.contains(CLASS_NAME_COLLAPSE);\n });\n\n if (actives.length === 0) {\n actives = null;\n }\n }\n\n if (actives) {\n activesData = $__default[\"default\"](actives).not(this._selector).data(DATA_KEY$7);\n\n if (activesData && activesData._isTransitioning) {\n return;\n }\n }\n\n var startEvent = $__default[\"default\"].Event(EVENT_SHOW$4);\n $__default[\"default\"](this._element).trigger(startEvent);\n\n if (startEvent.isDefaultPrevented()) {\n return;\n }\n\n if (actives) {\n Collapse._jQueryInterface.call($__default[\"default\"](actives).not(this._selector), 'hide');\n\n if (!activesData) {\n $__default[\"default\"](actives).data(DATA_KEY$7, null);\n }\n }\n\n var dimension = this._getDimension();\n\n $__default[\"default\"](this._element).removeClass(CLASS_NAME_COLLAPSE).addClass(CLASS_NAME_COLLAPSING);\n this._element.style[dimension] = 0;\n\n if (this._triggerArray.length) {\n $__default[\"default\"](this._triggerArray).removeClass(CLASS_NAME_COLLAPSED).attr('aria-expanded', true);\n }\n\n this.setTransitioning(true);\n\n var complete = function complete() {\n $__default[\"default\"](_this._element).removeClass(CLASS_NAME_COLLAPSING).addClass(CLASS_NAME_COLLAPSE + \" \" + CLASS_NAME_SHOW$6);\n _this._element.style[dimension] = '';\n\n _this.setTransitioning(false);\n\n $__default[\"default\"](_this._element).trigger(EVENT_SHOWN$4);\n };\n\n var capitalizedDimension = dimension[0].toUpperCase() + dimension.slice(1);\n var scrollSize = \"scroll\" + capitalizedDimension;\n var transitionDuration = Util.getTransitionDurationFromElement(this._element);\n $__default[\"default\"](this._element).one(Util.TRANSITION_END, complete).emulateTransitionEnd(transitionDuration);\n this._element.style[dimension] = this._element[scrollSize] + \"px\";\n };\n\n _proto.hide = function hide() {\n var _this2 = this;\n\n if (this._isTransitioning || !$__default[\"default\"](this._element).hasClass(CLASS_NAME_SHOW$6)) {\n return;\n }\n\n var startEvent = $__default[\"default\"].Event(EVENT_HIDE$4);\n $__default[\"default\"](this._element).trigger(startEvent);\n\n if (startEvent.isDefaultPrevented()) {\n return;\n }\n\n var dimension = this._getDimension();\n\n this._element.style[dimension] = this._element.getBoundingClientRect()[dimension] + \"px\";\n Util.reflow(this._element);\n $__default[\"default\"](this._element).addClass(CLASS_NAME_COLLAPSING).removeClass(CLASS_NAME_COLLAPSE + \" \" + CLASS_NAME_SHOW$6);\n var triggerArrayLength = this._triggerArray.length;\n\n if (triggerArrayLength > 0) {\n for (var i = 0; i < triggerArrayLength; i++) {\n var trigger = this._triggerArray[i];\n var selector = Util.getSelectorFromElement(trigger);\n\n if (selector !== null) {\n var $elem = $__default[\"default\"]([].slice.call(document.querySelectorAll(selector)));\n\n if (!$elem.hasClass(CLASS_NAME_SHOW$6)) {\n $__default[\"default\"](trigger).addClass(CLASS_NAME_COLLAPSED).attr('aria-expanded', false);\n }\n }\n }\n }\n\n this.setTransitioning(true);\n\n var complete = function complete() {\n _this2.setTransitioning(false);\n\n $__default[\"default\"](_this2._element).removeClass(CLASS_NAME_COLLAPSING).addClass(CLASS_NAME_COLLAPSE).trigger(EVENT_HIDDEN$4);\n };\n\n this._element.style[dimension] = '';\n var transitionDuration = Util.getTransitionDurationFromElement(this._element);\n $__default[\"default\"](this._element).one(Util.TRANSITION_END, complete).emulateTransitionEnd(transitionDuration);\n };\n\n _proto.setTransitioning = function setTransitioning(isTransitioning) {\n this._isTransitioning = isTransitioning;\n };\n\n _proto.dispose = function dispose() {\n $__default[\"default\"].removeData(this._element, DATA_KEY$7);\n this._config = null;\n this._parent = null;\n this._element = null;\n this._triggerArray = null;\n this._isTransitioning = null;\n } // Private\n ;\n\n _proto._getConfig = function _getConfig(config) {\n config = _extends({}, Default$6, config);\n config.toggle = Boolean(config.toggle); // Coerce string values\n\n Util.typeCheckConfig(NAME$7, config, DefaultType$6);\n return config;\n };\n\n _proto._getDimension = function _getDimension() {\n var hasWidth = $__default[\"default\"](this._element).hasClass(DIMENSION_WIDTH);\n return hasWidth ? DIMENSION_WIDTH : DIMENSION_HEIGHT;\n };\n\n _proto._getParent = function _getParent() {\n var _this3 = this;\n\n var parent;\n\n if (Util.isElement(this._config.parent)) {\n parent = this._config.parent; // It's a jQuery object\n\n if (typeof this._config.parent.jquery !== 'undefined') {\n parent = this._config.parent[0];\n }\n } else {\n parent = document.querySelector(this._config.parent);\n }\n\n var selector = \"[data-toggle=\\\"collapse\\\"][data-parent=\\\"\" + this._config.parent + \"\\\"]\";\n var children = [].slice.call(parent.querySelectorAll(selector));\n $__default[\"default\"](children).each(function (i, element) {\n _this3._addAriaAndCollapsedClass(Collapse._getTargetFromElement(element), [element]);\n });\n return parent;\n };\n\n _proto._addAriaAndCollapsedClass = function _addAriaAndCollapsedClass(element, triggerArray) {\n var isOpen = $__default[\"default\"](element).hasClass(CLASS_NAME_SHOW$6);\n\n if (triggerArray.length) {\n $__default[\"default\"](triggerArray).toggleClass(CLASS_NAME_COLLAPSED, !isOpen).attr('aria-expanded', isOpen);\n }\n } // Static\n ;\n\n Collapse._getTargetFromElement = function _getTargetFromElement(element) {\n var selector = Util.getSelectorFromElement(element);\n return selector ? document.querySelector(selector) : null;\n };\n\n Collapse._jQueryInterface = function _jQueryInterface(config) {\n return this.each(function () {\n var $element = $__default[\"default\"](this);\n var data = $element.data(DATA_KEY$7);\n\n var _config = _extends({}, Default$6, $element.data(), _typeof(config) === 'object' && config ? config : {});\n\n if (!data && _config.toggle && typeof config === 'string' && /show|hide/.test(config)) {\n _config.toggle = false;\n }\n\n if (!data) {\n data = new Collapse(this, _config);\n $element.data(DATA_KEY$7, data);\n }\n\n if (typeof config === 'string') {\n if (typeof data[config] === 'undefined') {\n throw new TypeError(\"No method named \\\"\" + config + \"\\\"\");\n }\n\n data[config]();\n }\n });\n };\n\n _createClass(Collapse, null, [{\n key: \"VERSION\",\n get: function get() {\n return VERSION$7;\n }\n }, {\n key: \"Default\",\n get: function get() {\n return Default$6;\n }\n }]);\n\n return Collapse;\n }();\n /**\n * Data API implementation\n */\n\n\n $__default[\"default\"](document).on(EVENT_CLICK_DATA_API$3, SELECTOR_DATA_TOGGLE$3, function (event) {\n // preventDefault only for <a> elements (which change the URL) not inside the collapsible element\n if (event.currentTarget.tagName === 'A') {\n event.preventDefault();\n }\n\n var $trigger = $__default[\"default\"](this);\n var selector = Util.getSelectorFromElement(this);\n var selectors = [].slice.call(document.querySelectorAll(selector));\n $__default[\"default\"](selectors).each(function () {\n var $target = $__default[\"default\"](this);\n var data = $target.data(DATA_KEY$7);\n var config = data ? 'toggle' : $trigger.data();\n\n Collapse._jQueryInterface.call($target, config);\n });\n });\n /**\n * jQuery\n */\n\n $__default[\"default\"].fn[NAME$7] = Collapse._jQueryInterface;\n $__default[\"default\"].fn[NAME$7].Constructor = Collapse;\n\n $__default[\"default\"].fn[NAME$7].noConflict = function () {\n $__default[\"default\"].fn[NAME$7] = JQUERY_NO_CONFLICT$7;\n return Collapse._jQueryInterface;\n };\n /**\n * Constants\n */\n\n\n var NAME$6 = 'dropdown';\n var VERSION$6 = '4.6.2';\n var DATA_KEY$6 = 'bs.dropdown';\n var EVENT_KEY$6 = \".\" + DATA_KEY$6;\n var DATA_API_KEY$3 = '.data-api';\n var JQUERY_NO_CONFLICT$6 = $__default[\"default\"].fn[NAME$6];\n var ESCAPE_KEYCODE$1 = 27; // KeyboardEvent.which value for Escape (Esc) key\n\n var SPACE_KEYCODE = 32; // KeyboardEvent.which value for space key\n\n var TAB_KEYCODE = 9; // KeyboardEvent.which value for tab key\n\n var ARROW_UP_KEYCODE = 38; // KeyboardEvent.which value for up arrow key\n\n var ARROW_DOWN_KEYCODE = 40; // KeyboardEvent.which value for down arrow key\n\n var RIGHT_MOUSE_BUTTON_WHICH = 3; // MouseEvent.which value for the right button (assuming a right-handed mouse)\n\n var REGEXP_KEYDOWN = new RegExp(ARROW_UP_KEYCODE + \"|\" + ARROW_DOWN_KEYCODE + \"|\" + ESCAPE_KEYCODE$1);\n var CLASS_NAME_DISABLED$1 = 'disabled';\n var CLASS_NAME_SHOW$5 = 'show';\n var CLASS_NAME_DROPUP = 'dropup';\n var CLASS_NAME_DROPRIGHT = 'dropright';\n var CLASS_NAME_DROPLEFT = 'dropleft';\n var CLASS_NAME_MENURIGHT = 'dropdown-menu-right';\n var CLASS_NAME_POSITION_STATIC = 'position-static';\n var EVENT_HIDE$3 = \"hide\" + EVENT_KEY$6;\n var EVENT_HIDDEN$3 = \"hidden\" + EVENT_KEY$6;\n var EVENT_SHOW$3 = \"show\" + EVENT_KEY$6;\n var EVENT_SHOWN$3 = \"shown\" + EVENT_KEY$6;\n var EVENT_CLICK = \"click\" + EVENT_KEY$6;\n var EVENT_CLICK_DATA_API$2 = \"click\" + EVENT_KEY$6 + DATA_API_KEY$3;\n var EVENT_KEYDOWN_DATA_API = \"keydown\" + EVENT_KEY$6 + DATA_API_KEY$3;\n var EVENT_KEYUP_DATA_API = \"keyup\" + EVENT_KEY$6 + DATA_API_KEY$3;\n var SELECTOR_DATA_TOGGLE$2 = '[data-toggle=\"dropdown\"]';\n var SELECTOR_FORM_CHILD = '.dropdown form';\n var SELECTOR_MENU = '.dropdown-menu';\n var SELECTOR_NAVBAR_NAV = '.navbar-nav';\n var SELECTOR_VISIBLE_ITEMS = '.dropdown-menu .dropdown-item:not(.disabled):not(:disabled)';\n var PLACEMENT_TOP = 'top-start';\n var PLACEMENT_TOPEND = 'top-end';\n var PLACEMENT_BOTTOM = 'bottom-start';\n var PLACEMENT_BOTTOMEND = 'bottom-end';\n var PLACEMENT_RIGHT = 'right-start';\n var PLACEMENT_LEFT = 'left-start';\n var Default$5 = {\n offset: 0,\n flip: true,\n boundary: 'scrollParent',\n reference: 'toggle',\n display: 'dynamic',\n popperConfig: null\n };\n var DefaultType$5 = {\n offset: '(number|string|function)',\n flip: 'boolean',\n boundary: '(string|element)',\n reference: '(string|element)',\n display: 'string',\n popperConfig: '(null|object)'\n };\n /**\n * Class definition\n */\n\n var Dropdown = /*#__PURE__*/function () {\n function Dropdown(element, config) {\n this._element = element;\n this._popper = null;\n this._config = this._getConfig(config);\n this._menu = this._getMenuElement();\n this._inNavbar = this._detectNavbar();\n\n this._addEventListeners();\n } // Getters\n\n\n var _proto = Dropdown.prototype; // Public\n\n _proto.toggle = function toggle() {\n if (this._element.disabled || $__default[\"default\"](this._element).hasClass(CLASS_NAME_DISABLED$1)) {\n return;\n }\n\n var isActive = $__default[\"default\"](this._menu).hasClass(CLASS_NAME_SHOW$5);\n\n Dropdown._clearMenus();\n\n if (isActive) {\n return;\n }\n\n this.show(true);\n };\n\n _proto.show = function show(usePopper) {\n if (usePopper === void 0) {\n usePopper = false;\n }\n\n if (this._element.disabled || $__default[\"default\"](this._element).hasClass(CLASS_NAME_DISABLED$1) || $__default[\"default\"](this._menu).hasClass(CLASS_NAME_SHOW$5)) {\n return;\n }\n\n var relatedTarget = {\n relatedTarget: this._element\n };\n var showEvent = $__default[\"default\"].Event(EVENT_SHOW$3, relatedTarget);\n\n var parent = Dropdown._getParentFromElement(this._element);\n\n $__default[\"default\"](parent).trigger(showEvent);\n\n if (showEvent.isDefaultPrevented()) {\n return;\n } // Totally disable Popper for Dropdowns in Navbar\n\n\n if (!this._inNavbar && usePopper) {\n // Check for Popper dependency\n if (typeof Popper__default[\"default\"] === 'undefined') {\n throw new TypeError('Bootstrap\\'s dropdowns require Popper (https://popper.js.org)');\n }\n\n var referenceElement = this._element;\n\n if (this._config.reference === 'parent') {\n referenceElement = parent;\n } else if (Util.isElement(this._config.reference)) {\n referenceElement = this._config.reference; // Check if it's jQuery element\n\n if (typeof this._config.reference.jquery !== 'undefined') {\n referenceElement = this._config.reference[0];\n }\n } // If boundary is not `scrollParent`, then set position to `static`\n // to allow the menu to \"escape\" the scroll parent's boundaries\n // https://github.com/twbs/bootstrap/issues/24251\n\n\n if (this._config.boundary !== 'scrollParent') {\n $__default[\"default\"](parent).addClass(CLASS_NAME_POSITION_STATIC);\n }\n\n this._popper = new Popper__default[\"default\"](referenceElement, this._menu, this._getPopperConfig());\n } // If this is a touch-enabled device we add extra\n // empty mouseover listeners to the body's immediate children;\n // only needed because of broken event delegation on iOS\n // https://www.quirksmode.org/blog/archives/2014/02/mouse_event_bub.html\n\n\n if ('ontouchstart' in document.documentElement && $__default[\"default\"](parent).closest(SELECTOR_NAVBAR_NAV).length === 0) {\n $__default[\"default\"](document.body).children().on('mouseover', null, $__default[\"default\"].noop);\n }\n\n this._element.focus();\n\n this._element.setAttribute('aria-expanded', true);\n\n $__default[\"default\"](this._menu).toggleClass(CLASS_NAME_SHOW$5);\n $__default[\"default\"](parent).toggleClass(CLASS_NAME_SHOW$5).trigger($__default[\"default\"].Event(EVENT_SHOWN$3, relatedTarget));\n };\n\n _proto.hide = function hide() {\n if (this._element.disabled || $__default[\"default\"](this._element).hasClass(CLASS_NAME_DISABLED$1) || !$__default[\"default\"](this._menu).hasClass(CLASS_NAME_SHOW$5)) {\n return;\n }\n\n var relatedTarget = {\n relatedTarget: this._element\n };\n var hideEvent = $__default[\"default\"].Event(EVENT_HIDE$3, relatedTarget);\n\n var parent = Dropdown._getParentFromElement(this._element);\n\n $__default[\"default\"](parent).trigger(hideEvent);\n\n if (hideEvent.isDefaultPrevented()) {\n return;\n }\n\n if (this._popper) {\n this._popper.destroy();\n }\n\n $__default[\"default\"](this._menu).toggleClass(CLASS_NAME_SHOW$5);\n $__default[\"default\"](parent).toggleClass(CLASS_NAME_SHOW$5).trigger($__default[\"default\"].Event(EVENT_HIDDEN$3, relatedTarget));\n };\n\n _proto.dispose = function dispose() {\n $__default[\"default\"].removeData(this._element, DATA_KEY$6);\n $__default[\"default\"](this._element).off(EVENT_KEY$6);\n this._element = null;\n this._menu = null;\n\n if (this._popper !== null) {\n this._popper.destroy();\n\n this._popper = null;\n }\n };\n\n _proto.update = function update() {\n this._inNavbar = this._detectNavbar();\n\n if (this._popper !== null) {\n this._popper.scheduleUpdate();\n }\n } // Private\n ;\n\n _proto._addEventListeners = function _addEventListeners() {\n var _this = this;\n\n $__default[\"default\"](this._element).on(EVENT_CLICK, function (event) {\n event.preventDefault();\n event.stopPropagation();\n\n _this.toggle();\n });\n };\n\n _proto._getConfig = function _getConfig(config) {\n config = _extends({}, this.constructor.Default, $__default[\"default\"](this._element).data(), config);\n Util.typeCheckConfig(NAME$6, config, this.constructor.DefaultType);\n return config;\n };\n\n _proto._getMenuElement = function _getMenuElement() {\n if (!this._menu) {\n var parent = Dropdown._getParentFromElement(this._element);\n\n if (parent) {\n this._menu = parent.querySelector(SELECTOR_MENU);\n }\n }\n\n return this._menu;\n };\n\n _proto._getPlacement = function _getPlacement() {\n var $parentDropdown = $__default[\"default\"](this._element.parentNode);\n var placement = PLACEMENT_BOTTOM; // Handle dropup\n\n if ($parentDropdown.hasClass(CLASS_NAME_DROPUP)) {\n placement = $__default[\"default\"](this._menu).hasClass(CLASS_NAME_MENURIGHT) ? PLACEMENT_TOPEND : PLACEMENT_TOP;\n } else if ($parentDropdown.hasClass(CLASS_NAME_DROPRIGHT)) {\n placement = PLACEMENT_RIGHT;\n } else if ($parentDropdown.hasClass(CLASS_NAME_DROPLEFT)) {\n placement = PLACEMENT_LEFT;\n } else if ($__default[\"default\"](this._menu).hasClass(CLASS_NAME_MENURIGHT)) {\n placement = PLACEMENT_BOTTOMEND;\n }\n\n return placement;\n };\n\n _proto._detectNavbar = function _detectNavbar() {\n return $__default[\"default\"](this._element).closest('.navbar').length > 0;\n };\n\n _proto._getOffset = function _getOffset() {\n var _this2 = this;\n\n var offset = {};\n\n if (typeof this._config.offset === 'function') {\n offset.fn = function (data) {\n data.offsets = _extends({}, data.offsets, _this2._config.offset(data.offsets, _this2._element));\n return data;\n };\n } else {\n offset.offset = this._config.offset;\n }\n\n return offset;\n };\n\n _proto._getPopperConfig = function _getPopperConfig() {\n var popperConfig = {\n placement: this._getPlacement(),\n modifiers: {\n offset: this._getOffset(),\n flip: {\n enabled: this._config.flip\n },\n preventOverflow: {\n boundariesElement: this._config.boundary\n }\n }\n }; // Disable Popper if we have a static display\n\n if (this._config.display === 'static') {\n popperConfig.modifiers.applyStyle = {\n enabled: false\n };\n }\n\n return _extends({}, popperConfig, this._config.popperConfig);\n } // Static\n ;\n\n Dropdown._jQueryInterface = function _jQueryInterface(config) {\n return this.each(function () {\n var data = $__default[\"default\"](this).data(DATA_KEY$6);\n\n var _config = _typeof(config) === 'object' ? config : null;\n\n if (!data) {\n data = new Dropdown(this, _config);\n $__default[\"default\"](this).data(DATA_KEY$6, data);\n }\n\n if (typeof config === 'string') {\n if (typeof data[config] === 'undefined') {\n throw new TypeError(\"No method named \\\"\" + config + \"\\\"\");\n }\n\n data[config]();\n }\n });\n };\n\n Dropdown._clearMenus = function _clearMenus(event) {\n if (event && (event.which === RIGHT_MOUSE_BUTTON_WHICH || event.type === 'keyup' && event.which !== TAB_KEYCODE)) {\n return;\n }\n\n var toggles = [].slice.call(document.querySelectorAll(SELECTOR_DATA_TOGGLE$2));\n\n for (var i = 0, len = toggles.length; i < len; i++) {\n var parent = Dropdown._getParentFromElement(toggles[i]);\n\n var context = $__default[\"default\"](toggles[i]).data(DATA_KEY$6);\n var relatedTarget = {\n relatedTarget: toggles[i]\n };\n\n if (event && event.type === 'click') {\n relatedTarget.clickEvent = event;\n }\n\n if (!context) {\n continue;\n }\n\n var dropdownMenu = context._menu;\n\n if (!$__default[\"default\"](parent).hasClass(CLASS_NAME_SHOW$5)) {\n continue;\n }\n\n if (event && (event.type === 'click' && /input|textarea/i.test(event.target.tagName) || event.type === 'keyup' && event.which === TAB_KEYCODE) && $__default[\"default\"].contains(parent, event.target)) {\n continue;\n }\n\n var hideEvent = $__default[\"default\"].Event(EVENT_HIDE$3, relatedTarget);\n $__default[\"default\"](parent).trigger(hideEvent);\n\n if (hideEvent.isDefaultPrevented()) {\n continue;\n } // If this is a touch-enabled device we remove the extra\n // empty mouseover listeners we added for iOS support\n\n\n if ('ontouchstart' in document.documentElement) {\n $__default[\"default\"](document.body).children().off('mouseover', null, $__default[\"default\"].noop);\n }\n\n toggles[i].setAttribute('aria-expanded', 'false');\n\n if (context._popper) {\n context._popper.destroy();\n }\n\n $__default[\"default\"](dropdownMenu).removeClass(CLASS_NAME_SHOW$5);\n $__default[\"default\"](parent).removeClass(CLASS_NAME_SHOW$5).trigger($__default[\"default\"].Event(EVENT_HIDDEN$3, relatedTarget));\n }\n };\n\n Dropdown._getParentFromElement = function _getParentFromElement(element) {\n var parent;\n var selector = Util.getSelectorFromElement(element);\n\n if (selector) {\n parent = document.querySelector(selector);\n }\n\n return parent || element.parentNode;\n } // eslint-disable-next-line complexity\n ;\n\n Dropdown._dataApiKeydownHandler = function _dataApiKeydownHandler(event) {\n // If not input/textarea:\n // - And not a key in REGEXP_KEYDOWN => not a dropdown command\n // If input/textarea:\n // - If space key => not a dropdown command\n // - If key is other than escape\n // - If key is not up or down => not a dropdown command\n // - If trigger inside the menu => not a dropdown command\n if (/input|textarea/i.test(event.target.tagName) ? event.which === SPACE_KEYCODE || event.which !== ESCAPE_KEYCODE$1 && (event.which !== ARROW_DOWN_KEYCODE && event.which !== ARROW_UP_KEYCODE || $__default[\"default\"](event.target).closest(SELECTOR_MENU).length) : !REGEXP_KEYDOWN.test(event.which)) {\n return;\n }\n\n if (this.disabled || $__default[\"default\"](this).hasClass(CLASS_NAME_DISABLED$1)) {\n return;\n }\n\n var parent = Dropdown._getParentFromElement(this);\n\n var isActive = $__default[\"default\"](parent).hasClass(CLASS_NAME_SHOW$5);\n\n if (!isActive && event.which === ESCAPE_KEYCODE$1) {\n return;\n }\n\n event.preventDefault();\n event.stopPropagation();\n\n if (!isActive || event.which === ESCAPE_KEYCODE$1 || event.which === SPACE_KEYCODE) {\n if (event.which === ESCAPE_KEYCODE$1) {\n $__default[\"default\"](parent.querySelector(SELECTOR_DATA_TOGGLE$2)).trigger('focus');\n }\n\n $__default[\"default\"](this).trigger('click');\n return;\n }\n\n var items = [].slice.call(parent.querySelectorAll(SELECTOR_VISIBLE_ITEMS)).filter(function (item) {\n return $__default[\"default\"](item).is(':visible');\n });\n\n if (items.length === 0) {\n return;\n }\n\n var index = items.indexOf(event.target);\n\n if (event.which === ARROW_UP_KEYCODE && index > 0) {\n // Up\n index--;\n }\n\n if (event.which === ARROW_DOWN_KEYCODE && index < items.length - 1) {\n // Down\n index++;\n }\n\n if (index < 0) {\n index = 0;\n }\n\n items[index].focus();\n };\n\n _createClass(Dropdown, null, [{\n key: \"VERSION\",\n get: function get() {\n return VERSION$6;\n }\n }, {\n key: \"Default\",\n get: function get() {\n return Default$5;\n }\n }, {\n key: \"DefaultType\",\n get: function get() {\n return DefaultType$5;\n }\n }]);\n\n return Dropdown;\n }();\n /**\n * Data API implementation\n */\n\n\n $__default[\"default\"](document).on(EVENT_KEYDOWN_DATA_API, SELECTOR_DATA_TOGGLE$2, Dropdown._dataApiKeydownHandler).on(EVENT_KEYDOWN_DATA_API, SELECTOR_MENU, Dropdown._dataApiKeydownHandler).on(EVENT_CLICK_DATA_API$2 + \" \" + EVENT_KEYUP_DATA_API, Dropdown._clearMenus).on(EVENT_CLICK_DATA_API$2, SELECTOR_DATA_TOGGLE$2, function (event) {\n event.preventDefault();\n event.stopPropagation();\n\n Dropdown._jQueryInterface.call($__default[\"default\"](this), 'toggle');\n }).on(EVENT_CLICK_DATA_API$2, SELECTOR_FORM_CHILD, function (e) {\n e.stopPropagation();\n });\n /**\n * jQuery\n */\n\n $__default[\"default\"].fn[NAME$6] = Dropdown._jQueryInterface;\n $__default[\"default\"].fn[NAME$6].Constructor = Dropdown;\n\n $__default[\"default\"].fn[NAME$6].noConflict = function () {\n $__default[\"default\"].fn[NAME$6] = JQUERY_NO_CONFLICT$6;\n return Dropdown._jQueryInterface;\n };\n /**\n * Constants\n */\n\n\n var NAME$5 = 'modal';\n var VERSION$5 = '4.6.2';\n var DATA_KEY$5 = 'bs.modal';\n var EVENT_KEY$5 = \".\" + DATA_KEY$5;\n var DATA_API_KEY$2 = '.data-api';\n var JQUERY_NO_CONFLICT$5 = $__default[\"default\"].fn[NAME$5];\n var ESCAPE_KEYCODE = 27; // KeyboardEvent.which value for Escape (Esc) key\n\n var CLASS_NAME_SCROLLABLE = 'modal-dialog-scrollable';\n var CLASS_NAME_SCROLLBAR_MEASURER = 'modal-scrollbar-measure';\n var CLASS_NAME_BACKDROP = 'modal-backdrop';\n var CLASS_NAME_OPEN = 'modal-open';\n var CLASS_NAME_FADE$4 = 'fade';\n var CLASS_NAME_SHOW$4 = 'show';\n var CLASS_NAME_STATIC = 'modal-static';\n var EVENT_HIDE$2 = \"hide\" + EVENT_KEY$5;\n var EVENT_HIDE_PREVENTED = \"hidePrevented\" + EVENT_KEY$5;\n var EVENT_HIDDEN$2 = \"hidden\" + EVENT_KEY$5;\n var EVENT_SHOW$2 = \"show\" + EVENT_KEY$5;\n var EVENT_SHOWN$2 = \"shown\" + EVENT_KEY$5;\n var EVENT_FOCUSIN = \"focusin\" + EVENT_KEY$5;\n var EVENT_RESIZE = \"resize\" + EVENT_KEY$5;\n var EVENT_CLICK_DISMISS$1 = \"click.dismiss\" + EVENT_KEY$5;\n var EVENT_KEYDOWN_DISMISS = \"keydown.dismiss\" + EVENT_KEY$5;\n var EVENT_MOUSEUP_DISMISS = \"mouseup.dismiss\" + EVENT_KEY$5;\n var EVENT_MOUSEDOWN_DISMISS = \"mousedown.dismiss\" + EVENT_KEY$5;\n var EVENT_CLICK_DATA_API$1 = \"click\" + EVENT_KEY$5 + DATA_API_KEY$2;\n var SELECTOR_DIALOG = '.modal-dialog';\n var SELECTOR_MODAL_BODY = '.modal-body';\n var SELECTOR_DATA_TOGGLE$1 = '[data-toggle=\"modal\"]';\n var SELECTOR_DATA_DISMISS$1 = '[data-dismiss=\"modal\"]';\n var SELECTOR_FIXED_CONTENT = '.fixed-top, .fixed-bottom, .is-fixed, .sticky-top';\n var SELECTOR_STICKY_CONTENT = '.sticky-top';\n var Default$4 = {\n backdrop: true,\n keyboard: true,\n focus: true,\n show: true\n };\n var DefaultType$4 = {\n backdrop: '(boolean|string)',\n keyboard: 'boolean',\n focus: 'boolean',\n show: 'boolean'\n };\n /**\n * Class definition\n */\n\n var Modal = /*#__PURE__*/function () {\n function Modal(element, config) {\n this._config = this._getConfig(config);\n this._element = element;\n this._dialog = element.querySelector(SELECTOR_DIALOG);\n this._backdrop = null;\n this._isShown = false;\n this._isBodyOverflowing = false;\n this._ignoreBackdropClick = false;\n this._isTransitioning = false;\n this._scrollbarWidth = 0;\n } // Getters\n\n\n var _proto = Modal.prototype; // Public\n\n _proto.toggle = function toggle(relatedTarget) {\n return this._isShown ? this.hide() : this.show(relatedTarget);\n };\n\n _proto.show = function show(relatedTarget) {\n var _this = this;\n\n if (this._isShown || this._isTransitioning) {\n return;\n }\n\n var showEvent = $__default[\"default\"].Event(EVENT_SHOW$2, {\n relatedTarget: relatedTarget\n });\n $__default[\"default\"](this._element).trigger(showEvent);\n\n if (showEvent.isDefaultPrevented()) {\n return;\n }\n\n this._isShown = true;\n\n if ($__default[\"default\"](this._element).hasClass(CLASS_NAME_FADE$4)) {\n this._isTransitioning = true;\n }\n\n this._checkScrollbar();\n\n this._setScrollbar();\n\n this._adjustDialog();\n\n this._setEscapeEvent();\n\n this._setResizeEvent();\n\n $__default[\"default\"](this._element).on(EVENT_CLICK_DISMISS$1, SELECTOR_DATA_DISMISS$1, function (event) {\n return _this.hide(event);\n });\n $__default[\"default\"](this._dialog).on(EVENT_MOUSEDOWN_DISMISS, function () {\n $__default[\"default\"](_this._element).one(EVENT_MOUSEUP_DISMISS, function (event) {\n if ($__default[\"default\"](event.target).is(_this._element)) {\n _this._ignoreBackdropClick = true;\n }\n });\n });\n\n this._showBackdrop(function () {\n return _this._showElement(relatedTarget);\n });\n };\n\n _proto.hide = function hide(event) {\n var _this2 = this;\n\n if (event) {\n event.preventDefault();\n }\n\n if (!this._isShown || this._isTransitioning) {\n return;\n }\n\n var hideEvent = $__default[\"default\"].Event(EVENT_HIDE$2);\n $__default[\"default\"](this._element).trigger(hideEvent);\n\n if (!this._isShown || hideEvent.isDefaultPrevented()) {\n return;\n }\n\n this._isShown = false;\n var transition = $__default[\"default\"](this._element).hasClass(CLASS_NAME_FADE$4);\n\n if (transition) {\n this._isTransitioning = true;\n }\n\n this._setEscapeEvent();\n\n this._setResizeEvent();\n\n $__default[\"default\"](document).off(EVENT_FOCUSIN);\n $__default[\"default\"](this._element).removeClass(CLASS_NAME_SHOW$4);\n $__default[\"default\"](this._element).off(EVENT_CLICK_DISMISS$1);\n $__default[\"default\"](this._dialog).off(EVENT_MOUSEDOWN_DISMISS);\n\n if (transition) {\n var transitionDuration = Util.getTransitionDurationFromElement(this._element);\n $__default[\"default\"](this._element).one(Util.TRANSITION_END, function (event) {\n return _this2._hideModal(event);\n }).emulateTransitionEnd(transitionDuration);\n } else {\n this._hideModal();\n }\n };\n\n _proto.dispose = function dispose() {\n [window, this._element, this._dialog].forEach(function (htmlElement) {\n return $__default[\"default\"](htmlElement).off(EVENT_KEY$5);\n });\n /**\n * `document` has 2 events `EVENT_FOCUSIN` and `EVENT_CLICK_DATA_API`\n * Do not move `document` in `htmlElements` array\n * It will remove `EVENT_CLICK_DATA_API` event that should remain\n */\n\n $__default[\"default\"](document).off(EVENT_FOCUSIN);\n $__default[\"default\"].removeData(this._element, DATA_KEY$5);\n this._config = null;\n this._element = null;\n this._dialog = null;\n this._backdrop = null;\n this._isShown = null;\n this._isBodyOverflowing = null;\n this._ignoreBackdropClick = null;\n this._isTransitioning = null;\n this._scrollbarWidth = null;\n };\n\n _proto.handleUpdate = function handleUpdate() {\n this._adjustDialog();\n } // Private\n ;\n\n _proto._getConfig = function _getConfig(config) {\n config = _extends({}, Default$4, config);\n Util.typeCheckConfig(NAME$5, config, DefaultType$4);\n return config;\n };\n\n _proto._triggerBackdropTransition = function _triggerBackdropTransition() {\n var _this3 = this;\n\n var hideEventPrevented = $__default[\"default\"].Event(EVENT_HIDE_PREVENTED);\n $__default[\"default\"](this._element).trigger(hideEventPrevented);\n\n if (hideEventPrevented.isDefaultPrevented()) {\n return;\n }\n\n var isModalOverflowing = this._element.scrollHeight > document.documentElement.clientHeight;\n\n if (!isModalOverflowing) {\n this._element.style.overflowY = 'hidden';\n }\n\n this._element.classList.add(CLASS_NAME_STATIC);\n\n var modalTransitionDuration = Util.getTransitionDurationFromElement(this._dialog);\n $__default[\"default\"](this._element).off(Util.TRANSITION_END);\n $__default[\"default\"](this._element).one(Util.TRANSITION_END, function () {\n _this3._element.classList.remove(CLASS_NAME_STATIC);\n\n if (!isModalOverflowing) {\n $__default[\"default\"](_this3._element).one(Util.TRANSITION_END, function () {\n _this3._element.style.overflowY = '';\n }).emulateTransitionEnd(_this3._element, modalTransitionDuration);\n }\n }).emulateTransitionEnd(modalTransitionDuration);\n\n this._element.focus();\n };\n\n _proto._showElement = function _showElement(relatedTarget) {\n var _this4 = this;\n\n var transition = $__default[\"default\"](this._element).hasClass(CLASS_NAME_FADE$4);\n var modalBody = this._dialog ? this._dialog.querySelector(SELECTOR_MODAL_BODY) : null;\n\n if (!this._element.parentNode || this._element.parentNode.nodeType !== Node.ELEMENT_NODE) {\n // Don't move modal's DOM position\n document.body.appendChild(this._element);\n }\n\n this._element.style.display = 'block';\n\n this._element.removeAttribute('aria-hidden');\n\n this._element.setAttribute('aria-modal', true);\n\n this._element.setAttribute('role', 'dialog');\n\n if ($__default[\"default\"](this._dialog).hasClass(CLASS_NAME_SCROLLABLE) && modalBody) {\n modalBody.scrollTop = 0;\n } else {\n this._element.scrollTop = 0;\n }\n\n if (transition) {\n Util.reflow(this._element);\n }\n\n $__default[\"default\"](this._element).addClass(CLASS_NAME_SHOW$4);\n\n if (this._config.focus) {\n this._enforceFocus();\n }\n\n var shownEvent = $__default[\"default\"].Event(EVENT_SHOWN$2, {\n relatedTarget: relatedTarget\n });\n\n var transitionComplete = function transitionComplete() {\n if (_this4._config.focus) {\n _this4._element.focus();\n }\n\n _this4._isTransitioning = false;\n $__default[\"default\"](_this4._element).trigger(shownEvent);\n };\n\n if (transition) {\n var transitionDuration = Util.getTransitionDurationFromElement(this._dialog);\n $__default[\"default\"](this._dialog).one(Util.TRANSITION_END, transitionComplete).emulateTransitionEnd(transitionDuration);\n } else {\n transitionComplete();\n }\n };\n\n _proto._enforceFocus = function _enforceFocus() {\n var _this5 = this;\n\n $__default[\"default\"](document).off(EVENT_FOCUSIN) // Guard against infinite focus loop\n .on(EVENT_FOCUSIN, function (event) {\n if (document !== event.target && _this5._element !== event.target && $__default[\"default\"](_this5._element).has(event.target).length === 0) {\n _this5._element.focus();\n }\n });\n };\n\n _proto._setEscapeEvent = function _setEscapeEvent() {\n var _this6 = this;\n\n if (this._isShown) {\n $__default[\"default\"](this._element).on(EVENT_KEYDOWN_DISMISS, function (event) {\n if (_this6._config.keyboard && event.which === ESCAPE_KEYCODE) {\n event.preventDefault();\n\n _this6.hide();\n } else if (!_this6._config.keyboard && event.which === ESCAPE_KEYCODE) {\n _this6._triggerBackdropTransition();\n }\n });\n } else if (!this._isShown) {\n $__default[\"default\"](this._element).off(EVENT_KEYDOWN_DISMISS);\n }\n };\n\n _proto._setResizeEvent = function _setResizeEvent() {\n var _this7 = this;\n\n if (this._isShown) {\n $__default[\"default\"](window).on(EVENT_RESIZE, function (event) {\n return _this7.handleUpdate(event);\n });\n } else {\n $__default[\"default\"](window).off(EVENT_RESIZE);\n }\n };\n\n _proto._hideModal = function _hideModal() {\n var _this8 = this;\n\n this._element.style.display = 'none';\n\n this._element.setAttribute('aria-hidden', true);\n\n this._element.removeAttribute('aria-modal');\n\n this._element.removeAttribute('role');\n\n this._isTransitioning = false;\n\n this._showBackdrop(function () {\n $__default[\"default\"](document.body).removeClass(CLASS_NAME_OPEN);\n\n _this8._resetAdjustments();\n\n _this8._resetScrollbar();\n\n $__default[\"default\"](_this8._element).trigger(EVENT_HIDDEN$2);\n });\n };\n\n _proto._removeBackdrop = function _removeBackdrop() {\n if (this._backdrop) {\n $__default[\"default\"](this._backdrop).remove();\n this._backdrop = null;\n }\n };\n\n _proto._showBackdrop = function _showBackdrop(callback) {\n var _this9 = this;\n\n var animate = $__default[\"default\"](this._element).hasClass(CLASS_NAME_FADE$4) ? CLASS_NAME_FADE$4 : '';\n\n if (this._isShown && this._config.backdrop) {\n this._backdrop = document.createElement('div');\n this._backdrop.className = CLASS_NAME_BACKDROP;\n\n if (animate) {\n this._backdrop.classList.add(animate);\n }\n\n $__default[\"default\"](this._backdrop).appendTo(document.body);\n $__default[\"default\"](this._element).on(EVENT_CLICK_DISMISS$1, function (event) {\n if (_this9._ignoreBackdropClick) {\n _this9._ignoreBackdropClick = false;\n return;\n }\n\n if (event.target !== event.currentTarget) {\n return;\n }\n\n if (_this9._config.backdrop === 'static') {\n _this9._triggerBackdropTransition();\n } else {\n _this9.hide();\n }\n });\n\n if (animate) {\n Util.reflow(this._backdrop);\n }\n\n $__default[\"default\"](this._backdrop).addClass(CLASS_NAME_SHOW$4);\n\n if (!callback) {\n return;\n }\n\n if (!animate) {\n callback();\n return;\n }\n\n var backdropTransitionDuration = Util.getTransitionDurationFromElement(this._backdrop);\n $__default[\"default\"](this._backdrop).one(Util.TRANSITION_END, callback).emulateTransitionEnd(backdropTransitionDuration);\n } else if (!this._isShown && this._backdrop) {\n $__default[\"default\"](this._backdrop).removeClass(CLASS_NAME_SHOW$4);\n\n var callbackRemove = function callbackRemove() {\n _this9._removeBackdrop();\n\n if (callback) {\n callback();\n }\n };\n\n if ($__default[\"default\"](this._element).hasClass(CLASS_NAME_FADE$4)) {\n var _backdropTransitionDuration = Util.getTransitionDurationFromElement(this._backdrop);\n\n $__default[\"default\"](this._backdrop).one(Util.TRANSITION_END, callbackRemove).emulateTransitionEnd(_backdropTransitionDuration);\n } else {\n callbackRemove();\n }\n } else if (callback) {\n callback();\n }\n } // ----------------------------------------------------------------------\n // the following methods are used to handle overflowing modals\n // todo (fat): these should probably be refactored out of modal.js\n // ----------------------------------------------------------------------\n ;\n\n _proto._adjustDialog = function _adjustDialog() {\n var isModalOverflowing = this._element.scrollHeight > document.documentElement.clientHeight;\n\n if (!this._isBodyOverflowing && isModalOverflowing) {\n this._element.style.paddingLeft = this._scrollbarWidth + \"px\";\n }\n\n if (this._isBodyOverflowing && !isModalOverflowing) {\n this._element.style.paddingRight = this._scrollbarWidth + \"px\";\n }\n };\n\n _proto._resetAdjustments = function _resetAdjustments() {\n this._element.style.paddingLeft = '';\n this._element.style.paddingRight = '';\n };\n\n _proto._checkScrollbar = function _checkScrollbar() {\n var rect = document.body.getBoundingClientRect();\n this._isBodyOverflowing = Math.round(rect.left + rect.right) < window.innerWidth;\n this._scrollbarWidth = this._getScrollbarWidth();\n };\n\n _proto._setScrollbar = function _setScrollbar() {\n var _this10 = this;\n\n if (this._isBodyOverflowing) {\n // Note: DOMNode.style.paddingRight returns the actual value or '' if not set\n // while $(DOMNode).css('padding-right') returns the calculated value or 0 if not set\n var fixedContent = [].slice.call(document.querySelectorAll(SELECTOR_FIXED_CONTENT));\n var stickyContent = [].slice.call(document.querySelectorAll(SELECTOR_STICKY_CONTENT)); // Adjust fixed content padding\n\n $__default[\"default\"](fixedContent).each(function (index, element) {\n var actualPadding = element.style.paddingRight;\n var calculatedPadding = $__default[\"default\"](element).css('padding-right');\n $__default[\"default\"](element).data('padding-right', actualPadding).css('padding-right', parseFloat(calculatedPadding) + _this10._scrollbarWidth + \"px\");\n }); // Adjust sticky content margin\n\n $__default[\"default\"](stickyContent).each(function (index, element) {\n var actualMargin = element.style.marginRight;\n var calculatedMargin = $__default[\"default\"](element).css('margin-right');\n $__default[\"default\"](element).data('margin-right', actualMargin).css('margin-right', parseFloat(calculatedMargin) - _this10._scrollbarWidth + \"px\");\n }); // Adjust body padding\n\n var actualPadding = document.body.style.paddingRight;\n var calculatedPadding = $__default[\"default\"](document.body).css('padding-right');\n $__default[\"default\"](document.body).data('padding-right', actualPadding).css('padding-right', parseFloat(calculatedPadding) + this._scrollbarWidth + \"px\");\n }\n\n $__default[\"default\"](document.body).addClass(CLASS_NAME_OPEN);\n };\n\n _proto._resetScrollbar = function _resetScrollbar() {\n // Restore fixed content padding\n var fixedContent = [].slice.call(document.querySelectorAll(SELECTOR_FIXED_CONTENT));\n $__default[\"default\"](fixedContent).each(function (index, element) {\n var padding = $__default[\"default\"](element).data('padding-right');\n $__default[\"default\"](element).removeData('padding-right');\n element.style.paddingRight = padding ? padding : '';\n }); // Restore sticky content\n\n var elements = [].slice.call(document.querySelectorAll(\"\" + SELECTOR_STICKY_CONTENT));\n $__default[\"default\"](elements).each(function (index, element) {\n var margin = $__default[\"default\"](element).data('margin-right');\n\n if (typeof margin !== 'undefined') {\n $__default[\"default\"](element).css('margin-right', margin).removeData('margin-right');\n }\n }); // Restore body padding\n\n var padding = $__default[\"default\"](document.body).data('padding-right');\n $__default[\"default\"](document.body).removeData('padding-right');\n document.body.style.paddingRight = padding ? padding : '';\n };\n\n _proto._getScrollbarWidth = function _getScrollbarWidth() {\n // thx d.walsh\n var scrollDiv = document.createElement('div');\n scrollDiv.className = CLASS_NAME_SCROLLBAR_MEASURER;\n document.body.appendChild(scrollDiv);\n var scrollbarWidth = scrollDiv.getBoundingClientRect().width - scrollDiv.clientWidth;\n document.body.removeChild(scrollDiv);\n return scrollbarWidth;\n } // Static\n ;\n\n Modal._jQueryInterface = function _jQueryInterface(config, relatedTarget) {\n return this.each(function () {\n var data = $__default[\"default\"](this).data(DATA_KEY$5);\n\n var _config = _extends({}, Default$4, $__default[\"default\"](this).data(), _typeof(config) === 'object' && config ? config : {});\n\n if (!data) {\n data = new Modal(this, _config);\n $__default[\"default\"](this).data(DATA_KEY$5, data);\n }\n\n if (typeof config === 'string') {\n if (typeof data[config] === 'undefined') {\n throw new TypeError(\"No method named \\\"\" + config + \"\\\"\");\n }\n\n data[config](relatedTarget);\n } else if (_config.show) {\n data.show(relatedTarget);\n }\n });\n };\n\n _createClass(Modal, null, [{\n key: \"VERSION\",\n get: function get() {\n return VERSION$5;\n }\n }, {\n key: \"Default\",\n get: function get() {\n return Default$4;\n }\n }]);\n\n return Modal;\n }();\n /**\n * Data API implementation\n */\n\n\n $__default[\"default\"](document).on(EVENT_CLICK_DATA_API$1, SELECTOR_DATA_TOGGLE$1, function (event) {\n var _this11 = this;\n\n var target;\n var selector = Util.getSelectorFromElement(this);\n\n if (selector) {\n target = document.querySelector(selector);\n }\n\n var config = $__default[\"default\"](target).data(DATA_KEY$5) ? 'toggle' : _extends({}, $__default[\"default\"](target).data(), $__default[\"default\"](this).data());\n\n if (this.tagName === 'A' || this.tagName === 'AREA') {\n event.preventDefault();\n }\n\n var $target = $__default[\"default\"](target).one(EVENT_SHOW$2, function (showEvent) {\n if (showEvent.isDefaultPrevented()) {\n // Only register focus restorer if modal will actually get shown\n return;\n }\n\n $target.one(EVENT_HIDDEN$2, function () {\n if ($__default[\"default\"](_this11).is(':visible')) {\n _this11.focus();\n }\n });\n });\n\n Modal._jQueryInterface.call($__default[\"default\"](target), config, this);\n });\n /**\n * jQuery\n */\n\n $__default[\"default\"].fn[NAME$5] = Modal._jQueryInterface;\n $__default[\"default\"].fn[NAME$5].Constructor = Modal;\n\n $__default[\"default\"].fn[NAME$5].noConflict = function () {\n $__default[\"default\"].fn[NAME$5] = JQUERY_NO_CONFLICT$5;\n return Modal._jQueryInterface;\n };\n /**\n * --------------------------------------------------------------------------\n * Bootstrap (v4.6.2): tools/sanitizer.js\n * Licensed under MIT (https://github.com/twbs/bootstrap/blob/main/LICENSE)\n * --------------------------------------------------------------------------\n */\n\n\n var uriAttrs = ['background', 'cite', 'href', 'itemtype', 'longdesc', 'poster', 'src', 'xlink:href'];\n var ARIA_ATTRIBUTE_PATTERN = /^aria-[\\w-]*$/i;\n var DefaultWhitelist = {\n // Global attributes allowed on any supplied element below.\n '*': ['class', 'dir', 'id', 'lang', 'role', ARIA_ATTRIBUTE_PATTERN],\n a: ['target', 'href', 'title', 'rel'],\n area: [],\n b: [],\n br: [],\n col: [],\n code: [],\n div: [],\n em: [],\n hr: [],\n h1: [],\n h2: [],\n h3: [],\n h4: [],\n h5: [],\n h6: [],\n i: [],\n img: ['src', 'srcset', 'alt', 'title', 'width', 'height'],\n li: [],\n ol: [],\n p: [],\n pre: [],\n s: [],\n small: [],\n span: [],\n sub: [],\n sup: [],\n strong: [],\n u: [],\n ul: []\n };\n /**\n * A pattern that recognizes a commonly useful subset of URLs that are safe.\n *\n * Shoutout to Angular https://github.com/angular/angular/blob/12.2.x/packages/core/src/sanitization/url_sanitizer.ts\n */\n\n var SAFE_URL_PATTERN = /^(?:(?:https?|mailto|ftp|tel|file|sms):|[^#&/:?]*(?:[#/?]|$))/i;\n /**\n * A pattern that matches safe data URLs. Only matches image, video and audio types.\n *\n * Shoutout to Angular https://github.com/angular/angular/blob/12.2.x/packages/core/src/sanitization/url_sanitizer.ts\n */\n\n var DATA_URL_PATTERN = /^data:(?:image\\/(?:bmp|gif|jpeg|jpg|png|tiff|webp)|video\\/(?:mpeg|mp4|ogg|webm)|audio\\/(?:mp3|oga|ogg|opus));base64,[\\d+/a-z]+=*$/i;\n\n function allowedAttribute(attr, allowedAttributeList) {\n var attrName = attr.nodeName.toLowerCase();\n\n if (allowedAttributeList.indexOf(attrName) !== -1) {\n if (uriAttrs.indexOf(attrName) !== -1) {\n return Boolean(SAFE_URL_PATTERN.test(attr.nodeValue) || DATA_URL_PATTERN.test(attr.nodeValue));\n }\n\n return true;\n }\n\n var regExp = allowedAttributeList.filter(function (attrRegex) {\n return attrRegex instanceof RegExp;\n }); // Check if a regular expression validates the attribute.\n\n for (var i = 0, len = regExp.length; i < len; i++) {\n if (regExp[i].test(attrName)) {\n return true;\n }\n }\n\n return false;\n }\n\n function sanitizeHtml(unsafeHtml, whiteList, sanitizeFn) {\n if (unsafeHtml.length === 0) {\n return unsafeHtml;\n }\n\n if (sanitizeFn && typeof sanitizeFn === 'function') {\n return sanitizeFn(unsafeHtml);\n }\n\n var domParser = new window.DOMParser();\n var createdDocument = domParser.parseFromString(unsafeHtml, 'text/html');\n var whitelistKeys = Object.keys(whiteList);\n var elements = [].slice.call(createdDocument.body.querySelectorAll('*'));\n\n var _loop = function _loop(i, len) {\n var el = elements[i];\n var elName = el.nodeName.toLowerCase();\n\n if (whitelistKeys.indexOf(el.nodeName.toLowerCase()) === -1) {\n el.parentNode.removeChild(el);\n return \"continue\";\n }\n\n var attributeList = [].slice.call(el.attributes); // eslint-disable-next-line unicorn/prefer-spread\n\n var whitelistedAttributes = [].concat(whiteList['*'] || [], whiteList[elName] || []);\n attributeList.forEach(function (attr) {\n if (!allowedAttribute(attr, whitelistedAttributes)) {\n el.removeAttribute(attr.nodeName);\n }\n });\n };\n\n for (var i = 0, len = elements.length; i < len; i++) {\n var _ret = _loop(i);\n\n if (_ret === \"continue\") continue;\n }\n\n return createdDocument.body.innerHTML;\n }\n /**\n * Constants\n */\n\n\n var NAME$4 = 'tooltip';\n var VERSION$4 = '4.6.2';\n var DATA_KEY$4 = 'bs.tooltip';\n var EVENT_KEY$4 = \".\" + DATA_KEY$4;\n var JQUERY_NO_CONFLICT$4 = $__default[\"default\"].fn[NAME$4];\n var CLASS_PREFIX$1 = 'bs-tooltip';\n var BSCLS_PREFIX_REGEX$1 = new RegExp(\"(^|\\\\s)\" + CLASS_PREFIX$1 + \"\\\\S+\", 'g');\n var DISALLOWED_ATTRIBUTES = ['sanitize', 'whiteList', 'sanitizeFn'];\n var CLASS_NAME_FADE$3 = 'fade';\n var CLASS_NAME_SHOW$3 = 'show';\n var HOVER_STATE_SHOW = 'show';\n var HOVER_STATE_OUT = 'out';\n var SELECTOR_TOOLTIP_INNER = '.tooltip-inner';\n var SELECTOR_ARROW = '.arrow';\n var TRIGGER_HOVER = 'hover';\n var TRIGGER_FOCUS = 'focus';\n var TRIGGER_CLICK = 'click';\n var TRIGGER_MANUAL = 'manual';\n var AttachmentMap = {\n AUTO: 'auto',\n TOP: 'top',\n RIGHT: 'right',\n BOTTOM: 'bottom',\n LEFT: 'left'\n };\n var Default$3 = {\n animation: true,\n template: '<div class=\"tooltip\" role=\"tooltip\">' + '<div class=\"arrow\"></div>' + '<div class=\"tooltip-inner\"></div></div>',\n trigger: 'hover focus',\n title: '',\n delay: 0,\n html: false,\n selector: false,\n placement: 'top',\n offset: 0,\n container: false,\n fallbackPlacement: 'flip',\n boundary: 'scrollParent',\n customClass: '',\n sanitize: true,\n sanitizeFn: null,\n whiteList: DefaultWhitelist,\n popperConfig: null\n };\n var DefaultType$3 = {\n animation: 'boolean',\n template: 'string',\n title: '(string|element|function)',\n trigger: 'string',\n delay: '(number|object)',\n html: 'boolean',\n selector: '(string|boolean)',\n placement: '(string|function)',\n offset: '(number|string|function)',\n container: '(string|element|boolean)',\n fallbackPlacement: '(string|array)',\n boundary: '(string|element)',\n customClass: '(string|function)',\n sanitize: 'boolean',\n sanitizeFn: '(null|function)',\n whiteList: 'object',\n popperConfig: '(null|object)'\n };\n var Event$1 = {\n HIDE: \"hide\" + EVENT_KEY$4,\n HIDDEN: \"hidden\" + EVENT_KEY$4,\n SHOW: \"show\" + EVENT_KEY$4,\n SHOWN: \"shown\" + EVENT_KEY$4,\n INSERTED: \"inserted\" + EVENT_KEY$4,\n CLICK: \"click\" + EVENT_KEY$4,\n FOCUSIN: \"focusin\" + EVENT_KEY$4,\n FOCUSOUT: \"focusout\" + EVENT_KEY$4,\n MOUSEENTER: \"mouseenter\" + EVENT_KEY$4,\n MOUSELEAVE: \"mouseleave\" + EVENT_KEY$4\n };\n /**\n * Class definition\n */\n\n var Tooltip = /*#__PURE__*/function () {\n function Tooltip(element, config) {\n if (typeof Popper__default[\"default\"] === 'undefined') {\n throw new TypeError('Bootstrap\\'s tooltips require Popper (https://popper.js.org)');\n } // Private\n\n\n this._isEnabled = true;\n this._timeout = 0;\n this._hoverState = '';\n this._activeTrigger = {};\n this._popper = null; // Protected\n\n this.element = element;\n this.config = this._getConfig(config);\n this.tip = null;\n\n this._setListeners();\n } // Getters\n\n\n var _proto = Tooltip.prototype; // Public\n\n _proto.enable = function enable() {\n this._isEnabled = true;\n };\n\n _proto.disable = function disable() {\n this._isEnabled = false;\n };\n\n _proto.toggleEnabled = function toggleEnabled() {\n this._isEnabled = !this._isEnabled;\n };\n\n _proto.toggle = function toggle(event) {\n if (!this._isEnabled) {\n return;\n }\n\n if (event) {\n var dataKey = this.constructor.DATA_KEY;\n var context = $__default[\"default\"](event.currentTarget).data(dataKey);\n\n if (!context) {\n context = new this.constructor(event.currentTarget, this._getDelegateConfig());\n $__default[\"default\"](event.currentTarget).data(dataKey, context);\n }\n\n context._activeTrigger.click = !context._activeTrigger.click;\n\n if (context._isWithActiveTrigger()) {\n context._enter(null, context);\n } else {\n context._leave(null, context);\n }\n } else {\n if ($__default[\"default\"](this.getTipElement()).hasClass(CLASS_NAME_SHOW$3)) {\n this._leave(null, this);\n\n return;\n }\n\n this._enter(null, this);\n }\n };\n\n _proto.dispose = function dispose() {\n clearTimeout(this._timeout);\n $__default[\"default\"].removeData(this.element, this.constructor.DATA_KEY);\n $__default[\"default\"](this.element).off(this.constructor.EVENT_KEY);\n $__default[\"default\"](this.element).closest('.modal').off('hide.bs.modal', this._hideModalHandler);\n\n if (this.tip) {\n $__default[\"default\"](this.tip).remove();\n }\n\n this._isEnabled = null;\n this._timeout = null;\n this._hoverState = null;\n this._activeTrigger = null;\n\n if (this._popper) {\n this._popper.destroy();\n }\n\n this._popper = null;\n this.element = null;\n this.config = null;\n this.tip = null;\n };\n\n _proto.show = function show() {\n var _this = this;\n\n if ($__default[\"default\"](this.element).css('display') === 'none') {\n throw new Error('Please use show on visible elements');\n }\n\n var showEvent = $__default[\"default\"].Event(this.constructor.Event.SHOW);\n\n if (this.isWithContent() && this._isEnabled) {\n $__default[\"default\"](this.element).trigger(showEvent);\n var shadowRoot = Util.findShadowRoot(this.element);\n var isInTheDom = $__default[\"default\"].contains(shadowRoot !== null ? shadowRoot : this.element.ownerDocument.documentElement, this.element);\n\n if (showEvent.isDefaultPrevented() || !isInTheDom) {\n return;\n }\n\n var tip = this.getTipElement();\n var tipId = Util.getUID(this.constructor.NAME);\n tip.setAttribute('id', tipId);\n this.element.setAttribute('aria-describedby', tipId);\n this.setContent();\n\n if (this.config.animation) {\n $__default[\"default\"](tip).addClass(CLASS_NAME_FADE$3);\n }\n\n var placement = typeof this.config.placement === 'function' ? this.config.placement.call(this, tip, this.element) : this.config.placement;\n\n var attachment = this._getAttachment(placement);\n\n this.addAttachmentClass(attachment);\n\n var container = this._getContainer();\n\n $__default[\"default\"](tip).data(this.constructor.DATA_KEY, this);\n\n if (!$__default[\"default\"].contains(this.element.ownerDocument.documentElement, this.tip)) {\n $__default[\"default\"](tip).appendTo(container);\n }\n\n $__default[\"default\"](this.element).trigger(this.constructor.Event.INSERTED);\n this._popper = new Popper__default[\"default\"](this.element, tip, this._getPopperConfig(attachment));\n $__default[\"default\"](tip).addClass(CLASS_NAME_SHOW$3);\n $__default[\"default\"](tip).addClass(this.config.customClass); // If this is a touch-enabled device we add extra\n // empty mouseover listeners to the body's immediate children;\n // only needed because of broken event delegation on iOS\n // https://www.quirksmode.org/blog/archives/2014/02/mouse_event_bub.html\n\n if ('ontouchstart' in document.documentElement) {\n $__default[\"default\"](document.body).children().on('mouseover', null, $__default[\"default\"].noop);\n }\n\n var complete = function complete() {\n if (_this.config.animation) {\n _this._fixTransition();\n }\n\n var prevHoverState = _this._hoverState;\n _this._hoverState = null;\n $__default[\"default\"](_this.element).trigger(_this.constructor.Event.SHOWN);\n\n if (prevHoverState === HOVER_STATE_OUT) {\n _this._leave(null, _this);\n }\n };\n\n if ($__default[\"default\"](this.tip).hasClass(CLASS_NAME_FADE$3)) {\n var transitionDuration = Util.getTransitionDurationFromElement(this.tip);\n $__default[\"default\"](this.tip).one(Util.TRANSITION_END, complete).emulateTransitionEnd(transitionDuration);\n } else {\n complete();\n }\n }\n };\n\n _proto.hide = function hide(callback) {\n var _this2 = this;\n\n var tip = this.getTipElement();\n var hideEvent = $__default[\"default\"].Event(this.constructor.Event.HIDE);\n\n var complete = function complete() {\n if (_this2._hoverState !== HOVER_STATE_SHOW && tip.parentNode) {\n tip.parentNode.removeChild(tip);\n }\n\n _this2._cleanTipClass();\n\n _this2.element.removeAttribute('aria-describedby');\n\n $__default[\"default\"](_this2.element).trigger(_this2.constructor.Event.HIDDEN);\n\n if (_this2._popper !== null) {\n _this2._popper.destroy();\n }\n\n if (callback) {\n callback();\n }\n };\n\n $__default[\"default\"](this.element).trigger(hideEvent);\n\n if (hideEvent.isDefaultPrevented()) {\n return;\n }\n\n $__default[\"default\"](tip).removeClass(CLASS_NAME_SHOW$3); // If this is a touch-enabled device we remove the extra\n // empty mouseover listeners we added for iOS support\n\n if ('ontouchstart' in document.documentElement) {\n $__default[\"default\"](document.body).children().off('mouseover', null, $__default[\"default\"].noop);\n }\n\n this._activeTrigger[TRIGGER_CLICK] = false;\n this._activeTrigger[TRIGGER_FOCUS] = false;\n this._activeTrigger[TRIGGER_HOVER] = false;\n\n if ($__default[\"default\"](this.tip).hasClass(CLASS_NAME_FADE$3)) {\n var transitionDuration = Util.getTransitionDurationFromElement(tip);\n $__default[\"default\"](tip).one(Util.TRANSITION_END, complete).emulateTransitionEnd(transitionDuration);\n } else {\n complete();\n }\n\n this._hoverState = '';\n };\n\n _proto.update = function update() {\n if (this._popper !== null) {\n this._popper.scheduleUpdate();\n }\n } // Protected\n ;\n\n _proto.isWithContent = function isWithContent() {\n return Boolean(this.getTitle());\n };\n\n _proto.addAttachmentClass = function addAttachmentClass(attachment) {\n $__default[\"default\"](this.getTipElement()).addClass(CLASS_PREFIX$1 + \"-\" + attachment);\n };\n\n _proto.getTipElement = function getTipElement() {\n this.tip = this.tip || $__default[\"default\"](this.config.template)[0];\n return this.tip;\n };\n\n _proto.setContent = function setContent() {\n var tip = this.getTipElement();\n this.setElementContent($__default[\"default\"](tip.querySelectorAll(SELECTOR_TOOLTIP_INNER)), this.getTitle());\n $__default[\"default\"](tip).removeClass(CLASS_NAME_FADE$3 + \" \" + CLASS_NAME_SHOW$3);\n };\n\n _proto.setElementContent = function setElementContent($element, content) {\n if (_typeof(content) === 'object' && (content.nodeType || content.jquery)) {\n // Content is a DOM node or a jQuery\n if (this.config.html) {\n if (!$__default[\"default\"](content).parent().is($element)) {\n $element.empty().append(content);\n }\n } else {\n $element.text($__default[\"default\"](content).text());\n }\n\n return;\n }\n\n if (this.config.html) {\n if (this.config.sanitize) {\n content = sanitizeHtml(content, this.config.whiteList, this.config.sanitizeFn);\n }\n\n $element.html(content);\n } else {\n $element.text(content);\n }\n };\n\n _proto.getTitle = function getTitle() {\n var title = this.element.getAttribute('data-original-title');\n\n if (!title) {\n title = typeof this.config.title === 'function' ? this.config.title.call(this.element) : this.config.title;\n }\n\n return title;\n } // Private\n ;\n\n _proto._getPopperConfig = function _getPopperConfig(attachment) {\n var _this3 = this;\n\n var defaultBsConfig = {\n placement: attachment,\n modifiers: {\n offset: this._getOffset(),\n flip: {\n behavior: this.config.fallbackPlacement\n },\n arrow: {\n element: SELECTOR_ARROW\n },\n preventOverflow: {\n boundariesElement: this.config.boundary\n }\n },\n onCreate: function onCreate(data) {\n if (data.originalPlacement !== data.placement) {\n _this3._handlePopperPlacementChange(data);\n }\n },\n onUpdate: function onUpdate(data) {\n return _this3._handlePopperPlacementChange(data);\n }\n };\n return _extends({}, defaultBsConfig, this.config.popperConfig);\n };\n\n _proto._getOffset = function _getOffset() {\n var _this4 = this;\n\n var offset = {};\n\n if (typeof this.config.offset === 'function') {\n offset.fn = function (data) {\n data.offsets = _extends({}, data.offsets, _this4.config.offset(data.offsets, _this4.element));\n return data;\n };\n } else {\n offset.offset = this.config.offset;\n }\n\n return offset;\n };\n\n _proto._getContainer = function _getContainer() {\n if (this.config.container === false) {\n return document.body;\n }\n\n if (Util.isElement(this.config.container)) {\n return $__default[\"default\"](this.config.container);\n }\n\n return $__default[\"default\"](document).find(this.config.container);\n };\n\n _proto._getAttachment = function _getAttachment(placement) {\n return AttachmentMap[placement.toUpperCase()];\n };\n\n _proto._setListeners = function _setListeners() {\n var _this5 = this;\n\n var triggers = this.config.trigger.split(' ');\n triggers.forEach(function (trigger) {\n if (trigger === 'click') {\n $__default[\"default\"](_this5.element).on(_this5.constructor.Event.CLICK, _this5.config.selector, function (event) {\n return _this5.toggle(event);\n });\n } else if (trigger !== TRIGGER_MANUAL) {\n var eventIn = trigger === TRIGGER_HOVER ? _this5.constructor.Event.MOUSEENTER : _this5.constructor.Event.FOCUSIN;\n var eventOut = trigger === TRIGGER_HOVER ? _this5.constructor.Event.MOUSELEAVE : _this5.constructor.Event.FOCUSOUT;\n $__default[\"default\"](_this5.element).on(eventIn, _this5.config.selector, function (event) {\n return _this5._enter(event);\n }).on(eventOut, _this5.config.selector, function (event) {\n return _this5._leave(event);\n });\n }\n });\n\n this._hideModalHandler = function () {\n if (_this5.element) {\n _this5.hide();\n }\n };\n\n $__default[\"default\"](this.element).closest('.modal').on('hide.bs.modal', this._hideModalHandler);\n\n if (this.config.selector) {\n this.config = _extends({}, this.config, {\n trigger: 'manual',\n selector: ''\n });\n } else {\n this._fixTitle();\n }\n };\n\n _proto._fixTitle = function _fixTitle() {\n var titleType = _typeof(this.element.getAttribute('data-original-title'));\n\n if (this.element.getAttribute('title') || titleType !== 'string') {\n this.element.setAttribute('data-original-title', this.element.getAttribute('title') || '');\n this.element.setAttribute('title', '');\n }\n };\n\n _proto._enter = function _enter(event, context) {\n var dataKey = this.constructor.DATA_KEY;\n context = context || $__default[\"default\"](event.currentTarget).data(dataKey);\n\n if (!context) {\n context = new this.constructor(event.currentTarget, this._getDelegateConfig());\n $__default[\"default\"](event.currentTarget).data(dataKey, context);\n }\n\n if (event) {\n context._activeTrigger[event.type === 'focusin' ? TRIGGER_FOCUS : TRIGGER_HOVER] = true;\n }\n\n if ($__default[\"default\"](context.getTipElement()).hasClass(CLASS_NAME_SHOW$3) || context._hoverState === HOVER_STATE_SHOW) {\n context._hoverState = HOVER_STATE_SHOW;\n return;\n }\n\n clearTimeout(context._timeout);\n context._hoverState = HOVER_STATE_SHOW;\n\n if (!context.config.delay || !context.config.delay.show) {\n context.show();\n return;\n }\n\n context._timeout = setTimeout(function () {\n if (context._hoverState === HOVER_STATE_SHOW) {\n context.show();\n }\n }, context.config.delay.show);\n };\n\n _proto._leave = function _leave(event, context) {\n var dataKey = this.constructor.DATA_KEY;\n context = context || $__default[\"default\"](event.currentTarget).data(dataKey);\n\n if (!context) {\n context = new this.constructor(event.currentTarget, this._getDelegateConfig());\n $__default[\"default\"](event.currentTarget).data(dataKey, context);\n }\n\n if (event) {\n context._activeTrigger[event.type === 'focusout' ? TRIGGER_FOCUS : TRIGGER_HOVER] = false;\n }\n\n if (context._isWithActiveTrigger()) {\n return;\n }\n\n clearTimeout(context._timeout);\n context._hoverState = HOVER_STATE_OUT;\n\n if (!context.config.delay || !context.config.delay.hide) {\n context.hide();\n return;\n }\n\n context._timeout = setTimeout(function () {\n if (context._hoverState === HOVER_STATE_OUT) {\n context.hide();\n }\n }, context.config.delay.hide);\n };\n\n _proto._isWithActiveTrigger = function _isWithActiveTrigger() {\n for (var trigger in this._activeTrigger) {\n if (this._activeTrigger[trigger]) {\n return true;\n }\n }\n\n return false;\n };\n\n _proto._getConfig = function _getConfig(config) {\n var dataAttributes = $__default[\"default\"](this.element).data();\n Object.keys(dataAttributes).forEach(function (dataAttr) {\n if (DISALLOWED_ATTRIBUTES.indexOf(dataAttr) !== -1) {\n delete dataAttributes[dataAttr];\n }\n });\n config = _extends({}, this.constructor.Default, dataAttributes, _typeof(config) === 'object' && config ? config : {});\n\n if (typeof config.delay === 'number') {\n config.delay = {\n show: config.delay,\n hide: config.delay\n };\n }\n\n if (typeof config.title === 'number') {\n config.title = config.title.toString();\n }\n\n if (typeof config.content === 'number') {\n config.content = config.content.toString();\n }\n\n Util.typeCheckConfig(NAME$4, config, this.constructor.DefaultType);\n\n if (config.sanitize) {\n config.template = sanitizeHtml(config.template, config.whiteList, config.sanitizeFn);\n }\n\n return config;\n };\n\n _proto._getDelegateConfig = function _getDelegateConfig() {\n var config = {};\n\n if (this.config) {\n for (var key in this.config) {\n if (this.constructor.Default[key] !== this.config[key]) {\n config[key] = this.config[key];\n }\n }\n }\n\n return config;\n };\n\n _proto._cleanTipClass = function _cleanTipClass() {\n var $tip = $__default[\"default\"](this.getTipElement());\n var tabClass = $tip.attr('class').match(BSCLS_PREFIX_REGEX$1);\n\n if (tabClass !== null && tabClass.length) {\n $tip.removeClass(tabClass.join(''));\n }\n };\n\n _proto._handlePopperPlacementChange = function _handlePopperPlacementChange(popperData) {\n this.tip = popperData.instance.popper;\n\n this._cleanTipClass();\n\n this.addAttachmentClass(this._getAttachment(popperData.placement));\n };\n\n _proto._fixTransition = function _fixTransition() {\n var tip = this.getTipElement();\n var initConfigAnimation = this.config.animation;\n\n if (tip.getAttribute('x-placement') !== null) {\n return;\n }\n\n $__default[\"default\"](tip).removeClass(CLASS_NAME_FADE$3);\n this.config.animation = false;\n this.hide();\n this.show();\n this.config.animation = initConfigAnimation;\n } // Static\n ;\n\n Tooltip._jQueryInterface = function _jQueryInterface(config) {\n return this.each(function () {\n var $element = $__default[\"default\"](this);\n var data = $element.data(DATA_KEY$4);\n\n var _config = _typeof(config) === 'object' && config;\n\n if (!data && /dispose|hide/.test(config)) {\n return;\n }\n\n if (!data) {\n data = new Tooltip(this, _config);\n $element.data(DATA_KEY$4, data);\n }\n\n if (typeof config === 'string') {\n if (typeof data[config] === 'undefined') {\n throw new TypeError(\"No method named \\\"\" + config + \"\\\"\");\n }\n\n data[config]();\n }\n });\n };\n\n _createClass(Tooltip, null, [{\n key: \"VERSION\",\n get: function get() {\n return VERSION$4;\n }\n }, {\n key: \"Default\",\n get: function get() {\n return Default$3;\n }\n }, {\n key: \"NAME\",\n get: function get() {\n return NAME$4;\n }\n }, {\n key: \"DATA_KEY\",\n get: function get() {\n return DATA_KEY$4;\n }\n }, {\n key: \"Event\",\n get: function get() {\n return Event$1;\n }\n }, {\n key: \"EVENT_KEY\",\n get: function get() {\n return EVENT_KEY$4;\n }\n }, {\n key: \"DefaultType\",\n get: function get() {\n return DefaultType$3;\n }\n }]);\n\n return Tooltip;\n }();\n /**\n * jQuery\n */\n\n\n $__default[\"default\"].fn[NAME$4] = Tooltip._jQueryInterface;\n $__default[\"default\"].fn[NAME$4].Constructor = Tooltip;\n\n $__default[\"default\"].fn[NAME$4].noConflict = function () {\n $__default[\"default\"].fn[NAME$4] = JQUERY_NO_CONFLICT$4;\n return Tooltip._jQueryInterface;\n };\n /**\n * Constants\n */\n\n\n var NAME$3 = 'popover';\n var VERSION$3 = '4.6.2';\n var DATA_KEY$3 = 'bs.popover';\n var EVENT_KEY$3 = \".\" + DATA_KEY$3;\n var JQUERY_NO_CONFLICT$3 = $__default[\"default\"].fn[NAME$3];\n var CLASS_PREFIX = 'bs-popover';\n var BSCLS_PREFIX_REGEX = new RegExp(\"(^|\\\\s)\" + CLASS_PREFIX + \"\\\\S+\", 'g');\n var CLASS_NAME_FADE$2 = 'fade';\n var CLASS_NAME_SHOW$2 = 'show';\n var SELECTOR_TITLE = '.popover-header';\n var SELECTOR_CONTENT = '.popover-body';\n\n var Default$2 = _extends({}, Tooltip.Default, {\n placement: 'right',\n trigger: 'click',\n content: '',\n template: '<div class=\"popover\" role=\"tooltip\">' + '<div class=\"arrow\"></div>' + '<h3 class=\"popover-header\"></h3>' + '<div class=\"popover-body\"></div></div>'\n });\n\n var DefaultType$2 = _extends({}, Tooltip.DefaultType, {\n content: '(string|element|function)'\n });\n\n var Event = {\n HIDE: \"hide\" + EVENT_KEY$3,\n HIDDEN: \"hidden\" + EVENT_KEY$3,\n SHOW: \"show\" + EVENT_KEY$3,\n SHOWN: \"shown\" + EVENT_KEY$3,\n INSERTED: \"inserted\" + EVENT_KEY$3,\n CLICK: \"click\" + EVENT_KEY$3,\n FOCUSIN: \"focusin\" + EVENT_KEY$3,\n FOCUSOUT: \"focusout\" + EVENT_KEY$3,\n MOUSEENTER: \"mouseenter\" + EVENT_KEY$3,\n MOUSELEAVE: \"mouseleave\" + EVENT_KEY$3\n };\n /**\n * Class definition\n */\n\n var Popover = /*#__PURE__*/function (_Tooltip) {\n _inheritsLoose(Popover, _Tooltip);\n\n function Popover() {\n return _Tooltip.apply(this, arguments) || this;\n }\n\n var _proto = Popover.prototype; // Overrides\n\n _proto.isWithContent = function isWithContent() {\n return this.getTitle() || this._getContent();\n };\n\n _proto.addAttachmentClass = function addAttachmentClass(attachment) {\n $__default[\"default\"](this.getTipElement()).addClass(CLASS_PREFIX + \"-\" + attachment);\n };\n\n _proto.getTipElement = function getTipElement() {\n this.tip = this.tip || $__default[\"default\"](this.config.template)[0];\n return this.tip;\n };\n\n _proto.setContent = function setContent() {\n var $tip = $__default[\"default\"](this.getTipElement()); // We use append for html objects to maintain js events\n\n this.setElementContent($tip.find(SELECTOR_TITLE), this.getTitle());\n\n var content = this._getContent();\n\n if (typeof content === 'function') {\n content = content.call(this.element);\n }\n\n this.setElementContent($tip.find(SELECTOR_CONTENT), content);\n $tip.removeClass(CLASS_NAME_FADE$2 + \" \" + CLASS_NAME_SHOW$2);\n } // Private\n ;\n\n _proto._getContent = function _getContent() {\n return this.element.getAttribute('data-content') || this.config.content;\n };\n\n _proto._cleanTipClass = function _cleanTipClass() {\n var $tip = $__default[\"default\"](this.getTipElement());\n var tabClass = $tip.attr('class').match(BSCLS_PREFIX_REGEX);\n\n if (tabClass !== null && tabClass.length > 0) {\n $tip.removeClass(tabClass.join(''));\n }\n } // Static\n ;\n\n Popover._jQueryInterface = function _jQueryInterface(config) {\n return this.each(function () {\n var data = $__default[\"default\"](this).data(DATA_KEY$3);\n\n var _config = _typeof(config) === 'object' ? config : null;\n\n if (!data && /dispose|hide/.test(config)) {\n return;\n }\n\n if (!data) {\n data = new Popover(this, _config);\n $__default[\"default\"](this).data(DATA_KEY$3, data);\n }\n\n if (typeof config === 'string') {\n if (typeof data[config] === 'undefined') {\n throw new TypeError(\"No method named \\\"\" + config + \"\\\"\");\n }\n\n data[config]();\n }\n });\n };\n\n _createClass(Popover, null, [{\n key: \"VERSION\",\n get: // Getters\n function get() {\n return VERSION$3;\n }\n }, {\n key: \"Default\",\n get: function get() {\n return Default$2;\n }\n }, {\n key: \"NAME\",\n get: function get() {\n return NAME$3;\n }\n }, {\n key: \"DATA_KEY\",\n get: function get() {\n return DATA_KEY$3;\n }\n }, {\n key: \"Event\",\n get: function get() {\n return Event;\n }\n }, {\n key: \"EVENT_KEY\",\n get: function get() {\n return EVENT_KEY$3;\n }\n }, {\n key: \"DefaultType\",\n get: function get() {\n return DefaultType$2;\n }\n }]);\n\n return Popover;\n }(Tooltip);\n /**\n * jQuery\n */\n\n\n $__default[\"default\"].fn[NAME$3] = Popover._jQueryInterface;\n $__default[\"default\"].fn[NAME$3].Constructor = Popover;\n\n $__default[\"default\"].fn[NAME$3].noConflict = function () {\n $__default[\"default\"].fn[NAME$3] = JQUERY_NO_CONFLICT$3;\n return Popover._jQueryInterface;\n };\n /**\n * Constants\n */\n\n\n var NAME$2 = 'scrollspy';\n var VERSION$2 = '4.6.2';\n var DATA_KEY$2 = 'bs.scrollspy';\n var EVENT_KEY$2 = \".\" + DATA_KEY$2;\n var DATA_API_KEY$1 = '.data-api';\n var JQUERY_NO_CONFLICT$2 = $__default[\"default\"].fn[NAME$2];\n var CLASS_NAME_DROPDOWN_ITEM = 'dropdown-item';\n var CLASS_NAME_ACTIVE$1 = 'active';\n var EVENT_ACTIVATE = \"activate\" + EVENT_KEY$2;\n var EVENT_SCROLL = \"scroll\" + EVENT_KEY$2;\n var EVENT_LOAD_DATA_API = \"load\" + EVENT_KEY$2 + DATA_API_KEY$1;\n var METHOD_OFFSET = 'offset';\n var METHOD_POSITION = 'position';\n var SELECTOR_DATA_SPY = '[data-spy=\"scroll\"]';\n var SELECTOR_NAV_LIST_GROUP$1 = '.nav, .list-group';\n var SELECTOR_NAV_LINKS = '.nav-link';\n var SELECTOR_NAV_ITEMS = '.nav-item';\n var SELECTOR_LIST_ITEMS = '.list-group-item';\n var SELECTOR_DROPDOWN$1 = '.dropdown';\n var SELECTOR_DROPDOWN_ITEMS = '.dropdown-item';\n var SELECTOR_DROPDOWN_TOGGLE$1 = '.dropdown-toggle';\n var Default$1 = {\n offset: 10,\n method: 'auto',\n target: ''\n };\n var DefaultType$1 = {\n offset: 'number',\n method: 'string',\n target: '(string|element)'\n };\n /**\n * Class definition\n */\n\n var ScrollSpy = /*#__PURE__*/function () {\n function ScrollSpy(element, config) {\n var _this = this;\n\n this._element = element;\n this._scrollElement = element.tagName === 'BODY' ? window : element;\n this._config = this._getConfig(config);\n this._selector = this._config.target + \" \" + SELECTOR_NAV_LINKS + \",\" + (this._config.target + \" \" + SELECTOR_LIST_ITEMS + \",\") + (this._config.target + \" \" + SELECTOR_DROPDOWN_ITEMS);\n this._offsets = [];\n this._targets = [];\n this._activeTarget = null;\n this._scrollHeight = 0;\n $__default[\"default\"](this._scrollElement).on(EVENT_SCROLL, function (event) {\n return _this._process(event);\n });\n this.refresh();\n\n this._process();\n } // Getters\n\n\n var _proto = ScrollSpy.prototype; // Public\n\n _proto.refresh = function refresh() {\n var _this2 = this;\n\n var autoMethod = this._scrollElement === this._scrollElement.window ? METHOD_OFFSET : METHOD_POSITION;\n var offsetMethod = this._config.method === 'auto' ? autoMethod : this._config.method;\n var offsetBase = offsetMethod === METHOD_POSITION ? this._getScrollTop() : 0;\n this._offsets = [];\n this._targets = [];\n this._scrollHeight = this._getScrollHeight();\n var targets = [].slice.call(document.querySelectorAll(this._selector));\n targets.map(function (element) {\n var target;\n var targetSelector = Util.getSelectorFromElement(element);\n\n if (targetSelector) {\n target = document.querySelector(targetSelector);\n }\n\n if (target) {\n var targetBCR = target.getBoundingClientRect();\n\n if (targetBCR.width || targetBCR.height) {\n // TODO (fat): remove sketch reliance on jQuery position/offset\n return [$__default[\"default\"](target)[offsetMethod]().top + offsetBase, targetSelector];\n }\n }\n\n return null;\n }).filter(Boolean).sort(function (a, b) {\n return a[0] - b[0];\n }).forEach(function (item) {\n _this2._offsets.push(item[0]);\n\n _this2._targets.push(item[1]);\n });\n };\n\n _proto.dispose = function dispose() {\n $__default[\"default\"].removeData(this._element, DATA_KEY$2);\n $__default[\"default\"](this._scrollElement).off(EVENT_KEY$2);\n this._element = null;\n this._scrollElement = null;\n this._config = null;\n this._selector = null;\n this._offsets = null;\n this._targets = null;\n this._activeTarget = null;\n this._scrollHeight = null;\n } // Private\n ;\n\n _proto._getConfig = function _getConfig(config) {\n config = _extends({}, Default$1, _typeof(config) === 'object' && config ? config : {});\n\n if (typeof config.target !== 'string' && Util.isElement(config.target)) {\n var id = $__default[\"default\"](config.target).attr('id');\n\n if (!id) {\n id = Util.getUID(NAME$2);\n $__default[\"default\"](config.target).attr('id', id);\n }\n\n config.target = \"#\" + id;\n }\n\n Util.typeCheckConfig(NAME$2, config, DefaultType$1);\n return config;\n };\n\n _proto._getScrollTop = function _getScrollTop() {\n return this._scrollElement === window ? this._scrollElement.pageYOffset : this._scrollElement.scrollTop;\n };\n\n _proto._getScrollHeight = function _getScrollHeight() {\n return this._scrollElement.scrollHeight || Math.max(document.body.scrollHeight, document.documentElement.scrollHeight);\n };\n\n _proto._getOffsetHeight = function _getOffsetHeight() {\n return this._scrollElement === window ? window.innerHeight : this._scrollElement.getBoundingClientRect().height;\n };\n\n _proto._process = function _process() {\n var scrollTop = this._getScrollTop() + this._config.offset;\n\n var scrollHeight = this._getScrollHeight();\n\n var maxScroll = this._config.offset + scrollHeight - this._getOffsetHeight();\n\n if (this._scrollHeight !== scrollHeight) {\n this.refresh();\n }\n\n if (scrollTop >= maxScroll) {\n var target = this._targets[this._targets.length - 1];\n\n if (this._activeTarget !== target) {\n this._activate(target);\n }\n\n return;\n }\n\n if (this._activeTarget && scrollTop < this._offsets[0] && this._offsets[0] > 0) {\n this._activeTarget = null;\n\n this._clear();\n\n return;\n }\n\n for (var i = this._offsets.length; i--;) {\n var isActiveTarget = this._activeTarget !== this._targets[i] && scrollTop >= this._offsets[i] && (typeof this._offsets[i + 1] === 'undefined' || scrollTop < this._offsets[i + 1]);\n\n if (isActiveTarget) {\n this._activate(this._targets[i]);\n }\n }\n };\n\n _proto._activate = function _activate(target) {\n this._activeTarget = target;\n\n this._clear();\n\n var queries = this._selector.split(',').map(function (selector) {\n return selector + \"[data-target=\\\"\" + target + \"\\\"],\" + selector + \"[href=\\\"\" + target + \"\\\"]\";\n });\n\n var $link = $__default[\"default\"]([].slice.call(document.querySelectorAll(queries.join(','))));\n\n if ($link.hasClass(CLASS_NAME_DROPDOWN_ITEM)) {\n $link.closest(SELECTOR_DROPDOWN$1).find(SELECTOR_DROPDOWN_TOGGLE$1).addClass(CLASS_NAME_ACTIVE$1);\n $link.addClass(CLASS_NAME_ACTIVE$1);\n } else {\n // Set triggered link as active\n $link.addClass(CLASS_NAME_ACTIVE$1); // Set triggered links parents as active\n // With both <ul> and <nav> markup a parent is the previous sibling of any nav ancestor\n\n $link.parents(SELECTOR_NAV_LIST_GROUP$1).prev(SELECTOR_NAV_LINKS + \", \" + SELECTOR_LIST_ITEMS).addClass(CLASS_NAME_ACTIVE$1); // Handle special case when .nav-link is inside .nav-item\n\n $link.parents(SELECTOR_NAV_LIST_GROUP$1).prev(SELECTOR_NAV_ITEMS).children(SELECTOR_NAV_LINKS).addClass(CLASS_NAME_ACTIVE$1);\n }\n\n $__default[\"default\"](this._scrollElement).trigger(EVENT_ACTIVATE, {\n relatedTarget: target\n });\n };\n\n _proto._clear = function _clear() {\n [].slice.call(document.querySelectorAll(this._selector)).filter(function (node) {\n return node.classList.contains(CLASS_NAME_ACTIVE$1);\n }).forEach(function (node) {\n return node.classList.remove(CLASS_NAME_ACTIVE$1);\n });\n } // Static\n ;\n\n ScrollSpy._jQueryInterface = function _jQueryInterface(config) {\n return this.each(function () {\n var data = $__default[\"default\"](this).data(DATA_KEY$2);\n\n var _config = _typeof(config) === 'object' && config;\n\n if (!data) {\n data = new ScrollSpy(this, _config);\n $__default[\"default\"](this).data(DATA_KEY$2, data);\n }\n\n if (typeof config === 'string') {\n if (typeof data[config] === 'undefined') {\n throw new TypeError(\"No method named \\\"\" + config + \"\\\"\");\n }\n\n data[config]();\n }\n });\n };\n\n _createClass(ScrollSpy, null, [{\n key: \"VERSION\",\n get: function get() {\n return VERSION$2;\n }\n }, {\n key: \"Default\",\n get: function get() {\n return Default$1;\n }\n }]);\n\n return ScrollSpy;\n }();\n /**\n * Data API implementation\n */\n\n\n $__default[\"default\"](window).on(EVENT_LOAD_DATA_API, function () {\n var scrollSpys = [].slice.call(document.querySelectorAll(SELECTOR_DATA_SPY));\n var scrollSpysLength = scrollSpys.length;\n\n for (var i = scrollSpysLength; i--;) {\n var $spy = $__default[\"default\"](scrollSpys[i]);\n\n ScrollSpy._jQueryInterface.call($spy, $spy.data());\n }\n });\n /**\n * jQuery\n */\n\n $__default[\"default\"].fn[NAME$2] = ScrollSpy._jQueryInterface;\n $__default[\"default\"].fn[NAME$2].Constructor = ScrollSpy;\n\n $__default[\"default\"].fn[NAME$2].noConflict = function () {\n $__default[\"default\"].fn[NAME$2] = JQUERY_NO_CONFLICT$2;\n return ScrollSpy._jQueryInterface;\n };\n /**\n * Constants\n */\n\n\n var NAME$1 = 'tab';\n var VERSION$1 = '4.6.2';\n var DATA_KEY$1 = 'bs.tab';\n var EVENT_KEY$1 = \".\" + DATA_KEY$1;\n var DATA_API_KEY = '.data-api';\n var JQUERY_NO_CONFLICT$1 = $__default[\"default\"].fn[NAME$1];\n var CLASS_NAME_DROPDOWN_MENU = 'dropdown-menu';\n var CLASS_NAME_ACTIVE = 'active';\n var CLASS_NAME_DISABLED = 'disabled';\n var CLASS_NAME_FADE$1 = 'fade';\n var CLASS_NAME_SHOW$1 = 'show';\n var EVENT_HIDE$1 = \"hide\" + EVENT_KEY$1;\n var EVENT_HIDDEN$1 = \"hidden\" + EVENT_KEY$1;\n var EVENT_SHOW$1 = \"show\" + EVENT_KEY$1;\n var EVENT_SHOWN$1 = \"shown\" + EVENT_KEY$1;\n var EVENT_CLICK_DATA_API = \"click\" + EVENT_KEY$1 + DATA_API_KEY;\n var SELECTOR_DROPDOWN = '.dropdown';\n var SELECTOR_NAV_LIST_GROUP = '.nav, .list-group';\n var SELECTOR_ACTIVE = '.active';\n var SELECTOR_ACTIVE_UL = '> li > .active';\n var SELECTOR_DATA_TOGGLE = '[data-toggle=\"tab\"], [data-toggle=\"pill\"], [data-toggle=\"list\"]';\n var SELECTOR_DROPDOWN_TOGGLE = '.dropdown-toggle';\n var SELECTOR_DROPDOWN_ACTIVE_CHILD = '> .dropdown-menu .active';\n /**\n * Class definition\n */\n\n var Tab = /*#__PURE__*/function () {\n function Tab(element) {\n this._element = element;\n } // Getters\n\n\n var _proto = Tab.prototype; // Public\n\n _proto.show = function show() {\n var _this = this;\n\n if (this._element.parentNode && this._element.parentNode.nodeType === Node.ELEMENT_NODE && $__default[\"default\"](this._element).hasClass(CLASS_NAME_ACTIVE) || $__default[\"default\"](this._element).hasClass(CLASS_NAME_DISABLED) || this._element.hasAttribute('disabled')) {\n return;\n }\n\n var target;\n var previous;\n var listElement = $__default[\"default\"](this._element).closest(SELECTOR_NAV_LIST_GROUP)[0];\n var selector = Util.getSelectorFromElement(this._element);\n\n if (listElement) {\n var itemSelector = listElement.nodeName === 'UL' || listElement.nodeName === 'OL' ? SELECTOR_ACTIVE_UL : SELECTOR_ACTIVE;\n previous = $__default[\"default\"].makeArray($__default[\"default\"](listElement).find(itemSelector));\n previous = previous[previous.length - 1];\n }\n\n var hideEvent = $__default[\"default\"].Event(EVENT_HIDE$1, {\n relatedTarget: this._element\n });\n var showEvent = $__default[\"default\"].Event(EVENT_SHOW$1, {\n relatedTarget: previous\n });\n\n if (previous) {\n $__default[\"default\"](previous).trigger(hideEvent);\n }\n\n $__default[\"default\"](this._element).trigger(showEvent);\n\n if (showEvent.isDefaultPrevented() || hideEvent.isDefaultPrevented()) {\n return;\n }\n\n if (selector) {\n target = document.querySelector(selector);\n }\n\n this._activate(this._element, listElement);\n\n var complete = function complete() {\n var hiddenEvent = $__default[\"default\"].Event(EVENT_HIDDEN$1, {\n relatedTarget: _this._element\n });\n var shownEvent = $__default[\"default\"].Event(EVENT_SHOWN$1, {\n relatedTarget: previous\n });\n $__default[\"default\"](previous).trigger(hiddenEvent);\n $__default[\"default\"](_this._element).trigger(shownEvent);\n };\n\n if (target) {\n this._activate(target, target.parentNode, complete);\n } else {\n complete();\n }\n };\n\n _proto.dispose = function dispose() {\n $__default[\"default\"].removeData(this._element, DATA_KEY$1);\n this._element = null;\n } // Private\n ;\n\n _proto._activate = function _activate(element, container, callback) {\n var _this2 = this;\n\n var activeElements = container && (container.nodeName === 'UL' || container.nodeName === 'OL') ? $__default[\"default\"](container).find(SELECTOR_ACTIVE_UL) : $__default[\"default\"](container).children(SELECTOR_ACTIVE);\n var active = activeElements[0];\n var isTransitioning = callback && active && $__default[\"default\"](active).hasClass(CLASS_NAME_FADE$1);\n\n var complete = function complete() {\n return _this2._transitionComplete(element, active, callback);\n };\n\n if (active && isTransitioning) {\n var transitionDuration = Util.getTransitionDurationFromElement(active);\n $__default[\"default\"](active).removeClass(CLASS_NAME_SHOW$1).one(Util.TRANSITION_END, complete).emulateTransitionEnd(transitionDuration);\n } else {\n complete();\n }\n };\n\n _proto._transitionComplete = function _transitionComplete(element, active, callback) {\n if (active) {\n $__default[\"default\"](active).removeClass(CLASS_NAME_ACTIVE);\n var dropdownChild = $__default[\"default\"](active.parentNode).find(SELECTOR_DROPDOWN_ACTIVE_CHILD)[0];\n\n if (dropdownChild) {\n $__default[\"default\"](dropdownChild).removeClass(CLASS_NAME_ACTIVE);\n }\n\n if (active.getAttribute('role') === 'tab') {\n active.setAttribute('aria-selected', false);\n }\n }\n\n $__default[\"default\"](element).addClass(CLASS_NAME_ACTIVE);\n\n if (element.getAttribute('role') === 'tab') {\n element.setAttribute('aria-selected', true);\n }\n\n Util.reflow(element);\n\n if (element.classList.contains(CLASS_NAME_FADE$1)) {\n element.classList.add(CLASS_NAME_SHOW$1);\n }\n\n var parent = element.parentNode;\n\n if (parent && parent.nodeName === 'LI') {\n parent = parent.parentNode;\n }\n\n if (parent && $__default[\"default\"](parent).hasClass(CLASS_NAME_DROPDOWN_MENU)) {\n var dropdownElement = $__default[\"default\"](element).closest(SELECTOR_DROPDOWN)[0];\n\n if (dropdownElement) {\n var dropdownToggleList = [].slice.call(dropdownElement.querySelectorAll(SELECTOR_DROPDOWN_TOGGLE));\n $__default[\"default\"](dropdownToggleList).addClass(CLASS_NAME_ACTIVE);\n }\n\n element.setAttribute('aria-expanded', true);\n }\n\n if (callback) {\n callback();\n }\n } // Static\n ;\n\n Tab._jQueryInterface = function _jQueryInterface(config) {\n return this.each(function () {\n var $this = $__default[\"default\"](this);\n var data = $this.data(DATA_KEY$1);\n\n if (!data) {\n data = new Tab(this);\n $this.data(DATA_KEY$1, data);\n }\n\n if (typeof config === 'string') {\n if (typeof data[config] === 'undefined') {\n throw new TypeError(\"No method named \\\"\" + config + \"\\\"\");\n }\n\n data[config]();\n }\n });\n };\n\n _createClass(Tab, null, [{\n key: \"VERSION\",\n get: function get() {\n return VERSION$1;\n }\n }]);\n\n return Tab;\n }();\n /**\n * Data API implementation\n */\n\n\n $__default[\"default\"](document).on(EVENT_CLICK_DATA_API, SELECTOR_DATA_TOGGLE, function (event) {\n event.preventDefault();\n\n Tab._jQueryInterface.call($__default[\"default\"](this), 'show');\n });\n /**\n * jQuery\n */\n\n $__default[\"default\"].fn[NAME$1] = Tab._jQueryInterface;\n $__default[\"default\"].fn[NAME$1].Constructor = Tab;\n\n $__default[\"default\"].fn[NAME$1].noConflict = function () {\n $__default[\"default\"].fn[NAME$1] = JQUERY_NO_CONFLICT$1;\n return Tab._jQueryInterface;\n };\n /**\n * Constants\n */\n\n\n var NAME = 'toast';\n var VERSION = '4.6.2';\n var DATA_KEY = 'bs.toast';\n var EVENT_KEY = \".\" + DATA_KEY;\n var JQUERY_NO_CONFLICT = $__default[\"default\"].fn[NAME];\n var CLASS_NAME_FADE = 'fade';\n var CLASS_NAME_HIDE = 'hide';\n var CLASS_NAME_SHOW = 'show';\n var CLASS_NAME_SHOWING = 'showing';\n var EVENT_CLICK_DISMISS = \"click.dismiss\" + EVENT_KEY;\n var EVENT_HIDE = \"hide\" + EVENT_KEY;\n var EVENT_HIDDEN = \"hidden\" + EVENT_KEY;\n var EVENT_SHOW = \"show\" + EVENT_KEY;\n var EVENT_SHOWN = \"shown\" + EVENT_KEY;\n var SELECTOR_DATA_DISMISS = '[data-dismiss=\"toast\"]';\n var Default = {\n animation: true,\n autohide: true,\n delay: 500\n };\n var DefaultType = {\n animation: 'boolean',\n autohide: 'boolean',\n delay: 'number'\n };\n /**\n * Class definition\n */\n\n var Toast = /*#__PURE__*/function () {\n function Toast(element, config) {\n this._element = element;\n this._config = this._getConfig(config);\n this._timeout = null;\n\n this._setListeners();\n } // Getters\n\n\n var _proto = Toast.prototype; // Public\n\n _proto.show = function show() {\n var _this = this;\n\n var showEvent = $__default[\"default\"].Event(EVENT_SHOW);\n $__default[\"default\"](this._element).trigger(showEvent);\n\n if (showEvent.isDefaultPrevented()) {\n return;\n }\n\n this._clearTimeout();\n\n if (this._config.animation) {\n this._element.classList.add(CLASS_NAME_FADE);\n }\n\n var complete = function complete() {\n _this._element.classList.remove(CLASS_NAME_SHOWING);\n\n _this._element.classList.add(CLASS_NAME_SHOW);\n\n $__default[\"default\"](_this._element).trigger(EVENT_SHOWN);\n\n if (_this._config.autohide) {\n _this._timeout = setTimeout(function () {\n _this.hide();\n }, _this._config.delay);\n }\n };\n\n this._element.classList.remove(CLASS_NAME_HIDE);\n\n Util.reflow(this._element);\n\n this._element.classList.add(CLASS_NAME_SHOWING);\n\n if (this._config.animation) {\n var transitionDuration = Util.getTransitionDurationFromElement(this._element);\n $__default[\"default\"](this._element).one(Util.TRANSITION_END, complete).emulateTransitionEnd(transitionDuration);\n } else {\n complete();\n }\n };\n\n _proto.hide = function hide() {\n if (!this._element.classList.contains(CLASS_NAME_SHOW)) {\n return;\n }\n\n var hideEvent = $__default[\"default\"].Event(EVENT_HIDE);\n $__default[\"default\"](this._element).trigger(hideEvent);\n\n if (hideEvent.isDefaultPrevented()) {\n return;\n }\n\n this._close();\n };\n\n _proto.dispose = function dispose() {\n this._clearTimeout();\n\n if (this._element.classList.contains(CLASS_NAME_SHOW)) {\n this._element.classList.remove(CLASS_NAME_SHOW);\n }\n\n $__default[\"default\"](this._element).off(EVENT_CLICK_DISMISS);\n $__default[\"default\"].removeData(this._element, DATA_KEY);\n this._element = null;\n this._config = null;\n } // Private\n ;\n\n _proto._getConfig = function _getConfig(config) {\n config = _extends({}, Default, $__default[\"default\"](this._element).data(), _typeof(config) === 'object' && config ? config : {});\n Util.typeCheckConfig(NAME, config, this.constructor.DefaultType);\n return config;\n };\n\n _proto._setListeners = function _setListeners() {\n var _this2 = this;\n\n $__default[\"default\"](this._element).on(EVENT_CLICK_DISMISS, SELECTOR_DATA_DISMISS, function () {\n return _this2.hide();\n });\n };\n\n _proto._close = function _close() {\n var _this3 = this;\n\n var complete = function complete() {\n _this3._element.classList.add(CLASS_NAME_HIDE);\n\n $__default[\"default\"](_this3._element).trigger(EVENT_HIDDEN);\n };\n\n this._element.classList.remove(CLASS_NAME_SHOW);\n\n if (this._config.animation) {\n var transitionDuration = Util.getTransitionDurationFromElement(this._element);\n $__default[\"default\"](this._element).one(Util.TRANSITION_END, complete).emulateTransitionEnd(transitionDuration);\n } else {\n complete();\n }\n };\n\n _proto._clearTimeout = function _clearTimeout() {\n clearTimeout(this._timeout);\n this._timeout = null;\n } // Static\n ;\n\n Toast._jQueryInterface = function _jQueryInterface(config) {\n return this.each(function () {\n var $element = $__default[\"default\"](this);\n var data = $element.data(DATA_KEY);\n\n var _config = _typeof(config) === 'object' && config;\n\n if (!data) {\n data = new Toast(this, _config);\n $element.data(DATA_KEY, data);\n }\n\n if (typeof config === 'string') {\n if (typeof data[config] === 'undefined') {\n throw new TypeError(\"No method named \\\"\" + config + \"\\\"\");\n }\n\n data[config](this);\n }\n });\n };\n\n _createClass(Toast, null, [{\n key: \"VERSION\",\n get: function get() {\n return VERSION;\n }\n }, {\n key: \"DefaultType\",\n get: function get() {\n return DefaultType;\n }\n }, {\n key: \"Default\",\n get: function get() {\n return Default;\n }\n }]);\n\n return Toast;\n }();\n /**\n * jQuery\n */\n\n\n $__default[\"default\"].fn[NAME] = Toast._jQueryInterface;\n $__default[\"default\"].fn[NAME].Constructor = Toast;\n\n $__default[\"default\"].fn[NAME].noConflict = function () {\n $__default[\"default\"].fn[NAME] = JQUERY_NO_CONFLICT;\n return Toast._jQueryInterface;\n };\n\n exports.Alert = Alert;\n exports.Button = Button;\n exports.Carousel = Carousel;\n exports.Collapse = Collapse;\n exports.Dropdown = Dropdown;\n exports.Modal = Modal;\n exports.Popover = Popover;\n exports.Scrollspy = ScrollSpy;\n exports.Tab = Tab;\n exports.Toast = Toast;\n exports.Tooltip = Tooltip;\n exports.Util = Util;\n Object.defineProperty(exports, '__esModule', {\n value: true\n });\n});","import { Controller } from \"stimulus\"\n\nexport default class extends Controller {\n closeWindow() {\n window.close()\n }\n}\n","import { Controller } from \"stimulus\"\nimport \"element-closest\"\n\nexport default class extends Controller {\n static targets = [\"form\"]\n\n connect() {\n this._setupPages()\n }\n\n submit(ev) {\n const valid = this._validateBirthDate(ev.target)\n if(!valid) {\n ev.preventDefault()\n }\n\n return valid\n }\n\n nextPage(ev) {\n ev.preventDefault()\n\n const el = ev.target\n const pageEl = el.closest(\".form-page\")\n\n if (!this._validatePage(pageEl)) {\n return\n }\n\n const targetPageEl = document.querySelector(\n el.getAttribute(\"data-target-page\")\n )\n\n // Move to the next page\n pageEl.classList.add(\"d-none\")\n targetPageEl.classList.remove(\"d-none\")\n }\n\n _validatePage(pageEl) {\n var valid = true\n const inputs = Array.from(pageEl.querySelectorAll(\"input,select\"))\n\n // Reverse to validate in top-down order (using Array#every to break out on the first error)\n inputs.reverse().forEach(el => {\n if (!el.reportValidity()) {\n valid = false\n }\n })\n\n if(!this._validateBirthDate(pageEl)) {\n valid = false\n }\n\n if(!this._validateSurveyAnswers(pageEl)) {\n valid = false\n }\n\n return valid\n }\n\n\n _validateBirthDate(pageEl) {\n // Validate the date of birth\n const birthDateEl = pageEl.querySelector(\"*[data-max-birth-date]\")\n\n if (birthDateEl) {\n const maxDate = new Date(birthDateEl.getAttribute(\"data-max-birth-date\"))\n\n // Build up the entered date\n const birthYear = pageEl.querySelector(\"#entrant_birth_date_1i\").value\n const birthMonth = pageEl.querySelector(\"#entrant_birth_date_2i\").value - 1\n const birthDay = pageEl.querySelector(\"#entrant_birth_date_3i\").value\n\n const birthDate = new Date(birthYear, birthMonth, birthDay)\n\n if (birthDate > maxDate) {\n if (!pageEl.querySelector(\"#entrant_birth_date-error\")) {\n const errorNode = document.createElement(\"div\")\n errorNode.id = \"entrant_birth_date-error\"\n errorNode.classList.add(\"ns-invalid-age\")\n errorNode.textContent = birthDateEl.getAttribute(\"data-age-invalid-msg\")\n\n birthDateEl.appendChild(errorNode)\n }\n\n return false\n }\n else {\n const errorNode = pageEl.querySelector(\"#entrant_birth_date-error\")\n if(errorNode) {\n errorNode.remove()\n }\n }\n }\n\n return true\n }\n\n _validateSurveyAnswers(pageEl) {\n var numberQuestions = pageEl.querySelectorAll(\".ns-fan-portal-question\").length\n for(i = 0; i < numberQuestions; i++) {\n var question = pageEl.querySelector(`.entrant_answer_${i}-input`)\n if(question.required && b.value.length === 0) {\n const errorNode = document.createElement(\"div\")\n errorNode.id = \"survey_answer-error\"\n errorNode.classList.add(\"ns-invalid\")\n\n question.appendChild(errorNode)\n }\n }\n }\n\n _setupPages() {\n // ---------------------------------------------------------\n // Does something have an error tag? If so, jump to its page\n const errorEls = Array.from(document.querySelectorAll(\"input.is-invalid,select.is-invalid\")).reverse()\n\n if (errorEls.length > 0) {\n const pageEls = document.querySelectorAll(\".form-page\")\n\n const errorEl = errorEls[0]\n const errorPageEl = errorEl.closest(\".form-page\")\n\n pageEls.forEach(el => {\n if (el == errorPageEl) {\n el.classList.remove(\"d-none\")\n } else {\n el.classList.add(\"d-none\")\n }\n })\n }\n else {\n // Hide all but the first form page\n const pageEls = document.querySelectorAll(\".form-page:not(.form-page-first)\")\n pageEls.forEach(el => el.classList.add(\"d-none\"))\n }\n }\n}\n","import \"bootstrap\"\n\nimport Rails from \"rails-ujs\"\nRails.start()\n\nimport { Application } from \"stimulus\"\nimport { definitionsFromContext } from \"stimulus/webpack-helpers\"\n\nconst application = Application.start()\nconst context = require.context(\"controllers/public\", true, /\\.js$/)\napplication.load(definitionsFromContext(context))\n\nimport \"../stylesheets/public\"\n","var map = {\n\t\"./entrant_form_controller.js\": 18,\n\t\"./page_controller.js\": 17\n};\n\n\nfunction webpackContext(req) {\n\tvar id = webpackContextResolve(req);\n\treturn __webpack_require__(id);\n}\nfunction webpackContextResolve(req) {\n\tif(!__webpack_require__.o(map, req)) {\n\t\tvar e = new Error(\"Cannot find module '\" + req + \"'\");\n\t\te.code = 'MODULE_NOT_FOUND';\n\t\tthrow e;\n\t}\n\treturn map[req];\n}\nwebpackContext.keys = function webpackContextKeys() {\n\treturn Object.keys(map);\n};\nwebpackContext.resolve = webpackContextResolve;\nmodule.exports = webpackContext;\nwebpackContext.id = 211;","function _typeof(obj) { \"@babel/helpers - typeof\"; return _typeof = \"function\" == typeof Symbol && \"symbol\" == typeof Symbol.iterator ? function (obj) { return typeof obj; } : function (obj) { return obj && \"function\" == typeof Symbol && obj.constructor === Symbol && obj !== Symbol.prototype ? \"symbol\" : typeof obj; }, _typeof(obj); }\n\n/*!\n * jQuery JavaScript Library v3.6.1\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: 2022-08-26T17:52Z\n */\n(function (global, factory) {\n \"use strict\";\n\n if ((typeof module === \"undefined\" ? \"undefined\" : _typeof(module)) === \"object\" && _typeof(module.exports) === \"object\") {\n // For CommonJS and CommonJS-like environments where a proper `window`\n // is present, execute the factory and get jQuery.\n // For environments that do not have a `window` with a `document`\n // (such as Node.js), expose a factory as module.exports.\n // This accentuates the need for the creation of a real `window`.\n // e.g. var jQuery = require(\"jquery\")(window);\n // See ticket trac-14549 for more info.\n module.exports = global.document ? factory(global, true) : function (w) {\n if (!w.document) {\n throw new Error(\"jQuery requires a window with a document\");\n }\n\n return factory(w);\n };\n } else {\n factory(global);\n } // Pass this if window is not defined yet\n\n})(typeof window !== \"undefined\" ? window : this, function (window, noGlobal) {\n // Edge <= 12 - 13+, Firefox <=18 - 45+, IE 10 - 11, Safari 5.1 - 9+, iOS 6 - 9.1\n // throw exceptions when non-strict code (e.g., ASP.NET 4.5) accesses strict mode\n // arguments.callee.caller (trac-13335). But as of jQuery 3.0 (2016), strict mode should be common\n // enough that all such attempts are guarded in a try block.\n \"use strict\";\n\n var arr = [];\n var getProto = Object.getPrototypeOf;\n var _slice = arr.slice;\n var flat = arr.flat ? function (array) {\n return arr.flat.call(array);\n } : function (array) {\n return arr.concat.apply([], array);\n };\n var push = arr.push;\n var indexOf = arr.indexOf;\n var class2type = {};\n var toString = class2type.toString;\n var hasOwn = class2type.hasOwnProperty;\n var fnToString = hasOwn.toString;\n var ObjectFunctionString = fnToString.call(Object);\n var support = {};\n\n var isFunction = function isFunction(obj) {\n // Support: Chrome <=57, Firefox <=52\n // In some browsers, typeof returns \"function\" for HTML <object> elements\n // (i.e., `typeof document.createElement( \"object\" ) === \"function\"`).\n // We don't want to classify *any* DOM node as a function.\n // Support: QtWeb <=3.8.5, WebKit <=534.34, wkhtmltopdf tool <=0.12.5\n // Plus for old WebKit, typeof returns \"function\" for HTML collections\n // (e.g., `typeof document.getElementsByTagName(\"div\") === \"function\"`). (gh-4756)\n return typeof obj === \"function\" && typeof obj.nodeType !== \"number\" && typeof obj.item !== \"function\";\n };\n\n var isWindow = function isWindow(obj) {\n return obj != null && obj === obj.window;\n };\n\n var document = window.document;\n var preservedScriptAttributes = {\n type: true,\n src: true,\n nonce: true,\n noModule: true\n };\n\n function DOMEval(code, node, doc) {\n doc = doc || document;\n var i,\n val,\n script = doc.createElement(\"script\");\n script.text = code;\n\n if (node) {\n for (i in preservedScriptAttributes) {\n // Support: Firefox 64+, Edge 18+\n // Some browsers don't support the \"nonce\" property on scripts.\n // On the other hand, just using `getAttribute` is not enough as\n // the `nonce` attribute is reset to an empty string whenever it\n // becomes browsing-context connected.\n // See https://github.com/whatwg/html/issues/2369\n // See https://html.spec.whatwg.org/#nonce-attributes\n // The `node.getAttribute` check was added for the sake of\n // `jQuery.globalEval` so that it can fake a nonce-containing node\n // via an object.\n val = node[i] || node.getAttribute && node.getAttribute(i);\n\n if (val) {\n script.setAttribute(i, val);\n }\n }\n }\n\n doc.head.appendChild(script).parentNode.removeChild(script);\n }\n\n function toType(obj) {\n if (obj == null) {\n return obj + \"\";\n } // Support: Android <=2.3 only (functionish RegExp)\n\n\n return _typeof(obj) === \"object\" || typeof obj === \"function\" ? class2type[toString.call(obj)] || \"object\" : _typeof(obj);\n }\n /* global Symbol */\n // Defining this global in .eslintrc.json would create a danger of using the global\n // unguarded in another place, it seems safer to define global only for this module\n\n\n var version = \"3.6.1\",\n // Define a local copy of jQuery\n jQuery = function jQuery(selector, context) {\n // The jQuery object is actually just the init constructor 'enhanced'\n // Need init if jQuery is called (just allow error to be thrown if not included)\n return new jQuery.fn.init(selector, context);\n };\n\n jQuery.fn = jQuery.prototype = {\n // The current version of jQuery being used\n jquery: version,\n constructor: jQuery,\n // The default length of a jQuery object is 0\n length: 0,\n toArray: function toArray() {\n return _slice.call(this);\n },\n // Get the Nth element in the matched element set OR\n // Get the whole matched element set as a clean array\n get: function get(num) {\n // Return all the elements in a clean array\n if (num == null) {\n return _slice.call(this);\n } // Return just the one element from the set\n\n\n return num < 0 ? this[num + this.length] : this[num];\n },\n // Take an array of elements and push it onto the stack\n // (returning the new matched element set)\n pushStack: function pushStack(elems) {\n // Build a new jQuery matched element set\n var ret = jQuery.merge(this.constructor(), elems); // Add the old object onto the stack (as a reference)\n\n ret.prevObject = this; // Return the newly-formed element set\n\n return ret;\n },\n // Execute a callback for every element in the matched set.\n each: function each(callback) {\n return jQuery.each(this, callback);\n },\n map: function map(callback) {\n return this.pushStack(jQuery.map(this, function (elem, i) {\n return callback.call(elem, i, elem);\n }));\n },\n slice: function slice() {\n return this.pushStack(_slice.apply(this, arguments));\n },\n first: function first() {\n return this.eq(0);\n },\n last: function last() {\n return this.eq(-1);\n },\n even: function even() {\n return this.pushStack(jQuery.grep(this, function (_elem, i) {\n return (i + 1) % 2;\n }));\n },\n odd: function odd() {\n return this.pushStack(jQuery.grep(this, function (_elem, i) {\n return i % 2;\n }));\n },\n eq: function eq(i) {\n var len = this.length,\n j = +i + (i < 0 ? len : 0);\n return this.pushStack(j >= 0 && j < len ? [this[j]] : []);\n },\n end: function end() {\n return this.prevObject || this.constructor();\n },\n // For internal use only.\n // Behaves like an Array's method, not like a jQuery method.\n push: push,\n sort: arr.sort,\n splice: arr.splice\n };\n\n jQuery.extend = jQuery.fn.extend = function () {\n var options,\n name,\n src,\n copy,\n copyIsArray,\n clone,\n target = arguments[0] || {},\n i = 1,\n length = arguments.length,\n deep = false; // Handle a deep copy situation\n\n if (typeof target === \"boolean\") {\n deep = target; // Skip the boolean and the target\n\n target = arguments[i] || {};\n i++;\n } // Handle case when target is a string or something (possible in deep copy)\n\n\n if (_typeof(target) !== \"object\" && !isFunction(target)) {\n target = {};\n } // Extend jQuery itself if only one argument is passed\n\n\n if (i === length) {\n target = this;\n i--;\n }\n\n for (; i < length; i++) {\n // Only deal with non-null/undefined values\n if ((options = arguments[i]) != null) {\n // Extend the base object\n for (name in options) {\n copy = options[name]; // Prevent Object.prototype pollution\n // Prevent never-ending loop\n\n if (name === \"__proto__\" || target === copy) {\n continue;\n } // Recurse if we're merging plain objects or arrays\n\n\n if (deep && copy && (jQuery.isPlainObject(copy) || (copyIsArray = Array.isArray(copy)))) {\n src = target[name]; // Ensure proper type for the source value\n\n if (copyIsArray && !Array.isArray(src)) {\n clone = [];\n } else if (!copyIsArray && !jQuery.isPlainObject(src)) {\n clone = {};\n } else {\n clone = src;\n }\n\n copyIsArray = false; // Never move original objects, clone them\n\n target[name] = jQuery.extend(deep, clone, copy); // Don't bring in undefined values\n } else if (copy !== undefined) {\n target[name] = copy;\n }\n }\n }\n } // Return the modified object\n\n\n return target;\n };\n\n jQuery.extend({\n // Unique for each copy of jQuery on the page\n expando: \"jQuery\" + (version + Math.random()).replace(/\\D/g, \"\"),\n // Assume jQuery is ready without the ready module\n isReady: true,\n error: function error(msg) {\n throw new Error(msg);\n },\n noop: function noop() {},\n isPlainObject: function isPlainObject(obj) {\n var proto, Ctor; // Detect obvious negatives\n // Use toString instead of jQuery.type to catch host objects\n\n if (!obj || toString.call(obj) !== \"[object Object]\") {\n return false;\n }\n\n proto = getProto(obj); // Objects with no prototype (e.g., `Object.create( null )`) are plain\n\n if (!proto) {\n return true;\n } // Objects with prototype are plain iff they were constructed by a global Object function\n\n\n Ctor = hasOwn.call(proto, \"constructor\") && proto.constructor;\n return typeof Ctor === \"function\" && fnToString.call(Ctor) === ObjectFunctionString;\n },\n isEmptyObject: function isEmptyObject(obj) {\n var name;\n\n for (name in obj) {\n return false;\n }\n\n return true;\n },\n // Evaluates a script in a provided context; falls back to the global one\n // if not specified.\n globalEval: function globalEval(code, options, doc) {\n DOMEval(code, {\n nonce: options && options.nonce\n }, doc);\n },\n each: function each(obj, callback) {\n var length,\n i = 0;\n\n if (isArrayLike(obj)) {\n length = obj.length;\n\n for (; i < length; i++) {\n if (callback.call(obj[i], i, obj[i]) === false) {\n break;\n }\n }\n } else {\n for (i in obj) {\n if (callback.call(obj[i], i, obj[i]) === false) {\n break;\n }\n }\n }\n\n return obj;\n },\n // results is for internal usage only\n makeArray: function makeArray(arr, results) {\n var ret = results || [];\n\n if (arr != null) {\n if (isArrayLike(Object(arr))) {\n jQuery.merge(ret, typeof arr === \"string\" ? [arr] : arr);\n } else {\n push.call(ret, arr);\n }\n }\n\n return ret;\n },\n inArray: function inArray(elem, arr, i) {\n return arr == null ? -1 : indexOf.call(arr, elem, i);\n },\n // Support: Android <=4.0 only, PhantomJS 1 only\n // push.apply(_, arraylike) throws on ancient WebKit\n merge: function merge(first, second) {\n var len = +second.length,\n j = 0,\n i = first.length;\n\n for (; j < len; j++) {\n first[i++] = second[j];\n }\n\n first.length = i;\n return first;\n },\n grep: function grep(elems, callback, invert) {\n var callbackInverse,\n matches = [],\n i = 0,\n length = elems.length,\n callbackExpect = !invert; // Go through the array, only saving the items\n // that pass the validator function\n\n for (; i < length; i++) {\n callbackInverse = !callback(elems[i], i);\n\n if (callbackInverse !== callbackExpect) {\n matches.push(elems[i]);\n }\n }\n\n return matches;\n },\n // arg is for internal usage only\n map: function map(elems, callback, arg) {\n var length,\n value,\n i = 0,\n ret = []; // Go through the array, translating each of the items to their new values\n\n if (isArrayLike(elems)) {\n length = elems.length;\n\n for (; i < length; i++) {\n value = callback(elems[i], i, arg);\n\n if (value != null) {\n ret.push(value);\n }\n } // Go through every key on the object,\n\n } else {\n for (i in elems) {\n value = callback(elems[i], i, arg);\n\n if (value != null) {\n ret.push(value);\n }\n }\n } // Flatten any nested arrays\n\n\n return flat(ret);\n },\n // A global GUID counter for objects\n guid: 1,\n // jQuery.support is not used in Core but other projects attach their\n // properties to it so it needs to exist.\n support: support\n });\n\n if (typeof Symbol === \"function\") {\n jQuery.fn[Symbol.iterator] = arr[Symbol.iterator];\n } // Populate the class2type map\n\n\n jQuery.each(\"Boolean Number String Function Array Date RegExp Object Error Symbol\".split(\" \"), function (_i, name) {\n class2type[\"[object \" + name + \"]\"] = name.toLowerCase();\n });\n\n function isArrayLike(obj) {\n // Support: real iOS 8.2 only (not reproducible in simulator)\n // `in` check used to prevent JIT error (gh-2145)\n // hasOwn isn't used here due to false negatives\n // regarding Nodelist length in IE\n var length = !!obj && \"length\" in obj && obj.length,\n type = toType(obj);\n\n if (isFunction(obj) || isWindow(obj)) {\n return false;\n }\n\n return type === \"array\" || length === 0 || typeof length === \"number\" && length > 0 && length - 1 in obj;\n }\n\n var Sizzle =\n /*!\n * Sizzle CSS Selector Engine v2.3.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) {\n var i,\n support,\n Expr,\n getText,\n isXML,\n tokenize,\n compile,\n select,\n outermostContext,\n sortInput,\n hasDuplicate,\n // Local document vars\n setDocument,\n document,\n docElem,\n documentIsHTML,\n rbuggyQSA,\n rbuggyMatches,\n matches,\n contains,\n // Instance-specific data\n expando = \"sizzle\" + 1 * new Date(),\n preferredDoc = window.document,\n dirruns = 0,\n done = 0,\n classCache = createCache(),\n tokenCache = createCache(),\n compilerCache = createCache(),\n nonnativeSelectorCache = createCache(),\n sortOrder = function sortOrder(a, b) {\n if (a === b) {\n hasDuplicate = true;\n }\n\n return 0;\n },\n // Instance methods\n hasOwn = {}.hasOwnProperty,\n arr = [],\n pop = arr.pop,\n pushNative = arr.push,\n push = arr.push,\n slice = arr.slice,\n // Use a stripped-down indexOf as it's faster than native\n // https://jsperf.com/thor-indexof-vs-for/5\n indexOf = function indexOf(list, elem) {\n var i = 0,\n len = list.length;\n\n for (; i < len; i++) {\n if (list[i] === elem) {\n return i;\n }\n }\n\n return -1;\n },\n booleans = \"checked|selected|async|autofocus|autoplay|controls|defer|disabled|hidden|\" + \"ismap|loop|multiple|open|readonly|required|scoped\",\n // Regular expressions\n // http://www.w3.org/TR/css3-selectors/#whitespace\n whitespace = \"[\\\\x20\\\\t\\\\r\\\\n\\\\f]\",\n // https://www.w3.org/TR/css-syntax-3/#ident-token-diagram\n identifier = \"(?:\\\\\\\\[\\\\da-fA-F]{1,6}\" + whitespace + \"?|\\\\\\\\[^\\\\r\\\\n\\\\f]|[\\\\w-]|[^\\0-\\\\x7f])+\",\n // Attribute selectors: http://www.w3.org/TR/selectors/#attribute-selectors\n attributes = \"\\\\[\" + whitespace + \"*(\" + identifier + \")(?:\" + whitespace + // Operator (capture 2)\n \"*([*^$|!~]?=)\" + whitespace + // \"Attribute values must be CSS identifiers [capture 5]\n // or strings [capture 3 or capture 4]\"\n \"*(?:'((?:\\\\\\\\.|[^\\\\\\\\'])*)'|\\\"((?:\\\\\\\\.|[^\\\\\\\\\\\"])*)\\\"|(\" + identifier + \"))|)\" + whitespace + \"*\\\\]\",\n pseudos = \":(\" + identifier + \")(?:\\\\((\" + // To reduce the number of selectors needing tokenize in the preFilter, prefer arguments:\n // 1. quoted (capture 3; capture 4 or capture 5)\n \"('((?:\\\\\\\\.|[^\\\\\\\\'])*)'|\\\"((?:\\\\\\\\.|[^\\\\\\\\\\\"])*)\\\")|\" + // 2. simple (capture 6)\n \"((?:\\\\\\\\.|[^\\\\\\\\()[\\\\]]|\" + attributes + \")*)|\" + // 3. anything else (capture 2)\n \".*\" + \")\\\\)|)\",\n // Leading and non-escaped trailing whitespace, capturing some non-whitespace characters preceding the latter\n rwhitespace = new RegExp(whitespace + \"+\", \"g\"),\n rtrim = new RegExp(\"^\" + whitespace + \"+|((?:^|[^\\\\\\\\])(?:\\\\\\\\.)*)\" + whitespace + \"+$\", \"g\"),\n rcomma = new RegExp(\"^\" + whitespace + \"*,\" + whitespace + \"*\"),\n rcombinators = new RegExp(\"^\" + whitespace + \"*([>+~]|\" + whitespace + \")\" + whitespace + \"*\"),\n rdescend = new RegExp(whitespace + \"|>\"),\n rpseudo = new RegExp(pseudos),\n ridentifier = new RegExp(\"^\" + identifier + \"$\"),\n matchExpr = {\n \"ID\": new RegExp(\"^#(\" + identifier + \")\"),\n \"CLASS\": new RegExp(\"^\\\\.(\" + identifier + \")\"),\n \"TAG\": new RegExp(\"^(\" + identifier + \"|[*])\"),\n \"ATTR\": new RegExp(\"^\" + attributes),\n \"PSEUDO\": new RegExp(\"^\" + pseudos),\n \"CHILD\": new RegExp(\"^:(only|first|last|nth|nth-last)-(child|of-type)(?:\\\\(\" + whitespace + \"*(even|odd|(([+-]|)(\\\\d*)n|)\" + whitespace + \"*(?:([+-]|)\" + whitespace + \"*(\\\\d+)|))\" + whitespace + \"*\\\\)|)\", \"i\"),\n \"bool\": new RegExp(\"^(?:\" + booleans + \")$\", \"i\"),\n // For use in libraries implementing .is()\n // We use this for POS matching in `select`\n \"needsContext\": new RegExp(\"^\" + whitespace + \"*[>+~]|:(even|odd|eq|gt|lt|nth|first|last)(?:\\\\(\" + whitespace + \"*((?:-\\\\d)?\\\\d*)\" + whitespace + \"*\\\\)|)(?=[^-]|$)\", \"i\")\n },\n rhtml = /HTML$/i,\n rinputs = /^(?:input|select|textarea|button)$/i,\n rheader = /^h\\d$/i,\n rnative = /^[^{]+\\{\\s*\\[native \\w/,\n // Easily-parseable/retrievable ID or TAG or CLASS selectors\n rquickExpr = /^(?:#([\\w-]+)|(\\w+)|\\.([\\w-]+))$/,\n rsibling = /[+~]/,\n // CSS escapes\n // http://www.w3.org/TR/CSS21/syndata.html#escaped-characters\n runescape = new RegExp(\"\\\\\\\\[\\\\da-fA-F]{1,6}\" + whitespace + \"?|\\\\\\\\([^\\\\r\\\\n\\\\f])\", \"g\"),\n funescape = function funescape(escape, nonHex) {\n var high = \"0x\" + escape.slice(1) - 0x10000;\n return nonHex ? // Strip the backslash prefix from a non-hex escape sequence\n nonHex : // Replace a hexadecimal escape sequence with the encoded Unicode code point\n // Support: IE <=11+\n // For values outside the Basic Multilingual Plane (BMP), manually construct a\n // surrogate pair\n high < 0 ? String.fromCharCode(high + 0x10000) : String.fromCharCode(high >> 10 | 0xD800, high & 0x3FF | 0xDC00);\n },\n // CSS string/identifier serialization\n // https://drafts.csswg.org/cssom/#common-serializing-idioms\n rcssescape = /([\\0-\\x1f\\x7f]|^-?\\d)|^-$|[^\\0-\\x1f\\x7f-\\uFFFF\\w-]/g,\n fcssescape = function fcssescape(ch, asCodePoint) {\n if (asCodePoint) {\n // U+0000 NULL becomes U+FFFD REPLACEMENT CHARACTER\n if (ch === \"\\0\") {\n return \"\\uFFFD\";\n } // Control characters and (dependent upon position) numbers get escaped as code points\n\n\n return ch.slice(0, -1) + \"\\\\\" + ch.charCodeAt(ch.length - 1).toString(16) + \" \";\n } // Other potentially-special ASCII characters get backslash-escaped\n\n\n return \"\\\\\" + ch;\n },\n // Used for iframes\n // See setDocument()\n // Removing the function wrapper causes a \"Permission Denied\"\n // error in IE\n unloadHandler = function unloadHandler() {\n setDocument();\n },\n inDisabledFieldset = addCombinator(function (elem) {\n return elem.disabled === true && elem.nodeName.toLowerCase() === \"fieldset\";\n }, {\n dir: \"parentNode\",\n next: \"legend\"\n }); // Optimize for push.apply( _, NodeList )\n\n\n try {\n push.apply(arr = slice.call(preferredDoc.childNodes), preferredDoc.childNodes); // Support: Android<4.0\n // Detect silently failing push.apply\n // eslint-disable-next-line no-unused-expressions\n\n arr[preferredDoc.childNodes.length].nodeType;\n } catch (e) {\n push = {\n apply: arr.length ? // Leverage slice if possible\n function (target, els) {\n pushNative.apply(target, slice.call(els));\n } : // Support: IE<9\n // Otherwise append directly\n function (target, els) {\n var j = target.length,\n i = 0; // Can't trust NodeList.length\n\n while (target[j++] = els[i++]) {}\n\n target.length = j - 1;\n }\n };\n }\n\n function Sizzle(selector, context, results, seed) {\n var m,\n i,\n elem,\n nid,\n match,\n groups,\n newSelector,\n newContext = context && context.ownerDocument,\n // nodeType defaults to 9, since context defaults to document\n nodeType = context ? context.nodeType : 9;\n results = results || []; // Return early from calls with invalid selector or context\n\n if (typeof selector !== \"string\" || !selector || nodeType !== 1 && nodeType !== 9 && nodeType !== 11) {\n return results;\n } // Try to shortcut find operations (as opposed to filters) in HTML documents\n\n\n if (!seed) {\n setDocument(context);\n context = context || document;\n\n if (documentIsHTML) {\n // If the selector is sufficiently simple, try using a \"get*By*\" DOM method\n // (excepting DocumentFragment context, where the methods don't exist)\n if (nodeType !== 11 && (match = rquickExpr.exec(selector))) {\n // ID selector\n if (m = match[1]) {\n // Document context\n if (nodeType === 9) {\n if (elem = context.getElementById(m)) {\n // Support: IE, Opera, Webkit\n // TODO: identify versions\n // getElementById can match elements by name instead of ID\n if (elem.id === m) {\n results.push(elem);\n return results;\n }\n } else {\n return results;\n } // Element context\n\n } else {\n // Support: IE, Opera, Webkit\n // TODO: identify versions\n // getElementById can match elements by name instead of ID\n if (newContext && (elem = newContext.getElementById(m)) && contains(context, elem) && elem.id === m) {\n results.push(elem);\n return results;\n }\n } // Type selector\n\n } else if (match[2]) {\n push.apply(results, context.getElementsByTagName(selector));\n return results; // Class selector\n } else if ((m = match[3]) && support.getElementsByClassName && context.getElementsByClassName) {\n push.apply(results, context.getElementsByClassName(m));\n return results;\n }\n } // Take advantage of querySelectorAll\n\n\n if (support.qsa && !nonnativeSelectorCache[selector + \" \"] && (!rbuggyQSA || !rbuggyQSA.test(selector)) && ( // Support: IE 8 only\n // Exclude object elements\n nodeType !== 1 || context.nodeName.toLowerCase() !== \"object\")) {\n newSelector = selector;\n newContext = context; // qSA considers elements outside a scoping root when evaluating child or\n // descendant combinators, which is not what we want.\n // In such cases, we work around the behavior by prefixing every selector in the\n // list with an ID selector referencing the scope context.\n // The technique has to be used as well when a leading combinator is used\n // as such selectors are not recognized by querySelectorAll.\n // Thanks to Andrew Dupont for this technique.\n\n if (nodeType === 1 && (rdescend.test(selector) || rcombinators.test(selector))) {\n // Expand context for sibling selectors\n newContext = rsibling.test(selector) && testContext(context.parentNode) || context; // We can use :scope instead of the ID hack if the browser\n // supports it & if we're not changing the context.\n\n if (newContext !== context || !support.scope) {\n // Capture the context ID, setting it first if necessary\n if (nid = context.getAttribute(\"id\")) {\n nid = nid.replace(rcssescape, fcssescape);\n } else {\n context.setAttribute(\"id\", nid = expando);\n }\n } // Prefix every selector in the list\n\n\n groups = tokenize(selector);\n i = groups.length;\n\n while (i--) {\n groups[i] = (nid ? \"#\" + nid : \":scope\") + \" \" + toSelector(groups[i]);\n }\n\n newSelector = groups.join(\",\");\n }\n\n try {\n push.apply(results, newContext.querySelectorAll(newSelector));\n return results;\n } catch (qsaError) {\n nonnativeSelectorCache(selector, true);\n } finally {\n if (nid === expando) {\n context.removeAttribute(\"id\");\n }\n }\n }\n }\n } // All others\n\n\n return select(selector.replace(rtrim, \"$1\"), context, results, seed);\n }\n /**\n * Create key-value caches of limited size\n * @returns {function(string, object)} Returns the Object data after storing it on itself with\n *\tproperty name the (space-suffixed) string and (if the cache is larger than Expr.cacheLength)\n *\tdeleting the oldest entry\n */\n\n\n function createCache() {\n var keys = [];\n\n function cache(key, value) {\n // Use (key + \" \") to avoid collision with native prototype properties (see Issue #157)\n if (keys.push(key + \" \") > Expr.cacheLength) {\n // Only keep the most recent entries\n delete cache[keys.shift()];\n }\n\n return cache[key + \" \"] = value;\n }\n\n return cache;\n }\n /**\n * Mark a function for special use by Sizzle\n * @param {Function} fn The function to mark\n */\n\n\n function markFunction(fn) {\n fn[expando] = true;\n return fn;\n }\n /**\n * Support testing using an element\n * @param {Function} fn Passed the created element and returns a boolean result\n */\n\n\n function assert(fn) {\n var el = document.createElement(\"fieldset\");\n\n try {\n return !!fn(el);\n } catch (e) {\n return false;\n } finally {\n // Remove from its parent by default\n if (el.parentNode) {\n el.parentNode.removeChild(el);\n } // release memory in IE\n\n\n el = null;\n }\n }\n /**\n * Adds the same handler for all of the specified attrs\n * @param {String} attrs Pipe-separated list of attributes\n * @param {Function} handler The method that will be applied\n */\n\n\n function addHandle(attrs, handler) {\n var arr = attrs.split(\"|\"),\n i = arr.length;\n\n while (i--) {\n Expr.attrHandle[arr[i]] = handler;\n }\n }\n /**\n * Checks document order of two siblings\n * @param {Element} a\n * @param {Element} b\n * @returns {Number} Returns less than 0 if a precedes b, greater than 0 if a follows b\n */\n\n\n function siblingCheck(a, b) {\n var cur = b && a,\n diff = cur && a.nodeType === 1 && b.nodeType === 1 && a.sourceIndex - b.sourceIndex; // Use IE sourceIndex if available on both nodes\n\n if (diff) {\n return diff;\n } // Check if b follows a\n\n\n if (cur) {\n while (cur = cur.nextSibling) {\n if (cur === b) {\n return -1;\n }\n }\n }\n\n return a ? 1 : -1;\n }\n /**\n * Returns a function to use in pseudos for input types\n * @param {String} type\n */\n\n\n function createInputPseudo(type) {\n return function (elem) {\n var name = elem.nodeName.toLowerCase();\n return name === \"input\" && elem.type === type;\n };\n }\n /**\n * Returns a function to use in pseudos for buttons\n * @param {String} type\n */\n\n\n function createButtonPseudo(type) {\n return function (elem) {\n var name = elem.nodeName.toLowerCase();\n return (name === \"input\" || name === \"button\") && elem.type === type;\n };\n }\n /**\n * Returns a function to use in pseudos for :enabled/:disabled\n * @param {Boolean} disabled true for :disabled; false for :enabled\n */\n\n\n function createDisabledPseudo(disabled) {\n // Known :disabled false positives: fieldset[disabled] > legend:nth-of-type(n+2) :can-disable\n return function (elem) {\n // Only certain elements can match :enabled or :disabled\n // https://html.spec.whatwg.org/multipage/scripting.html#selector-enabled\n // https://html.spec.whatwg.org/multipage/scripting.html#selector-disabled\n if (\"form\" in elem) {\n // Check for inherited disabledness on relevant non-disabled elements:\n // * listed form-associated elements in a disabled fieldset\n // https://html.spec.whatwg.org/multipage/forms.html#category-listed\n // https://html.spec.whatwg.org/multipage/forms.html#concept-fe-disabled\n // * option elements in a disabled optgroup\n // https://html.spec.whatwg.org/multipage/forms.html#concept-option-disabled\n // All such elements have a \"form\" property.\n if (elem.parentNode && elem.disabled === false) {\n // Option elements defer to a parent optgroup if present\n if (\"label\" in elem) {\n if (\"label\" in elem.parentNode) {\n return elem.parentNode.disabled === disabled;\n } else {\n return elem.disabled === disabled;\n }\n } // Support: IE 6 - 11\n // Use the isDisabled shortcut property to check for disabled fieldset ancestors\n\n\n return elem.isDisabled === disabled || // Where there is no isDisabled, check manually\n\n /* jshint -W018 */\n elem.isDisabled !== !disabled && inDisabledFieldset(elem) === disabled;\n }\n\n return elem.disabled === disabled; // Try to winnow out elements that can't be disabled before trusting the disabled property.\n // Some victims get caught in our net (label, legend, menu, track), but it shouldn't\n // even exist on them, let alone have a boolean value.\n } else if (\"label\" in elem) {\n return elem.disabled === disabled;\n } // Remaining elements are neither :enabled nor :disabled\n\n\n return false;\n };\n }\n /**\n * Returns a function to use in pseudos for positionals\n * @param {Function} fn\n */\n\n\n function createPositionalPseudo(fn) {\n return markFunction(function (argument) {\n argument = +argument;\n return markFunction(function (seed, matches) {\n var j,\n matchIndexes = fn([], seed.length, argument),\n i = matchIndexes.length; // Match elements found at the specified indexes\n\n while (i--) {\n if (seed[j = matchIndexes[i]]) {\n seed[j] = !(matches[j] = seed[j]);\n }\n }\n });\n });\n }\n /**\n * Checks a node for validity as a Sizzle context\n * @param {Element|Object=} context\n * @returns {Element|Object|Boolean} The input node if acceptable, otherwise a falsy value\n */\n\n\n function testContext(context) {\n return context && typeof context.getElementsByTagName !== \"undefined\" && context;\n } // Expose support vars for convenience\n\n\n support = Sizzle.support = {};\n /**\n * Detects XML nodes\n * @param {Element|Object} elem An element or a document\n * @returns {Boolean} True iff elem is a non-HTML XML node\n */\n\n isXML = Sizzle.isXML = function (elem) {\n var namespace = elem && elem.namespaceURI,\n docElem = elem && (elem.ownerDocument || elem).documentElement; // Support: IE <=8\n // Assume HTML when documentElement doesn't yet exist, such as inside loading iframes\n // https://bugs.jquery.com/ticket/4833\n\n return !rhtml.test(namespace || docElem && docElem.nodeName || \"HTML\");\n };\n /**\n * Sets document-related variables once based on the current document\n * @param {Element|Object} [doc] An element or document object to use to set the document\n * @returns {Object} Returns the current document\n */\n\n\n setDocument = Sizzle.setDocument = function (node) {\n var hasCompare,\n subWindow,\n doc = node ? node.ownerDocument || node : preferredDoc; // Return early if doc is invalid or already selected\n // Support: IE 11+, Edge 17 - 18+\n // IE/Edge sometimes throw a \"Permission denied\" error when strict-comparing\n // two documents; shallow comparisons work.\n // eslint-disable-next-line eqeqeq\n\n if (doc == document || doc.nodeType !== 9 || !doc.documentElement) {\n return document;\n } // Update global variables\n\n\n document = doc;\n docElem = document.documentElement;\n documentIsHTML = !isXML(document); // Support: IE 9 - 11+, Edge 12 - 18+\n // Accessing iframe documents after unload throws \"permission denied\" errors (jQuery #13936)\n // Support: IE 11+, Edge 17 - 18+\n // IE/Edge sometimes throw a \"Permission denied\" error when strict-comparing\n // two documents; shallow comparisons work.\n // eslint-disable-next-line eqeqeq\n\n if (preferredDoc != document && (subWindow = document.defaultView) && subWindow.top !== subWindow) {\n // Support: IE 11, Edge\n if (subWindow.addEventListener) {\n subWindow.addEventListener(\"unload\", unloadHandler, false); // Support: IE 9 - 10 only\n } else if (subWindow.attachEvent) {\n subWindow.attachEvent(\"onunload\", unloadHandler);\n }\n } // Support: IE 8 - 11+, Edge 12 - 18+, Chrome <=16 - 25 only, Firefox <=3.6 - 31 only,\n // Safari 4 - 5 only, Opera <=11.6 - 12.x only\n // IE/Edge & older browsers don't support the :scope pseudo-class.\n // Support: Safari 6.0 only\n // Safari 6.0 supports :scope but it's an alias of :root there.\n\n\n support.scope = assert(function (el) {\n docElem.appendChild(el).appendChild(document.createElement(\"div\"));\n return typeof el.querySelectorAll !== \"undefined\" && !el.querySelectorAll(\":scope fieldset div\").length;\n });\n /* Attributes\n ---------------------------------------------------------------------- */\n // Support: IE<8\n // Verify that getAttribute really returns attributes and not properties\n // (excepting IE8 booleans)\n\n support.attributes = assert(function (el) {\n el.className = \"i\";\n return !el.getAttribute(\"className\");\n });\n /* getElement(s)By*\n ---------------------------------------------------------------------- */\n // Check if getElementsByTagName(\"*\") returns only elements\n\n support.getElementsByTagName = assert(function (el) {\n el.appendChild(document.createComment(\"\"));\n return !el.getElementsByTagName(\"*\").length;\n }); // Support: IE<9\n\n support.getElementsByClassName = rnative.test(document.getElementsByClassName); // Support: IE<10\n // Check if getElementById returns elements by name\n // The broken getElementById methods don't pick up programmatically-set names,\n // so use a roundabout getElementsByName test\n\n support.getById = assert(function (el) {\n docElem.appendChild(el).id = expando;\n return !document.getElementsByName || !document.getElementsByName(expando).length;\n }); // ID filter and find\n\n if (support.getById) {\n Expr.filter[\"ID\"] = function (id) {\n var attrId = id.replace(runescape, funescape);\n return function (elem) {\n return elem.getAttribute(\"id\") === attrId;\n };\n };\n\n Expr.find[\"ID\"] = function (id, context) {\n if (typeof context.getElementById !== \"undefined\" && documentIsHTML) {\n var elem = context.getElementById(id);\n return elem ? [elem] : [];\n }\n };\n } else {\n Expr.filter[\"ID\"] = function (id) {\n var attrId = id.replace(runescape, funescape);\n return function (elem) {\n var node = typeof elem.getAttributeNode !== \"undefined\" && elem.getAttributeNode(\"id\");\n return node && node.value === attrId;\n };\n }; // Support: IE 6 - 7 only\n // getElementById is not reliable as a find shortcut\n\n\n Expr.find[\"ID\"] = function (id, context) {\n if (typeof context.getElementById !== \"undefined\" && documentIsHTML) {\n var node,\n i,\n elems,\n elem = context.getElementById(id);\n\n if (elem) {\n // Verify the id attribute\n node = elem.getAttributeNode(\"id\");\n\n if (node && node.value === id) {\n return [elem];\n } // Fall back on getElementsByName\n\n\n elems = context.getElementsByName(id);\n i = 0;\n\n while (elem = elems[i++]) {\n node = elem.getAttributeNode(\"id\");\n\n if (node && node.value === id) {\n return [elem];\n }\n }\n }\n\n return [];\n }\n };\n } // Tag\n\n\n Expr.find[\"TAG\"] = support.getElementsByTagName ? function (tag, context) {\n if (typeof context.getElementsByTagName !== \"undefined\") {\n return context.getElementsByTagName(tag); // DocumentFragment nodes don't have gEBTN\n } else if (support.qsa) {\n return context.querySelectorAll(tag);\n }\n } : function (tag, context) {\n var elem,\n tmp = [],\n i = 0,\n // By happy coincidence, a (broken) gEBTN appears on DocumentFragment nodes too\n results = context.getElementsByTagName(tag); // Filter out possible comments\n\n if (tag === \"*\") {\n while (elem = results[i++]) {\n if (elem.nodeType === 1) {\n tmp.push(elem);\n }\n }\n\n return tmp;\n }\n\n return results;\n }; // Class\n\n Expr.find[\"CLASS\"] = support.getElementsByClassName && function (className, context) {\n if (typeof context.getElementsByClassName !== \"undefined\" && documentIsHTML) {\n return context.getElementsByClassName(className);\n }\n };\n /* QSA/matchesSelector\n ---------------------------------------------------------------------- */\n // QSA and matchesSelector support\n // matchesSelector(:active) reports false when true (IE9/Opera 11.5)\n\n\n rbuggyMatches = []; // qSa(:focus) reports false when true (Chrome 21)\n // We allow this because of a bug in IE8/9 that throws an error\n // whenever `document.activeElement` is accessed on an iframe\n // So, we allow :focus to pass through QSA all the time to avoid the IE error\n // See https://bugs.jquery.com/ticket/13378\n\n rbuggyQSA = [];\n\n if (support.qsa = rnative.test(document.querySelectorAll)) {\n // Build QSA regex\n // Regex strategy adopted from Diego Perini\n assert(function (el) {\n var input; // Select is set to empty string on purpose\n // This is to test IE's treatment of not explicitly\n // setting a boolean content attribute,\n // since its presence should be enough\n // https://bugs.jquery.com/ticket/12359\n\n docElem.appendChild(el).innerHTML = \"<a id='\" + expando + \"'></a>\" + \"<select id='\" + expando + \"-\\r\\\\' msallowcapture=''>\" + \"<option selected=''></option></select>\"; // Support: IE8, Opera 11-12.16\n // Nothing should be selected when empty strings follow ^= or $= or *=\n // The test attribute must be unknown in Opera but \"safe\" for WinRT\n // https://msdn.microsoft.com/en-us/library/ie/hh465388.aspx#attribute_section\n\n if (el.querySelectorAll(\"[msallowcapture^='']\").length) {\n rbuggyQSA.push(\"[*^$]=\" + whitespace + \"*(?:''|\\\"\\\")\");\n } // Support: IE8\n // Boolean attributes and \"value\" are not treated correctly\n\n\n if (!el.querySelectorAll(\"[selected]\").length) {\n rbuggyQSA.push(\"\\\\[\" + whitespace + \"*(?:value|\" + booleans + \")\");\n } // Support: Chrome<29, Android<4.4, Safari<7.0+, iOS<7.0+, PhantomJS<1.9.8+\n\n\n if (!el.querySelectorAll(\"[id~=\" + expando + \"-]\").length) {\n rbuggyQSA.push(\"~=\");\n } // Support: IE 11+, Edge 15 - 18+\n // IE 11/Edge don't find elements on a `[name='']` query in some cases.\n // Adding a temporary attribute to the document before the selection works\n // around the issue.\n // Interestingly, IE 10 & older don't seem to have the issue.\n\n\n input = document.createElement(\"input\");\n input.setAttribute(\"name\", \"\");\n el.appendChild(input);\n\n if (!el.querySelectorAll(\"[name='']\").length) {\n rbuggyQSA.push(\"\\\\[\" + whitespace + \"*name\" + whitespace + \"*=\" + whitespace + \"*(?:''|\\\"\\\")\");\n } // Webkit/Opera - :checked should return selected option elements\n // http://www.w3.org/TR/2011/REC-css3-selectors-20110929/#checked\n // IE8 throws error here and will not see later tests\n\n\n if (!el.querySelectorAll(\":checked\").length) {\n rbuggyQSA.push(\":checked\");\n } // Support: Safari 8+, iOS 8+\n // https://bugs.webkit.org/show_bug.cgi?id=136851\n // In-page `selector#id sibling-combinator selector` fails\n\n\n if (!el.querySelectorAll(\"a#\" + expando + \"+*\").length) {\n rbuggyQSA.push(\".#.+[+~]\");\n } // Support: Firefox <=3.6 - 5 only\n // Old Firefox doesn't throw on a badly-escaped identifier.\n\n\n el.querySelectorAll(\"\\\\\\f\");\n rbuggyQSA.push(\"[\\\\r\\\\n\\\\f]\");\n });\n assert(function (el) {\n el.innerHTML = \"<a href='' disabled='disabled'></a>\" + \"<select disabled='disabled'><option/></select>\"; // Support: Windows 8 Native Apps\n // The type and name attributes are restricted during .innerHTML assignment\n\n var input = document.createElement(\"input\");\n input.setAttribute(\"type\", \"hidden\");\n el.appendChild(input).setAttribute(\"name\", \"D\"); // Support: IE8\n // Enforce case-sensitivity of name attribute\n\n if (el.querySelectorAll(\"[name=d]\").length) {\n rbuggyQSA.push(\"name\" + whitespace + \"*[*^$|!~]?=\");\n } // FF 3.5 - :enabled/:disabled and hidden elements (hidden elements are still enabled)\n // IE8 throws error here and will not see later tests\n\n\n if (el.querySelectorAll(\":enabled\").length !== 2) {\n rbuggyQSA.push(\":enabled\", \":disabled\");\n } // Support: IE9-11+\n // IE's :disabled selector does not pick up the children of disabled fieldsets\n\n\n docElem.appendChild(el).disabled = true;\n\n if (el.querySelectorAll(\":disabled\").length !== 2) {\n rbuggyQSA.push(\":enabled\", \":disabled\");\n } // Support: Opera 10 - 11 only\n // Opera 10-11 does not throw on post-comma invalid pseudos\n\n\n el.querySelectorAll(\"*,:x\");\n rbuggyQSA.push(\",.*:\");\n });\n }\n\n if (support.matchesSelector = rnative.test(matches = docElem.matches || docElem.webkitMatchesSelector || docElem.mozMatchesSelector || docElem.oMatchesSelector || docElem.msMatchesSelector)) {\n assert(function (el) {\n // Check to see if it's possible to do matchesSelector\n // on a disconnected node (IE 9)\n support.disconnectedMatch = matches.call(el, \"*\"); // This should fail with an exception\n // Gecko does not error, returns false instead\n\n matches.call(el, \"[s!='']:x\");\n rbuggyMatches.push(\"!=\", pseudos);\n });\n }\n\n rbuggyQSA = rbuggyQSA.length && new RegExp(rbuggyQSA.join(\"|\"));\n rbuggyMatches = rbuggyMatches.length && new RegExp(rbuggyMatches.join(\"|\"));\n /* Contains\n ---------------------------------------------------------------------- */\n\n hasCompare = rnative.test(docElem.compareDocumentPosition); // Element contains another\n // Purposefully self-exclusive\n // As in, an element does not contain itself\n\n contains = hasCompare || rnative.test(docElem.contains) ? function (a, b) {\n var adown = a.nodeType === 9 ? a.documentElement : a,\n bup = b && b.parentNode;\n return a === bup || !!(bup && bup.nodeType === 1 && (adown.contains ? adown.contains(bup) : a.compareDocumentPosition && a.compareDocumentPosition(bup) & 16));\n } : function (a, b) {\n if (b) {\n while (b = b.parentNode) {\n if (b === a) {\n return true;\n }\n }\n }\n\n return false;\n };\n /* Sorting\n ---------------------------------------------------------------------- */\n // Document order sorting\n\n sortOrder = hasCompare ? function (a, b) {\n // Flag for duplicate removal\n if (a === b) {\n hasDuplicate = true;\n return 0;\n } // Sort on method existence if only one input has compareDocumentPosition\n\n\n var compare = !a.compareDocumentPosition - !b.compareDocumentPosition;\n\n if (compare) {\n return compare;\n } // Calculate position if both inputs belong to the same document\n // Support: IE 11+, Edge 17 - 18+\n // IE/Edge sometimes throw a \"Permission denied\" error when strict-comparing\n // two documents; shallow comparisons work.\n // eslint-disable-next-line eqeqeq\n\n\n compare = (a.ownerDocument || a) == (b.ownerDocument || b) ? a.compareDocumentPosition(b) : // Otherwise we know they are disconnected\n 1; // Disconnected nodes\n\n if (compare & 1 || !support.sortDetached && b.compareDocumentPosition(a) === compare) {\n // Choose the first element that is related to our preferred document\n // Support: IE 11+, Edge 17 - 18+\n // IE/Edge sometimes throw a \"Permission denied\" error when strict-comparing\n // two documents; shallow comparisons work.\n // eslint-disable-next-line eqeqeq\n if (a == document || a.ownerDocument == preferredDoc && contains(preferredDoc, a)) {\n return -1;\n } // Support: IE 11+, Edge 17 - 18+\n // IE/Edge sometimes throw a \"Permission denied\" error when strict-comparing\n // two documents; shallow comparisons work.\n // eslint-disable-next-line eqeqeq\n\n\n if (b == document || b.ownerDocument == preferredDoc && contains(preferredDoc, b)) {\n return 1;\n } // Maintain original order\n\n\n return sortInput ? indexOf(sortInput, a) - indexOf(sortInput, b) : 0;\n }\n\n return compare & 4 ? -1 : 1;\n } : function (a, b) {\n // Exit early if the nodes are identical\n if (a === b) {\n hasDuplicate = true;\n return 0;\n }\n\n var cur,\n i = 0,\n aup = a.parentNode,\n bup = b.parentNode,\n ap = [a],\n bp = [b]; // Parentless nodes are either documents or disconnected\n\n if (!aup || !bup) {\n // Support: IE 11+, Edge 17 - 18+\n // IE/Edge sometimes throw a \"Permission denied\" error when strict-comparing\n // two documents; shallow comparisons work.\n\n /* eslint-disable eqeqeq */\n return a == document ? -1 : b == document ? 1 :\n /* eslint-enable eqeqeq */\n aup ? -1 : bup ? 1 : sortInput ? indexOf(sortInput, a) - indexOf(sortInput, b) : 0; // If the nodes are siblings, we can do a quick check\n } else if (aup === bup) {\n return siblingCheck(a, b);\n } // Otherwise we need full lists of their ancestors for comparison\n\n\n cur = a;\n\n while (cur = cur.parentNode) {\n ap.unshift(cur);\n }\n\n cur = b;\n\n while (cur = cur.parentNode) {\n bp.unshift(cur);\n } // Walk down the tree looking for a discrepancy\n\n\n while (ap[i] === bp[i]) {\n i++;\n }\n\n return i ? // Do a sibling check if the nodes have a common ancestor\n siblingCheck(ap[i], bp[i]) : // Otherwise nodes in our document sort first\n // Support: IE 11+, Edge 17 - 18+\n // IE/Edge sometimes throw a \"Permission denied\" error when strict-comparing\n // two documents; shallow comparisons work.\n\n /* eslint-disable eqeqeq */\n ap[i] == preferredDoc ? -1 : bp[i] == preferredDoc ? 1 :\n /* eslint-enable eqeqeq */\n 0;\n };\n return document;\n };\n\n Sizzle.matches = function (expr, elements) {\n return Sizzle(expr, null, null, elements);\n };\n\n Sizzle.matchesSelector = function (elem, expr) {\n setDocument(elem);\n\n if (support.matchesSelector && documentIsHTML && !nonnativeSelectorCache[expr + \" \"] && (!rbuggyMatches || !rbuggyMatches.test(expr)) && (!rbuggyQSA || !rbuggyQSA.test(expr))) {\n try {\n var ret = matches.call(elem, expr); // IE 9's matchesSelector returns false on disconnected nodes\n\n if (ret || support.disconnectedMatch || // As well, disconnected nodes are said to be in a document\n // fragment in IE 9\n elem.document && elem.document.nodeType !== 11) {\n return ret;\n }\n } catch (e) {\n nonnativeSelectorCache(expr, true);\n }\n }\n\n return Sizzle(expr, document, null, [elem]).length > 0;\n };\n\n Sizzle.contains = function (context, elem) {\n // Set document vars if needed\n // Support: IE 11+, Edge 17 - 18+\n // IE/Edge sometimes throw a \"Permission denied\" error when strict-comparing\n // two documents; shallow comparisons work.\n // eslint-disable-next-line eqeqeq\n if ((context.ownerDocument || context) != document) {\n setDocument(context);\n }\n\n return contains(context, elem);\n };\n\n Sizzle.attr = function (elem, name) {\n // Set document vars if needed\n // Support: IE 11+, Edge 17 - 18+\n // IE/Edge sometimes throw a \"Permission denied\" error when strict-comparing\n // two documents; shallow comparisons work.\n // eslint-disable-next-line eqeqeq\n if ((elem.ownerDocument || elem) != document) {\n setDocument(elem);\n }\n\n var fn = Expr.attrHandle[name.toLowerCase()],\n // Don't get fooled by Object.prototype properties (jQuery #13807)\n val = fn && hasOwn.call(Expr.attrHandle, name.toLowerCase()) ? fn(elem, name, !documentIsHTML) : undefined;\n return val !== undefined ? val : support.attributes || !documentIsHTML ? elem.getAttribute(name) : (val = elem.getAttributeNode(name)) && val.specified ? val.value : null;\n };\n\n Sizzle.escape = function (sel) {\n return (sel + \"\").replace(rcssescape, fcssescape);\n };\n\n Sizzle.error = function (msg) {\n throw new Error(\"Syntax error, unrecognized expression: \" + msg);\n };\n /**\n * Document sorting and removing duplicates\n * @param {ArrayLike} results\n */\n\n\n Sizzle.uniqueSort = function (results) {\n var elem,\n duplicates = [],\n j = 0,\n i = 0; // Unless we *know* we can detect duplicates, assume their presence\n\n hasDuplicate = !support.detectDuplicates;\n sortInput = !support.sortStable && results.slice(0);\n results.sort(sortOrder);\n\n if (hasDuplicate) {\n while (elem = results[i++]) {\n if (elem === results[i]) {\n j = duplicates.push(i);\n }\n }\n\n while (j--) {\n results.splice(duplicates[j], 1);\n }\n } // Clear input after sorting to release objects\n // See https://github.com/jquery/sizzle/pull/225\n\n\n sortInput = null;\n return results;\n };\n /**\n * Utility function for retrieving the text value of an array of DOM nodes\n * @param {Array|Element} elem\n */\n\n\n getText = Sizzle.getText = function (elem) {\n var node,\n ret = \"\",\n i = 0,\n nodeType = elem.nodeType;\n\n if (!nodeType) {\n // If no nodeType, this is expected to be an array\n while (node = elem[i++]) {\n // Do not traverse comment nodes\n ret += getText(node);\n }\n } else if (nodeType === 1 || nodeType === 9 || nodeType === 11) {\n // Use textContent for elements\n // innerText usage removed for consistency of new lines (jQuery #11153)\n if (typeof elem.textContent === \"string\") {\n return elem.textContent;\n } else {\n // Traverse its children\n for (elem = elem.firstChild; elem; elem = elem.nextSibling) {\n ret += getText(elem);\n }\n }\n } else if (nodeType === 3 || nodeType === 4) {\n return elem.nodeValue;\n } // Do not include comment or processing instruction nodes\n\n\n return ret;\n };\n\n Expr = Sizzle.selectors = {\n // Can be adjusted by the user\n cacheLength: 50,\n createPseudo: markFunction,\n match: matchExpr,\n attrHandle: {},\n find: {},\n relative: {\n \">\": {\n dir: \"parentNode\",\n first: true\n },\n \" \": {\n dir: \"parentNode\"\n },\n \"+\": {\n dir: \"previousSibling\",\n first: true\n },\n \"~\": {\n dir: \"previousSibling\"\n }\n },\n preFilter: {\n \"ATTR\": function ATTR(match) {\n match[1] = match[1].replace(runescape, funescape); // Move the given value to match[3] whether quoted or unquoted\n\n match[3] = (match[3] || match[4] || match[5] || \"\").replace(runescape, funescape);\n\n if (match[2] === \"~=\") {\n match[3] = \" \" + match[3] + \" \";\n }\n\n return match.slice(0, 4);\n },\n \"CHILD\": function CHILD(match) {\n /* matches from matchExpr[\"CHILD\"]\n \t1 type (only|nth|...)\n \t2 what (child|of-type)\n \t3 argument (even|odd|\\d*|\\d*n([+-]\\d+)?|...)\n \t4 xn-component of xn+y argument ([+-]?\\d*n|)\n \t5 sign of xn-component\n \t6 x of xn-component\n \t7 sign of y-component\n \t8 y of y-component\n */\n match[1] = match[1].toLowerCase();\n\n if (match[1].slice(0, 3) === \"nth\") {\n // nth-* requires argument\n if (!match[3]) {\n Sizzle.error(match[0]);\n } // numeric x and y parameters for Expr.filter.CHILD\n // remember that false/true cast respectively to 0/1\n\n\n match[4] = +(match[4] ? match[5] + (match[6] || 1) : 2 * (match[3] === \"even\" || match[3] === \"odd\"));\n match[5] = +(match[7] + match[8] || match[3] === \"odd\"); // other types prohibit arguments\n } else if (match[3]) {\n Sizzle.error(match[0]);\n }\n\n return match;\n },\n \"PSEUDO\": function PSEUDO(match) {\n var excess,\n unquoted = !match[6] && match[2];\n\n if (matchExpr[\"CHILD\"].test(match[0])) {\n return null;\n } // Accept quoted arguments as-is\n\n\n if (match[3]) {\n match[2] = match[4] || match[5] || \"\"; // Strip excess characters from unquoted arguments\n } else if (unquoted && rpseudo.test(unquoted) && ( // Get excess from tokenize (recursively)\n excess = tokenize(unquoted, true)) && ( // advance to the next closing parenthesis\n excess = unquoted.indexOf(\")\", unquoted.length - excess) - unquoted.length)) {\n // excess is a negative index\n match[0] = match[0].slice(0, excess);\n match[2] = unquoted.slice(0, excess);\n } // Return only captures needed by the pseudo filter method (type and argument)\n\n\n return match.slice(0, 3);\n }\n },\n filter: {\n \"TAG\": function TAG(nodeNameSelector) {\n var nodeName = nodeNameSelector.replace(runescape, funescape).toLowerCase();\n return nodeNameSelector === \"*\" ? function () {\n return true;\n } : function (elem) {\n return elem.nodeName && elem.nodeName.toLowerCase() === nodeName;\n };\n },\n \"CLASS\": function CLASS(className) {\n var pattern = classCache[className + \" \"];\n return pattern || (pattern = new RegExp(\"(^|\" + whitespace + \")\" + className + \"(\" + whitespace + \"|$)\")) && classCache(className, function (elem) {\n return pattern.test(typeof elem.className === \"string\" && elem.className || typeof elem.getAttribute !== \"undefined\" && elem.getAttribute(\"class\") || \"\");\n });\n },\n \"ATTR\": function ATTR(name, operator, check) {\n return function (elem) {\n var result = Sizzle.attr(elem, name);\n\n if (result == null) {\n return operator === \"!=\";\n }\n\n if (!operator) {\n return true;\n }\n\n result += \"\";\n /* eslint-disable max-len */\n\n return operator === \"=\" ? result === check : operator === \"!=\" ? result !== check : operator === \"^=\" ? check && result.indexOf(check) === 0 : operator === \"*=\" ? check && result.indexOf(check) > -1 : operator === \"$=\" ? check && result.slice(-check.length) === check : operator === \"~=\" ? (\" \" + result.replace(rwhitespace, \" \") + \" \").indexOf(check) > -1 : operator === \"|=\" ? result === check || result.slice(0, check.length + 1) === check + \"-\" : false;\n /* eslint-enable max-len */\n };\n },\n \"CHILD\": function CHILD(type, what, _argument, first, last) {\n var simple = type.slice(0, 3) !== \"nth\",\n forward = type.slice(-4) !== \"last\",\n ofType = what === \"of-type\";\n return first === 1 && last === 0 ? // Shortcut for :nth-*(n)\n function (elem) {\n return !!elem.parentNode;\n } : function (elem, _context, xml) {\n var cache,\n uniqueCache,\n outerCache,\n node,\n nodeIndex,\n start,\n dir = simple !== forward ? \"nextSibling\" : \"previousSibling\",\n parent = elem.parentNode,\n name = ofType && elem.nodeName.toLowerCase(),\n useCache = !xml && !ofType,\n diff = false;\n\n if (parent) {\n // :(first|last|only)-(child|of-type)\n if (simple) {\n while (dir) {\n node = elem;\n\n while (node = node[dir]) {\n if (ofType ? node.nodeName.toLowerCase() === name : node.nodeType === 1) {\n return false;\n }\n } // Reverse direction for :only-* (if we haven't yet done so)\n\n\n start = dir = type === \"only\" && !start && \"nextSibling\";\n }\n\n return true;\n }\n\n start = [forward ? parent.firstChild : parent.lastChild]; // non-xml :nth-child(...) stores cache data on `parent`\n\n if (forward && useCache) {\n // Seek `elem` from a previously-cached index\n // ...in a gzip-friendly way\n node = parent;\n outerCache = node[expando] || (node[expando] = {}); // Support: IE <9 only\n // Defend against cloned attroperties (jQuery gh-1709)\n\n uniqueCache = outerCache[node.uniqueID] || (outerCache[node.uniqueID] = {});\n cache = uniqueCache[type] || [];\n nodeIndex = cache[0] === dirruns && cache[1];\n diff = nodeIndex && cache[2];\n node = nodeIndex && parent.childNodes[nodeIndex];\n\n while (node = ++nodeIndex && node && node[dir] || ( // Fallback to seeking `elem` from the start\n diff = nodeIndex = 0) || start.pop()) {\n // When found, cache indexes on `parent` and break\n if (node.nodeType === 1 && ++diff && node === elem) {\n uniqueCache[type] = [dirruns, nodeIndex, diff];\n break;\n }\n }\n } else {\n // Use previously-cached element index if available\n if (useCache) {\n // ...in a gzip-friendly way\n node = elem;\n outerCache = node[expando] || (node[expando] = {}); // Support: IE <9 only\n // Defend against cloned attroperties (jQuery gh-1709)\n\n uniqueCache = outerCache[node.uniqueID] || (outerCache[node.uniqueID] = {});\n cache = uniqueCache[type] || [];\n nodeIndex = cache[0] === dirruns && cache[1];\n diff = nodeIndex;\n } // xml :nth-child(...)\n // or :nth-last-child(...) or :nth(-last)?-of-type(...)\n\n\n if (diff === false) {\n // Use the same loop as above to seek `elem` from the start\n while (node = ++nodeIndex && node && node[dir] || (diff = nodeIndex = 0) || start.pop()) {\n if ((ofType ? node.nodeName.toLowerCase() === name : node.nodeType === 1) && ++diff) {\n // Cache the index of each encountered element\n if (useCache) {\n outerCache = node[expando] || (node[expando] = {}); // Support: IE <9 only\n // Defend against cloned attroperties (jQuery gh-1709)\n\n uniqueCache = outerCache[node.uniqueID] || (outerCache[node.uniqueID] = {});\n uniqueCache[type] = [dirruns, diff];\n }\n\n if (node === elem) {\n break;\n }\n }\n }\n }\n } // Incorporate the offset, then check against cycle size\n\n\n diff -= last;\n return diff === first || diff % first === 0 && diff / first >= 0;\n }\n };\n },\n \"PSEUDO\": function PSEUDO(pseudo, argument) {\n // pseudo-class names are case-insensitive\n // http://www.w3.org/TR/selectors/#pseudo-classes\n // Prioritize by case sensitivity in case custom pseudos are added with uppercase letters\n // Remember that setFilters inherits from pseudos\n var args,\n fn = Expr.pseudos[pseudo] || Expr.setFilters[pseudo.toLowerCase()] || Sizzle.error(\"unsupported pseudo: \" + pseudo); // The user may use createPseudo to indicate that\n // arguments are needed to create the filter function\n // just as Sizzle does\n\n if (fn[expando]) {\n return fn(argument);\n } // But maintain support for old signatures\n\n\n if (fn.length > 1) {\n args = [pseudo, pseudo, \"\", argument];\n return Expr.setFilters.hasOwnProperty(pseudo.toLowerCase()) ? markFunction(function (seed, matches) {\n var idx,\n matched = fn(seed, argument),\n i = matched.length;\n\n while (i--) {\n idx = indexOf(seed, matched[i]);\n seed[idx] = !(matches[idx] = matched[i]);\n }\n }) : function (elem) {\n return fn(elem, 0, args);\n };\n }\n\n return fn;\n }\n },\n pseudos: {\n // Potentially complex pseudos\n \"not\": markFunction(function (selector) {\n // Trim the selector passed to compile\n // to avoid treating leading and trailing\n // spaces as combinators\n var input = [],\n results = [],\n matcher = compile(selector.replace(rtrim, \"$1\"));\n return matcher[expando] ? markFunction(function (seed, matches, _context, xml) {\n var elem,\n unmatched = matcher(seed, null, xml, []),\n i = seed.length; // Match elements unmatched by `matcher`\n\n while (i--) {\n if (elem = unmatched[i]) {\n seed[i] = !(matches[i] = elem);\n }\n }\n }) : function (elem, _context, xml) {\n input[0] = elem;\n matcher(input, null, xml, results); // Don't keep the element (issue #299)\n\n input[0] = null;\n return !results.pop();\n };\n }),\n \"has\": markFunction(function (selector) {\n return function (elem) {\n return Sizzle(selector, elem).length > 0;\n };\n }),\n \"contains\": markFunction(function (text) {\n text = text.replace(runescape, funescape);\n return function (elem) {\n return (elem.textContent || getText(elem)).indexOf(text) > -1;\n };\n }),\n // \"Whether an element is represented by a :lang() selector\n // is based solely on the element's language value\n // being equal to the identifier C,\n // or beginning with the identifier C immediately followed by \"-\".\n // The matching of C against the element's language value is performed case-insensitively.\n // The identifier C does not have to be a valid language name.\"\n // http://www.w3.org/TR/selectors/#lang-pseudo\n \"lang\": markFunction(function (lang) {\n // lang value must be a valid identifier\n if (!ridentifier.test(lang || \"\")) {\n Sizzle.error(\"unsupported lang: \" + lang);\n }\n\n lang = lang.replace(runescape, funescape).toLowerCase();\n return function (elem) {\n var elemLang;\n\n do {\n if (elemLang = documentIsHTML ? elem.lang : elem.getAttribute(\"xml:lang\") || elem.getAttribute(\"lang\")) {\n elemLang = elemLang.toLowerCase();\n return elemLang === lang || elemLang.indexOf(lang + \"-\") === 0;\n }\n } while ((elem = elem.parentNode) && elem.nodeType === 1);\n\n return false;\n };\n }),\n // Miscellaneous\n \"target\": function target(elem) {\n var hash = window.location && window.location.hash;\n return hash && hash.slice(1) === elem.id;\n },\n \"root\": function root(elem) {\n return elem === docElem;\n },\n \"focus\": function focus(elem) {\n return elem === document.activeElement && (!document.hasFocus || document.hasFocus()) && !!(elem.type || elem.href || ~elem.tabIndex);\n },\n // Boolean properties\n \"enabled\": createDisabledPseudo(false),\n \"disabled\": createDisabledPseudo(true),\n \"checked\": function checked(elem) {\n // In CSS3, :checked should return both checked and selected elements\n // http://www.w3.org/TR/2011/REC-css3-selectors-20110929/#checked\n var nodeName = elem.nodeName.toLowerCase();\n return nodeName === \"input\" && !!elem.checked || nodeName === \"option\" && !!elem.selected;\n },\n \"selected\": function selected(elem) {\n // Accessing this property makes selected-by-default\n // options in Safari work properly\n if (elem.parentNode) {\n // eslint-disable-next-line no-unused-expressions\n elem.parentNode.selectedIndex;\n }\n\n return elem.selected === true;\n },\n // Contents\n \"empty\": function empty(elem) {\n // http://www.w3.org/TR/selectors/#empty-pseudo\n // :empty is negated by element (1) or content nodes (text: 3; cdata: 4; entity ref: 5),\n // but not by others (comment: 8; processing instruction: 7; etc.)\n // nodeType < 6 works because attributes (2) do not appear as children\n for (elem = elem.firstChild; elem; elem = elem.nextSibling) {\n if (elem.nodeType < 6) {\n return false;\n }\n }\n\n return true;\n },\n \"parent\": function parent(elem) {\n return !Expr.pseudos[\"empty\"](elem);\n },\n // Element/input types\n \"header\": function header(elem) {\n return rheader.test(elem.nodeName);\n },\n \"input\": function input(elem) {\n return rinputs.test(elem.nodeName);\n },\n \"button\": function button(elem) {\n var name = elem.nodeName.toLowerCase();\n return name === \"input\" && elem.type === \"button\" || name === \"button\";\n },\n \"text\": function text(elem) {\n var attr;\n return elem.nodeName.toLowerCase() === \"input\" && elem.type === \"text\" && ( // Support: IE<8\n // New HTML5 attribute values (e.g., \"search\") appear with elem.type === \"text\"\n (attr = elem.getAttribute(\"type\")) == null || attr.toLowerCase() === \"text\");\n },\n // Position-in-collection\n \"first\": createPositionalPseudo(function () {\n return [0];\n }),\n \"last\": createPositionalPseudo(function (_matchIndexes, length) {\n return [length - 1];\n }),\n \"eq\": createPositionalPseudo(function (_matchIndexes, length, argument) {\n return [argument < 0 ? argument + length : argument];\n }),\n \"even\": createPositionalPseudo(function (matchIndexes, length) {\n var i = 0;\n\n for (; i < length; i += 2) {\n matchIndexes.push(i);\n }\n\n return matchIndexes;\n }),\n \"odd\": createPositionalPseudo(function (matchIndexes, length) {\n var i = 1;\n\n for (; i < length; i += 2) {\n matchIndexes.push(i);\n }\n\n return matchIndexes;\n }),\n \"lt\": createPositionalPseudo(function (matchIndexes, length, argument) {\n var i = argument < 0 ? argument + length : argument > length ? length : argument;\n\n for (; --i >= 0;) {\n matchIndexes.push(i);\n }\n\n return matchIndexes;\n }),\n \"gt\": createPositionalPseudo(function (matchIndexes, length, argument) {\n var i = argument < 0 ? argument + length : argument;\n\n for (; ++i < length;) {\n matchIndexes.push(i);\n }\n\n return matchIndexes;\n })\n }\n };\n Expr.pseudos[\"nth\"] = Expr.pseudos[\"eq\"]; // Add button/input type pseudos\n\n for (i in {\n radio: true,\n checkbox: true,\n file: true,\n password: true,\n image: true\n }) {\n Expr.pseudos[i] = createInputPseudo(i);\n }\n\n for (i in {\n submit: true,\n reset: true\n }) {\n Expr.pseudos[i] = createButtonPseudo(i);\n } // Easy API for creating new setFilters\n\n\n function setFilters() {}\n\n setFilters.prototype = Expr.filters = Expr.pseudos;\n Expr.setFilters = new setFilters();\n\n tokenize = Sizzle.tokenize = function (selector, parseOnly) {\n var matched,\n match,\n tokens,\n type,\n soFar,\n groups,\n preFilters,\n cached = tokenCache[selector + \" \"];\n\n if (cached) {\n return parseOnly ? 0 : cached.slice(0);\n }\n\n soFar = selector;\n groups = [];\n preFilters = Expr.preFilter;\n\n while (soFar) {\n // Comma and first run\n if (!matched || (match = rcomma.exec(soFar))) {\n if (match) {\n // Don't consume trailing commas as valid\n soFar = soFar.slice(match[0].length) || soFar;\n }\n\n groups.push(tokens = []);\n }\n\n matched = false; // Combinators\n\n if (match = rcombinators.exec(soFar)) {\n matched = match.shift();\n tokens.push({\n value: matched,\n // Cast descendant combinators to space\n type: match[0].replace(rtrim, \" \")\n });\n soFar = soFar.slice(matched.length);\n } // Filters\n\n\n for (type in Expr.filter) {\n if ((match = matchExpr[type].exec(soFar)) && (!preFilters[type] || (match = preFilters[type](match)))) {\n matched = match.shift();\n tokens.push({\n value: matched,\n type: type,\n matches: match\n });\n soFar = soFar.slice(matched.length);\n }\n }\n\n if (!matched) {\n break;\n }\n } // Return the length of the invalid excess\n // if we're just parsing\n // Otherwise, throw an error or return tokens\n\n\n return parseOnly ? soFar.length : soFar ? Sizzle.error(selector) : // Cache the tokens\n tokenCache(selector, groups).slice(0);\n };\n\n function toSelector(tokens) {\n var i = 0,\n len = tokens.length,\n selector = \"\";\n\n for (; i < len; i++) {\n selector += tokens[i].value;\n }\n\n return selector;\n }\n\n function addCombinator(matcher, combinator, base) {\n var dir = combinator.dir,\n skip = combinator.next,\n key = skip || dir,\n checkNonElements = base && key === \"parentNode\",\n doneName = done++;\n return combinator.first ? // Check against closest ancestor/preceding element\n function (elem, context, xml) {\n while (elem = elem[dir]) {\n if (elem.nodeType === 1 || checkNonElements) {\n return matcher(elem, context, xml);\n }\n }\n\n return false;\n } : // Check against all ancestor/preceding elements\n function (elem, context, xml) {\n var oldCache,\n uniqueCache,\n outerCache,\n newCache = [dirruns, doneName]; // We can't set arbitrary data on XML nodes, so they don't benefit from combinator caching\n\n if (xml) {\n while (elem = elem[dir]) {\n if (elem.nodeType === 1 || checkNonElements) {\n if (matcher(elem, context, xml)) {\n return true;\n }\n }\n }\n } else {\n while (elem = elem[dir]) {\n if (elem.nodeType === 1 || checkNonElements) {\n outerCache = elem[expando] || (elem[expando] = {}); // Support: IE <9 only\n // Defend against cloned attroperties (jQuery gh-1709)\n\n uniqueCache = outerCache[elem.uniqueID] || (outerCache[elem.uniqueID] = {});\n\n if (skip && skip === elem.nodeName.toLowerCase()) {\n elem = elem[dir] || elem;\n } else if ((oldCache = uniqueCache[key]) && oldCache[0] === dirruns && oldCache[1] === doneName) {\n // Assign to newCache so results back-propagate to previous elements\n return newCache[2] = oldCache[2];\n } else {\n // Reuse newcache so results back-propagate to previous elements\n uniqueCache[key] = newCache; // A match means we're done; a fail means we have to keep checking\n\n if (newCache[2] = matcher(elem, context, xml)) {\n return true;\n }\n }\n }\n }\n }\n\n return false;\n };\n }\n\n function elementMatcher(matchers) {\n return matchers.length > 1 ? function (elem, context, xml) {\n var i = matchers.length;\n\n while (i--) {\n if (!matchers[i](elem, context, xml)) {\n return false;\n }\n }\n\n return true;\n } : matchers[0];\n }\n\n function multipleContexts(selector, contexts, results) {\n var i = 0,\n len = contexts.length;\n\n for (; i < len; i++) {\n Sizzle(selector, contexts[i], results);\n }\n\n return results;\n }\n\n function condense(unmatched, map, filter, context, xml) {\n var elem,\n newUnmatched = [],\n i = 0,\n len = unmatched.length,\n mapped = map != null;\n\n for (; i < len; i++) {\n if (elem = unmatched[i]) {\n if (!filter || filter(elem, context, xml)) {\n newUnmatched.push(elem);\n\n if (mapped) {\n map.push(i);\n }\n }\n }\n }\n\n return newUnmatched;\n }\n\n function setMatcher(preFilter, selector, matcher, postFilter, postFinder, postSelector) {\n if (postFilter && !postFilter[expando]) {\n postFilter = setMatcher(postFilter);\n }\n\n if (postFinder && !postFinder[expando]) {\n postFinder = setMatcher(postFinder, postSelector);\n }\n\n return markFunction(function (seed, results, context, xml) {\n var temp,\n i,\n elem,\n preMap = [],\n postMap = [],\n preexisting = results.length,\n // Get initial elements from seed or context\n elems = seed || multipleContexts(selector || \"*\", context.nodeType ? [context] : context, []),\n // Prefilter to get matcher input, preserving a map for seed-results synchronization\n matcherIn = preFilter && (seed || !selector) ? condense(elems, preMap, preFilter, context, xml) : elems,\n matcherOut = matcher ? // If we have a postFinder, or filtered seed, or non-seed postFilter or preexisting results,\n postFinder || (seed ? preFilter : preexisting || postFilter) ? // ...intermediate processing is necessary\n [] : // ...otherwise use results directly\n results : matcherIn; // Find primary matches\n\n if (matcher) {\n matcher(matcherIn, matcherOut, context, xml);\n } // Apply postFilter\n\n\n if (postFilter) {\n temp = condense(matcherOut, postMap);\n postFilter(temp, [], context, xml); // Un-match failing elements by moving them back to matcherIn\n\n i = temp.length;\n\n while (i--) {\n if (elem = temp[i]) {\n matcherOut[postMap[i]] = !(matcherIn[postMap[i]] = elem);\n }\n }\n }\n\n if (seed) {\n if (postFinder || preFilter) {\n if (postFinder) {\n // Get the final matcherOut by condensing this intermediate into postFinder contexts\n temp = [];\n i = matcherOut.length;\n\n while (i--) {\n if (elem = matcherOut[i]) {\n // Restore matcherIn since elem is not yet a final match\n temp.push(matcherIn[i] = elem);\n }\n }\n\n postFinder(null, matcherOut = [], temp, xml);\n } // Move matched elements from seed to results to keep them synchronized\n\n\n i = matcherOut.length;\n\n while (i--) {\n if ((elem = matcherOut[i]) && (temp = postFinder ? indexOf(seed, elem) : preMap[i]) > -1) {\n seed[temp] = !(results[temp] = elem);\n }\n }\n } // Add elements to results, through postFinder if defined\n\n } else {\n matcherOut = condense(matcherOut === results ? matcherOut.splice(preexisting, matcherOut.length) : matcherOut);\n\n if (postFinder) {\n postFinder(null, results, matcherOut, xml);\n } else {\n push.apply(results, matcherOut);\n }\n }\n });\n }\n\n function matcherFromTokens(tokens) {\n var checkContext,\n matcher,\n j,\n len = tokens.length,\n leadingRelative = Expr.relative[tokens[0].type],\n implicitRelative = leadingRelative || Expr.relative[\" \"],\n i = leadingRelative ? 1 : 0,\n // The foundational matcher ensures that elements are reachable from top-level context(s)\n matchContext = addCombinator(function (elem) {\n return elem === checkContext;\n }, implicitRelative, true),\n matchAnyContext = addCombinator(function (elem) {\n return indexOf(checkContext, elem) > -1;\n }, implicitRelative, true),\n matchers = [function (elem, context, xml) {\n var ret = !leadingRelative && (xml || context !== outermostContext) || ((checkContext = context).nodeType ? matchContext(elem, context, xml) : matchAnyContext(elem, context, xml)); // Avoid hanging onto element (issue #299)\n\n checkContext = null;\n return ret;\n }];\n\n for (; i < len; i++) {\n if (matcher = Expr.relative[tokens[i].type]) {\n matchers = [addCombinator(elementMatcher(matchers), matcher)];\n } else {\n matcher = Expr.filter[tokens[i].type].apply(null, tokens[i].matches); // Return special upon seeing a positional matcher\n\n if (matcher[expando]) {\n // Find the next relative operator (if any) for proper handling\n j = ++i;\n\n for (; j < len; j++) {\n if (Expr.relative[tokens[j].type]) {\n break;\n }\n }\n\n return setMatcher(i > 1 && elementMatcher(matchers), i > 1 && toSelector( // If the preceding token was a descendant combinator, insert an implicit any-element `*`\n tokens.slice(0, i - 1).concat({\n value: tokens[i - 2].type === \" \" ? \"*\" : \"\"\n })).replace(rtrim, \"$1\"), matcher, i < j && matcherFromTokens(tokens.slice(i, j)), j < len && matcherFromTokens(tokens = tokens.slice(j)), j < len && toSelector(tokens));\n }\n\n matchers.push(matcher);\n }\n }\n\n return elementMatcher(matchers);\n }\n\n function matcherFromGroupMatchers(elementMatchers, setMatchers) {\n var bySet = setMatchers.length > 0,\n byElement = elementMatchers.length > 0,\n superMatcher = function superMatcher(seed, context, xml, results, outermost) {\n var elem,\n j,\n matcher,\n matchedCount = 0,\n i = \"0\",\n unmatched = seed && [],\n setMatched = [],\n contextBackup = outermostContext,\n // We must always have either seed elements or outermost context\n elems = seed || byElement && Expr.find[\"TAG\"](\"*\", outermost),\n // Use integer dirruns iff this is the outermost matcher\n dirrunsUnique = dirruns += contextBackup == null ? 1 : Math.random() || 0.1,\n len = elems.length;\n\n if (outermost) {\n // Support: IE 11+, Edge 17 - 18+\n // IE/Edge sometimes throw a \"Permission denied\" error when strict-comparing\n // two documents; shallow comparisons work.\n // eslint-disable-next-line eqeqeq\n outermostContext = context == document || context || outermost;\n } // Add elements passing elementMatchers directly to results\n // Support: IE<9, Safari\n // Tolerate NodeList properties (IE: \"length\"; Safari: <number>) matching elements by id\n\n\n for (; i !== len && (elem = elems[i]) != null; i++) {\n if (byElement && elem) {\n j = 0; // Support: IE 11+, Edge 17 - 18+\n // IE/Edge sometimes throw a \"Permission denied\" error when strict-comparing\n // two documents; shallow comparisons work.\n // eslint-disable-next-line eqeqeq\n\n if (!context && elem.ownerDocument != document) {\n setDocument(elem);\n xml = !documentIsHTML;\n }\n\n while (matcher = elementMatchers[j++]) {\n if (matcher(elem, context || document, xml)) {\n results.push(elem);\n break;\n }\n }\n\n if (outermost) {\n dirruns = dirrunsUnique;\n }\n } // Track unmatched elements for set filters\n\n\n if (bySet) {\n // They will have gone through all possible matchers\n if (elem = !matcher && elem) {\n matchedCount--;\n } // Lengthen the array for every element, matched or not\n\n\n if (seed) {\n unmatched.push(elem);\n }\n }\n } // `i` is now the count of elements visited above, and adding it to `matchedCount`\n // makes the latter nonnegative.\n\n\n matchedCount += i; // Apply set filters to unmatched elements\n // NOTE: This can be skipped if there are no unmatched elements (i.e., `matchedCount`\n // equals `i`), unless we didn't visit _any_ elements in the above loop because we have\n // no element matchers and no seed.\n // Incrementing an initially-string \"0\" `i` allows `i` to remain a string only in that\n // case, which will result in a \"00\" `matchedCount` that differs from `i` but is also\n // numerically zero.\n\n if (bySet && i !== matchedCount) {\n j = 0;\n\n while (matcher = setMatchers[j++]) {\n matcher(unmatched, setMatched, context, xml);\n }\n\n if (seed) {\n // Reintegrate element matches to eliminate the need for sorting\n if (matchedCount > 0) {\n while (i--) {\n if (!(unmatched[i] || setMatched[i])) {\n setMatched[i] = pop.call(results);\n }\n }\n } // Discard index placeholder values to get only actual matches\n\n\n setMatched = condense(setMatched);\n } // Add matches to results\n\n\n push.apply(results, setMatched); // Seedless set matches succeeding multiple successful matchers stipulate sorting\n\n if (outermost && !seed && setMatched.length > 0 && matchedCount + setMatchers.length > 1) {\n Sizzle.uniqueSort(results);\n }\n } // Override manipulation of globals by nested matchers\n\n\n if (outermost) {\n dirruns = dirrunsUnique;\n outermostContext = contextBackup;\n }\n\n return unmatched;\n };\n\n return bySet ? markFunction(superMatcher) : superMatcher;\n }\n\n compile = Sizzle.compile = function (selector, match\n /* Internal Use Only */\n ) {\n var i,\n setMatchers = [],\n elementMatchers = [],\n cached = compilerCache[selector + \" \"];\n\n if (!cached) {\n // Generate a function of recursive functions that can be used to check each element\n if (!match) {\n match = tokenize(selector);\n }\n\n i = match.length;\n\n while (i--) {\n cached = matcherFromTokens(match[i]);\n\n if (cached[expando]) {\n setMatchers.push(cached);\n } else {\n elementMatchers.push(cached);\n }\n } // Cache the compiled function\n\n\n cached = compilerCache(selector, matcherFromGroupMatchers(elementMatchers, setMatchers)); // Save selector and tokenization\n\n cached.selector = selector;\n }\n\n return cached;\n };\n /**\n * A low-level selection function that works with Sizzle's compiled\n * selector functions\n * @param {String|Function} selector A selector or a pre-compiled\n * selector function built with Sizzle.compile\n * @param {Element} context\n * @param {Array} [results]\n * @param {Array} [seed] A set of elements to match against\n */\n\n\n select = Sizzle.select = function (selector, context, results, seed) {\n var i,\n tokens,\n token,\n type,\n find,\n compiled = typeof selector === \"function\" && selector,\n match = !seed && tokenize(selector = compiled.selector || selector);\n results = results || []; // Try to minimize operations if there is only one selector in the list and no seed\n // (the latter of which guarantees us context)\n\n if (match.length === 1) {\n // Reduce context if the leading compound selector is an ID\n tokens = match[0] = match[0].slice(0);\n\n if (tokens.length > 2 && (token = tokens[0]).type === \"ID\" && context.nodeType === 9 && documentIsHTML && Expr.relative[tokens[1].type]) {\n context = (Expr.find[\"ID\"](token.matches[0].replace(runescape, funescape), context) || [])[0];\n\n if (!context) {\n return results; // Precompiled matchers will still verify ancestry, so step up a level\n } else if (compiled) {\n context = context.parentNode;\n }\n\n selector = selector.slice(tokens.shift().value.length);\n } // Fetch a seed set for right-to-left matching\n\n\n i = matchExpr[\"needsContext\"].test(selector) ? 0 : tokens.length;\n\n while (i--) {\n token = tokens[i]; // Abort if we hit a combinator\n\n if (Expr.relative[type = token.type]) {\n break;\n }\n\n if (find = Expr.find[type]) {\n // Search, expanding context for leading sibling combinators\n if (seed = find(token.matches[0].replace(runescape, funescape), rsibling.test(tokens[0].type) && testContext(context.parentNode) || context)) {\n // If seed is empty or no tokens remain, we can return early\n tokens.splice(i, 1);\n selector = seed.length && toSelector(tokens);\n\n if (!selector) {\n push.apply(results, seed);\n return results;\n }\n\n break;\n }\n }\n }\n } // Compile and execute a filtering function if one is not provided\n // Provide `match` to avoid retokenization if we modified the selector above\n\n\n (compiled || compile(selector, match))(seed, context, !documentIsHTML, results, !context || rsibling.test(selector) && testContext(context.parentNode) || context);\n return results;\n }; // One-time assignments\n // Sort stability\n\n\n support.sortStable = expando.split(\"\").sort(sortOrder).join(\"\") === expando; // Support: Chrome 14-35+\n // Always assume duplicates if they aren't passed to the comparison function\n\n support.detectDuplicates = !!hasDuplicate; // Initialize against the default document\n\n setDocument(); // Support: Webkit<537.32 - Safari 6.0.3/Chrome 25 (fixed in Chrome 27)\n // Detached nodes confoundingly follow *each other*\n\n support.sortDetached = assert(function (el) {\n // Should return 1, but returns 4 (following)\n return el.compareDocumentPosition(document.createElement(\"fieldset\")) & 1;\n }); // Support: IE<8\n // Prevent attribute/property \"interpolation\"\n // https://msdn.microsoft.com/en-us/library/ms536429%28VS.85%29.aspx\n\n if (!assert(function (el) {\n el.innerHTML = \"<a href='#'></a>\";\n return el.firstChild.getAttribute(\"href\") === \"#\";\n })) {\n addHandle(\"type|href|height|width\", function (elem, name, isXML) {\n if (!isXML) {\n return elem.getAttribute(name, name.toLowerCase() === \"type\" ? 1 : 2);\n }\n });\n } // Support: IE<9\n // Use defaultValue in place of getAttribute(\"value\")\n\n\n if (!support.attributes || !assert(function (el) {\n el.innerHTML = \"<input/>\";\n el.firstChild.setAttribute(\"value\", \"\");\n return el.firstChild.getAttribute(\"value\") === \"\";\n })) {\n addHandle(\"value\", function (elem, _name, isXML) {\n if (!isXML && elem.nodeName.toLowerCase() === \"input\") {\n return elem.defaultValue;\n }\n });\n } // Support: IE<9\n // Use getAttributeNode to fetch booleans when getAttribute lies\n\n\n if (!assert(function (el) {\n return el.getAttribute(\"disabled\") == null;\n })) {\n addHandle(booleans, function (elem, name, isXML) {\n var val;\n\n if (!isXML) {\n return elem[name] === true ? name.toLowerCase() : (val = elem.getAttributeNode(name)) && val.specified ? val.value : null;\n }\n });\n }\n\n return Sizzle;\n }(window);\n\n jQuery.find = Sizzle;\n jQuery.expr = Sizzle.selectors; // Deprecated\n\n jQuery.expr[\":\"] = jQuery.expr.pseudos;\n jQuery.uniqueSort = jQuery.unique = Sizzle.uniqueSort;\n jQuery.text = Sizzle.getText;\n jQuery.isXMLDoc = Sizzle.isXML;\n jQuery.contains = Sizzle.contains;\n jQuery.escapeSelector = Sizzle.escape;\n\n var dir = function dir(elem, _dir, until) {\n var matched = [],\n truncate = until !== undefined;\n\n while ((elem = elem[_dir]) && elem.nodeType !== 9) {\n if (elem.nodeType === 1) {\n if (truncate && jQuery(elem).is(until)) {\n break;\n }\n\n matched.push(elem);\n }\n }\n\n return matched;\n };\n\n var _siblings = function siblings(n, elem) {\n var matched = [];\n\n for (; n; n = n.nextSibling) {\n if (n.nodeType === 1 && n !== elem) {\n matched.push(n);\n }\n }\n\n return matched;\n };\n\n var rneedsContext = jQuery.expr.match.needsContext;\n\n function nodeName(elem, name) {\n return elem.nodeName && elem.nodeName.toLowerCase() === name.toLowerCase();\n }\n\n var rsingleTag = /^<([a-z][^\\/\\0>:\\x20\\t\\r\\n\\f]*)[\\x20\\t\\r\\n\\f]*\\/?>(?:<\\/\\1>|)$/i; // Implement the identical functionality for filter and not\n\n function winnow(elements, qualifier, not) {\n if (isFunction(qualifier)) {\n return jQuery.grep(elements, function (elem, i) {\n return !!qualifier.call(elem, i, elem) !== not;\n });\n } // Single element\n\n\n if (qualifier.nodeType) {\n return jQuery.grep(elements, function (elem) {\n return elem === qualifier !== not;\n });\n } // Arraylike of elements (jQuery, arguments, Array)\n\n\n if (typeof qualifier !== \"string\") {\n return jQuery.grep(elements, function (elem) {\n return indexOf.call(qualifier, elem) > -1 !== not;\n });\n } // Filtered directly for both simple and complex selectors\n\n\n return jQuery.filter(qualifier, elements, not);\n }\n\n jQuery.filter = function (expr, elems, not) {\n var elem = elems[0];\n\n if (not) {\n expr = \":not(\" + expr + \")\";\n }\n\n if (elems.length === 1 && elem.nodeType === 1) {\n return jQuery.find.matchesSelector(elem, expr) ? [elem] : [];\n }\n\n return jQuery.find.matches(expr, jQuery.grep(elems, function (elem) {\n return elem.nodeType === 1;\n }));\n };\n\n jQuery.fn.extend({\n find: function find(selector) {\n var i,\n ret,\n len = this.length,\n self = this;\n\n if (typeof selector !== \"string\") {\n return this.pushStack(jQuery(selector).filter(function () {\n for (i = 0; i < len; i++) {\n if (jQuery.contains(self[i], this)) {\n return true;\n }\n }\n }));\n }\n\n ret = this.pushStack([]);\n\n for (i = 0; i < len; i++) {\n jQuery.find(selector, self[i], ret);\n }\n\n return len > 1 ? jQuery.uniqueSort(ret) : ret;\n },\n filter: function filter(selector) {\n return this.pushStack(winnow(this, selector || [], false));\n },\n not: function not(selector) {\n return this.pushStack(winnow(this, selector || [], true));\n },\n is: function is(selector) {\n return !!winnow(this, // If this is a positional/relative selector, check membership in the returned set\n // so $(\"p:first\").is(\"p:last\") won't return true for a doc with two \"p\".\n typeof selector === \"string\" && rneedsContext.test(selector) ? jQuery(selector) : selector || [], false).length;\n }\n }); // Initialize a jQuery object\n // A central reference to the root jQuery(document)\n\n var rootjQuery,\n // A simple way to check for HTML strings\n // Prioritize #id over <tag> to avoid XSS via location.hash (trac-9521)\n // Strict HTML recognition (trac-11290: must start with <)\n // Shortcut simple #id case for speed\n rquickExpr = /^(?:\\s*(<[\\w\\W]+>)[^>]*|#([\\w-]+))$/,\n init = jQuery.fn.init = function (selector, context, root) {\n var match, elem; // HANDLE: $(\"\"), $(null), $(undefined), $(false)\n\n if (!selector) {\n return this;\n } // Method init() accepts an alternate rootjQuery\n // so migrate can support jQuery.sub (gh-2101)\n\n\n root = root || rootjQuery; // Handle HTML strings\n\n if (typeof selector === \"string\") {\n if (selector[0] === \"<\" && selector[selector.length - 1] === \">\" && selector.length >= 3) {\n // Assume that strings that start and end with <> are HTML and skip the regex check\n match = [null, selector, null];\n } else {\n match = rquickExpr.exec(selector);\n } // Match html or make sure no context is specified for #id\n\n\n if (match && (match[1] || !context)) {\n // HANDLE: $(html) -> $(array)\n if (match[1]) {\n context = context instanceof jQuery ? context[0] : context; // Option to run scripts is true for back-compat\n // Intentionally let the error be thrown if parseHTML is not present\n\n jQuery.merge(this, jQuery.parseHTML(match[1], context && context.nodeType ? context.ownerDocument || context : document, true)); // HANDLE: $(html, props)\n\n if (rsingleTag.test(match[1]) && jQuery.isPlainObject(context)) {\n for (match in context) {\n // Properties of context are called as methods if possible\n if (isFunction(this[match])) {\n this[match](context[match]); // ...and otherwise set as attributes\n } else {\n this.attr(match, context[match]);\n }\n }\n }\n\n return this; // HANDLE: $(#id)\n } else {\n elem = document.getElementById(match[2]);\n\n if (elem) {\n // Inject the element directly into the jQuery object\n this[0] = elem;\n this.length = 1;\n }\n\n return this;\n } // HANDLE: $(expr, $(...))\n\n } else if (!context || context.jquery) {\n return (context || root).find(selector); // HANDLE: $(expr, context)\n // (which is just equivalent to: $(context).find(expr)\n } else {\n return this.constructor(context).find(selector);\n } // HANDLE: $(DOMElement)\n\n } else if (selector.nodeType) {\n this[0] = selector;\n this.length = 1;\n return this; // HANDLE: $(function)\n // Shortcut for document ready\n } else if (isFunction(selector)) {\n return root.ready !== undefined ? root.ready(selector) : // Execute immediately if ready is not present\n selector(jQuery);\n }\n\n return jQuery.makeArray(selector, this);\n }; // Give the init function the jQuery prototype for later instantiation\n\n\n init.prototype = jQuery.fn; // Initialize central reference\n\n rootjQuery = jQuery(document);\n var rparentsprev = /^(?:parents|prev(?:Until|All))/,\n // Methods guaranteed to produce a unique set when starting from a unique set\n guaranteedUnique = {\n children: true,\n contents: true,\n next: true,\n prev: true\n };\n jQuery.fn.extend({\n has: function has(target) {\n var targets = jQuery(target, this),\n l = targets.length;\n return this.filter(function () {\n var i = 0;\n\n for (; i < l; i++) {\n if (jQuery.contains(this, targets[i])) {\n return true;\n }\n }\n });\n },\n closest: function closest(selectors, context) {\n var cur,\n i = 0,\n l = this.length,\n matched = [],\n targets = typeof selectors !== \"string\" && jQuery(selectors); // Positional selectors never match, since there's no _selection_ context\n\n if (!rneedsContext.test(selectors)) {\n for (; i < l; i++) {\n for (cur = this[i]; cur && cur !== context; cur = cur.parentNode) {\n // Always skip document fragments\n if (cur.nodeType < 11 && (targets ? targets.index(cur) > -1 : // Don't pass non-elements to Sizzle\n cur.nodeType === 1 && jQuery.find.matchesSelector(cur, selectors))) {\n matched.push(cur);\n break;\n }\n }\n }\n }\n\n return this.pushStack(matched.length > 1 ? jQuery.uniqueSort(matched) : matched);\n },\n // Determine the position of an element within the set\n index: function index(elem) {\n // No argument, return index in parent\n if (!elem) {\n return this[0] && this[0].parentNode ? this.first().prevAll().length : -1;\n } // Index in selector\n\n\n if (typeof elem === \"string\") {\n return indexOf.call(jQuery(elem), this[0]);\n } // Locate the position of the desired element\n\n\n return indexOf.call(this, // If it receives a jQuery object, the first element is used\n elem.jquery ? elem[0] : elem);\n },\n add: function add(selector, context) {\n return this.pushStack(jQuery.uniqueSort(jQuery.merge(this.get(), jQuery(selector, context))));\n },\n addBack: function addBack(selector) {\n return this.add(selector == null ? this.prevObject : this.prevObject.filter(selector));\n }\n });\n\n function sibling(cur, dir) {\n while ((cur = cur[dir]) && cur.nodeType !== 1) {}\n\n return cur;\n }\n\n jQuery.each({\n parent: function parent(elem) {\n var parent = elem.parentNode;\n return parent && parent.nodeType !== 11 ? parent : null;\n },\n parents: function parents(elem) {\n return dir(elem, \"parentNode\");\n },\n parentsUntil: function parentsUntil(elem, _i, until) {\n return dir(elem, \"parentNode\", until);\n },\n next: function next(elem) {\n return sibling(elem, \"nextSibling\");\n },\n prev: function prev(elem) {\n return sibling(elem, \"previousSibling\");\n },\n nextAll: function nextAll(elem) {\n return dir(elem, \"nextSibling\");\n },\n prevAll: function prevAll(elem) {\n return dir(elem, \"previousSibling\");\n },\n nextUntil: function nextUntil(elem, _i, until) {\n return dir(elem, \"nextSibling\", until);\n },\n prevUntil: function prevUntil(elem, _i, until) {\n return dir(elem, \"previousSibling\", until);\n },\n siblings: function siblings(elem) {\n return _siblings((elem.parentNode || {}).firstChild, elem);\n },\n children: function children(elem) {\n return _siblings(elem.firstChild);\n },\n contents: function contents(elem) {\n if (elem.contentDocument != null && // Support: IE 11+\n // <object> elements with no `data` attribute has an object\n // `contentDocument` with a `null` prototype.\n getProto(elem.contentDocument)) {\n return elem.contentDocument;\n } // Support: IE 9 - 11 only, iOS 7 only, Android Browser <=4.3 only\n // Treat the template element as a regular one in browsers that\n // don't support it.\n\n\n if (nodeName(elem, \"template\")) {\n elem = elem.content || elem;\n }\n\n return jQuery.merge([], elem.childNodes);\n }\n }, function (name, fn) {\n jQuery.fn[name] = function (until, selector) {\n var matched = jQuery.map(this, fn, until);\n\n if (name.slice(-5) !== \"Until\") {\n selector = until;\n }\n\n if (selector && typeof selector === \"string\") {\n matched = jQuery.filter(selector, matched);\n }\n\n if (this.length > 1) {\n // Remove duplicates\n if (!guaranteedUnique[name]) {\n jQuery.uniqueSort(matched);\n } // Reverse order for parents* and prev-derivatives\n\n\n if (rparentsprev.test(name)) {\n matched.reverse();\n }\n }\n\n return this.pushStack(matched);\n };\n });\n var rnothtmlwhite = /[^\\x20\\t\\r\\n\\f]+/g; // Convert String-formatted options into Object-formatted ones\n\n function createOptions(options) {\n var object = {};\n jQuery.each(options.match(rnothtmlwhite) || [], function (_, flag) {\n object[flag] = true;\n });\n return object;\n }\n /*\n * Create a callback list using the following parameters:\n *\n *\toptions: an optional list of space-separated options that will change how\n *\t\t\tthe callback list behaves or a more traditional option object\n *\n * By default a callback list will act like an event callback list and can be\n * \"fired\" multiple times.\n *\n * Possible options:\n *\n *\tonce:\t\t\twill ensure the callback list can only be fired once (like a Deferred)\n *\n *\tmemory:\t\t\twill keep track of previous values and will call any callback added\n *\t\t\t\t\tafter the list has been fired right away with the latest \"memorized\"\n *\t\t\t\t\tvalues (like a Deferred)\n *\n *\tunique:\t\t\twill ensure a callback can only be added once (no duplicate in the list)\n *\n *\tstopOnFalse:\tinterrupt callings when a callback returns false\n *\n */\n\n\n jQuery.Callbacks = function (options) {\n // Convert options from String-formatted to Object-formatted if needed\n // (we check in cache first)\n options = typeof options === \"string\" ? createOptions(options) : jQuery.extend({}, options);\n\n var // Flag to know if list is currently firing\n firing,\n // Last fire value for non-forgettable lists\n memory,\n // Flag to know if list was already fired\n _fired,\n // Flag to prevent firing\n _locked,\n // Actual callback list\n list = [],\n // Queue of execution data for repeatable lists\n queue = [],\n // Index of currently firing callback (modified by add/remove as needed)\n firingIndex = -1,\n // Fire callbacks\n fire = function fire() {\n // Enforce single-firing\n _locked = _locked || options.once; // Execute callbacks for all pending executions,\n // respecting firingIndex overrides and runtime changes\n\n _fired = firing = true;\n\n for (; queue.length; firingIndex = -1) {\n memory = queue.shift();\n\n while (++firingIndex < list.length) {\n // Run callback and check for early termination\n if (list[firingIndex].apply(memory[0], memory[1]) === false && options.stopOnFalse) {\n // Jump to end and forget the data so .add doesn't re-fire\n firingIndex = list.length;\n memory = false;\n }\n }\n } // Forget the data if we're done with it\n\n\n if (!options.memory) {\n memory = false;\n }\n\n firing = false; // Clean up if we're done firing for good\n\n if (_locked) {\n // Keep an empty list if we have data for future add calls\n if (memory) {\n list = []; // Otherwise, this object is spent\n } else {\n list = \"\";\n }\n }\n },\n // Actual Callbacks object\n self = {\n // Add a callback or a collection of callbacks to the list\n add: function add() {\n if (list) {\n // If we have memory from a past run, we should fire after adding\n if (memory && !firing) {\n firingIndex = list.length - 1;\n queue.push(memory);\n }\n\n (function add(args) {\n jQuery.each(args, function (_, arg) {\n if (isFunction(arg)) {\n if (!options.unique || !self.has(arg)) {\n list.push(arg);\n }\n } else if (arg && arg.length && toType(arg) !== \"string\") {\n // Inspect recursively\n add(arg);\n }\n });\n })(arguments);\n\n if (memory && !firing) {\n fire();\n }\n }\n\n return this;\n },\n // Remove a callback from the list\n remove: function remove() {\n jQuery.each(arguments, function (_, arg) {\n var index;\n\n while ((index = jQuery.inArray(arg, list, index)) > -1) {\n list.splice(index, 1); // Handle firing indexes\n\n if (index <= firingIndex) {\n firingIndex--;\n }\n }\n });\n return this;\n },\n // Check if a given callback is in the list.\n // If no argument is given, return whether or not list has callbacks attached.\n has: function has(fn) {\n return fn ? jQuery.inArray(fn, list) > -1 : list.length > 0;\n },\n // Remove all callbacks from the list\n empty: function empty() {\n if (list) {\n list = [];\n }\n\n return this;\n },\n // Disable .fire and .add\n // Abort any current/pending executions\n // Clear all callbacks and values\n disable: function disable() {\n _locked = queue = [];\n list = memory = \"\";\n return this;\n },\n disabled: function disabled() {\n return !list;\n },\n // Disable .fire\n // Also disable .add unless we have memory (since it would have no effect)\n // Abort any pending executions\n lock: function lock() {\n _locked = queue = [];\n\n if (!memory && !firing) {\n list = memory = \"\";\n }\n\n return this;\n },\n locked: function locked() {\n return !!_locked;\n },\n // Call all callbacks with the given context and arguments\n fireWith: function fireWith(context, args) {\n if (!_locked) {\n args = args || [];\n args = [context, args.slice ? args.slice() : args];\n queue.push(args);\n\n if (!firing) {\n fire();\n }\n }\n\n return this;\n },\n // Call all the callbacks with the given arguments\n fire: function fire() {\n self.fireWith(this, arguments);\n return this;\n },\n // To know if the callbacks have already been called at least once\n fired: function fired() {\n return !!_fired;\n }\n };\n\n return self;\n };\n\n function Identity(v) {\n return v;\n }\n\n function Thrower(ex) {\n throw ex;\n }\n\n function adoptValue(value, resolve, reject, noValue) {\n var method;\n\n try {\n // Check for promise aspect first to privilege synchronous behavior\n if (value && isFunction(method = value.promise)) {\n method.call(value).done(resolve).fail(reject); // Other thenables\n } else if (value && isFunction(method = value.then)) {\n method.call(value, resolve, reject); // Other non-thenables\n } else {\n // Control `resolve` arguments by letting Array#slice cast boolean `noValue` to integer:\n // * false: [ value ].slice( 0 ) => resolve( value )\n // * true: [ value ].slice( 1 ) => resolve()\n resolve.apply(undefined, [value].slice(noValue));\n } // For Promises/A+, convert exceptions into rejections\n // Since jQuery.when doesn't unwrap thenables, we can skip the extra checks appearing in\n // Deferred#then to conditionally suppress rejection.\n\n } catch (value) {\n // Support: Android 4.0 only\n // Strict mode functions invoked without .call/.apply get global-object context\n reject.apply(undefined, [value]);\n }\n }\n\n jQuery.extend({\n Deferred: function Deferred(func) {\n var tuples = [// action, add listener, callbacks,\n // ... .then handlers, argument index, [final state]\n [\"notify\", \"progress\", jQuery.Callbacks(\"memory\"), jQuery.Callbacks(\"memory\"), 2], [\"resolve\", \"done\", jQuery.Callbacks(\"once memory\"), jQuery.Callbacks(\"once memory\"), 0, \"resolved\"], [\"reject\", \"fail\", jQuery.Callbacks(\"once memory\"), jQuery.Callbacks(\"once memory\"), 1, \"rejected\"]],\n _state = \"pending\",\n _promise = {\n state: function state() {\n return _state;\n },\n always: function always() {\n deferred.done(arguments).fail(arguments);\n return this;\n },\n \"catch\": function _catch(fn) {\n return _promise.then(null, fn);\n },\n // Keep pipe for back-compat\n pipe: function\n /* fnDone, fnFail, fnProgress */\n pipe() {\n var fns = arguments;\n return jQuery.Deferred(function (newDefer) {\n jQuery.each(tuples, function (_i, tuple) {\n // Map tuples (progress, done, fail) to arguments (done, fail, progress)\n var fn = isFunction(fns[tuple[4]]) && fns[tuple[4]]; // deferred.progress(function() { bind to newDefer or newDefer.notify })\n // deferred.done(function() { bind to newDefer or newDefer.resolve })\n // deferred.fail(function() { bind to newDefer or newDefer.reject })\n\n deferred[tuple[1]](function () {\n var returned = fn && fn.apply(this, arguments);\n\n if (returned && isFunction(returned.promise)) {\n returned.promise().progress(newDefer.notify).done(newDefer.resolve).fail(newDefer.reject);\n } else {\n newDefer[tuple[0] + \"With\"](this, fn ? [returned] : arguments);\n }\n });\n });\n fns = null;\n }).promise();\n },\n then: function then(onFulfilled, onRejected, onProgress) {\n var maxDepth = 0;\n\n function resolve(depth, deferred, handler, special) {\n return function () {\n var that = this,\n args = arguments,\n mightThrow = function mightThrow() {\n var returned, then; // Support: Promises/A+ section 2.3.3.3.3\n // https://promisesaplus.com/#point-59\n // Ignore double-resolution attempts\n\n if (depth < maxDepth) {\n return;\n }\n\n returned = handler.apply(that, args); // Support: Promises/A+ section 2.3.1\n // https://promisesaplus.com/#point-48\n\n if (returned === deferred.promise()) {\n throw new TypeError(\"Thenable self-resolution\");\n } // Support: Promises/A+ sections 2.3.3.1, 3.5\n // https://promisesaplus.com/#point-54\n // https://promisesaplus.com/#point-75\n // Retrieve `then` only once\n\n\n then = returned && ( // Support: Promises/A+ section 2.3.4\n // https://promisesaplus.com/#point-64\n // Only check objects and functions for thenability\n _typeof(returned) === \"object\" || typeof returned === \"function\") && returned.then; // Handle a returned thenable\n\n if (isFunction(then)) {\n // Special processors (notify) just wait for resolution\n if (special) {\n then.call(returned, resolve(maxDepth, deferred, Identity, special), resolve(maxDepth, deferred, Thrower, special)); // Normal processors (resolve) also hook into progress\n } else {\n // ...and disregard older resolution values\n maxDepth++;\n then.call(returned, resolve(maxDepth, deferred, Identity, special), resolve(maxDepth, deferred, Thrower, special), resolve(maxDepth, deferred, Identity, deferred.notifyWith));\n } // Handle all other returned values\n\n } else {\n // Only substitute handlers pass on context\n // and multiple values (non-spec behavior)\n if (handler !== Identity) {\n that = undefined;\n args = [returned];\n } // Process the value(s)\n // Default process is resolve\n\n\n (special || deferred.resolveWith)(that, args);\n }\n },\n // Only normal processors (resolve) catch and reject exceptions\n process = special ? mightThrow : function () {\n try {\n mightThrow();\n } catch (e) {\n if (jQuery.Deferred.exceptionHook) {\n jQuery.Deferred.exceptionHook(e, process.stackTrace);\n } // Support: Promises/A+ section 2.3.3.3.4.1\n // https://promisesaplus.com/#point-61\n // Ignore post-resolution exceptions\n\n\n if (depth + 1 >= maxDepth) {\n // Only substitute handlers pass on context\n // and multiple values (non-spec behavior)\n if (handler !== Thrower) {\n that = undefined;\n args = [e];\n }\n\n deferred.rejectWith(that, args);\n }\n }\n }; // Support: Promises/A+ section 2.3.3.3.1\n // https://promisesaplus.com/#point-57\n // Re-resolve promises immediately to dodge false rejection from\n // subsequent errors\n\n\n if (depth) {\n process();\n } else {\n // Call an optional hook to record the stack, in case of exception\n // since it's otherwise lost when execution goes async\n if (jQuery.Deferred.getStackHook) {\n process.stackTrace = jQuery.Deferred.getStackHook();\n }\n\n window.setTimeout(process);\n }\n };\n }\n\n return jQuery.Deferred(function (newDefer) {\n // progress_handlers.add( ... )\n tuples[0][3].add(resolve(0, newDefer, isFunction(onProgress) ? onProgress : Identity, newDefer.notifyWith)); // fulfilled_handlers.add( ... )\n\n tuples[1][3].add(resolve(0, newDefer, isFunction(onFulfilled) ? onFulfilled : Identity)); // rejected_handlers.add( ... )\n\n tuples[2][3].add(resolve(0, newDefer, isFunction(onRejected) ? onRejected : Thrower));\n }).promise();\n },\n // Get a promise for this deferred\n // If obj is provided, the promise aspect is added to the object\n promise: function promise(obj) {\n return obj != null ? jQuery.extend(obj, _promise) : _promise;\n }\n },\n deferred = {}; // Add list-specific methods\n\n jQuery.each(tuples, function (i, tuple) {\n var list = tuple[2],\n stateString = tuple[5]; // promise.progress = list.add\n // promise.done = list.add\n // promise.fail = list.add\n\n _promise[tuple[1]] = list.add; // Handle state\n\n if (stateString) {\n list.add(function () {\n // state = \"resolved\" (i.e., fulfilled)\n // state = \"rejected\"\n _state = stateString;\n }, // rejected_callbacks.disable\n // fulfilled_callbacks.disable\n tuples[3 - i][2].disable, // rejected_handlers.disable\n // fulfilled_handlers.disable\n tuples[3 - i][3].disable, // progress_callbacks.lock\n tuples[0][2].lock, // progress_handlers.lock\n tuples[0][3].lock);\n } // progress_handlers.fire\n // fulfilled_handlers.fire\n // rejected_handlers.fire\n\n\n list.add(tuple[3].fire); // deferred.notify = function() { deferred.notifyWith(...) }\n // deferred.resolve = function() { deferred.resolveWith(...) }\n // deferred.reject = function() { deferred.rejectWith(...) }\n\n deferred[tuple[0]] = function () {\n deferred[tuple[0] + \"With\"](this === deferred ? undefined : this, arguments);\n return this;\n }; // deferred.notifyWith = list.fireWith\n // deferred.resolveWith = list.fireWith\n // deferred.rejectWith = list.fireWith\n\n\n deferred[tuple[0] + \"With\"] = list.fireWith;\n }); // Make the deferred a promise\n\n _promise.promise(deferred); // Call given func if any\n\n\n if (func) {\n func.call(deferred, deferred);\n } // All done!\n\n\n return deferred;\n },\n // Deferred helper\n when: function when(singleValue) {\n var // count of uncompleted subordinates\n remaining = arguments.length,\n // count of unprocessed arguments\n i = remaining,\n // subordinate fulfillment data\n resolveContexts = Array(i),\n resolveValues = _slice.call(arguments),\n // the primary Deferred\n primary = jQuery.Deferred(),\n // subordinate callback factory\n updateFunc = function updateFunc(i) {\n return function (value) {\n resolveContexts[i] = this;\n resolveValues[i] = arguments.length > 1 ? _slice.call(arguments) : value;\n\n if (! --remaining) {\n primary.resolveWith(resolveContexts, resolveValues);\n }\n };\n }; // Single- and empty arguments are adopted like Promise.resolve\n\n\n if (remaining <= 1) {\n adoptValue(singleValue, primary.done(updateFunc(i)).resolve, primary.reject, !remaining); // Use .then() to unwrap secondary thenables (cf. gh-3000)\n\n if (primary.state() === \"pending\" || isFunction(resolveValues[i] && resolveValues[i].then)) {\n return primary.then();\n }\n } // Multiple arguments are aggregated like Promise.all array elements\n\n\n while (i--) {\n adoptValue(resolveValues[i], updateFunc(i), primary.reject);\n }\n\n return primary.promise();\n }\n }); // These usually indicate a programmer mistake during development,\n // warn about them ASAP rather than swallowing them by default.\n\n var rerrorNames = /^(Eval|Internal|Range|Reference|Syntax|Type|URI)Error$/;\n\n jQuery.Deferred.exceptionHook = function (error, stack) {\n // Support: IE 8 - 9 only\n // Console exists when dev tools are open, which can happen at any time\n if (window.console && window.console.warn && error && rerrorNames.test(error.name)) {\n window.console.warn(\"jQuery.Deferred exception: \" + error.message, error.stack, stack);\n }\n };\n\n jQuery.readyException = function (error) {\n window.setTimeout(function () {\n throw error;\n });\n }; // The deferred used on DOM ready\n\n\n var readyList = jQuery.Deferred();\n\n jQuery.fn.ready = function (fn) {\n readyList.then(fn) // Wrap jQuery.readyException in a function so that the lookup\n // happens at the time of error handling instead of callback\n // registration.\n [\"catch\"](function (error) {\n jQuery.readyException(error);\n });\n return this;\n };\n\n jQuery.extend({\n // Is the DOM ready to be used? Set to true once it occurs.\n isReady: false,\n // A counter to track how many items to wait for before\n // the ready event fires. See trac-6781\n readyWait: 1,\n // Handle when the DOM is ready\n ready: function ready(wait) {\n // Abort if there are pending holds or we're already ready\n if (wait === true ? --jQuery.readyWait : jQuery.isReady) {\n return;\n } // Remember that the DOM is ready\n\n\n jQuery.isReady = true; // If a normal DOM Ready event fired, decrement, and wait if need be\n\n if (wait !== true && --jQuery.readyWait > 0) {\n return;\n } // If there are functions bound, to execute\n\n\n readyList.resolveWith(document, [jQuery]);\n }\n });\n jQuery.ready.then = readyList.then; // The ready event handler and self cleanup method\n\n function completed() {\n document.removeEventListener(\"DOMContentLoaded\", completed);\n window.removeEventListener(\"load\", completed);\n jQuery.ready();\n } // Catch cases where $(document).ready() is called\n // after the browser event has already occurred.\n // Support: IE <=9 - 10 only\n // Older IE sometimes signals \"interactive\" too soon\n\n\n if (document.readyState === \"complete\" || document.readyState !== \"loading\" && !document.documentElement.doScroll) {\n // Handle it asynchronously to allow scripts the opportunity to delay ready\n window.setTimeout(jQuery.ready);\n } else {\n // Use the handy event callback\n document.addEventListener(\"DOMContentLoaded\", completed); // A fallback to window.onload, that will always work\n\n window.addEventListener(\"load\", completed);\n } // Multifunctional method to get and set values of a collection\n // The value/s can optionally be executed if it's a function\n\n\n var access = function access(elems, fn, key, value, chainable, emptyGet, raw) {\n var i = 0,\n len = elems.length,\n bulk = key == null; // Sets many values\n\n if (toType(key) === \"object\") {\n chainable = true;\n\n for (i in key) {\n access(elems, fn, i, key[i], true, emptyGet, raw);\n } // Sets one value\n\n } else if (value !== undefined) {\n chainable = true;\n\n if (!isFunction(value)) {\n raw = true;\n }\n\n if (bulk) {\n // Bulk operations run against the entire set\n if (raw) {\n fn.call(elems, value);\n fn = null; // ...except when executing function values\n } else {\n bulk = fn;\n\n fn = function fn(elem, _key, value) {\n return bulk.call(jQuery(elem), value);\n };\n }\n }\n\n if (fn) {\n for (; i < len; i++) {\n fn(elems[i], key, raw ? value : value.call(elems[i], i, fn(elems[i], key)));\n }\n }\n }\n\n if (chainable) {\n return elems;\n } // Gets\n\n\n if (bulk) {\n return fn.call(elems);\n }\n\n return len ? fn(elems[0], key) : emptyGet;\n }; // Matches dashed string for camelizing\n\n\n var rmsPrefix = /^-ms-/,\n rdashAlpha = /-([a-z])/g; // Used by camelCase as callback to replace()\n\n function fcamelCase(_all, letter) {\n return letter.toUpperCase();\n } // Convert dashed to camelCase; used by the css and data modules\n // Support: IE <=9 - 11, Edge 12 - 15\n // Microsoft forgot to hump their vendor prefix (trac-9572)\n\n\n function camelCase(string) {\n return string.replace(rmsPrefix, \"ms-\").replace(rdashAlpha, fcamelCase);\n }\n\n var acceptData = function acceptData(owner) {\n // Accepts only:\n // - Node\n // - Node.ELEMENT_NODE\n // - Node.DOCUMENT_NODE\n // - Object\n // - Any\n return owner.nodeType === 1 || owner.nodeType === 9 || !+owner.nodeType;\n };\n\n function Data() {\n this.expando = jQuery.expando + Data.uid++;\n }\n\n Data.uid = 1;\n Data.prototype = {\n cache: function cache(owner) {\n // Check if the owner object already has a cache\n var value = owner[this.expando]; // If not, create one\n\n if (!value) {\n value = {}; // We can accept data for non-element nodes in modern browsers,\n // but we should not, see trac-8335.\n // Always return an empty object.\n\n if (acceptData(owner)) {\n // If it is a node unlikely to be stringify-ed or looped over\n // use plain assignment\n if (owner.nodeType) {\n owner[this.expando] = value; // Otherwise secure it in a non-enumerable property\n // configurable must be true to allow the property to be\n // deleted when data is removed\n } else {\n Object.defineProperty(owner, this.expando, {\n value: value,\n configurable: true\n });\n }\n }\n }\n\n return value;\n },\n set: function set(owner, data, value) {\n var prop,\n cache = this.cache(owner); // Handle: [ owner, key, value ] args\n // Always use camelCase key (gh-2257)\n\n if (typeof data === \"string\") {\n cache[camelCase(data)] = value; // Handle: [ owner, { properties } ] args\n } else {\n // Copy the properties one-by-one to the cache object\n for (prop in data) {\n cache[camelCase(prop)] = data[prop];\n }\n }\n\n return cache;\n },\n get: function get(owner, key) {\n return key === undefined ? this.cache(owner) : // Always use camelCase key (gh-2257)\n owner[this.expando] && owner[this.expando][camelCase(key)];\n },\n access: function access(owner, key, value) {\n // In cases where either:\n //\n // 1. No key was specified\n // 2. A string key was specified, but no value provided\n //\n // Take the \"read\" path and allow the get method to determine\n // which value to return, respectively either:\n //\n // 1. The entire cache object\n // 2. The data stored at the key\n //\n if (key === undefined || key && typeof key === \"string\" && value === undefined) {\n return this.get(owner, key);\n } // When the key is not a string, or both a key and value\n // are specified, set or extend (existing objects) with either:\n //\n // 1. An object of properties\n // 2. A key and value\n //\n\n\n this.set(owner, key, value); // Since the \"set\" path can have two possible entry points\n // return the expected data based on which path was taken[*]\n\n return value !== undefined ? value : key;\n },\n remove: function remove(owner, key) {\n var i,\n cache = owner[this.expando];\n\n if (cache === undefined) {\n return;\n }\n\n if (key !== undefined) {\n // Support array or space separated string of keys\n if (Array.isArray(key)) {\n // If key is an array of keys...\n // We always set camelCase keys, so remove that.\n key = key.map(camelCase);\n } else {\n key = camelCase(key); // If a key with the spaces exists, use it.\n // Otherwise, create an array by matching non-whitespace\n\n key = key in cache ? [key] : key.match(rnothtmlwhite) || [];\n }\n\n i = key.length;\n\n while (i--) {\n delete cache[key[i]];\n }\n } // Remove the expando if there's no more data\n\n\n if (key === undefined || jQuery.isEmptyObject(cache)) {\n // Support: Chrome <=35 - 45\n // Webkit & Blink performance suffers when deleting properties\n // from DOM nodes, so set to undefined instead\n // https://bugs.chromium.org/p/chromium/issues/detail?id=378607 (bug restricted)\n if (owner.nodeType) {\n owner[this.expando] = undefined;\n } else {\n delete owner[this.expando];\n }\n }\n },\n hasData: function hasData(owner) {\n var cache = owner[this.expando];\n return cache !== undefined && !jQuery.isEmptyObject(cache);\n }\n };\n var dataPriv = new Data();\n var dataUser = new Data(); //\tImplementation Summary\n //\n //\t1. Enforce API surface and semantic compatibility with 1.9.x branch\n //\t2. Improve the module's maintainability by reducing the storage\n //\t\tpaths to a single mechanism.\n //\t3. Use the same single mechanism to support \"private\" and \"user\" data.\n //\t4. _Never_ expose \"private\" data to user code (TODO: Drop _data, _removeData)\n //\t5. Avoid exposing implementation details on user objects (eg. expando properties)\n //\t6. Provide a clear path for implementation upgrade to WeakMap in 2014\n\n var rbrace = /^(?:\\{[\\w\\W]*\\}|\\[[\\w\\W]*\\])$/,\n rmultiDash = /[A-Z]/g;\n\n function getData(data) {\n if (data === \"true\") {\n return true;\n }\n\n if (data === \"false\") {\n return false;\n }\n\n if (data === \"null\") {\n return null;\n } // Only convert to a number if it doesn't change the string\n\n\n if (data === +data + \"\") {\n return +data;\n }\n\n if (rbrace.test(data)) {\n return JSON.parse(data);\n }\n\n return data;\n }\n\n function dataAttr(elem, key, data) {\n var name; // If nothing was found internally, try to fetch any\n // data from the HTML5 data-* attribute\n\n if (data === undefined && elem.nodeType === 1) {\n name = \"data-\" + key.replace(rmultiDash, \"-$&\").toLowerCase();\n data = elem.getAttribute(name);\n\n if (typeof data === \"string\") {\n try {\n data = getData(data);\n } catch (e) {} // Make sure we set the data so it isn't changed later\n\n\n dataUser.set(elem, key, data);\n } else {\n data = undefined;\n }\n }\n\n return data;\n }\n\n jQuery.extend({\n hasData: function hasData(elem) {\n return dataUser.hasData(elem) || dataPriv.hasData(elem);\n },\n data: function data(elem, name, _data) {\n return dataUser.access(elem, name, _data);\n },\n removeData: function removeData(elem, name) {\n dataUser.remove(elem, name);\n },\n // TODO: Now that all calls to _data and _removeData have been replaced\n // with direct calls to dataPriv methods, these can be deprecated.\n _data: function _data(elem, name, data) {\n return dataPriv.access(elem, name, data);\n },\n _removeData: function _removeData(elem, name) {\n dataPriv.remove(elem, name);\n }\n });\n jQuery.fn.extend({\n data: function data(key, value) {\n var i,\n name,\n data,\n elem = this[0],\n attrs = elem && elem.attributes; // Gets all values\n\n if (key === undefined) {\n if (this.length) {\n data = dataUser.get(elem);\n\n if (elem.nodeType === 1 && !dataPriv.get(elem, \"hasDataAttrs\")) {\n i = attrs.length;\n\n while (i--) {\n // Support: IE 11 only\n // The attrs elements can be null (trac-14894)\n if (attrs[i]) {\n name = attrs[i].name;\n\n if (name.indexOf(\"data-\") === 0) {\n name = camelCase(name.slice(5));\n dataAttr(elem, name, data[name]);\n }\n }\n }\n\n dataPriv.set(elem, \"hasDataAttrs\", true);\n }\n }\n\n return data;\n } // Sets multiple values\n\n\n if (_typeof(key) === \"object\") {\n return this.each(function () {\n dataUser.set(this, key);\n });\n }\n\n return access(this, function (value) {\n var data; // The calling jQuery object (element matches) is not empty\n // (and therefore has an element appears at this[ 0 ]) and the\n // `value` parameter was not undefined. An empty jQuery object\n // will result in `undefined` for elem = this[ 0 ] which will\n // throw an exception if an attempt to read a data cache is made.\n\n if (elem && value === undefined) {\n // Attempt to get data from the cache\n // The key will always be camelCased in Data\n data = dataUser.get(elem, key);\n\n if (data !== undefined) {\n return data;\n } // Attempt to \"discover\" the data in\n // HTML5 custom data-* attrs\n\n\n data = dataAttr(elem, key);\n\n if (data !== undefined) {\n return data;\n } // We tried really hard, but the data doesn't exist.\n\n\n return;\n } // Set the data...\n\n\n this.each(function () {\n // We always store the camelCased key\n dataUser.set(this, key, value);\n });\n }, null, value, arguments.length > 1, null, true);\n },\n removeData: function removeData(key) {\n return this.each(function () {\n dataUser.remove(this, key);\n });\n }\n });\n jQuery.extend({\n queue: function queue(elem, type, data) {\n var queue;\n\n if (elem) {\n type = (type || \"fx\") + \"queue\";\n queue = dataPriv.get(elem, type); // Speed up dequeue by getting out quickly if this is just a lookup\n\n if (data) {\n if (!queue || Array.isArray(data)) {\n queue = dataPriv.access(elem, type, jQuery.makeArray(data));\n } else {\n queue.push(data);\n }\n }\n\n return queue || [];\n }\n },\n dequeue: function dequeue(elem, type) {\n type = type || \"fx\";\n\n var queue = jQuery.queue(elem, type),\n startLength = queue.length,\n fn = queue.shift(),\n hooks = jQuery._queueHooks(elem, type),\n next = function next() {\n jQuery.dequeue(elem, type);\n }; // If the fx queue is dequeued, always remove the progress sentinel\n\n\n if (fn === \"inprogress\") {\n fn = queue.shift();\n startLength--;\n }\n\n if (fn) {\n // Add a progress sentinel to prevent the fx queue from being\n // automatically dequeued\n if (type === \"fx\") {\n queue.unshift(\"inprogress\");\n } // Clear up the last queue stop function\n\n\n delete hooks.stop;\n fn.call(elem, next, hooks);\n }\n\n if (!startLength && hooks) {\n hooks.empty.fire();\n }\n },\n // Not public - generate a queueHooks object, or return the current one\n _queueHooks: function _queueHooks(elem, type) {\n var key = type + \"queueHooks\";\n return dataPriv.get(elem, key) || dataPriv.access(elem, key, {\n empty: jQuery.Callbacks(\"once memory\").add(function () {\n dataPriv.remove(elem, [type + \"queue\", key]);\n })\n });\n }\n });\n jQuery.fn.extend({\n queue: function queue(type, data) {\n var setter = 2;\n\n if (typeof type !== \"string\") {\n data = type;\n type = \"fx\";\n setter--;\n }\n\n if (arguments.length < setter) {\n return jQuery.queue(this[0], type);\n }\n\n return data === undefined ? this : this.each(function () {\n var queue = jQuery.queue(this, type, data); // Ensure a hooks for this queue\n\n jQuery._queueHooks(this, type);\n\n if (type === \"fx\" && queue[0] !== \"inprogress\") {\n jQuery.dequeue(this, type);\n }\n });\n },\n dequeue: function dequeue(type) {\n return this.each(function () {\n jQuery.dequeue(this, type);\n });\n },\n clearQueue: function clearQueue(type) {\n return this.queue(type || \"fx\", []);\n },\n // Get a promise resolved when queues of a certain type\n // are emptied (fx is the type by default)\n promise: function promise(type, obj) {\n var tmp,\n count = 1,\n defer = jQuery.Deferred(),\n elements = this,\n i = this.length,\n resolve = function resolve() {\n if (! --count) {\n defer.resolveWith(elements, [elements]);\n }\n };\n\n if (typeof type !== \"string\") {\n obj = type;\n type = undefined;\n }\n\n type = type || \"fx\";\n\n while (i--) {\n tmp = dataPriv.get(elements[i], type + \"queueHooks\");\n\n if (tmp && tmp.empty) {\n count++;\n tmp.empty.add(resolve);\n }\n }\n\n resolve();\n return defer.promise(obj);\n }\n });\n var pnum = /[+-]?(?:\\d*\\.|)\\d+(?:[eE][+-]?\\d+|)/.source;\n var rcssNum = new RegExp(\"^(?:([+-])=|)(\" + pnum + \")([a-z%]*)$\", \"i\");\n var cssExpand = [\"Top\", \"Right\", \"Bottom\", \"Left\"];\n var documentElement = document.documentElement;\n\n var isAttached = function isAttached(elem) {\n return jQuery.contains(elem.ownerDocument, elem);\n },\n composed = {\n composed: true\n }; // Support: IE 9 - 11+, Edge 12 - 18+, iOS 10.0 - 10.2 only\n // Check attachment across shadow DOM boundaries when possible (gh-3504)\n // Support: iOS 10.0-10.2 only\n // Early iOS 10 versions support `attachShadow` but not `getRootNode`,\n // leading to errors. We need to check for `getRootNode`.\n\n\n if (documentElement.getRootNode) {\n isAttached = function isAttached(elem) {\n return jQuery.contains(elem.ownerDocument, elem) || elem.getRootNode(composed) === elem.ownerDocument;\n };\n }\n\n var isHiddenWithinTree = function isHiddenWithinTree(elem, el) {\n // isHiddenWithinTree might be called from jQuery#filter function;\n // in that case, element will be second argument\n elem = el || elem; // Inline style trumps all\n\n return elem.style.display === \"none\" || elem.style.display === \"\" && // Otherwise, check computed style\n // Support: Firefox <=43 - 45\n // Disconnected elements can have computed display: none, so first confirm that elem is\n // in the document.\n isAttached(elem) && jQuery.css(elem, \"display\") === \"none\";\n };\n\n function adjustCSS(elem, prop, valueParts, tween) {\n var adjusted,\n scale,\n maxIterations = 20,\n currentValue = tween ? function () {\n return tween.cur();\n } : function () {\n return jQuery.css(elem, prop, \"\");\n },\n initial = currentValue(),\n unit = valueParts && valueParts[3] || (jQuery.cssNumber[prop] ? \"\" : \"px\"),\n // Starting value computation is required for potential unit mismatches\n initialInUnit = elem.nodeType && (jQuery.cssNumber[prop] || unit !== \"px\" && +initial) && rcssNum.exec(jQuery.css(elem, prop));\n\n if (initialInUnit && initialInUnit[3] !== unit) {\n // Support: Firefox <=54\n // Halve the iteration target value to prevent interference from CSS upper bounds (gh-2144)\n initial = initial / 2; // Trust units reported by jQuery.css\n\n unit = unit || initialInUnit[3]; // Iteratively approximate from a nonzero starting point\n\n initialInUnit = +initial || 1;\n\n while (maxIterations--) {\n // Evaluate and update our best guess (doubling guesses that zero out).\n // Finish if the scale equals or crosses 1 (making the old*new product non-positive).\n jQuery.style(elem, prop, initialInUnit + unit);\n\n if ((1 - scale) * (1 - (scale = currentValue() / initial || 0.5)) <= 0) {\n maxIterations = 0;\n }\n\n initialInUnit = initialInUnit / scale;\n }\n\n initialInUnit = initialInUnit * 2;\n jQuery.style(elem, prop, initialInUnit + unit); // Make sure we update the tween properties later on\n\n valueParts = valueParts || [];\n }\n\n if (valueParts) {\n initialInUnit = +initialInUnit || +initial || 0; // Apply relative offset (+=/-=) if specified\n\n adjusted = valueParts[1] ? initialInUnit + (valueParts[1] + 1) * valueParts[2] : +valueParts[2];\n\n if (tween) {\n tween.unit = unit;\n tween.start = initialInUnit;\n tween.end = adjusted;\n }\n }\n\n return adjusted;\n }\n\n var defaultDisplayMap = {};\n\n function getDefaultDisplay(elem) {\n var temp,\n doc = elem.ownerDocument,\n nodeName = elem.nodeName,\n display = defaultDisplayMap[nodeName];\n\n if (display) {\n return display;\n }\n\n temp = doc.body.appendChild(doc.createElement(nodeName));\n display = jQuery.css(temp, \"display\");\n temp.parentNode.removeChild(temp);\n\n if (display === \"none\") {\n display = \"block\";\n }\n\n defaultDisplayMap[nodeName] = display;\n return display;\n }\n\n function showHide(elements, show) {\n var display,\n elem,\n values = [],\n index = 0,\n length = elements.length; // Determine new display value for elements that need to change\n\n for (; index < length; index++) {\n elem = elements[index];\n\n if (!elem.style) {\n continue;\n }\n\n display = elem.style.display;\n\n if (show) {\n // Since we force visibility upon cascade-hidden elements, an immediate (and slow)\n // check is required in this first loop unless we have a nonempty display value (either\n // inline or about-to-be-restored)\n if (display === \"none\") {\n values[index] = dataPriv.get(elem, \"display\") || null;\n\n if (!values[index]) {\n elem.style.display = \"\";\n }\n }\n\n if (elem.style.display === \"\" && isHiddenWithinTree(elem)) {\n values[index] = getDefaultDisplay(elem);\n }\n } else {\n if (display !== \"none\") {\n values[index] = \"none\"; // Remember what we're overwriting\n\n dataPriv.set(elem, \"display\", display);\n }\n }\n } // Set the display of the elements in a second loop to avoid constant reflow\n\n\n for (index = 0; index < length; index++) {\n if (values[index] != null) {\n elements[index].style.display = values[index];\n }\n }\n\n return elements;\n }\n\n jQuery.fn.extend({\n show: function show() {\n return showHide(this, true);\n },\n hide: function hide() {\n return showHide(this);\n },\n toggle: function toggle(state) {\n if (typeof state === \"boolean\") {\n return state ? this.show() : this.hide();\n }\n\n return this.each(function () {\n if (isHiddenWithinTree(this)) {\n jQuery(this).show();\n } else {\n jQuery(this).hide();\n }\n });\n }\n });\n var rcheckableType = /^(?:checkbox|radio)$/i;\n var rtagName = /<([a-z][^\\/\\0>\\x20\\t\\r\\n\\f]*)/i;\n var rscriptType = /^$|^module$|\\/(?:java|ecma)script/i;\n\n (function () {\n var fragment = document.createDocumentFragment(),\n div = fragment.appendChild(document.createElement(\"div\")),\n input = document.createElement(\"input\"); // Support: Android 4.0 - 4.3 only\n // Check state lost if the name is set (trac-11217)\n // Support: Windows Web Apps (WWA)\n // `name` and `type` must use .setAttribute for WWA (trac-14901)\n\n input.setAttribute(\"type\", \"radio\");\n input.setAttribute(\"checked\", \"checked\");\n input.setAttribute(\"name\", \"t\");\n div.appendChild(input); // Support: Android <=4.1 only\n // Older WebKit doesn't clone checked state correctly in fragments\n\n support.checkClone = div.cloneNode(true).cloneNode(true).lastChild.checked; // Support: IE <=11 only\n // Make sure textarea (and checkbox) defaultValue is properly cloned\n\n div.innerHTML = \"<textarea>x</textarea>\";\n support.noCloneChecked = !!div.cloneNode(true).lastChild.defaultValue; // Support: IE <=9 only\n // IE <=9 replaces <option> tags with their contents when inserted outside of\n // the select element.\n\n div.innerHTML = \"<option></option>\";\n support.option = !!div.lastChild;\n })(); // We have to close these tags to support XHTML (trac-13200)\n\n\n var wrapMap = {\n // XHTML parsers do not magically insert elements in the\n // same way that tag soup parsers do. So we cannot shorten\n // this by omitting <tbody> or other required elements.\n thead: [1, \"<table>\", \"</table>\"],\n col: [2, \"<table><colgroup>\", \"</colgroup></table>\"],\n tr: [2, \"<table><tbody>\", \"</tbody></table>\"],\n td: [3, \"<table><tbody><tr>\", \"</tr></tbody></table>\"],\n _default: [0, \"\", \"\"]\n };\n wrapMap.tbody = wrapMap.tfoot = wrapMap.colgroup = wrapMap.caption = wrapMap.thead;\n wrapMap.th = wrapMap.td; // Support: IE <=9 only\n\n if (!support.option) {\n wrapMap.optgroup = wrapMap.option = [1, \"<select multiple='multiple'>\", \"</select>\"];\n }\n\n function getAll(context, tag) {\n // Support: IE <=9 - 11 only\n // Use typeof to avoid zero-argument method invocation on host objects (trac-15151)\n var ret;\n\n if (typeof context.getElementsByTagName !== \"undefined\") {\n ret = context.getElementsByTagName(tag || \"*\");\n } else if (typeof context.querySelectorAll !== \"undefined\") {\n ret = context.querySelectorAll(tag || \"*\");\n } else {\n ret = [];\n }\n\n if (tag === undefined || tag && nodeName(context, tag)) {\n return jQuery.merge([context], ret);\n }\n\n return ret;\n } // Mark scripts as having already been evaluated\n\n\n function setGlobalEval(elems, refElements) {\n var i = 0,\n l = elems.length;\n\n for (; i < l; i++) {\n dataPriv.set(elems[i], \"globalEval\", !refElements || dataPriv.get(refElements[i], \"globalEval\"));\n }\n }\n\n var rhtml = /<|&#?\\w+;/;\n\n function buildFragment(elems, context, scripts, selection, ignored) {\n var elem,\n tmp,\n tag,\n wrap,\n attached,\n j,\n fragment = context.createDocumentFragment(),\n nodes = [],\n i = 0,\n l = elems.length;\n\n for (; i < l; i++) {\n elem = elems[i];\n\n if (elem || elem === 0) {\n // Add nodes directly\n if (toType(elem) === \"object\") {\n // Support: Android <=4.0 only, PhantomJS 1 only\n // push.apply(_, arraylike) throws on ancient WebKit\n jQuery.merge(nodes, elem.nodeType ? [elem] : elem); // Convert non-html into a text node\n } else if (!rhtml.test(elem)) {\n nodes.push(context.createTextNode(elem)); // Convert html into DOM nodes\n } else {\n tmp = tmp || fragment.appendChild(context.createElement(\"div\")); // Deserialize a standard representation\n\n tag = (rtagName.exec(elem) || [\"\", \"\"])[1].toLowerCase();\n wrap = wrapMap[tag] || wrapMap._default;\n tmp.innerHTML = wrap[1] + jQuery.htmlPrefilter(elem) + wrap[2]; // Descend through wrappers to the right content\n\n j = wrap[0];\n\n while (j--) {\n tmp = tmp.lastChild;\n } // Support: Android <=4.0 only, PhantomJS 1 only\n // push.apply(_, arraylike) throws on ancient WebKit\n\n\n jQuery.merge(nodes, tmp.childNodes); // Remember the top-level container\n\n tmp = fragment.firstChild; // Ensure the created nodes are orphaned (trac-12392)\n\n tmp.textContent = \"\";\n }\n }\n } // Remove wrapper from fragment\n\n\n fragment.textContent = \"\";\n i = 0;\n\n while (elem = nodes[i++]) {\n // Skip elements already in the context collection (trac-4087)\n if (selection && jQuery.inArray(elem, selection) > -1) {\n if (ignored) {\n ignored.push(elem);\n }\n\n continue;\n }\n\n attached = isAttached(elem); // Append to fragment\n\n tmp = getAll(fragment.appendChild(elem), \"script\"); // Preserve script evaluation history\n\n if (attached) {\n setGlobalEval(tmp);\n } // Capture executables\n\n\n if (scripts) {\n j = 0;\n\n while (elem = tmp[j++]) {\n if (rscriptType.test(elem.type || \"\")) {\n scripts.push(elem);\n }\n }\n }\n }\n\n return fragment;\n }\n\n var rtypenamespace = /^([^.]*)(?:\\.(.+)|)/;\n\n function returnTrue() {\n return true;\n }\n\n function returnFalse() {\n return false;\n } // Support: IE <=9 - 11+\n // focus() and blur() are asynchronous, except when they are no-op.\n // So expect focus to be synchronous when the element is already active,\n // and blur to be synchronous when the element is not already active.\n // (focus and blur are always synchronous in other supported browsers,\n // this just defines when we can count on it).\n\n\n function expectSync(elem, type) {\n return elem === safeActiveElement() === (type === \"focus\");\n } // Support: IE <=9 only\n // Accessing document.activeElement can throw unexpectedly\n // https://bugs.jquery.com/ticket/13393\n\n\n function safeActiveElement() {\n try {\n return document.activeElement;\n } catch (err) {}\n }\n\n function _on(elem, types, selector, data, fn, one) {\n var origFn, type; // Types can be a map of types/handlers\n\n if (_typeof(types) === \"object\") {\n // ( types-Object, selector, data )\n if (typeof selector !== \"string\") {\n // ( types-Object, data )\n data = data || selector;\n selector = undefined;\n }\n\n for (type in types) {\n _on(elem, type, selector, data, types[type], one);\n }\n\n return elem;\n }\n\n if (data == null && fn == null) {\n // ( types, fn )\n fn = selector;\n data = selector = undefined;\n } else if (fn == null) {\n if (typeof selector === \"string\") {\n // ( types, selector, fn )\n fn = data;\n data = undefined;\n } else {\n // ( types, data, fn )\n fn = data;\n data = selector;\n selector = undefined;\n }\n }\n\n if (fn === false) {\n fn = returnFalse;\n } else if (!fn) {\n return elem;\n }\n\n if (one === 1) {\n origFn = fn;\n\n fn = function fn(event) {\n // Can use an empty set, since event contains the info\n jQuery().off(event);\n return origFn.apply(this, arguments);\n }; // Use same guid so caller can remove using origFn\n\n\n fn.guid = origFn.guid || (origFn.guid = jQuery.guid++);\n }\n\n return elem.each(function () {\n jQuery.event.add(this, types, fn, data, selector);\n });\n }\n /*\n * Helper functions for managing events -- not part of the public interface.\n * Props to Dean Edwards' addEvent library for many of the ideas.\n */\n\n\n jQuery.event = {\n global: {},\n add: function add(elem, types, handler, data, selector) {\n var handleObjIn,\n eventHandle,\n tmp,\n events,\n t,\n handleObj,\n special,\n handlers,\n type,\n namespaces,\n origType,\n elemData = dataPriv.get(elem); // Only attach events to objects that accept data\n\n if (!acceptData(elem)) {\n return;\n } // Caller can pass in an object of custom data in lieu of the handler\n\n\n if (handler.handler) {\n handleObjIn = handler;\n handler = handleObjIn.handler;\n selector = handleObjIn.selector;\n } // Ensure that invalid selectors throw exceptions at attach time\n // Evaluate against documentElement in case elem is a non-element node (e.g., document)\n\n\n if (selector) {\n jQuery.find.matchesSelector(documentElement, selector);\n } // Make sure that the handler has a unique ID, used to find/remove it later\n\n\n if (!handler.guid) {\n handler.guid = jQuery.guid++;\n } // Init the element's event structure and main handler, if this is the first\n\n\n if (!(events = elemData.events)) {\n events = elemData.events = Object.create(null);\n }\n\n if (!(eventHandle = elemData.handle)) {\n eventHandle = elemData.handle = function (e) {\n // Discard the second event of a jQuery.event.trigger() and\n // when an event is called after a page has unloaded\n return typeof jQuery !== \"undefined\" && jQuery.event.triggered !== e.type ? jQuery.event.dispatch.apply(elem, arguments) : undefined;\n };\n } // Handle multiple events separated by a space\n\n\n types = (types || \"\").match(rnothtmlwhite) || [\"\"];\n t = types.length;\n\n while (t--) {\n tmp = rtypenamespace.exec(types[t]) || [];\n type = origType = tmp[1];\n namespaces = (tmp[2] || \"\").split(\".\").sort(); // There *must* be a type, no attaching namespace-only handlers\n\n if (!type) {\n continue;\n } // If event changes its type, use the special event handlers for the changed type\n\n\n special = jQuery.event.special[type] || {}; // If selector defined, determine special event api type, otherwise given type\n\n type = (selector ? special.delegateType : special.bindType) || type; // Update special based on newly reset type\n\n special = jQuery.event.special[type] || {}; // handleObj is passed to all event handlers\n\n handleObj = jQuery.extend({\n type: type,\n origType: origType,\n data: data,\n handler: handler,\n guid: handler.guid,\n selector: selector,\n needsContext: selector && jQuery.expr.match.needsContext.test(selector),\n namespace: namespaces.join(\".\")\n }, handleObjIn); // Init the event handler queue if we're the first\n\n if (!(handlers = events[type])) {\n handlers = events[type] = [];\n handlers.delegateCount = 0; // Only use addEventListener if the special events handler returns false\n\n if (!special.setup || special.setup.call(elem, data, namespaces, eventHandle) === false) {\n if (elem.addEventListener) {\n elem.addEventListener(type, eventHandle);\n }\n }\n }\n\n if (special.add) {\n special.add.call(elem, handleObj);\n\n if (!handleObj.handler.guid) {\n handleObj.handler.guid = handler.guid;\n }\n } // Add to the element's handler list, delegates in front\n\n\n if (selector) {\n handlers.splice(handlers.delegateCount++, 0, handleObj);\n } else {\n handlers.push(handleObj);\n } // Keep track of which events have ever been used, for event optimization\n\n\n jQuery.event.global[type] = true;\n }\n },\n // Detach an event or set of events from an element\n remove: function remove(elem, types, handler, selector, mappedTypes) {\n var j,\n origCount,\n tmp,\n events,\n t,\n handleObj,\n special,\n handlers,\n type,\n namespaces,\n origType,\n elemData = dataPriv.hasData(elem) && dataPriv.get(elem);\n\n if (!elemData || !(events = elemData.events)) {\n return;\n } // Once for each type.namespace in types; type may be omitted\n\n\n types = (types || \"\").match(rnothtmlwhite) || [\"\"];\n t = types.length;\n\n while (t--) {\n tmp = rtypenamespace.exec(types[t]) || [];\n type = origType = tmp[1];\n namespaces = (tmp[2] || \"\").split(\".\").sort(); // Unbind all events (on this namespace, if provided) for the element\n\n if (!type) {\n for (type in events) {\n jQuery.event.remove(elem, type + types[t], handler, selector, true);\n }\n\n continue;\n }\n\n special = jQuery.event.special[type] || {};\n type = (selector ? special.delegateType : special.bindType) || type;\n handlers = events[type] || [];\n tmp = tmp[2] && new RegExp(\"(^|\\\\.)\" + namespaces.join(\"\\\\.(?:.*\\\\.|)\") + \"(\\\\.|$)\"); // Remove matching events\n\n origCount = j = handlers.length;\n\n while (j--) {\n handleObj = handlers[j];\n\n if ((mappedTypes || origType === handleObj.origType) && (!handler || handler.guid === handleObj.guid) && (!tmp || tmp.test(handleObj.namespace)) && (!selector || selector === handleObj.selector || selector === \"**\" && handleObj.selector)) {\n handlers.splice(j, 1);\n\n if (handleObj.selector) {\n handlers.delegateCount--;\n }\n\n if (special.remove) {\n special.remove.call(elem, handleObj);\n }\n }\n } // Remove generic event handler if we removed something and no more handlers exist\n // (avoids potential for endless recursion during removal of special event handlers)\n\n\n if (origCount && !handlers.length) {\n if (!special.teardown || special.teardown.call(elem, namespaces, elemData.handle) === false) {\n jQuery.removeEvent(elem, type, elemData.handle);\n }\n\n delete events[type];\n }\n } // Remove data and the expando if it's no longer used\n\n\n if (jQuery.isEmptyObject(events)) {\n dataPriv.remove(elem, \"handle events\");\n }\n },\n dispatch: function dispatch(nativeEvent) {\n var i,\n j,\n ret,\n matched,\n handleObj,\n handlerQueue,\n args = new Array(arguments.length),\n // Make a writable jQuery.Event from the native event object\n event = jQuery.event.fix(nativeEvent),\n handlers = (dataPriv.get(this, \"events\") || Object.create(null))[event.type] || [],\n special = jQuery.event.special[event.type] || {}; // Use the fix-ed jQuery.Event rather than the (read-only) native event\n\n args[0] = event;\n\n for (i = 1; i < arguments.length; i++) {\n args[i] = arguments[i];\n }\n\n event.delegateTarget = this; // Call the preDispatch hook for the mapped type, and let it bail if desired\n\n if (special.preDispatch && special.preDispatch.call(this, event) === false) {\n return;\n } // Determine handlers\n\n\n handlerQueue = jQuery.event.handlers.call(this, event, handlers); // Run delegates first; they may want to stop propagation beneath us\n\n i = 0;\n\n while ((matched = handlerQueue[i++]) && !event.isPropagationStopped()) {\n event.currentTarget = matched.elem;\n j = 0;\n\n while ((handleObj = matched.handlers[j++]) && !event.isImmediatePropagationStopped()) {\n // If the event is namespaced, then each handler is only invoked if it is\n // specially universal or its namespaces are a superset of the event's.\n if (!event.rnamespace || handleObj.namespace === false || event.rnamespace.test(handleObj.namespace)) {\n event.handleObj = handleObj;\n event.data = handleObj.data;\n ret = ((jQuery.event.special[handleObj.origType] || {}).handle || handleObj.handler).apply(matched.elem, args);\n\n if (ret !== undefined) {\n if ((event.result = ret) === false) {\n event.preventDefault();\n event.stopPropagation();\n }\n }\n }\n }\n } // Call the postDispatch hook for the mapped type\n\n\n if (special.postDispatch) {\n special.postDispatch.call(this, event);\n }\n\n return event.result;\n },\n handlers: function handlers(event, _handlers) {\n var i,\n handleObj,\n sel,\n matchedHandlers,\n matchedSelectors,\n handlerQueue = [],\n delegateCount = _handlers.delegateCount,\n cur = event.target; // Find delegate handlers\n\n if (delegateCount && // Support: IE <=9\n // Black-hole SVG <use> instance trees (trac-13180)\n cur.nodeType && // Support: Firefox <=42\n // Suppress spec-violating clicks indicating a non-primary pointer button (trac-3861)\n // https://www.w3.org/TR/DOM-Level-3-Events/#event-type-click\n // Support: IE 11 only\n // ...but not arrow key \"clicks\" of radio inputs, which can have `button` -1 (gh-2343)\n !(event.type === \"click\" && event.button >= 1)) {\n for (; cur !== this; cur = cur.parentNode || this) {\n // Don't check non-elements (trac-13208)\n // Don't process clicks on disabled elements (trac-6911, trac-8165, trac-11382, trac-11764)\n if (cur.nodeType === 1 && !(event.type === \"click\" && cur.disabled === true)) {\n matchedHandlers = [];\n matchedSelectors = {};\n\n for (i = 0; i < delegateCount; i++) {\n handleObj = _handlers[i]; // Don't conflict with Object.prototype properties (trac-13203)\n\n sel = handleObj.selector + \" \";\n\n if (matchedSelectors[sel] === undefined) {\n matchedSelectors[sel] = handleObj.needsContext ? jQuery(sel, this).index(cur) > -1 : jQuery.find(sel, this, null, [cur]).length;\n }\n\n if (matchedSelectors[sel]) {\n matchedHandlers.push(handleObj);\n }\n }\n\n if (matchedHandlers.length) {\n handlerQueue.push({\n elem: cur,\n handlers: matchedHandlers\n });\n }\n }\n }\n } // Add the remaining (directly-bound) handlers\n\n\n cur = this;\n\n if (delegateCount < _handlers.length) {\n handlerQueue.push({\n elem: cur,\n handlers: _handlers.slice(delegateCount)\n });\n }\n\n return handlerQueue;\n },\n addProp: function addProp(name, hook) {\n Object.defineProperty(jQuery.Event.prototype, name, {\n enumerable: true,\n configurable: true,\n get: isFunction(hook) ? function () {\n if (this.originalEvent) {\n return hook(this.originalEvent);\n }\n } : function () {\n if (this.originalEvent) {\n return this.originalEvent[name];\n }\n },\n set: function set(value) {\n Object.defineProperty(this, name, {\n enumerable: true,\n configurable: true,\n writable: true,\n value: value\n });\n }\n });\n },\n fix: function fix(originalEvent) {\n return originalEvent[jQuery.expando] ? originalEvent : new jQuery.Event(originalEvent);\n },\n special: {\n load: {\n // Prevent triggered image.load events from bubbling to window.load\n noBubble: true\n },\n click: {\n // Utilize native event to ensure correct state for checkable inputs\n setup: function setup(data) {\n // For mutual compressibility with _default, replace `this` access with a local var.\n // `|| data` is dead code meant only to preserve the variable through minification.\n var el = this || data; // Claim the first handler\n\n if (rcheckableType.test(el.type) && el.click && nodeName(el, \"input\")) {\n // dataPriv.set( el, \"click\", ... )\n leverageNative(el, \"click\", returnTrue);\n } // Return false to allow normal processing in the caller\n\n\n return false;\n },\n trigger: function trigger(data) {\n // For mutual compressibility with _default, replace `this` access with a local var.\n // `|| data` is dead code meant only to preserve the variable through minification.\n var el = this || data; // Force setup before triggering a click\n\n if (rcheckableType.test(el.type) && el.click && nodeName(el, \"input\")) {\n leverageNative(el, \"click\");\n } // Return non-false to allow normal event-path propagation\n\n\n return true;\n },\n // For cross-browser consistency, suppress native .click() on links\n // Also prevent it if we're currently inside a leveraged native-event stack\n _default: function _default(event) {\n var target = event.target;\n return rcheckableType.test(target.type) && target.click && nodeName(target, \"input\") && dataPriv.get(target, \"click\") || nodeName(target, \"a\");\n }\n },\n beforeunload: {\n postDispatch: function postDispatch(event) {\n // Support: Firefox 20+\n // Firefox doesn't alert if the returnValue field is not set.\n if (event.result !== undefined && event.originalEvent) {\n event.originalEvent.returnValue = event.result;\n }\n }\n }\n }\n }; // Ensure the presence of an event listener that handles manually-triggered\n // synthetic events by interrupting progress until reinvoked in response to\n // *native* events that it fires directly, ensuring that state changes have\n // already occurred before other listeners are invoked.\n\n function leverageNative(el, type, expectSync) {\n // Missing expectSync indicates a trigger call, which must force setup through jQuery.event.add\n if (!expectSync) {\n if (dataPriv.get(el, type) === undefined) {\n jQuery.event.add(el, type, returnTrue);\n }\n\n return;\n } // Register the controller as a special universal handler for all event namespaces\n\n\n dataPriv.set(el, type, false);\n jQuery.event.add(el, type, {\n namespace: false,\n handler: function handler(event) {\n var notAsync,\n result,\n saved = dataPriv.get(this, type);\n\n if (event.isTrigger & 1 && this[type]) {\n // Interrupt processing of the outer synthetic .trigger()ed event\n // Saved data should be false in such cases, but might be a leftover capture object\n // from an async native handler (gh-4350)\n if (!saved.length) {\n // Store arguments for use when handling the inner native event\n // There will always be at least one argument (an event object), so this array\n // will not be confused with a leftover capture object.\n saved = _slice.call(arguments);\n dataPriv.set(this, type, saved); // Trigger the native event and capture its result\n // Support: IE <=9 - 11+\n // focus() and blur() are asynchronous\n\n notAsync = expectSync(this, type);\n this[type]();\n result = dataPriv.get(this, type);\n\n if (saved !== result || notAsync) {\n dataPriv.set(this, type, false);\n } else {\n result = {};\n }\n\n if (saved !== result) {\n // Cancel the outer synthetic event\n event.stopImmediatePropagation();\n event.preventDefault(); // Support: Chrome 86+\n // In Chrome, if an element having a focusout handler is blurred by\n // clicking outside of it, it invokes the handler synchronously. If\n // that handler calls `.remove()` on the element, the data is cleared,\n // leaving `result` undefined. We need to guard against this.\n\n return result && result.value;\n } // If this is an inner synthetic event for an event with a bubbling surrogate\n // (focus or blur), assume that the surrogate already propagated from triggering the\n // native event and prevent that from happening again here.\n // This technically gets the ordering wrong w.r.t. to `.trigger()` (in which the\n // bubbling surrogate propagates *after* the non-bubbling base), but that seems\n // less bad than duplication.\n\n } else if ((jQuery.event.special[type] || {}).delegateType) {\n event.stopPropagation();\n } // If this is a native event triggered above, everything is now in order\n // Fire an inner synthetic event with the original arguments\n\n } else if (saved.length) {\n // ...and capture the result\n dataPriv.set(this, type, {\n value: jQuery.event.trigger( // Support: IE <=9 - 11+\n // Extend with the prototype to reset the above stopImmediatePropagation()\n jQuery.extend(saved[0], jQuery.Event.prototype), saved.slice(1), this)\n }); // Abort handling of the native event\n\n event.stopImmediatePropagation();\n }\n }\n });\n }\n\n jQuery.removeEvent = function (elem, type, handle) {\n // This \"if\" is needed for plain objects\n if (elem.removeEventListener) {\n elem.removeEventListener(type, handle);\n }\n };\n\n jQuery.Event = function (src, props) {\n // Allow instantiation without the 'new' keyword\n if (!(this instanceof jQuery.Event)) {\n return new jQuery.Event(src, props);\n } // Event object\n\n\n if (src && src.type) {\n this.originalEvent = src;\n this.type = src.type; // Events bubbling up the document may have been marked as prevented\n // by a handler lower down the tree; reflect the correct value.\n\n this.isDefaultPrevented = src.defaultPrevented || src.defaultPrevented === undefined && // Support: Android <=2.3 only\n src.returnValue === false ? returnTrue : returnFalse; // Create target properties\n // Support: Safari <=6 - 7 only\n // Target should not be a text node (trac-504, trac-13143)\n\n this.target = src.target && src.target.nodeType === 3 ? src.target.parentNode : src.target;\n this.currentTarget = src.currentTarget;\n this.relatedTarget = src.relatedTarget; // Event type\n } else {\n this.type = src;\n } // Put explicitly provided properties onto the event object\n\n\n if (props) {\n jQuery.extend(this, props);\n } // Create a timestamp if incoming event doesn't have one\n\n\n this.timeStamp = src && src.timeStamp || Date.now(); // Mark it as fixed\n\n this[jQuery.expando] = true;\n }; // jQuery.Event is based on DOM3 Events as specified by the ECMAScript Language Binding\n // https://www.w3.org/TR/2003/WD-DOM-Level-3-Events-20030331/ecma-script-binding.html\n\n\n jQuery.Event.prototype = {\n constructor: jQuery.Event,\n isDefaultPrevented: returnFalse,\n isPropagationStopped: returnFalse,\n isImmediatePropagationStopped: returnFalse,\n isSimulated: false,\n preventDefault: function preventDefault() {\n var e = this.originalEvent;\n this.isDefaultPrevented = returnTrue;\n\n if (e && !this.isSimulated) {\n e.preventDefault();\n }\n },\n stopPropagation: function stopPropagation() {\n var e = this.originalEvent;\n this.isPropagationStopped = returnTrue;\n\n if (e && !this.isSimulated) {\n e.stopPropagation();\n }\n },\n stopImmediatePropagation: function stopImmediatePropagation() {\n var e = this.originalEvent;\n this.isImmediatePropagationStopped = returnTrue;\n\n if (e && !this.isSimulated) {\n e.stopImmediatePropagation();\n }\n\n this.stopPropagation();\n }\n }; // Includes all common event props including KeyEvent and MouseEvent specific props\n\n jQuery.each({\n altKey: true,\n bubbles: true,\n cancelable: true,\n changedTouches: true,\n ctrlKey: true,\n detail: true,\n eventPhase: true,\n metaKey: true,\n pageX: true,\n pageY: true,\n shiftKey: true,\n view: true,\n \"char\": true,\n code: true,\n charCode: true,\n key: true,\n keyCode: true,\n button: true,\n buttons: true,\n clientX: true,\n clientY: true,\n offsetX: true,\n offsetY: true,\n pointerId: true,\n pointerType: true,\n screenX: true,\n screenY: true,\n targetTouches: true,\n toElement: true,\n touches: true,\n which: true\n }, jQuery.event.addProp);\n jQuery.each({\n focus: \"focusin\",\n blur: \"focusout\"\n }, function (type, delegateType) {\n jQuery.event.special[type] = {\n // Utilize native event if possible so blur/focus sequence is correct\n setup: function setup() {\n // Claim the first handler\n // dataPriv.set( this, \"focus\", ... )\n // dataPriv.set( this, \"blur\", ... )\n leverageNative(this, type, expectSync); // Return false to allow normal processing in the caller\n\n return false;\n },\n trigger: function trigger() {\n // Force setup before trigger\n leverageNative(this, type); // Return non-false to allow normal event-path propagation\n\n return true;\n },\n // Suppress native focus or blur if we're currently inside\n // a leveraged native-event stack\n _default: function _default(event) {\n return dataPriv.get(event.target, type);\n },\n delegateType: delegateType\n };\n }); // Create mouseenter/leave events using mouseover/out and event-time checks\n // so that event delegation works in jQuery.\n // Do the same for pointerenter/pointerleave and pointerover/pointerout\n //\n // Support: Safari 7 only\n // Safari sends mouseenter too often; see:\n // https://bugs.chromium.org/p/chromium/issues/detail?id=470258\n // for the description of the bug (it existed in older Chrome versions as well).\n\n jQuery.each({\n mouseenter: \"mouseover\",\n mouseleave: \"mouseout\",\n pointerenter: \"pointerover\",\n pointerleave: \"pointerout\"\n }, function (orig, fix) {\n jQuery.event.special[orig] = {\n delegateType: fix,\n bindType: fix,\n handle: function handle(event) {\n var ret,\n target = this,\n related = event.relatedTarget,\n handleObj = event.handleObj; // For mouseenter/leave call the handler if related is outside the target.\n // NB: No relatedTarget if the mouse left/entered the browser window\n\n if (!related || related !== target && !jQuery.contains(target, related)) {\n event.type = handleObj.origType;\n ret = handleObj.handler.apply(this, arguments);\n event.type = fix;\n }\n\n return ret;\n }\n };\n });\n jQuery.fn.extend({\n on: function on(types, selector, data, fn) {\n return _on(this, types, selector, data, fn);\n },\n one: function one(types, selector, data, fn) {\n return _on(this, types, selector, data, fn, 1);\n },\n off: function off(types, selector, fn) {\n var handleObj, type;\n\n if (types && types.preventDefault && types.handleObj) {\n // ( event ) dispatched jQuery.Event\n handleObj = types.handleObj;\n jQuery(types.delegateTarget).off(handleObj.namespace ? handleObj.origType + \".\" + handleObj.namespace : handleObj.origType, handleObj.selector, handleObj.handler);\n return this;\n }\n\n if (_typeof(types) === \"object\") {\n // ( types-object [, selector] )\n for (type in types) {\n this.off(type, selector, types[type]);\n }\n\n return this;\n }\n\n if (selector === false || typeof selector === \"function\") {\n // ( types [, fn] )\n fn = selector;\n selector = undefined;\n }\n\n if (fn === false) {\n fn = returnFalse;\n }\n\n return this.each(function () {\n jQuery.event.remove(this, types, fn, selector);\n });\n }\n });\n var // Support: IE <=10 - 11, Edge 12 - 13 only\n // In IE/Edge using regex groups here causes severe slowdowns.\n // See https://connect.microsoft.com/IE/feedback/details/1736512/\n rnoInnerhtml = /<script|<style|<link/i,\n // checked=\"checked\" or checked\n rchecked = /checked\\s*(?:[^=]|=\\s*.checked.)/i,\n rcleanScript = /^\\s*<!\\[CDATA\\[|\\]\\]>\\s*$/g; // Prefer a tbody over its parent table for containing new rows\n\n function manipulationTarget(elem, content) {\n if (nodeName(elem, \"table\") && nodeName(content.nodeType !== 11 ? content : content.firstChild, \"tr\")) {\n return jQuery(elem).children(\"tbody\")[0] || elem;\n }\n\n return elem;\n } // Replace/restore the type attribute of script elements for safe DOM manipulation\n\n\n function disableScript(elem) {\n elem.type = (elem.getAttribute(\"type\") !== null) + \"/\" + elem.type;\n return elem;\n }\n\n function restoreScript(elem) {\n if ((elem.type || \"\").slice(0, 5) === \"true/\") {\n elem.type = elem.type.slice(5);\n } else {\n elem.removeAttribute(\"type\");\n }\n\n return elem;\n }\n\n function cloneCopyEvent(src, dest) {\n var i, l, type, pdataOld, udataOld, udataCur, events;\n\n if (dest.nodeType !== 1) {\n return;\n } // 1. Copy private data: events, handlers, etc.\n\n\n if (dataPriv.hasData(src)) {\n pdataOld = dataPriv.get(src);\n events = pdataOld.events;\n\n if (events) {\n dataPriv.remove(dest, \"handle events\");\n\n for (type in events) {\n for (i = 0, l = events[type].length; i < l; i++) {\n jQuery.event.add(dest, type, events[type][i]);\n }\n }\n }\n } // 2. Copy user data\n\n\n if (dataUser.hasData(src)) {\n udataOld = dataUser.access(src);\n udataCur = jQuery.extend({}, udataOld);\n dataUser.set(dest, udataCur);\n }\n } // Fix IE bugs, see support tests\n\n\n function fixInput(src, dest) {\n var nodeName = dest.nodeName.toLowerCase(); // Fails to persist the checked state of a cloned checkbox or radio button.\n\n if (nodeName === \"input\" && rcheckableType.test(src.type)) {\n dest.checked = src.checked; // Fails to return the selected option to the default selected state when cloning options\n } else if (nodeName === \"input\" || nodeName === \"textarea\") {\n dest.defaultValue = src.defaultValue;\n }\n }\n\n function domManip(collection, args, callback, ignored) {\n // Flatten any nested arrays\n args = flat(args);\n var fragment,\n first,\n scripts,\n hasScripts,\n node,\n doc,\n i = 0,\n l = collection.length,\n iNoClone = l - 1,\n value = args[0],\n valueIsFunction = isFunction(value); // We can't cloneNode fragments that contain checked, in WebKit\n\n if (valueIsFunction || l > 1 && typeof value === \"string\" && !support.checkClone && rchecked.test(value)) {\n return collection.each(function (index) {\n var self = collection.eq(index);\n\n if (valueIsFunction) {\n args[0] = value.call(this, index, self.html());\n }\n\n domManip(self, args, callback, ignored);\n });\n }\n\n if (l) {\n fragment = buildFragment(args, collection[0].ownerDocument, false, collection, ignored);\n first = fragment.firstChild;\n\n if (fragment.childNodes.length === 1) {\n fragment = first;\n } // Require either new content or an interest in ignored elements to invoke the callback\n\n\n if (first || ignored) {\n scripts = jQuery.map(getAll(fragment, \"script\"), disableScript);\n hasScripts = scripts.length; // Use the original fragment for the last item\n // instead of the first because it can end up\n // being emptied incorrectly in certain situations (trac-8070).\n\n for (; i < l; i++) {\n node = fragment;\n\n if (i !== iNoClone) {\n node = jQuery.clone(node, true, true); // Keep references to cloned scripts for later restoration\n\n if (hasScripts) {\n // Support: Android <=4.0 only, PhantomJS 1 only\n // push.apply(_, arraylike) throws on ancient WebKit\n jQuery.merge(scripts, getAll(node, \"script\"));\n }\n }\n\n callback.call(collection[i], node, i);\n }\n\n if (hasScripts) {\n doc = scripts[scripts.length - 1].ownerDocument; // Reenable scripts\n\n jQuery.map(scripts, restoreScript); // Evaluate executable scripts on first document insertion\n\n for (i = 0; i < hasScripts; i++) {\n node = scripts[i];\n\n if (rscriptType.test(node.type || \"\") && !dataPriv.access(node, \"globalEval\") && jQuery.contains(doc, node)) {\n if (node.src && (node.type || \"\").toLowerCase() !== \"module\") {\n // Optional AJAX dependency, but won't run scripts if not present\n if (jQuery._evalUrl && !node.noModule) {\n jQuery._evalUrl(node.src, {\n nonce: node.nonce || node.getAttribute(\"nonce\")\n }, doc);\n }\n } else {\n // Unwrap a CDATA section containing script contents. This shouldn't be\n // needed as in XML documents they're already not visible when\n // inspecting element contents and in HTML documents they have no\n // meaning but we're preserving that logic for backwards compatibility.\n // This will be removed completely in 4.0. See gh-4904.\n DOMEval(node.textContent.replace(rcleanScript, \"\"), node, doc);\n }\n }\n }\n }\n }\n }\n\n return collection;\n }\n\n function _remove(elem, selector, keepData) {\n var node,\n nodes = selector ? jQuery.filter(selector, elem) : elem,\n i = 0;\n\n for (; (node = nodes[i]) != null; i++) {\n if (!keepData && node.nodeType === 1) {\n jQuery.cleanData(getAll(node));\n }\n\n if (node.parentNode) {\n if (keepData && isAttached(node)) {\n setGlobalEval(getAll(node, \"script\"));\n }\n\n node.parentNode.removeChild(node);\n }\n }\n\n return elem;\n }\n\n jQuery.extend({\n htmlPrefilter: function htmlPrefilter(html) {\n return html;\n },\n clone: function clone(elem, dataAndEvents, deepDataAndEvents) {\n var i,\n l,\n srcElements,\n destElements,\n clone = elem.cloneNode(true),\n inPage = isAttached(elem); // Fix IE cloning issues\n\n if (!support.noCloneChecked && (elem.nodeType === 1 || elem.nodeType === 11) && !jQuery.isXMLDoc(elem)) {\n // We eschew Sizzle here for performance reasons: https://jsperf.com/getall-vs-sizzle/2\n destElements = getAll(clone);\n srcElements = getAll(elem);\n\n for (i = 0, l = srcElements.length; i < l; i++) {\n fixInput(srcElements[i], destElements[i]);\n }\n } // Copy the events from the original to the clone\n\n\n if (dataAndEvents) {\n if (deepDataAndEvents) {\n srcElements = srcElements || getAll(elem);\n destElements = destElements || getAll(clone);\n\n for (i = 0, l = srcElements.length; i < l; i++) {\n cloneCopyEvent(srcElements[i], destElements[i]);\n }\n } else {\n cloneCopyEvent(elem, clone);\n }\n } // Preserve script evaluation history\n\n\n destElements = getAll(clone, \"script\");\n\n if (destElements.length > 0) {\n setGlobalEval(destElements, !inPage && getAll(elem, \"script\"));\n } // Return the cloned set\n\n\n return clone;\n },\n cleanData: function cleanData(elems) {\n var data,\n elem,\n type,\n special = jQuery.event.special,\n i = 0;\n\n for (; (elem = elems[i]) !== undefined; i++) {\n if (acceptData(elem)) {\n if (data = elem[dataPriv.expando]) {\n if (data.events) {\n for (type in data.events) {\n if (special[type]) {\n jQuery.event.remove(elem, type); // This is a shortcut to avoid jQuery.event.remove's overhead\n } else {\n jQuery.removeEvent(elem, type, data.handle);\n }\n }\n } // Support: Chrome <=35 - 45+\n // Assign undefined instead of using delete, see Data#remove\n\n\n elem[dataPriv.expando] = undefined;\n }\n\n if (elem[dataUser.expando]) {\n // Support: Chrome <=35 - 45+\n // Assign undefined instead of using delete, see Data#remove\n elem[dataUser.expando] = undefined;\n }\n }\n }\n }\n });\n jQuery.fn.extend({\n detach: function detach(selector) {\n return _remove(this, selector, true);\n },\n remove: function remove(selector) {\n return _remove(this, selector);\n },\n text: function text(value) {\n return access(this, function (value) {\n return value === undefined ? jQuery.text(this) : this.empty().each(function () {\n if (this.nodeType === 1 || this.nodeType === 11 || this.nodeType === 9) {\n this.textContent = value;\n }\n });\n }, null, value, arguments.length);\n },\n append: function append() {\n return domManip(this, arguments, function (elem) {\n if (this.nodeType === 1 || this.nodeType === 11 || this.nodeType === 9) {\n var target = manipulationTarget(this, elem);\n target.appendChild(elem);\n }\n });\n },\n prepend: function prepend() {\n return domManip(this, arguments, function (elem) {\n if (this.nodeType === 1 || this.nodeType === 11 || this.nodeType === 9) {\n var target = manipulationTarget(this, elem);\n target.insertBefore(elem, target.firstChild);\n }\n });\n },\n before: function before() {\n return domManip(this, arguments, function (elem) {\n if (this.parentNode) {\n this.parentNode.insertBefore(elem, this);\n }\n });\n },\n after: function after() {\n return domManip(this, arguments, function (elem) {\n if (this.parentNode) {\n this.parentNode.insertBefore(elem, this.nextSibling);\n }\n });\n },\n empty: function empty() {\n var elem,\n i = 0;\n\n for (; (elem = this[i]) != null; i++) {\n if (elem.nodeType === 1) {\n // Prevent memory leaks\n jQuery.cleanData(getAll(elem, false)); // Remove any remaining nodes\n\n elem.textContent = \"\";\n }\n }\n\n return this;\n },\n clone: function clone(dataAndEvents, deepDataAndEvents) {\n dataAndEvents = dataAndEvents == null ? false : dataAndEvents;\n deepDataAndEvents = deepDataAndEvents == null ? dataAndEvents : deepDataAndEvents;\n return this.map(function () {\n return jQuery.clone(this, dataAndEvents, deepDataAndEvents);\n });\n },\n html: function html(value) {\n return access(this, function (value) {\n var elem = this[0] || {},\n i = 0,\n l = this.length;\n\n if (value === undefined && elem.nodeType === 1) {\n return elem.innerHTML;\n } // See if we can take a shortcut and just use innerHTML\n\n\n if (typeof value === \"string\" && !rnoInnerhtml.test(value) && !wrapMap[(rtagName.exec(value) || [\"\", \"\"])[1].toLowerCase()]) {\n value = jQuery.htmlPrefilter(value);\n\n try {\n for (; i < l; i++) {\n elem = this[i] || {}; // Remove element nodes and prevent memory leaks\n\n if (elem.nodeType === 1) {\n jQuery.cleanData(getAll(elem, false));\n elem.innerHTML = value;\n }\n }\n\n elem = 0; // If using innerHTML throws an exception, use the fallback method\n } catch (e) {}\n }\n\n if (elem) {\n this.empty().append(value);\n }\n }, null, value, arguments.length);\n },\n replaceWith: function replaceWith() {\n var ignored = []; // Make the changes, replacing each non-ignored context element with the new content\n\n return domManip(this, arguments, function (elem) {\n var parent = this.parentNode;\n\n if (jQuery.inArray(this, ignored) < 0) {\n jQuery.cleanData(getAll(this));\n\n if (parent) {\n parent.replaceChild(elem, this);\n }\n } // Force callback invocation\n\n }, ignored);\n }\n });\n jQuery.each({\n appendTo: \"append\",\n prependTo: \"prepend\",\n insertBefore: \"before\",\n insertAfter: \"after\",\n replaceAll: \"replaceWith\"\n }, function (name, original) {\n jQuery.fn[name] = function (selector) {\n var elems,\n ret = [],\n insert = jQuery(selector),\n last = insert.length - 1,\n i = 0;\n\n for (; i <= last; i++) {\n elems = i === last ? this : this.clone(true);\n jQuery(insert[i])[original](elems); // Support: Android <=4.0 only, PhantomJS 1 only\n // .get() because push.apply(_, arraylike) throws on ancient WebKit\n\n push.apply(ret, elems.get());\n }\n\n return this.pushStack(ret);\n };\n });\n var rnumnonpx = new RegExp(\"^(\" + pnum + \")(?!px)[a-z%]+$\", \"i\");\n var rcustomProp = /^--/;\n\n var getStyles = function getStyles(elem) {\n // Support: IE <=11 only, Firefox <=30 (trac-15098, trac-14150)\n // IE throws on elements created in popups\n // FF meanwhile throws on frame elements through \"defaultView.getComputedStyle\"\n var view = elem.ownerDocument.defaultView;\n\n if (!view || !view.opener) {\n view = window;\n }\n\n return view.getComputedStyle(elem);\n };\n\n var swap = function swap(elem, options, callback) {\n var ret,\n name,\n old = {}; // Remember the old values, and insert the new ones\n\n for (name in options) {\n old[name] = elem.style[name];\n elem.style[name] = options[name];\n }\n\n ret = callback.call(elem); // Revert the old values\n\n for (name in options) {\n elem.style[name] = old[name];\n }\n\n return ret;\n };\n\n var rboxStyle = new RegExp(cssExpand.join(\"|\"), \"i\");\n var whitespace = \"[\\\\x20\\\\t\\\\r\\\\n\\\\f]\";\n var rtrimCSS = new RegExp(\"^\" + whitespace + \"+|((?:^|[^\\\\\\\\])(?:\\\\\\\\.)*)\" + whitespace + \"+$\", \"g\");\n\n (function () {\n // Executing both pixelPosition & boxSizingReliable tests require only one layout\n // so they're executed at the same time to save the second computation.\n function computeStyleTests() {\n // This is a singleton, we need to execute it only once\n if (!div) {\n return;\n }\n\n container.style.cssText = \"position:absolute;left:-11111px;width:60px;\" + \"margin-top:1px;padding:0;border:0\";\n div.style.cssText = \"position:relative;display:block;box-sizing:border-box;overflow:scroll;\" + \"margin:auto;border:1px;padding:1px;\" + \"width:60%;top:1%\";\n documentElement.appendChild(container).appendChild(div);\n var divStyle = window.getComputedStyle(div);\n pixelPositionVal = divStyle.top !== \"1%\"; // Support: Android 4.0 - 4.3 only, Firefox <=3 - 44\n\n reliableMarginLeftVal = roundPixelMeasures(divStyle.marginLeft) === 12; // Support: Android 4.0 - 4.3 only, Safari <=9.1 - 10.1, iOS <=7.0 - 9.3\n // Some styles come back with percentage values, even though they shouldn't\n\n div.style.right = \"60%\";\n pixelBoxStylesVal = roundPixelMeasures(divStyle.right) === 36; // Support: IE 9 - 11 only\n // Detect misreporting of content dimensions for box-sizing:border-box elements\n\n boxSizingReliableVal = roundPixelMeasures(divStyle.width) === 36; // Support: IE 9 only\n // Detect overflow:scroll screwiness (gh-3699)\n // Support: Chrome <=64\n // Don't get tricked when zoom affects offsetWidth (gh-4029)\n\n div.style.position = \"absolute\";\n scrollboxSizeVal = roundPixelMeasures(div.offsetWidth / 3) === 12;\n documentElement.removeChild(container); // Nullify the div so it wouldn't be stored in the memory and\n // it will also be a sign that checks already performed\n\n div = null;\n }\n\n function roundPixelMeasures(measure) {\n return Math.round(parseFloat(measure));\n }\n\n var pixelPositionVal,\n boxSizingReliableVal,\n scrollboxSizeVal,\n pixelBoxStylesVal,\n reliableTrDimensionsVal,\n reliableMarginLeftVal,\n container = document.createElement(\"div\"),\n div = document.createElement(\"div\"); // Finish early in limited (non-browser) environments\n\n if (!div.style) {\n return;\n } // Support: IE <=9 - 11 only\n // Style of cloned element affects source element cloned (trac-8908)\n\n\n div.style.backgroundClip = \"content-box\";\n div.cloneNode(true).style.backgroundClip = \"\";\n support.clearCloneStyle = div.style.backgroundClip === \"content-box\";\n jQuery.extend(support, {\n boxSizingReliable: function boxSizingReliable() {\n computeStyleTests();\n return boxSizingReliableVal;\n },\n pixelBoxStyles: function pixelBoxStyles() {\n computeStyleTests();\n return pixelBoxStylesVal;\n },\n pixelPosition: function pixelPosition() {\n computeStyleTests();\n return pixelPositionVal;\n },\n reliableMarginLeft: function reliableMarginLeft() {\n computeStyleTests();\n return reliableMarginLeftVal;\n },\n scrollboxSize: function scrollboxSize() {\n computeStyleTests();\n return scrollboxSizeVal;\n },\n // Support: IE 9 - 11+, Edge 15 - 18+\n // IE/Edge misreport `getComputedStyle` of table rows with width/height\n // set in CSS while `offset*` properties report correct values.\n // Behavior in IE 9 is more subtle than in newer versions & it passes\n // some versions of this test; make sure not to make it pass there!\n //\n // Support: Firefox 70+\n // Only Firefox includes border widths\n // in computed dimensions. (gh-4529)\n reliableTrDimensions: function reliableTrDimensions() {\n var table, tr, trChild, trStyle;\n\n if (reliableTrDimensionsVal == null) {\n table = document.createElement(\"table\");\n tr = document.createElement(\"tr\");\n trChild = document.createElement(\"div\");\n table.style.cssText = \"position:absolute;left:-11111px;border-collapse:separate\";\n tr.style.cssText = \"border:1px solid\"; // Support: Chrome 86+\n // Height set through cssText does not get applied.\n // Computed height then comes back as 0.\n\n tr.style.height = \"1px\";\n trChild.style.height = \"9px\"; // Support: Android 8 Chrome 86+\n // In our bodyBackground.html iframe,\n // display for all div elements is set to \"inline\",\n // which causes a problem only in Android 8 Chrome 86.\n // Ensuring the div is display: block\n // gets around this issue.\n\n trChild.style.display = \"block\";\n documentElement.appendChild(table).appendChild(tr).appendChild(trChild);\n trStyle = window.getComputedStyle(tr);\n reliableTrDimensionsVal = parseInt(trStyle.height, 10) + parseInt(trStyle.borderTopWidth, 10) + parseInt(trStyle.borderBottomWidth, 10) === tr.offsetHeight;\n documentElement.removeChild(table);\n }\n\n return reliableTrDimensionsVal;\n }\n });\n })();\n\n function curCSS(elem, name, computed) {\n var width,\n minWidth,\n maxWidth,\n ret,\n isCustomProp = rcustomProp.test(name),\n // Support: Firefox 51+\n // Retrieving style before computed somehow\n // fixes an issue with getting wrong values\n // on detached elements\n style = elem.style;\n computed = computed || getStyles(elem); // getPropertyValue is needed for:\n // .css('filter') (IE 9 only, trac-12537)\n // .css('--customProperty) (gh-3144)\n\n if (computed) {\n ret = computed.getPropertyValue(name) || computed[name]; // trim whitespace for custom property (issue gh-4926)\n\n if (isCustomProp) {\n // rtrim treats U+000D CARRIAGE RETURN and U+000C FORM FEED\n // as whitespace while CSS does not, but this is not a problem\n // because CSS preprocessing replaces them with U+000A LINE FEED\n // (which *is* CSS whitespace)\n // https://www.w3.org/TR/css-syntax-3/#input-preprocessing\n ret = ret.replace(rtrimCSS, \"$1\");\n }\n\n if (ret === \"\" && !isAttached(elem)) {\n ret = jQuery.style(elem, name);\n } // A tribute to the \"awesome hack by Dean Edwards\"\n // Android Browser returns percentage for some values,\n // but width seems to be reliably pixels.\n // This is against the CSSOM draft spec:\n // https://drafts.csswg.org/cssom/#resolved-values\n\n\n if (!support.pixelBoxStyles() && rnumnonpx.test(ret) && rboxStyle.test(name)) {\n // Remember the original values\n width = style.width;\n minWidth = style.minWidth;\n maxWidth = style.maxWidth; // Put in the new values to get a computed value out\n\n style.minWidth = style.maxWidth = style.width = ret;\n ret = computed.width; // Revert the changed values\n\n style.width = width;\n style.minWidth = minWidth;\n style.maxWidth = maxWidth;\n }\n }\n\n return ret !== undefined ? // Support: IE <=9 - 11 only\n // IE returns zIndex value as an integer.\n ret + \"\" : ret;\n }\n\n function addGetHookIf(conditionFn, hookFn) {\n // Define the hook, we'll check on the first run if it's really needed.\n return {\n get: function get() {\n if (conditionFn()) {\n // Hook not needed (or it's not possible to use it due\n // to missing dependency), remove it.\n delete this.get;\n return;\n } // Hook needed; redefine it so that the support test is not executed again.\n\n\n return (this.get = hookFn).apply(this, arguments);\n }\n };\n }\n\n var cssPrefixes = [\"Webkit\", \"Moz\", \"ms\"],\n emptyStyle = document.createElement(\"div\").style,\n vendorProps = {}; // Return a vendor-prefixed property or undefined\n\n function vendorPropName(name) {\n // Check for vendor prefixed names\n var capName = name[0].toUpperCase() + name.slice(1),\n i = cssPrefixes.length;\n\n while (i--) {\n name = cssPrefixes[i] + capName;\n\n if (name in emptyStyle) {\n return name;\n }\n }\n } // Return a potentially-mapped jQuery.cssProps or vendor prefixed property\n\n\n function finalPropName(name) {\n var _final = jQuery.cssProps[name] || vendorProps[name];\n\n if (_final) {\n return _final;\n }\n\n if (name in emptyStyle) {\n return name;\n }\n\n return vendorProps[name] = vendorPropName(name) || name;\n }\n\n var // Swappable if display is none or starts with table\n // except \"table\", \"table-cell\", or \"table-caption\"\n // See here for display values: https://developer.mozilla.org/en-US/docs/CSS/display\n rdisplayswap = /^(none|table(?!-c[ea]).+)/,\n cssShow = {\n position: \"absolute\",\n visibility: \"hidden\",\n display: \"block\"\n },\n cssNormalTransform = {\n letterSpacing: \"0\",\n fontWeight: \"400\"\n };\n\n function setPositiveNumber(_elem, value, subtract) {\n // Any relative (+/-) values have already been\n // normalized at this point\n var matches = rcssNum.exec(value);\n return matches ? // Guard against undefined \"subtract\", e.g., when used as in cssHooks\n Math.max(0, matches[2] - (subtract || 0)) + (matches[3] || \"px\") : value;\n }\n\n function boxModelAdjustment(elem, dimension, box, isBorderBox, styles, computedVal) {\n var i = dimension === \"width\" ? 1 : 0,\n extra = 0,\n delta = 0; // Adjustment may not be necessary\n\n if (box === (isBorderBox ? \"border\" : \"content\")) {\n return 0;\n }\n\n for (; i < 4; i += 2) {\n // Both box models exclude margin\n if (box === \"margin\") {\n delta += jQuery.css(elem, box + cssExpand[i], true, styles);\n } // If we get here with a content-box, we're seeking \"padding\" or \"border\" or \"margin\"\n\n\n if (!isBorderBox) {\n // Add padding\n delta += jQuery.css(elem, \"padding\" + cssExpand[i], true, styles); // For \"border\" or \"margin\", add border\n\n if (box !== \"padding\") {\n delta += jQuery.css(elem, \"border\" + cssExpand[i] + \"Width\", true, styles); // But still keep track of it otherwise\n } else {\n extra += jQuery.css(elem, \"border\" + cssExpand[i] + \"Width\", true, styles);\n } // If we get here with a border-box (content + padding + border), we're seeking \"content\" or\n // \"padding\" or \"margin\"\n\n } else {\n // For \"content\", subtract padding\n if (box === \"content\") {\n delta -= jQuery.css(elem, \"padding\" + cssExpand[i], true, styles);\n } // For \"content\" or \"padding\", subtract border\n\n\n if (box !== \"margin\") {\n delta -= jQuery.css(elem, \"border\" + cssExpand[i] + \"Width\", true, styles);\n }\n }\n } // Account for positive content-box scroll gutter when requested by providing computedVal\n\n\n if (!isBorderBox && computedVal >= 0) {\n // offsetWidth/offsetHeight is a rounded sum of content, padding, scroll gutter, and border\n // Assuming integer scroll gutter, subtract the rest and round down\n delta += Math.max(0, Math.ceil(elem[\"offset\" + dimension[0].toUpperCase() + dimension.slice(1)] - computedVal - delta - extra - 0.5 // If offsetWidth/offsetHeight is unknown, then we can't determine content-box scroll gutter\n // Use an explicit zero to avoid NaN (gh-3964)\n )) || 0;\n }\n\n return delta;\n }\n\n function getWidthOrHeight(elem, dimension, extra) {\n // Start with computed style\n var styles = getStyles(elem),\n // To avoid forcing a reflow, only fetch boxSizing if we need it (gh-4322).\n // Fake content-box until we know it's needed to know the true value.\n boxSizingNeeded = !support.boxSizingReliable() || extra,\n isBorderBox = boxSizingNeeded && jQuery.css(elem, \"boxSizing\", false, styles) === \"border-box\",\n valueIsBorderBox = isBorderBox,\n val = curCSS(elem, dimension, styles),\n offsetProp = \"offset\" + dimension[0].toUpperCase() + dimension.slice(1); // Support: Firefox <=54\n // Return a confounding non-pixel value or feign ignorance, as appropriate.\n\n if (rnumnonpx.test(val)) {\n if (!extra) {\n return val;\n }\n\n val = \"auto\";\n } // Support: IE 9 - 11 only\n // Use offsetWidth/offsetHeight for when box sizing is unreliable.\n // In those cases, the computed value can be trusted to be border-box.\n\n\n if ((!support.boxSizingReliable() && isBorderBox || // Support: IE 10 - 11+, Edge 15 - 18+\n // IE/Edge misreport `getComputedStyle` of table rows with width/height\n // set in CSS while `offset*` properties report correct values.\n // Interestingly, in some cases IE 9 doesn't suffer from this issue.\n !support.reliableTrDimensions() && nodeName(elem, \"tr\") || // Fall back to offsetWidth/offsetHeight when value is \"auto\"\n // This happens for inline elements with no explicit setting (gh-3571)\n val === \"auto\" || // Support: Android <=4.1 - 4.3 only\n // Also use offsetWidth/offsetHeight for misreported inline dimensions (gh-3602)\n !parseFloat(val) && jQuery.css(elem, \"display\", false, styles) === \"inline\") && // Make sure the element is visible & connected\n elem.getClientRects().length) {\n isBorderBox = jQuery.css(elem, \"boxSizing\", false, styles) === \"border-box\"; // Where available, offsetWidth/offsetHeight approximate border box dimensions.\n // Where not available (e.g., SVG), assume unreliable box-sizing and interpret the\n // retrieved value as a content box dimension.\n\n valueIsBorderBox = offsetProp in elem;\n\n if (valueIsBorderBox) {\n val = elem[offsetProp];\n }\n } // Normalize \"\" and auto\n\n\n val = parseFloat(val) || 0; // Adjust for the element's box model\n\n return val + boxModelAdjustment(elem, dimension, extra || (isBorderBox ? \"border\" : \"content\"), valueIsBorderBox, styles, // Provide the current computed size to request scroll gutter calculation (gh-3589)\n val) + \"px\";\n }\n\n jQuery.extend({\n // Add in style property hooks for overriding the default\n // behavior of getting and setting a style property\n cssHooks: {\n opacity: {\n get: function get(elem, computed) {\n if (computed) {\n // We should always get a number back from opacity\n var ret = curCSS(elem, \"opacity\");\n return ret === \"\" ? \"1\" : ret;\n }\n }\n }\n },\n // Don't automatically add \"px\" to these possibly-unitless properties\n cssNumber: {\n \"animationIterationCount\": true,\n \"columnCount\": true,\n \"fillOpacity\": true,\n \"flexGrow\": true,\n \"flexShrink\": true,\n \"fontWeight\": true,\n \"gridArea\": true,\n \"gridColumn\": true,\n \"gridColumnEnd\": true,\n \"gridColumnStart\": true,\n \"gridRow\": true,\n \"gridRowEnd\": true,\n \"gridRowStart\": true,\n \"lineHeight\": true,\n \"opacity\": true,\n \"order\": true,\n \"orphans\": true,\n \"widows\": true,\n \"zIndex\": true,\n \"zoom\": true\n },\n // Add in properties whose names you wish to fix before\n // setting or getting the value\n cssProps: {},\n // Get and set the style property on a DOM Node\n style: function style(elem, name, value, extra) {\n // Don't set styles on text and comment nodes\n if (!elem || elem.nodeType === 3 || elem.nodeType === 8 || !elem.style) {\n return;\n } // Make sure that we're working with the right name\n\n\n var ret,\n type,\n hooks,\n origName = camelCase(name),\n isCustomProp = rcustomProp.test(name),\n style = elem.style; // Make sure that we're working with the right name. We don't\n // want to query the value if it is a CSS custom property\n // since they are user-defined.\n\n if (!isCustomProp) {\n name = finalPropName(origName);\n } // Gets hook for the prefixed version, then unprefixed version\n\n\n hooks = jQuery.cssHooks[name] || jQuery.cssHooks[origName]; // Check if we're setting a value\n\n if (value !== undefined) {\n type = _typeof(value); // Convert \"+=\" or \"-=\" to relative numbers (trac-7345)\n\n if (type === \"string\" && (ret = rcssNum.exec(value)) && ret[1]) {\n value = adjustCSS(elem, name, ret); // Fixes bug trac-9237\n\n type = \"number\";\n } // Make sure that null and NaN values aren't set (trac-7116)\n\n\n if (value == null || value !== value) {\n return;\n } // If a number was passed in, add the unit (except for certain CSS properties)\n // The isCustomProp check can be removed in jQuery 4.0 when we only auto-append\n // \"px\" to a few hardcoded values.\n\n\n if (type === \"number\" && !isCustomProp) {\n value += ret && ret[3] || (jQuery.cssNumber[origName] ? \"\" : \"px\");\n } // background-* props affect original clone's values\n\n\n if (!support.clearCloneStyle && value === \"\" && name.indexOf(\"background\") === 0) {\n style[name] = \"inherit\";\n } // If a hook was provided, use that value, otherwise just set the specified value\n\n\n if (!hooks || !(\"set\" in hooks) || (value = hooks.set(elem, value, extra)) !== undefined) {\n if (isCustomProp) {\n style.setProperty(name, value);\n } else {\n style[name] = value;\n }\n }\n } else {\n // If a hook was provided get the non-computed value from there\n if (hooks && \"get\" in hooks && (ret = hooks.get(elem, false, extra)) !== undefined) {\n return ret;\n } // Otherwise just get the value from the style object\n\n\n return style[name];\n }\n },\n css: function css(elem, name, extra, styles) {\n var val,\n num,\n hooks,\n origName = camelCase(name),\n isCustomProp = rcustomProp.test(name); // Make sure that we're working with the right name. We don't\n // want to modify the value if it is a CSS custom property\n // since they are user-defined.\n\n if (!isCustomProp) {\n name = finalPropName(origName);\n } // Try prefixed name followed by the unprefixed name\n\n\n hooks = jQuery.cssHooks[name] || jQuery.cssHooks[origName]; // If a hook was provided get the computed value from there\n\n if (hooks && \"get\" in hooks) {\n val = hooks.get(elem, true, extra);\n } // Otherwise, if a way to get the computed value exists, use that\n\n\n if (val === undefined) {\n val = curCSS(elem, name, styles);\n } // Convert \"normal\" to computed value\n\n\n if (val === \"normal\" && name in cssNormalTransform) {\n val = cssNormalTransform[name];\n } // Make numeric if forced or a qualifier was provided and val looks numeric\n\n\n if (extra === \"\" || extra) {\n num = parseFloat(val);\n return extra === true || isFinite(num) ? num || 0 : val;\n }\n\n return val;\n }\n });\n jQuery.each([\"height\", \"width\"], function (_i, dimension) {\n jQuery.cssHooks[dimension] = {\n get: function get(elem, computed, extra) {\n if (computed) {\n // Certain elements can have dimension info if we invisibly show them\n // but it must have a current display style that would benefit\n return rdisplayswap.test(jQuery.css(elem, \"display\")) && ( // Support: Safari 8+\n // Table columns in Safari have non-zero offsetWidth & zero\n // getBoundingClientRect().width unless display is changed.\n // Support: IE <=11 only\n // Running getBoundingClientRect on a disconnected node\n // in IE throws an error.\n !elem.getClientRects().length || !elem.getBoundingClientRect().width) ? swap(elem, cssShow, function () {\n return getWidthOrHeight(elem, dimension, extra);\n }) : getWidthOrHeight(elem, dimension, extra);\n }\n },\n set: function set(elem, value, extra) {\n var matches,\n styles = getStyles(elem),\n // Only read styles.position if the test has a chance to fail\n // to avoid forcing a reflow.\n scrollboxSizeBuggy = !support.scrollboxSize() && styles.position === \"absolute\",\n // To avoid forcing a reflow, only fetch boxSizing if we need it (gh-3991)\n boxSizingNeeded = scrollboxSizeBuggy || extra,\n isBorderBox = boxSizingNeeded && jQuery.css(elem, \"boxSizing\", false, styles) === \"border-box\",\n subtract = extra ? boxModelAdjustment(elem, dimension, extra, isBorderBox, styles) : 0; // Account for unreliable border-box dimensions by comparing offset* to computed and\n // faking a content-box to get border and padding (gh-3699)\n\n if (isBorderBox && scrollboxSizeBuggy) {\n subtract -= Math.ceil(elem[\"offset\" + dimension[0].toUpperCase() + dimension.slice(1)] - parseFloat(styles[dimension]) - boxModelAdjustment(elem, dimension, \"border\", false, styles) - 0.5);\n } // Convert to pixels if value adjustment is needed\n\n\n if (subtract && (matches = rcssNum.exec(value)) && (matches[3] || \"px\") !== \"px\") {\n elem.style[dimension] = value;\n value = jQuery.css(elem, dimension);\n }\n\n return setPositiveNumber(elem, value, subtract);\n }\n };\n });\n jQuery.cssHooks.marginLeft = addGetHookIf(support.reliableMarginLeft, function (elem, computed) {\n if (computed) {\n return (parseFloat(curCSS(elem, \"marginLeft\")) || elem.getBoundingClientRect().left - swap(elem, {\n marginLeft: 0\n }, function () {\n return elem.getBoundingClientRect().left;\n })) + \"px\";\n }\n }); // These hooks are used by animate to expand properties\n\n jQuery.each({\n margin: \"\",\n padding: \"\",\n border: \"Width\"\n }, function (prefix, suffix) {\n jQuery.cssHooks[prefix + suffix] = {\n expand: function expand(value) {\n var i = 0,\n expanded = {},\n // Assumes a single number if not a string\n parts = typeof value === \"string\" ? value.split(\" \") : [value];\n\n for (; i < 4; i++) {\n expanded[prefix + cssExpand[i] + suffix] = parts[i] || parts[i - 2] || parts[0];\n }\n\n return expanded;\n }\n };\n\n if (prefix !== \"margin\") {\n jQuery.cssHooks[prefix + suffix].set = setPositiveNumber;\n }\n });\n jQuery.fn.extend({\n css: function css(name, value) {\n return access(this, function (elem, name, value) {\n var styles,\n len,\n map = {},\n i = 0;\n\n if (Array.isArray(name)) {\n styles = getStyles(elem);\n len = name.length;\n\n for (; i < len; i++) {\n map[name[i]] = jQuery.css(elem, name[i], false, styles);\n }\n\n return map;\n }\n\n return value !== undefined ? jQuery.style(elem, name, value) : jQuery.css(elem, name);\n }, name, value, arguments.length > 1);\n }\n });\n\n function Tween(elem, options, prop, end, easing) {\n return new Tween.prototype.init(elem, options, prop, end, easing);\n }\n\n jQuery.Tween = Tween;\n Tween.prototype = {\n constructor: Tween,\n init: function init(elem, options, prop, end, easing, unit) {\n this.elem = elem;\n this.prop = prop;\n this.easing = easing || jQuery.easing._default;\n this.options = options;\n this.start = this.now = this.cur();\n this.end = end;\n this.unit = unit || (jQuery.cssNumber[prop] ? \"\" : \"px\");\n },\n cur: function cur() {\n var hooks = Tween.propHooks[this.prop];\n return hooks && hooks.get ? hooks.get(this) : Tween.propHooks._default.get(this);\n },\n run: function run(percent) {\n var eased,\n hooks = Tween.propHooks[this.prop];\n\n if (this.options.duration) {\n this.pos = eased = jQuery.easing[this.easing](percent, this.options.duration * percent, 0, 1, this.options.duration);\n } else {\n this.pos = eased = percent;\n }\n\n this.now = (this.end - this.start) * eased + this.start;\n\n if (this.options.step) {\n this.options.step.call(this.elem, this.now, this);\n }\n\n if (hooks && hooks.set) {\n hooks.set(this);\n } else {\n Tween.propHooks._default.set(this);\n }\n\n return this;\n }\n };\n Tween.prototype.init.prototype = Tween.prototype;\n Tween.propHooks = {\n _default: {\n get: function get(tween) {\n var result; // Use a property on the element directly when it is not a DOM element,\n // or when there is no matching style property that exists.\n\n if (tween.elem.nodeType !== 1 || tween.elem[tween.prop] != null && tween.elem.style[tween.prop] == null) {\n return tween.elem[tween.prop];\n } // Passing an empty string as a 3rd parameter to .css will automatically\n // attempt a parseFloat and fallback to a string if the parse fails.\n // Simple values such as \"10px\" are parsed to Float;\n // complex values such as \"rotate(1rad)\" are returned as-is.\n\n\n result = jQuery.css(tween.elem, tween.prop, \"\"); // Empty strings, null, undefined and \"auto\" are converted to 0.\n\n return !result || result === \"auto\" ? 0 : result;\n },\n set: function set(tween) {\n // Use step hook for back compat.\n // Use cssHook if its there.\n // Use .style if available and use plain properties where available.\n if (jQuery.fx.step[tween.prop]) {\n jQuery.fx.step[tween.prop](tween);\n } else if (tween.elem.nodeType === 1 && (jQuery.cssHooks[tween.prop] || tween.elem.style[finalPropName(tween.prop)] != null)) {\n jQuery.style(tween.elem, tween.prop, tween.now + tween.unit);\n } else {\n tween.elem[tween.prop] = tween.now;\n }\n }\n }\n }; // Support: IE <=9 only\n // Panic based approach to setting things on disconnected nodes\n\n Tween.propHooks.scrollTop = Tween.propHooks.scrollLeft = {\n set: function set(tween) {\n if (tween.elem.nodeType && tween.elem.parentNode) {\n tween.elem[tween.prop] = tween.now;\n }\n }\n };\n jQuery.easing = {\n linear: function linear(p) {\n return p;\n },\n swing: function swing(p) {\n return 0.5 - Math.cos(p * Math.PI) / 2;\n },\n _default: \"swing\"\n };\n jQuery.fx = Tween.prototype.init; // Back compat <1.8 extension point\n\n jQuery.fx.step = {};\n var fxNow,\n inProgress,\n rfxtypes = /^(?:toggle|show|hide)$/,\n rrun = /queueHooks$/;\n\n function schedule() {\n if (inProgress) {\n if (document.hidden === false && window.requestAnimationFrame) {\n window.requestAnimationFrame(schedule);\n } else {\n window.setTimeout(schedule, jQuery.fx.interval);\n }\n\n jQuery.fx.tick();\n }\n } // Animations created synchronously will run synchronously\n\n\n function createFxNow() {\n window.setTimeout(function () {\n fxNow = undefined;\n });\n return fxNow = Date.now();\n } // Generate parameters to create a standard animation\n\n\n function genFx(type, includeWidth) {\n var which,\n i = 0,\n attrs = {\n height: type\n }; // If we include width, step value is 1 to do all cssExpand values,\n // otherwise step value is 2 to skip over Left and Right\n\n includeWidth = includeWidth ? 1 : 0;\n\n for (; i < 4; i += 2 - includeWidth) {\n which = cssExpand[i];\n attrs[\"margin\" + which] = attrs[\"padding\" + which] = type;\n }\n\n if (includeWidth) {\n attrs.opacity = attrs.width = type;\n }\n\n return attrs;\n }\n\n function createTween(value, prop, animation) {\n var tween,\n collection = (Animation.tweeners[prop] || []).concat(Animation.tweeners[\"*\"]),\n index = 0,\n length = collection.length;\n\n for (; index < length; index++) {\n if (tween = collection[index].call(animation, prop, value)) {\n // We're done with this property\n return tween;\n }\n }\n }\n\n function defaultPrefilter(elem, props, opts) {\n var prop,\n value,\n toggle,\n hooks,\n oldfire,\n propTween,\n restoreDisplay,\n display,\n isBox = \"width\" in props || \"height\" in props,\n anim = this,\n orig = {},\n style = elem.style,\n hidden = elem.nodeType && isHiddenWithinTree(elem),\n dataShow = dataPriv.get(elem, \"fxshow\"); // Queue-skipping animations hijack the fx hooks\n\n if (!opts.queue) {\n hooks = jQuery._queueHooks(elem, \"fx\");\n\n if (hooks.unqueued == null) {\n hooks.unqueued = 0;\n oldfire = hooks.empty.fire;\n\n hooks.empty.fire = function () {\n if (!hooks.unqueued) {\n oldfire();\n }\n };\n }\n\n hooks.unqueued++;\n anim.always(function () {\n // Ensure the complete handler is called before this completes\n anim.always(function () {\n hooks.unqueued--;\n\n if (!jQuery.queue(elem, \"fx\").length) {\n hooks.empty.fire();\n }\n });\n });\n } // Detect show/hide animations\n\n\n for (prop in props) {\n value = props[prop];\n\n if (rfxtypes.test(value)) {\n delete props[prop];\n toggle = toggle || value === \"toggle\";\n\n if (value === (hidden ? \"hide\" : \"show\")) {\n // Pretend to be hidden if this is a \"show\" and\n // there is still data from a stopped show/hide\n if (value === \"show\" && dataShow && dataShow[prop] !== undefined) {\n hidden = true; // Ignore all other no-op show/hide data\n } else {\n continue;\n }\n }\n\n orig[prop] = dataShow && dataShow[prop] || jQuery.style(elem, prop);\n }\n } // Bail out if this is a no-op like .hide().hide()\n\n\n propTween = !jQuery.isEmptyObject(props);\n\n if (!propTween && jQuery.isEmptyObject(orig)) {\n return;\n } // Restrict \"overflow\" and \"display\" styles during box animations\n\n\n if (isBox && elem.nodeType === 1) {\n // Support: IE <=9 - 11, Edge 12 - 15\n // Record all 3 overflow attributes because IE does not infer the shorthand\n // from identically-valued overflowX and overflowY and Edge just mirrors\n // the overflowX value there.\n opts.overflow = [style.overflow, style.overflowX, style.overflowY]; // Identify a display type, preferring old show/hide data over the CSS cascade\n\n restoreDisplay = dataShow && dataShow.display;\n\n if (restoreDisplay == null) {\n restoreDisplay = dataPriv.get(elem, \"display\");\n }\n\n display = jQuery.css(elem, \"display\");\n\n if (display === \"none\") {\n if (restoreDisplay) {\n display = restoreDisplay;\n } else {\n // Get nonempty value(s) by temporarily forcing visibility\n showHide([elem], true);\n restoreDisplay = elem.style.display || restoreDisplay;\n display = jQuery.css(elem, \"display\");\n showHide([elem]);\n }\n } // Animate inline elements as inline-block\n\n\n if (display === \"inline\" || display === \"inline-block\" && restoreDisplay != null) {\n if (jQuery.css(elem, \"float\") === \"none\") {\n // Restore the original display value at the end of pure show/hide animations\n if (!propTween) {\n anim.done(function () {\n style.display = restoreDisplay;\n });\n\n if (restoreDisplay == null) {\n display = style.display;\n restoreDisplay = display === \"none\" ? \"\" : display;\n }\n }\n\n style.display = \"inline-block\";\n }\n }\n }\n\n if (opts.overflow) {\n style.overflow = \"hidden\";\n anim.always(function () {\n style.overflow = opts.overflow[0];\n style.overflowX = opts.overflow[1];\n style.overflowY = opts.overflow[2];\n });\n } // Implement show/hide animations\n\n\n propTween = false;\n\n for (prop in orig) {\n // General show/hide setup for this element animation\n if (!propTween) {\n if (dataShow) {\n if (\"hidden\" in dataShow) {\n hidden = dataShow.hidden;\n }\n } else {\n dataShow = dataPriv.access(elem, \"fxshow\", {\n display: restoreDisplay\n });\n } // Store hidden/visible for toggle so `.stop().toggle()` \"reverses\"\n\n\n if (toggle) {\n dataShow.hidden = !hidden;\n } // Show elements before animating them\n\n\n if (hidden) {\n showHide([elem], true);\n }\n /* eslint-disable no-loop-func */\n\n\n anim.done(function () {\n /* eslint-enable no-loop-func */\n // The final step of a \"hide\" animation is actually hiding the element\n if (!hidden) {\n showHide([elem]);\n }\n\n dataPriv.remove(elem, \"fxshow\");\n\n for (prop in orig) {\n jQuery.style(elem, prop, orig[prop]);\n }\n });\n } // Per-property setup\n\n\n propTween = createTween(hidden ? dataShow[prop] : 0, prop, anim);\n\n if (!(prop in dataShow)) {\n dataShow[prop] = propTween.start;\n\n if (hidden) {\n propTween.end = propTween.start;\n propTween.start = 0;\n }\n }\n }\n }\n\n function propFilter(props, specialEasing) {\n var index, name, easing, value, hooks; // camelCase, specialEasing and expand cssHook pass\n\n for (index in props) {\n name = camelCase(index);\n easing = specialEasing[name];\n value = props[index];\n\n if (Array.isArray(value)) {\n easing = value[1];\n value = props[index] = value[0];\n }\n\n if (index !== name) {\n props[name] = value;\n delete props[index];\n }\n\n hooks = jQuery.cssHooks[name];\n\n if (hooks && \"expand\" in hooks) {\n value = hooks.expand(value);\n delete props[name]; // Not quite $.extend, this won't overwrite existing keys.\n // Reusing 'index' because we have the correct \"name\"\n\n for (index in value) {\n if (!(index in props)) {\n props[index] = value[index];\n specialEasing[index] = easing;\n }\n }\n } else {\n specialEasing[name] = easing;\n }\n }\n }\n\n function Animation(elem, properties, options) {\n var result,\n stopped,\n index = 0,\n length = Animation.prefilters.length,\n deferred = jQuery.Deferred().always(function () {\n // Don't match elem in the :animated selector\n delete tick.elem;\n }),\n tick = function tick() {\n if (stopped) {\n return false;\n }\n\n var currentTime = fxNow || createFxNow(),\n remaining = Math.max(0, animation.startTime + animation.duration - currentTime),\n // Support: Android 2.3 only\n // Archaic crash bug won't allow us to use `1 - ( 0.5 || 0 )` (trac-12497)\n temp = remaining / animation.duration || 0,\n percent = 1 - temp,\n index = 0,\n length = animation.tweens.length;\n\n for (; index < length; index++) {\n animation.tweens[index].run(percent);\n }\n\n deferred.notifyWith(elem, [animation, percent, remaining]); // If there's more to do, yield\n\n if (percent < 1 && length) {\n return remaining;\n } // If this was an empty animation, synthesize a final progress notification\n\n\n if (!length) {\n deferred.notifyWith(elem, [animation, 1, 0]);\n } // Resolve the animation and report its conclusion\n\n\n deferred.resolveWith(elem, [animation]);\n return false;\n },\n animation = deferred.promise({\n elem: elem,\n props: jQuery.extend({}, properties),\n opts: jQuery.extend(true, {\n specialEasing: {},\n easing: jQuery.easing._default\n }, options),\n originalProperties: properties,\n originalOptions: options,\n startTime: fxNow || createFxNow(),\n duration: options.duration,\n tweens: [],\n createTween: function createTween(prop, end) {\n var tween = jQuery.Tween(elem, animation.opts, prop, end, animation.opts.specialEasing[prop] || animation.opts.easing);\n animation.tweens.push(tween);\n return tween;\n },\n stop: function stop(gotoEnd) {\n var index = 0,\n // If we are going to the end, we want to run all the tweens\n // otherwise we skip this part\n length = gotoEnd ? animation.tweens.length : 0;\n\n if (stopped) {\n return this;\n }\n\n stopped = true;\n\n for (; index < length; index++) {\n animation.tweens[index].run(1);\n } // Resolve when we played the last frame; otherwise, reject\n\n\n if (gotoEnd) {\n deferred.notifyWith(elem, [animation, 1, 0]);\n deferred.resolveWith(elem, [animation, gotoEnd]);\n } else {\n deferred.rejectWith(elem, [animation, gotoEnd]);\n }\n\n return this;\n }\n }),\n props = animation.props;\n\n propFilter(props, animation.opts.specialEasing);\n\n for (; index < length; index++) {\n result = Animation.prefilters[index].call(animation, elem, props, animation.opts);\n\n if (result) {\n if (isFunction(result.stop)) {\n jQuery._queueHooks(animation.elem, animation.opts.queue).stop = result.stop.bind(result);\n }\n\n return result;\n }\n }\n\n jQuery.map(props, createTween, animation);\n\n if (isFunction(animation.opts.start)) {\n animation.opts.start.call(elem, animation);\n } // Attach callbacks from options\n\n\n animation.progress(animation.opts.progress).done(animation.opts.done, animation.opts.complete).fail(animation.opts.fail).always(animation.opts.always);\n jQuery.fx.timer(jQuery.extend(tick, {\n elem: elem,\n anim: animation,\n queue: animation.opts.queue\n }));\n return animation;\n }\n\n jQuery.Animation = jQuery.extend(Animation, {\n tweeners: {\n \"*\": [function (prop, value) {\n var tween = this.createTween(prop, value);\n adjustCSS(tween.elem, prop, rcssNum.exec(value), tween);\n return tween;\n }]\n },\n tweener: function tweener(props, callback) {\n if (isFunction(props)) {\n callback = props;\n props = [\"*\"];\n } else {\n props = props.match(rnothtmlwhite);\n }\n\n var prop,\n index = 0,\n length = props.length;\n\n for (; index < length; index++) {\n prop = props[index];\n Animation.tweeners[prop] = Animation.tweeners[prop] || [];\n Animation.tweeners[prop].unshift(callback);\n }\n },\n prefilters: [defaultPrefilter],\n prefilter: function prefilter(callback, prepend) {\n if (prepend) {\n Animation.prefilters.unshift(callback);\n } else {\n Animation.prefilters.push(callback);\n }\n }\n });\n\n jQuery.speed = function (speed, easing, fn) {\n var opt = speed && _typeof(speed) === \"object\" ? jQuery.extend({}, speed) : {\n complete: fn || !fn && easing || isFunction(speed) && speed,\n duration: speed,\n easing: fn && easing || easing && !isFunction(easing) && easing\n }; // Go to the end state if fx are off\n\n if (jQuery.fx.off) {\n opt.duration = 0;\n } else {\n if (typeof opt.duration !== \"number\") {\n if (opt.duration in jQuery.fx.speeds) {\n opt.duration = jQuery.fx.speeds[opt.duration];\n } else {\n opt.duration = jQuery.fx.speeds._default;\n }\n }\n } // Normalize opt.queue - true/undefined/null -> \"fx\"\n\n\n if (opt.queue == null || opt.queue === true) {\n opt.queue = \"fx\";\n } // Queueing\n\n\n opt.old = opt.complete;\n\n opt.complete = function () {\n if (isFunction(opt.old)) {\n opt.old.call(this);\n }\n\n if (opt.queue) {\n jQuery.dequeue(this, opt.queue);\n }\n };\n\n return opt;\n };\n\n jQuery.fn.extend({\n fadeTo: function fadeTo(speed, to, easing, callback) {\n // Show any hidden elements after setting opacity to 0\n return this.filter(isHiddenWithinTree).css(\"opacity\", 0).show() // Animate to the value specified\n .end().animate({\n opacity: to\n }, speed, easing, callback);\n },\n animate: function animate(prop, speed, easing, callback) {\n var empty = jQuery.isEmptyObject(prop),\n optall = jQuery.speed(speed, easing, callback),\n doAnimation = function doAnimation() {\n // Operate on a copy of prop so per-property easing won't be lost\n var anim = Animation(this, jQuery.extend({}, prop), optall); // Empty animations, or finishing resolves immediately\n\n if (empty || dataPriv.get(this, \"finish\")) {\n anim.stop(true);\n }\n };\n\n doAnimation.finish = doAnimation;\n return empty || optall.queue === false ? this.each(doAnimation) : this.queue(optall.queue, doAnimation);\n },\n stop: function stop(type, clearQueue, gotoEnd) {\n var stopQueue = function stopQueue(hooks) {\n var stop = hooks.stop;\n delete hooks.stop;\n stop(gotoEnd);\n };\n\n if (typeof type !== \"string\") {\n gotoEnd = clearQueue;\n clearQueue = type;\n type = undefined;\n }\n\n if (clearQueue) {\n this.queue(type || \"fx\", []);\n }\n\n return this.each(function () {\n var dequeue = true,\n index = type != null && type + \"queueHooks\",\n timers = jQuery.timers,\n data = dataPriv.get(this);\n\n if (index) {\n if (data[index] && data[index].stop) {\n stopQueue(data[index]);\n }\n } else {\n for (index in data) {\n if (data[index] && data[index].stop && rrun.test(index)) {\n stopQueue(data[index]);\n }\n }\n }\n\n for (index = timers.length; index--;) {\n if (timers[index].elem === this && (type == null || timers[index].queue === type)) {\n timers[index].anim.stop(gotoEnd);\n dequeue = false;\n timers.splice(index, 1);\n }\n } // Start the next in the queue if the last step wasn't forced.\n // Timers currently will call their complete callbacks, which\n // will dequeue but only if they were gotoEnd.\n\n\n if (dequeue || !gotoEnd) {\n jQuery.dequeue(this, type);\n }\n });\n },\n finish: function finish(type) {\n if (type !== false) {\n type = type || \"fx\";\n }\n\n return this.each(function () {\n var index,\n data = dataPriv.get(this),\n queue = data[type + \"queue\"],\n hooks = data[type + \"queueHooks\"],\n timers = jQuery.timers,\n length = queue ? queue.length : 0; // Enable finishing flag on private data\n\n data.finish = true; // Empty the queue first\n\n jQuery.queue(this, type, []);\n\n if (hooks && hooks.stop) {\n hooks.stop.call(this, true);\n } // Look for any active animations, and finish them\n\n\n for (index = timers.length; index--;) {\n if (timers[index].elem === this && timers[index].queue === type) {\n timers[index].anim.stop(true);\n timers.splice(index, 1);\n }\n } // Look for any animations in the old queue and finish them\n\n\n for (index = 0; index < length; index++) {\n if (queue[index] && queue[index].finish) {\n queue[index].finish.call(this);\n }\n } // Turn off finishing flag\n\n\n delete data.finish;\n });\n }\n });\n jQuery.each([\"toggle\", \"show\", \"hide\"], function (_i, name) {\n var cssFn = jQuery.fn[name];\n\n jQuery.fn[name] = function (speed, easing, callback) {\n return speed == null || typeof speed === \"boolean\" ? cssFn.apply(this, arguments) : this.animate(genFx(name, true), speed, easing, callback);\n };\n }); // Generate shortcuts for custom animations\n\n jQuery.each({\n slideDown: genFx(\"show\"),\n slideUp: genFx(\"hide\"),\n slideToggle: genFx(\"toggle\"),\n fadeIn: {\n opacity: \"show\"\n },\n fadeOut: {\n opacity: \"hide\"\n },\n fadeToggle: {\n opacity: \"toggle\"\n }\n }, function (name, props) {\n jQuery.fn[name] = function (speed, easing, callback) {\n return this.animate(props, speed, easing, callback);\n };\n });\n jQuery.timers = [];\n\n jQuery.fx.tick = function () {\n var timer,\n i = 0,\n timers = jQuery.timers;\n fxNow = Date.now();\n\n for (; i < timers.length; i++) {\n timer = timers[i]; // Run the timer and safely remove it when done (allowing for external removal)\n\n if (!timer() && timers[i] === timer) {\n timers.splice(i--, 1);\n }\n }\n\n if (!timers.length) {\n jQuery.fx.stop();\n }\n\n fxNow = undefined;\n };\n\n jQuery.fx.timer = function (timer) {\n jQuery.timers.push(timer);\n jQuery.fx.start();\n };\n\n jQuery.fx.interval = 13;\n\n jQuery.fx.start = function () {\n if (inProgress) {\n return;\n }\n\n inProgress = true;\n schedule();\n };\n\n jQuery.fx.stop = function () {\n inProgress = null;\n };\n\n jQuery.fx.speeds = {\n slow: 600,\n fast: 200,\n // Default speed\n _default: 400\n }; // Based off of the plugin by Clint Helfers, with permission.\n\n jQuery.fn.delay = function (time, type) {\n time = jQuery.fx ? jQuery.fx.speeds[time] || time : time;\n type = type || \"fx\";\n return this.queue(type, function (next, hooks) {\n var timeout = window.setTimeout(next, time);\n\n hooks.stop = function () {\n window.clearTimeout(timeout);\n };\n });\n };\n\n (function () {\n var input = document.createElement(\"input\"),\n select = document.createElement(\"select\"),\n opt = select.appendChild(document.createElement(\"option\"));\n input.type = \"checkbox\"; // Support: Android <=4.3 only\n // Default value for a checkbox should be \"on\"\n\n support.checkOn = input.value !== \"\"; // Support: IE <=11 only\n // Must access selectedIndex to make default options select\n\n support.optSelected = opt.selected; // Support: IE <=11 only\n // An input loses its value after becoming a radio\n\n input = document.createElement(\"input\");\n input.value = \"t\";\n input.type = \"radio\";\n support.radioValue = input.value === \"t\";\n })();\n\n var boolHook,\n attrHandle = jQuery.expr.attrHandle;\n jQuery.fn.extend({\n attr: function attr(name, value) {\n return access(this, jQuery.attr, name, value, arguments.length > 1);\n },\n removeAttr: function removeAttr(name) {\n return this.each(function () {\n jQuery.removeAttr(this, name);\n });\n }\n });\n jQuery.extend({\n attr: function attr(elem, name, value) {\n var ret,\n hooks,\n nType = elem.nodeType; // Don't get/set attributes on text, comment and attribute nodes\n\n if (nType === 3 || nType === 8 || nType === 2) {\n return;\n } // Fallback to prop when attributes are not supported\n\n\n if (typeof elem.getAttribute === \"undefined\") {\n return jQuery.prop(elem, name, value);\n } // Attribute hooks are determined by the lowercase version\n // Grab necessary hook if one is defined\n\n\n if (nType !== 1 || !jQuery.isXMLDoc(elem)) {\n hooks = jQuery.attrHooks[name.toLowerCase()] || (jQuery.expr.match.bool.test(name) ? boolHook : undefined);\n }\n\n if (value !== undefined) {\n if (value === null) {\n jQuery.removeAttr(elem, name);\n return;\n }\n\n if (hooks && \"set\" in hooks && (ret = hooks.set(elem, value, name)) !== undefined) {\n return ret;\n }\n\n elem.setAttribute(name, value + \"\");\n return value;\n }\n\n if (hooks && \"get\" in hooks && (ret = hooks.get(elem, name)) !== null) {\n return ret;\n }\n\n ret = jQuery.find.attr(elem, name); // Non-existent attributes return null, we normalize to undefined\n\n return ret == null ? undefined : ret;\n },\n attrHooks: {\n type: {\n set: function set(elem, value) {\n if (!support.radioValue && value === \"radio\" && nodeName(elem, \"input\")) {\n var val = elem.value;\n elem.setAttribute(\"type\", value);\n\n if (val) {\n elem.value = val;\n }\n\n return value;\n }\n }\n }\n },\n removeAttr: function removeAttr(elem, value) {\n var name,\n i = 0,\n // Attribute names can contain non-HTML whitespace characters\n // https://html.spec.whatwg.org/multipage/syntax.html#attributes-2\n attrNames = value && value.match(rnothtmlwhite);\n\n if (attrNames && elem.nodeType === 1) {\n while (name = attrNames[i++]) {\n elem.removeAttribute(name);\n }\n }\n }\n }); // Hooks for boolean attributes\n\n boolHook = {\n set: function set(elem, value, name) {\n if (value === false) {\n // Remove boolean attributes when set to false\n jQuery.removeAttr(elem, name);\n } else {\n elem.setAttribute(name, name);\n }\n\n return name;\n }\n };\n jQuery.each(jQuery.expr.match.bool.source.match(/\\w+/g), function (_i, name) {\n var getter = attrHandle[name] || jQuery.find.attr;\n\n attrHandle[name] = function (elem, name, isXML) {\n var ret,\n handle,\n lowercaseName = name.toLowerCase();\n\n if (!isXML) {\n // Avoid an infinite loop by temporarily removing this function from the getter\n handle = attrHandle[lowercaseName];\n attrHandle[lowercaseName] = ret;\n ret = getter(elem, name, isXML) != null ? lowercaseName : null;\n attrHandle[lowercaseName] = handle;\n }\n\n return ret;\n };\n });\n var rfocusable = /^(?:input|select|textarea|button)$/i,\n rclickable = /^(?:a|area)$/i;\n jQuery.fn.extend({\n prop: function prop(name, value) {\n return access(this, jQuery.prop, name, value, arguments.length > 1);\n },\n removeProp: function removeProp(name) {\n return this.each(function () {\n delete this[jQuery.propFix[name] || name];\n });\n }\n });\n jQuery.extend({\n prop: function prop(elem, name, value) {\n var ret,\n hooks,\n nType = elem.nodeType; // Don't get/set properties on text, comment and attribute nodes\n\n if (nType === 3 || nType === 8 || nType === 2) {\n return;\n }\n\n if (nType !== 1 || !jQuery.isXMLDoc(elem)) {\n // Fix name and attach hooks\n name = jQuery.propFix[name] || name;\n hooks = jQuery.propHooks[name];\n }\n\n if (value !== undefined) {\n if (hooks && \"set\" in hooks && (ret = hooks.set(elem, value, name)) !== undefined) {\n return ret;\n }\n\n return elem[name] = value;\n }\n\n if (hooks && \"get\" in hooks && (ret = hooks.get(elem, name)) !== null) {\n return ret;\n }\n\n return elem[name];\n },\n propHooks: {\n tabIndex: {\n get: function get(elem) {\n // Support: IE <=9 - 11 only\n // elem.tabIndex doesn't always return the\n // correct value when it hasn't been explicitly set\n // Use proper attribute retrieval (trac-12072)\n var tabindex = jQuery.find.attr(elem, \"tabindex\");\n\n if (tabindex) {\n return parseInt(tabindex, 10);\n }\n\n if (rfocusable.test(elem.nodeName) || rclickable.test(elem.nodeName) && elem.href) {\n return 0;\n }\n\n return -1;\n }\n }\n },\n propFix: {\n \"for\": \"htmlFor\",\n \"class\": \"className\"\n }\n }); // Support: IE <=11 only\n // Accessing the selectedIndex property\n // forces the browser to respect setting selected\n // on the option\n // The getter ensures a default option is selected\n // when in an optgroup\n // eslint rule \"no-unused-expressions\" is disabled for this code\n // since it considers such accessions noop\n\n if (!support.optSelected) {\n jQuery.propHooks.selected = {\n get: function get(elem) {\n /* eslint no-unused-expressions: \"off\" */\n var parent = elem.parentNode;\n\n if (parent && parent.parentNode) {\n parent.parentNode.selectedIndex;\n }\n\n return null;\n },\n set: function set(elem) {\n /* eslint no-unused-expressions: \"off\" */\n var parent = elem.parentNode;\n\n if (parent) {\n parent.selectedIndex;\n\n if (parent.parentNode) {\n parent.parentNode.selectedIndex;\n }\n }\n }\n };\n }\n\n jQuery.each([\"tabIndex\", \"readOnly\", \"maxLength\", \"cellSpacing\", \"cellPadding\", \"rowSpan\", \"colSpan\", \"useMap\", \"frameBorder\", \"contentEditable\"], function () {\n jQuery.propFix[this.toLowerCase()] = this;\n }); // Strip and collapse whitespace according to HTML spec\n // https://infra.spec.whatwg.org/#strip-and-collapse-ascii-whitespace\n\n function stripAndCollapse(value) {\n var tokens = value.match(rnothtmlwhite) || [];\n return tokens.join(\" \");\n }\n\n function getClass(elem) {\n return elem.getAttribute && elem.getAttribute(\"class\") || \"\";\n }\n\n function classesToArray(value) {\n if (Array.isArray(value)) {\n return value;\n }\n\n if (typeof value === \"string\") {\n return value.match(rnothtmlwhite) || [];\n }\n\n return [];\n }\n\n jQuery.fn.extend({\n addClass: function addClass(value) {\n var classNames, cur, curValue, className, i, finalValue;\n\n if (isFunction(value)) {\n return this.each(function (j) {\n jQuery(this).addClass(value.call(this, j, getClass(this)));\n });\n }\n\n classNames = classesToArray(value);\n\n if (classNames.length) {\n return this.each(function () {\n curValue = getClass(this);\n cur = this.nodeType === 1 && \" \" + stripAndCollapse(curValue) + \" \";\n\n if (cur) {\n for (i = 0; i < classNames.length; i++) {\n className = classNames[i];\n\n if (cur.indexOf(\" \" + className + \" \") < 0) {\n cur += className + \" \";\n }\n } // Only assign if different to avoid unneeded rendering.\n\n\n finalValue = stripAndCollapse(cur);\n\n if (curValue !== finalValue) {\n this.setAttribute(\"class\", finalValue);\n }\n }\n });\n }\n\n return this;\n },\n removeClass: function removeClass(value) {\n var classNames, cur, curValue, className, i, finalValue;\n\n if (isFunction(value)) {\n return this.each(function (j) {\n jQuery(this).removeClass(value.call(this, j, getClass(this)));\n });\n }\n\n if (!arguments.length) {\n return this.attr(\"class\", \"\");\n }\n\n classNames = classesToArray(value);\n\n if (classNames.length) {\n return this.each(function () {\n curValue = getClass(this); // This expression is here for better compressibility (see addClass)\n\n cur = this.nodeType === 1 && \" \" + stripAndCollapse(curValue) + \" \";\n\n if (cur) {\n for (i = 0; i < classNames.length; i++) {\n className = classNames[i]; // Remove *all* instances\n\n while (cur.indexOf(\" \" + className + \" \") > -1) {\n cur = cur.replace(\" \" + className + \" \", \" \");\n }\n } // Only assign if different to avoid unneeded rendering.\n\n\n finalValue = stripAndCollapse(cur);\n\n if (curValue !== finalValue) {\n this.setAttribute(\"class\", finalValue);\n }\n }\n });\n }\n\n return this;\n },\n toggleClass: function toggleClass(value, stateVal) {\n var classNames,\n className,\n i,\n self,\n type = _typeof(value),\n isValidValue = type === \"string\" || Array.isArray(value);\n\n if (isFunction(value)) {\n return this.each(function (i) {\n jQuery(this).toggleClass(value.call(this, i, getClass(this), stateVal), stateVal);\n });\n }\n\n if (typeof stateVal === \"boolean\" && isValidValue) {\n return stateVal ? this.addClass(value) : this.removeClass(value);\n }\n\n classNames = classesToArray(value);\n return this.each(function () {\n if (isValidValue) {\n // Toggle individual class names\n self = jQuery(this);\n\n for (i = 0; i < classNames.length; i++) {\n className = classNames[i]; // Check each className given, space separated list\n\n if (self.hasClass(className)) {\n self.removeClass(className);\n } else {\n self.addClass(className);\n }\n } // Toggle whole class name\n\n } else if (value === undefined || type === \"boolean\") {\n className = getClass(this);\n\n if (className) {\n // Store className if set\n dataPriv.set(this, \"__className__\", className);\n } // If the element has a class name or if we're passed `false`,\n // then remove the whole classname (if there was one, the above saved it).\n // Otherwise bring back whatever was previously saved (if anything),\n // falling back to the empty string if nothing was stored.\n\n\n if (this.setAttribute) {\n this.setAttribute(\"class\", className || value === false ? \"\" : dataPriv.get(this, \"__className__\") || \"\");\n }\n }\n });\n },\n hasClass: function hasClass(selector) {\n var className,\n elem,\n i = 0;\n className = \" \" + selector + \" \";\n\n while (elem = this[i++]) {\n if (elem.nodeType === 1 && (\" \" + stripAndCollapse(getClass(elem)) + \" \").indexOf(className) > -1) {\n return true;\n }\n }\n\n return false;\n }\n });\n var rreturn = /\\r/g;\n jQuery.fn.extend({\n val: function val(value) {\n var hooks,\n ret,\n valueIsFunction,\n elem = this[0];\n\n if (!arguments.length) {\n if (elem) {\n hooks = jQuery.valHooks[elem.type] || jQuery.valHooks[elem.nodeName.toLowerCase()];\n\n if (hooks && \"get\" in hooks && (ret = hooks.get(elem, \"value\")) !== undefined) {\n return ret;\n }\n\n ret = elem.value; // Handle most common string cases\n\n if (typeof ret === \"string\") {\n return ret.replace(rreturn, \"\");\n } // Handle cases where value is null/undef or number\n\n\n return ret == null ? \"\" : ret;\n }\n\n return;\n }\n\n valueIsFunction = isFunction(value);\n return this.each(function (i) {\n var val;\n\n if (this.nodeType !== 1) {\n return;\n }\n\n if (valueIsFunction) {\n val = value.call(this, i, jQuery(this).val());\n } else {\n val = value;\n } // Treat null/undefined as \"\"; convert numbers to string\n\n\n if (val == null) {\n val = \"\";\n } else if (typeof val === \"number\") {\n val += \"\";\n } else if (Array.isArray(val)) {\n val = jQuery.map(val, function (value) {\n return value == null ? \"\" : value + \"\";\n });\n }\n\n hooks = jQuery.valHooks[this.type] || jQuery.valHooks[this.nodeName.toLowerCase()]; // If set returns undefined, fall back to normal setting\n\n if (!hooks || !(\"set\" in hooks) || hooks.set(this, val, \"value\") === undefined) {\n this.value = val;\n }\n });\n }\n });\n jQuery.extend({\n valHooks: {\n option: {\n get: function get(elem) {\n var val = jQuery.find.attr(elem, \"value\");\n return val != null ? val : // Support: IE <=10 - 11 only\n // option.text throws exceptions (trac-14686, trac-14858)\n // Strip and collapse whitespace\n // https://html.spec.whatwg.org/#strip-and-collapse-whitespace\n stripAndCollapse(jQuery.text(elem));\n }\n },\n select: {\n get: function get(elem) {\n var value,\n option,\n i,\n options = elem.options,\n index = elem.selectedIndex,\n one = elem.type === \"select-one\",\n values = one ? null : [],\n max = one ? index + 1 : options.length;\n\n if (index < 0) {\n i = max;\n } else {\n i = one ? index : 0;\n } // Loop through all the selected options\n\n\n for (; i < max; i++) {\n option = options[i]; // Support: IE <=9 only\n // IE8-9 doesn't update selected after form reset (trac-2551)\n\n if ((option.selected || i === index) && // Don't return options that are disabled or in a disabled optgroup\n !option.disabled && (!option.parentNode.disabled || !nodeName(option.parentNode, \"optgroup\"))) {\n // Get the specific value for the option\n value = jQuery(option).val(); // We don't need an array for one selects\n\n if (one) {\n return value;\n } // Multi-Selects return an array\n\n\n values.push(value);\n }\n }\n\n return values;\n },\n set: function set(elem, value) {\n var optionSet,\n option,\n options = elem.options,\n values = jQuery.makeArray(value),\n i = options.length;\n\n while (i--) {\n option = options[i];\n /* eslint-disable no-cond-assign */\n\n if (option.selected = jQuery.inArray(jQuery.valHooks.option.get(option), values) > -1) {\n optionSet = true;\n }\n /* eslint-enable no-cond-assign */\n\n } // Force browsers to behave consistently when non-matching value is set\n\n\n if (!optionSet) {\n elem.selectedIndex = -1;\n }\n\n return values;\n }\n }\n }\n }); // Radios and checkboxes getter/setter\n\n jQuery.each([\"radio\", \"checkbox\"], function () {\n jQuery.valHooks[this] = {\n set: function set(elem, value) {\n if (Array.isArray(value)) {\n return elem.checked = jQuery.inArray(jQuery(elem).val(), value) > -1;\n }\n }\n };\n\n if (!support.checkOn) {\n jQuery.valHooks[this].get = function (elem) {\n return elem.getAttribute(\"value\") === null ? \"on\" : elem.value;\n };\n }\n }); // Return jQuery for attributes-only inclusion\n\n support.focusin = \"onfocusin\" in window;\n\n var rfocusMorph = /^(?:focusinfocus|focusoutblur)$/,\n stopPropagationCallback = function stopPropagationCallback(e) {\n e.stopPropagation();\n };\n\n jQuery.extend(jQuery.event, {\n trigger: function trigger(event, data, elem, onlyHandlers) {\n var i,\n cur,\n tmp,\n bubbleType,\n ontype,\n handle,\n special,\n lastElement,\n eventPath = [elem || document],\n type = hasOwn.call(event, \"type\") ? event.type : event,\n namespaces = hasOwn.call(event, \"namespace\") ? event.namespace.split(\".\") : [];\n cur = lastElement = tmp = elem = elem || document; // Don't do events on text and comment nodes\n\n if (elem.nodeType === 3 || elem.nodeType === 8) {\n return;\n } // focus/blur morphs to focusin/out; ensure we're not firing them right now\n\n\n if (rfocusMorph.test(type + jQuery.event.triggered)) {\n return;\n }\n\n if (type.indexOf(\".\") > -1) {\n // Namespaced trigger; create a regexp to match event type in handle()\n namespaces = type.split(\".\");\n type = namespaces.shift();\n namespaces.sort();\n }\n\n ontype = type.indexOf(\":\") < 0 && \"on\" + type; // Caller can pass in a jQuery.Event object, Object, or just an event type string\n\n event = event[jQuery.expando] ? event : new jQuery.Event(type, _typeof(event) === \"object\" && event); // Trigger bitmask: & 1 for native handlers; & 2 for jQuery (always true)\n\n event.isTrigger = onlyHandlers ? 2 : 3;\n event.namespace = namespaces.join(\".\");\n event.rnamespace = event.namespace ? new RegExp(\"(^|\\\\.)\" + namespaces.join(\"\\\\.(?:.*\\\\.|)\") + \"(\\\\.|$)\") : null; // Clean up the event in case it is being reused\n\n event.result = undefined;\n\n if (!event.target) {\n event.target = elem;\n } // Clone any incoming data and prepend the event, creating the handler arg list\n\n\n data = data == null ? [event] : jQuery.makeArray(data, [event]); // Allow special events to draw outside the lines\n\n special = jQuery.event.special[type] || {};\n\n if (!onlyHandlers && special.trigger && special.trigger.apply(elem, data) === false) {\n return;\n } // Determine event propagation path in advance, per W3C events spec (trac-9951)\n // Bubble up to document, then to window; watch for a global ownerDocument var (trac-9724)\n\n\n if (!onlyHandlers && !special.noBubble && !isWindow(elem)) {\n bubbleType = special.delegateType || type;\n\n if (!rfocusMorph.test(bubbleType + type)) {\n cur = cur.parentNode;\n }\n\n for (; cur; cur = cur.parentNode) {\n eventPath.push(cur);\n tmp = cur;\n } // Only add window if we got to document (e.g., not plain obj or detached DOM)\n\n\n if (tmp === (elem.ownerDocument || document)) {\n eventPath.push(tmp.defaultView || tmp.parentWindow || window);\n }\n } // Fire handlers on the event path\n\n\n i = 0;\n\n while ((cur = eventPath[i++]) && !event.isPropagationStopped()) {\n lastElement = cur;\n event.type = i > 1 ? bubbleType : special.bindType || type; // jQuery handler\n\n handle = (dataPriv.get(cur, \"events\") || Object.create(null))[event.type] && dataPriv.get(cur, \"handle\");\n\n if (handle) {\n handle.apply(cur, data);\n } // Native handler\n\n\n handle = ontype && cur[ontype];\n\n if (handle && handle.apply && acceptData(cur)) {\n event.result = handle.apply(cur, data);\n\n if (event.result === false) {\n event.preventDefault();\n }\n }\n }\n\n event.type = type; // If nobody prevented the default action, do it now\n\n if (!onlyHandlers && !event.isDefaultPrevented()) {\n if ((!special._default || special._default.apply(eventPath.pop(), data) === false) && acceptData(elem)) {\n // Call a native DOM method on the target with the same name as the event.\n // Don't do default actions on window, that's where global variables be (trac-6170)\n if (ontype && isFunction(elem[type]) && !isWindow(elem)) {\n // Don't re-trigger an onFOO event when we call its FOO() method\n tmp = elem[ontype];\n\n if (tmp) {\n elem[ontype] = null;\n } // Prevent re-triggering of the same event, since we already bubbled it above\n\n\n jQuery.event.triggered = type;\n\n if (event.isPropagationStopped()) {\n lastElement.addEventListener(type, stopPropagationCallback);\n }\n\n elem[type]();\n\n if (event.isPropagationStopped()) {\n lastElement.removeEventListener(type, stopPropagationCallback);\n }\n\n jQuery.event.triggered = undefined;\n\n if (tmp) {\n elem[ontype] = tmp;\n }\n }\n }\n }\n\n return event.result;\n },\n // Piggyback on a donor event to simulate a different one\n // Used only for `focus(in | out)` events\n simulate: function simulate(type, elem, event) {\n var e = jQuery.extend(new jQuery.Event(), event, {\n type: type,\n isSimulated: true\n });\n jQuery.event.trigger(e, null, elem);\n }\n });\n jQuery.fn.extend({\n trigger: function trigger(type, data) {\n return this.each(function () {\n jQuery.event.trigger(type, data, this);\n });\n },\n triggerHandler: function triggerHandler(type, data) {\n var elem = this[0];\n\n if (elem) {\n return jQuery.event.trigger(type, data, elem, true);\n }\n }\n }); // Support: Firefox <=44\n // Firefox doesn't have focus(in | out) events\n // Related ticket - https://bugzilla.mozilla.org/show_bug.cgi?id=687787\n //\n // Support: Chrome <=48 - 49, Safari <=9.0 - 9.1\n // focus(in | out) events fire after focus & blur events,\n // which is spec violation - http://www.w3.org/TR/DOM-Level-3-Events/#events-focusevent-event-order\n // Related ticket - https://bugs.chromium.org/p/chromium/issues/detail?id=449857\n\n if (!support.focusin) {\n jQuery.each({\n focus: \"focusin\",\n blur: \"focusout\"\n }, function (orig, fix) {\n // Attach a single capturing handler on the document while someone wants focusin/focusout\n var handler = function handler(event) {\n jQuery.event.simulate(fix, event.target, jQuery.event.fix(event));\n };\n\n jQuery.event.special[fix] = {\n setup: function setup() {\n // Handle: regular nodes (via `this.ownerDocument`), window\n // (via `this.document`) & document (via `this`).\n var doc = this.ownerDocument || this.document || this,\n attaches = dataPriv.access(doc, fix);\n\n if (!attaches) {\n doc.addEventListener(orig, handler, true);\n }\n\n dataPriv.access(doc, fix, (attaches || 0) + 1);\n },\n teardown: function teardown() {\n var doc = this.ownerDocument || this.document || this,\n attaches = dataPriv.access(doc, fix) - 1;\n\n if (!attaches) {\n doc.removeEventListener(orig, handler, true);\n dataPriv.remove(doc, fix);\n } else {\n dataPriv.access(doc, fix, attaches);\n }\n }\n };\n });\n }\n\n var location = window.location;\n var nonce = {\n guid: Date.now()\n };\n var rquery = /\\?/; // Cross-browser xml parsing\n\n jQuery.parseXML = function (data) {\n var xml, parserErrorElem;\n\n if (!data || typeof data !== \"string\") {\n return null;\n } // Support: IE 9 - 11 only\n // IE throws on parseFromString with invalid input.\n\n\n try {\n xml = new window.DOMParser().parseFromString(data, \"text/xml\");\n } catch (e) {}\n\n parserErrorElem = xml && xml.getElementsByTagName(\"parsererror\")[0];\n\n if (!xml || parserErrorElem) {\n jQuery.error(\"Invalid XML: \" + (parserErrorElem ? jQuery.map(parserErrorElem.childNodes, function (el) {\n return el.textContent;\n }).join(\"\\n\") : data));\n }\n\n return xml;\n };\n\n var rbracket = /\\[\\]$/,\n rCRLF = /\\r?\\n/g,\n rsubmitterTypes = /^(?:submit|button|image|reset|file)$/i,\n rsubmittable = /^(?:input|select|textarea|keygen)/i;\n\n function buildParams(prefix, obj, traditional, add) {\n var name;\n\n if (Array.isArray(obj)) {\n // Serialize array item.\n jQuery.each(obj, function (i, v) {\n if (traditional || rbracket.test(prefix)) {\n // Treat each array item as a scalar.\n add(prefix, v);\n } else {\n // Item is non-scalar (array or object), encode its numeric index.\n buildParams(prefix + \"[\" + (_typeof(v) === \"object\" && v != null ? i : \"\") + \"]\", v, traditional, add);\n }\n });\n } else if (!traditional && toType(obj) === \"object\") {\n // Serialize object item.\n for (name in obj) {\n buildParams(prefix + \"[\" + name + \"]\", obj[name], traditional, add);\n }\n } else {\n // Serialize scalar item.\n add(prefix, obj);\n }\n } // Serialize an array of form elements or a set of\n // key/values into a query string\n\n\n jQuery.param = function (a, traditional) {\n var prefix,\n s = [],\n add = function add(key, valueOrFunction) {\n // If value is a function, invoke it and use its return value\n var value = isFunction(valueOrFunction) ? valueOrFunction() : valueOrFunction;\n s[s.length] = encodeURIComponent(key) + \"=\" + encodeURIComponent(value == null ? \"\" : value);\n };\n\n if (a == null) {\n return \"\";\n } // If an array was passed in, assume that it is an array of form elements.\n\n\n if (Array.isArray(a) || a.jquery && !jQuery.isPlainObject(a)) {\n // Serialize the form elements\n jQuery.each(a, function () {\n add(this.name, this.value);\n });\n } else {\n // If traditional, encode the \"old\" way (the way 1.3.2 or older\n // did it), otherwise encode params recursively.\n for (prefix in a) {\n buildParams(prefix, a[prefix], traditional, add);\n }\n } // Return the resulting serialization\n\n\n return s.join(\"&\");\n };\n\n jQuery.fn.extend({\n serialize: function serialize() {\n return jQuery.param(this.serializeArray());\n },\n serializeArray: function serializeArray() {\n return this.map(function () {\n // Can add propHook for \"elements\" to filter or add form elements\n var elements = jQuery.prop(this, \"elements\");\n return elements ? jQuery.makeArray(elements) : this;\n }).filter(function () {\n var type = this.type; // Use .is( \":disabled\" ) so that fieldset[disabled] works\n\n return this.name && !jQuery(this).is(\":disabled\") && rsubmittable.test(this.nodeName) && !rsubmitterTypes.test(type) && (this.checked || !rcheckableType.test(type));\n }).map(function (_i, elem) {\n var val = jQuery(this).val();\n\n if (val == null) {\n return null;\n }\n\n if (Array.isArray(val)) {\n return jQuery.map(val, function (val) {\n return {\n name: elem.name,\n value: val.replace(rCRLF, \"\\r\\n\")\n };\n });\n }\n\n return {\n name: elem.name,\n value: val.replace(rCRLF, \"\\r\\n\")\n };\n }).get();\n }\n });\n var r20 = /%20/g,\n rhash = /#.*$/,\n rantiCache = /([?&])_=[^&]*/,\n rheaders = /^(.*?):[ \\t]*([^\\r\\n]*)$/mg,\n // trac-7653, trac-8125, trac-8152: local protocol detection\n rlocalProtocol = /^(?:about|app|app-storage|.+-extension|file|res|widget):$/,\n rnoContent = /^(?:GET|HEAD)$/,\n rprotocol = /^\\/\\//,\n\n /* Prefilters\n * 1) They are useful to introduce custom dataTypes (see ajax/jsonp.js for an example)\n * 2) These are called:\n * - BEFORE asking for a transport\n * - AFTER param serialization (s.data is a string if s.processData is true)\n * 3) key is the dataType\n * 4) the catchall symbol \"*\" can be used\n * 5) execution will start with transport dataType and THEN continue down to \"*\" if needed\n */\n prefilters = {},\n\n /* Transports bindings\n * 1) key is the dataType\n * 2) the catchall symbol \"*\" can be used\n * 3) selection will start with transport dataType and THEN go to \"*\" if needed\n */\n transports = {},\n // Avoid comment-prolog char sequence (trac-10098); must appease lint and evade compression\n allTypes = \"*/\".concat(\"*\"),\n // Anchor tag for parsing the document origin\n originAnchor = document.createElement(\"a\");\n originAnchor.href = location.href; // Base \"constructor\" for jQuery.ajaxPrefilter and jQuery.ajaxTransport\n\n function addToPrefiltersOrTransports(structure) {\n // dataTypeExpression is optional and defaults to \"*\"\n return function (dataTypeExpression, func) {\n if (typeof dataTypeExpression !== \"string\") {\n func = dataTypeExpression;\n dataTypeExpression = \"*\";\n }\n\n var dataType,\n i = 0,\n dataTypes = dataTypeExpression.toLowerCase().match(rnothtmlwhite) || [];\n\n if (isFunction(func)) {\n // For each dataType in the dataTypeExpression\n while (dataType = dataTypes[i++]) {\n // Prepend if requested\n if (dataType[0] === \"+\") {\n dataType = dataType.slice(1) || \"*\";\n (structure[dataType] = structure[dataType] || []).unshift(func); // Otherwise append\n } else {\n (structure[dataType] = structure[dataType] || []).push(func);\n }\n }\n }\n };\n } // Base inspection function for prefilters and transports\n\n\n function inspectPrefiltersOrTransports(structure, options, originalOptions, jqXHR) {\n var inspected = {},\n seekingTransport = structure === transports;\n\n function inspect(dataType) {\n var selected;\n inspected[dataType] = true;\n jQuery.each(structure[dataType] || [], function (_, prefilterOrFactory) {\n var dataTypeOrTransport = prefilterOrFactory(options, originalOptions, jqXHR);\n\n if (typeof dataTypeOrTransport === \"string\" && !seekingTransport && !inspected[dataTypeOrTransport]) {\n options.dataTypes.unshift(dataTypeOrTransport);\n inspect(dataTypeOrTransport);\n return false;\n } else if (seekingTransport) {\n return !(selected = dataTypeOrTransport);\n }\n });\n return selected;\n }\n\n return inspect(options.dataTypes[0]) || !inspected[\"*\"] && inspect(\"*\");\n } // A special extend for ajax options\n // that takes \"flat\" options (not to be deep extended)\n // Fixes trac-9887\n\n\n function ajaxExtend(target, src) {\n var key,\n deep,\n flatOptions = jQuery.ajaxSettings.flatOptions || {};\n\n for (key in src) {\n if (src[key] !== undefined) {\n (flatOptions[key] ? target : deep || (deep = {}))[key] = src[key];\n }\n }\n\n if (deep) {\n jQuery.extend(true, target, deep);\n }\n\n return target;\n }\n /* Handles responses to an ajax request:\n * - finds the right dataType (mediates between content-type and expected dataType)\n * - returns the corresponding response\n */\n\n\n function ajaxHandleResponses(s, jqXHR, responses) {\n var ct,\n type,\n finalDataType,\n firstDataType,\n contents = s.contents,\n dataTypes = s.dataTypes; // Remove auto dataType and get content-type in the process\n\n while (dataTypes[0] === \"*\") {\n dataTypes.shift();\n\n if (ct === undefined) {\n ct = s.mimeType || jqXHR.getResponseHeader(\"Content-Type\");\n }\n } // Check if we're dealing with a known content-type\n\n\n if (ct) {\n for (type in contents) {\n if (contents[type] && contents[type].test(ct)) {\n dataTypes.unshift(type);\n break;\n }\n }\n } // Check to see if we have a response for the expected dataType\n\n\n if (dataTypes[0] in responses) {\n finalDataType = dataTypes[0];\n } else {\n // Try convertible dataTypes\n for (type in responses) {\n if (!dataTypes[0] || s.converters[type + \" \" + dataTypes[0]]) {\n finalDataType = type;\n break;\n }\n\n if (!firstDataType) {\n firstDataType = type;\n }\n } // Or just use first one\n\n\n finalDataType = finalDataType || firstDataType;\n } // If we found a dataType\n // We add the dataType to the list if needed\n // and return the corresponding response\n\n\n if (finalDataType) {\n if (finalDataType !== dataTypes[0]) {\n dataTypes.unshift(finalDataType);\n }\n\n return responses[finalDataType];\n }\n }\n /* Chain conversions given the request and the original response\n * Also sets the responseXXX fields on the jqXHR instance\n */\n\n\n function ajaxConvert(s, response, jqXHR, isSuccess) {\n var conv2,\n current,\n conv,\n tmp,\n prev,\n converters = {},\n // Work with a copy of dataTypes in case we need to modify it for conversion\n dataTypes = s.dataTypes.slice(); // Create converters map with lowercased keys\n\n if (dataTypes[1]) {\n for (conv in s.converters) {\n converters[conv.toLowerCase()] = s.converters[conv];\n }\n }\n\n current = dataTypes.shift(); // Convert to each sequential dataType\n\n while (current) {\n if (s.responseFields[current]) {\n jqXHR[s.responseFields[current]] = response;\n } // Apply the dataFilter if provided\n\n\n if (!prev && isSuccess && s.dataFilter) {\n response = s.dataFilter(response, s.dataType);\n }\n\n prev = current;\n current = dataTypes.shift();\n\n if (current) {\n // There's only work to do if current dataType is non-auto\n if (current === \"*\") {\n current = prev; // Convert response if prev dataType is non-auto and differs from current\n } else if (prev !== \"*\" && prev !== current) {\n // Seek a direct converter\n conv = converters[prev + \" \" + current] || converters[\"* \" + current]; // If none found, seek a pair\n\n if (!conv) {\n for (conv2 in converters) {\n // If conv2 outputs current\n tmp = conv2.split(\" \");\n\n if (tmp[1] === current) {\n // If prev can be converted to accepted input\n conv = converters[prev + \" \" + tmp[0]] || converters[\"* \" + tmp[0]];\n\n if (conv) {\n // Condense equivalence converters\n if (conv === true) {\n conv = converters[conv2]; // Otherwise, insert the intermediate dataType\n } else if (converters[conv2] !== true) {\n current = tmp[0];\n dataTypes.unshift(tmp[1]);\n }\n\n break;\n }\n }\n }\n } // Apply converter (if not an equivalence)\n\n\n if (conv !== true) {\n // Unless errors are allowed to bubble, catch and return them\n if (conv && s[\"throws\"]) {\n response = conv(response);\n } else {\n try {\n response = conv(response);\n } catch (e) {\n return {\n state: \"parsererror\",\n error: conv ? e : \"No conversion from \" + prev + \" to \" + current\n };\n }\n }\n }\n }\n }\n }\n\n return {\n state: \"success\",\n data: response\n };\n }\n\n jQuery.extend({\n // Counter for holding the number of active queries\n active: 0,\n // Last-Modified header cache for next request\n lastModified: {},\n etag: {},\n ajaxSettings: {\n url: location.href,\n type: \"GET\",\n isLocal: rlocalProtocol.test(location.protocol),\n global: true,\n processData: true,\n async: true,\n contentType: \"application/x-www-form-urlencoded; charset=UTF-8\",\n\n /*\n timeout: 0,\n data: null,\n dataType: null,\n username: null,\n password: null,\n cache: null,\n throws: false,\n traditional: false,\n headers: {},\n */\n accepts: {\n \"*\": allTypes,\n text: \"text/plain\",\n html: \"text/html\",\n xml: \"application/xml, text/xml\",\n json: \"application/json, text/javascript\"\n },\n contents: {\n xml: /\\bxml\\b/,\n html: /\\bhtml/,\n json: /\\bjson\\b/\n },\n responseFields: {\n xml: \"responseXML\",\n text: \"responseText\",\n json: \"responseJSON\"\n },\n // Data converters\n // Keys separate source (or catchall \"*\") and destination types with a single space\n converters: {\n // Convert anything to text\n \"* text\": String,\n // Text to html (true = no transformation)\n \"text html\": true,\n // Evaluate text as a json expression\n \"text json\": JSON.parse,\n // Parse text as xml\n \"text xml\": jQuery.parseXML\n },\n // For options that shouldn't be deep extended:\n // you can add your own custom options here if\n // and when you create one that shouldn't be\n // deep extended (see ajaxExtend)\n flatOptions: {\n url: true,\n context: true\n }\n },\n // Creates a full fledged settings object into target\n // with both ajaxSettings and settings fields.\n // If target is omitted, writes into ajaxSettings.\n ajaxSetup: function ajaxSetup(target, settings) {\n return settings ? // Building a settings object\n ajaxExtend(ajaxExtend(target, jQuery.ajaxSettings), settings) : // Extending ajaxSettings\n ajaxExtend(jQuery.ajaxSettings, target);\n },\n ajaxPrefilter: addToPrefiltersOrTransports(prefilters),\n ajaxTransport: addToPrefiltersOrTransports(transports),\n // Main method\n ajax: function ajax(url, options) {\n // If url is an object, simulate pre-1.5 signature\n if (_typeof(url) === \"object\") {\n options = url;\n url = undefined;\n } // Force options to be an object\n\n\n options = options || {};\n\n var transport,\n // URL without anti-cache param\n cacheURL,\n // Response headers\n responseHeadersString,\n responseHeaders,\n // timeout handle\n timeoutTimer,\n // Url cleanup var\n urlAnchor,\n // Request state (becomes false upon send and true upon completion)\n completed,\n // To know if global events are to be dispatched\n fireGlobals,\n // Loop variable\n i,\n // uncached part of the url\n uncached,\n // Create the final options object\n s = jQuery.ajaxSetup({}, options),\n // Callbacks context\n callbackContext = s.context || s,\n // Context for global events is callbackContext if it is a DOM node or jQuery collection\n globalEventContext = s.context && (callbackContext.nodeType || callbackContext.jquery) ? jQuery(callbackContext) : jQuery.event,\n // Deferreds\n deferred = jQuery.Deferred(),\n completeDeferred = jQuery.Callbacks(\"once memory\"),\n // Status-dependent callbacks\n _statusCode = s.statusCode || {},\n // Headers (they are sent all at once)\n requestHeaders = {},\n requestHeadersNames = {},\n // Default abort message\n strAbort = \"canceled\",\n // Fake xhr\n jqXHR = {\n readyState: 0,\n // Builds headers hashtable if needed\n getResponseHeader: function getResponseHeader(key) {\n var match;\n\n if (completed) {\n if (!responseHeaders) {\n responseHeaders = {};\n\n while (match = rheaders.exec(responseHeadersString)) {\n responseHeaders[match[1].toLowerCase() + \" \"] = (responseHeaders[match[1].toLowerCase() + \" \"] || []).concat(match[2]);\n }\n }\n\n match = responseHeaders[key.toLowerCase() + \" \"];\n }\n\n return match == null ? null : match.join(\", \");\n },\n // Raw string\n getAllResponseHeaders: function getAllResponseHeaders() {\n return completed ? responseHeadersString : null;\n },\n // Caches the header\n setRequestHeader: function setRequestHeader(name, value) {\n if (completed == null) {\n name = requestHeadersNames[name.toLowerCase()] = requestHeadersNames[name.toLowerCase()] || name;\n requestHeaders[name] = value;\n }\n\n return this;\n },\n // Overrides response content-type header\n overrideMimeType: function overrideMimeType(type) {\n if (completed == null) {\n s.mimeType = type;\n }\n\n return this;\n },\n // Status-dependent callbacks\n statusCode: function statusCode(map) {\n var code;\n\n if (map) {\n if (completed) {\n // Execute the appropriate callbacks\n jqXHR.always(map[jqXHR.status]);\n } else {\n // Lazy-add the new callbacks in a way that preserves old ones\n for (code in map) {\n _statusCode[code] = [_statusCode[code], map[code]];\n }\n }\n }\n\n return this;\n },\n // Cancel the request\n abort: function abort(statusText) {\n var finalText = statusText || strAbort;\n\n if (transport) {\n transport.abort(finalText);\n }\n\n done(0, finalText);\n return this;\n }\n }; // Attach deferreds\n\n\n deferred.promise(jqXHR); // Add protocol if not provided (prefilters might expect it)\n // Handle falsy url in the settings object (trac-10093: consistency with old signature)\n // We also use the url parameter if available\n\n s.url = ((url || s.url || location.href) + \"\").replace(rprotocol, location.protocol + \"//\"); // Alias method option to type as per ticket trac-12004\n\n s.type = options.method || options.type || s.method || s.type; // Extract dataTypes list\n\n s.dataTypes = (s.dataType || \"*\").toLowerCase().match(rnothtmlwhite) || [\"\"]; // A cross-domain request is in order when the origin doesn't match the current origin.\n\n if (s.crossDomain == null) {\n urlAnchor = document.createElement(\"a\"); // Support: IE <=8 - 11, Edge 12 - 15\n // IE throws exception on accessing the href property if url is malformed,\n // e.g. http://example.com:80x/\n\n try {\n urlAnchor.href = s.url; // Support: IE <=8 - 11 only\n // Anchor's host property isn't correctly set when s.url is relative\n\n urlAnchor.href = urlAnchor.href;\n s.crossDomain = originAnchor.protocol + \"//\" + originAnchor.host !== urlAnchor.protocol + \"//\" + urlAnchor.host;\n } catch (e) {\n // If there is an error parsing the URL, assume it is crossDomain,\n // it can be rejected by the transport if it is invalid\n s.crossDomain = true;\n }\n } // Convert data if not already a string\n\n\n if (s.data && s.processData && typeof s.data !== \"string\") {\n s.data = jQuery.param(s.data, s.traditional);\n } // Apply prefilters\n\n\n inspectPrefiltersOrTransports(prefilters, s, options, jqXHR); // If request was aborted inside a prefilter, stop there\n\n if (completed) {\n return jqXHR;\n } // We can fire global events as of now if asked to\n // Don't fire events if jQuery.event is undefined in an AMD-usage scenario (trac-15118)\n\n\n fireGlobals = jQuery.event && s.global; // Watch for a new set of requests\n\n if (fireGlobals && jQuery.active++ === 0) {\n jQuery.event.trigger(\"ajaxStart\");\n } // Uppercase the type\n\n\n s.type = s.type.toUpperCase(); // Determine if request has content\n\n s.hasContent = !rnoContent.test(s.type); // Save the URL in case we're toying with the If-Modified-Since\n // and/or If-None-Match header later on\n // Remove hash to simplify url manipulation\n\n cacheURL = s.url.replace(rhash, \"\"); // More options handling for requests with no content\n\n if (!s.hasContent) {\n // Remember the hash so we can put it back\n uncached = s.url.slice(cacheURL.length); // If data is available and should be processed, append data to url\n\n if (s.data && (s.processData || typeof s.data === \"string\")) {\n cacheURL += (rquery.test(cacheURL) ? \"&\" : \"?\") + s.data; // trac-9682: remove data so that it's not used in an eventual retry\n\n delete s.data;\n } // Add or update anti-cache param if needed\n\n\n if (s.cache === false) {\n cacheURL = cacheURL.replace(rantiCache, \"$1\");\n uncached = (rquery.test(cacheURL) ? \"&\" : \"?\") + \"_=\" + nonce.guid++ + uncached;\n } // Put hash and anti-cache on the URL that will be requested (gh-1732)\n\n\n s.url = cacheURL + uncached; // Change '%20' to '+' if this is encoded form body content (gh-2658)\n } else if (s.data && s.processData && (s.contentType || \"\").indexOf(\"application/x-www-form-urlencoded\") === 0) {\n s.data = s.data.replace(r20, \"+\");\n } // Set the If-Modified-Since and/or If-None-Match header, if in ifModified mode.\n\n\n if (s.ifModified) {\n if (jQuery.lastModified[cacheURL]) {\n jqXHR.setRequestHeader(\"If-Modified-Since\", jQuery.lastModified[cacheURL]);\n }\n\n if (jQuery.etag[cacheURL]) {\n jqXHR.setRequestHeader(\"If-None-Match\", jQuery.etag[cacheURL]);\n }\n } // Set the correct header, if data is being sent\n\n\n if (s.data && s.hasContent && s.contentType !== false || options.contentType) {\n jqXHR.setRequestHeader(\"Content-Type\", s.contentType);\n } // Set the Accepts header for the server, depending on the dataType\n\n\n jqXHR.setRequestHeader(\"Accept\", s.dataTypes[0] && s.accepts[s.dataTypes[0]] ? s.accepts[s.dataTypes[0]] + (s.dataTypes[0] !== \"*\" ? \", \" + allTypes + \"; q=0.01\" : \"\") : s.accepts[\"*\"]); // Check for headers option\n\n for (i in s.headers) {\n jqXHR.setRequestHeader(i, s.headers[i]);\n } // Allow custom headers/mimetypes and early abort\n\n\n if (s.beforeSend && (s.beforeSend.call(callbackContext, jqXHR, s) === false || completed)) {\n // Abort if not done already and return\n return jqXHR.abort();\n } // Aborting is no longer a cancellation\n\n\n strAbort = \"abort\"; // Install callbacks on deferreds\n\n completeDeferred.add(s.complete);\n jqXHR.done(s.success);\n jqXHR.fail(s.error); // Get transport\n\n transport = inspectPrefiltersOrTransports(transports, s, options, jqXHR); // If no transport, we auto-abort\n\n if (!transport) {\n done(-1, \"No Transport\");\n } else {\n jqXHR.readyState = 1; // Send global event\n\n if (fireGlobals) {\n globalEventContext.trigger(\"ajaxSend\", [jqXHR, s]);\n } // If request was aborted inside ajaxSend, stop there\n\n\n if (completed) {\n return jqXHR;\n } // Timeout\n\n\n if (s.async && s.timeout > 0) {\n timeoutTimer = window.setTimeout(function () {\n jqXHR.abort(\"timeout\");\n }, s.timeout);\n }\n\n try {\n completed = false;\n transport.send(requestHeaders, done);\n } catch (e) {\n // Rethrow post-completion exceptions\n if (completed) {\n throw e;\n } // Propagate others as results\n\n\n done(-1, e);\n }\n } // Callback for when everything is done\n\n\n function done(status, nativeStatusText, responses, headers) {\n var isSuccess,\n success,\n error,\n response,\n modified,\n statusText = nativeStatusText; // Ignore repeat invocations\n\n if (completed) {\n return;\n }\n\n completed = true; // Clear timeout if it exists\n\n if (timeoutTimer) {\n window.clearTimeout(timeoutTimer);\n } // Dereference transport for early garbage collection\n // (no matter how long the jqXHR object will be used)\n\n\n transport = undefined; // Cache response headers\n\n responseHeadersString = headers || \"\"; // Set readyState\n\n jqXHR.readyState = status > 0 ? 4 : 0; // Determine if successful\n\n isSuccess = status >= 200 && status < 300 || status === 304; // Get response data\n\n if (responses) {\n response = ajaxHandleResponses(s, jqXHR, responses);\n } // Use a noop converter for missing script but not if jsonp\n\n\n if (!isSuccess && jQuery.inArray(\"script\", s.dataTypes) > -1 && jQuery.inArray(\"json\", s.dataTypes) < 0) {\n s.converters[\"text script\"] = function () {};\n } // Convert no matter what (that way responseXXX fields are always set)\n\n\n response = ajaxConvert(s, response, jqXHR, isSuccess); // If successful, handle type chaining\n\n if (isSuccess) {\n // Set the If-Modified-Since and/or If-None-Match header, if in ifModified mode.\n if (s.ifModified) {\n modified = jqXHR.getResponseHeader(\"Last-Modified\");\n\n if (modified) {\n jQuery.lastModified[cacheURL] = modified;\n }\n\n modified = jqXHR.getResponseHeader(\"etag\");\n\n if (modified) {\n jQuery.etag[cacheURL] = modified;\n }\n } // if no content\n\n\n if (status === 204 || s.type === \"HEAD\") {\n statusText = \"nocontent\"; // if not modified\n } else if (status === 304) {\n statusText = \"notmodified\"; // If we have data, let's convert it\n } else {\n statusText = response.state;\n success = response.data;\n error = response.error;\n isSuccess = !error;\n }\n } else {\n // Extract error from statusText and normalize for non-aborts\n error = statusText;\n\n if (status || !statusText) {\n statusText = \"error\";\n\n if (status < 0) {\n status = 0;\n }\n }\n } // Set data for the fake xhr object\n\n\n jqXHR.status = status;\n jqXHR.statusText = (nativeStatusText || statusText) + \"\"; // Success/Error\n\n if (isSuccess) {\n deferred.resolveWith(callbackContext, [success, statusText, jqXHR]);\n } else {\n deferred.rejectWith(callbackContext, [jqXHR, statusText, error]);\n } // Status-dependent callbacks\n\n\n jqXHR.statusCode(_statusCode);\n _statusCode = undefined;\n\n if (fireGlobals) {\n globalEventContext.trigger(isSuccess ? \"ajaxSuccess\" : \"ajaxError\", [jqXHR, s, isSuccess ? success : error]);\n } // Complete\n\n\n completeDeferred.fireWith(callbackContext, [jqXHR, statusText]);\n\n if (fireGlobals) {\n globalEventContext.trigger(\"ajaxComplete\", [jqXHR, s]); // Handle the global AJAX counter\n\n if (! --jQuery.active) {\n jQuery.event.trigger(\"ajaxStop\");\n }\n }\n }\n\n return jqXHR;\n },\n getJSON: function getJSON(url, data, callback) {\n return jQuery.get(url, data, callback, \"json\");\n },\n getScript: function getScript(url, callback) {\n return jQuery.get(url, undefined, callback, \"script\");\n }\n });\n jQuery.each([\"get\", \"post\"], function (_i, method) {\n jQuery[method] = function (url, data, callback, type) {\n // Shift arguments if data argument was omitted\n if (isFunction(data)) {\n type = type || callback;\n callback = data;\n data = undefined;\n } // The url can be an options object (which then must have .url)\n\n\n return jQuery.ajax(jQuery.extend({\n url: url,\n type: method,\n dataType: type,\n data: data,\n success: callback\n }, jQuery.isPlainObject(url) && url));\n };\n });\n jQuery.ajaxPrefilter(function (s) {\n var i;\n\n for (i in s.headers) {\n if (i.toLowerCase() === \"content-type\") {\n s.contentType = s.headers[i] || \"\";\n }\n }\n });\n\n jQuery._evalUrl = function (url, options, doc) {\n return jQuery.ajax({\n url: url,\n // Make this explicit, since user can override this through ajaxSetup (trac-11264)\n type: \"GET\",\n dataType: \"script\",\n cache: true,\n async: false,\n global: false,\n // Only evaluate the response if it is successful (gh-4126)\n // dataFilter is not invoked for failure responses, so using it instead\n // of the default converter is kludgy but it works.\n converters: {\n \"text script\": function textScript() {}\n },\n dataFilter: function dataFilter(response) {\n jQuery.globalEval(response, options, doc);\n }\n });\n };\n\n jQuery.fn.extend({\n wrapAll: function wrapAll(html) {\n var wrap;\n\n if (this[0]) {\n if (isFunction(html)) {\n html = html.call(this[0]);\n } // The elements to wrap the target around\n\n\n wrap = jQuery(html, this[0].ownerDocument).eq(0).clone(true);\n\n if (this[0].parentNode) {\n wrap.insertBefore(this[0]);\n }\n\n wrap.map(function () {\n var elem = this;\n\n while (elem.firstElementChild) {\n elem = elem.firstElementChild;\n }\n\n return elem;\n }).append(this);\n }\n\n return this;\n },\n wrapInner: function wrapInner(html) {\n if (isFunction(html)) {\n return this.each(function (i) {\n jQuery(this).wrapInner(html.call(this, i));\n });\n }\n\n return this.each(function () {\n var self = jQuery(this),\n contents = self.contents();\n\n if (contents.length) {\n contents.wrapAll(html);\n } else {\n self.append(html);\n }\n });\n },\n wrap: function wrap(html) {\n var htmlIsFunction = isFunction(html);\n return this.each(function (i) {\n jQuery(this).wrapAll(htmlIsFunction ? html.call(this, i) : html);\n });\n },\n unwrap: function unwrap(selector) {\n this.parent(selector).not(\"body\").each(function () {\n jQuery(this).replaceWith(this.childNodes);\n });\n return this;\n }\n });\n\n jQuery.expr.pseudos.hidden = function (elem) {\n return !jQuery.expr.pseudos.visible(elem);\n };\n\n jQuery.expr.pseudos.visible = function (elem) {\n return !!(elem.offsetWidth || elem.offsetHeight || elem.getClientRects().length);\n };\n\n jQuery.ajaxSettings.xhr = function () {\n try {\n return new window.XMLHttpRequest();\n } catch (e) {}\n };\n\n var xhrSuccessStatus = {\n // File protocol always yields status code 0, assume 200\n 0: 200,\n // Support: IE <=9 only\n // trac-1450: sometimes IE returns 1223 when it should be 204\n 1223: 204\n },\n xhrSupported = jQuery.ajaxSettings.xhr();\n support.cors = !!xhrSupported && \"withCredentials\" in xhrSupported;\n support.ajax = xhrSupported = !!xhrSupported;\n jQuery.ajaxTransport(function (options) {\n var _callback, errorCallback; // Cross domain only allowed if supported through XMLHttpRequest\n\n\n if (support.cors || xhrSupported && !options.crossDomain) {\n return {\n send: function send(headers, complete) {\n var i,\n xhr = options.xhr();\n xhr.open(options.type, options.url, options.async, options.username, options.password); // Apply custom fields if provided\n\n if (options.xhrFields) {\n for (i in options.xhrFields) {\n xhr[i] = options.xhrFields[i];\n }\n } // Override mime type if needed\n\n\n if (options.mimeType && xhr.overrideMimeType) {\n xhr.overrideMimeType(options.mimeType);\n } // X-Requested-With header\n // For cross-domain requests, seeing as conditions for a preflight are\n // akin to a jigsaw puzzle, we simply never set it to be sure.\n // (it can always be set on a per-request basis or even using ajaxSetup)\n // For same-domain requests, won't change header if already provided.\n\n\n if (!options.crossDomain && !headers[\"X-Requested-With\"]) {\n headers[\"X-Requested-With\"] = \"XMLHttpRequest\";\n } // Set headers\n\n\n for (i in headers) {\n xhr.setRequestHeader(i, headers[i]);\n } // Callback\n\n\n _callback = function callback(type) {\n return function () {\n if (_callback) {\n _callback = errorCallback = xhr.onload = xhr.onerror = xhr.onabort = xhr.ontimeout = xhr.onreadystatechange = null;\n\n if (type === \"abort\") {\n xhr.abort();\n } else if (type === \"error\") {\n // Support: IE <=9 only\n // On a manual native abort, IE9 throws\n // errors on any property access that is not readyState\n if (typeof xhr.status !== \"number\") {\n complete(0, \"error\");\n } else {\n complete( // File: protocol always yields status 0; see trac-8605, trac-14207\n xhr.status, xhr.statusText);\n }\n } else {\n complete(xhrSuccessStatus[xhr.status] || xhr.status, xhr.statusText, // Support: IE <=9 only\n // IE9 has no XHR2 but throws on binary (trac-11426)\n // For XHR2 non-text, let the caller handle it (gh-2498)\n (xhr.responseType || \"text\") !== \"text\" || typeof xhr.responseText !== \"string\" ? {\n binary: xhr.response\n } : {\n text: xhr.responseText\n }, xhr.getAllResponseHeaders());\n }\n }\n };\n }; // Listen to events\n\n\n xhr.onload = _callback();\n errorCallback = xhr.onerror = xhr.ontimeout = _callback(\"error\"); // Support: IE 9 only\n // Use onreadystatechange to replace onabort\n // to handle uncaught aborts\n\n if (xhr.onabort !== undefined) {\n xhr.onabort = errorCallback;\n } else {\n xhr.onreadystatechange = function () {\n // Check readyState before timeout as it changes\n if (xhr.readyState === 4) {\n // Allow onerror to be called first,\n // but that will not handle a native abort\n // Also, save errorCallback to a variable\n // as xhr.onerror cannot be accessed\n window.setTimeout(function () {\n if (_callback) {\n errorCallback();\n }\n });\n }\n };\n } // Create the abort callback\n\n\n _callback = _callback(\"abort\");\n\n try {\n // Do send the request (this may raise an exception)\n xhr.send(options.hasContent && options.data || null);\n } catch (e) {\n // trac-14683: Only rethrow if this hasn't been notified as an error yet\n if (_callback) {\n throw e;\n }\n }\n },\n abort: function abort() {\n if (_callback) {\n _callback();\n }\n }\n };\n }\n }); // Prevent auto-execution of scripts when no explicit dataType was provided (See gh-2432)\n\n jQuery.ajaxPrefilter(function (s) {\n if (s.crossDomain) {\n s.contents.script = false;\n }\n }); // Install script dataType\n\n jQuery.ajaxSetup({\n accepts: {\n script: \"text/javascript, application/javascript, \" + \"application/ecmascript, application/x-ecmascript\"\n },\n contents: {\n script: /\\b(?:java|ecma)script\\b/\n },\n converters: {\n \"text script\": function textScript(text) {\n jQuery.globalEval(text);\n return text;\n }\n }\n }); // Handle cache's special case and crossDomain\n\n jQuery.ajaxPrefilter(\"script\", function (s) {\n if (s.cache === undefined) {\n s.cache = false;\n }\n\n if (s.crossDomain) {\n s.type = \"GET\";\n }\n }); // Bind script tag hack transport\n\n jQuery.ajaxTransport(\"script\", function (s) {\n // This transport only deals with cross domain or forced-by-attrs requests\n if (s.crossDomain || s.scriptAttrs) {\n var script, _callback2;\n\n return {\n send: function send(_, complete) {\n script = jQuery(\"<script>\").attr(s.scriptAttrs || {}).prop({\n charset: s.scriptCharset,\n src: s.url\n }).on(\"load error\", _callback2 = function callback(evt) {\n script.remove();\n _callback2 = null;\n\n if (evt) {\n complete(evt.type === \"error\" ? 404 : 200, evt.type);\n }\n }); // Use native DOM manipulation to avoid our domManip AJAX trickery\n\n document.head.appendChild(script[0]);\n },\n abort: function abort() {\n if (_callback2) {\n _callback2();\n }\n }\n };\n }\n });\n var oldCallbacks = [],\n rjsonp = /(=)\\?(?=&|$)|\\?\\?/; // Default jsonp settings\n\n jQuery.ajaxSetup({\n jsonp: \"callback\",\n jsonpCallback: function jsonpCallback() {\n var callback = oldCallbacks.pop() || jQuery.expando + \"_\" + nonce.guid++;\n this[callback] = true;\n return callback;\n }\n }); // Detect, normalize options and install callbacks for jsonp requests\n\n jQuery.ajaxPrefilter(\"json jsonp\", function (s, originalSettings, jqXHR) {\n var callbackName,\n overwritten,\n responseContainer,\n jsonProp = s.jsonp !== false && (rjsonp.test(s.url) ? \"url\" : typeof s.data === \"string\" && (s.contentType || \"\").indexOf(\"application/x-www-form-urlencoded\") === 0 && rjsonp.test(s.data) && \"data\"); // Handle iff the expected data type is \"jsonp\" or we have a parameter to set\n\n if (jsonProp || s.dataTypes[0] === \"jsonp\") {\n // Get callback name, remembering preexisting value associated with it\n callbackName = s.jsonpCallback = isFunction(s.jsonpCallback) ? s.jsonpCallback() : s.jsonpCallback; // Insert callback into url or form data\n\n if (jsonProp) {\n s[jsonProp] = s[jsonProp].replace(rjsonp, \"$1\" + callbackName);\n } else if (s.jsonp !== false) {\n s.url += (rquery.test(s.url) ? \"&\" : \"?\") + s.jsonp + \"=\" + callbackName;\n } // Use data converter to retrieve json after script execution\n\n\n s.converters[\"script json\"] = function () {\n if (!responseContainer) {\n jQuery.error(callbackName + \" was not called\");\n }\n\n return responseContainer[0];\n }; // Force json dataType\n\n\n s.dataTypes[0] = \"json\"; // Install callback\n\n overwritten = window[callbackName];\n\n window[callbackName] = function () {\n responseContainer = arguments;\n }; // Clean-up function (fires after converters)\n\n\n jqXHR.always(function () {\n // If previous value didn't exist - remove it\n if (overwritten === undefined) {\n jQuery(window).removeProp(callbackName); // Otherwise restore preexisting value\n } else {\n window[callbackName] = overwritten;\n } // Save back as free\n\n\n if (s[callbackName]) {\n // Make sure that re-using the options doesn't screw things around\n s.jsonpCallback = originalSettings.jsonpCallback; // Save the callback name for future use\n\n oldCallbacks.push(callbackName);\n } // Call if it was a function and we have a response\n\n\n if (responseContainer && isFunction(overwritten)) {\n overwritten(responseContainer[0]);\n }\n\n responseContainer = overwritten = undefined;\n }); // Delegate to script\n\n return \"script\";\n }\n }); // Support: Safari 8 only\n // In Safari 8 documents created via document.implementation.createHTMLDocument\n // collapse sibling forms: the second one becomes a child of the first one.\n // Because of that, this security measure has to be disabled in Safari 8.\n // https://bugs.webkit.org/show_bug.cgi?id=137337\n\n support.createHTMLDocument = function () {\n var body = document.implementation.createHTMLDocument(\"\").body;\n body.innerHTML = \"<form></form><form></form>\";\n return body.childNodes.length === 2;\n }(); // Argument \"data\" should be string of html\n // context (optional): If specified, the fragment will be created in this context,\n // defaults to document\n // keepScripts (optional): If true, will include scripts passed in the html string\n\n\n jQuery.parseHTML = function (data, context, keepScripts) {\n if (typeof data !== \"string\") {\n return [];\n }\n\n if (typeof context === \"boolean\") {\n keepScripts = context;\n context = false;\n }\n\n var base, parsed, scripts;\n\n if (!context) {\n // Stop scripts or inline event handlers from being executed immediately\n // by using document.implementation\n if (support.createHTMLDocument) {\n context = document.implementation.createHTMLDocument(\"\"); // Set the base href for the created document\n // so any parsed elements with URLs\n // are based on the document's URL (gh-2965)\n\n base = context.createElement(\"base\");\n base.href = document.location.href;\n context.head.appendChild(base);\n } else {\n context = document;\n }\n }\n\n parsed = rsingleTag.exec(data);\n scripts = !keepScripts && []; // Single tag\n\n if (parsed) {\n return [context.createElement(parsed[1])];\n }\n\n parsed = buildFragment([data], context, scripts);\n\n if (scripts && scripts.length) {\n jQuery(scripts).remove();\n }\n\n return jQuery.merge([], parsed.childNodes);\n };\n /**\n * Load a url into a page\n */\n\n\n jQuery.fn.load = function (url, params, callback) {\n var selector,\n type,\n response,\n self = this,\n off = url.indexOf(\" \");\n\n if (off > -1) {\n selector = stripAndCollapse(url.slice(off));\n url = url.slice(0, off);\n } // If it's a function\n\n\n if (isFunction(params)) {\n // We assume that it's the callback\n callback = params;\n params = undefined; // Otherwise, build a param string\n } else if (params && _typeof(params) === \"object\") {\n type = \"POST\";\n } // If we have elements to modify, make the request\n\n\n if (self.length > 0) {\n jQuery.ajax({\n url: url,\n // If \"type\" variable is undefined, then \"GET\" method will be used.\n // Make value of this field explicit since\n // user can override it through ajaxSetup method\n type: type || \"GET\",\n dataType: \"html\",\n data: params\n }).done(function (responseText) {\n // Save response for use in complete callback\n response = arguments;\n self.html(selector ? // If a selector was specified, locate the right elements in a dummy div\n // Exclude scripts to avoid IE 'Permission Denied' errors\n jQuery(\"<div>\").append(jQuery.parseHTML(responseText)).find(selector) : // Otherwise use the full result\n responseText); // If the request succeeds, this function gets \"data\", \"status\", \"jqXHR\"\n // but they are ignored because response was set above.\n // If it fails, this function gets \"jqXHR\", \"status\", \"error\"\n }).always(callback && function (jqXHR, status) {\n self.each(function () {\n callback.apply(this, response || [jqXHR.responseText, status, jqXHR]);\n });\n });\n }\n\n return this;\n };\n\n jQuery.expr.pseudos.animated = function (elem) {\n return jQuery.grep(jQuery.timers, function (fn) {\n return elem === fn.elem;\n }).length;\n };\n\n jQuery.offset = {\n setOffset: function setOffset(elem, options, i) {\n var curPosition,\n curLeft,\n curCSSTop,\n curTop,\n curOffset,\n curCSSLeft,\n calculatePosition,\n position = jQuery.css(elem, \"position\"),\n curElem = jQuery(elem),\n props = {}; // Set position first, in-case top/left are set even on static elem\n\n if (position === \"static\") {\n elem.style.position = \"relative\";\n }\n\n curOffset = curElem.offset();\n curCSSTop = jQuery.css(elem, \"top\");\n curCSSLeft = jQuery.css(elem, \"left\");\n calculatePosition = (position === \"absolute\" || position === \"fixed\") && (curCSSTop + curCSSLeft).indexOf(\"auto\") > -1; // Need to be able to calculate position if either\n // top or left is auto and position is either absolute or fixed\n\n if (calculatePosition) {\n curPosition = curElem.position();\n curTop = curPosition.top;\n curLeft = curPosition.left;\n } else {\n curTop = parseFloat(curCSSTop) || 0;\n curLeft = parseFloat(curCSSLeft) || 0;\n }\n\n if (isFunction(options)) {\n // Use jQuery.extend here to allow modification of coordinates argument (gh-1848)\n options = options.call(elem, i, jQuery.extend({}, curOffset));\n }\n\n if (options.top != null) {\n props.top = options.top - curOffset.top + curTop;\n }\n\n if (options.left != null) {\n props.left = options.left - curOffset.left + curLeft;\n }\n\n if (\"using\" in options) {\n options.using.call(elem, props);\n } else {\n curElem.css(props);\n }\n }\n };\n jQuery.fn.extend({\n // offset() relates an element's border box to the document origin\n offset: function offset(options) {\n // Preserve chaining for setter\n if (arguments.length) {\n return options === undefined ? this : this.each(function (i) {\n jQuery.offset.setOffset(this, options, i);\n });\n }\n\n var rect,\n win,\n elem = this[0];\n\n if (!elem) {\n return;\n } // Return zeros for disconnected and hidden (display: none) elements (gh-2310)\n // Support: IE <=11 only\n // Running getBoundingClientRect on a\n // disconnected node in IE throws an error\n\n\n if (!elem.getClientRects().length) {\n return {\n top: 0,\n left: 0\n };\n } // Get document-relative position by adding viewport scroll to viewport-relative gBCR\n\n\n rect = elem.getBoundingClientRect();\n win = elem.ownerDocument.defaultView;\n return {\n top: rect.top + win.pageYOffset,\n left: rect.left + win.pageXOffset\n };\n },\n // position() relates an element's margin box to its offset parent's padding box\n // This corresponds to the behavior of CSS absolute positioning\n position: function position() {\n if (!this[0]) {\n return;\n }\n\n var offsetParent,\n offset,\n doc,\n elem = this[0],\n parentOffset = {\n top: 0,\n left: 0\n }; // position:fixed elements are offset from the viewport, which itself always has zero offset\n\n if (jQuery.css(elem, \"position\") === \"fixed\") {\n // Assume position:fixed implies availability of getBoundingClientRect\n offset = elem.getBoundingClientRect();\n } else {\n offset = this.offset(); // Account for the *real* offset parent, which can be the document or its root element\n // when a statically positioned element is identified\n\n doc = elem.ownerDocument;\n offsetParent = elem.offsetParent || doc.documentElement;\n\n while (offsetParent && (offsetParent === doc.body || offsetParent === doc.documentElement) && jQuery.css(offsetParent, \"position\") === \"static\") {\n offsetParent = offsetParent.parentNode;\n }\n\n if (offsetParent && offsetParent !== elem && offsetParent.nodeType === 1) {\n // Incorporate borders into its offset, since they are outside its content origin\n parentOffset = jQuery(offsetParent).offset();\n parentOffset.top += jQuery.css(offsetParent, \"borderTopWidth\", true);\n parentOffset.left += jQuery.css(offsetParent, \"borderLeftWidth\", true);\n }\n } // Subtract parent offsets and element margins\n\n\n return {\n top: offset.top - parentOffset.top - jQuery.css(elem, \"marginTop\", true),\n left: offset.left - parentOffset.left - jQuery.css(elem, \"marginLeft\", true)\n };\n },\n // This method will return documentElement in the following cases:\n // 1) For the element inside the iframe without offsetParent, this method will return\n // documentElement of the parent window\n // 2) For the hidden or detached element\n // 3) For body or html element, i.e. in case of the html node - it will return itself\n //\n // but those exceptions were never presented as a real life use-cases\n // and might be considered as more preferable results.\n //\n // This logic, however, is not guaranteed and can change at any point in the future\n offsetParent: function offsetParent() {\n return this.map(function () {\n var offsetParent = this.offsetParent;\n\n while (offsetParent && jQuery.css(offsetParent, \"position\") === \"static\") {\n offsetParent = offsetParent.offsetParent;\n }\n\n return offsetParent || documentElement;\n });\n }\n }); // Create scrollLeft and scrollTop methods\n\n jQuery.each({\n scrollLeft: \"pageXOffset\",\n scrollTop: \"pageYOffset\"\n }, function (method, prop) {\n var top = \"pageYOffset\" === prop;\n\n jQuery.fn[method] = function (val) {\n return access(this, function (elem, method, val) {\n // Coalesce documents and windows\n var win;\n\n if (isWindow(elem)) {\n win = elem;\n } else if (elem.nodeType === 9) {\n win = elem.defaultView;\n }\n\n if (val === undefined) {\n return win ? win[prop] : elem[method];\n }\n\n if (win) {\n win.scrollTo(!top ? val : win.pageXOffset, top ? val : win.pageYOffset);\n } else {\n elem[method] = val;\n }\n }, method, val, arguments.length);\n };\n }); // Support: Safari <=7 - 9.1, Chrome <=37 - 49\n // Add the top/left cssHooks using jQuery.fn.position\n // Webkit bug: https://bugs.webkit.org/show_bug.cgi?id=29084\n // Blink bug: https://bugs.chromium.org/p/chromium/issues/detail?id=589347\n // getComputedStyle returns percent when specified for top/left/bottom/right;\n // rather than make the css module depend on the offset module, just check for it here\n\n jQuery.each([\"top\", \"left\"], function (_i, prop) {\n jQuery.cssHooks[prop] = addGetHookIf(support.pixelPosition, function (elem, computed) {\n if (computed) {\n computed = curCSS(elem, prop); // If curCSS returns percentage, fallback to offset\n\n return rnumnonpx.test(computed) ? jQuery(elem).position()[prop] + \"px\" : computed;\n }\n });\n }); // Create innerHeight, innerWidth, height, width, outerHeight and outerWidth methods\n\n jQuery.each({\n Height: \"height\",\n Width: \"width\"\n }, function (name, type) {\n jQuery.each({\n padding: \"inner\" + name,\n content: type,\n \"\": \"outer\" + name\n }, function (defaultExtra, funcName) {\n // Margin is only for outerHeight, outerWidth\n jQuery.fn[funcName] = function (margin, value) {\n var chainable = arguments.length && (defaultExtra || typeof margin !== \"boolean\"),\n extra = defaultExtra || (margin === true || value === true ? \"margin\" : \"border\");\n return access(this, function (elem, type, value) {\n var doc;\n\n if (isWindow(elem)) {\n // $( window ).outerWidth/Height return w/h including scrollbars (gh-1729)\n return funcName.indexOf(\"outer\") === 0 ? elem[\"inner\" + name] : elem.document.documentElement[\"client\" + name];\n } // Get document width or height\n\n\n if (elem.nodeType === 9) {\n doc = elem.documentElement; // Either scroll[Width/Height] or offset[Width/Height] or client[Width/Height],\n // whichever is greatest\n\n return Math.max(elem.body[\"scroll\" + name], doc[\"scroll\" + name], elem.body[\"offset\" + name], doc[\"offset\" + name], doc[\"client\" + name]);\n }\n\n return value === undefined ? // Get width or height on the element, requesting but not forcing parseFloat\n jQuery.css(elem, type, extra) : // Set width or height on the element\n jQuery.style(elem, type, value, extra);\n }, type, chainable ? margin : undefined, chainable);\n };\n });\n });\n jQuery.each([\"ajaxStart\", \"ajaxStop\", \"ajaxComplete\", \"ajaxError\", \"ajaxSuccess\", \"ajaxSend\"], function (_i, type) {\n jQuery.fn[type] = function (fn) {\n return this.on(type, fn);\n };\n });\n jQuery.fn.extend({\n bind: function bind(types, data, fn) {\n return this.on(types, null, data, fn);\n },\n unbind: function unbind(types, fn) {\n return this.off(types, null, fn);\n },\n delegate: function delegate(selector, types, data, fn) {\n return this.on(types, selector, data, fn);\n },\n undelegate: function undelegate(selector, types, fn) {\n // ( namespace ) or ( selector, types [, fn] )\n return arguments.length === 1 ? this.off(selector, \"**\") : this.off(types, selector || \"**\", fn);\n },\n hover: function hover(fnOver, fnOut) {\n return this.mouseenter(fnOver).mouseleave(fnOut || fnOver);\n }\n });\n jQuery.each((\"blur focus focusin focusout resize scroll click dblclick \" + \"mousedown mouseup mousemove mouseover mouseout mouseenter mouseleave \" + \"change select submit keydown keypress keyup contextmenu\").split(\" \"), function (_i, name) {\n // Handle event binding\n jQuery.fn[name] = function (data, fn) {\n return arguments.length > 0 ? this.on(name, null, data, fn) : this.trigger(name);\n };\n }); // Support: Android <=4.0 only\n // Make sure we trim BOM and NBSP\n // Require that the \"whitespace run\" starts from a non-whitespace\n // to avoid O(N^2) behavior when the engine would try matching \"\\s+$\" at each space position.\n\n var rtrim = /^[\\s\\uFEFF\\xA0]+|([^\\s\\uFEFF\\xA0])[\\s\\uFEFF\\xA0]+$/g; // Bind a function to a context, optionally partially applying any\n // arguments.\n // jQuery.proxy is deprecated to promote standards (specifically Function#bind)\n // However, it is not slated for removal any time soon\n\n jQuery.proxy = function (fn, context) {\n var tmp, args, proxy;\n\n if (typeof context === \"string\") {\n tmp = fn[context];\n context = fn;\n fn = tmp;\n } // Quick check to determine if target is callable, in the spec\n // this throws a TypeError, but we will just return undefined.\n\n\n if (!isFunction(fn)) {\n return undefined;\n } // Simulated bind\n\n\n args = _slice.call(arguments, 2);\n\n proxy = function proxy() {\n return fn.apply(context || this, args.concat(_slice.call(arguments)));\n }; // Set the guid of unique handler to the same of original handler, so it can be removed\n\n\n proxy.guid = fn.guid = fn.guid || jQuery.guid++;\n return proxy;\n };\n\n jQuery.holdReady = function (hold) {\n if (hold) {\n jQuery.readyWait++;\n } else {\n jQuery.ready(true);\n }\n };\n\n jQuery.isArray = Array.isArray;\n jQuery.parseJSON = JSON.parse;\n jQuery.nodeName = nodeName;\n jQuery.isFunction = isFunction;\n jQuery.isWindow = isWindow;\n jQuery.camelCase = camelCase;\n jQuery.type = toType;\n jQuery.now = Date.now;\n\n jQuery.isNumeric = function (obj) {\n // As of jQuery 3.0, isNumeric is limited to\n // strings and numbers (primitives or objects)\n // that can be coerced to finite numbers (gh-2662)\n var type = jQuery.type(obj);\n return (type === \"number\" || type === \"string\") && // parseFloat NaNs numeric-cast false positives (\"\")\n // ...but misinterprets leading-number strings, particularly hex literals (\"0x...\")\n // subtraction forces infinities to NaN\n !isNaN(obj - parseFloat(obj));\n };\n\n jQuery.trim = function (text) {\n return text == null ? \"\" : (text + \"\").replace(rtrim, \"$1\");\n }; // Register as a named AMD module, since jQuery can be concatenated with other\n // files that may use define, but not via a proper concatenation script that\n // understands anonymous AMD modules. A named AMD is safest and most robust\n // way to register. Lowercase jquery is used because AMD module names are\n // derived from file names, and jQuery is normally delivered in a lowercase\n // file name. Do this after creating the global so that if an AMD module wants\n // to call noConflict to hide this version of jQuery, it will work.\n // Note that for maximum portability, libraries that are not jQuery should\n // declare themselves as anonymous modules, and avoid setting a global if an\n // AMD loader is present. jQuery is a special case. For more information, see\n // https://github.com/jrburke/requirejs/wiki/Updating-existing-libraries#wiki-anon\n\n\n if (typeof define === \"function\" && define.amd) {\n define(\"jquery\", [], function () {\n return jQuery;\n });\n }\n\n var // Map over jQuery in case of overwrite\n _jQuery = window.jQuery,\n // Map over the $ in case of overwrite\n _$ = window.$;\n\n jQuery.noConflict = function (deep) {\n if (window.$ === jQuery) {\n window.$ = _$;\n }\n\n if (deep && window.jQuery === jQuery) {\n window.jQuery = _jQuery;\n }\n\n return jQuery;\n }; // Expose jQuery and $ identifiers, even in AMD\n // (trac-7102#comment:10, https://github.com/jquery/jquery/pull/557)\n // and CommonJS for browser emulators (trac-13566)\n\n\n if (typeof noGlobal === \"undefined\") {\n window.jQuery = window.$ = jQuery;\n }\n\n return jQuery;\n});","function _typeof(obj) { \"@babel/helpers - typeof\"; return _typeof = \"function\" == typeof Symbol && \"symbol\" == typeof Symbol.iterator ? function (obj) { return typeof obj; } : function (obj) { return obj && \"function\" == typeof Symbol && obj.constructor === Symbol && obj !== Symbol.prototype ? \"symbol\" : typeof obj; }, _typeof(obj); }\n\n/*\nUnobtrusive JavaScript\nhttps://github.com/rails/rails/blob/master/actionview/app/assets/javascripts\nReleased under the MIT license\n */\n(function () {\n var context = this;\n (function () {\n (function () {\n this.Rails = {\n linkClickSelector: 'a[data-confirm], a[data-method], a[data-remote]:not([disabled]), a[data-disable-with], a[data-disable]',\n buttonClickSelector: {\n selector: 'button[data-remote]:not([form]), button[data-confirm]:not([form])',\n exclude: 'form button'\n },\n inputChangeSelector: 'select[data-remote], input[data-remote], textarea[data-remote]',\n formSubmitSelector: 'form',\n formInputClickSelector: 'form input[type=submit], form input[type=image], form button[type=submit], form button:not([type]), input[type=submit][form], input[type=image][form], button[type=submit][form], button[form]:not([type])',\n formDisableSelector: 'input[data-disable-with]:enabled, button[data-disable-with]:enabled, textarea[data-disable-with]:enabled, input[data-disable]:enabled, button[data-disable]:enabled, textarea[data-disable]:enabled',\n formEnableSelector: 'input[data-disable-with]:disabled, button[data-disable-with]:disabled, textarea[data-disable-with]:disabled, input[data-disable]:disabled, button[data-disable]:disabled, textarea[data-disable]:disabled',\n fileInputSelector: 'input[name][type=file]:not([disabled])',\n linkDisableSelector: 'a[data-disable-with], a[data-disable]',\n buttonDisableSelector: 'button[data-remote][data-disable-with], button[data-remote][data-disable]'\n };\n }).call(this);\n }).call(context);\n var Rails = context.Rails;\n (function () {\n (function () {\n var cspNonce;\n\n cspNonce = Rails.cspNonce = function () {\n var meta;\n meta = document.querySelector('meta[name=csp-nonce]');\n return meta && meta.content;\n };\n }).call(this);\n (function () {\n var expando, m;\n m = Element.prototype.matches || Element.prototype.matchesSelector || Element.prototype.mozMatchesSelector || Element.prototype.msMatchesSelector || Element.prototype.oMatchesSelector || Element.prototype.webkitMatchesSelector;\n\n Rails.matches = function (element, selector) {\n if (selector.exclude != null) {\n return m.call(element, selector.selector) && !m.call(element, selector.exclude);\n } else {\n return m.call(element, selector);\n }\n };\n\n expando = '_ujsData';\n\n Rails.getData = function (element, key) {\n var ref;\n return (ref = element[expando]) != null ? ref[key] : void 0;\n };\n\n Rails.setData = function (element, key, value) {\n if (element[expando] == null) {\n element[expando] = {};\n }\n\n return element[expando][key] = value;\n };\n\n Rails.$ = function (selector) {\n return Array.prototype.slice.call(document.querySelectorAll(selector));\n };\n }).call(this);\n (function () {\n var $, csrfParam, csrfToken;\n $ = Rails.$;\n\n csrfToken = Rails.csrfToken = function () {\n var meta;\n meta = document.querySelector('meta[name=csrf-token]');\n return meta && meta.content;\n };\n\n csrfParam = Rails.csrfParam = function () {\n var meta;\n meta = document.querySelector('meta[name=csrf-param]');\n return meta && meta.content;\n };\n\n Rails.CSRFProtection = function (xhr) {\n var token;\n token = csrfToken();\n\n if (token != null) {\n return xhr.setRequestHeader('X-CSRF-Token', token);\n }\n };\n\n Rails.refreshCSRFTokens = function () {\n var param, token;\n token = csrfToken();\n param = csrfParam();\n\n if (token != null && param != null) {\n return $('form input[name=\"' + param + '\"]').forEach(function (input) {\n return input.value = token;\n });\n }\n };\n }).call(this);\n (function () {\n var CustomEvent, fire, matches, preventDefault;\n matches = Rails.matches;\n CustomEvent = window.CustomEvent;\n\n if (typeof CustomEvent !== 'function') {\n CustomEvent = function CustomEvent(event, params) {\n var evt;\n evt = document.createEvent('CustomEvent');\n evt.initCustomEvent(event, params.bubbles, params.cancelable, params.detail);\n return evt;\n };\n\n CustomEvent.prototype = window.Event.prototype;\n preventDefault = CustomEvent.prototype.preventDefault;\n\n CustomEvent.prototype.preventDefault = function () {\n var result;\n result = preventDefault.call(this);\n\n if (this.cancelable && !this.defaultPrevented) {\n Object.defineProperty(this, 'defaultPrevented', {\n get: function get() {\n return true;\n }\n });\n }\n\n return result;\n };\n }\n\n fire = Rails.fire = function (obj, name, data) {\n var event;\n event = new CustomEvent(name, {\n bubbles: true,\n cancelable: true,\n detail: data\n });\n obj.dispatchEvent(event);\n return !event.defaultPrevented;\n };\n\n Rails.stopEverything = function (e) {\n fire(e.target, 'ujs:everythingStopped');\n e.preventDefault();\n e.stopPropagation();\n return e.stopImmediatePropagation();\n };\n\n Rails.delegate = function (element, selector, eventType, handler) {\n return element.addEventListener(eventType, function (e) {\n var target;\n target = e.target;\n\n while (!(!(target instanceof Element) || matches(target, selector))) {\n target = target.parentNode;\n }\n\n if (target instanceof Element && handler.call(target, e) === false) {\n e.preventDefault();\n return e.stopPropagation();\n }\n });\n };\n }).call(this);\n (function () {\n var AcceptHeaders, CSRFProtection, createXHR, cspNonce, fire, prepareOptions, processResponse;\n cspNonce = Rails.cspNonce, CSRFProtection = Rails.CSRFProtection, fire = Rails.fire;\n AcceptHeaders = {\n '*': '*/*',\n text: 'text/plain',\n html: 'text/html',\n xml: 'application/xml, text/xml',\n json: 'application/json, text/javascript',\n script: 'text/javascript, application/javascript, application/ecmascript, application/x-ecmascript'\n };\n\n Rails.ajax = function (options) {\n var xhr;\n options = prepareOptions(options);\n xhr = createXHR(options, function () {\n var ref, response;\n response = processResponse((ref = xhr.response) != null ? ref : xhr.responseText, xhr.getResponseHeader('Content-Type'));\n\n if (Math.floor(xhr.status / 100) === 2) {\n if (typeof options.success === \"function\") {\n options.success(response, xhr.statusText, xhr);\n }\n } else {\n if (typeof options.error === \"function\") {\n options.error(response, xhr.statusText, xhr);\n }\n }\n\n return typeof options.complete === \"function\" ? options.complete(xhr, xhr.statusText) : void 0;\n });\n\n if (options.beforeSend != null && !options.beforeSend(xhr, options)) {\n return false;\n }\n\n if (xhr.readyState === XMLHttpRequest.OPENED) {\n return xhr.send(options.data);\n }\n };\n\n prepareOptions = function prepareOptions(options) {\n options.url = options.url || location.href;\n options.type = options.type.toUpperCase();\n\n if (options.type === 'GET' && options.data) {\n if (options.url.indexOf('?') < 0) {\n options.url += '?' + options.data;\n } else {\n options.url += '&' + options.data;\n }\n }\n\n if (AcceptHeaders[options.dataType] == null) {\n options.dataType = '*';\n }\n\n options.accept = AcceptHeaders[options.dataType];\n\n if (options.dataType !== '*') {\n options.accept += ', */*; q=0.01';\n }\n\n return options;\n };\n\n createXHR = function createXHR(options, done) {\n var xhr;\n xhr = new XMLHttpRequest();\n xhr.open(options.type, options.url, true);\n xhr.setRequestHeader('Accept', options.accept);\n\n if (typeof options.data === 'string') {\n xhr.setRequestHeader('Content-Type', 'application/x-www-form-urlencoded; charset=UTF-8');\n }\n\n if (!options.crossDomain) {\n xhr.setRequestHeader('X-Requested-With', 'XMLHttpRequest');\n }\n\n CSRFProtection(xhr);\n xhr.withCredentials = !!options.withCredentials;\n\n xhr.onreadystatechange = function () {\n if (xhr.readyState === XMLHttpRequest.DONE) {\n return done(xhr);\n }\n };\n\n return xhr;\n };\n\n processResponse = function processResponse(response, type) {\n var parser, script;\n\n if (typeof response === 'string' && typeof type === 'string') {\n if (type.match(/\\bjson\\b/)) {\n try {\n response = JSON.parse(response);\n } catch (error) {}\n } else if (type.match(/\\b(?:java|ecma)script\\b/)) {\n script = document.createElement('script');\n script.setAttribute('nonce', cspNonce());\n script.text = response;\n document.head.appendChild(script).parentNode.removeChild(script);\n } else if (type.match(/\\b(xml|html|svg)\\b/)) {\n parser = new DOMParser();\n type = type.replace(/;.+/, '');\n\n try {\n response = parser.parseFromString(response, type);\n } catch (error) {}\n }\n }\n\n return response;\n };\n\n Rails.href = function (element) {\n return element.href;\n };\n\n Rails.isCrossDomain = function (url) {\n var e, originAnchor, urlAnchor;\n originAnchor = document.createElement('a');\n originAnchor.href = location.href;\n urlAnchor = document.createElement('a');\n\n try {\n urlAnchor.href = url;\n return !((!urlAnchor.protocol || urlAnchor.protocol === ':') && !urlAnchor.host || originAnchor.protocol + '//' + originAnchor.host === urlAnchor.protocol + '//' + urlAnchor.host);\n } catch (error) {\n e = error;\n return true;\n }\n };\n }).call(this);\n (function () {\n var matches, toArray;\n matches = Rails.matches;\n\n toArray = function toArray(e) {\n return Array.prototype.slice.call(e);\n };\n\n Rails.serializeElement = function (element, additionalParam) {\n var inputs, params;\n inputs = [element];\n\n if (matches(element, 'form')) {\n inputs = toArray(element.elements);\n }\n\n params = [];\n inputs.forEach(function (input) {\n if (!input.name || input.disabled) {\n return;\n }\n\n if (matches(input, 'select')) {\n return toArray(input.options).forEach(function (option) {\n if (option.selected) {\n return params.push({\n name: input.name,\n value: option.value\n });\n }\n });\n } else if (input.checked || ['radio', 'checkbox', 'submit'].indexOf(input.type) === -1) {\n return params.push({\n name: input.name,\n value: input.value\n });\n }\n });\n\n if (additionalParam) {\n params.push(additionalParam);\n }\n\n return params.map(function (param) {\n if (param.name != null) {\n return encodeURIComponent(param.name) + \"=\" + encodeURIComponent(param.value);\n } else {\n return param;\n }\n }).join('&');\n };\n\n Rails.formElements = function (form, selector) {\n if (matches(form, 'form')) {\n return toArray(form.elements).filter(function (el) {\n return matches(el, selector);\n });\n } else {\n return toArray(form.querySelectorAll(selector));\n }\n };\n }).call(this);\n (function () {\n var allowAction, fire, stopEverything;\n fire = Rails.fire, stopEverything = Rails.stopEverything;\n\n Rails.handleConfirm = function (e) {\n if (!allowAction(this)) {\n return stopEverything(e);\n }\n };\n\n allowAction = function allowAction(element) {\n var answer, callback, message;\n message = element.getAttribute('data-confirm');\n\n if (!message) {\n return true;\n }\n\n answer = false;\n\n if (fire(element, 'confirm')) {\n try {\n answer = confirm(message);\n } catch (error) {}\n\n callback = fire(element, 'confirm:complete', [answer]);\n }\n\n return answer && callback;\n };\n }).call(this);\n (function () {\n var disableFormElement, disableFormElements, disableLinkElement, enableFormElement, enableFormElements, enableLinkElement, formElements, getData, matches, setData, stopEverything;\n matches = Rails.matches, getData = Rails.getData, setData = Rails.setData, stopEverything = Rails.stopEverything, formElements = Rails.formElements;\n\n Rails.handleDisabledElement = function (e) {\n var element;\n element = this;\n\n if (element.disabled) {\n return stopEverything(e);\n }\n };\n\n Rails.enableElement = function (e) {\n var element;\n element = e instanceof Event ? e.target : e;\n\n if (matches(element, Rails.linkDisableSelector)) {\n return enableLinkElement(element);\n } else if (matches(element, Rails.buttonDisableSelector) || matches(element, Rails.formEnableSelector)) {\n return enableFormElement(element);\n } else if (matches(element, Rails.formSubmitSelector)) {\n return enableFormElements(element);\n }\n };\n\n Rails.disableElement = function (e) {\n var element;\n element = e instanceof Event ? e.target : e;\n\n if (matches(element, Rails.linkDisableSelector)) {\n return disableLinkElement(element);\n } else if (matches(element, Rails.buttonDisableSelector) || matches(element, Rails.formDisableSelector)) {\n return disableFormElement(element);\n } else if (matches(element, Rails.formSubmitSelector)) {\n return disableFormElements(element);\n }\n };\n\n disableLinkElement = function disableLinkElement(element) {\n var replacement;\n replacement = element.getAttribute('data-disable-with');\n\n if (replacement != null) {\n setData(element, 'ujs:enable-with', element.innerHTML);\n element.innerHTML = replacement;\n }\n\n element.addEventListener('click', stopEverything);\n return setData(element, 'ujs:disabled', true);\n };\n\n enableLinkElement = function enableLinkElement(element) {\n var originalText;\n originalText = getData(element, 'ujs:enable-with');\n\n if (originalText != null) {\n element.innerHTML = originalText;\n setData(element, 'ujs:enable-with', null);\n }\n\n element.removeEventListener('click', stopEverything);\n return setData(element, 'ujs:disabled', null);\n };\n\n disableFormElements = function disableFormElements(form) {\n return formElements(form, Rails.formDisableSelector).forEach(disableFormElement);\n };\n\n disableFormElement = function disableFormElement(element) {\n var replacement;\n replacement = element.getAttribute('data-disable-with');\n\n if (replacement != null) {\n if (matches(element, 'button')) {\n setData(element, 'ujs:enable-with', element.innerHTML);\n element.innerHTML = replacement;\n } else {\n setData(element, 'ujs:enable-with', element.value);\n element.value = replacement;\n }\n }\n\n element.disabled = true;\n return setData(element, 'ujs:disabled', true);\n };\n\n enableFormElements = function enableFormElements(form) {\n return formElements(form, Rails.formEnableSelector).forEach(enableFormElement);\n };\n\n enableFormElement = function enableFormElement(element) {\n var originalText;\n originalText = getData(element, 'ujs:enable-with');\n\n if (originalText != null) {\n if (matches(element, 'button')) {\n element.innerHTML = originalText;\n } else {\n element.value = originalText;\n }\n\n setData(element, 'ujs:enable-with', null);\n }\n\n element.disabled = false;\n return setData(element, 'ujs:disabled', null);\n };\n }).call(this);\n (function () {\n var stopEverything;\n stopEverything = Rails.stopEverything;\n\n Rails.handleMethod = function (e) {\n var csrfParam, csrfToken, form, formContent, href, link, method;\n link = this;\n method = link.getAttribute('data-method');\n\n if (!method) {\n return;\n }\n\n href = Rails.href(link);\n csrfToken = Rails.csrfToken();\n csrfParam = Rails.csrfParam();\n form = document.createElement('form');\n formContent = \"<input name='_method' value='\" + method + \"' type='hidden' />\";\n\n if (csrfParam != null && csrfToken != null && !Rails.isCrossDomain(href)) {\n formContent += \"<input name='\" + csrfParam + \"' value='\" + csrfToken + \"' type='hidden' />\";\n }\n\n formContent += '<input type=\"submit\" />';\n form.method = 'post';\n form.action = href;\n form.target = link.target;\n form.innerHTML = formContent;\n form.style.display = 'none';\n document.body.appendChild(form);\n form.querySelector('[type=\"submit\"]').click();\n return stopEverything(e);\n };\n }).call(this);\n (function () {\n var ajax,\n fire,\n getData,\n isCrossDomain,\n isRemote,\n matches,\n serializeElement,\n setData,\n stopEverything,\n slice = [].slice;\n matches = Rails.matches, getData = Rails.getData, setData = Rails.setData, fire = Rails.fire, stopEverything = Rails.stopEverything, ajax = Rails.ajax, isCrossDomain = Rails.isCrossDomain, serializeElement = Rails.serializeElement;\n\n isRemote = function isRemote(element) {\n var value;\n value = element.getAttribute('data-remote');\n return value != null && value !== 'false';\n };\n\n Rails.handleRemote = function (e) {\n var button, data, dataType, element, method, url, withCredentials;\n element = this;\n\n if (!isRemote(element)) {\n return true;\n }\n\n if (!fire(element, 'ajax:before')) {\n fire(element, 'ajax:stopped');\n return false;\n }\n\n withCredentials = element.getAttribute('data-with-credentials');\n dataType = element.getAttribute('data-type') || 'script';\n\n if (matches(element, Rails.formSubmitSelector)) {\n button = getData(element, 'ujs:submit-button');\n method = getData(element, 'ujs:submit-button-formmethod') || element.method;\n url = getData(element, 'ujs:submit-button-formaction') || element.getAttribute('action') || location.href;\n\n if (method.toUpperCase() === 'GET') {\n url = url.replace(/\\?.*$/, '');\n }\n\n if (element.enctype === 'multipart/form-data') {\n data = new FormData(element);\n\n if (button != null) {\n data.append(button.name, button.value);\n }\n } else {\n data = serializeElement(element, button);\n }\n\n setData(element, 'ujs:submit-button', null);\n setData(element, 'ujs:submit-button-formmethod', null);\n setData(element, 'ujs:submit-button-formaction', null);\n } else if (matches(element, Rails.buttonClickSelector) || matches(element, Rails.inputChangeSelector)) {\n method = element.getAttribute('data-method');\n url = element.getAttribute('data-url');\n data = serializeElement(element, element.getAttribute('data-params'));\n } else {\n method = element.getAttribute('data-method');\n url = Rails.href(element);\n data = element.getAttribute('data-params');\n }\n\n ajax({\n type: method || 'GET',\n url: url,\n data: data,\n dataType: dataType,\n beforeSend: function beforeSend(xhr, options) {\n if (fire(element, 'ajax:beforeSend', [xhr, options])) {\n return fire(element, 'ajax:send', [xhr]);\n } else {\n fire(element, 'ajax:stopped');\n return false;\n }\n },\n success: function success() {\n var args;\n args = 1 <= arguments.length ? slice.call(arguments, 0) : [];\n return fire(element, 'ajax:success', args);\n },\n error: function error() {\n var args;\n args = 1 <= arguments.length ? slice.call(arguments, 0) : [];\n return fire(element, 'ajax:error', args);\n },\n complete: function complete() {\n var args;\n args = 1 <= arguments.length ? slice.call(arguments, 0) : [];\n return fire(element, 'ajax:complete', args);\n },\n crossDomain: isCrossDomain(url),\n withCredentials: withCredentials != null && withCredentials !== 'false'\n });\n return stopEverything(e);\n };\n\n Rails.formSubmitButtonClick = function (e) {\n var button, form;\n button = this;\n form = button.form;\n\n if (!form) {\n return;\n }\n\n if (button.name) {\n setData(form, 'ujs:submit-button', {\n name: button.name,\n value: button.value\n });\n }\n\n setData(form, 'ujs:formnovalidate-button', button.formNoValidate);\n setData(form, 'ujs:submit-button-formaction', button.getAttribute('formaction'));\n return setData(form, 'ujs:submit-button-formmethod', button.getAttribute('formmethod'));\n };\n\n Rails.handleMetaClick = function (e) {\n var data, link, metaClick, method;\n link = this;\n method = (link.getAttribute('data-method') || 'GET').toUpperCase();\n data = link.getAttribute('data-params');\n metaClick = e.metaKey || e.ctrlKey;\n\n if (metaClick && method === 'GET' && !data) {\n return e.stopImmediatePropagation();\n }\n };\n }).call(this);\n (function () {\n var $, CSRFProtection, delegate, disableElement, enableElement, fire, formSubmitButtonClick, getData, handleConfirm, handleDisabledElement, handleMetaClick, handleMethod, handleRemote, refreshCSRFTokens;\n fire = Rails.fire, delegate = Rails.delegate, getData = Rails.getData, $ = Rails.$, refreshCSRFTokens = Rails.refreshCSRFTokens, CSRFProtection = Rails.CSRFProtection, enableElement = Rails.enableElement, disableElement = Rails.disableElement, handleDisabledElement = Rails.handleDisabledElement, handleConfirm = Rails.handleConfirm, handleRemote = Rails.handleRemote, formSubmitButtonClick = Rails.formSubmitButtonClick, handleMetaClick = Rails.handleMetaClick, handleMethod = Rails.handleMethod;\n\n if (typeof jQuery !== \"undefined\" && jQuery !== null && jQuery.ajax != null) {\n if (jQuery.rails) {\n throw new Error('If you load both jquery_ujs and rails-ujs, use rails-ujs only.');\n }\n\n jQuery.rails = Rails;\n jQuery.ajaxPrefilter(function (options, originalOptions, xhr) {\n if (!options.crossDomain) {\n return CSRFProtection(xhr);\n }\n });\n }\n\n Rails.start = function () {\n if (window._rails_loaded) {\n throw new Error('rails-ujs has already been loaded!');\n }\n\n window.addEventListener('pageshow', function () {\n $(Rails.formEnableSelector).forEach(function (el) {\n if (getData(el, 'ujs:disabled')) {\n return enableElement(el);\n }\n });\n return $(Rails.linkDisableSelector).forEach(function (el) {\n if (getData(el, 'ujs:disabled')) {\n return enableElement(el);\n }\n });\n });\n delegate(document, Rails.linkDisableSelector, 'ajax:complete', enableElement);\n delegate(document, Rails.linkDisableSelector, 'ajax:stopped', enableElement);\n delegate(document, Rails.buttonDisableSelector, 'ajax:complete', enableElement);\n delegate(document, Rails.buttonDisableSelector, 'ajax:stopped', enableElement);\n delegate(document, Rails.linkClickSelector, 'click', handleDisabledElement);\n delegate(document, Rails.linkClickSelector, 'click', handleConfirm);\n delegate(document, Rails.linkClickSelector, 'click', handleMetaClick);\n delegate(document, Rails.linkClickSelector, 'click', disableElement);\n delegate(document, Rails.linkClickSelector, 'click', handleRemote);\n delegate(document, Rails.linkClickSelector, 'click', handleMethod);\n delegate(document, Rails.buttonClickSelector, 'click', handleDisabledElement);\n delegate(document, Rails.buttonClickSelector, 'click', handleConfirm);\n delegate(document, Rails.buttonClickSelector, 'click', disableElement);\n delegate(document, Rails.buttonClickSelector, 'click', handleRemote);\n delegate(document, Rails.inputChangeSelector, 'change', handleDisabledElement);\n delegate(document, Rails.inputChangeSelector, 'change', handleConfirm);\n delegate(document, Rails.inputChangeSelector, 'change', handleRemote);\n delegate(document, Rails.formSubmitSelector, 'submit', handleDisabledElement);\n delegate(document, Rails.formSubmitSelector, 'submit', handleConfirm);\n delegate(document, Rails.formSubmitSelector, 'submit', handleRemote);\n delegate(document, Rails.formSubmitSelector, 'submit', function (e) {\n return setTimeout(function () {\n return disableElement(e);\n }, 13);\n });\n delegate(document, Rails.formSubmitSelector, 'ajax:send', disableElement);\n delegate(document, Rails.formSubmitSelector, 'ajax:complete', enableElement);\n delegate(document, Rails.formInputClickSelector, 'click', handleDisabledElement);\n delegate(document, Rails.formInputClickSelector, 'click', handleConfirm);\n delegate(document, Rails.formInputClickSelector, 'click', formSubmitButtonClick);\n document.addEventListener('DOMContentLoaded', refreshCSRFTokens);\n return window._rails_loaded = true;\n };\n\n if (window.Rails === Rails && fire(document, 'rails:attachBindings')) {\n Rails.start();\n }\n }).call(this);\n }).call(this);\n\n if ((typeof module === \"undefined\" ? \"undefined\" : _typeof(module)) === \"object\" && module.exports) {\n module.exports = Rails;\n } else if (typeof define === \"function\" && define.amd) {\n define(Rails);\n }\n}).call(this);","/**!\n * @fileOverview Kickass library to create and place poppers near their reference elements.\n * @version 1.14.6\n * @license\n * Copyright (c) 2016 Federico Zivolo and contributors\n *\n * Permission is hereby granted, free of charge, to any person obtaining a copy\n * of this software and associated documentation files (the \"Software\"), to deal\n * in the Software without restriction, including without limitation the rights\n * to use, copy, modify, merge, publish, distribute, sublicense, and/or sell\n * copies of the Software, and to permit persons to whom the Software is\n * furnished to do so, subject to the following conditions:\n *\n * The above copyright notice and this permission notice shall be included in all\n * copies or substantial portions of the Software.\n *\n * THE SOFTWARE IS PROVIDED \"AS IS\", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR\n * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,\n * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE\n * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER\n * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,\n * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE\n * SOFTWARE.\n */\nvar isBrowser = typeof window !== 'undefined' && typeof document !== 'undefined';\nvar longerTimeoutBrowsers = ['Edge', 'Trident', 'Firefox'];\nvar timeoutDuration = 0;\n\nfor (var i = 0; i < longerTimeoutBrowsers.length; i += 1) {\n if (isBrowser && navigator.userAgent.indexOf(longerTimeoutBrowsers[i]) >= 0) {\n timeoutDuration = 1;\n break;\n }\n}\n\nfunction microtaskDebounce(fn) {\n var called = false;\n return function () {\n if (called) {\n return;\n }\n\n called = true;\n window.Promise.resolve().then(function () {\n called = false;\n fn();\n });\n };\n}\n\nfunction taskDebounce(fn) {\n var scheduled = false;\n return function () {\n if (!scheduled) {\n scheduled = true;\n setTimeout(function () {\n scheduled = false;\n fn();\n }, timeoutDuration);\n }\n };\n}\n\nvar supportsMicroTasks = isBrowser && window.Promise;\n/**\n* Create a debounced version of a method, that's asynchronously deferred\n* but called in the minimum time possible.\n*\n* @method\n* @memberof Popper.Utils\n* @argument {Function} fn\n* @returns {Function}\n*/\n\nvar debounce = supportsMicroTasks ? microtaskDebounce : taskDebounce;\n/**\n * Check if the given variable is a function\n * @method\n * @memberof Popper.Utils\n * @argument {Any} functionToCheck - variable to check\n * @returns {Boolean} answer to: is a function?\n */\n\nfunction isFunction(functionToCheck) {\n var getType = {};\n return functionToCheck && getType.toString.call(functionToCheck) === '[object Function]';\n}\n/**\n * Get CSS computed property of the given element\n * @method\n * @memberof Popper.Utils\n * @argument {Eement} element\n * @argument {String} property\n */\n\n\nfunction getStyleComputedProperty(element, property) {\n if (element.nodeType !== 1) {\n return [];\n } // NOTE: 1 DOM access here\n\n\n var window = element.ownerDocument.defaultView;\n var css = window.getComputedStyle(element, null);\n return property ? css[property] : css;\n}\n/**\n * Returns the parentNode or the host of the element\n * @method\n * @memberof Popper.Utils\n * @argument {Element} element\n * @returns {Element} parent\n */\n\n\nfunction getParentNode(element) {\n if (element.nodeName === 'HTML') {\n return element;\n }\n\n return element.parentNode || element.host;\n}\n/**\n * Returns the scrolling parent of the given element\n * @method\n * @memberof Popper.Utils\n * @argument {Element} element\n * @returns {Element} scroll parent\n */\n\n\nfunction getScrollParent(element) {\n // Return body, `getScroll` will take care to get the correct `scrollTop` from it\n if (!element) {\n return document.body;\n }\n\n switch (element.nodeName) {\n case 'HTML':\n case 'BODY':\n return element.ownerDocument.body;\n\n case '#document':\n return element.body;\n } // Firefox want us to check `-x` and `-y` variations as well\n\n\n var _getStyleComputedProp = getStyleComputedProperty(element),\n overflow = _getStyleComputedProp.overflow,\n overflowX = _getStyleComputedProp.overflowX,\n overflowY = _getStyleComputedProp.overflowY;\n\n if (/(auto|scroll|overlay)/.test(overflow + overflowY + overflowX)) {\n return element;\n }\n\n return getScrollParent(getParentNode(element));\n}\n\nvar isIE11 = isBrowser && !!(window.MSInputMethodContext && document.documentMode);\nvar isIE10 = isBrowser && /MSIE 10/.test(navigator.userAgent);\n/**\n * Determines if the browser is Internet Explorer\n * @method\n * @memberof Popper.Utils\n * @param {Number} version to check\n * @returns {Boolean} isIE\n */\n\nfunction isIE(version) {\n if (version === 11) {\n return isIE11;\n }\n\n if (version === 10) {\n return isIE10;\n }\n\n return isIE11 || isIE10;\n}\n/**\n * Returns the offset parent of the given element\n * @method\n * @memberof Popper.Utils\n * @argument {Element} element\n * @returns {Element} offset parent\n */\n\n\nfunction getOffsetParent(element) {\n if (!element) {\n return document.documentElement;\n }\n\n var noOffsetParent = isIE(10) ? document.body : null; // NOTE: 1 DOM access here\n\n var offsetParent = element.offsetParent || null; // Skip hidden elements which don't have an offsetParent\n\n while (offsetParent === noOffsetParent && element.nextElementSibling) {\n offsetParent = (element = element.nextElementSibling).offsetParent;\n }\n\n var nodeName = offsetParent && offsetParent.nodeName;\n\n if (!nodeName || nodeName === 'BODY' || nodeName === 'HTML') {\n return element ? element.ownerDocument.documentElement : document.documentElement;\n } // .offsetParent will return the closest TH, TD or TABLE in case\n // no offsetParent is present, I hate this job...\n\n\n if (['TH', 'TD', 'TABLE'].indexOf(offsetParent.nodeName) !== -1 && getStyleComputedProperty(offsetParent, 'position') === 'static') {\n return getOffsetParent(offsetParent);\n }\n\n return offsetParent;\n}\n\nfunction isOffsetContainer(element) {\n var nodeName = element.nodeName;\n\n if (nodeName === 'BODY') {\n return false;\n }\n\n return nodeName === 'HTML' || getOffsetParent(element.firstElementChild) === element;\n}\n/**\n * Finds the root node (document, shadowDOM root) of the given element\n * @method\n * @memberof Popper.Utils\n * @argument {Element} node\n * @returns {Element} root node\n */\n\n\nfunction getRoot(node) {\n if (node.parentNode !== null) {\n return getRoot(node.parentNode);\n }\n\n return node;\n}\n/**\n * Finds the offset parent common to the two provided nodes\n * @method\n * @memberof Popper.Utils\n * @argument {Element} element1\n * @argument {Element} element2\n * @returns {Element} common offset parent\n */\n\n\nfunction findCommonOffsetParent(element1, element2) {\n // This check is needed to avoid errors in case one of the elements isn't defined for any reason\n if (!element1 || !element1.nodeType || !element2 || !element2.nodeType) {\n return document.documentElement;\n } // Here we make sure to give as \"start\" the element that comes first in the DOM\n\n\n var order = element1.compareDocumentPosition(element2) & Node.DOCUMENT_POSITION_FOLLOWING;\n var start = order ? element1 : element2;\n var end = order ? element2 : element1; // Get common ancestor container\n\n var range = document.createRange();\n range.setStart(start, 0);\n range.setEnd(end, 0);\n var commonAncestorContainer = range.commonAncestorContainer; // Both nodes are inside #document\n\n if (element1 !== commonAncestorContainer && element2 !== commonAncestorContainer || start.contains(end)) {\n if (isOffsetContainer(commonAncestorContainer)) {\n return commonAncestorContainer;\n }\n\n return getOffsetParent(commonAncestorContainer);\n } // one of the nodes is inside shadowDOM, find which one\n\n\n var element1root = getRoot(element1);\n\n if (element1root.host) {\n return findCommonOffsetParent(element1root.host, element2);\n } else {\n return findCommonOffsetParent(element1, getRoot(element2).host);\n }\n}\n/**\n * Gets the scroll value of the given element in the given side (top and left)\n * @method\n * @memberof Popper.Utils\n * @argument {Element} element\n * @argument {String} side `top` or `left`\n * @returns {number} amount of scrolled pixels\n */\n\n\nfunction getScroll(element) {\n var side = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : 'top';\n var upperSide = side === 'top' ? 'scrollTop' : 'scrollLeft';\n var nodeName = element.nodeName;\n\n if (nodeName === 'BODY' || nodeName === 'HTML') {\n var html = element.ownerDocument.documentElement;\n var scrollingElement = element.ownerDocument.scrollingElement || html;\n return scrollingElement[upperSide];\n }\n\n return element[upperSide];\n}\n/*\n * Sum or subtract the element scroll values (left and top) from a given rect object\n * @method\n * @memberof Popper.Utils\n * @param {Object} rect - Rect object you want to change\n * @param {HTMLElement} element - The element from the function reads the scroll values\n * @param {Boolean} subtract - set to true if you want to subtract the scroll values\n * @return {Object} rect - The modifier rect object\n */\n\n\nfunction includeScroll(rect, element) {\n var subtract = arguments.length > 2 && arguments[2] !== undefined ? arguments[2] : false;\n var scrollTop = getScroll(element, 'top');\n var scrollLeft = getScroll(element, 'left');\n var modifier = subtract ? -1 : 1;\n rect.top += scrollTop * modifier;\n rect.bottom += scrollTop * modifier;\n rect.left += scrollLeft * modifier;\n rect.right += scrollLeft * modifier;\n return rect;\n}\n/*\n * Helper to detect borders of a given element\n * @method\n * @memberof Popper.Utils\n * @param {CSSStyleDeclaration} styles\n * Result of `getStyleComputedProperty` on the given element\n * @param {String} axis - `x` or `y`\n * @return {number} borders - The borders size of the given axis\n */\n\n\nfunction getBordersSize(styles, axis) {\n var sideA = axis === 'x' ? 'Left' : 'Top';\n var sideB = sideA === 'Left' ? 'Right' : 'Bottom';\n return parseFloat(styles['border' + sideA + 'Width'], 10) + parseFloat(styles['border' + sideB + 'Width'], 10);\n}\n\nfunction getSize(axis, body, html, computedStyle) {\n return Math.max(body['offset' + axis], body['scroll' + axis], html['client' + axis], html['offset' + axis], html['scroll' + axis], isIE(10) ? parseInt(html['offset' + axis]) + parseInt(computedStyle['margin' + (axis === 'Height' ? 'Top' : 'Left')]) + parseInt(computedStyle['margin' + (axis === 'Height' ? 'Bottom' : 'Right')]) : 0);\n}\n\nfunction getWindowSizes(document) {\n var body = document.body;\n var html = document.documentElement;\n var computedStyle = isIE(10) && getComputedStyle(html);\n return {\n height: getSize('Height', body, html, computedStyle),\n width: getSize('Width', body, html, computedStyle)\n };\n}\n\nvar classCallCheck = function classCallCheck(instance, Constructor) {\n if (!(instance instanceof Constructor)) {\n throw new TypeError(\"Cannot call a class as a function\");\n }\n};\n\nvar createClass = function () {\n function defineProperties(target, props) {\n for (var i = 0; i < props.length; i++) {\n var descriptor = props[i];\n descriptor.enumerable = descriptor.enumerable || false;\n descriptor.configurable = true;\n if (\"value\" in descriptor) descriptor.writable = true;\n Object.defineProperty(target, descriptor.key, descriptor);\n }\n }\n\n return function (Constructor, protoProps, staticProps) {\n if (protoProps) defineProperties(Constructor.prototype, protoProps);\n if (staticProps) defineProperties(Constructor, staticProps);\n return Constructor;\n };\n}();\n\nvar defineProperty = function defineProperty(obj, key, value) {\n if (key in obj) {\n Object.defineProperty(obj, key, {\n value: value,\n enumerable: true,\n configurable: true,\n writable: true\n });\n } else {\n obj[key] = value;\n }\n\n return obj;\n};\n\nvar _extends = Object.assign || function (target) {\n for (var i = 1; i < arguments.length; i++) {\n var source = arguments[i];\n\n for (var key in source) {\n if (Object.prototype.hasOwnProperty.call(source, key)) {\n target[key] = source[key];\n }\n }\n }\n\n return target;\n};\n/**\n * Given element offsets, generate an output similar to getBoundingClientRect\n * @method\n * @memberof Popper.Utils\n * @argument {Object} offsets\n * @returns {Object} ClientRect like output\n */\n\n\nfunction getClientRect(offsets) {\n return _extends({}, offsets, {\n right: offsets.left + offsets.width,\n bottom: offsets.top + offsets.height\n });\n}\n/**\n * Get bounding client rect of given element\n * @method\n * @memberof Popper.Utils\n * @param {HTMLElement} element\n * @return {Object} client rect\n */\n\n\nfunction getBoundingClientRect(element) {\n var rect = {}; // IE10 10 FIX: Please, don't ask, the element isn't\n // considered in DOM in some circumstances...\n // This isn't reproducible in IE10 compatibility mode of IE11\n\n try {\n if (isIE(10)) {\n rect = element.getBoundingClientRect();\n var scrollTop = getScroll(element, 'top');\n var scrollLeft = getScroll(element, 'left');\n rect.top += scrollTop;\n rect.left += scrollLeft;\n rect.bottom += scrollTop;\n rect.right += scrollLeft;\n } else {\n rect = element.getBoundingClientRect();\n }\n } catch (e) {}\n\n var result = {\n left: rect.left,\n top: rect.top,\n width: rect.right - rect.left,\n height: rect.bottom - rect.top\n }; // subtract scrollbar size from sizes\n\n var sizes = element.nodeName === 'HTML' ? getWindowSizes(element.ownerDocument) : {};\n var width = sizes.width || element.clientWidth || result.right - result.left;\n var height = sizes.height || element.clientHeight || result.bottom - result.top;\n var horizScrollbar = element.offsetWidth - width;\n var vertScrollbar = element.offsetHeight - height; // if an hypothetical scrollbar is detected, we must be sure it's not a `border`\n // we make this check conditional for performance reasons\n\n if (horizScrollbar || vertScrollbar) {\n var styles = getStyleComputedProperty(element);\n horizScrollbar -= getBordersSize(styles, 'x');\n vertScrollbar -= getBordersSize(styles, 'y');\n result.width -= horizScrollbar;\n result.height -= vertScrollbar;\n }\n\n return getClientRect(result);\n}\n\nfunction getOffsetRectRelativeToArbitraryNode(children, parent) {\n var fixedPosition = arguments.length > 2 && arguments[2] !== undefined ? arguments[2] : false;\n var isIE10 = isIE(10);\n var isHTML = parent.nodeName === 'HTML';\n var childrenRect = getBoundingClientRect(children);\n var parentRect = getBoundingClientRect(parent);\n var scrollParent = getScrollParent(children);\n var styles = getStyleComputedProperty(parent);\n var borderTopWidth = parseFloat(styles.borderTopWidth, 10);\n var borderLeftWidth = parseFloat(styles.borderLeftWidth, 10); // In cases where the parent is fixed, we must ignore negative scroll in offset calc\n\n if (fixedPosition && isHTML) {\n parentRect.top = Math.max(parentRect.top, 0);\n parentRect.left = Math.max(parentRect.left, 0);\n }\n\n var offsets = getClientRect({\n top: childrenRect.top - parentRect.top - borderTopWidth,\n left: childrenRect.left - parentRect.left - borderLeftWidth,\n width: childrenRect.width,\n height: childrenRect.height\n });\n offsets.marginTop = 0;\n offsets.marginLeft = 0; // Subtract margins of documentElement in case it's being used as parent\n // we do this only on HTML because it's the only element that behaves\n // differently when margins are applied to it. The margins are included in\n // the box of the documentElement, in the other cases not.\n\n if (!isIE10 && isHTML) {\n var marginTop = parseFloat(styles.marginTop, 10);\n var marginLeft = parseFloat(styles.marginLeft, 10);\n offsets.top -= borderTopWidth - marginTop;\n offsets.bottom -= borderTopWidth - marginTop;\n offsets.left -= borderLeftWidth - marginLeft;\n offsets.right -= borderLeftWidth - marginLeft; // Attach marginTop and marginLeft because in some circumstances we may need them\n\n offsets.marginTop = marginTop;\n offsets.marginLeft = marginLeft;\n }\n\n if (isIE10 && !fixedPosition ? parent.contains(scrollParent) : parent === scrollParent && scrollParent.nodeName !== 'BODY') {\n offsets = includeScroll(offsets, parent);\n }\n\n return offsets;\n}\n\nfunction getViewportOffsetRectRelativeToArtbitraryNode(element) {\n var excludeScroll = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : false;\n var html = element.ownerDocument.documentElement;\n var relativeOffset = getOffsetRectRelativeToArbitraryNode(element, html);\n var width = Math.max(html.clientWidth, window.innerWidth || 0);\n var height = Math.max(html.clientHeight, window.innerHeight || 0);\n var scrollTop = !excludeScroll ? getScroll(html) : 0;\n var scrollLeft = !excludeScroll ? getScroll(html, 'left') : 0;\n var offset = {\n top: scrollTop - relativeOffset.top + relativeOffset.marginTop,\n left: scrollLeft - relativeOffset.left + relativeOffset.marginLeft,\n width: width,\n height: height\n };\n return getClientRect(offset);\n}\n/**\n * Check if the given element is fixed or is inside a fixed parent\n * @method\n * @memberof Popper.Utils\n * @argument {Element} element\n * @argument {Element} customContainer\n * @returns {Boolean} answer to \"isFixed?\"\n */\n\n\nfunction isFixed(element) {\n var nodeName = element.nodeName;\n\n if (nodeName === 'BODY' || nodeName === 'HTML') {\n return false;\n }\n\n if (getStyleComputedProperty(element, 'position') === 'fixed') {\n return true;\n }\n\n return isFixed(getParentNode(element));\n}\n/**\n * Finds the first parent of an element that has a transformed property defined\n * @method\n * @memberof Popper.Utils\n * @argument {Element} element\n * @returns {Element} first transformed parent or documentElement\n */\n\n\nfunction getFixedPositionOffsetParent(element) {\n // This check is needed to avoid errors in case one of the elements isn't defined for any reason\n if (!element || !element.parentElement || isIE()) {\n return document.documentElement;\n }\n\n var el = element.parentElement;\n\n while (el && getStyleComputedProperty(el, 'transform') === 'none') {\n el = el.parentElement;\n }\n\n return el || document.documentElement;\n}\n/**\n * Computed the boundaries limits and return them\n * @method\n * @memberof Popper.Utils\n * @param {HTMLElement} popper\n * @param {HTMLElement} reference\n * @param {number} padding\n * @param {HTMLElement} boundariesElement - Element used to define the boundaries\n * @param {Boolean} fixedPosition - Is in fixed position mode\n * @returns {Object} Coordinates of the boundaries\n */\n\n\nfunction getBoundaries(popper, reference, padding, boundariesElement) {\n var fixedPosition = arguments.length > 4 && arguments[4] !== undefined ? arguments[4] : false; // NOTE: 1 DOM access here\n\n var boundaries = {\n top: 0,\n left: 0\n };\n var offsetParent = fixedPosition ? getFixedPositionOffsetParent(popper) : findCommonOffsetParent(popper, reference); // Handle viewport case\n\n if (boundariesElement === 'viewport') {\n boundaries = getViewportOffsetRectRelativeToArtbitraryNode(offsetParent, fixedPosition);\n } else {\n // Handle other cases based on DOM element used as boundaries\n var boundariesNode = void 0;\n\n if (boundariesElement === 'scrollParent') {\n boundariesNode = getScrollParent(getParentNode(reference));\n\n if (boundariesNode.nodeName === 'BODY') {\n boundariesNode = popper.ownerDocument.documentElement;\n }\n } else if (boundariesElement === 'window') {\n boundariesNode = popper.ownerDocument.documentElement;\n } else {\n boundariesNode = boundariesElement;\n }\n\n var offsets = getOffsetRectRelativeToArbitraryNode(boundariesNode, offsetParent, fixedPosition); // In case of HTML, we need a different computation\n\n if (boundariesNode.nodeName === 'HTML' && !isFixed(offsetParent)) {\n var _getWindowSizes = getWindowSizes(popper.ownerDocument),\n height = _getWindowSizes.height,\n width = _getWindowSizes.width;\n\n boundaries.top += offsets.top - offsets.marginTop;\n boundaries.bottom = height + offsets.top;\n boundaries.left += offsets.left - offsets.marginLeft;\n boundaries.right = width + offsets.left;\n } else {\n // for all the other DOM elements, this one is good\n boundaries = offsets;\n }\n } // Add paddings\n\n\n padding = padding || 0;\n var isPaddingNumber = typeof padding === 'number';\n boundaries.left += isPaddingNumber ? padding : padding.left || 0;\n boundaries.top += isPaddingNumber ? padding : padding.top || 0;\n boundaries.right -= isPaddingNumber ? padding : padding.right || 0;\n boundaries.bottom -= isPaddingNumber ? padding : padding.bottom || 0;\n return boundaries;\n}\n\nfunction getArea(_ref) {\n var width = _ref.width,\n height = _ref.height;\n return width * height;\n}\n/**\n * Utility used to transform the `auto` placement to the placement with more\n * available space.\n * @method\n * @memberof Popper.Utils\n * @argument {Object} data - The data object generated by update method\n * @argument {Object} options - Modifiers configuration and options\n * @returns {Object} The data object, properly modified\n */\n\n\nfunction computeAutoPlacement(placement, refRect, popper, reference, boundariesElement) {\n var padding = arguments.length > 5 && arguments[5] !== undefined ? arguments[5] : 0;\n\n if (placement.indexOf('auto') === -1) {\n return placement;\n }\n\n var boundaries = getBoundaries(popper, reference, padding, boundariesElement);\n var rects = {\n top: {\n width: boundaries.width,\n height: refRect.top - boundaries.top\n },\n right: {\n width: boundaries.right - refRect.right,\n height: boundaries.height\n },\n bottom: {\n width: boundaries.width,\n height: boundaries.bottom - refRect.bottom\n },\n left: {\n width: refRect.left - boundaries.left,\n height: boundaries.height\n }\n };\n var sortedAreas = Object.keys(rects).map(function (key) {\n return _extends({\n key: key\n }, rects[key], {\n area: getArea(rects[key])\n });\n }).sort(function (a, b) {\n return b.area - a.area;\n });\n var filteredAreas = sortedAreas.filter(function (_ref2) {\n var width = _ref2.width,\n height = _ref2.height;\n return width >= popper.clientWidth && height >= popper.clientHeight;\n });\n var computedPlacement = filteredAreas.length > 0 ? filteredAreas[0].key : sortedAreas[0].key;\n var variation = placement.split('-')[1];\n return computedPlacement + (variation ? '-' + variation : '');\n}\n/**\n * Get offsets to the reference element\n * @method\n * @memberof Popper.Utils\n * @param {Object} state\n * @param {Element} popper - the popper element\n * @param {Element} reference - the reference element (the popper will be relative to this)\n * @param {Element} fixedPosition - is in fixed position mode\n * @returns {Object} An object containing the offsets which will be applied to the popper\n */\n\n\nfunction getReferenceOffsets(state, popper, reference) {\n var fixedPosition = arguments.length > 3 && arguments[3] !== undefined ? arguments[3] : null;\n var commonOffsetParent = fixedPosition ? getFixedPositionOffsetParent(popper) : findCommonOffsetParent(popper, reference);\n return getOffsetRectRelativeToArbitraryNode(reference, commonOffsetParent, fixedPosition);\n}\n/**\n * Get the outer sizes of the given element (offset size + margins)\n * @method\n * @memberof Popper.Utils\n * @argument {Element} element\n * @returns {Object} object containing width and height properties\n */\n\n\nfunction getOuterSizes(element) {\n var window = element.ownerDocument.defaultView;\n var styles = window.getComputedStyle(element);\n var x = parseFloat(styles.marginTop || 0) + parseFloat(styles.marginBottom || 0);\n var y = parseFloat(styles.marginLeft || 0) + parseFloat(styles.marginRight || 0);\n var result = {\n width: element.offsetWidth + y,\n height: element.offsetHeight + x\n };\n return result;\n}\n/**\n * Get the opposite placement of the given one\n * @method\n * @memberof Popper.Utils\n * @argument {String} placement\n * @returns {String} flipped placement\n */\n\n\nfunction getOppositePlacement(placement) {\n var hash = {\n left: 'right',\n right: 'left',\n bottom: 'top',\n top: 'bottom'\n };\n return placement.replace(/left|right|bottom|top/g, function (matched) {\n return hash[matched];\n });\n}\n/**\n * Get offsets to the popper\n * @method\n * @memberof Popper.Utils\n * @param {Object} position - CSS position the Popper will get applied\n * @param {HTMLElement} popper - the popper element\n * @param {Object} referenceOffsets - the reference offsets (the popper will be relative to this)\n * @param {String} placement - one of the valid placement options\n * @returns {Object} popperOffsets - An object containing the offsets which will be applied to the popper\n */\n\n\nfunction getPopperOffsets(popper, referenceOffsets, placement) {\n placement = placement.split('-')[0]; // Get popper node sizes\n\n var popperRect = getOuterSizes(popper); // Add position, width and height to our offsets object\n\n var popperOffsets = {\n width: popperRect.width,\n height: popperRect.height\n }; // depending by the popper placement we have to compute its offsets slightly differently\n\n var isHoriz = ['right', 'left'].indexOf(placement) !== -1;\n var mainSide = isHoriz ? 'top' : 'left';\n var secondarySide = isHoriz ? 'left' : 'top';\n var measurement = isHoriz ? 'height' : 'width';\n var secondaryMeasurement = !isHoriz ? 'height' : 'width';\n popperOffsets[mainSide] = referenceOffsets[mainSide] + referenceOffsets[measurement] / 2 - popperRect[measurement] / 2;\n\n if (placement === secondarySide) {\n popperOffsets[secondarySide] = referenceOffsets[secondarySide] - popperRect[secondaryMeasurement];\n } else {\n popperOffsets[secondarySide] = referenceOffsets[getOppositePlacement(secondarySide)];\n }\n\n return popperOffsets;\n}\n/**\n * Mimics the `find` method of Array\n * @method\n * @memberof Popper.Utils\n * @argument {Array} arr\n * @argument prop\n * @argument value\n * @returns index or -1\n */\n\n\nfunction find(arr, check) {\n // use native find if supported\n if (Array.prototype.find) {\n return arr.find(check);\n } // use `filter` to obtain the same behavior of `find`\n\n\n return arr.filter(check)[0];\n}\n/**\n * Return the index of the matching object\n * @method\n * @memberof Popper.Utils\n * @argument {Array} arr\n * @argument prop\n * @argument value\n * @returns index or -1\n */\n\n\nfunction findIndex(arr, prop, value) {\n // use native findIndex if supported\n if (Array.prototype.findIndex) {\n return arr.findIndex(function (cur) {\n return cur[prop] === value;\n });\n } // use `find` + `indexOf` if `findIndex` isn't supported\n\n\n var match = find(arr, function (obj) {\n return obj[prop] === value;\n });\n return arr.indexOf(match);\n}\n/**\n * Loop trough the list of modifiers and run them in order,\n * each of them will then edit the data object.\n * @method\n * @memberof Popper.Utils\n * @param {dataObject} data\n * @param {Array} modifiers\n * @param {String} ends - Optional modifier name used as stopper\n * @returns {dataObject}\n */\n\n\nfunction runModifiers(modifiers, data, ends) {\n var modifiersToRun = ends === undefined ? modifiers : modifiers.slice(0, findIndex(modifiers, 'name', ends));\n modifiersToRun.forEach(function (modifier) {\n if (modifier['function']) {\n // eslint-disable-line dot-notation\n console.warn('`modifier.function` is deprecated, use `modifier.fn`!');\n }\n\n var fn = modifier['function'] || modifier.fn; // eslint-disable-line dot-notation\n\n if (modifier.enabled && isFunction(fn)) {\n // Add properties to offsets to make them a complete clientRect object\n // we do this before each modifier to make sure the previous one doesn't\n // mess with these values\n data.offsets.popper = getClientRect(data.offsets.popper);\n data.offsets.reference = getClientRect(data.offsets.reference);\n data = fn(data, modifier);\n }\n });\n return data;\n}\n/**\n * Updates the position of the popper, computing the new offsets and applying\n * the new style.<br />\n * Prefer `scheduleUpdate` over `update` because of performance reasons.\n * @method\n * @memberof Popper\n */\n\n\nfunction update() {\n // if popper is destroyed, don't perform any further update\n if (this.state.isDestroyed) {\n return;\n }\n\n var data = {\n instance: this,\n styles: {},\n arrowStyles: {},\n attributes: {},\n flipped: false,\n offsets: {}\n }; // compute reference element offsets\n\n data.offsets.reference = getReferenceOffsets(this.state, this.popper, this.reference, this.options.positionFixed); // compute auto placement, store placement inside the data object,\n // modifiers will be able to edit `placement` if needed\n // and refer to originalPlacement to know the original value\n\n data.placement = computeAutoPlacement(this.options.placement, data.offsets.reference, this.popper, this.reference, this.options.modifiers.flip.boundariesElement, this.options.modifiers.flip.padding); // store the computed placement inside `originalPlacement`\n\n data.originalPlacement = data.placement;\n data.positionFixed = this.options.positionFixed; // compute the popper offsets\n\n data.offsets.popper = getPopperOffsets(this.popper, data.offsets.reference, data.placement);\n data.offsets.popper.position = this.options.positionFixed ? 'fixed' : 'absolute'; // run the modifiers\n\n data = runModifiers(this.modifiers, data); // the first `update` will call `onCreate` callback\n // the other ones will call `onUpdate` callback\n\n if (!this.state.isCreated) {\n this.state.isCreated = true;\n this.options.onCreate(data);\n } else {\n this.options.onUpdate(data);\n }\n}\n/**\n * Helper used to know if the given modifier is enabled.\n * @method\n * @memberof Popper.Utils\n * @returns {Boolean}\n */\n\n\nfunction isModifierEnabled(modifiers, modifierName) {\n return modifiers.some(function (_ref) {\n var name = _ref.name,\n enabled = _ref.enabled;\n return enabled && name === modifierName;\n });\n}\n/**\n * Get the prefixed supported property name\n * @method\n * @memberof Popper.Utils\n * @argument {String} property (camelCase)\n * @returns {String} prefixed property (camelCase or PascalCase, depending on the vendor prefix)\n */\n\n\nfunction getSupportedPropertyName(property) {\n var prefixes = [false, 'ms', 'Webkit', 'Moz', 'O'];\n var upperProp = property.charAt(0).toUpperCase() + property.slice(1);\n\n for (var i = 0; i < prefixes.length; i++) {\n var prefix = prefixes[i];\n var toCheck = prefix ? '' + prefix + upperProp : property;\n\n if (typeof document.body.style[toCheck] !== 'undefined') {\n return toCheck;\n }\n }\n\n return null;\n}\n/**\n * Destroys the popper.\n * @method\n * @memberof Popper\n */\n\n\nfunction destroy() {\n this.state.isDestroyed = true; // touch DOM only if `applyStyle` modifier is enabled\n\n if (isModifierEnabled(this.modifiers, 'applyStyle')) {\n this.popper.removeAttribute('x-placement');\n this.popper.style.position = '';\n this.popper.style.top = '';\n this.popper.style.left = '';\n this.popper.style.right = '';\n this.popper.style.bottom = '';\n this.popper.style.willChange = '';\n this.popper.style[getSupportedPropertyName('transform')] = '';\n }\n\n this.disableEventListeners(); // remove the popper if user explicity asked for the deletion on destroy\n // do not use `remove` because IE11 doesn't support it\n\n if (this.options.removeOnDestroy) {\n this.popper.parentNode.removeChild(this.popper);\n }\n\n return this;\n}\n/**\n * Get the window associated with the element\n * @argument {Element} element\n * @returns {Window}\n */\n\n\nfunction getWindow(element) {\n var ownerDocument = element.ownerDocument;\n return ownerDocument ? ownerDocument.defaultView : window;\n}\n\nfunction attachToScrollParents(scrollParent, event, callback, scrollParents) {\n var isBody = scrollParent.nodeName === 'BODY';\n var target = isBody ? scrollParent.ownerDocument.defaultView : scrollParent;\n target.addEventListener(event, callback, {\n passive: true\n });\n\n if (!isBody) {\n attachToScrollParents(getScrollParent(target.parentNode), event, callback, scrollParents);\n }\n\n scrollParents.push(target);\n}\n/**\n * Setup needed event listeners used to update the popper position\n * @method\n * @memberof Popper.Utils\n * @private\n */\n\n\nfunction setupEventListeners(reference, options, state, updateBound) {\n // Resize event listener on window\n state.updateBound = updateBound;\n getWindow(reference).addEventListener('resize', state.updateBound, {\n passive: true\n }); // Scroll event listener on scroll parents\n\n var scrollElement = getScrollParent(reference);\n attachToScrollParents(scrollElement, 'scroll', state.updateBound, state.scrollParents);\n state.scrollElement = scrollElement;\n state.eventsEnabled = true;\n return state;\n}\n/**\n * It will add resize/scroll events and start recalculating\n * position of the popper element when they are triggered.\n * @method\n * @memberof Popper\n */\n\n\nfunction enableEventListeners() {\n if (!this.state.eventsEnabled) {\n this.state = setupEventListeners(this.reference, this.options, this.state, this.scheduleUpdate);\n }\n}\n/**\n * Remove event listeners used to update the popper position\n * @method\n * @memberof Popper.Utils\n * @private\n */\n\n\nfunction removeEventListeners(reference, state) {\n // Remove resize event listener on window\n getWindow(reference).removeEventListener('resize', state.updateBound); // Remove scroll event listener on scroll parents\n\n state.scrollParents.forEach(function (target) {\n target.removeEventListener('scroll', state.updateBound);\n }); // Reset state\n\n state.updateBound = null;\n state.scrollParents = [];\n state.scrollElement = null;\n state.eventsEnabled = false;\n return state;\n}\n/**\n * It will remove resize/scroll events and won't recalculate popper position\n * when they are triggered. It also won't trigger `onUpdate` callback anymore,\n * unless you call `update` method manually.\n * @method\n * @memberof Popper\n */\n\n\nfunction disableEventListeners() {\n if (this.state.eventsEnabled) {\n cancelAnimationFrame(this.scheduleUpdate);\n this.state = removeEventListeners(this.reference, this.state);\n }\n}\n/**\n * Tells if a given input is a number\n * @method\n * @memberof Popper.Utils\n * @param {*} input to check\n * @return {Boolean}\n */\n\n\nfunction isNumeric(n) {\n return n !== '' && !isNaN(parseFloat(n)) && isFinite(n);\n}\n/**\n * Set the style to the given popper\n * @method\n * @memberof Popper.Utils\n * @argument {Element} element - Element to apply the style to\n * @argument {Object} styles\n * Object with a list of properties and values which will be applied to the element\n */\n\n\nfunction setStyles(element, styles) {\n Object.keys(styles).forEach(function (prop) {\n var unit = ''; // add unit if the value is numeric and is one of the following\n\n if (['width', 'height', 'top', 'right', 'bottom', 'left'].indexOf(prop) !== -1 && isNumeric(styles[prop])) {\n unit = 'px';\n }\n\n element.style[prop] = styles[prop] + unit;\n });\n}\n/**\n * Set the attributes to the given popper\n * @method\n * @memberof Popper.Utils\n * @argument {Element} element - Element to apply the attributes to\n * @argument {Object} styles\n * Object with a list of properties and values which will be applied to the element\n */\n\n\nfunction setAttributes(element, attributes) {\n Object.keys(attributes).forEach(function (prop) {\n var value = attributes[prop];\n\n if (value !== false) {\n element.setAttribute(prop, attributes[prop]);\n } else {\n element.removeAttribute(prop);\n }\n });\n}\n/**\n * @function\n * @memberof Modifiers\n * @argument {Object} data - The data object generated by `update` method\n * @argument {Object} data.styles - List of style properties - values to apply to popper element\n * @argument {Object} data.attributes - List of attribute properties - values to apply to popper element\n * @argument {Object} options - Modifiers configuration and options\n * @returns {Object} The same data object\n */\n\n\nfunction applyStyle(data) {\n // any property present in `data.styles` will be applied to the popper,\n // in this way we can make the 3rd party modifiers add custom styles to it\n // Be aware, modifiers could override the properties defined in the previous\n // lines of this modifier!\n setStyles(data.instance.popper, data.styles); // any property present in `data.attributes` will be applied to the popper,\n // they will be set as HTML attributes of the element\n\n setAttributes(data.instance.popper, data.attributes); // if arrowElement is defined and arrowStyles has some properties\n\n if (data.arrowElement && Object.keys(data.arrowStyles).length) {\n setStyles(data.arrowElement, data.arrowStyles);\n }\n\n return data;\n}\n/**\n * Set the x-placement attribute before everything else because it could be used\n * to add margins to the popper margins needs to be calculated to get the\n * correct popper offsets.\n * @method\n * @memberof Popper.modifiers\n * @param {HTMLElement} reference - The reference element used to position the popper\n * @param {HTMLElement} popper - The HTML element used as popper\n * @param {Object} options - Popper.js options\n */\n\n\nfunction applyStyleOnLoad(reference, popper, options, modifierOptions, state) {\n // compute reference element offsets\n var referenceOffsets = getReferenceOffsets(state, popper, reference, options.positionFixed); // compute auto placement, store placement inside the data object,\n // modifiers will be able to edit `placement` if needed\n // and refer to originalPlacement to know the original value\n\n var placement = computeAutoPlacement(options.placement, referenceOffsets, popper, reference, options.modifiers.flip.boundariesElement, options.modifiers.flip.padding);\n popper.setAttribute('x-placement', placement); // Apply `position` to popper before anything else because\n // without the position applied we can't guarantee correct computations\n\n setStyles(popper, {\n position: options.positionFixed ? 'fixed' : 'absolute'\n });\n return options;\n}\n/**\n * @function\n * @memberof Popper.Utils\n * @argument {Object} data - The data object generated by `update` method\n * @argument {Boolean} shouldRound - If the offsets should be rounded at all\n * @returns {Object} The popper's position offsets rounded\n *\n * The tale of pixel-perfect positioning. It's still not 100% perfect, but as\n * good as it can be within reason.\n * Discussion here: https://github.com/FezVrasta/popper.js/pull/715\n *\n * Low DPI screens cause a popper to be blurry if not using full pixels (Safari\n * as well on High DPI screens).\n *\n * Firefox prefers no rounding for positioning and does not have blurriness on\n * high DPI screens.\n *\n * Only horizontal placement and left/right values need to be considered.\n */\n\n\nfunction getRoundedOffsets(data, shouldRound) {\n var _data$offsets = data.offsets,\n popper = _data$offsets.popper,\n reference = _data$offsets.reference;\n var isVertical = ['left', 'right'].indexOf(data.placement) !== -1;\n var isVariation = data.placement.indexOf('-') !== -1;\n var sameWidthOddness = reference.width % 2 === popper.width % 2;\n var bothOddWidth = reference.width % 2 === 1 && popper.width % 2 === 1;\n\n var noRound = function noRound(v) {\n return v;\n };\n\n var horizontalToInteger = !shouldRound ? noRound : isVertical || isVariation || sameWidthOddness ? Math.round : Math.floor;\n var verticalToInteger = !shouldRound ? noRound : Math.round;\n return {\n left: horizontalToInteger(bothOddWidth && !isVariation && shouldRound ? popper.left - 1 : popper.left),\n top: verticalToInteger(popper.top),\n bottom: verticalToInteger(popper.bottom),\n right: horizontalToInteger(popper.right)\n };\n}\n\nvar isFirefox = isBrowser && /Firefox/i.test(navigator.userAgent);\n/**\n * @function\n * @memberof Modifiers\n * @argument {Object} data - The data object generated by `update` method\n * @argument {Object} options - Modifiers configuration and options\n * @returns {Object} The data object, properly modified\n */\n\nfunction computeStyle(data, options) {\n var x = options.x,\n y = options.y;\n var popper = data.offsets.popper; // Remove this legacy support in Popper.js v2\n\n var legacyGpuAccelerationOption = find(data.instance.modifiers, function (modifier) {\n return modifier.name === 'applyStyle';\n }).gpuAcceleration;\n\n if (legacyGpuAccelerationOption !== undefined) {\n console.warn('WARNING: `gpuAcceleration` option moved to `computeStyle` modifier and will not be supported in future versions of Popper.js!');\n }\n\n var gpuAcceleration = legacyGpuAccelerationOption !== undefined ? legacyGpuAccelerationOption : options.gpuAcceleration;\n var offsetParent = getOffsetParent(data.instance.popper);\n var offsetParentRect = getBoundingClientRect(offsetParent); // Styles\n\n var styles = {\n position: popper.position\n };\n var offsets = getRoundedOffsets(data, window.devicePixelRatio < 2 || !isFirefox);\n var sideA = x === 'bottom' ? 'top' : 'bottom';\n var sideB = y === 'right' ? 'left' : 'right'; // if gpuAcceleration is set to `true` and transform is supported,\n // we use `translate3d` to apply the position to the popper we\n // automatically use the supported prefixed version if needed\n\n var prefixedProperty = getSupportedPropertyName('transform'); // now, let's make a step back and look at this code closely (wtf?)\n // If the content of the popper grows once it's been positioned, it\n // may happen that the popper gets misplaced because of the new content\n // overflowing its reference element\n // To avoid this problem, we provide two options (x and y), which allow\n // the consumer to define the offset origin.\n // If we position a popper on top of a reference element, we can set\n // `x` to `top` to make the popper grow towards its top instead of\n // its bottom.\n\n var left = void 0,\n top = void 0;\n\n if (sideA === 'bottom') {\n // when offsetParent is <html> the positioning is relative to the bottom of the screen (excluding the scrollbar)\n // and not the bottom of the html element\n if (offsetParent.nodeName === 'HTML') {\n top = -offsetParent.clientHeight + offsets.bottom;\n } else {\n top = -offsetParentRect.height + offsets.bottom;\n }\n } else {\n top = offsets.top;\n }\n\n if (sideB === 'right') {\n if (offsetParent.nodeName === 'HTML') {\n left = -offsetParent.clientWidth + offsets.right;\n } else {\n left = -offsetParentRect.width + offsets.right;\n }\n } else {\n left = offsets.left;\n }\n\n if (gpuAcceleration && prefixedProperty) {\n styles[prefixedProperty] = 'translate3d(' + left + 'px, ' + top + 'px, 0)';\n styles[sideA] = 0;\n styles[sideB] = 0;\n styles.willChange = 'transform';\n } else {\n // othwerise, we use the standard `top`, `left`, `bottom` and `right` properties\n var invertTop = sideA === 'bottom' ? -1 : 1;\n var invertLeft = sideB === 'right' ? -1 : 1;\n styles[sideA] = top * invertTop;\n styles[sideB] = left * invertLeft;\n styles.willChange = sideA + ', ' + sideB;\n } // Attributes\n\n\n var attributes = {\n 'x-placement': data.placement\n }; // Update `data` attributes, styles and arrowStyles\n\n data.attributes = _extends({}, attributes, data.attributes);\n data.styles = _extends({}, styles, data.styles);\n data.arrowStyles = _extends({}, data.offsets.arrow, data.arrowStyles);\n return data;\n}\n/**\n * Helper used to know if the given modifier depends from another one.<br />\n * It checks if the needed modifier is listed and enabled.\n * @method\n * @memberof Popper.Utils\n * @param {Array} modifiers - list of modifiers\n * @param {String} requestingName - name of requesting modifier\n * @param {String} requestedName - name of requested modifier\n * @returns {Boolean}\n */\n\n\nfunction isModifierRequired(modifiers, requestingName, requestedName) {\n var requesting = find(modifiers, function (_ref) {\n var name = _ref.name;\n return name === requestingName;\n });\n var isRequired = !!requesting && modifiers.some(function (modifier) {\n return modifier.name === requestedName && modifier.enabled && modifier.order < requesting.order;\n });\n\n if (!isRequired) {\n var _requesting = '`' + requestingName + '`';\n\n var requested = '`' + requestedName + '`';\n console.warn(requested + ' modifier is required by ' + _requesting + ' modifier in order to work, be sure to include it before ' + _requesting + '!');\n }\n\n return isRequired;\n}\n/**\n * @function\n * @memberof Modifiers\n * @argument {Object} data - The data object generated by update method\n * @argument {Object} options - Modifiers configuration and options\n * @returns {Object} The data object, properly modified\n */\n\n\nfunction arrow(data, options) {\n var _data$offsets$arrow; // arrow depends on keepTogether in order to work\n\n\n if (!isModifierRequired(data.instance.modifiers, 'arrow', 'keepTogether')) {\n return data;\n }\n\n var arrowElement = options.element; // if arrowElement is a string, suppose it's a CSS selector\n\n if (typeof arrowElement === 'string') {\n arrowElement = data.instance.popper.querySelector(arrowElement); // if arrowElement is not found, don't run the modifier\n\n if (!arrowElement) {\n return data;\n }\n } else {\n // if the arrowElement isn't a query selector we must check that the\n // provided DOM node is child of its popper node\n if (!data.instance.popper.contains(arrowElement)) {\n console.warn('WARNING: `arrow.element` must be child of its popper element!');\n return data;\n }\n }\n\n var placement = data.placement.split('-')[0];\n var _data$offsets = data.offsets,\n popper = _data$offsets.popper,\n reference = _data$offsets.reference;\n var isVertical = ['left', 'right'].indexOf(placement) !== -1;\n var len = isVertical ? 'height' : 'width';\n var sideCapitalized = isVertical ? 'Top' : 'Left';\n var side = sideCapitalized.toLowerCase();\n var altSide = isVertical ? 'left' : 'top';\n var opSide = isVertical ? 'bottom' : 'right';\n var arrowElementSize = getOuterSizes(arrowElement)[len]; //\n // extends keepTogether behavior making sure the popper and its\n // reference have enough pixels in conjunction\n //\n // top/left side\n\n if (reference[opSide] - arrowElementSize < popper[side]) {\n data.offsets.popper[side] -= popper[side] - (reference[opSide] - arrowElementSize);\n } // bottom/right side\n\n\n if (reference[side] + arrowElementSize > popper[opSide]) {\n data.offsets.popper[side] += reference[side] + arrowElementSize - popper[opSide];\n }\n\n data.offsets.popper = getClientRect(data.offsets.popper); // compute center of the popper\n\n var center = reference[side] + reference[len] / 2 - arrowElementSize / 2; // Compute the sideValue using the updated popper offsets\n // take popper margin in account because we don't have this info available\n\n var css = getStyleComputedProperty(data.instance.popper);\n var popperMarginSide = parseFloat(css['margin' + sideCapitalized], 10);\n var popperBorderSide = parseFloat(css['border' + sideCapitalized + 'Width'], 10);\n var sideValue = center - data.offsets.popper[side] - popperMarginSide - popperBorderSide; // prevent arrowElement from being placed not contiguously to its popper\n\n sideValue = Math.max(Math.min(popper[len] - arrowElementSize, sideValue), 0);\n data.arrowElement = arrowElement;\n data.offsets.arrow = (_data$offsets$arrow = {}, defineProperty(_data$offsets$arrow, side, Math.round(sideValue)), defineProperty(_data$offsets$arrow, altSide, ''), _data$offsets$arrow);\n return data;\n}\n/**\n * Get the opposite placement variation of the given one\n * @method\n * @memberof Popper.Utils\n * @argument {String} placement variation\n * @returns {String} flipped placement variation\n */\n\n\nfunction getOppositeVariation(variation) {\n if (variation === 'end') {\n return 'start';\n } else if (variation === 'start') {\n return 'end';\n }\n\n return variation;\n}\n/**\n * List of accepted placements to use as values of the `placement` option.<br />\n * Valid placements are:\n * - `auto`\n * - `top`\n * - `right`\n * - `bottom`\n * - `left`\n *\n * Each placement can have a variation from this list:\n * - `-start`\n * - `-end`\n *\n * Variations are interpreted easily if you think of them as the left to right\n * written languages. Horizontally (`top` and `bottom`), `start` is left and `end`\n * is right.<br />\n * Vertically (`left` and `right`), `start` is top and `end` is bottom.\n *\n * Some valid examples are:\n * - `top-end` (on top of reference, right aligned)\n * - `right-start` (on right of reference, top aligned)\n * - `bottom` (on bottom, centered)\n * - `auto-end` (on the side with more space available, alignment depends by placement)\n *\n * @static\n * @type {Array}\n * @enum {String}\n * @readonly\n * @method placements\n * @memberof Popper\n */\n\n\nvar placements = ['auto-start', 'auto', 'auto-end', 'top-start', 'top', 'top-end', 'right-start', 'right', 'right-end', 'bottom-end', 'bottom', 'bottom-start', 'left-end', 'left', 'left-start']; // Get rid of `auto` `auto-start` and `auto-end`\n\nvar validPlacements = placements.slice(3);\n/**\n * Given an initial placement, returns all the subsequent placements\n * clockwise (or counter-clockwise).\n *\n * @method\n * @memberof Popper.Utils\n * @argument {String} placement - A valid placement (it accepts variations)\n * @argument {Boolean} counter - Set to true to walk the placements counterclockwise\n * @returns {Array} placements including their variations\n */\n\nfunction clockwise(placement) {\n var counter = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : false;\n var index = validPlacements.indexOf(placement);\n var arr = validPlacements.slice(index + 1).concat(validPlacements.slice(0, index));\n return counter ? arr.reverse() : arr;\n}\n\nvar BEHAVIORS = {\n FLIP: 'flip',\n CLOCKWISE: 'clockwise',\n COUNTERCLOCKWISE: 'counterclockwise'\n};\n/**\n * @function\n * @memberof Modifiers\n * @argument {Object} data - The data object generated by update method\n * @argument {Object} options - Modifiers configuration and options\n * @returns {Object} The data object, properly modified\n */\n\nfunction flip(data, options) {\n // if `inner` modifier is enabled, we can't use the `flip` modifier\n if (isModifierEnabled(data.instance.modifiers, 'inner')) {\n return data;\n }\n\n if (data.flipped && data.placement === data.originalPlacement) {\n // seems like flip is trying to loop, probably there's not enough space on any of the flippable sides\n return data;\n }\n\n var boundaries = getBoundaries(data.instance.popper, data.instance.reference, options.padding, options.boundariesElement, data.positionFixed);\n var placement = data.placement.split('-')[0];\n var placementOpposite = getOppositePlacement(placement);\n var variation = data.placement.split('-')[1] || '';\n var flipOrder = [];\n\n switch (options.behavior) {\n case BEHAVIORS.FLIP:\n flipOrder = [placement, placementOpposite];\n break;\n\n case BEHAVIORS.CLOCKWISE:\n flipOrder = clockwise(placement);\n break;\n\n case BEHAVIORS.COUNTERCLOCKWISE:\n flipOrder = clockwise(placement, true);\n break;\n\n default:\n flipOrder = options.behavior;\n }\n\n flipOrder.forEach(function (step, index) {\n if (placement !== step || flipOrder.length === index + 1) {\n return data;\n }\n\n placement = data.placement.split('-')[0];\n placementOpposite = getOppositePlacement(placement);\n var popperOffsets = data.offsets.popper;\n var refOffsets = data.offsets.reference; // using floor because the reference offsets may contain decimals we are not going to consider here\n\n var floor = Math.floor;\n var overlapsRef = placement === 'left' && floor(popperOffsets.right) > floor(refOffsets.left) || placement === 'right' && floor(popperOffsets.left) < floor(refOffsets.right) || placement === 'top' && floor(popperOffsets.bottom) > floor(refOffsets.top) || placement === 'bottom' && floor(popperOffsets.top) < floor(refOffsets.bottom);\n var overflowsLeft = floor(popperOffsets.left) < floor(boundaries.left);\n var overflowsRight = floor(popperOffsets.right) > floor(boundaries.right);\n var overflowsTop = floor(popperOffsets.top) < floor(boundaries.top);\n var overflowsBottom = floor(popperOffsets.bottom) > floor(boundaries.bottom);\n var overflowsBoundaries = placement === 'left' && overflowsLeft || placement === 'right' && overflowsRight || placement === 'top' && overflowsTop || placement === 'bottom' && overflowsBottom; // flip the variation if required\n\n var isVertical = ['top', 'bottom'].indexOf(placement) !== -1;\n var flippedVariation = !!options.flipVariations && (isVertical && variation === 'start' && overflowsLeft || isVertical && variation === 'end' && overflowsRight || !isVertical && variation === 'start' && overflowsTop || !isVertical && variation === 'end' && overflowsBottom);\n\n if (overlapsRef || overflowsBoundaries || flippedVariation) {\n // this boolean to detect any flip loop\n data.flipped = true;\n\n if (overlapsRef || overflowsBoundaries) {\n placement = flipOrder[index + 1];\n }\n\n if (flippedVariation) {\n variation = getOppositeVariation(variation);\n }\n\n data.placement = placement + (variation ? '-' + variation : ''); // this object contains `position`, we want to preserve it along with\n // any additional property we may add in the future\n\n data.offsets.popper = _extends({}, data.offsets.popper, getPopperOffsets(data.instance.popper, data.offsets.reference, data.placement));\n data = runModifiers(data.instance.modifiers, data, 'flip');\n }\n });\n return data;\n}\n/**\n * @function\n * @memberof Modifiers\n * @argument {Object} data - The data object generated by update method\n * @argument {Object} options - Modifiers configuration and options\n * @returns {Object} The data object, properly modified\n */\n\n\nfunction keepTogether(data) {\n var _data$offsets = data.offsets,\n popper = _data$offsets.popper,\n reference = _data$offsets.reference;\n var placement = data.placement.split('-')[0];\n var floor = Math.floor;\n var isVertical = ['top', 'bottom'].indexOf(placement) !== -1;\n var side = isVertical ? 'right' : 'bottom';\n var opSide = isVertical ? 'left' : 'top';\n var measurement = isVertical ? 'width' : 'height';\n\n if (popper[side] < floor(reference[opSide])) {\n data.offsets.popper[opSide] = floor(reference[opSide]) - popper[measurement];\n }\n\n if (popper[opSide] > floor(reference[side])) {\n data.offsets.popper[opSide] = floor(reference[side]);\n }\n\n return data;\n}\n/**\n * Converts a string containing value + unit into a px value number\n * @function\n * @memberof {modifiers~offset}\n * @private\n * @argument {String} str - Value + unit string\n * @argument {String} measurement - `height` or `width`\n * @argument {Object} popperOffsets\n * @argument {Object} referenceOffsets\n * @returns {Number|String}\n * Value in pixels, or original string if no values were extracted\n */\n\n\nfunction toValue(str, measurement, popperOffsets, referenceOffsets) {\n // separate value from unit\n var split = str.match(/((?:\\-|\\+)?\\d*\\.?\\d*)(.*)/);\n var value = +split[1];\n var unit = split[2]; // If it's not a number it's an operator, I guess\n\n if (!value) {\n return str;\n }\n\n if (unit.indexOf('%') === 0) {\n var element = void 0;\n\n switch (unit) {\n case '%p':\n element = popperOffsets;\n break;\n\n case '%':\n case '%r':\n default:\n element = referenceOffsets;\n }\n\n var rect = getClientRect(element);\n return rect[measurement] / 100 * value;\n } else if (unit === 'vh' || unit === 'vw') {\n // if is a vh or vw, we calculate the size based on the viewport\n var size = void 0;\n\n if (unit === 'vh') {\n size = Math.max(document.documentElement.clientHeight, window.innerHeight || 0);\n } else {\n size = Math.max(document.documentElement.clientWidth, window.innerWidth || 0);\n }\n\n return size / 100 * value;\n } else {\n // if is an explicit pixel unit, we get rid of the unit and keep the value\n // if is an implicit unit, it's px, and we return just the value\n return value;\n }\n}\n/**\n * Parse an `offset` string to extrapolate `x` and `y` numeric offsets.\n * @function\n * @memberof {modifiers~offset}\n * @private\n * @argument {String} offset\n * @argument {Object} popperOffsets\n * @argument {Object} referenceOffsets\n * @argument {String} basePlacement\n * @returns {Array} a two cells array with x and y offsets in numbers\n */\n\n\nfunction parseOffset(offset, popperOffsets, referenceOffsets, basePlacement) {\n var offsets = [0, 0]; // Use height if placement is left or right and index is 0 otherwise use width\n // in this way the first offset will use an axis and the second one\n // will use the other one\n\n var useHeight = ['right', 'left'].indexOf(basePlacement) !== -1; // Split the offset string to obtain a list of values and operands\n // The regex addresses values with the plus or minus sign in front (+10, -20, etc)\n\n var fragments = offset.split(/(\\+|\\-)/).map(function (frag) {\n return frag.trim();\n }); // Detect if the offset string contains a pair of values or a single one\n // they could be separated by comma or space\n\n var divider = fragments.indexOf(find(fragments, function (frag) {\n return frag.search(/,|\\s/) !== -1;\n }));\n\n if (fragments[divider] && fragments[divider].indexOf(',') === -1) {\n console.warn('Offsets separated by white space(s) are deprecated, use a comma (,) instead.');\n } // If divider is found, we divide the list of values and operands to divide\n // them by ofset X and Y.\n\n\n var splitRegex = /\\s*,\\s*|\\s+/;\n var ops = divider !== -1 ? [fragments.slice(0, divider).concat([fragments[divider].split(splitRegex)[0]]), [fragments[divider].split(splitRegex)[1]].concat(fragments.slice(divider + 1))] : [fragments]; // Convert the values with units to absolute pixels to allow our computations\n\n ops = ops.map(function (op, index) {\n // Most of the units rely on the orientation of the popper\n var measurement = (index === 1 ? !useHeight : useHeight) ? 'height' : 'width';\n var mergeWithPrevious = false;\n return op // This aggregates any `+` or `-` sign that aren't considered operators\n // e.g.: 10 + +5 => [10, +, +5]\n .reduce(function (a, b) {\n if (a[a.length - 1] === '' && ['+', '-'].indexOf(b) !== -1) {\n a[a.length - 1] = b;\n mergeWithPrevious = true;\n return a;\n } else if (mergeWithPrevious) {\n a[a.length - 1] += b;\n mergeWithPrevious = false;\n return a;\n } else {\n return a.concat(b);\n }\n }, []) // Here we convert the string values into number values (in px)\n .map(function (str) {\n return toValue(str, measurement, popperOffsets, referenceOffsets);\n });\n }); // Loop trough the offsets arrays and execute the operations\n\n ops.forEach(function (op, index) {\n op.forEach(function (frag, index2) {\n if (isNumeric(frag)) {\n offsets[index] += frag * (op[index2 - 1] === '-' ? -1 : 1);\n }\n });\n });\n return offsets;\n}\n/**\n * @function\n * @memberof Modifiers\n * @argument {Object} data - The data object generated by update method\n * @argument {Object} options - Modifiers configuration and options\n * @argument {Number|String} options.offset=0\n * The offset value as described in the modifier description\n * @returns {Object} The data object, properly modified\n */\n\n\nfunction offset(data, _ref) {\n var offset = _ref.offset;\n var placement = data.placement,\n _data$offsets = data.offsets,\n popper = _data$offsets.popper,\n reference = _data$offsets.reference;\n var basePlacement = placement.split('-')[0];\n var offsets = void 0;\n\n if (isNumeric(+offset)) {\n offsets = [+offset, 0];\n } else {\n offsets = parseOffset(offset, popper, reference, basePlacement);\n }\n\n if (basePlacement === 'left') {\n popper.top += offsets[0];\n popper.left -= offsets[1];\n } else if (basePlacement === 'right') {\n popper.top += offsets[0];\n popper.left += offsets[1];\n } else if (basePlacement === 'top') {\n popper.left += offsets[0];\n popper.top -= offsets[1];\n } else if (basePlacement === 'bottom') {\n popper.left += offsets[0];\n popper.top += offsets[1];\n }\n\n data.popper = popper;\n return data;\n}\n/**\n * @function\n * @memberof Modifiers\n * @argument {Object} data - The data object generated by `update` method\n * @argument {Object} options - Modifiers configuration and options\n * @returns {Object} The data object, properly modified\n */\n\n\nfunction preventOverflow(data, options) {\n var boundariesElement = options.boundariesElement || getOffsetParent(data.instance.popper); // If offsetParent is the reference element, we really want to\n // go one step up and use the next offsetParent as reference to\n // avoid to make this modifier completely useless and look like broken\n\n if (data.instance.reference === boundariesElement) {\n boundariesElement = getOffsetParent(boundariesElement);\n } // NOTE: DOM access here\n // resets the popper's position so that the document size can be calculated excluding\n // the size of the popper element itself\n\n\n var transformProp = getSupportedPropertyName('transform');\n var popperStyles = data.instance.popper.style; // assignment to help minification\n\n var top = popperStyles.top,\n left = popperStyles.left,\n transform = popperStyles[transformProp];\n popperStyles.top = '';\n popperStyles.left = '';\n popperStyles[transformProp] = '';\n var boundaries = getBoundaries(data.instance.popper, data.instance.reference, options.padding, boundariesElement, data.positionFixed); // NOTE: DOM access here\n // restores the original style properties after the offsets have been computed\n\n popperStyles.top = top;\n popperStyles.left = left;\n popperStyles[transformProp] = transform;\n options.boundaries = boundaries;\n var order = options.priority;\n var popper = data.offsets.popper;\n var check = {\n primary: function primary(placement) {\n var value = popper[placement];\n\n if (popper[placement] < boundaries[placement] && !options.escapeWithReference) {\n value = Math.max(popper[placement], boundaries[placement]);\n }\n\n return defineProperty({}, placement, value);\n },\n secondary: function secondary(placement) {\n var mainSide = placement === 'right' ? 'left' : 'top';\n var value = popper[mainSide];\n\n if (popper[placement] > boundaries[placement] && !options.escapeWithReference) {\n value = Math.min(popper[mainSide], boundaries[placement] - (placement === 'right' ? popper.width : popper.height));\n }\n\n return defineProperty({}, mainSide, value);\n }\n };\n order.forEach(function (placement) {\n var side = ['left', 'top'].indexOf(placement) !== -1 ? 'primary' : 'secondary';\n popper = _extends({}, popper, check[side](placement));\n });\n data.offsets.popper = popper;\n return data;\n}\n/**\n * @function\n * @memberof Modifiers\n * @argument {Object} data - The data object generated by `update` method\n * @argument {Object} options - Modifiers configuration and options\n * @returns {Object} The data object, properly modified\n */\n\n\nfunction shift(data) {\n var placement = data.placement;\n var basePlacement = placement.split('-')[0];\n var shiftvariation = placement.split('-')[1]; // if shift shiftvariation is specified, run the modifier\n\n if (shiftvariation) {\n var _data$offsets = data.offsets,\n reference = _data$offsets.reference,\n popper = _data$offsets.popper;\n var isVertical = ['bottom', 'top'].indexOf(basePlacement) !== -1;\n var side = isVertical ? 'left' : 'top';\n var measurement = isVertical ? 'width' : 'height';\n var shiftOffsets = {\n start: defineProperty({}, side, reference[side]),\n end: defineProperty({}, side, reference[side] + reference[measurement] - popper[measurement])\n };\n data.offsets.popper = _extends({}, popper, shiftOffsets[shiftvariation]);\n }\n\n return data;\n}\n/**\n * @function\n * @memberof Modifiers\n * @argument {Object} data - The data object generated by update method\n * @argument {Object} options - Modifiers configuration and options\n * @returns {Object} The data object, properly modified\n */\n\n\nfunction hide(data) {\n if (!isModifierRequired(data.instance.modifiers, 'hide', 'preventOverflow')) {\n return data;\n }\n\n var refRect = data.offsets.reference;\n var bound = find(data.instance.modifiers, function (modifier) {\n return modifier.name === 'preventOverflow';\n }).boundaries;\n\n if (refRect.bottom < bound.top || refRect.left > bound.right || refRect.top > bound.bottom || refRect.right < bound.left) {\n // Avoid unnecessary DOM access if visibility hasn't changed\n if (data.hide === true) {\n return data;\n }\n\n data.hide = true;\n data.attributes['x-out-of-boundaries'] = '';\n } else {\n // Avoid unnecessary DOM access if visibility hasn't changed\n if (data.hide === false) {\n return data;\n }\n\n data.hide = false;\n data.attributes['x-out-of-boundaries'] = false;\n }\n\n return data;\n}\n/**\n * @function\n * @memberof Modifiers\n * @argument {Object} data - The data object generated by `update` method\n * @argument {Object} options - Modifiers configuration and options\n * @returns {Object} The data object, properly modified\n */\n\n\nfunction inner(data) {\n var placement = data.placement;\n var basePlacement = placement.split('-')[0];\n var _data$offsets = data.offsets,\n popper = _data$offsets.popper,\n reference = _data$offsets.reference;\n var isHoriz = ['left', 'right'].indexOf(basePlacement) !== -1;\n var subtractLength = ['top', 'left'].indexOf(basePlacement) === -1;\n popper[isHoriz ? 'left' : 'top'] = reference[basePlacement] - (subtractLength ? popper[isHoriz ? 'width' : 'height'] : 0);\n data.placement = getOppositePlacement(placement);\n data.offsets.popper = getClientRect(popper);\n return data;\n}\n/**\n * Modifier function, each modifier can have a function of this type assigned\n * to its `fn` property.<br />\n * These functions will be called on each update, this means that you must\n * make sure they are performant enough to avoid performance bottlenecks.\n *\n * @function ModifierFn\n * @argument {dataObject} data - The data object generated by `update` method\n * @argument {Object} options - Modifiers configuration and options\n * @returns {dataObject} The data object, properly modified\n */\n\n/**\n * Modifiers are plugins used to alter the behavior of your poppers.<br />\n * Popper.js uses a set of 9 modifiers to provide all the basic functionalities\n * needed by the library.\n *\n * Usually you don't want to override the `order`, `fn` and `onLoad` props.\n * All the other properties are configurations that could be tweaked.\n * @namespace modifiers\n */\n\n\nvar modifiers = {\n /**\n * Modifier used to shift the popper on the start or end of its reference\n * element.<br />\n * It will read the variation of the `placement` property.<br />\n * It can be one either `-end` or `-start`.\n * @memberof modifiers\n * @inner\n */\n shift: {\n /** @prop {number} order=100 - Index used to define the order of execution */\n order: 100,\n\n /** @prop {Boolean} enabled=true - Whether the modifier is enabled or not */\n enabled: true,\n\n /** @prop {ModifierFn} */\n fn: shift\n },\n\n /**\n * The `offset` modifier can shift your popper on both its axis.\n *\n * It accepts the following units:\n * - `px` or unit-less, interpreted as pixels\n * - `%` or `%r`, percentage relative to the length of the reference element\n * - `%p`, percentage relative to the length of the popper element\n * - `vw`, CSS viewport width unit\n * - `vh`, CSS viewport height unit\n *\n * For length is intended the main axis relative to the placement of the popper.<br />\n * This means that if the placement is `top` or `bottom`, the length will be the\n * `width`. In case of `left` or `right`, it will be the `height`.\n *\n * You can provide a single value (as `Number` or `String`), or a pair of values\n * as `String` divided by a comma or one (or more) white spaces.<br />\n * The latter is a deprecated method because it leads to confusion and will be\n * removed in v2.<br />\n * Additionally, it accepts additions and subtractions between different units.\n * Note that multiplications and divisions aren't supported.\n *\n * Valid examples are:\n * ```\n * 10\n * '10%'\n * '10, 10'\n * '10%, 10'\n * '10 + 10%'\n * '10 - 5vh + 3%'\n * '-10px + 5vh, 5px - 6%'\n * ```\n * > **NB**: If you desire to apply offsets to your poppers in a way that may make them overlap\n * > with their reference element, unfortunately, you will have to disable the `flip` modifier.\n * > You can read more on this at this [issue](https://github.com/FezVrasta/popper.js/issues/373).\n *\n * @memberof modifiers\n * @inner\n */\n offset: {\n /** @prop {number} order=200 - Index used to define the order of execution */\n order: 200,\n\n /** @prop {Boolean} enabled=true - Whether the modifier is enabled or not */\n enabled: true,\n\n /** @prop {ModifierFn} */\n fn: offset,\n\n /** @prop {Number|String} offset=0\n * The offset value as described in the modifier description\n */\n offset: 0\n },\n\n /**\n * Modifier used to prevent the popper from being positioned outside the boundary.\n *\n * A scenario exists where the reference itself is not within the boundaries.<br />\n * We can say it has \"escaped the boundaries\" — or just \"escaped\".<br />\n * In this case we need to decide whether the popper should either:\n *\n * - detach from the reference and remain \"trapped\" in the boundaries, or\n * - if it should ignore the boundary and \"escape with its reference\"\n *\n * When `escapeWithReference` is set to`true` and reference is completely\n * outside its boundaries, the popper will overflow (or completely leave)\n * the boundaries in order to remain attached to the edge of the reference.\n *\n * @memberof modifiers\n * @inner\n */\n preventOverflow: {\n /** @prop {number} order=300 - Index used to define the order of execution */\n order: 300,\n\n /** @prop {Boolean} enabled=true - Whether the modifier is enabled or not */\n enabled: true,\n\n /** @prop {ModifierFn} */\n fn: preventOverflow,\n\n /**\n * @prop {Array} [priority=['left','right','top','bottom']]\n * Popper will try to prevent overflow following these priorities by default,\n * then, it could overflow on the left and on top of the `boundariesElement`\n */\n priority: ['left', 'right', 'top', 'bottom'],\n\n /**\n * @prop {number} padding=5\n * Amount of pixel used to define a minimum distance between the boundaries\n * and the popper. This makes sure the popper always has a little padding\n * between the edges of its container\n */\n padding: 5,\n\n /**\n * @prop {String|HTMLElement} boundariesElement='scrollParent'\n * Boundaries used by the modifier. Can be `scrollParent`, `window`,\n * `viewport` or any DOM element.\n */\n boundariesElement: 'scrollParent'\n },\n\n /**\n * Modifier used to make sure the reference and its popper stay near each other\n * without leaving any gap between the two. Especially useful when the arrow is\n * enabled and you want to ensure that it points to its reference element.\n * It cares only about the first axis. You can still have poppers with margin\n * between the popper and its reference element.\n * @memberof modifiers\n * @inner\n */\n keepTogether: {\n /** @prop {number} order=400 - Index used to define the order of execution */\n order: 400,\n\n /** @prop {Boolean} enabled=true - Whether the modifier is enabled or not */\n enabled: true,\n\n /** @prop {ModifierFn} */\n fn: keepTogether\n },\n\n /**\n * This modifier is used to move the `arrowElement` of the popper to make\n * sure it is positioned between the reference element and its popper element.\n * It will read the outer size of the `arrowElement` node to detect how many\n * pixels of conjunction are needed.\n *\n * It has no effect if no `arrowElement` is provided.\n * @memberof modifiers\n * @inner\n */\n arrow: {\n /** @prop {number} order=500 - Index used to define the order of execution */\n order: 500,\n\n /** @prop {Boolean} enabled=true - Whether the modifier is enabled or not */\n enabled: true,\n\n /** @prop {ModifierFn} */\n fn: arrow,\n\n /** @prop {String|HTMLElement} element='[x-arrow]' - Selector or node used as arrow */\n element: '[x-arrow]'\n },\n\n /**\n * Modifier used to flip the popper's placement when it starts to overlap its\n * reference element.\n *\n * Requires the `preventOverflow` modifier before it in order to work.\n *\n * **NOTE:** this modifier will interrupt the current update cycle and will\n * restart it if it detects the need to flip the placement.\n * @memberof modifiers\n * @inner\n */\n flip: {\n /** @prop {number} order=600 - Index used to define the order of execution */\n order: 600,\n\n /** @prop {Boolean} enabled=true - Whether the modifier is enabled or not */\n enabled: true,\n\n /** @prop {ModifierFn} */\n fn: flip,\n\n /**\n * @prop {String|Array} behavior='flip'\n * The behavior used to change the popper's placement. It can be one of\n * `flip`, `clockwise`, `counterclockwise` or an array with a list of valid\n * placements (with optional variations)\n */\n behavior: 'flip',\n\n /**\n * @prop {number} padding=5\n * The popper will flip if it hits the edges of the `boundariesElement`\n */\n padding: 5,\n\n /**\n * @prop {String|HTMLElement} boundariesElement='viewport'\n * The element which will define the boundaries of the popper position.\n * The popper will never be placed outside of the defined boundaries\n * (except if `keepTogether` is enabled)\n */\n boundariesElement: 'viewport'\n },\n\n /**\n * Modifier used to make the popper flow toward the inner of the reference element.\n * By default, when this modifier is disabled, the popper will be placed outside\n * the reference element.\n * @memberof modifiers\n * @inner\n */\n inner: {\n /** @prop {number} order=700 - Index used to define the order of execution */\n order: 700,\n\n /** @prop {Boolean} enabled=false - Whether the modifier is enabled or not */\n enabled: false,\n\n /** @prop {ModifierFn} */\n fn: inner\n },\n\n /**\n * Modifier used to hide the popper when its reference element is outside of the\n * popper boundaries. It will set a `x-out-of-boundaries` attribute which can\n * be used to hide with a CSS selector the popper when its reference is\n * out of boundaries.\n *\n * Requires the `preventOverflow` modifier before it in order to work.\n * @memberof modifiers\n * @inner\n */\n hide: {\n /** @prop {number} order=800 - Index used to define the order of execution */\n order: 800,\n\n /** @prop {Boolean} enabled=true - Whether the modifier is enabled or not */\n enabled: true,\n\n /** @prop {ModifierFn} */\n fn: hide\n },\n\n /**\n * Computes the style that will be applied to the popper element to gets\n * properly positioned.\n *\n * Note that this modifier will not touch the DOM, it just prepares the styles\n * so that `applyStyle` modifier can apply it. This separation is useful\n * in case you need to replace `applyStyle` with a custom implementation.\n *\n * This modifier has `850` as `order` value to maintain backward compatibility\n * with previous versions of Popper.js. Expect the modifiers ordering method\n * to change in future major versions of the library.\n *\n * @memberof modifiers\n * @inner\n */\n computeStyle: {\n /** @prop {number} order=850 - Index used to define the order of execution */\n order: 850,\n\n /** @prop {Boolean} enabled=true - Whether the modifier is enabled or not */\n enabled: true,\n\n /** @prop {ModifierFn} */\n fn: computeStyle,\n\n /**\n * @prop {Boolean} gpuAcceleration=true\n * If true, it uses the CSS 3D transformation to position the popper.\n * Otherwise, it will use the `top` and `left` properties\n */\n gpuAcceleration: true,\n\n /**\n * @prop {string} [x='bottom']\n * Where to anchor the X axis (`bottom` or `top`). AKA X offset origin.\n * Change this if your popper should grow in a direction different from `bottom`\n */\n x: 'bottom',\n\n /**\n * @prop {string} [x='left']\n * Where to anchor the Y axis (`left` or `right`). AKA Y offset origin.\n * Change this if your popper should grow in a direction different from `right`\n */\n y: 'right'\n },\n\n /**\n * Applies the computed styles to the popper element.\n *\n * All the DOM manipulations are limited to this modifier. This is useful in case\n * you want to integrate Popper.js inside a framework or view library and you\n * want to delegate all the DOM manipulations to it.\n *\n * Note that if you disable this modifier, you must make sure the popper element\n * has its position set to `absolute` before Popper.js can do its work!\n *\n * Just disable this modifier and define your own to achieve the desired effect.\n *\n * @memberof modifiers\n * @inner\n */\n applyStyle: {\n /** @prop {number} order=900 - Index used to define the order of execution */\n order: 900,\n\n /** @prop {Boolean} enabled=true - Whether the modifier is enabled or not */\n enabled: true,\n\n /** @prop {ModifierFn} */\n fn: applyStyle,\n\n /** @prop {Function} */\n onLoad: applyStyleOnLoad,\n\n /**\n * @deprecated since version 1.10.0, the property moved to `computeStyle` modifier\n * @prop {Boolean} gpuAcceleration=true\n * If true, it uses the CSS 3D transformation to position the popper.\n * Otherwise, it will use the `top` and `left` properties\n */\n gpuAcceleration: undefined\n }\n};\n/**\n * The `dataObject` is an object containing all the information used by Popper.js.\n * This object is passed to modifiers and to the `onCreate` and `onUpdate` callbacks.\n * @name dataObject\n * @property {Object} data.instance The Popper.js instance\n * @property {String} data.placement Placement applied to popper\n * @property {String} data.originalPlacement Placement originally defined on init\n * @property {Boolean} data.flipped True if popper has been flipped by flip modifier\n * @property {Boolean} data.hide True if the reference element is out of boundaries, useful to know when to hide the popper\n * @property {HTMLElement} data.arrowElement Node used as arrow by arrow modifier\n * @property {Object} data.styles Any CSS property defined here will be applied to the popper. It expects the JavaScript nomenclature (eg. `marginBottom`)\n * @property {Object} data.arrowStyles Any CSS property defined here will be applied to the popper arrow. It expects the JavaScript nomenclature (eg. `marginBottom`)\n * @property {Object} data.boundaries Offsets of the popper boundaries\n * @property {Object} data.offsets The measurements of popper, reference and arrow elements\n * @property {Object} data.offsets.popper `top`, `left`, `width`, `height` values\n * @property {Object} data.offsets.reference `top`, `left`, `width`, `height` values\n * @property {Object} data.offsets.arrow] `top` and `left` offsets, only one of them will be different from 0\n */\n\n/**\n * Default options provided to Popper.js constructor.<br />\n * These can be overridden using the `options` argument of Popper.js.<br />\n * To override an option, simply pass an object with the same\n * structure of the `options` object, as the 3rd argument. For example:\n * ```\n * new Popper(ref, pop, {\n * modifiers: {\n * preventOverflow: { enabled: false }\n * }\n * })\n * ```\n * @type {Object}\n * @static\n * @memberof Popper\n */\n\nvar Defaults = {\n /**\n * Popper's placement.\n * @prop {Popper.placements} placement='bottom'\n */\n placement: 'bottom',\n\n /**\n * Set this to true if you want popper to position it self in 'fixed' mode\n * @prop {Boolean} positionFixed=false\n */\n positionFixed: false,\n\n /**\n * Whether events (resize, scroll) are initially enabled.\n * @prop {Boolean} eventsEnabled=true\n */\n eventsEnabled: true,\n\n /**\n * Set to true if you want to automatically remove the popper when\n * you call the `destroy` method.\n * @prop {Boolean} removeOnDestroy=false\n */\n removeOnDestroy: false,\n\n /**\n * Callback called when the popper is created.<br />\n * By default, it is set to no-op.<br />\n * Access Popper.js instance with `data.instance`.\n * @prop {onCreate}\n */\n onCreate: function onCreate() {},\n\n /**\n * Callback called when the popper is updated. This callback is not called\n * on the initialization/creation of the popper, but only on subsequent\n * updates.<br />\n * By default, it is set to no-op.<br />\n * Access Popper.js instance with `data.instance`.\n * @prop {onUpdate}\n */\n onUpdate: function onUpdate() {},\n\n /**\n * List of modifiers used to modify the offsets before they are applied to the popper.\n * They provide most of the functionalities of Popper.js.\n * @prop {modifiers}\n */\n modifiers: modifiers\n};\n/**\n * @callback onCreate\n * @param {dataObject} data\n */\n\n/**\n * @callback onUpdate\n * @param {dataObject} data\n */\n// Utils\n// Methods\n\nvar Popper = function () {\n /**\n * Creates a new Popper.js instance.\n * @class Popper\n * @param {HTMLElement|referenceObject} reference - The reference element used to position the popper\n * @param {HTMLElement} popper - The HTML element used as the popper\n * @param {Object} options - Your custom options to override the ones defined in [Defaults](#defaults)\n * @return {Object} instance - The generated Popper.js instance\n */\n function Popper(reference, popper) {\n var _this = this;\n\n var options = arguments.length > 2 && arguments[2] !== undefined ? arguments[2] : {};\n classCallCheck(this, Popper);\n\n this.scheduleUpdate = function () {\n return requestAnimationFrame(_this.update);\n }; // make update() debounced, so that it only runs at most once-per-tick\n\n\n this.update = debounce(this.update.bind(this)); // with {} we create a new object with the options inside it\n\n this.options = _extends({}, Popper.Defaults, options); // init state\n\n this.state = {\n isDestroyed: false,\n isCreated: false,\n scrollParents: []\n }; // get reference and popper elements (allow jQuery wrappers)\n\n this.reference = reference && reference.jquery ? reference[0] : reference;\n this.popper = popper && popper.jquery ? popper[0] : popper; // Deep merge modifiers options\n\n this.options.modifiers = {};\n Object.keys(_extends({}, Popper.Defaults.modifiers, options.modifiers)).forEach(function (name) {\n _this.options.modifiers[name] = _extends({}, Popper.Defaults.modifiers[name] || {}, options.modifiers ? options.modifiers[name] : {});\n }); // Refactoring modifiers' list (Object => Array)\n\n this.modifiers = Object.keys(this.options.modifiers).map(function (name) {\n return _extends({\n name: name\n }, _this.options.modifiers[name]);\n }) // sort the modifiers by order\n .sort(function (a, b) {\n return a.order - b.order;\n }); // modifiers have the ability to execute arbitrary code when Popper.js get inited\n // such code is executed in the same order of its modifier\n // they could add new properties to their options configuration\n // BE AWARE: don't add options to `options.modifiers.name` but to `modifierOptions`!\n\n this.modifiers.forEach(function (modifierOptions) {\n if (modifierOptions.enabled && isFunction(modifierOptions.onLoad)) {\n modifierOptions.onLoad(_this.reference, _this.popper, _this.options, modifierOptions, _this.state);\n }\n }); // fire the first update to position the popper in the right place\n\n this.update();\n var eventsEnabled = this.options.eventsEnabled;\n\n if (eventsEnabled) {\n // setup event listeners, they will take care of update the position in specific situations\n this.enableEventListeners();\n }\n\n this.state.eventsEnabled = eventsEnabled;\n } // We can't use class properties because they don't get listed in the\n // class prototype and break stuff like Sinon stubs\n\n\n createClass(Popper, [{\n key: 'update',\n value: function update$$1() {\n return update.call(this);\n }\n }, {\n key: 'destroy',\n value: function destroy$$1() {\n return destroy.call(this);\n }\n }, {\n key: 'enableEventListeners',\n value: function enableEventListeners$$1() {\n return enableEventListeners.call(this);\n }\n }, {\n key: 'disableEventListeners',\n value: function disableEventListeners$$1() {\n return disableEventListeners.call(this);\n }\n /**\n * Schedules an update. It will run on the next UI update available.\n * @method scheduleUpdate\n * @memberof Popper\n */\n\n /**\n * Collection of utilities useful when writing custom modifiers.\n * Starting from version 1.7, this method is available only if you\n * include `popper-utils.js` before `popper.js`.\n *\n * **DEPRECATION**: This way to access PopperUtils is deprecated\n * and will be removed in v2! Use the PopperUtils module directly instead.\n * Due to the high instability of the methods contained in Utils, we can't\n * guarantee them to follow semver. Use them at your own risk!\n * @static\n * @private\n * @type {Object}\n * @deprecated since version 1.8\n * @member Utils\n * @memberof Popper\n */\n\n }]);\n return Popper;\n}();\n/**\n * The `referenceObject` is an object that provides an interface compatible with Popper.js\n * and lets you use it as replacement of a real DOM node.<br />\n * You can use this method to position a popper relatively to a set of coordinates\n * in case you don't have a DOM node to use as reference.\n *\n * ```\n * new Popper(referenceObject, popperNode);\n * ```\n *\n * NB: This feature isn't supported in Internet Explorer 10.\n * @name referenceObject\n * @property {Function} data.getBoundingClientRect\n * A function that returns a set of coordinates compatible with the native `getBoundingClientRect` method.\n * @property {number} data.clientWidth\n * An ES6 getter that will return the width of the virtual reference element.\n * @property {number} data.clientHeight\n * An ES6 getter that will return the height of the virtual reference element.\n */\n\n\nPopper.Utils = (typeof window !== 'undefined' ? window : global).PopperUtils;\nPopper.placements = placements;\nPopper.Defaults = Defaults;\nexport default Popper;","module.exports = function (module) {\n if (!module.webpackPolyfill) {\n module.deprecate = function () {};\n\n module.paths = []; // module.parent = undefined by default\n\n if (!module.children) module.children = [];\n Object.defineProperty(module, \"loaded\", {\n enumerable: true,\n get: function get() {\n return module.l;\n }\n });\n Object.defineProperty(module, \"id\", {\n enumerable: true,\n get: function get() {\n return module.i;\n }\n });\n module.webpackPolyfill = 1;\n }\n\n return module;\n};"],"sourceRoot":""}