{"version":3,"sources":["webpack:///webpack/bootstrap","webpack:///../ecom-core/node_modules/jquery/dist/jquery.js","webpack:///../ecom-core/node_modules/moment/moment.js","webpack:///../ecom-core/dependencies/storefront-reference-architecture/node_modules/bootstrap/js/src/util.js","webpack:///../ecom-core/dependencies/storefront-reference-architecture/cartridges/app_storefront_base/cartridge/client/default/js/util.js","webpack:///../ecom-core/dependencies/storefront-reference-architecture/cartridges/app_storefront_base/cartridge/client/default/js/components/scrollAnimate.js","webpack:///../ecom-core/cartridges/app_custom_core/cartridge/client/default/js/product/base.js","webpack:///../ecom-core/dependencies/storefront-reference-architecture/node_modules/popper.js/dist/esm/popper.js","webpack:///../ecom-core/cartridges/app_custom_core/cartridge/client/default/js/components/carousel.js","webpack:///../ecom-core/cartridges/app_custom_core/cartridge/client/default/js/components/load3dModel.js","webpack:///../ecom-core/cartridges/app_custom_core/cartridge/client/default/js/components/loadVideo.js","webpack:///../ecom-core/dependencies/storefront-reference-architecture/cartridges/app_storefront_base/cartridge/client/default/js/components/focus.js","webpack:///(webpack)/buildin/global.js","webpack:///../ecom-core/cartridges/app_custom_core/cartridge/client/default/js/search/search.js","webpack:///../ecom-core/cartridges/app_custom_core/cartridge/client/default/js/components/clientSideValidation.js","webpack:///../ecom-core/dependencies/storefront-reference-architecture/node_modules/lodash/isObject.js","webpack:///../ecom-core/dependencies/storefront-reference-architecture/node_modules/lodash/_root.js","webpack:///../ecom-core/dependencies/storefront-reference-architecture/node_modules/lodash/_Symbol.js","webpack:///../ecom-core/node_modules/moment/locale/af.js","webpack:///../ecom-core/node_modules/moment/locale/ar.js","webpack:///../ecom-core/node_modules/moment/locale/ar-dz.js","webpack:///../ecom-core/node_modules/moment/locale/ar-kw.js","webpack:///../ecom-core/node_modules/moment/locale/ar-ly.js","webpack:///../ecom-core/node_modules/moment/locale/ar-ma.js","webpack:///../ecom-core/node_modules/moment/locale/ar-sa.js","webpack:///../ecom-core/node_modules/moment/locale/ar-tn.js","webpack:///../ecom-core/node_modules/moment/locale/az.js","webpack:///../ecom-core/node_modules/moment/locale/be.js","webpack:///../ecom-core/node_modules/moment/locale/bg.js","webpack:///../ecom-core/node_modules/moment/locale/bm.js","webpack:///../ecom-core/node_modules/moment/locale/bn.js","webpack:///../ecom-core/node_modules/moment/locale/bn-bd.js","webpack:///../ecom-core/node_modules/moment/locale/bo.js","webpack:///../ecom-core/node_modules/moment/locale/br.js","webpack:///../ecom-core/node_modules/moment/locale/bs.js","webpack:///../ecom-core/node_modules/moment/locale/ca.js","webpack:///../ecom-core/node_modules/moment/locale/cs.js","webpack:///../ecom-core/node_modules/moment/locale/cv.js","webpack:///../ecom-core/node_modules/moment/locale/cy.js","webpack:///../ecom-core/node_modules/moment/locale/da.js","webpack:///../ecom-core/node_modules/moment/locale/de.js","webpack:///../ecom-core/node_modules/moment/locale/de-at.js","webpack:///../ecom-core/node_modules/moment/locale/de-ch.js","webpack:///../ecom-core/node_modules/moment/locale/dv.js","webpack:///../ecom-core/node_modules/moment/locale/el.js","webpack:///../ecom-core/node_modules/moment/locale/en-au.js","webpack:///../ecom-core/node_modules/moment/locale/en-ca.js","webpack:///../ecom-core/node_modules/moment/locale/en-gb.js","webpack:///../ecom-core/node_modules/moment/locale/en-ie.js","webpack:///../ecom-core/node_modules/moment/locale/en-il.js","webpack:///../ecom-core/node_modules/moment/locale/en-in.js","webpack:///../ecom-core/node_modules/moment/locale/en-nz.js","webpack:///../ecom-core/node_modules/moment/locale/en-sg.js","webpack:///../ecom-core/node_modules/moment/locale/eo.js","webpack:///../ecom-core/node_modules/moment/locale/es.js","webpack:///../ecom-core/node_modules/moment/locale/es-do.js","webpack:///../ecom-core/node_modules/moment/locale/es-mx.js","webpack:///../ecom-core/node_modules/moment/locale/es-us.js","webpack:///../ecom-core/node_modules/moment/locale/et.js","webpack:///../ecom-core/node_modules/moment/locale/eu.js","webpack:///../ecom-core/node_modules/moment/locale/fa.js","webpack:///../ecom-core/node_modules/moment/locale/fi.js","webpack:///../ecom-core/node_modules/moment/locale/fil.js","webpack:///../ecom-core/node_modules/moment/locale/fo.js","webpack:///../ecom-core/node_modules/moment/locale/fr.js","webpack:///../ecom-core/node_modules/moment/locale/fr-ca.js","webpack:///../ecom-core/node_modules/moment/locale/fr-ch.js","webpack:///../ecom-core/node_modules/moment/locale/fy.js","webpack:///../ecom-core/node_modules/moment/locale/ga.js","webpack:///../ecom-core/node_modules/moment/locale/gd.js","webpack:///../ecom-core/node_modules/moment/locale/gl.js","webpack:///../ecom-core/node_modules/moment/locale/gom-deva.js","webpack:///../ecom-core/node_modules/moment/locale/gom-latn.js","webpack:///../ecom-core/node_modules/moment/locale/gu.js","webpack:///../ecom-core/node_modules/moment/locale/he.js","webpack:///../ecom-core/node_modules/moment/locale/hi.js","webpack:///../ecom-core/node_modules/moment/locale/hr.js","webpack:///../ecom-core/node_modules/moment/locale/hu.js","webpack:///../ecom-core/node_modules/moment/locale/hy-am.js","webpack:///../ecom-core/node_modules/moment/locale/id.js","webpack:///../ecom-core/node_modules/moment/locale/is.js","webpack:///../ecom-core/node_modules/moment/locale/it.js","webpack:///../ecom-core/node_modules/moment/locale/it-ch.js","webpack:///../ecom-core/node_modules/moment/locale/ja.js","webpack:///../ecom-core/node_modules/moment/locale/jv.js","webpack:///../ecom-core/node_modules/moment/locale/ka.js","webpack:///../ecom-core/node_modules/moment/locale/kk.js","webpack:///../ecom-core/node_modules/moment/locale/km.js","webpack:///../ecom-core/node_modules/moment/locale/kn.js","webpack:///../ecom-core/node_modules/moment/locale/ko.js","webpack:///../ecom-core/node_modules/moment/locale/ku.js","webpack:///../ecom-core/node_modules/moment/locale/ky.js","webpack:///../ecom-core/node_modules/moment/locale/lb.js","webpack:///../ecom-core/node_modules/moment/locale/lo.js","webpack:///../ecom-core/node_modules/moment/locale/lt.js","webpack:///../ecom-core/node_modules/moment/locale/lv.js","webpack:///../ecom-core/node_modules/moment/locale/me.js","webpack:///../ecom-core/node_modules/moment/locale/mi.js","webpack:///../ecom-core/node_modules/moment/locale/mk.js","webpack:///../ecom-core/node_modules/moment/locale/ml.js","webpack:///../ecom-core/node_modules/moment/locale/mn.js","webpack:///../ecom-core/node_modules/moment/locale/mr.js","webpack:///../ecom-core/node_modules/moment/locale/ms.js","webpack:///../ecom-core/node_modules/moment/locale/ms-my.js","webpack:///../ecom-core/node_modules/moment/locale/mt.js","webpack:///../ecom-core/node_modules/moment/locale/my.js","webpack:///../ecom-core/node_modules/moment/locale/nb.js","webpack:///../ecom-core/node_modules/moment/locale/ne.js","webpack:///../ecom-core/node_modules/moment/locale/nl.js","webpack:///../ecom-core/node_modules/moment/locale/nl-be.js","webpack:///../ecom-core/node_modules/moment/locale/nn.js","webpack:///../ecom-core/node_modules/moment/locale/oc-lnc.js","webpack:///../ecom-core/node_modules/moment/locale/pa-in.js","webpack:///../ecom-core/node_modules/moment/locale/pl.js","webpack:///../ecom-core/node_modules/moment/locale/pt.js","webpack:///../ecom-core/node_modules/moment/locale/pt-br.js","webpack:///../ecom-core/node_modules/moment/locale/ro.js","webpack:///../ecom-core/node_modules/moment/locale/ru.js","webpack:///../ecom-core/node_modules/moment/locale/sd.js","webpack:///../ecom-core/node_modules/moment/locale/se.js","webpack:///../ecom-core/node_modules/moment/locale/si.js","webpack:///../ecom-core/node_modules/moment/locale/sk.js","webpack:///../ecom-core/node_modules/moment/locale/sl.js","webpack:///../ecom-core/node_modules/moment/locale/sq.js","webpack:///../ecom-core/node_modules/moment/locale/sr.js","webpack:///../ecom-core/node_modules/moment/locale/sr-cyrl.js","webpack:///../ecom-core/node_modules/moment/locale/ss.js","webpack:///../ecom-core/node_modules/moment/locale/sv.js","webpack:///../ecom-core/node_modules/moment/locale/sw.js","webpack:///../ecom-core/node_modules/moment/locale/ta.js","webpack:///../ecom-core/node_modules/moment/locale/te.js","webpack:///../ecom-core/node_modules/moment/locale/tet.js","webpack:///../ecom-core/node_modules/moment/locale/tg.js","webpack:///../ecom-core/node_modules/moment/locale/th.js","webpack:///../ecom-core/node_modules/moment/locale/tk.js","webpack:///../ecom-core/node_modules/moment/locale/tl-ph.js","webpack:///../ecom-core/node_modules/moment/locale/tlh.js","webpack:///../ecom-core/node_modules/moment/locale/tr.js","webpack:///../ecom-core/node_modules/moment/locale/tzl.js","webpack:///../ecom-core/node_modules/moment/locale/tzm.js","webpack:///../ecom-core/node_modules/moment/locale/tzm-latn.js","webpack:///../ecom-core/node_modules/moment/locale/ug-cn.js","webpack:///../ecom-core/node_modules/moment/locale/uk.js","webpack:///../ecom-core/node_modules/moment/locale/ur.js","webpack:///../ecom-core/node_modules/moment/locale/uz.js","webpack:///../ecom-core/node_modules/moment/locale/uz-latn.js","webpack:///../ecom-core/node_modules/moment/locale/vi.js","webpack:///../ecom-core/node_modules/moment/locale/x-pseudo.js","webpack:///../ecom-core/node_modules/moment/locale/yo.js","webpack:///../ecom-core/node_modules/moment/locale/zh-cn.js","webpack:///../ecom-core/node_modules/moment/locale/zh-hk.js","webpack:///../ecom-core/node_modules/moment/locale/zh-mo.js","webpack:///../ecom-core/node_modules/moment/locale/zh-tw.js","webpack:///./cartridges/app_custom_serengeti/cartridge/client/default/js/main.js","webpack:///../ecom-core/cartridges/app_custom_core/cartridge/client/default/js/main.js","webpack:///../ecom-core/dependencies/storefront-reference-architecture/cartridges/app_storefront_base/cartridge/client/default/js/components/cookie.js","webpack:///../ecom-core/cartridges/app_custom_core/cartridge/client/default/js/components/consentTracking.js","webpack:///../ecom-core/cartridges/app_custom_core/cartridge/client/default/js/components/menu.js","webpack:///../ecom-core/cartridges/app_custom_core/cartridge/client/default/js/components/geoRedirectionBanner.js","webpack:///../ecom-core/cartridges/app_custom_core/cartridge/client/default/js/components/footer.js","webpack:///../ecom-core/dependencies/storefront-reference-architecture/cartridges/app_storefront_base/cartridge/client/default/js/components/footer.js","webpack:///../ecom-core/dependencies/storefront-reference-architecture/cartridges/app_storefront_base/cartridge/client/default/js/components/clientSideValidation.js","webpack:///../ecom-core/cartridges/app_custom_core/cartridge/client/default/js/components/miniCart.js","webpack:///../ecom-core/cartridges/app_custom_core/cartridge/client/default/js/cart/cart.js","webpack:///../ecom-core/cartridges/app_custom_core/cartridge/client/default/js/components/search.js","webpack:///../ecom-core/dependencies/storefront-reference-architecture/node_modules/lodash/debounce.js","webpack:///../ecom-core/dependencies/storefront-reference-architecture/node_modules/lodash/now.js","webpack:///../ecom-core/dependencies/storefront-reference-architecture/node_modules/lodash/_freeGlobal.js","webpack:///../ecom-core/dependencies/storefront-reference-architecture/node_modules/lodash/toNumber.js","webpack:///../ecom-core/dependencies/storefront-reference-architecture/node_modules/lodash/_baseTrim.js","webpack:///../ecom-core/dependencies/storefront-reference-architecture/node_modules/lodash/_trimmedEndIndex.js","webpack:///../ecom-core/dependencies/storefront-reference-architecture/node_modules/lodash/isSymbol.js","webpack:///../ecom-core/dependencies/storefront-reference-architecture/node_modules/lodash/_baseGetTag.js","webpack:///../ecom-core/dependencies/storefront-reference-architecture/node_modules/lodash/_getRawTag.js","webpack:///../ecom-core/dependencies/storefront-reference-architecture/node_modules/lodash/_objectToString.js","webpack:///../ecom-core/dependencies/storefront-reference-architecture/node_modules/lodash/isObjectLike.js","webpack:///../ecom-core/cartridges/app_custom_core/cartridge/client/default/js/components/dateTime.js","webpack:///../ecom-core/node_modules/jstz/index.js","webpack:///../ecom-core/node_modules/jstz/dist/jstz.js","webpack:///(webpack)/buildin/amd-define.js","webpack:///(webpack)/buildin/amd-options.js","webpack:///../ecom-core/node_modules/moment-timezone/index.js","webpack:///../ecom-core/node_modules/moment-timezone/moment-timezone.js","webpack:///(webpack)/buildin/module.js","webpack:///../ecom-core/node_modules/moment/locale sync ^\\.\\/.*$","webpack:///../ecom-core/cartridges/app_custom_core/cartridge/client/default/js/components/tooltip.js","webpack:///../ecom-core/cartridges/app_custom_core/cartridge/client/default/js/components/countrySelector.js","webpack:///../ecom-core/cartridges/app_custom_core/cartridge/client/default/js/experience/assets/einsteinCarousel.js","webpack:///../ecom-core/cartridges/app_custom_core/cartridge/client/default/js/experience/assets/pdwidget.js","webpack:///../ecom-core/cartridges/app_custom_core/cartridge/client/default/js/experience/layouts/carouselBanner.js","webpack:///../ecom-core/cartridges/app_custom_core/cartridge/client/default/js/product/quickView.js","webpack:///./node_modules/lazysizes/lazysizes.js","webpack:///../ecom-core/cartridges/app_custom_core/cartridge/client/default/js/components/lazysizes.js","webpack:///../ecom-core/cartridges/app_custom_google_tag_manager/cartridge/client/default/js/analytics/analytics.js","webpack:///../ecom-core/cartridges/app_custom_core/cartridge/client/default/js/components/spinner.js","webpack:///../ecom-core/node_modules/popper.js/dist/esm/popper.js","webpack:///../ecom-core/dependencies/storefront-reference-architecture/node_modules/bootstrap/js/src/collapse.js","webpack:///../ecom-core/dependencies/storefront-reference-architecture/node_modules/bootstrap/js/src/dropdown.js","webpack:///../ecom-core/dependencies/storefront-reference-architecture/node_modules/bootstrap/js/src/modal.js","webpack:///../ecom-core/dependencies/storefront-reference-architecture/node_modules/bootstrap/js/src/tab.js","webpack:///./node_modules/slick-carousel/slick/slick.js","webpack:///../ecom-core/dependencies/storefront-reference-architecture/node_modules/bootstrap/js/src/tools/sanitizer.js","webpack:///../ecom-core/dependencies/storefront-reference-architecture/node_modules/bootstrap/js/src/tooltip.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","global","factory","document","w","Error","window","this","noGlobal","arr","getProto","getPrototypeOf","slice","flat","array","concat","apply","push","indexOf","class2type","toString","hasOwn","fnToString","ObjectFunctionString","support","isFunction","obj","nodeType","item","isWindow","preservedScriptAttributes","type","src","nonce","noModule","DOMEval","code","node","doc","val","script","createElement","text","getAttribute","setAttribute","head","appendChild","parentNode","removeChild","toType","rhtmlSuffix","jQuery","selector","context","fn","init","isArrayLike","length","nodeName","elem","toLowerCase","jquery","constructor","toArray","num","pushStack","elems","ret","merge","prevObject","each","callback","map","arguments","first","eq","last","even","grep","_elem","odd","len","j","end","sort","splice","extend","options","copy","copyIsArray","clone","target","deep","isPlainObject","Array","isArray","undefined","expando","Math","random","replace","isReady","error","msg","noop","proto","Ctor","isEmptyObject","globalEval","textContent","documentElement","nodeValue","makeArray","results","inArray","isXMLDoc","namespace","namespaceURI","docElem","ownerDocument","test","second","invert","matches","callbackExpect","arg","guid","iterator","split","_i","pop","whitespace","rtrimCSS","RegExp","contains","a","b","bup","compareDocumentPosition","rcssescape","fcssescape","ch","asCodePoint","charCodeAt","escapeSelector","sel","preferredDoc","pushNative","Expr","outermostContext","sortInput","hasDuplicate","documentIsHTML","rbuggyQSA","dirruns","done","classCache","createCache","tokenCache","compilerCache","nonnativeSelectorCache","sortOrder","booleans","identifier","attributes","pseudos","rwhitespace","rcomma","rleadingCombinator","rdescend","rpseudo","ridentifier","matchExpr","ID","CLASS","TAG","ATTR","PSEUDO","CHILD","bool","needsContext","rinputs","rheader","rquickExpr","rsibling","runescape","funescape","escape","nonHex","high","String","fromCharCode","unloadHandler","setDocument","inDisabledFieldset","addCombinator","disabled","dir","next","childNodes","e","els","find","seed","nid","match","groups","newSelector","newContext","exec","getElementById","id","getElementsByTagName","getElementsByClassName","testContext","scope","tokenize","toSelector","join","querySelectorAll","qsaError","removeAttribute","select","keys","cache","cacheLength","shift","markFunction","assert","el","createInputPseudo","createButtonPseudo","createDisabledPseudo","isDisabled","createPositionalPseudo","argument","matchIndexes","subWindow","webkitMatchesSelector","msMatchesSelector","defaultView","top","addEventListener","getById","getElementsByName","disconnectedMatch","cssHas","querySelector","filter","attrId","getAttributeNode","tag","className","input","innerHTML","compare","sortDetached","expr","elements","matchesSelector","attr","attrHandle","uniqueSort","duplicates","sortStable","createPseudo","relative","preFilter","excess","unquoted","nodeNameSelector","expectedNodeName","pattern","operator","check","result","what","_argument","simple","forward","ofType","_context","xml","outerCache","nodeIndex","start","parent","useCache","diff","firstChild","lastChild","pseudo","args","setFilters","idx","matched","not","matcher","compile","unmatched","has","lang","elemLang","hash","location","root","focus","activeElement","err","safeActiveElement","hasFocus","href","tabIndex","enabled","checked","selected","selectedIndex","empty","nextSibling","header","button","_matchIndexes","lt","gt","nth","radio","checkbox","file","password","image","submit","reset","parseOnly","tokens","soFar","preFilters","cached","combinator","base","skip","checkNonElements","doneName","oldCache","newCache","elementMatcher","matchers","condense","newUnmatched","mapped","setMatcher","postFilter","postFinder","postSelector","temp","matcherOut","preMap","postMap","preexisting","contexts","multipleContexts","matcherIn","matcherFromTokens","checkContext","leadingRelative","implicitRelative","matchContext","matchAnyContext","setMatchers","elementMatchers","bySet","byElement","superMatcher","outermost","matchedCount","setMatched","contextBackup","dirrunsUnique","matcherFromGroupMatchers","token","compiled","filters","unique","getText","isXML","selectors","until","truncate","is","siblings","rneedsContext","rsingleTag","winnow","qualifier","self","rootjQuery","parseHTML","ready","rparentsprev","guaranteedUnique","children","contents","prev","sibling","cur","targets","closest","index","prevAll","add","addBack","parents","parentsUntil","nextAll","nextUntil","prevUntil","contentDocument","content","reverse","rnothtmlwhite","Identity","v","Thrower","ex","adoptValue","resolve","reject","noValue","method","promise","fail","then","Callbacks","_","flag","createOptions","firing","memory","fired","locked","list","queue","firingIndex","fire","once","stopOnFalse","remove","disable","lock","fireWith","Deferred","func","tuples","state","always","deferred","pipe","fns","newDefer","tuple","returned","progress","notify","onFulfilled","onRejected","onProgress","maxDepth","depth","handler","special","that","mightThrow","TypeError","notifyWith","resolveWith","process","exceptionHook","rejectWith","getErrorHook","getStackHook","setTimeout","stateString","when","singleValue","remaining","resolveContexts","resolveValues","primary","updateFunc","rerrorNames","asyncError","console","warn","message","stack","readyException","readyList","completed","removeEventListener","catch","readyWait","wait","readyState","doScroll","access","chainable","emptyGet","raw","bulk","_key","rmsPrefix","rdashAlpha","fcamelCase","_all","letter","toUpperCase","camelCase","string","acceptData","owner","Data","uid","configurable","set","data","prop","hasData","dataPriv","dataUser","rbrace","rmultiDash","dataAttr","JSON","parse","getData","removeData","_data","_removeData","attrs","dequeue","startLength","hooks","_queueHooks","unshift","stop","setter","clearQueue","tmp","count","defer","pnum","source","rcssNum","cssExpand","isAttached","composed","getRootNode","isHiddenWithinTree","style","display","css","adjustCSS","valueParts","tween","adjusted","scale","maxIterations","currentValue","initial","unit","cssNumber","initialInUnit","defaultDisplayMap","getDefaultDisplay","body","showHide","show","values","hide","toggle","div","rcheckableType","rtagName","rscriptType","createDocumentFragment","checkClone","cloneNode","noCloneChecked","defaultValue","option","wrapMap","thead","col","tr","td","_default","getAll","setGlobalEval","refElements","tbody","tfoot","colgroup","caption","th","optgroup","rhtml","buildFragment","scripts","selection","ignored","wrap","attached","fragment","nodes","htmlPrefilter","createTextNode","rtypenamespace","returnTrue","returnFalse","on","types","one","origFn","event","off","leverageNative","isSetup","saved","isTrigger","delegateType","stopPropagation","stopImmediatePropagation","preventDefault","trigger","isImmediatePropagationStopped","handleObjIn","eventHandle","events","handleObj","handlers","namespaces","origType","elemData","handle","triggered","dispatch","bindType","delegateCount","setup","mappedTypes","origCount","teardown","removeEvent","nativeEvent","handlerQueue","fix","delegateTarget","preDispatch","isPropagationStopped","currentTarget","rnamespace","postDispatch","matchedHandlers","matchedSelectors","addProp","hook","Event","originalEvent","writable","load","noBubble","click","beforeunload","returnValue","props","isDefaultPrevented","defaultPrevented","relatedTarget","timeStamp","Date","now","isSimulated","altKey","bubbles","cancelable","changedTouches","ctrlKey","detail","eventPhase","metaKey","pageX","pageY","shiftKey","view","charCode","keyCode","buttons","clientX","clientY","offsetX","offsetY","pointerId","pointerType","screenX","screenY","targetTouches","toElement","touches","which","blur","focusMappedHandler","documentMode","simulate","attaches","dataHolder","mouseenter","mouseleave","pointerenter","pointerleave","orig","related","rnoInnerhtml","rchecked","rcleanScript","manipulationTarget","disableScript","restoreScript","cloneCopyEvent","dest","udataOld","udataCur","fixInput","domManip","collection","hasScripts","iNoClone","valueIsFunction","html","_evalUrl","keepData","cleanData","dataAndEvents","deepDataAndEvents","srcElements","destElements","inPage","detach","append","prepend","insertBefore","before","after","replaceWith","replaceChild","appendTo","prependTo","insertAfter","replaceAll","original","insert","rnumnonpx","rcustomProp","getStyles","opener","getComputedStyle","swap","old","rboxStyle","curCSS","computed","width","minWidth","maxWidth","isCustomProp","getPropertyValue","pixelBoxStyles","addGetHookIf","conditionFn","hookFn","computeStyleTests","container","cssText","divStyle","pixelPositionVal","reliableMarginLeftVal","roundPixelMeasures","marginLeft","right","pixelBoxStylesVal","boxSizingReliableVal","position","scrollboxSizeVal","offsetWidth","measure","round","parseFloat","reliableTrDimensionsVal","backgroundClip","clearCloneStyle","boxSizingReliable","pixelPosition","reliableMarginLeft","scrollboxSize","reliableTrDimensions","table","trChild","trStyle","height","parseInt","borderTopWidth","borderBottomWidth","offsetHeight","cssPrefixes","emptyStyle","vendorProps","finalPropName","final","cssProps","capName","vendorPropName","rdisplayswap","cssShow","visibility","cssNormalTransform","letterSpacing","fontWeight","setPositiveNumber","subtract","max","boxModelAdjustment","dimension","box","isBorderBox","styles","computedVal","extra","delta","marginDelta","ceil","getWidthOrHeight","valueIsBorderBox","offsetProp","getClientRects","Tween","easing","cssHooks","opacity","animationIterationCount","aspectRatio","borderImageSlice","columnCount","flexGrow","flexShrink","gridArea","gridColumn","gridColumnEnd","gridColumnStart","gridRow","gridRowEnd","gridRowStart","lineHeight","order","orphans","widows","zIndex","zoom","fillOpacity","floodOpacity","stopOpacity","strokeMiterlimit","strokeOpacity","origName","setProperty","isFinite","getBoundingClientRect","scrollboxSizeBuggy","left","margin","padding","border","prefix","suffix","expand","expanded","parts","propHooks","run","percent","eased","duration","pos","step","fx","scrollTop","scrollLeft","linear","swing","cos","PI","fxNow","inProgress","rfxtypes","rrun","schedule","hidden","requestAnimationFrame","interval","tick","createFxNow","genFx","includeWidth","createTween","animation","Animation","tweeners","properties","stopped","prefilters","currentTime","startTime","tweens","opts","specialEasing","originalProperties","originalOptions","gotoEnd","propFilter","complete","timer","anim","tweener","oldfire","propTween","restoreDisplay","isBox","dataShow","unqueued","overflow","overflowX","overflowY","prefilter","speed","opt","speeds","fadeTo","to","animate","optall","doAnimation","finish","stopQueue","timers","cssFn","slideDown","slideUp","slideToggle","fadeIn","fadeOut","fadeToggle","slow","fast","delay","time","timeout","clearTimeout","checkOn","optSelected","radioValue","boolHook","removeAttr","nType","attrHooks","attrNames","lowercaseName","rfocusable","rclickable","stripAndCollapse","getClass","classesToArray","removeProp","propFix","tabindex","addClass","classNames","curValue","finalValue","removeClass","toggleClass","stateVal","isValidValue","hasClass","rreturn","valHooks","optionSet","rquery","parseXML","parserErrorElem","DOMParser","parseFromString","rfocusMorph","stopPropagationCallback","onlyHandlers","bubbleType","ontype","lastElement","eventPath","parentWindow","triggerHandler","rbracket","rCRLF","rsubmitterTypes","rsubmittable","buildParams","traditional","param","valueOrFunction","encodeURIComponent","serialize","serializeArray","r20","rhash","rantiCache","rheaders","rnoContent","rprotocol","transports","allTypes","originAnchor","addToPrefiltersOrTransports","structure","dataTypeExpression","dataType","dataTypes","inspectPrefiltersOrTransports","jqXHR","inspected","seekingTransport","inspect","prefilterOrFactory","dataTypeOrTransport","ajaxExtend","flatOptions","ajaxSettings","active","lastModified","etag","url","isLocal","protocol","processData","async","contentType","accepts","json","responseFields","converters","ajaxSetup","settings","ajaxPrefilter","ajaxTransport","ajax","transport","cacheURL","responseHeadersString","responseHeaders","timeoutTimer","urlAnchor","fireGlobals","uncached","callbackContext","globalEventContext","completeDeferred","statusCode","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","throws","ajaxConvert","getJSON","getScript","wrapAll","firstElementChild","wrapInner","htmlIsFunction","unwrap","visible","xhr","XMLHttpRequest","xhrSuccessStatus","0","1223","xhrSupported","cors","errorCallback","open","username","xhrFields","onload","onerror","onabort","ontimeout","onreadystatechange","responseType","responseText","binary","scriptAttrs","charset","scriptCharset","evt","oldCallbacks","rjsonp","jsonp","jsonpCallback","originalSettings","callbackName","overwritten","responseContainer","jsonProp","createHTMLDocument","implementation","keepScripts","parsed","params","animated","offset","setOffset","curPosition","curLeft","curCSSTop","curTop","curOffset","curCSSLeft","curElem","using","rect","win","pageYOffset","pageXOffset","offsetParent","parentOffset","scrollTo","Height","Width","defaultExtra","funcName","unbind","delegate","undelegate","hover","fnOver","fnOut","rtrim","proxy","holdReady","hold","parseJSON","isNumeric","isNaN","trim","_jQuery","_$","$","noConflict","hookCallback","some","isObject","hasOwnProp","isObjectEmpty","getOwnPropertyNames","k","isUndefined","isNumber","isDate","res","arrLen","valueOf","createUTC","format","locale","strict","createLocalOrUTC","utc","getParsingFlags","_pf","unusedTokens","unusedInput","charsLeftOver","nullInput","invalidEra","invalidMonth","invalidFormat","userInvalidated","iso","parsedDateParts","era","meridiem","rfc2822","weekdayMismatch","isValid","_isValid","flags","parsedParts","isNowValid","_d","getTime","invalidWeekday","_strict","bigHour","isFrozen","createInvalid","NaN","fun","momentProperties","updateInProgress","copyConfig","from","momentPropertiesLen","_isAMomentObject","_f","_l","_tzm","_isUTC","_offset","_locale","Moment","config","updateOffset","isMoment","suppressDeprecationWarnings","deprecate","firstTime","deprecationHandler","argLen","deprecations","deprecateSimple","Function","mergeConfigs","parentConfig","childConfig","Locale","zeroFill","number","targetLength","forceSign","absNumber","abs","zerosToFill","pow","substr","formattingTokens","localFormattingTokens","formatFunctions","formatTokenFunctions","addFormatToken","padded","ordinal","localeData","formatMoment","expandFormat","mom","output","makeFormatFunction","invalidDate","replaceLongDateFormatTokens","longDateFormat","lastIndex","aliases","addUnitAlias","shorthand","lowerCase","normalizeUnits","units","normalizeObjectUnits","inputObject","normalizedProp","normalizedInput","priorities","addUnitPriority","priority","isLeapYear","year","absFloor","floor","toInt","argumentForCoercion","coercedNumber","makeGetSet","keepTime","set$1","month","date","daysInMonth","regexes","match1","match2","match3","match4","match6","match1to2","match3to4","match5to6","match1to3","match1to4","match1to6","matchUnsigned","matchSigned","matchOffset","matchShortOffset","matchWord","addRegexToken","regex","strictRegex","isStrict","getParseRegexForToken","regexEscape","p1","p2","p3","p4","addParseToken","tokenLen","addWeekParseToken","_w","addTimeToArrayFromToken","_a","x","modMonth","monthsShort","months","monthsShortRegex","monthsRegex","monthsParse","defaultLocaleMonths","defaultLocaleMonthsShort","MONTHS_IN_FORMAT","defaultMonthsShortRegex","defaultMonthsRegex","handleStrictParse","monthName","ii","llc","toLocaleLowerCase","_monthsParse","_longMonthsParse","_shortMonthsParse","setMonth","dayOfMonth","min","getSetMonth","computeMonthsParse","cmpLenRev","shortPieces","longPieces","mixedPieces","_monthsRegex","_monthsShortRegex","_monthsStrictRegex","_monthsShortStrictRegex","daysInYear","y","parseTwoDigitYear","getSetYear","createDate","h","M","ms","getFullYear","setFullYear","createUTCDate","UTC","getUTCFullYear","setUTCFullYear","firstWeekOffset","dow","doy","fwd","getUTCDay","dayOfYearFromWeeks","week","weekday","resYear","resDayOfYear","dayOfYear","weekOfYear","resWeek","weekOffset","weeksInYear","weekOffsetNext","shiftWeekdays","ws","weekdaysMin","weekdaysShort","weekdays","weekdaysMinRegex","weekdaysShortRegex","weekdaysRegex","weekdaysParse","defaultLocaleWeekdays","defaultLocaleWeekdaysShort","defaultLocaleWeekdaysMin","defaultWeekdaysRegex","defaultWeekdaysShortRegex","defaultWeekdaysMinRegex","handleStrictParse$1","weekdayName","_weekdaysParse","_shortWeekdaysParse","_minWeekdaysParse","day","computeWeekdaysParse","minp","shortp","longp","minPieces","_weekdaysRegex","_weekdaysShortRegex","_weekdaysMinRegex","_weekdaysStrictRegex","_weekdaysShortStrictRegex","_weekdaysMinStrictRegex","hFormat","hours","lowercase","minutes","matchMeridiem","_meridiemParse","seconds","kInput","_isPm","isPM","_meridiem","pos1","pos2","globalLocale","getSetHour","baseConfig","calendar","sameDay","nextDay","nextWeek","lastDay","lastWeek","sameElse","LTS","LT","L","LL","LLL","LLLL","dayOfMonthOrdinalParse","relativeTime","future","past","ss","mm","hh","dd","ww","MM","yy","meridiemParse","locales","localeFamilies","commonPrefix","arr1","arr2","minl","normalizeLocale","loadLocale","oldLocale","isLocaleNameSane","_abbr","getSetGlobalLocale","getLocale","defineLocale","abbr","_config","parentLocale","forEach","names","chooseLocale","checkOverflow","_overflowDayOfYear","_overflowWeeks","_overflowWeekday","extendedIsoRegex","basicIsoRegex","tzRegex","isoDates","isoTimes","aspNetJsonRegex","obsOffsets","UT","GMT","EDT","EST","CDT","CST","MDT","MST","PDT","PST","configFromISO","allowTime","dateFormat","timeFormat","tzFormat","isoDatesLen","isoTimesLen","configFromStringAndFormat","untruncateYear","yearStr","configFromRFC2822","parsedArray","monthStr","dayStr","hourStr","minuteStr","secondStr","weekdayStr","parsedInput","getDay","checkWeekday","obsOffset","militaryOffset","numOffset","hm","calculateOffset","setUTCMinutes","getUTCMinutes","defaults","configFromArray","currentDate","expectedWeekday","yearToUse","nowValue","_useUTC","getUTCMonth","getUTCDate","getMonth","getDate","currentDateArray","weekYear","weekdayOverflow","curWeek","GG","W","E","createLocal","_week","gg","_dayOfYear","dayOfYearFromWeekInfo","_nextDay","ISO_8601","RFC_2822","skipped","stringLength","totalParsedInputLength","hour","isPm","meridiemHour","meridiemFixWrap","erasConvertYear","prepareConfig","preparse","tempConfig","bestMoment","scoreToBeat","currentScore","validFormatFound","bestFormatIsValid","configfLen","score","configFromStringAndArray","createFromInputFallback","configFromString","dayOrDate","minute","millisecond","configFromObject","configFromInput","isUTC","prototypeMin","other","prototypeMax","pickBy","moments","ordering","Duration","years","quarters","quarter","weeks","isoWeek","days","milliseconds","unitHasDecimal","orderLen","isDurationValid","_milliseconds","_days","_months","_bubble","isDuration","absRound","separator","utcOffset","sign","offsetFromString","chunkOffset","cloneWithOffset","model","setTime","local","getDateOffset","getTimezoneOffset","isUtc","aspNetRegex","isoRegex","createDuration","diffRes","parseIso","isBefore","positiveMomentsDifference","inp","isAfter","createAdder","direction","period","addSubtract","isAdding","invalid","isString","isMomentInput","arrayTest","dataTypeTest","isNumberOrStringArray","objectTest","propertyTest","propertyLen","isMomentInputObject","isCalendarSpec","monthDiff","wholeMonthDiff","anchor","newLocaleData","defaultFormat","defaultFormatUtc","mod$1","dividend","divisor","localStartOfDate","utcStartOfDate","matchEraAbbr","erasAbbrRegex","computeErasParse","abbrPieces","namePieces","narrowPieces","eras","narrow","_erasRegex","_erasNameRegex","_erasAbbrRegex","_erasNarrowRegex","addWeekYearFormatToken","getSetWeekYearHelper","weeksTarget","setWeekAll","dayOfYearData","erasNameRegex","erasNarrowRegex","erasParse","_eraYearOrdinalRegex","eraYearOrdinalParse","isoWeekYear","_dayOfMonthOrdinalParse","_ordinalParse","_dayOfMonthOrdinalParseLenient","getSetDayOfMonth","getSetMinute","getSetMillisecond","getSetSecond","parseMs","preParsePostFormat","formats","sod","startOf","calendarFormat","asFloat","zoneDelta","endOf","startOfDate","isoWeekday","inputString","postformat","withoutSuffix","humanize","fromNow","toNow","invalidAt","localInput","isBetween","inclusivity","localFrom","localTo","isSame","inputMs","isSameOrAfter","isSameOrBefore","parsingFlags","prioritized","unitsObj","u","getPrioritizedUnits","prioritizedLen","toObject","toDate","toISOString","keepOffset","zone","for","toJSON","unix","creationData","eraName","since","eraNarrow","eraAbbr","eraYear","isoWeeks","weekInfo","weeksInWeekYear","isoWeeksInYear","isoWeeksInISOWeekYear","parseWeekday","parseIsoWeekday","keepLocalTime","keepMinutes","localAdjust","_changeInProgress","parseZone","tZone","hasAlignedHourOffset","isDST","isUtcOffset","zoneAbbr","zoneName","dates","isDSTShifted","_isDSTShifted","array1","array2","dontConvert","lengthDiff","diffs","compareArrays","proto$1","get$1","field","listMonthsImpl","out","listWeekdaysImpl","localeSorted","_calendar","_longDateFormat","formatUpper","tok","_invalidDate","_ordinal","isFuture","_relativeTime","pastFuture","_eras","isFormat","_monthsShort","_monthsParseExact","firstDayOfYear","firstDayOfWeek","_weekdays","_weekdaysMin","_weekdaysShort","_weekdaysParseExact","_fullWeekdaysParse","charAt","isLower","langData","mathAbs","addSubtract$1","absCeil","daysToMonths","monthsToDays","makeAs","alias","as","asMilliseconds","asSeconds","asMinutes","asHours","asDays","asWeeks","asMonths","asQuarters","asYears","makeGetter","thresholds","substituteTimeAgo","abs$1","toISOString$1","totalSign","ymSign","daysSign","hmsSign","total","toFixed","proto$2","monthsFromDays","argWithSuffix","argThresholds","withSuffix","assign","posNegDuration","relativeTime$1","toIsoString","version","updateLocale","tmpLocale","relativeTimeRounding","roundingFunction","relativeTimeThreshold","threshold","limit","myMoment","HTML5_FMT","DATETIME_LOCAL","DATETIME_LOCAL_SECONDS","DATETIME_LOCAL_MS","DATE","TIME","TIME_SECONDS","TIME_MS","WEEK","MONTH","transitionEndEmulator","called","Util","TRANSITION_END","triggerTransitionEnd","getUID","getSelectorFromElement","element","hrefAttr","getTransitionDurationFromElement","transitionDuration","transitionDelay","floatTransitionDuration","floatTransitionDelay","reflow","supportsTransitionEnd","Boolean","isElement","typeCheckConfig","componentName","configTypes","expectedTypes","valueType","findShadowRoot","attachShadow","ShadowRoot","jQueryDetection","emulateTransitionEnd","include","carouselHelper","load3dModel","loadVideo","focusHelper","getPidValue","$el","getQuantitySelector","getQuantitySelected","handleVariantResponse","$productContainer","isVaraint","isMaster","isChoiceOfBonusProducts","product","isEcommerceDisabled","variationAttributes","msgs","isQuickView","attrsWithSwatches","attrValue","$attrValue","$swatchButton","assistiveSelectedText","selectable","processSwatchValues","isOnline","isOrderable","color","substring","lastIndexOf","size","inStockMapping","processSizeValues","$attr","resetUrl","processNonSwatchValues","updateAttrs","resources","productType","hasSelectedColor","$sizeButtonsContainer","selectableSizesList","attributeSelect","readyToOrder","productName","frameColor","carouselHtml","methods","createProductCarousel","bind3dModel","$pricesContainer","isPriceHidden","price","promotionsHtml","availabilityValue","availabilityMessages","availability","messages","info_selectforstock","updatedAvailability","productSoldWithQuoteRequest","available","updateAvailability","productSale","decimalPrice","updatePercentage","showLensLabel","lensName","lensCategory","lensDescription","updateLensDescription","$recommendations","relatedRecommendations","initRecommendationsCarousel","updateRecommendations","sizeDescription","pdpContentAssets","$contentAssetSection","pdpContentAssetsSeo","$contentAssetSeoSection","manufacturerSKU","updateManufacturerSKU","productQuoteUrl","updateProductSoldWithQuoteRequest","displayShippingDateRange","shippingDates","shippingCost","attributeGroup","attribute","label","getAttributesHtml","$tabToSelect","lensTechnology","$currentSliderContainer","$newImageToSelect","$currentSlickSlider","initLensTechnologyCarousel","selectedValueUrl","$optionEl","updateOptions","quantities","optionsHtml","quantity","updateQuantities","customquantities","spinner","parseHtml","$html","footer","chooseBonusProducts","bonusUrl","bonusChoiceRuleBased","showProductsUrlRuleBased","showProductsUrlListBased","htmlString","maxBonusItems","uuid","pliUUID","addToCartUrl","pageSize","labels","selectprods","modal","parsedHtml","renderedTemplate","enterDialogMessage","closeButtonText","getOptions","$elOption","urlValue","selectedValueId","optionId","stringify","editBonusProducts","focusChooseBonusProductModal","onClosingChooseBonusProductModal","trapChooseBonusProductModalFocus","focusParams","containerSelector","firstElementSelector","lastElementSelector","setTabNextFocus","buttonAttribute","selectAttribute","addToCart","pid","pidsObj","setPids","qty","childProducts","form","newBonusDiscountLineItem","selectBonusProduct","$choiceOfBonusProduct","maxPids","submittedQty","totalQty","optionID","valueId","selectedBonusProductHtml","removeBonusProduct","$selected","enableBonusProductSelection","showMoreBonusProducts","addBonusProductsToCart","$readyToOrderBonusProducts","queryString","pidsObject","bonusProducts","qtyOption","productId","errorMessage","reload","isBrowser","navigator","timeoutDuration","longerTimeoutBrowsers","userAgent","debounce","Promise","scheduled","functionToCheck","getStyleComputedProperty","getParentNode","getScrollParent","_getStyleComputedProp","getReferenceNode","reference","referenceNode","isIE11","MSInputMethodContext","isIE10","isIE","getOffsetParent","noOffsetParent","nextElementSibling","getRoot","findCommonOffsetParent","element1","element2","Node","DOCUMENT_POSITION_FOLLOWING","range","createRange","setStart","setEnd","commonAncestorContainer","element1root","getScroll","side","upperSide","scrollingElement","includeScroll","modifier","bottom","getBordersSize","axis","sideA","sideB","getSize","computedStyle","getWindowSizes","classCallCheck","instance","Constructor","createClass","defineProperties","descriptor","protoProps","staticProps","_extends","getClientRect","offsets","sizes","clientWidth","clientHeight","horizScrollbar","vertScrollbar","getOffsetRectRelativeToArbitraryNode","fixedPosition","isHTML","childrenRect","parentRect","scrollParent","borderLeftWidth","marginTop","getViewportOffsetRectRelativeToArtbitraryNode","excludeScroll","relativeOffset","innerWidth","innerHeight","isFixed","getFixedPositionOffsetParent","parentElement","getBoundaries","popper","boundariesElement","boundaries","boundariesNode","_getWindowSizes","isPaddingNumber","getArea","_ref","computeAutoPlacement","placement","refRect","rects","sortedAreas","area","filteredAreas","_ref2","computedPlacement","variation","getReferenceOffsets","commonOffsetParent","getOuterSizes","marginBottom","marginRight","getOppositePlacement","getPopperOffsets","referenceOffsets","popperRect","popperOffsets","isHoriz","mainSide","secondarySide","measurement","secondaryMeasurement","runModifiers","modifiers","ends","findIndex","update","isDestroyed","arrowStyles","flipped","positionFixed","flip","originalPlacement","isCreated","onUpdate","onCreate","isModifierEnabled","modifierName","getSupportedPropertyName","prefixes","upperProp","toCheck","destroy","willChange","disableEventListeners","removeOnDestroy","getWindow","setupEventListeners","updateBound","passive","scrollElement","attachToScrollParents","scrollParents","isBody","eventsEnabled","enableEventListeners","scheduleUpdate","cancelAnimationFrame","setStyles","isFirefox","isModifierRequired","requestingName","requestedName","requesting","isRequired","_requesting","requested","placements","validPlacements","clockwise","counter","BEHAVIORS","parseOffset","basePlacement","useHeight","fragments","frag","divider","search","splitRegex","ops","op","mergeWithPrevious","reduce","str","toValue","index2","Defaults","shiftvariation","_data$offsets","isVertical","shiftOffsets","preventOverflow","transformProp","popperStyles","transform","escapeWithReference","secondary","keepTogether","opSide","arrow","_data$offsets$arrow","arrowElement","sideCapitalized","altSide","arrowElementSize","center","popperMarginSide","popperBorderSide","sideValue","placementOpposite","flipOrder","behavior","refOffsets","overlapsRef","overflowsLeft","overflowsRight","overflowsTop","overflowsBottom","overflowsBoundaries","flippedVariationByRef","flipVariations","flippedVariationByContent","flipVariationsByContent","flippedVariation","getOppositeVariation","inner","subtractLength","bound","computeStyle","legacyGpuAccelerationOption","gpuAcceleration","offsetParentRect","shouldRound","noRound","referenceWidth","popperWidth","isVariation","horizontalToInteger","verticalToInteger","getRoundedOffsets","devicePixelRatio","prefixedProperty","invertTop","invertLeft","applyStyle","onLoad","modifierOptions","Popper","_this","Utils","PopperUtils","defaultConfig","rows","dots","infinite","slidesToShow","slidesToScroll","responsive","breakpoint","recommendationsDefaultConfig","centerMode","autoplay","autoplaySpeed","arrows","upsellRecommendationsDefaultConfig","mobileFist","einsteinDefaultConfig","lensTechnologyConfig","initProductCarousel","$carousel","$carouselContainer","carouselSlickConfig","slick","currentSlide","nextSlide","$slickPaging","initUpsellRecommendationsCarousel","nbOfItems","selectedVariation","$currentLensTechnologyItem","currentSlideClasseName","startIndex","MutationObserver","mutations","mutation","addedNodes","carousels","observe","childList","subtree","$oldCarousel","hotspotsVisible","htsptbtns","toggleHotspots","backgroundImage","mvHoverOff","mvHoverOn","startWiggle","stopWiggle","hs_show","animationName","backgroundColor","hs_hide","$modelEle","$currentActiveContainer","modelViewer","bar","totalProgress","classList","script1","script2","script3","script4","script5","script6","script7","script8","isAR","emersyaURL","isShowcaseAR","productCode","presetCode","getEmersyaURL","$videoEle","videoUrl","firstFocusableEl","lastFocusableEl","nextToLastElementSelector","linkElements","g","updateDom","$results","$updates","handleRefinements","$currentHeader","$currentBody","$activeDiv","getContent","$element","$target","showMoreUrl","updateSticker","stickerContainer","stickerValue","updateProductTileLabel","tileContainer","labelValue","labelColor","closeRefinements","selectedUrl","showMore","updateSortOptions","applyFilter","attributeId","page","specialHandlers","parseResults","ajaxUrl","baseUrl","URL","history","pushState","updateUrl","showContentTab","toggleFilter","toggleMoreLess","$wrapper","$seoFooter","$footerSection","swatchHover","productTile","productSticker1","productSticker2","productSticker3","productTileLabel","tileHover","initTileHover","clientSideValidation","clearFieldError","validationField","valid","$invalidFeedback","checkValidity","validity","customError","supportedCards","cardType","cardsError","setCustomValidity","validationMessage","patternMismatch","rangeOverflow","rangeUnderflow","tooLong","tooShort","valueMissing","focusout","buttonClick","functions","clearForm","validationAddressFields","typedKey","freeGlobal","freeSelf","moment","symbolMap","1","2","3","4","5","6","7","8","9","numberMap","pluralForm","plurals","pluralize","f","weekdaysParseExact","suffixes","70","80","20","50","100","10","30","60","90","relativeTimeWithPlural","forms","standalone","lastDigit","last2Digits","monthsParseExact","relativeTimeWithMutation","mutationTable","softMutation","minWeekdaysParse","fullWeekdaysParse","shortWeekdaysParse","monthsStrictRegex","monthsShortStrictRegex","longMonthsParse","shortMonthsParse","lastNumber","translate","ll","lll","llll","plural","processRelativeTime","monthsNominativeEl","monthsGenitiveEl","momentToFormat","_monthsGenitiveEl","_monthsNominativeEl","calendarEl","_calendarEl","monthsShortDot","numbersPast","numbersFuture","verbalNumber","monthsShortWithDots","monthsShortWithoutDots","weekEndings","eraYearOrdinalRegex","$0","$1","$2","40","isUpper","eifelerRegelAppliesToNumber","translateSingular","relativeTimeWithSingular","translator","words","correctGrammaticalCase","wordKey","relativeTimeMr","monthsNominative","monthsSubjective","word","12","13","numbersNouns","numberNoun","hundred","ten","numberAsNoun","processHoursFunction","nominative","accusative","genitive","processInclude","previousSessionID","localStorage","getItem","currentSessionID","cookieName","cookieArray","decodeURIComponent","cookie","cookieItem","getCookie","setItem","removeItem","$consentTracker","toggleMobileNavigation","calculateMainSectionPadding","preheaderHeight","storeSwitcherHeight","outerHeight","nonStickyHeaderHeight","stickyHeaderHeight","permanentBannerHeight","resize","headerBannerStatus","sessionStorage","siteHeaderHeight","$body","storeSwitcherDropdown","isStoreSwitcherOkBtnClicked","countrySelectorBtn","isDropDownItemClicked","selectedCountry","displaySelectedCountry","selectedCountryAnchor","toggleScrollToTop","validateForm","backToTop","newsletterfooter","$button","emailId","grecaptcha","execute","app","preferences","reCaptchaSiteKey","action","reCaptchaToken","dataLayer","scrollAnimate","displayMessage","cart","updateMiniCart","addedToCart","displayMessageAndRemoveFromCart","$targetElement","itemToMove","actionUrl","productID","optionVal","Number","quantityTotal","minicartCountOfItems","title","shouldOpen","$container","$miniCartErrorContainer","appendToUrl","newUrl","validateBasket","errorHtml","emptyCartMsg","numberOfItems","numItems","updateCartTotals","totals","totalShippingCost","totalTax","grandTotal","subTotal","orderLevelDiscountTotal","formatted","shippingLevelDiscountTotal","items","UUID","renderedPromotions","priceTotal","renderedPrice","createErrorNotification","updateApproachingDiscounts","approachingDiscounts","discountMsg","lineItem","inStockLabel","inStockDate","fillModalElement","editProductUrl","removeProduct","basket","toBeDeletedUUIDs","hasBonusProduct","discountsHtml","responseJSON","redirectUrl","preSelectQty","currentBonusProducts","updatedBonusUUIDs","isBonusProductLineItem","bonusProductHtml","images","small","alt","displayValue","generateBonusProductHtml","$bonusProduct","includes","updateBonusProducts","change","urlParams","methodID","$form","couponCode","dialog","allAvailable","every","allReady","selectedQuantity","selectedOptionValueId","updateProductUrl","cartModel","colorAttr","sizeAttr","imageSelector","optSelector","displayName","qtySelector","newProductId","priceSelector","sales","listPriceSelector","updateProductDetails","uuidToBeDeleted","endpoint","getSuggestionsWrapper","toggleSuggestionsIcon","mobileSearchIcon","processResponse","$suggestionsWrapper","getSuggestions","debounceSuggestions","toNumber","nativeMax","nativeMin","lastArgs","lastThis","maxWait","timerId","lastCallTime","lastInvokeTime","leading","maxing","trailing","invokeFunc","thisArg","leadingEdge","timerExpired","shouldInvoke","timeSinceLastCall","trailingEdge","timeWaiting","remainingWait","debounced","isInvoking","cancel","flush","baseTrim","isSymbol","reIsBadHex","reIsBinary","reIsOctal","freeParseInt","isBinary","trimmedEndIndex","reTrimStart","reWhitespace","baseGetTag","isObjectLike","getRawTag","objectToString","symToStringTag","objectProto","nativeObjectToString","isOwn","unmasked","jstz","tz","determine","countryCode","parseDateFormat","dateValue","localTimestamp","consts","DAY","HOUR","MINUTE","SECOND","BASELINE_YEAR","MAX_SCORE","AMBIGUITIES","get_date_offset","lookup_key","january_offset","june_offset","dst_dates","yearstart","yearend","dst_start","dst_end","dateToCheck","dateToCheckOffset","find_dst_fold","a_date","date_start","date_end","dst_change","get_by_dst","preliminary_timezone","rules","rule_list","olson","dst_rules","year_rules","get_rules","check_has_dst","score_sample","sample","windows7_adaptations","scoreboard","dst_zones","zones","dst_zones_length","ambiguities","best_dst_match","preliminary_tz","timezone","Intl","DateTimeFormat","resolvedOptions","timeZone","get_from_internationalization_api","timezones","stdTimezoneOffset","timezoneOffset","__webpack_amd_options__","default","cachedGuess","links","countries","guesses","logError","momentVersion","major","minor","charCodeToInt","unpackBase60","whole","fractional","multiplier","arrayToInt","mapIndices","indices","unpack","untils","Infinity","intToUntil","abbrs","population","Zone","packedString","_set","Country","country_name","zone_names","OffsetAt","at","timeString","toTimeString","ZoneScore","offsetScore","abbrScore","findChange","low","mid","sortZoneScores","localeCompare","addToGuesses","guessesForUserOffsets","guessesOffset","offsetsLength","filteredGuesses","rebuildGuess","intlName","normalizeName","zoneScore","startYear","userOffsets","zoneScores","getZone","scoreOffsetAt","addZone","packed","normalized","caller","link","addLink","normal0","normal1","needsOffset","isUnixTimestamp","unpacked","_index","timestamp","zone_name","country_code","offsetNext","offsetPrev","moveAmbiguousForward","moveInvalidForward","offsetAt","dataVersion","_zones","_links","_names","_countries","country_zones","addCountries","zoneExists","didShowError","guess","ignoreCache","zonesForCountry","country","with_offset","abbrWrap","_z","resetZoneWrap","defaultZone","z","setDefault","webpackPolyfill","paths","webpackContext","req","webpackContextResolve","tooltip","localeCode","localeCurrencyCode","CurrencyCode","processRecommendations","recommender","loadurl","dataset","recommendedProducts","recs","recommendations","swatches","ratings","showQuickView","searchParams","fetchResponse","fetch","carousel","dw","ac","capture","EV_PRD_RECOMMENDATION","CQuotient","EinsteinUtils","userId","getCQUserId","cookieId","getCQCookieId","ccver","anchors","getRecs","clientId","widgets","recommenderName","parameters","$cache","pdWidgetWrapper","pdWidget","apiKey","$resultWrapper","$launchPDBtn","closeMsrt","Msrt","createWidget","onGetResultPd","pdValue","pd","onTooManyErrors","log","onClose","launchMsrt","$videoContainer","desktopVideoURL","mobileVideoURL","videoURL","$vimeoDiv","Vimeo","Player","currentMode","newMode","quickViewFullDetailMsg","productUrl","showQuickview","focusQuickview","trapQuickviewFocus","showSpinner","hideDialog","beforeUpdateAttribute","updateAttribute","selectedProductUrl","updateAddToCart","lazySizes","lazysizes","lazySizesCfg","lazySizesDefaults","lazyClass","loadedClass","loadingClass","preloadClass","errorClass","autosizesClass","fastLoadedClass","iframeLoadMode","srcAttr","srcsetAttr","sizesAttr","minSize","customMedia","expFactor","hFac","loadMode","loadHidden","ricTimeout","throttleDelay","lazySizesConfig","lazysizesConfig","cfg","noSupport","supportPicture","HTMLPictureElement","requestIdleCallback","regPicture","loadEvents","regClassCache","ele","cls","reg","addRemoveLoadEvents","dom","triggerEvent","noBubbles","noCancelable","createEvent","initEvent","dispatchEvent","updatePolyfill","full","polyfill","picturefill","pf","reevaluate","getCSS","getWidth","_lazysizesWidth","rAF","firstFns","secondFns","runFns","running","waiting","rafBatch","_lsFlush","rAFIt","later","loader","regImg","regIframe","supportScroll","currentExpand","isLoading","lowRuns","resetPreloading","isVisible","isBodyHidden","isNestedVisible","elemExpand","outerRect","eLtop","eLbottom","eLleft","eLright","checkElements","eLlen","autoLoadElem","loadedSomething","elemNegativeExpand","elemExpandVal","beforeExpandVal","defaultExpand","preloadExpand","lazyloadElems","_lazyRace","prematureUnveil","unveilElement","_defEx","eLvW","elvH","isCompleted","preloadElems","preloadAfterLoad","throttledCheckElements","lastTime","gDelay","rICTimeout","idleCallback","isPriority","throttle","switchLoadingClass","_lazyCache","rafSwitchLoadingClass","rafedSwitchLoadingClass","handleSources","sourceSrcset","lazyUnveil","isAuto","isImg","srcset","isPicture","firesLoad","resetPreloadingTimer","contentWindow","changeIframeSrc","isLoaded","naturalWidth","loading","autoSizer","updateElem","afterScroll","altLoadmodeScrollListner","started","persisted","loadingElements","img","setInterval","checkElems","unveil","_aLSL","sizeElement","sources","getSizeElement","debouncedUpdateElementsSizes","autosizesElems","uP","aC","rC","hC","gW","bg","productImpressions","scrollTimeout","trackImpressions","impressions","dataLayerInfo","elementTop","elementBottom","viewportTop","viewportBottom","dataLayerInfoObj","GA4Enabled","ecommerce","GA3Enabled","onScrollFinished","productInfoCtr","productInfo","productInfoObj","item_id","item_name","category1","item_category","category2","item_category2","category3","item_category3","products","level","elementName","merchantName","bannerName","pageType","filterName","filterValue","optionSelected","sortLabel","tileName","addSpinner","$veil","tagName","removeSpinner","NAME","DATA_KEY","EVENT_KEY","JQUERY_NO_CONFLICT","EVENT_SHOW","EVENT_SHOWN","EVENT_HIDE","EVENT_HIDDEN","EVENT_CLICK_DATA_API","Default","DefaultType","Collapse","_isTransitioning","_element","_getConfig","_triggerArray","toggleList","filterElement","foundElem","_selector","_parent","_getParent","_addAriaAndCollapsedClass","actives","activesData","startEvent","_jQueryInterface","_getDimension","setTransitioning","capitalizedDimension","scrollSize","triggerArrayLength","isTransitioning","_getTargetFromElement","triggerArray","isOpen","$trigger","REGEXP_KEYDOWN","EVENT_CLICK","EVENT_KEYDOWN_DATA_API","EVENT_KEYUP_DATA_API","boundary","popperConfig","Dropdown","_popper","_menu","_getMenuElement","_inNavbar","_detectNavbar","_addEventListeners","toggles","_getParentFromElement","clickEvent","dropdownMenu","hideEvent","isActive","_clearMenus","usePopper","showEvent","referenceElement","_getPopperConfig","$parentDropdown","_getPlacement","_getOffset","_dataApiKeydownHandler","EVENT_HIDE_PREVENTED","EVENT_FOCUSIN","EVENT_RESIZE","EVENT_CLICK_DISMISS","EVENT_KEYDOWN_DISMISS","EVENT_MOUSEUP_DISMISS","EVENT_MOUSEDOWN_DISMISS","backdrop","keyboard","Modal","_dialog","_backdrop","_isShown","_isBodyOverflowing","_ignoreBackdropClick","_scrollbarWidth","_checkScrollbar","_setScrollbar","_adjustDialog","_setEscapeEvent","_setResizeEvent","_showBackdrop","_showElement","transition","_hideModal","htmlElement","hideEventPrevented","isModalOverflowing","scrollHeight","modalTransitionDuration","modalBody","ELEMENT_NODE","_enforceFocus","shownEvent","transitionComplete","_triggerBackdropTransition","handleUpdate","_resetAdjustments","_resetScrollbar","backdropTransitionDuration","callbackRemove","_removeBackdrop","paddingLeft","paddingRight","_getScrollbarWidth","fixedContent","stickyContent","actualPadding","calculatedPadding","actualMargin","calculatedMargin","scrollDiv","scrollbarWidth","Tab","$this","hasAttribute","previous","listElement","itemSelector","_activate","hiddenEvent","_transitionComplete","dropdownChild","dropdownElement","dropdownToggleList","Slick","instanceUid","dataSettings","accessibility","adaptiveHeight","appendArrows","appendDots","asNavFor","prevArrow","nextArrow","centerPadding","cssEase","customPaging","slider","dotsClass","draggable","edgeFriction","fade","focusOnSelect","focusOnChange","initialSlide","lazyLoad","mobileFirst","pauseOnHover","pauseOnFocus","pauseOnDotsHover","respondTo","rtl","slide","slidesPerRow","swipe","swipeToSlide","touchMove","touchThreshold","useCSS","useTransform","variableWidth","vertical","verticalSwiping","waitForAnimate","initials","animating","dragging","autoPlayTimer","currentDirection","currentLeft","$dots","listWidth","listHeight","loadIndex","$nextArrow","$prevArrow","scrolling","slideCount","slideWidth","$slideTrack","$slides","sliding","slideOffset","swipeLeft","swiping","$list","touchObject","transformsEnabled","unslicked","activeBreakpoint","animType","animProp","breakpoints","breakpointSettings","cssTransitions","focussed","interrupted","paused","positionProp","rowCount","shouldClick","$slider","$slidesCache","transformType","transitionType","visibilityChange","windowWidth","windowTimer","mozHidden","webkitHidden","autoPlay","autoPlayClear","autoPlayIterator","changeSlide","clickHandler","selectHandler","setPosition","swipeHandler","dragHandler","keyHandler","htmlExpr","registerBreakpoints","activateADA","addSlide","slickAdd","markup","addBefore","unload","reinit","animateHeight","targetHeight","animateSlide","targetLeft","animProps","animStart","applyTransition","disableTransition","getNavTarget","slideHandler","clearInterval","slideTo","buildArrows","buildDots","dot","getDotCount","buildOut","setupInfinite","updateDots","setSlideClasses","buildRows","newSlides","numOfSlides","originalSlides","slidesPerSection","row","checkResponsive","forceUpdate","targetBreakpoint","respondToWidth","triggerBreakpoint","sliderWidth","unslick","refresh","dontAnimate","indexOffset","checkNavigable","navigables","prevNavigable","getNavigableIndexes","cleanUpEvents","interrupt","cleanUpSlideEvents","orientationChange","cleanUpRows","fadeSlide","slideIndex","fadeSlideOut","filterSlides","slickFilter","focusHandler","$sf","getCurrent","slickCurrentSlide","breakPoint","pagerQty","getLeft","verticalHeight","targetSlide","coef","verticalOffset","offsetLeft","outerWidth","getOption","slickGetOption","indexes","getSlick","getSlideCount","swipedSlide","centerOffset","goTo","slickGoTo","creation","setProps","startLoad","loadSlider","initializeEvents","updateArrows","initADA","numDotGroups","tabControlIndexes","slideControlIndex","ariaButtonControl","mappedSlideIndex","initArrowEvents","initDotEvents","initSlideEvents","initUI","loadRange","rangeStart","rangeEnd","loadImages","imagesScope","imageSource","imageSrcSet","imageSizes","imageToLoad","prevSlide","progressiveLazyLoad","slickNext","pause","slickPause","play","slickPlay","postSlide","slickPrev","tryCount","$imgsToLoad","initializing","lastVisibleIndex","currentBreakpoint","responsiveSettings","windowDelay","removeSlide","slickRemove","removeBefore","removeAll","setCSS","positionProps","setDimensions","setFade","setHeight","setOption","slickSetOption","bodyStyle","WebkitTransition","MozTransition","msTransition","OTransform","perspectiveProperty","webkitPerspective","MozTransform","MozPerspective","webkitTransform","msTransform","allSlides","remainder","evenCoef","infiniteCount","targetElement","sync","animSlide","oldSlide","slideLeft","navTarget","swipeDirection","xDist","yDist","swipeAngle","startX","curX","startY","curY","atan2","swipeEnd","swipeLength","edgeHit","minSwipe","fingerCount","swipeStart","swipeMove","positionOffset","verticalSwipeLength","sqrt","unfilterSlides","slickUnfilter","fromBreakpoint","uriAttrs","DefaultWhitelist","br","em","hr","h1","h2","h3","h4","h5","h6","li","ol","pre","span","sub","sup","strong","ul","SAFE_URL_PATTERN","DATA_URL_PATTERN","sanitizeHtml","unsafeHtml","whiteList","sanitizeFn","createdDocument","whitelistKeys","elName","attributeList","whitelistedAttributes","allowedAttributeList","attrName","regExp","attrRegex","allowedAttribute","BSCLS_PREFIX_REGEX","DISALLOWED_ATTRIBUTES","AttachmentMap","AUTO","TOP","RIGHT","BOTTOM","LEFT","template","fallbackPlacement","customClass","sanitize","HIDE","HIDDEN","SHOW","SHOWN","INSERTED","CLICK","FOCUSIN","FOCUSOUT","MOUSEENTER","MOUSELEAVE","Tooltip","_isEnabled","_timeout","_hoverState","_activeTrigger","tip","_setListeners","dataKey","_getDelegateConfig","_isWithActiveTrigger","_enter","_leave","getTipElement","_hideModalHandler","isWithContent","shadowRoot","isInTheDom","tipId","setContent","attachment","_getAttachment","addAttachmentClass","_getContainer","_fixTransition","prevHoverState","_cleanTipClass","getTitle","setElementContent","_handlePopperPlacementChange","eventIn","eventOut","_fixTitle","titleType","dataAttributes","$tip","tabClass","popperData","initConfigAnimation"],"mappings":"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BACT,UAAW,kBACX,QAAS,oBACT,UAAW,eACX,QAAS,sBAIbxD,EAAKmC,MAAMC,UAAY,CACnB,MAAS,CACL,KACA,KACA,KACA,KACA,KACA,KACA,MAEJ,MAAS,CACL,CACI,KAAQ,eACR,MAAS,CACL,CACI,EAAK,WACL,EAAK,YAET,CACI,EAAK,UACL,EAAK,WAET,CACI,EAAK,WACL,EAAK,aAET,GACA,GACA,EACA,CACI,EAAK,WACL,EAAK,aAIjB,CACI,KAAQ,oBACR,MAAS,CACL,CACI,EAAK,WACL,EAAK,YAET,CACI,EAAK,WACL,EAAK,YAET,CACI,EAAK,UACL,EAAK,YAET,CACI,EAAK,WACL,EAAK,YAET,CACI,EAAK,WACL,EAAK,WAET,CACI,EAAK,WACL,EAAK,SAET,CACI,EAAK,WACL,EAAK,cAIjB,CACI,KAAQ,mBACR,MAAS,CACL,CACI,EAAK,WACL,EAAK,YAET,CACI,EAAK,WACL,EAAK,YAET,CACI,EAAK,WACL,EAAK,YAET,CACI,EAAK,WACL,EAAK,WAET,CACI,EAAK,UACL,EAAK,YAET,CACI,EAAK,UACL,EAAK,WAET,CACI,EAAK,WACL,EAAK,cAIjB,CACI,KAAQ,uBACR,MAAS,CACL,CACI,EAAK,WACL,EAAK,YAET,CACI,EAAK,WACL,EAAK,YAET,CACI,EAAK,WACL,EAAK,WAET,CACI,EAAK,WACL,EAAK,YAET,CACI,EAAK,WACL,EAAK,WAET,CACI,EAAK,SACL,EAAK,YAET,CACI,EAAK,WACL,EAAK,cAIjB,CACI,KAAQ,oBACR,MAAS,CACL,CACI,EAAK,YACL,EAAK,aAET,CACI,EAAK,YACL,EAAK,aAET,CACI,EAAK,YACL,EAAK,aAET,CACI,EAAK,WACL,EAAK,aAET,CACI,EAAK,WACL,EAAK,YAET,CACI,EAAK,WACL,EAAK,YAET,CACI,EAAK,WACL,EAAK,cAIjB,CACI,KAAQ,iBACR,MAAS,CACL,CACI,EAAK,WACL,EAAK,YAET,CACI,EAAK,WACL,EAAK,YAET,CACI,EAAK,WACL,EAAK,YAET,CACI,EAAK,WACL,EAAK,YAET,CACI,EAAK,WACL,EAAK,YAET,CACI,EAAK,WACL,EAAK,YAET,CACI,EAAK,WACL,EAAK,cAIjB,CACI,KAAQ,mBACR,MAAS,CACL,CACI,EAAK,UACL,EAAK,YAET,CACI,EAAK,WACL,EAAK,WAET,CACI,EAAK,UACL,EAAK,YAET,CACI,EAAK,WACL,EAAK,YAET,CACI,EAAK,WACL,EAAK,YAET,CACI,EAAK,WACL,EAAK,YAET,CACI,EAAK,WACL,EAAK,cAIjB,CACI,KAAQ,sBACR,MAAS,CACL,CACI,EAAK,WACL,EAAK,YAET,CACI,EAAK,UACL,EAAK,YAET,CACI,EAAK,WACL,EAAK,WAET,CACI,EAAK,UACL,EAAK,YAET,CACI,EAAK,WACL,EAAK,YAET,CACI,EAAK,WACL,EAAK,YAET,CACI,EAAK,WACL,EAAK,cAIjB,CACI,KAAQ,mBACR,MAAS,CACL,CACI,EAAK,WACL,EAAK,YAET,CACI,EAAK,UACL,EAAK,YAET,CACI,EAAK,WACL,EAAK,YAET,CACI,EAAK,UACL,EAAK,YAET,CACI,EAAK,WACL,EAAK,WAET,CACI,EAAK,WACL,EAAK,YAET,CACI,EAAK,WACL,EAAK,cAIjB,CACI,KAAQ,uBACR,MAAS,CACL,CACI,EAAK,WACL,EAAK,WAET,CACI,EAAK,WACL,EAAK,YAET,CACI,EAAK,WACL,EAAK,YAET,CACI,EAAK,WACL,EAAK,YAET,CACI,EAAK,WACL,EAAK,YAET,CACI,EAAK,WACL,EAAK,YAET,CACI,EAAK,UACL,EAAK,cAIjB,CACI,KAAQ,mBACR,MAAS,CACL,CACI,EAAK,UACL,EAAK,WAET,CACI,EAAK,UACL,EAAK,YAET,CACI,EAAK,SACL,EAAK,YAET,CACI,EAAK,WACL,EAAK,YAET,CACI,EAAK,WACL,EAAK,YAET,CACI,EAAK,UACL,EAAK,YAET,CACI,EAAK,WACL,EAAK,cAIjB,CACI,KAAQ,oBACR,MAAS,CACL,CACI,EAAK,WACL,EAAK,YAET,CACI,EAAK,WACL,EAAK,YAET,CACI,EAAK,WACL,EAAK,YAET,CACI,EAAK,WACL,EAAK,WAET,CACI,EAAK,WACL,EAAK,YAET,CACI,EAAK,WACL,EAAK,WAET,CACI,EAAK,UACL,EAAK,cAIjB,CACI,KAAQ,aACR,MAAS,CACL,CACI,EAAK,UACL,EAAK,YAET,CACI,EAAK,WACL,EAAK,YAET,CACI,EAAK,WACL,EAAK,YAET,CACI,EAAK,WACL,EAAK,aAET,GACA,EACA,CACI,EAAK,WACL,EAAK,cAIjB,CACI,KAAQ,gBACR,MAAS,CACL,CACI,EAAK,WACL,EAAK,UAET,CACI,EAAK,SACL,EAAK,YAET,CACI,EAAK,WACL,EAAK,YAET,CACI,EAAK,WACL,EAAK,YAET,CACI,EAAK,WACL,EAAK,YAET,CACI,EAAK,WACL,EAAK,WAET,CACI,EAAK,WACL,EAAK,cAIjB,CACI,KAAQ,aACR,MAAS,EACL,GACA,GACA,GACA,GACA,GACA,GACA,IAGR,CACI,KAAQ,YACR,MAAS,CACL,CACI,EAAK,WACL,EAAK,YAET,CACI,EAAK,WACL,EAAK,YAET,CACI,EAAK,UACL,EAAK,aAET,CACI,EAAK,UACL,EAAK,aAET,CACI,EAAK,WACL,EAAK,YAET,CACI,EAAK,WACL,EAAK,WAET,CACI,EAAK,UACL,EAAK,cAIjB,CACI,KAAQ,eACR,MAAS,CACL,CACI,EAAK,WACL,EAAK,YAET,CACI,EAAK,WACL,EAAK,YAET,CACI,EAAK,WACL,EAAK,aAET,GACA,GACA,GACA,IAGR,CACI,KAAQ,iBACR,MAAS,CACL,CACI,EAAK,WACL,EAAK,YAET,CACI,EAAK,UACL,EAAK,WAET,CACI,EAAK,UACL,EAAK,YAET,CACI,EAAK,SACL,EAAK,WAET,CACI,EAAK,WACL,EAAK,YAET,CACI,EAAK,WACL,EAAK,YAET,CACI,EAAK,UACL,EAAK,cAIjB,CACI,KAAQ,iBACR,MAAS,CACL,CACI,EAAK,WACL,EAAK,YAET,CACI,EAAK,WACL,EAAK,YAET,CACI,EAAK,WACL,EAAK,aAET,GACA,GACA,GACA,IAGR,CACI,KAAQ,mBACR,MAAS,CACL,CACI,EAAK,WACL,EAAK,YAET,CACI,EAAK,WACL,EAAK,YAET,CACI,EAAK,WACL,EAAK,aAET,GACA,GACA,GACA,IAGR,CACI,KAAQ,YACR,MAAS,CACL,CACI,EAAK,WACL,EAAK,YAET,CACI,EAAK,WACL,EAAK,YAET,CACI,EAAK,WACL,EAAK,WAET,GACA,GACA,GACA,IAGR,CACI,KAAQ,mBACR,MAAS,CACL,CACI,EAAK,WACL,EAAK,YAET,CACI,EAAK,QACL,EAAK,WAET,CACI,EAAK,WACL,EAAK,aAET,GACA,GACA,GACA,IAGR,CACI,KAAQ,eACR,MAAS,CACL,CACI,EAAK,UACL,EAAK,UAET,CACI,EAAK,WACL,EAAK,YAET,CACI,EAAK,UACL,EAAK,aAET,GACA,GACA,GACA,IAGR,CACI,KAAQ,qBACR,MAAS,CACL,CACI,EAAK,WACL,EAAK,YAET,CACI,EAAK,UACL,EAAK,WAET,CACI,EAAK,WACL,EAAK,aAET,GACA,GACA,GACA,IAGR,CACI,KAAQ,eACR,MAAS,CACL,CACI,EAAK,UACL,EAAK,WAET,CACI,EAAK,WACL,EAAK,YAET,CACI,EAAK,UACL,EAAK,YAET,CACI,EAAK,WACL,EAAK,aAET,GACA,GACA,IAGR,CACI,KAAQ,sBACR,MAAS,CACL,CACI,EAAK,WACL,EAAK,YAET,CACI,EAAK,WACL,EAAK,YAET,CACI,EAAK,WACL,EAAK,YAET,CACI,EAAK,WACL,EAAK,WAET,CACI,EAAK,UACL,EAAK,YAET,CACI,EAAK,WACL,EAAK,WAET,CACI,EAAK,SACL,EAAK,cAIjB,CACI,KAAQ,kBACR,MAAS,CACL,CACI,EAAK,WACL,EAAK,aAET,GACA,GACA,GACA,GACA,GACA,IAGR,CACI,KAAQ,kBACR,MAAS,CACL,CACI,EAAK,WACL,EAAK,YAET,CACI,EAAK,WACL,EAAK,YAET,CACI,EAAK,WACL,EAAK,WAET,CACI,EAAK,WACL,EAAK,YAET,CACI,EAAK,UACL,EAAK,YAET,CACI,EAAK,WACL,EAAK,YAET,CACI,EAAK,WACL,EAAK,cAIjB,CACI,KAAQ,eAC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","file":"default/js/main.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 = \"\";\n\n\n \t// Load entry module and return exports\n \treturn __webpack_require__(__webpack_require__.s = 194);\n","/*!\n * jQuery JavaScript Library v3.7.1\n * https://jquery.com/\n *\n * Copyright OpenJS Foundation and other contributors\n * Released under the MIT license\n * https://jquery.org/license\n *\n * Date: 2023-08-28T13:37Z\n */\n( function( global, factory ) {\n\n\t\"use strict\";\n\n\tif ( typeof module === \"object\" && typeof module.exports === \"object\" ) {\n\n\t\t// For CommonJS and CommonJS-like environments where a proper `window`\n\t\t// is present, execute the factory and get jQuery.\n\t\t// For environments that do not have a `window` with a `document`\n\t\t// (such as Node.js), expose a factory as module.exports.\n\t\t// This accentuates the need for the creation of a real `window`.\n\t\t// e.g. var jQuery = require(\"jquery\")(window);\n\t\t// See ticket trac-14549 for more info.\n\t\tmodule.exports = global.document ?\n\t\t\tfactory( global, true ) :\n\t\t\tfunction( w ) {\n\t\t\t\tif ( !w.document ) {\n\t\t\t\t\tthrow new Error( \"jQuery requires a window with a document\" );\n\t\t\t\t}\n\t\t\t\treturn factory( w );\n\t\t\t};\n\t} else {\n\t\tfactory( global );\n\t}\n\n// Pass this if window is not defined yet\n} )( typeof window !== \"undefined\" ? window : this, function( window, noGlobal ) {\n\n// Edge <= 12 - 13+, Firefox <=18 - 45+, IE 10 - 11, Safari 5.1 - 9+, iOS 6 - 9.1\n// throw exceptions when non-strict code (e.g., ASP.NET 4.5) accesses strict mode\n// arguments.callee.caller (trac-13335). But as of jQuery 3.0 (2016), strict mode should be common\n// enough that all such attempts are guarded in a try block.\n\"use strict\";\n\nvar arr = [];\n\nvar getProto = Object.getPrototypeOf;\n\nvar slice = arr.slice;\n\nvar flat = arr.flat ? function( array ) {\n\treturn arr.flat.call( array );\n} : function( array ) {\n\treturn arr.concat.apply( [], array );\n};\n\n\nvar push = arr.push;\n\nvar indexOf = arr.indexOf;\n\nvar class2type = {};\n\nvar toString = class2type.toString;\n\nvar hasOwn = class2type.hasOwnProperty;\n\nvar fnToString = hasOwn.toString;\n\nvar ObjectFunctionString = fnToString.call( Object );\n\nvar support = {};\n\nvar isFunction = function isFunction( obj ) {\n\n\t\t// Support: Chrome <=57, Firefox <=52\n\t\t// In some browsers, typeof returns \"function\" for HTML <object> elements\n\t\t// (i.e., `typeof document.createElement( \"object\" ) === \"function\"`).\n\t\t// We don't want to classify *any* DOM node as a function.\n\t\t// Support: QtWeb <=3.8.5, WebKit <=534.34, wkhtmltopdf tool <=0.12.5\n\t\t// Plus for old WebKit, typeof returns \"function\" for HTML collections\n\t\t// (e.g., `typeof document.getElementsByTagName(\"div\") === \"function\"`). (gh-4756)\n\t\treturn typeof obj === \"function\" && typeof obj.nodeType !== \"number\" &&\n\t\t\ttypeof obj.item !== \"function\";\n\t};\n\n\nvar isWindow = function isWindow( obj ) {\n\t\treturn obj != null && obj === obj.window;\n\t};\n\n\nvar document = window.document;\n\n\n\n\tvar preservedScriptAttributes = {\n\t\ttype: true,\n\t\tsrc: true,\n\t\tnonce: true,\n\t\tnoModule: true\n\t};\n\n\tfunction DOMEval( code, node, doc ) {\n\t\tdoc = doc || document;\n\n\t\tvar i, val,\n\t\t\tscript = doc.createElement( \"script\" );\n\n\t\tscript.text = code;\n\t\tif ( node ) {\n\t\t\tfor ( i in preservedScriptAttributes ) {\n\n\t\t\t\t// Support: Firefox 64+, Edge 18+\n\t\t\t\t// Some browsers don't support the \"nonce\" property on scripts.\n\t\t\t\t// On the other hand, just using `getAttribute` is not enough as\n\t\t\t\t// the `nonce` attribute is reset to an empty string whenever it\n\t\t\t\t// becomes browsing-context connected.\n\t\t\t\t// See https://github.com/whatwg/html/issues/2369\n\t\t\t\t// See https://html.spec.whatwg.org/#nonce-attributes\n\t\t\t\t// The `node.getAttribute` check was added for the sake of\n\t\t\t\t// `jQuery.globalEval` so that it can fake a nonce-containing node\n\t\t\t\t// via an object.\n\t\t\t\tval = node[ i ] || node.getAttribute && node.getAttribute( i );\n\t\t\t\tif ( val ) {\n\t\t\t\t\tscript.setAttribute( i, val );\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\t\tdoc.head.appendChild( script ).parentNode.removeChild( script );\n\t}\n\n\nfunction toType( obj ) {\n\tif ( obj == null ) {\n\t\treturn obj + \"\";\n\t}\n\n\t// Support: Android <=2.3 only (functionish RegExp)\n\treturn typeof obj === \"object\" || typeof obj === \"function\" ?\n\t\tclass2type[ toString.call( obj ) ] || \"object\" :\n\t\ttypeof obj;\n}\n/* global Symbol */\n// Defining this global in .eslintrc.json would create a danger of using the global\n// unguarded in another place, it seems safer to define global only for this module\n\n\n\nvar version = \"3.7.1\",\n\n\trhtmlSuffix = /HTML$/i,\n\n\t// Define a local copy of jQuery\n\tjQuery = function( selector, context ) {\n\n\t\t// The jQuery object is actually just the init constructor 'enhanced'\n\t\t// Need init if jQuery is called (just allow error to be thrown if not included)\n\t\treturn new jQuery.fn.init( selector, context );\n\t};\n\njQuery.fn = jQuery.prototype = {\n\n\t// The current version of jQuery being used\n\tjquery: version,\n\n\tconstructor: jQuery,\n\n\t// The default length of a jQuery object is 0\n\tlength: 0,\n\n\ttoArray: function() {\n\t\treturn slice.call( this );\n\t},\n\n\t// Get the Nth element in the matched element set OR\n\t// Get the whole matched element set as a clean array\n\tget: function( num ) {\n\n\t\t// Return all the elements in a clean array\n\t\tif ( num == null ) {\n\t\t\treturn slice.call( this );\n\t\t}\n\n\t\t// Return just the one element from the set\n\t\treturn num < 0 ? this[ num + this.length ] : this[ num ];\n\t},\n\n\t// Take an array of elements and push it onto the stack\n\t// (returning the new matched element set)\n\tpushStack: function( elems ) {\n\n\t\t// Build a new jQuery matched element set\n\t\tvar ret = jQuery.merge( this.constructor(), elems );\n\n\t\t// Add the old object onto the stack (as a reference)\n\t\tret.prevObject = this;\n\n\t\t// Return the newly-formed element set\n\t\treturn ret;\n\t},\n\n\t// Execute a callback for every element in the matched set.\n\teach: function( callback ) {\n\t\treturn jQuery.each( this, callback );\n\t},\n\n\tmap: function( callback ) {\n\t\treturn this.pushStack( jQuery.map( this, function( elem, i ) {\n\t\t\treturn callback.call( elem, i, elem );\n\t\t} ) );\n\t},\n\n\tslice: function() {\n\t\treturn this.pushStack( slice.apply( this, arguments ) );\n\t},\n\n\tfirst: function() {\n\t\treturn this.eq( 0 );\n\t},\n\n\tlast: function() {\n\t\treturn this.eq( -1 );\n\t},\n\n\teven: function() {\n\t\treturn this.pushStack( jQuery.grep( this, function( _elem, i ) {\n\t\t\treturn ( i + 1 ) % 2;\n\t\t} ) );\n\t},\n\n\todd: function() {\n\t\treturn this.pushStack( jQuery.grep( this, function( _elem, i ) {\n\t\t\treturn i % 2;\n\t\t} ) );\n\t},\n\n\teq: function( i ) {\n\t\tvar len = this.length,\n\t\t\tj = +i + ( i < 0 ? len : 0 );\n\t\treturn this.pushStack( j >= 0 && j < len ? [ this[ j ] ] : [] );\n\t},\n\n\tend: function() {\n\t\treturn this.prevObject || this.constructor();\n\t},\n\n\t// For internal use only.\n\t// Behaves like an Array's method, not like a jQuery method.\n\tpush: push,\n\tsort: arr.sort,\n\tsplice: arr.splice\n};\n\njQuery.extend = jQuery.fn.extend = function() {\n\tvar options, name, src, copy, copyIsArray, clone,\n\t\ttarget = arguments[ 0 ] || {},\n\t\ti = 1,\n\t\tlength = arguments.length,\n\t\tdeep = false;\n\n\t// Handle a deep copy situation\n\tif ( typeof target === \"boolean\" ) {\n\t\tdeep = target;\n\n\t\t// Skip the boolean and the target\n\t\ttarget = arguments[ i ] || {};\n\t\ti++;\n\t}\n\n\t// Handle case when target is a string or something (possible in deep copy)\n\tif ( typeof target !== \"object\" && !isFunction( target ) ) {\n\t\ttarget = {};\n\t}\n\n\t// Extend jQuery itself if only one argument is passed\n\tif ( i === length ) {\n\t\ttarget = this;\n\t\ti--;\n\t}\n\n\tfor ( ; i < length; i++ ) {\n\n\t\t// Only deal with non-null/undefined values\n\t\tif ( ( options = arguments[ i ] ) != null ) {\n\n\t\t\t// Extend the base object\n\t\t\tfor ( name in options ) {\n\t\t\t\tcopy = options[ name ];\n\n\t\t\t\t// Prevent Object.prototype pollution\n\t\t\t\t// Prevent never-ending loop\n\t\t\t\tif ( name === \"__proto__\" || target === copy ) {\n\t\t\t\t\tcontinue;\n\t\t\t\t}\n\n\t\t\t\t// Recurse if we're merging plain objects or arrays\n\t\t\t\tif ( deep && copy && ( jQuery.isPlainObject( copy ) ||\n\t\t\t\t\t( copyIsArray = Array.isArray( copy ) ) ) ) {\n\t\t\t\t\tsrc = target[ name ];\n\n\t\t\t\t\t// Ensure proper type for the source value\n\t\t\t\t\tif ( copyIsArray && !Array.isArray( src ) ) {\n\t\t\t\t\t\tclone = [];\n\t\t\t\t\t} else if ( !copyIsArray && !jQuery.isPlainObject( src ) ) {\n\t\t\t\t\t\tclone = {};\n\t\t\t\t\t} else {\n\t\t\t\t\t\tclone = src;\n\t\t\t\t\t}\n\t\t\t\t\tcopyIsArray = false;\n\n\t\t\t\t\t// Never move original objects, clone them\n\t\t\t\t\ttarget[ name ] = jQuery.extend( deep, clone, copy );\n\n\t\t\t\t// Don't bring in undefined values\n\t\t\t\t} else if ( copy !== undefined ) {\n\t\t\t\t\ttarget[ name ] = copy;\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\t}\n\n\t// Return the modified object\n\treturn target;\n};\n\njQuery.extend( {\n\n\t// Unique for each copy of jQuery on the page\n\texpando: \"jQuery\" + ( version + Math.random() ).replace( /\\D/g, \"\" ),\n\n\t// Assume jQuery is ready without the ready module\n\tisReady: true,\n\n\terror: function( msg ) {\n\t\tthrow new Error( msg );\n\t},\n\n\tnoop: function() {},\n\n\tisPlainObject: function( obj ) {\n\t\tvar proto, Ctor;\n\n\t\t// Detect obvious negatives\n\t\t// Use toString instead of jQuery.type to catch host objects\n\t\tif ( !obj || toString.call( obj ) !== \"[object Object]\" ) {\n\t\t\treturn false;\n\t\t}\n\n\t\tproto = getProto( obj );\n\n\t\t// Objects with no prototype (e.g., `Object.create( null )`) are plain\n\t\tif ( !proto ) {\n\t\t\treturn true;\n\t\t}\n\n\t\t// Objects with prototype are plain iff they were constructed by a global Object function\n\t\tCtor = hasOwn.call( proto, \"constructor\" ) && proto.constructor;\n\t\treturn typeof Ctor === \"function\" && fnToString.call( Ctor ) === ObjectFunctionString;\n\t},\n\n\tisEmptyObject: function( obj ) {\n\t\tvar name;\n\n\t\tfor ( name in obj ) {\n\t\t\treturn false;\n\t\t}\n\t\treturn true;\n\t},\n\n\t// Evaluates a script in a provided context; falls back to the global one\n\t// if not specified.\n\tglobalEval: function( code, options, doc ) {\n\t\tDOMEval( code, { nonce: options && options.nonce }, doc );\n\t},\n\n\teach: function( obj, callback ) {\n\t\tvar length, i = 0;\n\n\t\tif ( isArrayLike( obj ) ) {\n\t\t\tlength = obj.length;\n\t\t\tfor ( ; i < length; i++ ) {\n\t\t\t\tif ( callback.call( obj[ i ], i, obj[ i ] ) === false ) {\n\t\t\t\t\tbreak;\n\t\t\t\t}\n\t\t\t}\n\t\t} else {\n\t\t\tfor ( i in obj ) {\n\t\t\t\tif ( callback.call( obj[ i ], i, obj[ i ] ) === false ) {\n\t\t\t\t\tbreak;\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\n\t\treturn obj;\n\t},\n\n\n\t// Retrieve the text value of an array of DOM nodes\n\ttext: function( elem ) {\n\t\tvar node,\n\t\t\tret = \"\",\n\t\t\ti = 0,\n\t\t\tnodeType = elem.nodeType;\n\n\t\tif ( !nodeType ) {\n\n\t\t\t// If no nodeType, this is expected to be an array\n\t\t\twhile ( ( node = elem[ i++ ] ) ) {\n\n\t\t\t\t// Do not traverse comment nodes\n\t\t\t\tret += jQuery.text( node );\n\t\t\t}\n\t\t}\n\t\tif ( nodeType === 1 || nodeType === 11 ) {\n\t\t\treturn elem.textContent;\n\t\t}\n\t\tif ( nodeType === 9 ) {\n\t\t\treturn elem.documentElement.textContent;\n\t\t}\n\t\tif ( nodeType === 3 || nodeType === 4 ) {\n\t\t\treturn elem.nodeValue;\n\t\t}\n\n\t\t// Do not include comment or processing instruction nodes\n\n\t\treturn ret;\n\t},\n\n\t// results is for internal usage only\n\tmakeArray: function( arr, results ) {\n\t\tvar ret = results || [];\n\n\t\tif ( arr != null ) {\n\t\t\tif ( isArrayLike( Object( arr ) ) ) {\n\t\t\t\tjQuery.merge( ret,\n\t\t\t\t\ttypeof arr === \"string\" ?\n\t\t\t\t\t\t[ arr ] : arr\n\t\t\t\t);\n\t\t\t} else {\n\t\t\t\tpush.call( ret, arr );\n\t\t\t}\n\t\t}\n\n\t\treturn ret;\n\t},\n\n\tinArray: function( elem, arr, i ) {\n\t\treturn arr == null ? -1 : indexOf.call( arr, elem, i );\n\t},\n\n\tisXMLDoc: function( elem ) {\n\t\tvar namespace = elem && elem.namespaceURI,\n\t\t\tdocElem = elem && ( elem.ownerDocument || elem ).documentElement;\n\n\t\t// Assume HTML when documentElement doesn't yet exist, such as inside\n\t\t// document fragments.\n\t\treturn !rhtmlSuffix.test( namespace || docElem && docElem.nodeName || \"HTML\" );\n\t},\n\n\t// Support: Android <=4.0 only, PhantomJS 1 only\n\t// push.apply(_, arraylike) throws on ancient WebKit\n\tmerge: function( first, second ) {\n\t\tvar len = +second.length,\n\t\t\tj = 0,\n\t\t\ti = first.length;\n\n\t\tfor ( ; j < len; j++ ) {\n\t\t\tfirst[ i++ ] = second[ j ];\n\t\t}\n\n\t\tfirst.length = i;\n\n\t\treturn first;\n\t},\n\n\tgrep: function( elems, callback, invert ) {\n\t\tvar callbackInverse,\n\t\t\tmatches = [],\n\t\t\ti = 0,\n\t\t\tlength = elems.length,\n\t\t\tcallbackExpect = !invert;\n\n\t\t// Go through the array, only saving the items\n\t\t// that pass the validator function\n\t\tfor ( ; i < length; i++ ) {\n\t\t\tcallbackInverse = !callback( elems[ i ], i );\n\t\t\tif ( callbackInverse !== callbackExpect ) {\n\t\t\t\tmatches.push( elems[ i ] );\n\t\t\t}\n\t\t}\n\n\t\treturn matches;\n\t},\n\n\t// arg is for internal usage only\n\tmap: function( elems, callback, arg ) {\n\t\tvar length, value,\n\t\t\ti = 0,\n\t\t\tret = [];\n\n\t\t// Go through the array, translating each of the items to their new values\n\t\tif ( isArrayLike( elems ) ) {\n\t\t\tlength = elems.length;\n\t\t\tfor ( ; i < length; i++ ) {\n\t\t\t\tvalue = callback( elems[ i ], i, arg );\n\n\t\t\t\tif ( value != null ) {\n\t\t\t\t\tret.push( value );\n\t\t\t\t}\n\t\t\t}\n\n\t\t// Go through every key on the object,\n\t\t} else {\n\t\t\tfor ( i in elems ) {\n\t\t\t\tvalue = callback( elems[ i ], i, arg );\n\n\t\t\t\tif ( value != null ) {\n\t\t\t\t\tret.push( value );\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\n\t\t// Flatten any nested arrays\n\t\treturn flat( ret );\n\t},\n\n\t// A global GUID counter for objects\n\tguid: 1,\n\n\t// jQuery.support is not used in Core but other projects attach their\n\t// properties to it so it needs to exist.\n\tsupport: support\n} );\n\nif ( typeof Symbol === \"function\" ) {\n\tjQuery.fn[ Symbol.iterator ] = arr[ Symbol.iterator ];\n}\n\n// Populate the class2type map\njQuery.each( \"Boolean Number String Function Array Date RegExp Object Error Symbol\".split( \" \" ),\n\tfunction( _i, name ) {\n\t\tclass2type[ \"[object \" + name + \"]\" ] = name.toLowerCase();\n\t} );\n\nfunction isArrayLike( obj ) {\n\n\t// Support: real iOS 8.2 only (not reproducible in simulator)\n\t// `in` check used to prevent JIT error (gh-2145)\n\t// hasOwn isn't used here due to false negatives\n\t// regarding Nodelist length in IE\n\tvar length = !!obj && \"length\" in obj && obj.length,\n\t\ttype = toType( obj );\n\n\tif ( isFunction( obj ) || isWindow( obj ) ) {\n\t\treturn false;\n\t}\n\n\treturn type === \"array\" || length === 0 ||\n\t\ttypeof length === \"number\" && length > 0 && ( length - 1 ) in obj;\n}\n\n\nfunction nodeName( elem, name ) {\n\n\treturn elem.nodeName && elem.nodeName.toLowerCase() === name.toLowerCase();\n\n}\nvar pop = arr.pop;\n\n\nvar sort = arr.sort;\n\n\nvar splice = arr.splice;\n\n\nvar whitespace = \"[\\\\x20\\\\t\\\\r\\\\n\\\\f]\";\n\n\nvar rtrimCSS = new RegExp(\n\t\"^\" + whitespace + \"+|((?:^|[^\\\\\\\\])(?:\\\\\\\\.)*)\" + whitespace + \"+$\",\n\t\"g\"\n);\n\n\n\n\n// Note: an element does not contain itself\njQuery.contains = function( a, b ) {\n\tvar bup = b && b.parentNode;\n\n\treturn a === bup || !!( bup && bup.nodeType === 1 && (\n\n\t\t// Support: IE 9 - 11+\n\t\t// IE doesn't have `contains` on SVG.\n\t\ta.contains ?\n\t\t\ta.contains( bup ) :\n\t\t\ta.compareDocumentPosition && a.compareDocumentPosition( bup ) & 16\n\t) );\n};\n\n\n\n\n// CSS string/identifier serialization\n// https://drafts.csswg.org/cssom/#common-serializing-idioms\nvar rcssescape = /([\\0-\\x1f\\x7f]|^-?\\d)|^-$|[^\\x80-\\uFFFF\\w-]/g;\n\nfunction fcssescape( ch, asCodePoint ) {\n\tif ( asCodePoint ) {\n\n\t\t// U+0000 NULL becomes U+FFFD REPLACEMENT CHARACTER\n\t\tif ( ch === \"\\0\" ) {\n\t\t\treturn \"\\uFFFD\";\n\t\t}\n\n\t\t// Control characters and (dependent upon position) numbers get escaped as code points\n\t\treturn ch.slice( 0, -1 ) + \"\\\\\" + ch.charCodeAt( ch.length - 1 ).toString( 16 ) + \" \";\n\t}\n\n\t// Other potentially-special ASCII characters get backslash-escaped\n\treturn \"\\\\\" + ch;\n}\n\njQuery.escapeSelector = function( sel ) {\n\treturn ( sel + \"\" ).replace( rcssescape, fcssescape );\n};\n\n\n\n\nvar preferredDoc = document,\n\tpushNative = push;\n\n( function() {\n\nvar i,\n\tExpr,\n\toutermostContext,\n\tsortInput,\n\thasDuplicate,\n\tpush = pushNative,\n\n\t// Local document vars\n\tdocument,\n\tdocumentElement,\n\tdocumentIsHTML,\n\trbuggyQSA,\n\tmatches,\n\n\t// Instance-specific data\n\texpando = jQuery.expando,\n\tdirruns = 0,\n\tdone = 0,\n\tclassCache = createCache(),\n\ttokenCache = createCache(),\n\tcompilerCache = createCache(),\n\tnonnativeSelectorCache = createCache(),\n\tsortOrder = function( a, b ) {\n\t\tif ( a === b ) {\n\t\t\thasDuplicate = true;\n\t\t}\n\t\treturn 0;\n\t},\n\n\tbooleans = \"checked|selected|async|autofocus|autoplay|controls|defer|disabled|hidden|ismap|\" +\n\t\t\"loop|multiple|open|readonly|required|scoped\",\n\n\t// Regular expressions\n\n\t// https://www.w3.org/TR/css-syntax-3/#ident-token-diagram\n\tidentifier = \"(?:\\\\\\\\[\\\\da-fA-F]{1,6}\" + whitespace +\n\t\t\"?|\\\\\\\\[^\\\\r\\\\n\\\\f]|[\\\\w-]|[^\\0-\\\\x7f])+\",\n\n\t// Attribute selectors: https://www.w3.org/TR/selectors/#attribute-selectors\n\tattributes = \"\\\\[\" + whitespace + \"*(\" + identifier + \")(?:\" + whitespace +\n\n\t\t// Operator (capture 2)\n\t\t\"*([*^$|!~]?=)\" + whitespace +\n\n\t\t// \"Attribute values must be CSS identifiers [capture 5] or strings [capture 3 or capture 4]\"\n\t\t\"*(?:'((?:\\\\\\\\.|[^\\\\\\\\'])*)'|\\\"((?:\\\\\\\\.|[^\\\\\\\\\\\"])*)\\\"|(\" + identifier + \"))|)\" +\n\t\twhitespace + \"*\\\\]\",\n\n\tpseudos = \":(\" + identifier + \")(?:\\\\((\" +\n\n\t\t// To reduce the number of selectors needing tokenize in the preFilter, prefer arguments:\n\t\t// 1. quoted (capture 3; capture 4 or capture 5)\n\t\t\"('((?:\\\\\\\\.|[^\\\\\\\\'])*)'|\\\"((?:\\\\\\\\.|[^\\\\\\\\\\\"])*)\\\")|\" +\n\n\t\t// 2. simple (capture 6)\n\t\t\"((?:\\\\\\\\.|[^\\\\\\\\()[\\\\]]|\" + attributes + \")*)|\" +\n\n\t\t// 3. anything else (capture 2)\n\t\t\".*\" +\n\t\t\")\\\\)|)\",\n\n\t// Leading and non-escaped trailing whitespace, capturing some non-whitespace characters preceding the latter\n\trwhitespace = new RegExp( whitespace + \"+\", \"g\" ),\n\n\trcomma = new RegExp( \"^\" + whitespace + \"*,\" + whitespace + \"*\" ),\n\trleadingCombinator = new RegExp( \"^\" + whitespace + \"*([>+~]|\" + whitespace + \")\" +\n\t\twhitespace + \"*\" ),\n\trdescend = new RegExp( whitespace + \"|>\" ),\n\n\trpseudo = new RegExp( pseudos ),\n\tridentifier = new RegExp( \"^\" + identifier + \"$\" ),\n\n\tmatchExpr = {\n\t\tID: new RegExp( \"^#(\" + identifier + \")\" ),\n\t\tCLASS: new RegExp( \"^\\\\.(\" + identifier + \")\" ),\n\t\tTAG: new RegExp( \"^(\" + identifier + \"|[*])\" ),\n\t\tATTR: new RegExp( \"^\" + attributes ),\n\t\tPSEUDO: new RegExp( \"^\" + pseudos ),\n\t\tCHILD: new RegExp(\n\t\t\t\"^:(only|first|last|nth|nth-last)-(child|of-type)(?:\\\\(\" +\n\t\t\t\twhitespace + \"*(even|odd|(([+-]|)(\\\\d*)n|)\" + whitespace + \"*(?:([+-]|)\" +\n\t\t\t\twhitespace + \"*(\\\\d+)|))\" + whitespace + \"*\\\\)|)\", \"i\" ),\n\t\tbool: new RegExp( \"^(?:\" + booleans + \")$\", \"i\" ),\n\n\t\t// For use in libraries implementing .is()\n\t\t// We use this for POS matching in `select`\n\t\tneedsContext: new RegExp( \"^\" + whitespace +\n\t\t\t\"*[>+~]|:(even|odd|eq|gt|lt|nth|first|last)(?:\\\\(\" + whitespace +\n\t\t\t\"*((?:-\\\\d)?\\\\d*)\" + whitespace + \"*\\\\)|)(?=[^-]|$)\", \"i\" )\n\t},\n\n\trinputs = /^(?:input|select|textarea|button)$/i,\n\trheader = /^h\\d$/i,\n\n\t// Easily-parseable/retrievable ID or TAG or CLASS selectors\n\trquickExpr = /^(?:#([\\w-]+)|(\\w+)|\\.([\\w-]+))$/,\n\n\trsibling = /[+~]/,\n\n\t// CSS escapes\n\t// https://www.w3.org/TR/CSS21/syndata.html#escaped-characters\n\trunescape = new RegExp( \"\\\\\\\\[\\\\da-fA-F]{1,6}\" + whitespace +\n\t\t\"?|\\\\\\\\([^\\\\r\\\\n\\\\f])\", \"g\" ),\n\tfunescape = function( escape, nonHex ) {\n\t\tvar high = \"0x\" + escape.slice( 1 ) - 0x10000;\n\n\t\tif ( nonHex ) {\n\n\t\t\t// Strip the backslash prefix from a non-hex escape sequence\n\t\t\treturn nonHex;\n\t\t}\n\n\t\t// Replace a hexadecimal escape sequence with the encoded Unicode code point\n\t\t// Support: IE <=11+\n\t\t// For values outside the Basic Multilingual Plane (BMP), manually construct a\n\t\t// surrogate pair\n\t\treturn high < 0 ?\n\t\t\tString.fromCharCode( high + 0x10000 ) :\n\t\t\tString.fromCharCode( high >> 10 | 0xD800, high & 0x3FF | 0xDC00 );\n\t},\n\n\t// Used for iframes; see `setDocument`.\n\t// Support: IE 9 - 11+, Edge 12 - 18+\n\t// Removing the function wrapper causes a \"Permission Denied\"\n\t// error in IE/Edge.\n\tunloadHandler = function() {\n\t\tsetDocument();\n\t},\n\n\tinDisabledFieldset = addCombinator(\n\t\tfunction( elem ) {\n\t\t\treturn elem.disabled === true && nodeName( elem, \"fieldset\" );\n\t\t},\n\t\t{ dir: \"parentNode\", next: \"legend\" }\n\t);\n\n// Support: IE <=9 only\n// Accessing document.activeElement can throw unexpectedly\n// https://bugs.jquery.com/ticket/13393\nfunction safeActiveElement() {\n\ttry {\n\t\treturn document.activeElement;\n\t} catch ( err ) { }\n}\n\n// Optimize for push.apply( _, NodeList )\ntry {\n\tpush.apply(\n\t\t( arr = slice.call( preferredDoc.childNodes ) ),\n\t\tpreferredDoc.childNodes\n\t);\n\n\t// Support: Android <=4.0\n\t// Detect silently failing push.apply\n\t// eslint-disable-next-line no-unused-expressions\n\tarr[ preferredDoc.childNodes.length ].nodeType;\n} catch ( e ) {\n\tpush = {\n\t\tapply: function( target, els ) {\n\t\t\tpushNative.apply( target, slice.call( els ) );\n\t\t},\n\t\tcall: function( target ) {\n\t\t\tpushNative.apply( target, slice.call( arguments, 1 ) );\n\t\t}\n\t};\n}\n\nfunction find( selector, context, results, seed ) {\n\tvar m, i, elem, nid, match, groups, newSelector,\n\t\tnewContext = context && context.ownerDocument,\n\n\t\t// nodeType defaults to 9, since context defaults to document\n\t\tnodeType = context ? context.nodeType : 9;\n\n\tresults = results || [];\n\n\t// Return early from calls with invalid selector or context\n\tif ( typeof selector !== \"string\" || !selector ||\n\t\tnodeType !== 1 && nodeType !== 9 && nodeType !== 11 ) {\n\n\t\treturn results;\n\t}\n\n\t// Try to shortcut find operations (as opposed to filters) in HTML documents\n\tif ( !seed ) {\n\t\tsetDocument( context );\n\t\tcontext = context || document;\n\n\t\tif ( documentIsHTML ) {\n\n\t\t\t// If the selector is sufficiently simple, try using a \"get*By*\" DOM method\n\t\t\t// (excepting DocumentFragment context, where the methods don't exist)\n\t\t\tif ( nodeType !== 11 && ( match = rquickExpr.exec( selector ) ) ) {\n\n\t\t\t\t// ID selector\n\t\t\t\tif ( ( m = match[ 1 ] ) ) {\n\n\t\t\t\t\t// Document context\n\t\t\t\t\tif ( nodeType === 9 ) {\n\t\t\t\t\t\tif ( ( elem = context.getElementById( m ) ) ) {\n\n\t\t\t\t\t\t\t// Support: IE 9 only\n\t\t\t\t\t\t\t// getElementById can match elements by name instead of ID\n\t\t\t\t\t\t\tif ( elem.id === m ) {\n\t\t\t\t\t\t\t\tpush.call( results, elem );\n\t\t\t\t\t\t\t\treturn results;\n\t\t\t\t\t\t\t}\n\t\t\t\t\t\t} else {\n\t\t\t\t\t\t\treturn results;\n\t\t\t\t\t\t}\n\n\t\t\t\t\t// Element context\n\t\t\t\t\t} else {\n\n\t\t\t\t\t\t// Support: IE 9 only\n\t\t\t\t\t\t// getElementById can match elements by name instead of ID\n\t\t\t\t\t\tif ( newContext && ( elem = newContext.getElementById( m ) ) &&\n\t\t\t\t\t\t\tfind.contains( context, elem ) &&\n\t\t\t\t\t\t\telem.id === m ) {\n\n\t\t\t\t\t\t\tpush.call( results, elem );\n\t\t\t\t\t\t\treturn results;\n\t\t\t\t\t\t}\n\t\t\t\t\t}\n\n\t\t\t\t// Type selector\n\t\t\t\t} else if ( match[ 2 ] ) {\n\t\t\t\t\tpush.apply( results, context.getElementsByTagName( selector ) );\n\t\t\t\t\treturn results;\n\n\t\t\t\t// Class selector\n\t\t\t\t} else if ( ( m = match[ 3 ] ) && context.getElementsByClassName ) {\n\t\t\t\t\tpush.apply( results, context.getElementsByClassName( m ) );\n\t\t\t\t\treturn results;\n\t\t\t\t}\n\t\t\t}\n\n\t\t\t// Take advantage of querySelectorAll\n\t\t\tif ( !nonnativeSelectorCache[ selector + \" \" ] &&\n\t\t\t\t( !rbuggyQSA || !rbuggyQSA.test( selector ) ) ) {\n\n\t\t\t\tnewSelector = selector;\n\t\t\t\tnewContext = context;\n\n\t\t\t\t// qSA considers elements outside a scoping root when evaluating child or\n\t\t\t\t// descendant combinators, which is not what we want.\n\t\t\t\t// In such cases, we work around the behavior by prefixing every selector in the\n\t\t\t\t// list with an ID selector referencing the scope context.\n\t\t\t\t// The technique has to be used as well when a leading combinator is used\n\t\t\t\t// as such selectors are not recognized by querySelectorAll.\n\t\t\t\t// Thanks to Andrew Dupont for this technique.\n\t\t\t\tif ( nodeType === 1 &&\n\t\t\t\t\t( rdescend.test( selector ) || rleadingCombinator.test( selector ) ) ) {\n\n\t\t\t\t\t// Expand context for sibling selectors\n\t\t\t\t\tnewContext = rsibling.test( selector ) && testContext( context.parentNode ) ||\n\t\t\t\t\t\tcontext;\n\n\t\t\t\t\t// We can use :scope instead of the ID hack if the browser\n\t\t\t\t\t// supports it & if we're not changing the context.\n\t\t\t\t\t// Support: IE 11+, Edge 17 - 18+\n\t\t\t\t\t// IE/Edge sometimes throw a \"Permission denied\" error when\n\t\t\t\t\t// strict-comparing two documents; shallow comparisons work.\n\t\t\t\t\t// eslint-disable-next-line eqeqeq\n\t\t\t\t\tif ( newContext != context || !support.scope ) {\n\n\t\t\t\t\t\t// Capture the context ID, setting it first if necessary\n\t\t\t\t\t\tif ( ( nid = context.getAttribute( \"id\" ) ) ) {\n\t\t\t\t\t\t\tnid = jQuery.escapeSelector( nid );\n\t\t\t\t\t\t} else {\n\t\t\t\t\t\t\tcontext.setAttribute( \"id\", ( nid = expando ) );\n\t\t\t\t\t\t}\n\t\t\t\t\t}\n\n\t\t\t\t\t// Prefix every selector in the list\n\t\t\t\t\tgroups = tokenize( selector );\n\t\t\t\t\ti = groups.length;\n\t\t\t\t\twhile ( i-- ) {\n\t\t\t\t\t\tgroups[ i ] = ( nid ? \"#\" + nid : \":scope\" ) + \" \" +\n\t\t\t\t\t\t\ttoSelector( groups[ i ] );\n\t\t\t\t\t}\n\t\t\t\t\tnewSelector = groups.join( \",\" );\n\t\t\t\t}\n\n\t\t\t\ttry {\n\t\t\t\t\tpush.apply( results,\n\t\t\t\t\t\tnewContext.querySelectorAll( newSelector )\n\t\t\t\t\t);\n\t\t\t\t\treturn results;\n\t\t\t\t} catch ( qsaError ) {\n\t\t\t\t\tnonnativeSelectorCache( selector, true );\n\t\t\t\t} finally {\n\t\t\t\t\tif ( nid === expando ) {\n\t\t\t\t\t\tcontext.removeAttribute( \"id\" );\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\t}\n\n\t// All others\n\treturn select( selector.replace( rtrimCSS, \"$1\" ), context, results, seed );\n}\n\n/**\n * Create key-value caches of limited size\n * @returns {function(string, object)} Returns the Object data after storing it on itself with\n *\tproperty name the (space-suffixed) string and (if the cache is larger than Expr.cacheLength)\n *\tdeleting the oldest entry\n */\nfunction createCache() {\n\tvar keys = [];\n\n\tfunction cache( key, value ) {\n\n\t\t// Use (key + \" \") to avoid collision with native prototype properties\n\t\t// (see https://github.com/jquery/sizzle/issues/157)\n\t\tif ( keys.push( key + \" \" ) > Expr.cacheLength ) {\n\n\t\t\t// Only keep the most recent entries\n\t\t\tdelete cache[ keys.shift() ];\n\t\t}\n\t\treturn ( cache[ key + \" \" ] = value );\n\t}\n\treturn cache;\n}\n\n/**\n * Mark a function for special use by jQuery selector module\n * @param {Function} fn The function to mark\n */\nfunction markFunction( fn ) {\n\tfn[ expando ] = true;\n\treturn fn;\n}\n\n/**\n * Support testing using an element\n * @param {Function} fn Passed the created element and returns a boolean result\n */\nfunction assert( fn ) {\n\tvar el = document.createElement( \"fieldset\" );\n\n\ttry {\n\t\treturn !!fn( el );\n\t} catch ( e ) {\n\t\treturn false;\n\t} finally {\n\n\t\t// Remove from its parent by default\n\t\tif ( el.parentNode ) {\n\t\t\tel.parentNode.removeChild( el );\n\t\t}\n\n\t\t// release memory in IE\n\t\tel = null;\n\t}\n}\n\n/**\n * Returns a function to use in pseudos for input types\n * @param {String} type\n */\nfunction createInputPseudo( type ) {\n\treturn function( elem ) {\n\t\treturn nodeName( elem, \"input\" ) && elem.type === type;\n\t};\n}\n\n/**\n * Returns a function to use in pseudos for buttons\n * @param {String} type\n */\nfunction createButtonPseudo( type ) {\n\treturn function( elem ) {\n\t\treturn ( nodeName( elem, \"input\" ) || nodeName( elem, \"button\" ) ) &&\n\t\t\telem.type === type;\n\t};\n}\n\n/**\n * Returns a function to use in pseudos for :enabled/:disabled\n * @param {Boolean} disabled true for :disabled; false for :enabled\n */\nfunction createDisabledPseudo( disabled ) {\n\n\t// Known :disabled false positives: fieldset[disabled] > legend:nth-of-type(n+2) :can-disable\n\treturn function( elem ) {\n\n\t\t// Only certain elements can match :enabled or :disabled\n\t\t// https://html.spec.whatwg.org/multipage/scripting.html#selector-enabled\n\t\t// https://html.spec.whatwg.org/multipage/scripting.html#selector-disabled\n\t\tif ( \"form\" in elem ) {\n\n\t\t\t// Check for inherited disabledness on relevant non-disabled elements:\n\t\t\t// * listed form-associated elements in a disabled fieldset\n\t\t\t// https://html.spec.whatwg.org/multipage/forms.html#category-listed\n\t\t\t// https://html.spec.whatwg.org/multipage/forms.html#concept-fe-disabled\n\t\t\t// * option elements in a disabled optgroup\n\t\t\t// https://html.spec.whatwg.org/multipage/forms.html#concept-option-disabled\n\t\t\t// All such elements have a \"form\" property.\n\t\t\tif ( elem.parentNode && elem.disabled === false ) {\n\n\t\t\t\t// Option elements defer to a parent optgroup if present\n\t\t\t\tif ( \"label\" in elem ) {\n\t\t\t\t\tif ( \"label\" in elem.parentNode ) {\n\t\t\t\t\t\treturn elem.parentNode.disabled === disabled;\n\t\t\t\t\t} else {\n\t\t\t\t\t\treturn elem.disabled === disabled;\n\t\t\t\t\t}\n\t\t\t\t}\n\n\t\t\t\t// Support: IE 6 - 11+\n\t\t\t\t// Use the isDisabled shortcut property to check for disabled fieldset ancestors\n\t\t\t\treturn elem.isDisabled === disabled ||\n\n\t\t\t\t\t// Where there is no isDisabled, check manually\n\t\t\t\t\telem.isDisabled !== !disabled &&\n\t\t\t\t\t\tinDisabledFieldset( elem ) === disabled;\n\t\t\t}\n\n\t\t\treturn elem.disabled === disabled;\n\n\t\t// Try to winnow out elements that can't be disabled before trusting the disabled property.\n\t\t// Some victims get caught in our net (label, legend, menu, track), but it shouldn't\n\t\t// even exist on them, let alone have a boolean value.\n\t\t} else if ( \"label\" in elem ) {\n\t\t\treturn elem.disabled === disabled;\n\t\t}\n\n\t\t// Remaining elements are neither :enabled nor :disabled\n\t\treturn false;\n\t};\n}\n\n/**\n * Returns a function to use in pseudos for positionals\n * @param {Function} fn\n */\nfunction createPositionalPseudo( fn ) {\n\treturn markFunction( function( argument ) {\n\t\targument = +argument;\n\t\treturn markFunction( function( seed, matches ) {\n\t\t\tvar j,\n\t\t\t\tmatchIndexes = fn( [], seed.length, argument ),\n\t\t\t\ti = matchIndexes.length;\n\n\t\t\t// Match elements found at the specified indexes\n\t\t\twhile ( i-- ) {\n\t\t\t\tif ( seed[ ( j = matchIndexes[ i ] ) ] ) {\n\t\t\t\t\tseed[ j ] = !( matches[ j ] = seed[ j ] );\n\t\t\t\t}\n\t\t\t}\n\t\t} );\n\t} );\n}\n\n/**\n * Checks a node for validity as a jQuery selector context\n * @param {Element|Object=} context\n * @returns {Element|Object|Boolean} The input node if acceptable, otherwise a falsy value\n */\nfunction testContext( context ) {\n\treturn context && typeof context.getElementsByTagName !== \"undefined\" && context;\n}\n\n/**\n * Sets document-related variables once based on the current document\n * @param {Element|Object} [node] An element or document object to use to set the document\n * @returns {Object} Returns the current document\n */\nfunction setDocument( node ) {\n\tvar subWindow,\n\t\tdoc = node ? node.ownerDocument || node : preferredDoc;\n\n\t// Return early if doc is invalid or already selected\n\t// Support: IE 11+, Edge 17 - 18+\n\t// IE/Edge sometimes throw a \"Permission denied\" error when strict-comparing\n\t// two documents; shallow comparisons work.\n\t// eslint-disable-next-line eqeqeq\n\tif ( doc == document || doc.nodeType !== 9 || !doc.documentElement ) {\n\t\treturn document;\n\t}\n\n\t// Update global variables\n\tdocument = doc;\n\tdocumentElement = document.documentElement;\n\tdocumentIsHTML = !jQuery.isXMLDoc( document );\n\n\t// Support: iOS 7 only, IE 9 - 11+\n\t// Older browsers didn't support unprefixed `matches`.\n\tmatches = documentElement.matches ||\n\t\tdocumentElement.webkitMatchesSelector ||\n\t\tdocumentElement.msMatchesSelector;\n\n\t// Support: IE 9 - 11+, Edge 12 - 18+\n\t// Accessing iframe documents after unload throws \"permission denied\" errors\n\t// (see trac-13936).\n\t// Limit the fix to IE & Edge Legacy; despite Edge 15+ implementing `matches`,\n\t// all IE 9+ and Edge Legacy versions implement `msMatchesSelector` as well.\n\tif ( documentElement.msMatchesSelector &&\n\n\t\t// Support: IE 11+, Edge 17 - 18+\n\t\t// IE/Edge sometimes throw a \"Permission denied\" error when strict-comparing\n\t\t// two documents; shallow comparisons work.\n\t\t// eslint-disable-next-line eqeqeq\n\t\tpreferredDoc != document &&\n\t\t( subWindow = document.defaultView ) && subWindow.top !== subWindow ) {\n\n\t\t// Support: IE 9 - 11+, Edge 12 - 18+\n\t\tsubWindow.addEventListener( \"unload\", unloadHandler );\n\t}\n\n\t// Support: IE <10\n\t// Check if getElementById returns elements by name\n\t// The broken getElementById methods don't pick up programmatically-set names,\n\t// so use a roundabout getElementsByName test\n\tsupport.getById = assert( function( el ) {\n\t\tdocumentElement.appendChild( el ).id = jQuery.expando;\n\t\treturn !document.getElementsByName ||\n\t\t\t!document.getElementsByName( jQuery.expando ).length;\n\t} );\n\n\t// Support: IE 9 only\n\t// Check to see if it's possible to do matchesSelector\n\t// on a disconnected node.\n\tsupport.disconnectedMatch = assert( function( el ) {\n\t\treturn matches.call( el, \"*\" );\n\t} );\n\n\t// Support: IE 9 - 11+, Edge 12 - 18+\n\t// IE/Edge don't support the :scope pseudo-class.\n\tsupport.scope = assert( function() {\n\t\treturn document.querySelectorAll( \":scope\" );\n\t} );\n\n\t// Support: Chrome 105 - 111 only, Safari 15.4 - 16.3 only\n\t// Make sure the `:has()` argument is parsed unforgivingly.\n\t// We include `*` in the test to detect buggy implementations that are\n\t// _selectively_ forgiving (specifically when the list includes at least\n\t// one valid selector).\n\t// Note that we treat complete lack of support for `:has()` as if it were\n\t// spec-compliant support, which is fine because use of `:has()` in such\n\t// environments will fail in the qSA path and fall back to jQuery traversal\n\t// anyway.\n\tsupport.cssHas = assert( function() {\n\t\ttry {\n\t\t\tdocument.querySelector( \":has(*,:jqfake)\" );\n\t\t\treturn false;\n\t\t} catch ( e ) {\n\t\t\treturn true;\n\t\t}\n\t} );\n\n\t// ID filter and find\n\tif ( support.getById ) {\n\t\tExpr.filter.ID = function( id ) {\n\t\t\tvar attrId = id.replace( runescape, funescape );\n\t\t\treturn function( elem ) {\n\t\t\t\treturn elem.getAttribute( \"id\" ) === attrId;\n\t\t\t};\n\t\t};\n\t\tExpr.find.ID = function( id, context ) {\n\t\t\tif ( typeof context.getElementById !== \"undefined\" && documentIsHTML ) {\n\t\t\t\tvar elem = context.getElementById( id );\n\t\t\t\treturn elem ? [ elem ] : [];\n\t\t\t}\n\t\t};\n\t} else {\n\t\tExpr.filter.ID = function( id ) {\n\t\t\tvar attrId = id.replace( runescape, funescape );\n\t\t\treturn function( elem ) {\n\t\t\t\tvar node = typeof elem.getAttributeNode !== \"undefined\" &&\n\t\t\t\t\telem.getAttributeNode( \"id\" );\n\t\t\t\treturn node && node.value === attrId;\n\t\t\t};\n\t\t};\n\n\t\t// Support: IE 6 - 7 only\n\t\t// getElementById is not reliable as a find shortcut\n\t\tExpr.find.ID = function( id, context ) {\n\t\t\tif ( typeof context.getElementById !== \"undefined\" && documentIsHTML ) {\n\t\t\t\tvar node, i, elems,\n\t\t\t\t\telem = context.getElementById( id );\n\n\t\t\t\tif ( elem ) {\n\n\t\t\t\t\t// Verify the id attribute\n\t\t\t\t\tnode = elem.getAttributeNode( \"id\" );\n\t\t\t\t\tif ( node && node.value === id ) {\n\t\t\t\t\t\treturn [ elem ];\n\t\t\t\t\t}\n\n\t\t\t\t\t// Fall back on getElementsByName\n\t\t\t\t\telems = context.getElementsByName( id );\n\t\t\t\t\ti = 0;\n\t\t\t\t\twhile ( ( elem = elems[ i++ ] ) ) {\n\t\t\t\t\t\tnode = elem.getAttributeNode( \"id\" );\n\t\t\t\t\t\tif ( node && node.value === id ) {\n\t\t\t\t\t\t\treturn [ elem ];\n\t\t\t\t\t\t}\n\t\t\t\t\t}\n\t\t\t\t}\n\n\t\t\t\treturn [];\n\t\t\t}\n\t\t};\n\t}\n\n\t// Tag\n\tExpr.find.TAG = function( tag, context ) {\n\t\tif ( typeof context.getElementsByTagName !== \"undefined\" ) {\n\t\t\treturn context.getElementsByTagName( tag );\n\n\t\t// DocumentFragment nodes don't have gEBTN\n\t\t} else {\n\t\t\treturn context.querySelectorAll( tag );\n\t\t}\n\t};\n\n\t// Class\n\tExpr.find.CLASS = function( className, context ) {\n\t\tif ( typeof context.getElementsByClassName !== \"undefined\" && documentIsHTML ) {\n\t\t\treturn context.getElementsByClassName( className );\n\t\t}\n\t};\n\n\t/* QSA/matchesSelector\n\t---------------------------------------------------------------------- */\n\n\t// QSA and matchesSelector support\n\n\trbuggyQSA = [];\n\n\t// Build QSA regex\n\t// Regex strategy adopted from Diego Perini\n\tassert( function( el ) {\n\n\t\tvar input;\n\n\t\tdocumentElement.appendChild( el ).innerHTML =\n\t\t\t\"<a id='\" + expando + \"' href='' disabled='disabled'></a>\" +\n\t\t\t\"<select id='\" + expando + \"-\\r\\\\' disabled='disabled'>\" +\n\t\t\t\"<option selected=''></option></select>\";\n\n\t\t// Support: iOS <=7 - 8 only\n\t\t// Boolean attributes and \"value\" are not treated correctly in some XML documents\n\t\tif ( !el.querySelectorAll( \"[selected]\" ).length ) {\n\t\t\trbuggyQSA.push( \"\\\\[\" + whitespace + \"*(?:value|\" + booleans + \")\" );\n\t\t}\n\n\t\t// Support: iOS <=7 - 8 only\n\t\tif ( !el.querySelectorAll( \"[id~=\" + expando + \"-]\" ).length ) {\n\t\t\trbuggyQSA.push( \"~=\" );\n\t\t}\n\n\t\t// Support: iOS 8 only\n\t\t// https://bugs.webkit.org/show_bug.cgi?id=136851\n\t\t// In-page `selector#id sibling-combinator selector` fails\n\t\tif ( !el.querySelectorAll( \"a#\" + expando + \"+*\" ).length ) {\n\t\t\trbuggyQSA.push( \".#.+[+~]\" );\n\t\t}\n\n\t\t// Support: Chrome <=105+, Firefox <=104+, Safari <=15.4+\n\t\t// In some of the document kinds, these selectors wouldn't work natively.\n\t\t// This is probably OK but for backwards compatibility we want to maintain\n\t\t// handling them through jQuery traversal in jQuery 3.x.\n\t\tif ( !el.querySelectorAll( \":checked\" ).length ) {\n\t\t\trbuggyQSA.push( \":checked\" );\n\t\t}\n\n\t\t// Support: Windows 8 Native Apps\n\t\t// The type and name attributes are restricted during .innerHTML assignment\n\t\tinput = document.createElement( \"input\" );\n\t\tinput.setAttribute( \"type\", \"hidden\" );\n\t\tel.appendChild( input ).setAttribute( \"name\", \"D\" );\n\n\t\t// Support: IE 9 - 11+\n\t\t// IE's :disabled selector does not pick up the children of disabled fieldsets\n\t\t// Support: Chrome <=105+, Firefox <=104+, Safari <=15.4+\n\t\t// In some of the document kinds, these selectors wouldn't work natively.\n\t\t// This is probably OK but for backwards compatibility we want to maintain\n\t\t// handling them through jQuery traversal in jQuery 3.x.\n\t\tdocumentElement.appendChild( el ).disabled = true;\n\t\tif ( el.querySelectorAll( \":disabled\" ).length !== 2 ) {\n\t\t\trbuggyQSA.push( \":enabled\", \":disabled\" );\n\t\t}\n\n\t\t// Support: IE 11+, Edge 15 - 18+\n\t\t// IE 11/Edge don't find elements on a `[name='']` query in some cases.\n\t\t// Adding a temporary attribute to the document before the selection works\n\t\t// around the issue.\n\t\t// Interestingly, IE 10 & older don't seem to have the issue.\n\t\tinput = document.createElement( \"input\" );\n\t\tinput.setAttribute( \"name\", \"\" );\n\t\tel.appendChild( input );\n\t\tif ( !el.querySelectorAll( \"[name='']\" ).length ) {\n\t\t\trbuggyQSA.push( \"\\\\[\" + whitespace + \"*name\" + whitespace + \"*=\" +\n\t\t\t\twhitespace + \"*(?:''|\\\"\\\")\" );\n\t\t}\n\t} );\n\n\tif ( !support.cssHas ) {\n\n\t\t// Support: Chrome 105 - 110+, Safari 15.4 - 16.3+\n\t\t// Our regular `try-catch` mechanism fails to detect natively-unsupported\n\t\t// pseudo-classes inside `:has()` (such as `:has(:contains(\"Foo\"))`)\n\t\t// in browsers that parse the `:has()` argument as a forgiving selector list.\n\t\t// https://drafts.csswg.org/selectors/#relational now requires the argument\n\t\t// to be parsed unforgivingly, but browsers have not yet fully adjusted.\n\t\trbuggyQSA.push( \":has\" );\n\t}\n\n\trbuggyQSA = rbuggyQSA.length && new RegExp( rbuggyQSA.join( \"|\" ) );\n\n\t/* Sorting\n\t---------------------------------------------------------------------- */\n\n\t// Document order sorting\n\tsortOrder = function( a, b ) {\n\n\t\t// Flag for duplicate removal\n\t\tif ( a === b ) {\n\t\t\thasDuplicate = true;\n\t\t\treturn 0;\n\t\t}\n\n\t\t// Sort on method existence if only one input has compareDocumentPosition\n\t\tvar compare = !a.compareDocumentPosition - !b.compareDocumentPosition;\n\t\tif ( compare ) {\n\t\t\treturn compare;\n\t\t}\n\n\t\t// Calculate position if both inputs belong to the same document\n\t\t// Support: IE 11+, Edge 17 - 18+\n\t\t// IE/Edge sometimes throw a \"Permission denied\" error when strict-comparing\n\t\t// two documents; shallow comparisons work.\n\t\t// eslint-disable-next-line eqeqeq\n\t\tcompare = ( a.ownerDocument || a ) == ( b.ownerDocument || b ) ?\n\t\t\ta.compareDocumentPosition( b ) :\n\n\t\t\t// Otherwise we know they are disconnected\n\t\t\t1;\n\n\t\t// Disconnected nodes\n\t\tif ( compare & 1 ||\n\t\t\t( !support.sortDetached && b.compareDocumentPosition( a ) === compare ) ) {\n\n\t\t\t// Choose the first element that is related to our preferred document\n\t\t\t// Support: IE 11+, Edge 17 - 18+\n\t\t\t// IE/Edge sometimes throw a \"Permission denied\" error when strict-comparing\n\t\t\t// two documents; shallow comparisons work.\n\t\t\t// eslint-disable-next-line eqeqeq\n\t\t\tif ( a === document || a.ownerDocument == preferredDoc &&\n\t\t\t\tfind.contains( preferredDoc, a ) ) {\n\t\t\t\treturn -1;\n\t\t\t}\n\n\t\t\t// Support: IE 11+, Edge 17 - 18+\n\t\t\t// IE/Edge sometimes throw a \"Permission denied\" error when strict-comparing\n\t\t\t// two documents; shallow comparisons work.\n\t\t\t// eslint-disable-next-line eqeqeq\n\t\t\tif ( b === document || b.ownerDocument == preferredDoc &&\n\t\t\t\tfind.contains( preferredDoc, b ) ) {\n\t\t\t\treturn 1;\n\t\t\t}\n\n\t\t\t// Maintain original order\n\t\t\treturn sortInput ?\n\t\t\t\t( indexOf.call( sortInput, a ) - indexOf.call( sortInput, b ) ) :\n\t\t\t\t0;\n\t\t}\n\n\t\treturn compare & 4 ? -1 : 1;\n\t};\n\n\treturn document;\n}\n\nfind.matches = function( expr, elements ) {\n\treturn find( expr, null, null, elements );\n};\n\nfind.matchesSelector = function( elem, expr ) {\n\tsetDocument( elem );\n\n\tif ( documentIsHTML &&\n\t\t!nonnativeSelectorCache[ expr + \" \" ] &&\n\t\t( !rbuggyQSA || !rbuggyQSA.test( expr ) ) ) {\n\n\t\ttry {\n\t\t\tvar ret = matches.call( elem, expr );\n\n\t\t\t// IE 9's matchesSelector returns false on disconnected nodes\n\t\t\tif ( ret || support.disconnectedMatch ||\n\n\t\t\t\t\t// As well, disconnected nodes are said to be in a document\n\t\t\t\t\t// fragment in IE 9\n\t\t\t\t\telem.document && elem.document.nodeType !== 11 ) {\n\t\t\t\treturn ret;\n\t\t\t}\n\t\t} catch ( e ) {\n\t\t\tnonnativeSelectorCache( expr, true );\n\t\t}\n\t}\n\n\treturn find( expr, document, null, [ elem ] ).length > 0;\n};\n\nfind.contains = function( context, elem ) {\n\n\t// Set document vars if needed\n\t// Support: IE 11+, Edge 17 - 18+\n\t// IE/Edge sometimes throw a \"Permission denied\" error when strict-comparing\n\t// two documents; shallow comparisons work.\n\t// eslint-disable-next-line eqeqeq\n\tif ( ( context.ownerDocument || context ) != document ) {\n\t\tsetDocument( context );\n\t}\n\treturn jQuery.contains( context, elem );\n};\n\n\nfind.attr = function( elem, name ) {\n\n\t// Set document vars if needed\n\t// Support: IE 11+, Edge 17 - 18+\n\t// IE/Edge sometimes throw a \"Permission denied\" error when strict-comparing\n\t// two documents; shallow comparisons work.\n\t// eslint-disable-next-line eqeqeq\n\tif ( ( elem.ownerDocument || elem ) != document ) {\n\t\tsetDocument( elem );\n\t}\n\n\tvar fn = Expr.attrHandle[ name.toLowerCase() ],\n\n\t\t// Don't get fooled by Object.prototype properties (see trac-13807)\n\t\tval = fn && hasOwn.call( Expr.attrHandle, name.toLowerCase() ) ?\n\t\t\tfn( elem, name, !documentIsHTML ) :\n\t\t\tundefined;\n\n\tif ( val !== undefined ) {\n\t\treturn val;\n\t}\n\n\treturn elem.getAttribute( name );\n};\n\nfind.error = function( msg ) {\n\tthrow new Error( \"Syntax error, unrecognized expression: \" + msg );\n};\n\n/**\n * Document sorting and removing duplicates\n * @param {ArrayLike} results\n */\njQuery.uniqueSort = function( results ) {\n\tvar elem,\n\t\tduplicates = [],\n\t\tj = 0,\n\t\ti = 0;\n\n\t// Unless we *know* we can detect duplicates, assume their presence\n\t//\n\t// Support: Android <=4.0+\n\t// Testing for detecting duplicates is unpredictable so instead assume we can't\n\t// depend on duplicate detection in all browsers without a stable sort.\n\thasDuplicate = !support.sortStable;\n\tsortInput = !support.sortStable && slice.call( results, 0 );\n\tsort.call( results, sortOrder );\n\n\tif ( hasDuplicate ) {\n\t\twhile ( ( elem = results[ i++ ] ) ) {\n\t\t\tif ( elem === results[ i ] ) {\n\t\t\t\tj = duplicates.push( i );\n\t\t\t}\n\t\t}\n\t\twhile ( j-- ) {\n\t\t\tsplice.call( results, duplicates[ j ], 1 );\n\t\t}\n\t}\n\n\t// Clear input after sorting to release objects\n\t// See https://github.com/jquery/sizzle/pull/225\n\tsortInput = null;\n\n\treturn results;\n};\n\njQuery.fn.uniqueSort = function() {\n\treturn this.pushStack( jQuery.uniqueSort( slice.apply( this ) ) );\n};\n\nExpr = jQuery.expr = {\n\n\t// Can be adjusted by the user\n\tcacheLength: 50,\n\n\tcreatePseudo: markFunction,\n\n\tmatch: matchExpr,\n\n\tattrHandle: {},\n\n\tfind: {},\n\n\trelative: {\n\t\t\">\": { dir: \"parentNode\", first: true },\n\t\t\" \": { dir: \"parentNode\" },\n\t\t\"+\": { dir: \"previousSibling\", first: true },\n\t\t\"~\": { dir: \"previousSibling\" }\n\t},\n\n\tpreFilter: {\n\t\tATTR: function( match ) {\n\t\t\tmatch[ 1 ] = match[ 1 ].replace( runescape, funescape );\n\n\t\t\t// Move the given value to match[3] whether quoted or unquoted\n\t\t\tmatch[ 3 ] = ( match[ 3 ] || match[ 4 ] || match[ 5 ] || \"\" )\n\t\t\t\t.replace( runescape, funescape );\n\n\t\t\tif ( match[ 2 ] === \"~=\" ) {\n\t\t\t\tmatch[ 3 ] = \" \" + match[ 3 ] + \" \";\n\t\t\t}\n\n\t\t\treturn match.slice( 0, 4 );\n\t\t},\n\n\t\tCHILD: function( match ) {\n\n\t\t\t/* matches from matchExpr[\"CHILD\"]\n\t\t\t\t1 type (only|nth|...)\n\t\t\t\t2 what (child|of-type)\n\t\t\t\t3 argument (even|odd|\\d*|\\d*n([+-]\\d+)?|...)\n\t\t\t\t4 xn-component of xn+y argument ([+-]?\\d*n|)\n\t\t\t\t5 sign of xn-component\n\t\t\t\t6 x of xn-component\n\t\t\t\t7 sign of y-component\n\t\t\t\t8 y of y-component\n\t\t\t*/\n\t\t\tmatch[ 1 ] = match[ 1 ].toLowerCase();\n\n\t\t\tif ( match[ 1 ].slice( 0, 3 ) === \"nth\" ) {\n\n\t\t\t\t// nth-* requires argument\n\t\t\t\tif ( !match[ 3 ] ) {\n\t\t\t\t\tfind.error( match[ 0 ] );\n\t\t\t\t}\n\n\t\t\t\t// numeric x and y parameters for Expr.filter.CHILD\n\t\t\t\t// remember that false/true cast respectively to 0/1\n\t\t\t\tmatch[ 4 ] = +( match[ 4 ] ?\n\t\t\t\t\tmatch[ 5 ] + ( match[ 6 ] || 1 ) :\n\t\t\t\t\t2 * ( match[ 3 ] === \"even\" || match[ 3 ] === \"odd\" )\n\t\t\t\t);\n\t\t\t\tmatch[ 5 ] = +( ( match[ 7 ] + match[ 8 ] ) || match[ 3 ] === \"odd\" );\n\n\t\t\t// other types prohibit arguments\n\t\t\t} else if ( match[ 3 ] ) {\n\t\t\t\tfind.error( match[ 0 ] );\n\t\t\t}\n\n\t\t\treturn match;\n\t\t},\n\n\t\tPSEUDO: function( match ) {\n\t\t\tvar excess,\n\t\t\t\tunquoted = !match[ 6 ] && match[ 2 ];\n\n\t\t\tif ( matchExpr.CHILD.test( match[ 0 ] ) ) {\n\t\t\t\treturn null;\n\t\t\t}\n\n\t\t\t// Accept quoted arguments as-is\n\t\t\tif ( match[ 3 ] ) {\n\t\t\t\tmatch[ 2 ] = match[ 4 ] || match[ 5 ] || \"\";\n\n\t\t\t// Strip excess characters from unquoted arguments\n\t\t\t} else if ( unquoted && rpseudo.test( unquoted ) &&\n\n\t\t\t\t// Get excess from tokenize (recursively)\n\t\t\t\t( excess = tokenize( unquoted, true ) ) &&\n\n\t\t\t\t// advance to the next closing parenthesis\n\t\t\t\t( excess = unquoted.indexOf( \")\", unquoted.length - excess ) - unquoted.length ) ) {\n\n\t\t\t\t// excess is a negative index\n\t\t\t\tmatch[ 0 ] = match[ 0 ].slice( 0, excess );\n\t\t\t\tmatch[ 2 ] = unquoted.slice( 0, excess );\n\t\t\t}\n\n\t\t\t// Return only captures needed by the pseudo filter method (type and argument)\n\t\t\treturn match.slice( 0, 3 );\n\t\t}\n\t},\n\n\tfilter: {\n\n\t\tTAG: function( nodeNameSelector ) {\n\t\t\tvar expectedNodeName = nodeNameSelector.replace( runescape, funescape ).toLowerCase();\n\t\t\treturn nodeNameSelector === \"*\" ?\n\t\t\t\tfunction() {\n\t\t\t\t\treturn true;\n\t\t\t\t} :\n\t\t\t\tfunction( elem ) {\n\t\t\t\t\treturn nodeName( elem, expectedNodeName );\n\t\t\t\t};\n\t\t},\n\n\t\tCLASS: function( className ) {\n\t\t\tvar pattern = classCache[ className + \" \" ];\n\n\t\t\treturn pattern ||\n\t\t\t\t( pattern = new RegExp( \"(^|\" + whitespace + \")\" + className +\n\t\t\t\t\t\"(\" + whitespace + \"|$)\" ) ) &&\n\t\t\t\tclassCache( className, function( elem ) {\n\t\t\t\t\treturn pattern.test(\n\t\t\t\t\t\ttypeof elem.className === \"string\" && elem.className ||\n\t\t\t\t\t\t\ttypeof elem.getAttribute !== \"undefined\" &&\n\t\t\t\t\t\t\t\telem.getAttribute( \"class\" ) ||\n\t\t\t\t\t\t\t\"\"\n\t\t\t\t\t);\n\t\t\t\t} );\n\t\t},\n\n\t\tATTR: function( name, operator, check ) {\n\t\t\treturn function( elem ) {\n\t\t\t\tvar result = find.attr( elem, name );\n\n\t\t\t\tif ( result == null ) {\n\t\t\t\t\treturn operator === \"!=\";\n\t\t\t\t}\n\t\t\t\tif ( !operator ) {\n\t\t\t\t\treturn true;\n\t\t\t\t}\n\n\t\t\t\tresult += \"\";\n\n\t\t\t\tif ( operator === \"=\" ) {\n\t\t\t\t\treturn result === check;\n\t\t\t\t}\n\t\t\t\tif ( operator === \"!=\" ) {\n\t\t\t\t\treturn result !== check;\n\t\t\t\t}\n\t\t\t\tif ( operator === \"^=\" ) {\n\t\t\t\t\treturn check && result.indexOf( check ) === 0;\n\t\t\t\t}\n\t\t\t\tif ( operator === \"*=\" ) {\n\t\t\t\t\treturn check && result.indexOf( check ) > -1;\n\t\t\t\t}\n\t\t\t\tif ( operator === \"$=\" ) {\n\t\t\t\t\treturn check && result.slice( -check.length ) === check;\n\t\t\t\t}\n\t\t\t\tif ( operator === \"~=\" ) {\n\t\t\t\t\treturn ( \" \" + result.replace( rwhitespace, \" \" ) + \" \" )\n\t\t\t\t\t\t.indexOf( check ) > -1;\n\t\t\t\t}\n\t\t\t\tif ( operator === \"|=\" ) {\n\t\t\t\t\treturn result === check || result.slice( 0, check.length + 1 ) === check + \"-\";\n\t\t\t\t}\n\n\t\t\t\treturn false;\n\t\t\t};\n\t\t},\n\n\t\tCHILD: function( type, what, _argument, first, last ) {\n\t\t\tvar simple = type.slice( 0, 3 ) !== \"nth\",\n\t\t\t\tforward = type.slice( -4 ) !== \"last\",\n\t\t\t\tofType = what === \"of-type\";\n\n\t\t\treturn first === 1 && last === 0 ?\n\n\t\t\t\t// Shortcut for :nth-*(n)\n\t\t\t\tfunction( elem ) {\n\t\t\t\t\treturn !!elem.parentNode;\n\t\t\t\t} :\n\n\t\t\t\tfunction( elem, _context, xml ) {\n\t\t\t\t\tvar cache, outerCache, node, nodeIndex, start,\n\t\t\t\t\t\tdir = simple !== forward ? \"nextSibling\" : \"previousSibling\",\n\t\t\t\t\t\tparent = elem.parentNode,\n\t\t\t\t\t\tname = ofType && elem.nodeName.toLowerCase(),\n\t\t\t\t\t\tuseCache = !xml && !ofType,\n\t\t\t\t\t\tdiff = false;\n\n\t\t\t\t\tif ( parent ) {\n\n\t\t\t\t\t\t// :(first|last|only)-(child|of-type)\n\t\t\t\t\t\tif ( simple ) {\n\t\t\t\t\t\t\twhile ( dir ) {\n\t\t\t\t\t\t\t\tnode = elem;\n\t\t\t\t\t\t\t\twhile ( ( node = node[ dir ] ) ) {\n\t\t\t\t\t\t\t\t\tif ( ofType ?\n\t\t\t\t\t\t\t\t\t\tnodeName( node, name ) :\n\t\t\t\t\t\t\t\t\t\tnode.nodeType === 1 ) {\n\n\t\t\t\t\t\t\t\t\t\treturn false;\n\t\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t\t}\n\n\t\t\t\t\t\t\t\t// Reverse direction for :only-* (if we haven't yet done so)\n\t\t\t\t\t\t\t\tstart = dir = type === \"only\" && !start && \"nextSibling\";\n\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\treturn true;\n\t\t\t\t\t\t}\n\n\t\t\t\t\t\tstart = [ forward ? parent.firstChild : parent.lastChild ];\n\n\t\t\t\t\t\t// non-xml :nth-child(...) stores cache data on `parent`\n\t\t\t\t\t\tif ( forward && useCache ) {\n\n\t\t\t\t\t\t\t// Seek `elem` from a previously-cached index\n\t\t\t\t\t\t\touterCache = parent[ expando ] || ( parent[ expando ] = {} );\n\t\t\t\t\t\t\tcache = outerCache[ type ] || [];\n\t\t\t\t\t\t\tnodeIndex = cache[ 0 ] === dirruns && cache[ 1 ];\n\t\t\t\t\t\t\tdiff = nodeIndex && cache[ 2 ];\n\t\t\t\t\t\t\tnode = nodeIndex && parent.childNodes[ nodeIndex ];\n\n\t\t\t\t\t\t\twhile ( ( node = ++nodeIndex && node && node[ dir ] ||\n\n\t\t\t\t\t\t\t\t// Fallback to seeking `elem` from the start\n\t\t\t\t\t\t\t\t( diff = nodeIndex = 0 ) || start.pop() ) ) {\n\n\t\t\t\t\t\t\t\t// When found, cache indexes on `parent` and break\n\t\t\t\t\t\t\t\tif ( node.nodeType === 1 && ++diff && node === elem ) {\n\t\t\t\t\t\t\t\t\touterCache[ type ] = [ dirruns, nodeIndex, diff ];\n\t\t\t\t\t\t\t\t\tbreak;\n\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t}\n\n\t\t\t\t\t\t} else {\n\n\t\t\t\t\t\t\t// Use previously-cached element index if available\n\t\t\t\t\t\t\tif ( useCache ) {\n\t\t\t\t\t\t\t\touterCache = elem[ expando ] || ( elem[ expando ] = {} );\n\t\t\t\t\t\t\t\tcache = outerCache[ type ] || [];\n\t\t\t\t\t\t\t\tnodeIndex = cache[ 0 ] === dirruns && cache[ 1 ];\n\t\t\t\t\t\t\t\tdiff = nodeIndex;\n\t\t\t\t\t\t\t}\n\n\t\t\t\t\t\t\t// xml :nth-child(...)\n\t\t\t\t\t\t\t// or :nth-last-child(...) or :nth(-last)?-of-type(...)\n\t\t\t\t\t\t\tif ( diff === false ) {\n\n\t\t\t\t\t\t\t\t// Use the same loop as above to seek `elem` from the start\n\t\t\t\t\t\t\t\twhile ( ( node = ++nodeIndex && node && node[ dir ] ||\n\t\t\t\t\t\t\t\t\t( diff = nodeIndex = 0 ) || start.pop() ) ) {\n\n\t\t\t\t\t\t\t\t\tif ( ( ofType ?\n\t\t\t\t\t\t\t\t\t\tnodeName( node, name ) :\n\t\t\t\t\t\t\t\t\t\tnode.nodeType === 1 ) &&\n\t\t\t\t\t\t\t\t\t\t++diff ) {\n\n\t\t\t\t\t\t\t\t\t\t// Cache the index of each encountered element\n\t\t\t\t\t\t\t\t\t\tif ( useCache ) {\n\t\t\t\t\t\t\t\t\t\t\touterCache = node[ expando ] ||\n\t\t\t\t\t\t\t\t\t\t\t\t( node[ expando ] = {} );\n\t\t\t\t\t\t\t\t\t\t\touterCache[ type ] = [ dirruns, diff ];\n\t\t\t\t\t\t\t\t\t\t}\n\n\t\t\t\t\t\t\t\t\t\tif ( node === elem ) {\n\t\t\t\t\t\t\t\t\t\t\tbreak;\n\t\t\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t}\n\t\t\t\t\t\t}\n\n\t\t\t\t\t\t// Incorporate the offset, then check against cycle size\n\t\t\t\t\t\tdiff -= last;\n\t\t\t\t\t\treturn diff === first || ( diff % first === 0 && diff / first >= 0 );\n\t\t\t\t\t}\n\t\t\t\t};\n\t\t},\n\n\t\tPSEUDO: function( pseudo, argument ) {\n\n\t\t\t// pseudo-class names are case-insensitive\n\t\t\t// https://www.w3.org/TR/selectors/#pseudo-classes\n\t\t\t// Prioritize by case sensitivity in case custom pseudos are added with uppercase letters\n\t\t\t// Remember that setFilters inherits from pseudos\n\t\t\tvar args,\n\t\t\t\tfn = Expr.pseudos[ pseudo ] || Expr.setFilters[ pseudo.toLowerCase() ] ||\n\t\t\t\t\tfind.error( \"unsupported pseudo: \" + pseudo );\n\n\t\t\t// The user may use createPseudo to indicate that\n\t\t\t// arguments are needed to create the filter function\n\t\t\t// just as jQuery does\n\t\t\tif ( fn[ expando ] ) {\n\t\t\t\treturn fn( argument );\n\t\t\t}\n\n\t\t\t// But maintain support for old signatures\n\t\t\tif ( fn.length > 1 ) {\n\t\t\t\targs = [ pseudo, pseudo, \"\", argument ];\n\t\t\t\treturn Expr.setFilters.hasOwnProperty( pseudo.toLowerCase() ) ?\n\t\t\t\t\tmarkFunction( function( seed, matches ) {\n\t\t\t\t\t\tvar idx,\n\t\t\t\t\t\t\tmatched = fn( seed, argument ),\n\t\t\t\t\t\t\ti = matched.length;\n\t\t\t\t\t\twhile ( i-- ) {\n\t\t\t\t\t\t\tidx = indexOf.call( seed, matched[ i ] );\n\t\t\t\t\t\t\tseed[ idx ] = !( matches[ idx ] = matched[ i ] );\n\t\t\t\t\t\t}\n\t\t\t\t\t} ) :\n\t\t\t\t\tfunction( elem ) {\n\t\t\t\t\t\treturn fn( elem, 0, args );\n\t\t\t\t\t};\n\t\t\t}\n\n\t\t\treturn fn;\n\t\t}\n\t},\n\n\tpseudos: {\n\n\t\t// Potentially complex pseudos\n\t\tnot: markFunction( function( selector ) {\n\n\t\t\t// Trim the selector passed to compile\n\t\t\t// to avoid treating leading and trailing\n\t\t\t// spaces as combinators\n\t\t\tvar input = [],\n\t\t\t\tresults = [],\n\t\t\t\tmatcher = compile( selector.replace( rtrimCSS, \"$1\" ) );\n\n\t\t\treturn matcher[ expando ] ?\n\t\t\t\tmarkFunction( function( seed, matches, _context, xml ) {\n\t\t\t\t\tvar elem,\n\t\t\t\t\t\tunmatched = matcher( seed, null, xml, [] ),\n\t\t\t\t\t\ti = seed.length;\n\n\t\t\t\t\t// Match elements unmatched by `matcher`\n\t\t\t\t\twhile ( i-- ) {\n\t\t\t\t\t\tif ( ( elem = unmatched[ i ] ) ) {\n\t\t\t\t\t\t\tseed[ i ] = !( matches[ i ] = elem );\n\t\t\t\t\t\t}\n\t\t\t\t\t}\n\t\t\t\t} ) :\n\t\t\t\tfunction( elem, _context, xml ) {\n\t\t\t\t\tinput[ 0 ] = elem;\n\t\t\t\t\tmatcher( input, null, xml, results );\n\n\t\t\t\t\t// Don't keep the element\n\t\t\t\t\t// (see https://github.com/jquery/sizzle/issues/299)\n\t\t\t\t\tinput[ 0 ] = null;\n\t\t\t\t\treturn !results.pop();\n\t\t\t\t};\n\t\t} ),\n\n\t\thas: markFunction( function( selector ) {\n\t\t\treturn function( elem ) {\n\t\t\t\treturn find( selector, elem ).length > 0;\n\t\t\t};\n\t\t} ),\n\n\t\tcontains: markFunction( function( text ) {\n\t\t\ttext = text.replace( runescape, funescape );\n\t\t\treturn function( elem ) {\n\t\t\t\treturn ( elem.textContent || jQuery.text( elem ) ).indexOf( text ) > -1;\n\t\t\t};\n\t\t} ),\n\n\t\t// \"Whether an element is represented by a :lang() selector\n\t\t// is based solely on the element's language value\n\t\t// being equal to the identifier C,\n\t\t// or beginning with the identifier C immediately followed by \"-\".\n\t\t// The matching of C against the element's language value is performed case-insensitively.\n\t\t// The identifier C does not have to be a valid language name.\"\n\t\t// https://www.w3.org/TR/selectors/#lang-pseudo\n\t\tlang: markFunction( function( lang ) {\n\n\t\t\t// lang value must be a valid identifier\n\t\t\tif ( !ridentifier.test( lang || \"\" ) ) {\n\t\t\t\tfind.error( \"unsupported lang: \" + lang );\n\t\t\t}\n\t\t\tlang = lang.replace( runescape, funescape ).toLowerCase();\n\t\t\treturn function( elem ) {\n\t\t\t\tvar elemLang;\n\t\t\t\tdo {\n\t\t\t\t\tif ( ( elemLang = documentIsHTML ?\n\t\t\t\t\t\telem.lang :\n\t\t\t\t\t\telem.getAttribute( \"xml:lang\" ) || elem.getAttribute( \"lang\" ) ) ) {\n\n\t\t\t\t\t\telemLang = elemLang.toLowerCase();\n\t\t\t\t\t\treturn elemLang === lang || elemLang.indexOf( lang + \"-\" ) === 0;\n\t\t\t\t\t}\n\t\t\t\t} while ( ( elem = elem.parentNode ) && elem.nodeType === 1 );\n\t\t\t\treturn false;\n\t\t\t};\n\t\t} ),\n\n\t\t// Miscellaneous\n\t\ttarget: function( elem ) {\n\t\t\tvar hash = window.location && window.location.hash;\n\t\t\treturn hash && hash.slice( 1 ) === elem.id;\n\t\t},\n\n\t\troot: function( elem ) {\n\t\t\treturn elem === documentElement;\n\t\t},\n\n\t\tfocus: function( elem ) {\n\t\t\treturn elem === safeActiveElement() &&\n\t\t\t\tdocument.hasFocus() &&\n\t\t\t\t!!( elem.type || elem.href || ~elem.tabIndex );\n\t\t},\n\n\t\t// Boolean properties\n\t\tenabled: createDisabledPseudo( false ),\n\t\tdisabled: createDisabledPseudo( true ),\n\n\t\tchecked: function( elem ) {\n\n\t\t\t// In CSS3, :checked should return both checked and selected elements\n\t\t\t// https://www.w3.org/TR/2011/REC-css3-selectors-20110929/#checked\n\t\t\treturn ( nodeName( elem, \"input\" ) && !!elem.checked ) ||\n\t\t\t\t( nodeName( elem, \"option\" ) && !!elem.selected );\n\t\t},\n\n\t\tselected: function( elem ) {\n\n\t\t\t// Support: IE <=11+\n\t\t\t// Accessing the selectedIndex property\n\t\t\t// forces the browser to treat the default option as\n\t\t\t// selected when in an optgroup.\n\t\t\tif ( elem.parentNode ) {\n\t\t\t\t// eslint-disable-next-line no-unused-expressions\n\t\t\t\telem.parentNode.selectedIndex;\n\t\t\t}\n\n\t\t\treturn elem.selected === true;\n\t\t},\n\n\t\t// Contents\n\t\tempty: function( elem ) {\n\n\t\t\t// https://www.w3.org/TR/selectors/#empty-pseudo\n\t\t\t// :empty is negated by element (1) or content nodes (text: 3; cdata: 4; entity ref: 5),\n\t\t\t// but not by others (comment: 8; processing instruction: 7; etc.)\n\t\t\t// nodeType < 6 works because attributes (2) do not appear as children\n\t\t\tfor ( elem = elem.firstChild; elem; elem = elem.nextSibling ) {\n\t\t\t\tif ( elem.nodeType < 6 ) {\n\t\t\t\t\treturn false;\n\t\t\t\t}\n\t\t\t}\n\t\t\treturn true;\n\t\t},\n\n\t\tparent: function( elem ) {\n\t\t\treturn !Expr.pseudos.empty( elem );\n\t\t},\n\n\t\t// Element/input types\n\t\theader: function( elem ) {\n\t\t\treturn rheader.test( elem.nodeName );\n\t\t},\n\n\t\tinput: function( elem ) {\n\t\t\treturn rinputs.test( elem.nodeName );\n\t\t},\n\n\t\tbutton: function( elem ) {\n\t\t\treturn nodeName( elem, \"input\" ) && elem.type === \"button\" ||\n\t\t\t\tnodeName( elem, \"button\" );\n\t\t},\n\n\t\ttext: function( elem ) {\n\t\t\tvar attr;\n\t\t\treturn nodeName( elem, \"input\" ) && elem.type === \"text\" &&\n\n\t\t\t\t// Support: IE <10 only\n\t\t\t\t// New HTML5 attribute values (e.g., \"search\") appear\n\t\t\t\t// with elem.type === \"text\"\n\t\t\t\t( ( attr = elem.getAttribute( \"type\" ) ) == null ||\n\t\t\t\t\tattr.toLowerCase() === \"text\" );\n\t\t},\n\n\t\t// Position-in-collection\n\t\tfirst: createPositionalPseudo( function() {\n\t\t\treturn [ 0 ];\n\t\t} ),\n\n\t\tlast: createPositionalPseudo( function( _matchIndexes, length ) {\n\t\t\treturn [ length - 1 ];\n\t\t} ),\n\n\t\teq: createPositionalPseudo( function( _matchIndexes, length, argument ) {\n\t\t\treturn [ argument < 0 ? argument + length : argument ];\n\t\t} ),\n\n\t\teven: createPositionalPseudo( function( matchIndexes, length ) {\n\t\t\tvar i = 0;\n\t\t\tfor ( ; i < length; i += 2 ) {\n\t\t\t\tmatchIndexes.push( i );\n\t\t\t}\n\t\t\treturn matchIndexes;\n\t\t} ),\n\n\t\todd: createPositionalPseudo( function( matchIndexes, length ) {\n\t\t\tvar i = 1;\n\t\t\tfor ( ; i < length; i += 2 ) {\n\t\t\t\tmatchIndexes.push( i );\n\t\t\t}\n\t\t\treturn matchIndexes;\n\t\t} ),\n\n\t\tlt: createPositionalPseudo( function( matchIndexes, length, argument ) {\n\t\t\tvar i;\n\n\t\t\tif ( argument < 0 ) {\n\t\t\t\ti = argument + length;\n\t\t\t} else if ( argument > length ) {\n\t\t\t\ti = length;\n\t\t\t} else {\n\t\t\t\ti = argument;\n\t\t\t}\n\n\t\t\tfor ( ; --i >= 0; ) {\n\t\t\t\tmatchIndexes.push( i );\n\t\t\t}\n\t\t\treturn matchIndexes;\n\t\t} ),\n\n\t\tgt: createPositionalPseudo( function( matchIndexes, length, argument ) {\n\t\t\tvar i = argument < 0 ? argument + length : argument;\n\t\t\tfor ( ; ++i < length; ) {\n\t\t\t\tmatchIndexes.push( i );\n\t\t\t}\n\t\t\treturn matchIndexes;\n\t\t} )\n\t}\n};\n\nExpr.pseudos.nth = Expr.pseudos.eq;\n\n// Add button/input type pseudos\nfor ( i in { radio: true, checkbox: true, file: true, password: true, image: true } ) {\n\tExpr.pseudos[ i ] = createInputPseudo( i );\n}\nfor ( i in { submit: true, reset: true } ) {\n\tExpr.pseudos[ i ] = createButtonPseudo( i );\n}\n\n// Easy API for creating new setFilters\nfunction setFilters() {}\nsetFilters.prototype = Expr.filters = Expr.pseudos;\nExpr.setFilters = new setFilters();\n\nfunction tokenize( selector, parseOnly ) {\n\tvar matched, match, tokens, type,\n\t\tsoFar, groups, preFilters,\n\t\tcached = tokenCache[ selector + \" \" ];\n\n\tif ( cached ) {\n\t\treturn parseOnly ? 0 : cached.slice( 0 );\n\t}\n\n\tsoFar = selector;\n\tgroups = [];\n\tpreFilters = Expr.preFilter;\n\n\twhile ( soFar ) {\n\n\t\t// Comma and first run\n\t\tif ( !matched || ( match = rcomma.exec( soFar ) ) ) {\n\t\t\tif ( match ) {\n\n\t\t\t\t// Don't consume trailing commas as valid\n\t\t\t\tsoFar = soFar.slice( match[ 0 ].length ) || soFar;\n\t\t\t}\n\t\t\tgroups.push( ( tokens = [] ) );\n\t\t}\n\n\t\tmatched = false;\n\n\t\t// Combinators\n\t\tif ( ( match = rleadingCombinator.exec( soFar ) ) ) {\n\t\t\tmatched = match.shift();\n\t\t\ttokens.push( {\n\t\t\t\tvalue: matched,\n\n\t\t\t\t// Cast descendant combinators to space\n\t\t\t\ttype: match[ 0 ].replace( rtrimCSS, \" \" )\n\t\t\t} );\n\t\t\tsoFar = soFar.slice( matched.length );\n\t\t}\n\n\t\t// Filters\n\t\tfor ( type in Expr.filter ) {\n\t\t\tif ( ( match = matchExpr[ type ].exec( soFar ) ) && ( !preFilters[ type ] ||\n\t\t\t\t( match = preFilters[ type ]( match ) ) ) ) {\n\t\t\t\tmatched = match.shift();\n\t\t\t\ttokens.push( {\n\t\t\t\t\tvalue: matched,\n\t\t\t\t\ttype: type,\n\t\t\t\t\tmatches: match\n\t\t\t\t} );\n\t\t\t\tsoFar = soFar.slice( matched.length );\n\t\t\t}\n\t\t}\n\n\t\tif ( !matched ) {\n\t\t\tbreak;\n\t\t}\n\t}\n\n\t// Return the length of the invalid excess\n\t// if we're just parsing\n\t// Otherwise, throw an error or return tokens\n\tif ( parseOnly ) {\n\t\treturn soFar.length;\n\t}\n\n\treturn soFar ?\n\t\tfind.error( selector ) :\n\n\t\t// Cache the tokens\n\t\ttokenCache( selector, groups ).slice( 0 );\n}\n\nfunction toSelector( tokens ) {\n\tvar i = 0,\n\t\tlen = tokens.length,\n\t\tselector = \"\";\n\tfor ( ; i < len; i++ ) {\n\t\tselector += tokens[ i ].value;\n\t}\n\treturn selector;\n}\n\nfunction addCombinator( matcher, combinator, base ) {\n\tvar dir = combinator.dir,\n\t\tskip = combinator.next,\n\t\tkey = skip || dir,\n\t\tcheckNonElements = base && key === \"parentNode\",\n\t\tdoneName = done++;\n\n\treturn combinator.first ?\n\n\t\t// Check against closest ancestor/preceding element\n\t\tfunction( elem, context, xml ) {\n\t\t\twhile ( ( elem = elem[ dir ] ) ) {\n\t\t\t\tif ( elem.nodeType === 1 || checkNonElements ) {\n\t\t\t\t\treturn matcher( elem, context, xml );\n\t\t\t\t}\n\t\t\t}\n\t\t\treturn false;\n\t\t} :\n\n\t\t// Check against all ancestor/preceding elements\n\t\tfunction( elem, context, xml ) {\n\t\t\tvar oldCache, outerCache,\n\t\t\t\tnewCache = [ dirruns, doneName ];\n\n\t\t\t// We can't set arbitrary data on XML nodes, so they don't benefit from combinator caching\n\t\t\tif ( xml ) {\n\t\t\t\twhile ( ( elem = elem[ dir ] ) ) {\n\t\t\t\t\tif ( elem.nodeType === 1 || checkNonElements ) {\n\t\t\t\t\t\tif ( matcher( elem, context, xml ) ) {\n\t\t\t\t\t\t\treturn true;\n\t\t\t\t\t\t}\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t} else {\n\t\t\t\twhile ( ( elem = elem[ dir ] ) ) {\n\t\t\t\t\tif ( elem.nodeType === 1 || checkNonElements ) {\n\t\t\t\t\t\touterCache = elem[ expando ] || ( elem[ expando ] = {} );\n\n\t\t\t\t\t\tif ( skip && nodeName( elem, skip ) ) {\n\t\t\t\t\t\t\telem = elem[ dir ] || elem;\n\t\t\t\t\t\t} else if ( ( oldCache = outerCache[ key ] ) &&\n\t\t\t\t\t\t\toldCache[ 0 ] === dirruns && oldCache[ 1 ] === doneName ) {\n\n\t\t\t\t\t\t\t// Assign to newCache so results back-propagate to previous elements\n\t\t\t\t\t\t\treturn ( newCache[ 2 ] = oldCache[ 2 ] );\n\t\t\t\t\t\t} else {\n\n\t\t\t\t\t\t\t// Reuse newcache so results back-propagate to previous elements\n\t\t\t\t\t\t\touterCache[ key ] = newCache;\n\n\t\t\t\t\t\t\t// A match means we're done; a fail means we have to keep checking\n\t\t\t\t\t\t\tif ( ( newCache[ 2 ] = matcher( elem, context, xml ) ) ) {\n\t\t\t\t\t\t\t\treturn true;\n\t\t\t\t\t\t\t}\n\t\t\t\t\t\t}\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t}\n\t\t\treturn false;\n\t\t};\n}\n\nfunction elementMatcher( matchers ) {\n\treturn matchers.length > 1 ?\n\t\tfunction( elem, context, xml ) {\n\t\t\tvar i = matchers.length;\n\t\t\twhile ( i-- ) {\n\t\t\t\tif ( !matchers[ i ]( elem, context, xml ) ) {\n\t\t\t\t\treturn false;\n\t\t\t\t}\n\t\t\t}\n\t\t\treturn true;\n\t\t} :\n\t\tmatchers[ 0 ];\n}\n\nfunction multipleContexts( selector, contexts, results ) {\n\tvar i = 0,\n\t\tlen = contexts.length;\n\tfor ( ; i < len; i++ ) {\n\t\tfind( selector, contexts[ i ], results );\n\t}\n\treturn results;\n}\n\nfunction condense( unmatched, map, filter, context, xml ) {\n\tvar elem,\n\t\tnewUnmatched = [],\n\t\ti = 0,\n\t\tlen = unmatched.length,\n\t\tmapped = map != null;\n\n\tfor ( ; i < len; i++ ) {\n\t\tif ( ( elem = unmatched[ i ] ) ) {\n\t\t\tif ( !filter || filter( elem, context, xml ) ) {\n\t\t\t\tnewUnmatched.push( elem );\n\t\t\t\tif ( mapped ) {\n\t\t\t\t\tmap.push( i );\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\t}\n\n\treturn newUnmatched;\n}\n\nfunction setMatcher( preFilter, selector, matcher, postFilter, postFinder, postSelector ) {\n\tif ( postFilter && !postFilter[ expando ] ) {\n\t\tpostFilter = setMatcher( postFilter );\n\t}\n\tif ( postFinder && !postFinder[ expando ] ) {\n\t\tpostFinder = setMatcher( postFinder, postSelector );\n\t}\n\treturn markFunction( function( seed, results, context, xml ) {\n\t\tvar temp, i, elem, matcherOut,\n\t\t\tpreMap = [],\n\t\t\tpostMap = [],\n\t\t\tpreexisting = results.length,\n\n\t\t\t// Get initial elements from seed or context\n\t\t\telems = seed ||\n\t\t\t\tmultipleContexts( selector || \"*\",\n\t\t\t\t\tcontext.nodeType ? [ context ] : context, [] ),\n\n\t\t\t// Prefilter to get matcher input, preserving a map for seed-results synchronization\n\t\t\tmatcherIn = preFilter && ( seed || !selector ) ?\n\t\t\t\tcondense( elems, preMap, preFilter, context, xml ) :\n\t\t\t\telems;\n\n\t\tif ( matcher ) {\n\n\t\t\t// If we have a postFinder, or filtered seed, or non-seed postFilter\n\t\t\t// or preexisting results,\n\t\t\tmatcherOut = postFinder || ( seed ? preFilter : preexisting || postFilter ) ?\n\n\t\t\t\t// ...intermediate processing is necessary\n\t\t\t\t[] :\n\n\t\t\t\t// ...otherwise use results directly\n\t\t\t\tresults;\n\n\t\t\t// Find primary matches\n\t\t\tmatcher( matcherIn, matcherOut, context, xml );\n\t\t} else {\n\t\t\tmatcherOut = matcherIn;\n\t\t}\n\n\t\t// Apply postFilter\n\t\tif ( postFilter ) {\n\t\t\ttemp = condense( matcherOut, postMap );\n\t\t\tpostFilter( temp, [], context, xml );\n\n\t\t\t// Un-match failing elements by moving them back to matcherIn\n\t\t\ti = temp.length;\n\t\t\twhile ( i-- ) {\n\t\t\t\tif ( ( elem = temp[ i ] ) ) {\n\t\t\t\t\tmatcherOut[ postMap[ i ] ] = !( matcherIn[ postMap[ i ] ] = elem );\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\n\t\tif ( seed ) {\n\t\t\tif ( postFinder || preFilter ) {\n\t\t\t\tif ( postFinder ) {\n\n\t\t\t\t\t// Get the final matcherOut by condensing this intermediate into postFinder contexts\n\t\t\t\t\ttemp = [];\n\t\t\t\t\ti = matcherOut.length;\n\t\t\t\t\twhile ( i-- ) {\n\t\t\t\t\t\tif ( ( elem = matcherOut[ i ] ) ) {\n\n\t\t\t\t\t\t\t// Restore matcherIn since elem is not yet a final match\n\t\t\t\t\t\t\ttemp.push( ( matcherIn[ i ] = elem ) );\n\t\t\t\t\t\t}\n\t\t\t\t\t}\n\t\t\t\t\tpostFinder( null, ( matcherOut = [] ), temp, xml );\n\t\t\t\t}\n\n\t\t\t\t// Move matched elements from seed to results to keep them synchronized\n\t\t\t\ti = matcherOut.length;\n\t\t\t\twhile ( i-- ) {\n\t\t\t\t\tif ( ( elem = matcherOut[ i ] ) &&\n\t\t\t\t\t\t( temp = postFinder ? indexOf.call( seed, elem ) : preMap[ i ] ) > -1 ) {\n\n\t\t\t\t\t\tseed[ temp ] = !( results[ temp ] = elem );\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t}\n\n\t\t// Add elements to results, through postFinder if defined\n\t\t} else {\n\t\t\tmatcherOut = condense(\n\t\t\t\tmatcherOut === results ?\n\t\t\t\t\tmatcherOut.splice( preexisting, matcherOut.length ) :\n\t\t\t\t\tmatcherOut\n\t\t\t);\n\t\t\tif ( postFinder ) {\n\t\t\t\tpostFinder( null, results, matcherOut, xml );\n\t\t\t} else {\n\t\t\t\tpush.apply( results, matcherOut );\n\t\t\t}\n\t\t}\n\t} );\n}\n\nfunction matcherFromTokens( tokens ) {\n\tvar checkContext, matcher, j,\n\t\tlen = tokens.length,\n\t\tleadingRelative = Expr.relative[ tokens[ 0 ].type ],\n\t\timplicitRelative = leadingRelative || Expr.relative[ \" \" ],\n\t\ti = leadingRelative ? 1 : 0,\n\n\t\t// The foundational matcher ensures that elements are reachable from top-level context(s)\n\t\tmatchContext = addCombinator( function( elem ) {\n\t\t\treturn elem === checkContext;\n\t\t}, implicitRelative, true ),\n\t\tmatchAnyContext = addCombinator( function( elem ) {\n\t\t\treturn indexOf.call( checkContext, elem ) > -1;\n\t\t}, implicitRelative, true ),\n\t\tmatchers = [ function( elem, context, xml ) {\n\n\t\t\t// Support: IE 11+, Edge 17 - 18+\n\t\t\t// IE/Edge sometimes throw a \"Permission denied\" error when strict-comparing\n\t\t\t// two documents; shallow comparisons work.\n\t\t\t// eslint-disable-next-line eqeqeq\n\t\t\tvar ret = ( !leadingRelative && ( xml || context != outermostContext ) ) || (\n\t\t\t\t( checkContext = context ).nodeType ?\n\t\t\t\t\tmatchContext( elem, context, xml ) :\n\t\t\t\t\tmatchAnyContext( elem, context, xml ) );\n\n\t\t\t// Avoid hanging onto element\n\t\t\t// (see https://github.com/jquery/sizzle/issues/299)\n\t\t\tcheckContext = null;\n\t\t\treturn ret;\n\t\t} ];\n\n\tfor ( ; i < len; i++ ) {\n\t\tif ( ( matcher = Expr.relative[ tokens[ i ].type ] ) ) {\n\t\t\tmatchers = [ addCombinator( elementMatcher( matchers ), matcher ) ];\n\t\t} else {\n\t\t\tmatcher = Expr.filter[ tokens[ i ].type ].apply( null, tokens[ i ].matches );\n\n\t\t\t// Return special upon seeing a positional matcher\n\t\t\tif ( matcher[ expando ] ) {\n\n\t\t\t\t// Find the next relative operator (if any) for proper handling\n\t\t\t\tj = ++i;\n\t\t\t\tfor ( ; j < len; j++ ) {\n\t\t\t\t\tif ( Expr.relative[ tokens[ j ].type ] ) {\n\t\t\t\t\t\tbreak;\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t\treturn setMatcher(\n\t\t\t\t\ti > 1 && elementMatcher( matchers ),\n\t\t\t\t\ti > 1 && toSelector(\n\n\t\t\t\t\t\t// If the preceding token was a descendant combinator, insert an implicit any-element `*`\n\t\t\t\t\t\ttokens.slice( 0, i - 1 )\n\t\t\t\t\t\t\t.concat( { value: tokens[ i - 2 ].type === \" \" ? \"*\" : \"\" } )\n\t\t\t\t\t).replace( rtrimCSS, \"$1\" ),\n\t\t\t\t\tmatcher,\n\t\t\t\t\ti < j && matcherFromTokens( tokens.slice( i, j ) ),\n\t\t\t\t\tj < len && matcherFromTokens( ( tokens = tokens.slice( j ) ) ),\n\t\t\t\t\tj < len && toSelector( tokens )\n\t\t\t\t);\n\t\t\t}\n\t\t\tmatchers.push( matcher );\n\t\t}\n\t}\n\n\treturn elementMatcher( matchers );\n}\n\nfunction matcherFromGroupMatchers( elementMatchers, setMatchers ) {\n\tvar bySet = setMatchers.length > 0,\n\t\tbyElement = elementMatchers.length > 0,\n\t\tsuperMatcher = function( seed, context, xml, results, outermost ) {\n\t\t\tvar elem, j, matcher,\n\t\t\t\tmatchedCount = 0,\n\t\t\t\ti = \"0\",\n\t\t\t\tunmatched = seed && [],\n\t\t\t\tsetMatched = [],\n\t\t\t\tcontextBackup = outermostContext,\n\n\t\t\t\t// We must always have either seed elements or outermost context\n\t\t\t\telems = seed || byElement && Expr.find.TAG( \"*\", outermost ),\n\n\t\t\t\t// Use integer dirruns iff this is the outermost matcher\n\t\t\t\tdirrunsUnique = ( dirruns += contextBackup == null ? 1 : Math.random() || 0.1 ),\n\t\t\t\tlen = elems.length;\n\n\t\t\tif ( outermost ) {\n\n\t\t\t\t// Support: IE 11+, Edge 17 - 18+\n\t\t\t\t// IE/Edge sometimes throw a \"Permission denied\" error when strict-comparing\n\t\t\t\t// two documents; shallow comparisons work.\n\t\t\t\t// eslint-disable-next-line eqeqeq\n\t\t\t\toutermostContext = context == document || context || outermost;\n\t\t\t}\n\n\t\t\t// Add elements passing elementMatchers directly to results\n\t\t\t// Support: iOS <=7 - 9 only\n\t\t\t// Tolerate NodeList properties (IE: \"length\"; Safari: <number>) matching\n\t\t\t// elements by id. (see trac-14142)\n\t\t\tfor ( ; i !== len && ( elem = elems[ i ] ) != null; i++ ) {\n\t\t\t\tif ( byElement && elem ) {\n\t\t\t\t\tj = 0;\n\n\t\t\t\t\t// Support: IE 11+, Edge 17 - 18+\n\t\t\t\t\t// IE/Edge sometimes throw a \"Permission denied\" error when strict-comparing\n\t\t\t\t\t// two documents; shallow comparisons work.\n\t\t\t\t\t// eslint-disable-next-line eqeqeq\n\t\t\t\t\tif ( !context && elem.ownerDocument != document ) {\n\t\t\t\t\t\tsetDocument( elem );\n\t\t\t\t\t\txml = !documentIsHTML;\n\t\t\t\t\t}\n\t\t\t\t\twhile ( ( matcher = elementMatchers[ j++ ] ) ) {\n\t\t\t\t\t\tif ( matcher( elem, context || document, xml ) ) {\n\t\t\t\t\t\t\tpush.call( results, elem );\n\t\t\t\t\t\t\tbreak;\n\t\t\t\t\t\t}\n\t\t\t\t\t}\n\t\t\t\t\tif ( outermost ) {\n\t\t\t\t\t\tdirruns = dirrunsUnique;\n\t\t\t\t\t}\n\t\t\t\t}\n\n\t\t\t\t// Track unmatched elements for set filters\n\t\t\t\tif ( bySet ) {\n\n\t\t\t\t\t// They will have gone through all possible matchers\n\t\t\t\t\tif ( ( elem = !matcher && elem ) ) {\n\t\t\t\t\t\tmatchedCount--;\n\t\t\t\t\t}\n\n\t\t\t\t\t// Lengthen the array for every element, matched or not\n\t\t\t\t\tif ( seed ) {\n\t\t\t\t\t\tunmatched.push( elem );\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t}\n\n\t\t\t// `i` is now the count of elements visited above, and adding it to `matchedCount`\n\t\t\t// makes the latter nonnegative.\n\t\t\tmatchedCount += i;\n\n\t\t\t// Apply set filters to unmatched elements\n\t\t\t// NOTE: This can be skipped if there are no unmatched elements (i.e., `matchedCount`\n\t\t\t// equals `i`), unless we didn't visit _any_ elements in the above loop because we have\n\t\t\t// no element matchers and no seed.\n\t\t\t// Incrementing an initially-string \"0\" `i` allows `i` to remain a string only in that\n\t\t\t// case, which will result in a \"00\" `matchedCount` that differs from `i` but is also\n\t\t\t// numerically zero.\n\t\t\tif ( bySet && i !== matchedCount ) {\n\t\t\t\tj = 0;\n\t\t\t\twhile ( ( matcher = setMatchers[ j++ ] ) ) {\n\t\t\t\t\tmatcher( unmatched, setMatched, context, xml );\n\t\t\t\t}\n\n\t\t\t\tif ( seed ) {\n\n\t\t\t\t\t// Reintegrate element matches to eliminate the need for sorting\n\t\t\t\t\tif ( matchedCount > 0 ) {\n\t\t\t\t\t\twhile ( i-- ) {\n\t\t\t\t\t\t\tif ( !( unmatched[ i ] || setMatched[ i ] ) ) {\n\t\t\t\t\t\t\t\tsetMatched[ i ] = pop.call( results );\n\t\t\t\t\t\t\t}\n\t\t\t\t\t\t}\n\t\t\t\t\t}\n\n\t\t\t\t\t// Discard index placeholder values to get only actual matches\n\t\t\t\t\tsetMatched = condense( setMatched );\n\t\t\t\t}\n\n\t\t\t\t// Add matches to results\n\t\t\t\tpush.apply( results, setMatched );\n\n\t\t\t\t// Seedless set matches succeeding multiple successful matchers stipulate sorting\n\t\t\t\tif ( outermost && !seed && setMatched.length > 0 &&\n\t\t\t\t\t( matchedCount + setMatchers.length ) > 1 ) {\n\n\t\t\t\t\tjQuery.uniqueSort( results );\n\t\t\t\t}\n\t\t\t}\n\n\t\t\t// Override manipulation of globals by nested matchers\n\t\t\tif ( outermost ) {\n\t\t\t\tdirruns = dirrunsUnique;\n\t\t\t\toutermostContext = contextBackup;\n\t\t\t}\n\n\t\t\treturn unmatched;\n\t\t};\n\n\treturn bySet ?\n\t\tmarkFunction( superMatcher ) :\n\t\tsuperMatcher;\n}\n\nfunction compile( selector, match /* Internal Use Only */ ) {\n\tvar i,\n\t\tsetMatchers = [],\n\t\telementMatchers = [],\n\t\tcached = compilerCache[ selector + \" \" ];\n\n\tif ( !cached ) {\n\n\t\t// Generate a function of recursive functions that can be used to check each element\n\t\tif ( !match ) {\n\t\t\tmatch = tokenize( selector );\n\t\t}\n\t\ti = match.length;\n\t\twhile ( i-- ) {\n\t\t\tcached = matcherFromTokens( match[ i ] );\n\t\t\tif ( cached[ expando ] ) {\n\t\t\t\tsetMatchers.push( cached );\n\t\t\t} else {\n\t\t\t\telementMatchers.push( cached );\n\t\t\t}\n\t\t}\n\n\t\t// Cache the compiled function\n\t\tcached = compilerCache( selector,\n\t\t\tmatcherFromGroupMatchers( elementMatchers, setMatchers ) );\n\n\t\t// Save selector and tokenization\n\t\tcached.selector = selector;\n\t}\n\treturn cached;\n}\n\n/**\n * A low-level selection function that works with jQuery's compiled\n * selector functions\n * @param {String|Function} selector A selector or a pre-compiled\n * selector function built with jQuery selector compile\n * @param {Element} context\n * @param {Array} [results]\n * @param {Array} [seed] A set of elements to match against\n */\nfunction select( selector, context, results, seed ) {\n\tvar i, tokens, token, type, find,\n\t\tcompiled = typeof selector === \"function\" && selector,\n\t\tmatch = !seed && tokenize( ( selector = compiled.selector || selector ) );\n\n\tresults = results || [];\n\n\t// Try to minimize operations if there is only one selector in the list and no seed\n\t// (the latter of which guarantees us context)\n\tif ( match.length === 1 ) {\n\n\t\t// Reduce context if the leading compound selector is an ID\n\t\ttokens = match[ 0 ] = match[ 0 ].slice( 0 );\n\t\tif ( tokens.length > 2 && ( token = tokens[ 0 ] ).type === \"ID\" &&\n\t\t\t\tcontext.nodeType === 9 && documentIsHTML && Expr.relative[ tokens[ 1 ].type ] ) {\n\n\t\t\tcontext = ( Expr.find.ID(\n\t\t\t\ttoken.matches[ 0 ].replace( runescape, funescape ),\n\t\t\t\tcontext\n\t\t\t) || [] )[ 0 ];\n\t\t\tif ( !context ) {\n\t\t\t\treturn results;\n\n\t\t\t// Precompiled matchers will still verify ancestry, so step up a level\n\t\t\t} else if ( compiled ) {\n\t\t\t\tcontext = context.parentNode;\n\t\t\t}\n\n\t\t\tselector = selector.slice( tokens.shift().value.length );\n\t\t}\n\n\t\t// Fetch a seed set for right-to-left matching\n\t\ti = matchExpr.needsContext.test( selector ) ? 0 : tokens.length;\n\t\twhile ( i-- ) {\n\t\t\ttoken = tokens[ i ];\n\n\t\t\t// Abort if we hit a combinator\n\t\t\tif ( Expr.relative[ ( type = token.type ) ] ) {\n\t\t\t\tbreak;\n\t\t\t}\n\t\t\tif ( ( find = Expr.find[ type ] ) ) {\n\n\t\t\t\t// Search, expanding context for leading sibling combinators\n\t\t\t\tif ( ( seed = find(\n\t\t\t\t\ttoken.matches[ 0 ].replace( runescape, funescape ),\n\t\t\t\t\trsibling.test( tokens[ 0 ].type ) &&\n\t\t\t\t\t\ttestContext( context.parentNode ) || context\n\t\t\t\t) ) ) {\n\n\t\t\t\t\t// If seed is empty or no tokens remain, we can return early\n\t\t\t\t\ttokens.splice( i, 1 );\n\t\t\t\t\tselector = seed.length && toSelector( tokens );\n\t\t\t\t\tif ( !selector ) {\n\t\t\t\t\t\tpush.apply( results, seed );\n\t\t\t\t\t\treturn results;\n\t\t\t\t\t}\n\n\t\t\t\t\tbreak;\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\t}\n\n\t// Compile and execute a filtering function if one is not provided\n\t// Provide `match` to avoid retokenization if we modified the selector above\n\t( compiled || compile( selector, match ) )(\n\t\tseed,\n\t\tcontext,\n\t\t!documentIsHTML,\n\t\tresults,\n\t\t!context || rsibling.test( selector ) && testContext( context.parentNode ) || context\n\t);\n\treturn results;\n}\n\n// One-time assignments\n\n// Support: Android <=4.0 - 4.1+\n// Sort stability\nsupport.sortStable = expando.split( \"\" ).sort( sortOrder ).join( \"\" ) === expando;\n\n// Initialize against the default document\nsetDocument();\n\n// Support: Android <=4.0 - 4.1+\n// Detached nodes confoundingly follow *each other*\nsupport.sortDetached = assert( function( el ) {\n\n\t// Should return 1, but returns 4 (following)\n\treturn el.compareDocumentPosition( document.createElement( \"fieldset\" ) ) & 1;\n} );\n\njQuery.find = find;\n\n// Deprecated\njQuery.expr[ \":\" ] = jQuery.expr.pseudos;\njQuery.unique = jQuery.uniqueSort;\n\n// These have always been private, but they used to be documented as part of\n// Sizzle so let's maintain them for now for backwards compatibility purposes.\nfind.compile = compile;\nfind.select = select;\nfind.setDocument = setDocument;\nfind.tokenize = tokenize;\n\nfind.escape = jQuery.escapeSelector;\nfind.getText = jQuery.text;\nfind.isXML = jQuery.isXMLDoc;\nfind.selectors = jQuery.expr;\nfind.support = jQuery.support;\nfind.uniqueSort = jQuery.uniqueSort;\n\n\t/* eslint-enable */\n\n} )();\n\n\nvar dir = function( elem, dir, until ) {\n\tvar matched = [],\n\t\ttruncate = until !== undefined;\n\n\twhile ( ( elem = elem[ dir ] ) && elem.nodeType !== 9 ) {\n\t\tif ( elem.nodeType === 1 ) {\n\t\t\tif ( truncate && jQuery( elem ).is( until ) ) {\n\t\t\t\tbreak;\n\t\t\t}\n\t\t\tmatched.push( elem );\n\t\t}\n\t}\n\treturn matched;\n};\n\n\nvar siblings = function( n, elem ) {\n\tvar matched = [];\n\n\tfor ( ; n; n = n.nextSibling ) {\n\t\tif ( n.nodeType === 1 && n !== elem ) {\n\t\t\tmatched.push( n );\n\t\t}\n\t}\n\n\treturn matched;\n};\n\n\nvar rneedsContext = jQuery.expr.match.needsContext;\n\nvar rsingleTag = ( /^<([a-z][^\\/\\0>:\\x20\\t\\r\\n\\f]*)[\\x20\\t\\r\\n\\f]*\\/?>(?:<\\/\\1>|)$/i );\n\n\n\n// Implement the identical functionality for filter and not\nfunction winnow( elements, qualifier, not ) {\n\tif ( isFunction( qualifier ) ) {\n\t\treturn jQuery.grep( elements, function( elem, i ) {\n\t\t\treturn !!qualifier.call( elem, i, elem ) !== not;\n\t\t} );\n\t}\n\n\t// Single element\n\tif ( qualifier.nodeType ) {\n\t\treturn jQuery.grep( elements, function( elem ) {\n\t\t\treturn ( elem === qualifier ) !== not;\n\t\t} );\n\t}\n\n\t// Arraylike of elements (jQuery, arguments, Array)\n\tif ( typeof qualifier !== \"string\" ) {\n\t\treturn jQuery.grep( elements, function( elem ) {\n\t\t\treturn ( indexOf.call( qualifier, elem ) > -1 ) !== not;\n\t\t} );\n\t}\n\n\t// Filtered directly for both simple and complex selectors\n\treturn jQuery.filter( qualifier, elements, not );\n}\n\njQuery.filter = function( expr, elems, not ) {\n\tvar elem = elems[ 0 ];\n\n\tif ( not ) {\n\t\texpr = \":not(\" + expr + \")\";\n\t}\n\n\tif ( elems.length === 1 && elem.nodeType === 1 ) {\n\t\treturn jQuery.find.matchesSelector( elem, expr ) ? [ elem ] : [];\n\t}\n\n\treturn jQuery.find.matches( expr, jQuery.grep( elems, function( elem ) {\n\t\treturn elem.nodeType === 1;\n\t} ) );\n};\n\njQuery.fn.extend( {\n\tfind: function( selector ) {\n\t\tvar i, ret,\n\t\t\tlen = this.length,\n\t\t\tself = this;\n\n\t\tif ( typeof selector !== \"string\" ) {\n\t\t\treturn this.pushStack( jQuery( selector ).filter( function() {\n\t\t\t\tfor ( i = 0; i < len; i++ ) {\n\t\t\t\t\tif ( jQuery.contains( self[ i ], this ) ) {\n\t\t\t\t\t\treturn true;\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t} ) );\n\t\t}\n\n\t\tret = this.pushStack( [] );\n\n\t\tfor ( i = 0; i < len; i++ ) {\n\t\t\tjQuery.find( selector, self[ i ], ret );\n\t\t}\n\n\t\treturn len > 1 ? jQuery.uniqueSort( ret ) : ret;\n\t},\n\tfilter: function( selector ) {\n\t\treturn this.pushStack( winnow( this, selector || [], false ) );\n\t},\n\tnot: function( selector ) {\n\t\treturn this.pushStack( winnow( this, selector || [], true ) );\n\t},\n\tis: function( selector ) {\n\t\treturn !!winnow(\n\t\t\tthis,\n\n\t\t\t// If this is a positional/relative selector, check membership in the returned set\n\t\t\t// so $(\"p:first\").is(\"p:last\") won't return true for a doc with two \"p\".\n\t\t\ttypeof selector === \"string\" && rneedsContext.test( selector ) ?\n\t\t\t\tjQuery( selector ) :\n\t\t\t\tselector || [],\n\t\t\tfalse\n\t\t).length;\n\t}\n} );\n\n\n// Initialize a jQuery object\n\n\n// A central reference to the root jQuery(document)\nvar rootjQuery,\n\n\t// A simple way to check for HTML strings\n\t// Prioritize #id over <tag> to avoid XSS via location.hash (trac-9521)\n\t// Strict HTML recognition (trac-11290: must start with <)\n\t// Shortcut simple #id case for speed\n\trquickExpr = /^(?:\\s*(<[\\w\\W]+>)[^>]*|#([\\w-]+))$/,\n\n\tinit = jQuery.fn.init = function( selector, context, root ) {\n\t\tvar match, elem;\n\n\t\t// HANDLE: $(\"\"), $(null), $(undefined), $(false)\n\t\tif ( !selector ) {\n\t\t\treturn this;\n\t\t}\n\n\t\t// Method init() accepts an alternate rootjQuery\n\t\t// so migrate can support jQuery.sub (gh-2101)\n\t\troot = root || rootjQuery;\n\n\t\t// Handle HTML strings\n\t\tif ( typeof selector === \"string\" ) {\n\t\t\tif ( selector[ 0 ] === \"<\" &&\n\t\t\t\tselector[ selector.length - 1 ] === \">\" &&\n\t\t\t\tselector.length >= 3 ) {\n\n\t\t\t\t// Assume that strings that start and end with <> are HTML and skip the regex check\n\t\t\t\tmatch = [ null, selector, null ];\n\n\t\t\t} else {\n\t\t\t\tmatch = rquickExpr.exec( selector );\n\t\t\t}\n\n\t\t\t// Match html or make sure no context is specified for #id\n\t\t\tif ( match && ( match[ 1 ] || !context ) ) {\n\n\t\t\t\t// HANDLE: $(html) -> $(array)\n\t\t\t\tif ( match[ 1 ] ) {\n\t\t\t\t\tcontext = context instanceof jQuery ? context[ 0 ] : context;\n\n\t\t\t\t\t// Option to run scripts is true for back-compat\n\t\t\t\t\t// Intentionally let the error be thrown if parseHTML is not present\n\t\t\t\t\tjQuery.merge( this, jQuery.parseHTML(\n\t\t\t\t\t\tmatch[ 1 ],\n\t\t\t\t\t\tcontext && context.nodeType ? context.ownerDocument || context : document,\n\t\t\t\t\t\ttrue\n\t\t\t\t\t) );\n\n\t\t\t\t\t// HANDLE: $(html, props)\n\t\t\t\t\tif ( rsingleTag.test( match[ 1 ] ) && jQuery.isPlainObject( context ) ) {\n\t\t\t\t\t\tfor ( match in context ) {\n\n\t\t\t\t\t\t\t// Properties of context are called as methods if possible\n\t\t\t\t\t\t\tif ( isFunction( this[ match ] ) ) {\n\t\t\t\t\t\t\t\tthis[ match ]( context[ match ] );\n\n\t\t\t\t\t\t\t// ...and otherwise set as attributes\n\t\t\t\t\t\t\t} else {\n\t\t\t\t\t\t\t\tthis.attr( match, context[ match ] );\n\t\t\t\t\t\t\t}\n\t\t\t\t\t\t}\n\t\t\t\t\t}\n\n\t\t\t\t\treturn this;\n\n\t\t\t\t// HANDLE: $(#id)\n\t\t\t\t} else {\n\t\t\t\t\telem = document.getElementById( match[ 2 ] );\n\n\t\t\t\t\tif ( elem ) {\n\n\t\t\t\t\t\t// Inject the element directly into the jQuery object\n\t\t\t\t\t\tthis[ 0 ] = elem;\n\t\t\t\t\t\tthis.length = 1;\n\t\t\t\t\t}\n\t\t\t\t\treturn this;\n\t\t\t\t}\n\n\t\t\t// HANDLE: $(expr, $(...))\n\t\t\t} else if ( !context || context.jquery ) {\n\t\t\t\treturn ( context || root ).find( selector );\n\n\t\t\t// HANDLE: $(expr, context)\n\t\t\t// (which is just equivalent to: $(context).find(expr)\n\t\t\t} else {\n\t\t\t\treturn this.constructor( context ).find( selector );\n\t\t\t}\n\n\t\t// HANDLE: $(DOMElement)\n\t\t} else if ( selector.nodeType ) {\n\t\t\tthis[ 0 ] = selector;\n\t\t\tthis.length = 1;\n\t\t\treturn this;\n\n\t\t// HANDLE: $(function)\n\t\t// Shortcut for document ready\n\t\t} else if ( isFunction( selector ) ) {\n\t\t\treturn root.ready !== undefined ?\n\t\t\t\troot.ready( selector ) :\n\n\t\t\t\t// Execute immediately if ready is not present\n\t\t\t\tselector( jQuery );\n\t\t}\n\n\t\treturn jQuery.makeArray( selector, this );\n\t};\n\n// Give the init function the jQuery prototype for later instantiation\ninit.prototype = jQuery.fn;\n\n// Initialize central reference\nrootjQuery = jQuery( document );\n\n\nvar rparentsprev = /^(?:parents|prev(?:Until|All))/,\n\n\t// Methods guaranteed to produce a unique set when starting from a unique set\n\tguaranteedUnique = {\n\t\tchildren: true,\n\t\tcontents: true,\n\t\tnext: true,\n\t\tprev: true\n\t};\n\njQuery.fn.extend( {\n\thas: function( target ) {\n\t\tvar targets = jQuery( target, this ),\n\t\t\tl = targets.length;\n\n\t\treturn this.filter( function() {\n\t\t\tvar i = 0;\n\t\t\tfor ( ; i < l; i++ ) {\n\t\t\t\tif ( jQuery.contains( this, targets[ i ] ) ) {\n\t\t\t\t\treturn true;\n\t\t\t\t}\n\t\t\t}\n\t\t} );\n\t},\n\n\tclosest: function( selectors, context ) {\n\t\tvar cur,\n\t\t\ti = 0,\n\t\t\tl = this.length,\n\t\t\tmatched = [],\n\t\t\ttargets = typeof selectors !== \"string\" && jQuery( selectors );\n\n\t\t// Positional selectors never match, since there's no _selection_ context\n\t\tif ( !rneedsContext.test( selectors ) ) {\n\t\t\tfor ( ; i < l; i++ ) {\n\t\t\t\tfor ( cur = this[ i ]; cur && cur !== context; cur = cur.parentNode ) {\n\n\t\t\t\t\t// Always skip document fragments\n\t\t\t\t\tif ( cur.nodeType < 11 && ( targets ?\n\t\t\t\t\t\ttargets.index( cur ) > -1 :\n\n\t\t\t\t\t\t// Don't pass non-elements to jQuery#find\n\t\t\t\t\t\tcur.nodeType === 1 &&\n\t\t\t\t\t\t\tjQuery.find.matchesSelector( cur, selectors ) ) ) {\n\n\t\t\t\t\t\tmatched.push( cur );\n\t\t\t\t\t\tbreak;\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\n\t\treturn this.pushStack( matched.length > 1 ? jQuery.uniqueSort( matched ) : matched );\n\t},\n\n\t// Determine the position of an element within the set\n\tindex: function( elem ) {\n\n\t\t// No argument, return index in parent\n\t\tif ( !elem ) {\n\t\t\treturn ( this[ 0 ] && this[ 0 ].parentNode ) ? this.first().prevAll().length : -1;\n\t\t}\n\n\t\t// Index in selector\n\t\tif ( typeof elem === \"string\" ) {\n\t\t\treturn indexOf.call( jQuery( elem ), this[ 0 ] );\n\t\t}\n\n\t\t// Locate the position of the desired element\n\t\treturn indexOf.call( this,\n\n\t\t\t// If it receives a jQuery object, the first element is used\n\t\t\telem.jquery ? elem[ 0 ] : elem\n\t\t);\n\t},\n\n\tadd: function( selector, context ) {\n\t\treturn this.pushStack(\n\t\t\tjQuery.uniqueSort(\n\t\t\t\tjQuery.merge( this.get(), jQuery( selector, context ) )\n\t\t\t)\n\t\t);\n\t},\n\n\taddBack: function( selector ) {\n\t\treturn this.add( selector == null ?\n\t\t\tthis.prevObject : this.prevObject.filter( selector )\n\t\t);\n\t}\n} );\n\nfunction sibling( cur, dir ) {\n\twhile ( ( cur = cur[ dir ] ) && cur.nodeType !== 1 ) {}\n\treturn cur;\n}\n\njQuery.each( {\n\tparent: function( elem ) {\n\t\tvar parent = elem.parentNode;\n\t\treturn parent && parent.nodeType !== 11 ? parent : null;\n\t},\n\tparents: function( elem ) {\n\t\treturn dir( elem, \"parentNode\" );\n\t},\n\tparentsUntil: function( elem, _i, until ) {\n\t\treturn dir( elem, \"parentNode\", until );\n\t},\n\tnext: function( elem ) {\n\t\treturn sibling( elem, \"nextSibling\" );\n\t},\n\tprev: function( elem ) {\n\t\treturn sibling( elem, \"previousSibling\" );\n\t},\n\tnextAll: function( elem ) {\n\t\treturn dir( elem, \"nextSibling\" );\n\t},\n\tprevAll: function( elem ) {\n\t\treturn dir( elem, \"previousSibling\" );\n\t},\n\tnextUntil: function( elem, _i, until ) {\n\t\treturn dir( elem, \"nextSibling\", until );\n\t},\n\tprevUntil: function( elem, _i, until ) {\n\t\treturn dir( elem, \"previousSibling\", until );\n\t},\n\tsiblings: function( elem ) {\n\t\treturn siblings( ( elem.parentNode || {} ).firstChild, elem );\n\t},\n\tchildren: function( elem ) {\n\t\treturn siblings( elem.firstChild );\n\t},\n\tcontents: function( elem ) {\n\t\tif ( elem.contentDocument != null &&\n\n\t\t\t// Support: IE 11+\n\t\t\t// <object> elements with no `data` attribute has an object\n\t\t\t// `contentDocument` with a `null` prototype.\n\t\t\tgetProto( elem.contentDocument ) ) {\n\n\t\t\treturn elem.contentDocument;\n\t\t}\n\n\t\t// Support: IE 9 - 11 only, iOS 7 only, Android Browser <=4.3 only\n\t\t// Treat the template element as a regular one in browsers that\n\t\t// don't support it.\n\t\tif ( nodeName( elem, \"template\" ) ) {\n\t\t\telem = elem.content || elem;\n\t\t}\n\n\t\treturn jQuery.merge( [], elem.childNodes );\n\t}\n}, function( name, fn ) {\n\tjQuery.fn[ name ] = function( until, selector ) {\n\t\tvar matched = jQuery.map( this, fn, until );\n\n\t\tif ( name.slice( -5 ) !== \"Until\" ) {\n\t\t\tselector = until;\n\t\t}\n\n\t\tif ( selector && typeof selector === \"string\" ) {\n\t\t\tmatched = jQuery.filter( selector, matched );\n\t\t}\n\n\t\tif ( this.length > 1 ) {\n\n\t\t\t// Remove duplicates\n\t\t\tif ( !guaranteedUnique[ name ] ) {\n\t\t\t\tjQuery.uniqueSort( matched );\n\t\t\t}\n\n\t\t\t// Reverse order for parents* and prev-derivatives\n\t\t\tif ( rparentsprev.test( name ) ) {\n\t\t\t\tmatched.reverse();\n\t\t\t}\n\t\t}\n\n\t\treturn this.pushStack( matched );\n\t};\n} );\nvar rnothtmlwhite = ( /[^\\x20\\t\\r\\n\\f]+/g );\n\n\n\n// Convert String-formatted options into Object-formatted ones\nfunction createOptions( options ) {\n\tvar object = {};\n\tjQuery.each( options.match( rnothtmlwhite ) || [], function( _, flag ) {\n\t\tobject[ flag ] = true;\n\t} );\n\treturn object;\n}\n\n/*\n * Create a callback list using the following parameters:\n *\n *\toptions: an optional list of space-separated options that will change how\n *\t\t\tthe callback list behaves or a more traditional option object\n *\n * By default a callback list will act like an event callback list and can be\n * \"fired\" multiple times.\n *\n * Possible options:\n *\n *\tonce:\t\t\twill ensure the callback list can only be fired once (like a Deferred)\n *\n *\tmemory:\t\t\twill keep track of previous values and will call any callback added\n *\t\t\t\t\tafter the list has been fired right away with the latest \"memorized\"\n *\t\t\t\t\tvalues (like a Deferred)\n *\n *\tunique:\t\t\twill ensure a callback can only be added once (no duplicate in the list)\n *\n *\tstopOnFalse:\tinterrupt callings when a callback returns false\n *\n */\njQuery.Callbacks = function( options ) {\n\n\t// Convert options from String-formatted to Object-formatted if needed\n\t// (we check in cache first)\n\toptions = typeof options === \"string\" ?\n\t\tcreateOptions( options ) :\n\t\tjQuery.extend( {}, options );\n\n\tvar // Flag to know if list is currently firing\n\t\tfiring,\n\n\t\t// Last fire value for non-forgettable lists\n\t\tmemory,\n\n\t\t// Flag to know if list was already fired\n\t\tfired,\n\n\t\t// Flag to prevent firing\n\t\tlocked,\n\n\t\t// Actual callback list\n\t\tlist = [],\n\n\t\t// Queue of execution data for repeatable lists\n\t\tqueue = [],\n\n\t\t// Index of currently firing callback (modified by add/remove as needed)\n\t\tfiringIndex = -1,\n\n\t\t// Fire callbacks\n\t\tfire = function() {\n\n\t\t\t// Enforce single-firing\n\t\t\tlocked = locked || options.once;\n\n\t\t\t// Execute callbacks for all pending executions,\n\t\t\t// respecting firingIndex overrides and runtime changes\n\t\t\tfired = firing = true;\n\t\t\tfor ( ; queue.length; firingIndex = -1 ) {\n\t\t\t\tmemory = queue.shift();\n\t\t\t\twhile ( ++firingIndex < list.length ) {\n\n\t\t\t\t\t// Run callback and check for early termination\n\t\t\t\t\tif ( list[ firingIndex ].apply( memory[ 0 ], memory[ 1 ] ) === false &&\n\t\t\t\t\t\toptions.stopOnFalse ) {\n\n\t\t\t\t\t\t// Jump to end and forget the data so .add doesn't re-fire\n\t\t\t\t\t\tfiringIndex = list.length;\n\t\t\t\t\t\tmemory = false;\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t}\n\n\t\t\t// Forget the data if we're done with it\n\t\t\tif ( !options.memory ) {\n\t\t\t\tmemory = false;\n\t\t\t}\n\n\t\t\tfiring = false;\n\n\t\t\t// Clean up if we're done firing for good\n\t\t\tif ( locked ) {\n\n\t\t\t\t// Keep an empty list if we have data for future add calls\n\t\t\t\tif ( memory ) {\n\t\t\t\t\tlist = [];\n\n\t\t\t\t// Otherwise, this object is spent\n\t\t\t\t} else {\n\t\t\t\t\tlist = \"\";\n\t\t\t\t}\n\t\t\t}\n\t\t},\n\n\t\t// Actual Callbacks object\n\t\tself = {\n\n\t\t\t// Add a callback or a collection of callbacks to the list\n\t\t\tadd: function() {\n\t\t\t\tif ( list ) {\n\n\t\t\t\t\t// If we have memory from a past run, we should fire after adding\n\t\t\t\t\tif ( memory && !firing ) {\n\t\t\t\t\t\tfiringIndex = list.length - 1;\n\t\t\t\t\t\tqueue.push( memory );\n\t\t\t\t\t}\n\n\t\t\t\t\t( function add( args ) {\n\t\t\t\t\t\tjQuery.each( args, function( _, arg ) {\n\t\t\t\t\t\t\tif ( isFunction( arg ) ) {\n\t\t\t\t\t\t\t\tif ( !options.unique || !self.has( arg ) ) {\n\t\t\t\t\t\t\t\t\tlist.push( arg );\n\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t} else if ( arg && arg.length && toType( arg ) !== \"string\" ) {\n\n\t\t\t\t\t\t\t\t// Inspect recursively\n\t\t\t\t\t\t\t\tadd( arg );\n\t\t\t\t\t\t\t}\n\t\t\t\t\t\t} );\n\t\t\t\t\t} )( arguments );\n\n\t\t\t\t\tif ( memory && !firing ) {\n\t\t\t\t\t\tfire();\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t\treturn this;\n\t\t\t},\n\n\t\t\t// Remove a callback from the list\n\t\t\tremove: function() {\n\t\t\t\tjQuery.each( arguments, function( _, arg ) {\n\t\t\t\t\tvar index;\n\t\t\t\t\twhile ( ( index = jQuery.inArray( arg, list, index ) ) > -1 ) {\n\t\t\t\t\t\tlist.splice( index, 1 );\n\n\t\t\t\t\t\t// Handle firing indexes\n\t\t\t\t\t\tif ( index <= firingIndex ) {\n\t\t\t\t\t\t\tfiringIndex--;\n\t\t\t\t\t\t}\n\t\t\t\t\t}\n\t\t\t\t} );\n\t\t\t\treturn this;\n\t\t\t},\n\n\t\t\t// Check if a given callback is in the list.\n\t\t\t// If no argument is given, return whether or not list has callbacks attached.\n\t\t\thas: function( fn ) {\n\t\t\t\treturn fn ?\n\t\t\t\t\tjQuery.inArray( fn, list ) > -1 :\n\t\t\t\t\tlist.length > 0;\n\t\t\t},\n\n\t\t\t// Remove all callbacks from the list\n\t\t\tempty: function() {\n\t\t\t\tif ( list ) {\n\t\t\t\t\tlist = [];\n\t\t\t\t}\n\t\t\t\treturn this;\n\t\t\t},\n\n\t\t\t// Disable .fire and .add\n\t\t\t// Abort any current/pending executions\n\t\t\t// Clear all callbacks and values\n\t\t\tdisable: function() {\n\t\t\t\tlocked = queue = [];\n\t\t\t\tlist = memory = \"\";\n\t\t\t\treturn this;\n\t\t\t},\n\t\t\tdisabled: function() {\n\t\t\t\treturn !list;\n\t\t\t},\n\n\t\t\t// Disable .fire\n\t\t\t// Also disable .add unless we have memory (since it would have no effect)\n\t\t\t// Abort any pending executions\n\t\t\tlock: function() {\n\t\t\t\tlocked = queue = [];\n\t\t\t\tif ( !memory && !firing ) {\n\t\t\t\t\tlist = memory = \"\";\n\t\t\t\t}\n\t\t\t\treturn this;\n\t\t\t},\n\t\t\tlocked: function() {\n\t\t\t\treturn !!locked;\n\t\t\t},\n\n\t\t\t// Call all callbacks with the given context and arguments\n\t\t\tfireWith: function( context, args ) {\n\t\t\t\tif ( !locked ) {\n\t\t\t\t\targs = args || [];\n\t\t\t\t\targs = [ context, args.slice ? args.slice() : args ];\n\t\t\t\t\tqueue.push( args );\n\t\t\t\t\tif ( !firing ) {\n\t\t\t\t\t\tfire();\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t\treturn this;\n\t\t\t},\n\n\t\t\t// Call all the callbacks with the given arguments\n\t\t\tfire: function() {\n\t\t\t\tself.fireWith( this, arguments );\n\t\t\t\treturn this;\n\t\t\t},\n\n\t\t\t// To know if the callbacks have already been called at least once\n\t\t\tfired: function() {\n\t\t\t\treturn !!fired;\n\t\t\t}\n\t\t};\n\n\treturn self;\n};\n\n\nfunction Identity( v ) {\n\treturn v;\n}\nfunction Thrower( ex ) {\n\tthrow ex;\n}\n\nfunction adoptValue( value, resolve, reject, noValue ) {\n\tvar method;\n\n\ttry {\n\n\t\t// Check for promise aspect first to privilege synchronous behavior\n\t\tif ( value && isFunction( ( method = value.promise ) ) ) {\n\t\t\tmethod.call( value ).done( resolve ).fail( reject );\n\n\t\t// Other thenables\n\t\t} else if ( value && isFunction( ( method = value.then ) ) ) {\n\t\t\tmethod.call( value, resolve, reject );\n\n\t\t// Other non-thenables\n\t\t} else {\n\n\t\t\t// Control `resolve` arguments by letting Array#slice cast boolean `noValue` to integer:\n\t\t\t// * false: [ value ].slice( 0 ) => resolve( value )\n\t\t\t// * true: [ value ].slice( 1 ) => resolve()\n\t\t\tresolve.apply( undefined, [ value ].slice( noValue ) );\n\t\t}\n\n\t// For Promises/A+, convert exceptions into rejections\n\t// Since jQuery.when doesn't unwrap thenables, we can skip the extra checks appearing in\n\t// Deferred#then to conditionally suppress rejection.\n\t} catch ( value ) {\n\n\t\t// Support: Android 4.0 only\n\t\t// Strict mode functions invoked without .call/.apply get global-object context\n\t\treject.apply( undefined, [ value ] );\n\t}\n}\n\njQuery.extend( {\n\n\tDeferred: function( func ) {\n\t\tvar tuples = [\n\n\t\t\t\t// action, add listener, callbacks,\n\t\t\t\t// ... .then handlers, argument index, [final state]\n\t\t\t\t[ \"notify\", \"progress\", jQuery.Callbacks( \"memory\" ),\n\t\t\t\t\tjQuery.Callbacks( \"memory\" ), 2 ],\n\t\t\t\t[ \"resolve\", \"done\", jQuery.Callbacks( \"once memory\" ),\n\t\t\t\t\tjQuery.Callbacks( \"once memory\" ), 0, \"resolved\" ],\n\t\t\t\t[ \"reject\", \"fail\", jQuery.Callbacks( \"once memory\" ),\n\t\t\t\t\tjQuery.Callbacks( \"once memory\" ), 1, \"rejected\" ]\n\t\t\t],\n\t\t\tstate = \"pending\",\n\t\t\tpromise = {\n\t\t\t\tstate: function() {\n\t\t\t\t\treturn state;\n\t\t\t\t},\n\t\t\t\talways: function() {\n\t\t\t\t\tdeferred.done( arguments ).fail( arguments );\n\t\t\t\t\treturn this;\n\t\t\t\t},\n\t\t\t\t\"catch\": function( fn ) {\n\t\t\t\t\treturn promise.then( null, fn );\n\t\t\t\t},\n\n\t\t\t\t// Keep pipe for back-compat\n\t\t\t\tpipe: function( /* fnDone, fnFail, fnProgress */ ) {\n\t\t\t\t\tvar fns = arguments;\n\n\t\t\t\t\treturn jQuery.Deferred( function( newDefer ) {\n\t\t\t\t\t\tjQuery.each( tuples, function( _i, tuple ) {\n\n\t\t\t\t\t\t\t// Map tuples (progress, done, fail) to arguments (done, fail, progress)\n\t\t\t\t\t\t\tvar fn = isFunction( fns[ tuple[ 4 ] ] ) && fns[ tuple[ 4 ] ];\n\n\t\t\t\t\t\t\t// deferred.progress(function() { bind to newDefer or newDefer.notify })\n\t\t\t\t\t\t\t// deferred.done(function() { bind to newDefer or newDefer.resolve })\n\t\t\t\t\t\t\t// deferred.fail(function() { bind to newDefer or newDefer.reject })\n\t\t\t\t\t\t\tdeferred[ tuple[ 1 ] ]( function() {\n\t\t\t\t\t\t\t\tvar returned = fn && fn.apply( this, arguments );\n\t\t\t\t\t\t\t\tif ( returned && isFunction( returned.promise ) ) {\n\t\t\t\t\t\t\t\t\treturned.promise()\n\t\t\t\t\t\t\t\t\t\t.progress( newDefer.notify )\n\t\t\t\t\t\t\t\t\t\t.done( newDefer.resolve )\n\t\t\t\t\t\t\t\t\t\t.fail( newDefer.reject );\n\t\t\t\t\t\t\t\t} else {\n\t\t\t\t\t\t\t\t\tnewDefer[ tuple[ 0 ] + \"With\" ](\n\t\t\t\t\t\t\t\t\t\tthis,\n\t\t\t\t\t\t\t\t\t\tfn ? [ returned ] : arguments\n\t\t\t\t\t\t\t\t\t);\n\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t} );\n\t\t\t\t\t\t} );\n\t\t\t\t\t\tfns = null;\n\t\t\t\t\t} ).promise();\n\t\t\t\t},\n\t\t\t\tthen: function( onFulfilled, onRejected, onProgress ) {\n\t\t\t\t\tvar maxDepth = 0;\n\t\t\t\t\tfunction resolve( depth, deferred, handler, special ) {\n\t\t\t\t\t\treturn function() {\n\t\t\t\t\t\t\tvar that = this,\n\t\t\t\t\t\t\t\targs = arguments,\n\t\t\t\t\t\t\t\tmightThrow = function() {\n\t\t\t\t\t\t\t\t\tvar returned, then;\n\n\t\t\t\t\t\t\t\t\t// Support: Promises/A+ section 2.3.3.3.3\n\t\t\t\t\t\t\t\t\t// https://promisesaplus.com/#point-59\n\t\t\t\t\t\t\t\t\t// Ignore double-resolution attempts\n\t\t\t\t\t\t\t\t\tif ( depth < maxDepth ) {\n\t\t\t\t\t\t\t\t\t\treturn;\n\t\t\t\t\t\t\t\t\t}\n\n\t\t\t\t\t\t\t\t\treturned = handler.apply( that, args );\n\n\t\t\t\t\t\t\t\t\t// Support: Promises/A+ section 2.3.1\n\t\t\t\t\t\t\t\t\t// https://promisesaplus.com/#point-48\n\t\t\t\t\t\t\t\t\tif ( returned === deferred.promise() ) {\n\t\t\t\t\t\t\t\t\t\tthrow new TypeError( \"Thenable self-resolution\" );\n\t\t\t\t\t\t\t\t\t}\n\n\t\t\t\t\t\t\t\t\t// Support: Promises/A+ sections 2.3.3.1, 3.5\n\t\t\t\t\t\t\t\t\t// https://promisesaplus.com/#point-54\n\t\t\t\t\t\t\t\t\t// https://promisesaplus.com/#point-75\n\t\t\t\t\t\t\t\t\t// Retrieve `then` only once\n\t\t\t\t\t\t\t\t\tthen = returned &&\n\n\t\t\t\t\t\t\t\t\t\t// Support: Promises/A+ section 2.3.4\n\t\t\t\t\t\t\t\t\t\t// https://promisesaplus.com/#point-64\n\t\t\t\t\t\t\t\t\t\t// Only check objects and functions for thenability\n\t\t\t\t\t\t\t\t\t\t( typeof returned === \"object\" ||\n\t\t\t\t\t\t\t\t\t\t\ttypeof returned === \"function\" ) &&\n\t\t\t\t\t\t\t\t\t\treturned.then;\n\n\t\t\t\t\t\t\t\t\t// Handle a returned thenable\n\t\t\t\t\t\t\t\t\tif ( isFunction( then ) ) {\n\n\t\t\t\t\t\t\t\t\t\t// Special processors (notify) just wait for resolution\n\t\t\t\t\t\t\t\t\t\tif ( special ) {\n\t\t\t\t\t\t\t\t\t\t\tthen.call(\n\t\t\t\t\t\t\t\t\t\t\t\treturned,\n\t\t\t\t\t\t\t\t\t\t\t\tresolve( maxDepth, deferred, Identity, special ),\n\t\t\t\t\t\t\t\t\t\t\t\tresolve( maxDepth, deferred, Thrower, special )\n\t\t\t\t\t\t\t\t\t\t\t);\n\n\t\t\t\t\t\t\t\t\t\t// Normal processors (resolve) also hook into progress\n\t\t\t\t\t\t\t\t\t\t} else {\n\n\t\t\t\t\t\t\t\t\t\t\t// ...and disregard older resolution values\n\t\t\t\t\t\t\t\t\t\t\tmaxDepth++;\n\n\t\t\t\t\t\t\t\t\t\t\tthen.call(\n\t\t\t\t\t\t\t\t\t\t\t\treturned,\n\t\t\t\t\t\t\t\t\t\t\t\tresolve( maxDepth, deferred, Identity, special ),\n\t\t\t\t\t\t\t\t\t\t\t\tresolve( maxDepth, deferred, Thrower, special ),\n\t\t\t\t\t\t\t\t\t\t\t\tresolve( maxDepth, deferred, Identity,\n\t\t\t\t\t\t\t\t\t\t\t\t\tdeferred.notifyWith )\n\t\t\t\t\t\t\t\t\t\t\t);\n\t\t\t\t\t\t\t\t\t\t}\n\n\t\t\t\t\t\t\t\t\t// Handle all other returned values\n\t\t\t\t\t\t\t\t\t} else {\n\n\t\t\t\t\t\t\t\t\t\t// Only substitute handlers pass on context\n\t\t\t\t\t\t\t\t\t\t// and multiple values (non-spec behavior)\n\t\t\t\t\t\t\t\t\t\tif ( handler !== Identity ) {\n\t\t\t\t\t\t\t\t\t\t\tthat = undefined;\n\t\t\t\t\t\t\t\t\t\t\targs = [ returned ];\n\t\t\t\t\t\t\t\t\t\t}\n\n\t\t\t\t\t\t\t\t\t\t// Process the value(s)\n\t\t\t\t\t\t\t\t\t\t// Default process is resolve\n\t\t\t\t\t\t\t\t\t\t( special || deferred.resolveWith )( that, args );\n\t\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t\t},\n\n\t\t\t\t\t\t\t\t// Only normal processors (resolve) catch and reject exceptions\n\t\t\t\t\t\t\t\tprocess = special ?\n\t\t\t\t\t\t\t\t\tmightThrow :\n\t\t\t\t\t\t\t\t\tfunction() {\n\t\t\t\t\t\t\t\t\t\ttry {\n\t\t\t\t\t\t\t\t\t\t\tmightThrow();\n\t\t\t\t\t\t\t\t\t\t} catch ( e ) {\n\n\t\t\t\t\t\t\t\t\t\t\tif ( jQuery.Deferred.exceptionHook ) {\n\t\t\t\t\t\t\t\t\t\t\t\tjQuery.Deferred.exceptionHook( e,\n\t\t\t\t\t\t\t\t\t\t\t\t\tprocess.error );\n\t\t\t\t\t\t\t\t\t\t\t}\n\n\t\t\t\t\t\t\t\t\t\t\t// Support: Promises/A+ section 2.3.3.3.4.1\n\t\t\t\t\t\t\t\t\t\t\t// https://promisesaplus.com/#point-61\n\t\t\t\t\t\t\t\t\t\t\t// Ignore post-resolution exceptions\n\t\t\t\t\t\t\t\t\t\t\tif ( depth + 1 >= maxDepth ) {\n\n\t\t\t\t\t\t\t\t\t\t\t\t// Only substitute handlers pass on context\n\t\t\t\t\t\t\t\t\t\t\t\t// and multiple values (non-spec behavior)\n\t\t\t\t\t\t\t\t\t\t\t\tif ( handler !== Thrower ) {\n\t\t\t\t\t\t\t\t\t\t\t\t\tthat = undefined;\n\t\t\t\t\t\t\t\t\t\t\t\t\targs = [ e ];\n\t\t\t\t\t\t\t\t\t\t\t\t}\n\n\t\t\t\t\t\t\t\t\t\t\t\tdeferred.rejectWith( that, args );\n\t\t\t\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t\t\t};\n\n\t\t\t\t\t\t\t// Support: Promises/A+ section 2.3.3.3.1\n\t\t\t\t\t\t\t// https://promisesaplus.com/#point-57\n\t\t\t\t\t\t\t// Re-resolve promises immediately to dodge false rejection from\n\t\t\t\t\t\t\t// subsequent errors\n\t\t\t\t\t\t\tif ( depth ) {\n\t\t\t\t\t\t\t\tprocess();\n\t\t\t\t\t\t\t} else {\n\n\t\t\t\t\t\t\t\t// Call an optional hook to record the error, in case of exception\n\t\t\t\t\t\t\t\t// since it's otherwise lost when execution goes async\n\t\t\t\t\t\t\t\tif ( jQuery.Deferred.getErrorHook ) {\n\t\t\t\t\t\t\t\t\tprocess.error = jQuery.Deferred.getErrorHook();\n\n\t\t\t\t\t\t\t\t// The deprecated alias of the above. While the name suggests\n\t\t\t\t\t\t\t\t// returning the stack, not an error instance, jQuery just passes\n\t\t\t\t\t\t\t\t// it directly to `console.warn` so both will work; an instance\n\t\t\t\t\t\t\t\t// just better cooperates with source maps.\n\t\t\t\t\t\t\t\t} else if ( jQuery.Deferred.getStackHook ) {\n\t\t\t\t\t\t\t\t\tprocess.error = jQuery.Deferred.getStackHook();\n\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t\twindow.setTimeout( process );\n\t\t\t\t\t\t\t}\n\t\t\t\t\t\t};\n\t\t\t\t\t}\n\n\t\t\t\t\treturn jQuery.Deferred( function( newDefer ) {\n\n\t\t\t\t\t\t// progress_handlers.add( ... )\n\t\t\t\t\t\ttuples[ 0 ][ 3 ].add(\n\t\t\t\t\t\t\tresolve(\n\t\t\t\t\t\t\t\t0,\n\t\t\t\t\t\t\t\tnewDefer,\n\t\t\t\t\t\t\t\tisFunction( onProgress ) ?\n\t\t\t\t\t\t\t\t\tonProgress :\n\t\t\t\t\t\t\t\t\tIdentity,\n\t\t\t\t\t\t\t\tnewDefer.notifyWith\n\t\t\t\t\t\t\t)\n\t\t\t\t\t\t);\n\n\t\t\t\t\t\t// fulfilled_handlers.add( ... )\n\t\t\t\t\t\ttuples[ 1 ][ 3 ].add(\n\t\t\t\t\t\t\tresolve(\n\t\t\t\t\t\t\t\t0,\n\t\t\t\t\t\t\t\tnewDefer,\n\t\t\t\t\t\t\t\tisFunction( onFulfilled ) ?\n\t\t\t\t\t\t\t\t\tonFulfilled :\n\t\t\t\t\t\t\t\t\tIdentity\n\t\t\t\t\t\t\t)\n\t\t\t\t\t\t);\n\n\t\t\t\t\t\t// rejected_handlers.add( ... )\n\t\t\t\t\t\ttuples[ 2 ][ 3 ].add(\n\t\t\t\t\t\t\tresolve(\n\t\t\t\t\t\t\t\t0,\n\t\t\t\t\t\t\t\tnewDefer,\n\t\t\t\t\t\t\t\tisFunction( onRejected ) ?\n\t\t\t\t\t\t\t\t\tonRejected :\n\t\t\t\t\t\t\t\t\tThrower\n\t\t\t\t\t\t\t)\n\t\t\t\t\t\t);\n\t\t\t\t\t} ).promise();\n\t\t\t\t},\n\n\t\t\t\t// Get a promise for this deferred\n\t\t\t\t// If obj is provided, the promise aspect is added to the object\n\t\t\t\tpromise: function( obj ) {\n\t\t\t\t\treturn obj != null ? jQuery.extend( obj, promise ) : promise;\n\t\t\t\t}\n\t\t\t},\n\t\t\tdeferred = {};\n\n\t\t// Add list-specific methods\n\t\tjQuery.each( tuples, function( i, tuple ) {\n\t\t\tvar list = tuple[ 2 ],\n\t\t\t\tstateString = tuple[ 5 ];\n\n\t\t\t// promise.progress = list.add\n\t\t\t// promise.done = list.add\n\t\t\t// promise.fail = list.add\n\t\t\tpromise[ tuple[ 1 ] ] = list.add;\n\n\t\t\t// Handle state\n\t\t\tif ( stateString ) {\n\t\t\t\tlist.add(\n\t\t\t\t\tfunction() {\n\n\t\t\t\t\t\t// state = \"resolved\" (i.e., fulfilled)\n\t\t\t\t\t\t// state = \"rejected\"\n\t\t\t\t\t\tstate = stateString;\n\t\t\t\t\t},\n\n\t\t\t\t\t// rejected_callbacks.disable\n\t\t\t\t\t// fulfilled_callbacks.disable\n\t\t\t\t\ttuples[ 3 - i ][ 2 ].disable,\n\n\t\t\t\t\t// rejected_handlers.disable\n\t\t\t\t\t// fulfilled_handlers.disable\n\t\t\t\t\ttuples[ 3 - i ][ 3 ].disable,\n\n\t\t\t\t\t// progress_callbacks.lock\n\t\t\t\t\ttuples[ 0 ][ 2 ].lock,\n\n\t\t\t\t\t// progress_handlers.lock\n\t\t\t\t\ttuples[ 0 ][ 3 ].lock\n\t\t\t\t);\n\t\t\t}\n\n\t\t\t// progress_handlers.fire\n\t\t\t// fulfilled_handlers.fire\n\t\t\t// rejected_handlers.fire\n\t\t\tlist.add( tuple[ 3 ].fire );\n\n\t\t\t// deferred.notify = function() { deferred.notifyWith(...) }\n\t\t\t// deferred.resolve = function() { deferred.resolveWith(...) }\n\t\t\t// deferred.reject = function() { deferred.rejectWith(...) }\n\t\t\tdeferred[ tuple[ 0 ] ] = function() {\n\t\t\t\tdeferred[ tuple[ 0 ] + \"With\" ]( this === deferred ? undefined : this, arguments );\n\t\t\t\treturn this;\n\t\t\t};\n\n\t\t\t// deferred.notifyWith = list.fireWith\n\t\t\t// deferred.resolveWith = list.fireWith\n\t\t\t// deferred.rejectWith = list.fireWith\n\t\t\tdeferred[ tuple[ 0 ] + \"With\" ] = list.fireWith;\n\t\t} );\n\n\t\t// Make the deferred a promise\n\t\tpromise.promise( deferred );\n\n\t\t// Call given func if any\n\t\tif ( func ) {\n\t\t\tfunc.call( deferred, deferred );\n\t\t}\n\n\t\t// All done!\n\t\treturn deferred;\n\t},\n\n\t// Deferred helper\n\twhen: function( singleValue ) {\n\t\tvar\n\n\t\t\t// count of uncompleted subordinates\n\t\t\tremaining = arguments.length,\n\n\t\t\t// count of unprocessed arguments\n\t\t\ti = remaining,\n\n\t\t\t// subordinate fulfillment data\n\t\t\tresolveContexts = Array( i ),\n\t\t\tresolveValues = slice.call( arguments ),\n\n\t\t\t// the primary Deferred\n\t\t\tprimary = jQuery.Deferred(),\n\n\t\t\t// subordinate callback factory\n\t\t\tupdateFunc = function( i ) {\n\t\t\t\treturn function( value ) {\n\t\t\t\t\tresolveContexts[ i ] = this;\n\t\t\t\t\tresolveValues[ i ] = arguments.length > 1 ? slice.call( arguments ) : value;\n\t\t\t\t\tif ( !( --remaining ) ) {\n\t\t\t\t\t\tprimary.resolveWith( resolveContexts, resolveValues );\n\t\t\t\t\t}\n\t\t\t\t};\n\t\t\t};\n\n\t\t// Single- and empty arguments are adopted like Promise.resolve\n\t\tif ( remaining <= 1 ) {\n\t\t\tadoptValue( singleValue, primary.done( updateFunc( i ) ).resolve, primary.reject,\n\t\t\t\t!remaining );\n\n\t\t\t// Use .then() to unwrap secondary thenables (cf. gh-3000)\n\t\t\tif ( primary.state() === \"pending\" ||\n\t\t\t\tisFunction( resolveValues[ i ] && resolveValues[ i ].then ) ) {\n\n\t\t\t\treturn primary.then();\n\t\t\t}\n\t\t}\n\n\t\t// Multiple arguments are aggregated like Promise.all array elements\n\t\twhile ( i-- ) {\n\t\t\tadoptValue( resolveValues[ i ], updateFunc( i ), primary.reject );\n\t\t}\n\n\t\treturn primary.promise();\n\t}\n} );\n\n\n// These usually indicate a programmer mistake during development,\n// warn about them ASAP rather than swallowing them by default.\nvar rerrorNames = /^(Eval|Internal|Range|Reference|Syntax|Type|URI)Error$/;\n\n// If `jQuery.Deferred.getErrorHook` is defined, `asyncError` is an error\n// captured before the async barrier to get the original error cause\n// which may otherwise be hidden.\njQuery.Deferred.exceptionHook = function( error, asyncError ) {\n\n\t// Support: IE 8 - 9 only\n\t// Console exists when dev tools are open, which can happen at any time\n\tif ( window.console && window.console.warn && error && rerrorNames.test( error.name ) ) {\n\t\twindow.console.warn( \"jQuery.Deferred exception: \" + error.message,\n\t\t\terror.stack, asyncError );\n\t}\n};\n\n\n\n\njQuery.readyException = function( error ) {\n\twindow.setTimeout( function() {\n\t\tthrow error;\n\t} );\n};\n\n\n\n\n// The deferred used on DOM ready\nvar readyList = jQuery.Deferred();\n\njQuery.fn.ready = function( fn ) {\n\n\treadyList\n\t\t.then( fn )\n\n\t\t// Wrap jQuery.readyException in a function so that the lookup\n\t\t// happens at the time of error handling instead of callback\n\t\t// registration.\n\t\t.catch( function( error ) {\n\t\t\tjQuery.readyException( error );\n\t\t} );\n\n\treturn this;\n};\n\njQuery.extend( {\n\n\t// Is the DOM ready to be used? Set to true once it occurs.\n\tisReady: false,\n\n\t// A counter to track how many items to wait for before\n\t// the ready event fires. See trac-6781\n\treadyWait: 1,\n\n\t// Handle when the DOM is ready\n\tready: function( wait ) {\n\n\t\t// Abort if there are pending holds or we're already ready\n\t\tif ( wait === true ? --jQuery.readyWait : jQuery.isReady ) {\n\t\t\treturn;\n\t\t}\n\n\t\t// Remember that the DOM is ready\n\t\tjQuery.isReady = true;\n\n\t\t// If a normal DOM Ready event fired, decrement, and wait if need be\n\t\tif ( wait !== true && --jQuery.readyWait > 0 ) {\n\t\t\treturn;\n\t\t}\n\n\t\t// If there are functions bound, to execute\n\t\treadyList.resolveWith( document, [ jQuery ] );\n\t}\n} );\n\njQuery.ready.then = readyList.then;\n\n// The ready event handler and self cleanup method\nfunction completed() {\n\tdocument.removeEventListener( \"DOMContentLoaded\", completed );\n\twindow.removeEventListener( \"load\", completed );\n\tjQuery.ready();\n}\n\n// Catch cases where $(document).ready() is called\n// after the browser event has already occurred.\n// Support: IE <=9 - 10 only\n// Older IE sometimes signals \"interactive\" too soon\nif ( document.readyState === \"complete\" ||\n\t( document.readyState !== \"loading\" && !document.documentElement.doScroll ) ) {\n\n\t// Handle it asynchronously to allow scripts the opportunity to delay ready\n\twindow.setTimeout( jQuery.ready );\n\n} else {\n\n\t// Use the handy event callback\n\tdocument.addEventListener( \"DOMContentLoaded\", completed );\n\n\t// A fallback to window.onload, that will always work\n\twindow.addEventListener( \"load\", completed );\n}\n\n\n\n\n// Multifunctional method to get and set values of a collection\n// The value/s can optionally be executed if it's a function\nvar access = function( elems, fn, key, value, chainable, emptyGet, raw ) {\n\tvar i = 0,\n\t\tlen = elems.length,\n\t\tbulk = key == null;\n\n\t// Sets many values\n\tif ( toType( key ) === \"object\" ) {\n\t\tchainable = true;\n\t\tfor ( i in key ) {\n\t\t\taccess( elems, fn, i, key[ i ], true, emptyGet, raw );\n\t\t}\n\n\t// Sets one value\n\t} else if ( value !== undefined ) {\n\t\tchainable = true;\n\n\t\tif ( !isFunction( value ) ) {\n\t\t\traw = true;\n\t\t}\n\n\t\tif ( bulk ) {\n\n\t\t\t// Bulk operations run against the entire set\n\t\t\tif ( raw ) {\n\t\t\t\tfn.call( elems, value );\n\t\t\t\tfn = null;\n\n\t\t\t// ...except when executing function values\n\t\t\t} else {\n\t\t\t\tbulk = fn;\n\t\t\t\tfn = function( elem, _key, value ) {\n\t\t\t\t\treturn bulk.call( jQuery( elem ), value );\n\t\t\t\t};\n\t\t\t}\n\t\t}\n\n\t\tif ( fn ) {\n\t\t\tfor ( ; i < len; i++ ) {\n\t\t\t\tfn(\n\t\t\t\t\telems[ i ], key, raw ?\n\t\t\t\t\t\tvalue :\n\t\t\t\t\t\tvalue.call( elems[ i ], i, fn( elems[ i ], key ) )\n\t\t\t\t);\n\t\t\t}\n\t\t}\n\t}\n\n\tif ( chainable ) {\n\t\treturn elems;\n\t}\n\n\t// Gets\n\tif ( bulk ) {\n\t\treturn fn.call( elems );\n\t}\n\n\treturn len ? fn( elems[ 0 ], key ) : emptyGet;\n};\n\n\n// Matches dashed string for camelizing\nvar rmsPrefix = /^-ms-/,\n\trdashAlpha = /-([a-z])/g;\n\n// Used by camelCase as callback to replace()\nfunction fcamelCase( _all, letter ) {\n\treturn letter.toUpperCase();\n}\n\n// Convert dashed to camelCase; used by the css and data modules\n// Support: IE <=9 - 11, Edge 12 - 15\n// Microsoft forgot to hump their vendor prefix (trac-9572)\nfunction camelCase( string ) {\n\treturn string.replace( rmsPrefix, \"ms-\" ).replace( rdashAlpha, fcamelCase );\n}\nvar acceptData = function( owner ) {\n\n\t// Accepts only:\n\t// - Node\n\t// - Node.ELEMENT_NODE\n\t// - Node.DOCUMENT_NODE\n\t// - Object\n\t// - Any\n\treturn owner.nodeType === 1 || owner.nodeType === 9 || !( +owner.nodeType );\n};\n\n\n\n\nfunction Data() {\n\tthis.expando = jQuery.expando + Data.uid++;\n}\n\nData.uid = 1;\n\nData.prototype = {\n\n\tcache: function( owner ) {\n\n\t\t// Check if the owner object already has a cache\n\t\tvar value = owner[ this.expando ];\n\n\t\t// If not, create one\n\t\tif ( !value ) {\n\t\t\tvalue = {};\n\n\t\t\t// We can accept data for non-element nodes in modern browsers,\n\t\t\t// but we should not, see trac-8335.\n\t\t\t// Always return an empty object.\n\t\t\tif ( acceptData( owner ) ) {\n\n\t\t\t\t// If it is a node unlikely to be stringify-ed or looped over\n\t\t\t\t// use plain assignment\n\t\t\t\tif ( owner.nodeType ) {\n\t\t\t\t\towner[ this.expando ] = value;\n\n\t\t\t\t// Otherwise secure it in a non-enumerable property\n\t\t\t\t// configurable must be true to allow the property to be\n\t\t\t\t// deleted when data is removed\n\t\t\t\t} else {\n\t\t\t\t\tObject.defineProperty( owner, this.expando, {\n\t\t\t\t\t\tvalue: value,\n\t\t\t\t\t\tconfigurable: true\n\t\t\t\t\t} );\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\n\t\treturn value;\n\t},\n\tset: function( owner, data, value ) {\n\t\tvar prop,\n\t\t\tcache = this.cache( owner );\n\n\t\t// Handle: [ owner, key, value ] args\n\t\t// Always use camelCase key (gh-2257)\n\t\tif ( typeof data === \"string\" ) {\n\t\t\tcache[ camelCase( data ) ] = value;\n\n\t\t// Handle: [ owner, { properties } ] args\n\t\t} else {\n\n\t\t\t// Copy the properties one-by-one to the cache object\n\t\t\tfor ( prop in data ) {\n\t\t\t\tcache[ camelCase( prop ) ] = data[ prop ];\n\t\t\t}\n\t\t}\n\t\treturn cache;\n\t},\n\tget: function( owner, key ) {\n\t\treturn key === undefined ?\n\t\t\tthis.cache( owner ) :\n\n\t\t\t// Always use camelCase key (gh-2257)\n\t\t\towner[ this.expando ] && owner[ this.expando ][ camelCase( key ) ];\n\t},\n\taccess: function( owner, key, value ) {\n\n\t\t// In cases where either:\n\t\t//\n\t\t// 1. No key was specified\n\t\t// 2. A string key was specified, but no value provided\n\t\t//\n\t\t// Take the \"read\" path and allow the get method to determine\n\t\t// which value to return, respectively either:\n\t\t//\n\t\t// 1. The entire cache object\n\t\t// 2. The data stored at the key\n\t\t//\n\t\tif ( key === undefined ||\n\t\t\t\t( ( key && typeof key === \"string\" ) && value === undefined ) ) {\n\n\t\t\treturn this.get( owner, key );\n\t\t}\n\n\t\t// When the key is not a string, or both a key and value\n\t\t// are specified, set or extend (existing objects) with either:\n\t\t//\n\t\t// 1. An object of properties\n\t\t// 2. A key and value\n\t\t//\n\t\tthis.set( owner, key, value );\n\n\t\t// Since the \"set\" path can have two possible entry points\n\t\t// return the expected data based on which path was taken[*]\n\t\treturn value !== undefined ? value : key;\n\t},\n\tremove: function( owner, key ) {\n\t\tvar i,\n\t\t\tcache = owner[ this.expando ];\n\n\t\tif ( cache === undefined ) {\n\t\t\treturn;\n\t\t}\n\n\t\tif ( key !== undefined ) {\n\n\t\t\t// Support array or space separated string of keys\n\t\t\tif ( Array.isArray( key ) ) {\n\n\t\t\t\t// If key is an array of keys...\n\t\t\t\t// We always set camelCase keys, so remove that.\n\t\t\t\tkey = key.map( camelCase );\n\t\t\t} else {\n\t\t\t\tkey = camelCase( key );\n\n\t\t\t\t// If a key with the spaces exists, use it.\n\t\t\t\t// Otherwise, create an array by matching non-whitespace\n\t\t\t\tkey = key in cache ?\n\t\t\t\t\t[ key ] :\n\t\t\t\t\t( key.match( rnothtmlwhite ) || [] );\n\t\t\t}\n\n\t\t\ti = key.length;\n\n\t\t\twhile ( i-- ) {\n\t\t\t\tdelete cache[ key[ i ] ];\n\t\t\t}\n\t\t}\n\n\t\t// Remove the expando if there's no more data\n\t\tif ( key === undefined || jQuery.isEmptyObject( cache ) ) {\n\n\t\t\t// Support: Chrome <=35 - 45\n\t\t\t// Webkit & Blink performance suffers when deleting properties\n\t\t\t// from DOM nodes, so set to undefined instead\n\t\t\t// https://bugs.chromium.org/p/chromium/issues/detail?id=378607 (bug restricted)\n\t\t\tif ( owner.nodeType ) {\n\t\t\t\towner[ this.expando ] = undefined;\n\t\t\t} else {\n\t\t\t\tdelete owner[ this.expando ];\n\t\t\t}\n\t\t}\n\t},\n\thasData: function( owner ) {\n\t\tvar cache = owner[ this.expando ];\n\t\treturn cache !== undefined && !jQuery.isEmptyObject( cache );\n\t}\n};\nvar dataPriv = new Data();\n\nvar dataUser = new Data();\n\n\n\n//\tImplementation Summary\n//\n//\t1. Enforce API surface and semantic compatibility with 1.9.x branch\n//\t2. Improve the module's maintainability by reducing the storage\n//\t\tpaths to a single mechanism.\n//\t3. Use the same single mechanism to support \"private\" and \"user\" data.\n//\t4. _Never_ expose \"private\" data to user code (TODO: Drop _data, _removeData)\n//\t5. Avoid exposing implementation details on user objects (eg. expando properties)\n//\t6. Provide a clear path for implementation upgrade to WeakMap in 2014\n\nvar rbrace = /^(?:\\{[\\w\\W]*\\}|\\[[\\w\\W]*\\])$/,\n\trmultiDash = /[A-Z]/g;\n\nfunction getData( data ) {\n\tif ( data === \"true\" ) {\n\t\treturn true;\n\t}\n\n\tif ( data === \"false\" ) {\n\t\treturn false;\n\t}\n\n\tif ( data === \"null\" ) {\n\t\treturn null;\n\t}\n\n\t// Only convert to a number if it doesn't change the string\n\tif ( data === +data + \"\" ) {\n\t\treturn +data;\n\t}\n\n\tif ( rbrace.test( data ) ) {\n\t\treturn JSON.parse( data );\n\t}\n\n\treturn data;\n}\n\nfunction dataAttr( elem, key, data ) {\n\tvar name;\n\n\t// If nothing was found internally, try to fetch any\n\t// data from the HTML5 data-* attribute\n\tif ( data === undefined && elem.nodeType === 1 ) {\n\t\tname = \"data-\" + key.replace( rmultiDash, \"-$&\" ).toLowerCase();\n\t\tdata = elem.getAttribute( name );\n\n\t\tif ( typeof data === \"string\" ) {\n\t\t\ttry {\n\t\t\t\tdata = getData( data );\n\t\t\t} catch ( e ) {}\n\n\t\t\t// Make sure we set the data so it isn't changed later\n\t\t\tdataUser.set( elem, key, data );\n\t\t} else {\n\t\t\tdata = undefined;\n\t\t}\n\t}\n\treturn data;\n}\n\njQuery.extend( {\n\thasData: function( elem ) {\n\t\treturn dataUser.hasData( elem ) || dataPriv.hasData( elem );\n\t},\n\n\tdata: function( elem, name, data ) {\n\t\treturn dataUser.access( elem, name, data );\n\t},\n\n\tremoveData: function( elem, name ) {\n\t\tdataUser.remove( elem, name );\n\t},\n\n\t// TODO: Now that all calls to _data and _removeData have been replaced\n\t// with direct calls to dataPriv methods, these can be deprecated.\n\t_data: function( elem, name, data ) {\n\t\treturn dataPriv.access( elem, name, data );\n\t},\n\n\t_removeData: function( elem, name ) {\n\t\tdataPriv.remove( elem, name );\n\t}\n} );\n\njQuery.fn.extend( {\n\tdata: function( key, value ) {\n\t\tvar i, name, data,\n\t\t\telem = this[ 0 ],\n\t\t\tattrs = elem && elem.attributes;\n\n\t\t// Gets all values\n\t\tif ( key === undefined ) {\n\t\t\tif ( this.length ) {\n\t\t\t\tdata = dataUser.get( elem );\n\n\t\t\t\tif ( elem.nodeType === 1 && !dataPriv.get( elem, \"hasDataAttrs\" ) ) {\n\t\t\t\t\ti = attrs.length;\n\t\t\t\t\twhile ( i-- ) {\n\n\t\t\t\t\t\t// Support: IE 11 only\n\t\t\t\t\t\t// The attrs elements can be null (trac-14894)\n\t\t\t\t\t\tif ( attrs[ i ] ) {\n\t\t\t\t\t\t\tname = attrs[ i ].name;\n\t\t\t\t\t\t\tif ( name.indexOf( \"data-\" ) === 0 ) {\n\t\t\t\t\t\t\t\tname = camelCase( name.slice( 5 ) );\n\t\t\t\t\t\t\t\tdataAttr( elem, name, data[ name ] );\n\t\t\t\t\t\t\t}\n\t\t\t\t\t\t}\n\t\t\t\t\t}\n\t\t\t\t\tdataPriv.set( elem, \"hasDataAttrs\", true );\n\t\t\t\t}\n\t\t\t}\n\n\t\t\treturn data;\n\t\t}\n\n\t\t// Sets multiple values\n\t\tif ( typeof key === \"object\" ) {\n\t\t\treturn this.each( function() {\n\t\t\t\tdataUser.set( this, key );\n\t\t\t} );\n\t\t}\n\n\t\treturn access( this, function( value ) {\n\t\t\tvar data;\n\n\t\t\t// The calling jQuery object (element matches) is not empty\n\t\t\t// (and therefore has an element appears at this[ 0 ]) and the\n\t\t\t// `value` parameter was not undefined. An empty jQuery object\n\t\t\t// will result in `undefined` for elem = this[ 0 ] which will\n\t\t\t// throw an exception if an attempt to read a data cache is made.\n\t\t\tif ( elem && value === undefined ) {\n\n\t\t\t\t// Attempt to get data from the cache\n\t\t\t\t// The key will always be camelCased in Data\n\t\t\t\tdata = dataUser.get( elem, key );\n\t\t\t\tif ( data !== undefined ) {\n\t\t\t\t\treturn data;\n\t\t\t\t}\n\n\t\t\t\t// Attempt to \"discover\" the data in\n\t\t\t\t// HTML5 custom data-* attrs\n\t\t\t\tdata = dataAttr( elem, key );\n\t\t\t\tif ( data !== undefined ) {\n\t\t\t\t\treturn data;\n\t\t\t\t}\n\n\t\t\t\t// We tried really hard, but the data doesn't exist.\n\t\t\t\treturn;\n\t\t\t}\n\n\t\t\t// Set the data...\n\t\t\tthis.each( function() {\n\n\t\t\t\t// We always store the camelCased key\n\t\t\t\tdataUser.set( this, key, value );\n\t\t\t} );\n\t\t}, null, value, arguments.length > 1, null, true );\n\t},\n\n\tremoveData: function( key ) {\n\t\treturn this.each( function() {\n\t\t\tdataUser.remove( this, key );\n\t\t} );\n\t}\n} );\n\n\njQuery.extend( {\n\tqueue: function( elem, type, data ) {\n\t\tvar queue;\n\n\t\tif ( elem ) {\n\t\t\ttype = ( type || \"fx\" ) + \"queue\";\n\t\t\tqueue = dataPriv.get( elem, type );\n\n\t\t\t// Speed up dequeue by getting out quickly if this is just a lookup\n\t\t\tif ( data ) {\n\t\t\t\tif ( !queue || Array.isArray( data ) ) {\n\t\t\t\t\tqueue = dataPriv.access( elem, type, jQuery.makeArray( data ) );\n\t\t\t\t} else {\n\t\t\t\t\tqueue.push( data );\n\t\t\t\t}\n\t\t\t}\n\t\t\treturn queue || [];\n\t\t}\n\t},\n\n\tdequeue: function( elem, type ) {\n\t\ttype = type || \"fx\";\n\n\t\tvar queue = jQuery.queue( elem, type ),\n\t\t\tstartLength = queue.length,\n\t\t\tfn = queue.shift(),\n\t\t\thooks = jQuery._queueHooks( elem, type ),\n\t\t\tnext = function() {\n\t\t\t\tjQuery.dequeue( elem, type );\n\t\t\t};\n\n\t\t// If the fx queue is dequeued, always remove the progress sentinel\n\t\tif ( fn === \"inprogress\" ) {\n\t\t\tfn = queue.shift();\n\t\t\tstartLength--;\n\t\t}\n\n\t\tif ( fn ) {\n\n\t\t\t// Add a progress sentinel to prevent the fx queue from being\n\t\t\t// automatically dequeued\n\t\t\tif ( type === \"fx\" ) {\n\t\t\t\tqueue.unshift( \"inprogress\" );\n\t\t\t}\n\n\t\t\t// Clear up the last queue stop function\n\t\t\tdelete hooks.stop;\n\t\t\tfn.call( elem, next, hooks );\n\t\t}\n\n\t\tif ( !startLength && hooks ) {\n\t\t\thooks.empty.fire();\n\t\t}\n\t},\n\n\t// Not public - generate a queueHooks object, or return the current one\n\t_queueHooks: function( elem, type ) {\n\t\tvar key = type + \"queueHooks\";\n\t\treturn dataPriv.get( elem, key ) || dataPriv.access( elem, key, {\n\t\t\tempty: jQuery.Callbacks( \"once memory\" ).add( function() {\n\t\t\t\tdataPriv.remove( elem, [ type + \"queue\", key ] );\n\t\t\t} )\n\t\t} );\n\t}\n} );\n\njQuery.fn.extend( {\n\tqueue: function( type, data ) {\n\t\tvar setter = 2;\n\n\t\tif ( typeof type !== \"string\" ) {\n\t\t\tdata = type;\n\t\t\ttype = \"fx\";\n\t\t\tsetter--;\n\t\t}\n\n\t\tif ( arguments.length < setter ) {\n\t\t\treturn jQuery.queue( this[ 0 ], type );\n\t\t}\n\n\t\treturn data === undefined ?\n\t\t\tthis :\n\t\t\tthis.each( function() {\n\t\t\t\tvar queue = jQuery.queue( this, type, data );\n\n\t\t\t\t// Ensure a hooks for this queue\n\t\t\t\tjQuery._queueHooks( this, type );\n\n\t\t\t\tif ( type === \"fx\" && queue[ 0 ] !== \"inprogress\" ) {\n\t\t\t\t\tjQuery.dequeue( this, type );\n\t\t\t\t}\n\t\t\t} );\n\t},\n\tdequeue: function( type ) {\n\t\treturn this.each( function() {\n\t\t\tjQuery.dequeue( this, type );\n\t\t} );\n\t},\n\tclearQueue: function( type ) {\n\t\treturn this.queue( type || \"fx\", [] );\n\t},\n\n\t// Get a promise resolved when queues of a certain type\n\t// are emptied (fx is the type by default)\n\tpromise: function( type, obj ) {\n\t\tvar tmp,\n\t\t\tcount = 1,\n\t\t\tdefer = jQuery.Deferred(),\n\t\t\telements = this,\n\t\t\ti = this.length,\n\t\t\tresolve = function() {\n\t\t\t\tif ( !( --count ) ) {\n\t\t\t\t\tdefer.resolveWith( elements, [ elements ] );\n\t\t\t\t}\n\t\t\t};\n\n\t\tif ( typeof type !== \"string\" ) {\n\t\t\tobj = type;\n\t\t\ttype = undefined;\n\t\t}\n\t\ttype = type || \"fx\";\n\n\t\twhile ( i-- ) {\n\t\t\ttmp = dataPriv.get( elements[ i ], type + \"queueHooks\" );\n\t\t\tif ( tmp && tmp.empty ) {\n\t\t\t\tcount++;\n\t\t\t\ttmp.empty.add( resolve );\n\t\t\t}\n\t\t}\n\t\tresolve();\n\t\treturn defer.promise( obj );\n\t}\n} );\nvar pnum = ( /[+-]?(?:\\d*\\.|)\\d+(?:[eE][+-]?\\d+|)/ ).source;\n\nvar rcssNum = new RegExp( \"^(?:([+-])=|)(\" + pnum + \")([a-z%]*)$\", \"i\" );\n\n\nvar cssExpand = [ \"Top\", \"Right\", \"Bottom\", \"Left\" ];\n\nvar documentElement = document.documentElement;\n\n\n\n\tvar isAttached = function( elem ) {\n\t\t\treturn jQuery.contains( elem.ownerDocument, elem );\n\t\t},\n\t\tcomposed = { composed: true };\n\n\t// Support: IE 9 - 11+, Edge 12 - 18+, iOS 10.0 - 10.2 only\n\t// Check attachment across shadow DOM boundaries when possible (gh-3504)\n\t// Support: iOS 10.0-10.2 only\n\t// Early iOS 10 versions support `attachShadow` but not `getRootNode`,\n\t// leading to errors. We need to check for `getRootNode`.\n\tif ( documentElement.getRootNode ) {\n\t\tisAttached = function( elem ) {\n\t\t\treturn jQuery.contains( elem.ownerDocument, elem ) ||\n\t\t\t\telem.getRootNode( composed ) === elem.ownerDocument;\n\t\t};\n\t}\nvar isHiddenWithinTree = function( elem, el ) {\n\n\t\t// isHiddenWithinTree might be called from jQuery#filter function;\n\t\t// in that case, element will be second argument\n\t\telem = el || elem;\n\n\t\t// Inline style trumps all\n\t\treturn elem.style.display === \"none\" ||\n\t\t\telem.style.display === \"\" &&\n\n\t\t\t// Otherwise, check computed style\n\t\t\t// Support: Firefox <=43 - 45\n\t\t\t// Disconnected elements can have computed display: none, so first confirm that elem is\n\t\t\t// in the document.\n\t\t\tisAttached( elem ) &&\n\n\t\t\tjQuery.css( elem, \"display\" ) === \"none\";\n\t};\n\n\n\nfunction adjustCSS( elem, prop, valueParts, tween ) {\n\tvar adjusted, scale,\n\t\tmaxIterations = 20,\n\t\tcurrentValue = tween ?\n\t\t\tfunction() {\n\t\t\t\treturn tween.cur();\n\t\t\t} :\n\t\t\tfunction() {\n\t\t\t\treturn jQuery.css( elem, prop, \"\" );\n\t\t\t},\n\t\tinitial = currentValue(),\n\t\tunit = valueParts && valueParts[ 3 ] || ( jQuery.cssNumber[ prop ] ? \"\" : \"px\" ),\n\n\t\t// Starting value computation is required for potential unit mismatches\n\t\tinitialInUnit = elem.nodeType &&\n\t\t\t( jQuery.cssNumber[ prop ] || unit !== \"px\" && +initial ) &&\n\t\t\trcssNum.exec( jQuery.css( elem, prop ) );\n\n\tif ( initialInUnit && initialInUnit[ 3 ] !== unit ) {\n\n\t\t// Support: Firefox <=54\n\t\t// Halve the iteration target value to prevent interference from CSS upper bounds (gh-2144)\n\t\tinitial = initial / 2;\n\n\t\t// Trust units reported by jQuery.css\n\t\tunit = unit || initialInUnit[ 3 ];\n\n\t\t// Iteratively approximate from a nonzero starting point\n\t\tinitialInUnit = +initial || 1;\n\n\t\twhile ( maxIterations-- ) {\n\n\t\t\t// Evaluate and update our best guess (doubling guesses that zero out).\n\t\t\t// Finish if the scale equals or crosses 1 (making the old*new product non-positive).\n\t\t\tjQuery.style( elem, prop, initialInUnit + unit );\n\t\t\tif ( ( 1 - scale ) * ( 1 - ( scale = currentValue() / initial || 0.5 ) ) <= 0 ) {\n\t\t\t\tmaxIterations = 0;\n\t\t\t}\n\t\t\tinitialInUnit = initialInUnit / scale;\n\n\t\t}\n\n\t\tinitialInUnit = initialInUnit * 2;\n\t\tjQuery.style( elem, prop, initialInUnit + unit );\n\n\t\t// Make sure we update the tween properties later on\n\t\tvalueParts = valueParts || [];\n\t}\n\n\tif ( valueParts ) {\n\t\tinitialInUnit = +initialInUnit || +initial || 0;\n\n\t\t// Apply relative offset (+=/-=) if specified\n\t\tadjusted = valueParts[ 1 ] ?\n\t\t\tinitialInUnit + ( valueParts[ 1 ] + 1 ) * valueParts[ 2 ] :\n\t\t\t+valueParts[ 2 ];\n\t\tif ( tween ) {\n\t\t\ttween.unit = unit;\n\t\t\ttween.start = initialInUnit;\n\t\t\ttween.end = adjusted;\n\t\t}\n\t}\n\treturn adjusted;\n}\n\n\nvar defaultDisplayMap = {};\n\nfunction getDefaultDisplay( elem ) {\n\tvar temp,\n\t\tdoc = elem.ownerDocument,\n\t\tnodeName = elem.nodeName,\n\t\tdisplay = defaultDisplayMap[ nodeName ];\n\n\tif ( display ) {\n\t\treturn display;\n\t}\n\n\ttemp = doc.body.appendChild( doc.createElement( nodeName ) );\n\tdisplay = jQuery.css( temp, \"display\" );\n\n\ttemp.parentNode.removeChild( temp );\n\n\tif ( display === \"none\" ) {\n\t\tdisplay = \"block\";\n\t}\n\tdefaultDisplayMap[ nodeName ] = display;\n\n\treturn display;\n}\n\nfunction showHide( elements, show ) {\n\tvar display, elem,\n\t\tvalues = [],\n\t\tindex = 0,\n\t\tlength = elements.length;\n\n\t// Determine new display value for elements that need to change\n\tfor ( ; index < length; index++ ) {\n\t\telem = elements[ index ];\n\t\tif ( !elem.style ) {\n\t\t\tcontinue;\n\t\t}\n\n\t\tdisplay = elem.style.display;\n\t\tif ( show ) {\n\n\t\t\t// Since we force visibility upon cascade-hidden elements, an immediate (and slow)\n\t\t\t// check is required in this first loop unless we have a nonempty display value (either\n\t\t\t// inline or about-to-be-restored)\n\t\t\tif ( display === \"none\" ) {\n\t\t\t\tvalues[ index ] = dataPriv.get( elem, \"display\" ) || null;\n\t\t\t\tif ( !values[ index ] ) {\n\t\t\t\t\telem.style.display = \"\";\n\t\t\t\t}\n\t\t\t}\n\t\t\tif ( elem.style.display === \"\" && isHiddenWithinTree( elem ) ) {\n\t\t\t\tvalues[ index ] = getDefaultDisplay( elem );\n\t\t\t}\n\t\t} else {\n\t\t\tif ( display !== \"none\" ) {\n\t\t\t\tvalues[ index ] = \"none\";\n\n\t\t\t\t// Remember what we're overwriting\n\t\t\t\tdataPriv.set( elem, \"display\", display );\n\t\t\t}\n\t\t}\n\t}\n\n\t// Set the display of the elements in a second loop to avoid constant reflow\n\tfor ( index = 0; index < length; index++ ) {\n\t\tif ( values[ index ] != null ) {\n\t\t\telements[ index ].style.display = values[ index ];\n\t\t}\n\t}\n\n\treturn elements;\n}\n\njQuery.fn.extend( {\n\tshow: function() {\n\t\treturn showHide( this, true );\n\t},\n\thide: function() {\n\t\treturn showHide( this );\n\t},\n\ttoggle: function( state ) {\n\t\tif ( typeof state === \"boolean\" ) {\n\t\t\treturn state ? this.show() : this.hide();\n\t\t}\n\n\t\treturn this.each( function() {\n\t\t\tif ( isHiddenWithinTree( this ) ) {\n\t\t\t\tjQuery( this ).show();\n\t\t\t} else {\n\t\t\t\tjQuery( this ).hide();\n\t\t\t}\n\t\t} );\n\t}\n} );\nvar rcheckableType = ( /^(?:checkbox|radio)$/i );\n\nvar rtagName = ( /<([a-z][^\\/\\0>\\x20\\t\\r\\n\\f]*)/i );\n\nvar rscriptType = ( /^$|^module$|\\/(?:java|ecma)script/i );\n\n\n\n( function() {\n\tvar fragment = document.createDocumentFragment(),\n\t\tdiv = fragment.appendChild( document.createElement( \"div\" ) ),\n\t\tinput = document.createElement( \"input\" );\n\n\t// Support: Android 4.0 - 4.3 only\n\t// Check state lost if the name is set (trac-11217)\n\t// Support: Windows Web Apps (WWA)\n\t// `name` and `type` must use .setAttribute for WWA (trac-14901)\n\tinput.setAttribute( \"type\", \"radio\" );\n\tinput.setAttribute( \"checked\", \"checked\" );\n\tinput.setAttribute( \"name\", \"t\" );\n\n\tdiv.appendChild( input );\n\n\t// Support: Android <=4.1 only\n\t// Older WebKit doesn't clone checked state correctly in fragments\n\tsupport.checkClone = div.cloneNode( true ).cloneNode( true ).lastChild.checked;\n\n\t// Support: IE <=11 only\n\t// Make sure textarea (and checkbox) defaultValue is properly cloned\n\tdiv.innerHTML = \"<textarea>x</textarea>\";\n\tsupport.noCloneChecked = !!div.cloneNode( true ).lastChild.defaultValue;\n\n\t// Support: IE <=9 only\n\t// IE <=9 replaces <option> tags with their contents when inserted outside of\n\t// the select element.\n\tdiv.innerHTML = \"<option></option>\";\n\tsupport.option = !!div.lastChild;\n} )();\n\n\n// We have to close these tags to support XHTML (trac-13200)\nvar wrapMap = {\n\n\t// XHTML parsers do not magically insert elements in the\n\t// same way that tag soup parsers do. So we cannot shorten\n\t// this by omitting <tbody> or other required elements.\n\tthead: [ 1, \"<table>\", \"</table>\" ],\n\tcol: [ 2, \"<table><colgroup>\", \"</colgroup></table>\" ],\n\ttr: [ 2, \"<table><tbody>\", \"</tbody></table>\" ],\n\ttd: [ 3, \"<table><tbody><tr>\", \"</tr></tbody></table>\" ],\n\n\t_default: [ 0, \"\", \"\" ]\n};\n\nwrapMap.tbody = wrapMap.tfoot = wrapMap.colgroup = wrapMap.caption = wrapMap.thead;\nwrapMap.th = wrapMap.td;\n\n// Support: IE <=9 only\nif ( !support.option ) {\n\twrapMap.optgroup = wrapMap.option = [ 1, \"<select multiple='multiple'>\", \"</select>\" ];\n}\n\n\nfunction getAll( context, tag ) {\n\n\t// Support: IE <=9 - 11 only\n\t// Use typeof to avoid zero-argument method invocation on host objects (trac-15151)\n\tvar ret;\n\n\tif ( typeof context.getElementsByTagName !== \"undefined\" ) {\n\t\tret = context.getElementsByTagName( tag || \"*\" );\n\n\t} else if ( typeof context.querySelectorAll !== \"undefined\" ) {\n\t\tret = context.querySelectorAll( tag || \"*\" );\n\n\t} else {\n\t\tret = [];\n\t}\n\n\tif ( tag === undefined || tag && nodeName( context, tag ) ) {\n\t\treturn jQuery.merge( [ context ], ret );\n\t}\n\n\treturn ret;\n}\n\n\n// Mark scripts as having already been evaluated\nfunction setGlobalEval( elems, refElements ) {\n\tvar i = 0,\n\t\tl = elems.length;\n\n\tfor ( ; i < l; i++ ) {\n\t\tdataPriv.set(\n\t\t\telems[ i ],\n\t\t\t\"globalEval\",\n\t\t\t!refElements || dataPriv.get( refElements[ i ], \"globalEval\" )\n\t\t);\n\t}\n}\n\n\nvar rhtml = /<|&#?\\w+;/;\n\nfunction buildFragment( elems, context, scripts, selection, ignored ) {\n\tvar elem, tmp, tag, wrap, attached, j,\n\t\tfragment = context.createDocumentFragment(),\n\t\tnodes = [],\n\t\ti = 0,\n\t\tl = elems.length;\n\n\tfor ( ; i < l; i++ ) {\n\t\telem = elems[ i ];\n\n\t\tif ( elem || elem === 0 ) {\n\n\t\t\t// Add nodes directly\n\t\t\tif ( toType( elem ) === \"object\" ) {\n\n\t\t\t\t// Support: Android <=4.0 only, PhantomJS 1 only\n\t\t\t\t// push.apply(_, arraylike) throws on ancient WebKit\n\t\t\t\tjQuery.merge( nodes, elem.nodeType ? [ elem ] : elem );\n\n\t\t\t// Convert non-html into a text node\n\t\t\t} else if ( !rhtml.test( elem ) ) {\n\t\t\t\tnodes.push( context.createTextNode( elem ) );\n\n\t\t\t// Convert html into DOM nodes\n\t\t\t} else {\n\t\t\t\ttmp = tmp || fragment.appendChild( context.createElement( \"div\" ) );\n\n\t\t\t\t// Deserialize a standard representation\n\t\t\t\ttag = ( rtagName.exec( elem ) || [ \"\", \"\" ] )[ 1 ].toLowerCase();\n\t\t\t\twrap = wrapMap[ tag ] || wrapMap._default;\n\t\t\t\ttmp.innerHTML = wrap[ 1 ] + jQuery.htmlPrefilter( elem ) + wrap[ 2 ];\n\n\t\t\t\t// Descend through wrappers to the right content\n\t\t\t\tj = wrap[ 0 ];\n\t\t\t\twhile ( j-- ) {\n\t\t\t\t\ttmp = tmp.lastChild;\n\t\t\t\t}\n\n\t\t\t\t// Support: Android <=4.0 only, PhantomJS 1 only\n\t\t\t\t// push.apply(_, arraylike) throws on ancient WebKit\n\t\t\t\tjQuery.merge( nodes, tmp.childNodes );\n\n\t\t\t\t// Remember the top-level container\n\t\t\t\ttmp = fragment.firstChild;\n\n\t\t\t\t// Ensure the created nodes are orphaned (trac-12392)\n\t\t\t\ttmp.textContent = \"\";\n\t\t\t}\n\t\t}\n\t}\n\n\t// Remove wrapper from fragment\n\tfragment.textContent = \"\";\n\n\ti = 0;\n\twhile ( ( elem = nodes[ i++ ] ) ) {\n\n\t\t// Skip elements already in the context collection (trac-4087)\n\t\tif ( selection && jQuery.inArray( elem, selection ) > -1 ) {\n\t\t\tif ( ignored ) {\n\t\t\t\tignored.push( elem );\n\t\t\t}\n\t\t\tcontinue;\n\t\t}\n\n\t\tattached = isAttached( elem );\n\n\t\t// Append to fragment\n\t\ttmp = getAll( fragment.appendChild( elem ), \"script\" );\n\n\t\t// Preserve script evaluation history\n\t\tif ( attached ) {\n\t\t\tsetGlobalEval( tmp );\n\t\t}\n\n\t\t// Capture executables\n\t\tif ( scripts ) {\n\t\t\tj = 0;\n\t\t\twhile ( ( elem = tmp[ j++ ] ) ) {\n\t\t\t\tif ( rscriptType.test( elem.type || \"\" ) ) {\n\t\t\t\t\tscripts.push( elem );\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\t}\n\n\treturn fragment;\n}\n\n\nvar rtypenamespace = /^([^.]*)(?:\\.(.+)|)/;\n\nfunction returnTrue() {\n\treturn true;\n}\n\nfunction returnFalse() {\n\treturn false;\n}\n\nfunction on( elem, types, selector, data, fn, one ) {\n\tvar origFn, type;\n\n\t// Types can be a map of types/handlers\n\tif ( typeof types === \"object\" ) {\n\n\t\t// ( types-Object, selector, data )\n\t\tif ( typeof selector !== \"string\" ) {\n\n\t\t\t// ( types-Object, data )\n\t\t\tdata = data || selector;\n\t\t\tselector = undefined;\n\t\t}\n\t\tfor ( type in types ) {\n\t\t\ton( elem, type, selector, data, types[ type ], one );\n\t\t}\n\t\treturn elem;\n\t}\n\n\tif ( data == null && fn == null ) {\n\n\t\t// ( types, fn )\n\t\tfn = selector;\n\t\tdata = selector = undefined;\n\t} else if ( fn == null ) {\n\t\tif ( typeof selector === \"string\" ) {\n\n\t\t\t// ( types, selector, fn )\n\t\t\tfn = data;\n\t\t\tdata = undefined;\n\t\t} else {\n\n\t\t\t// ( types, data, fn )\n\t\t\tfn = data;\n\t\t\tdata = selector;\n\t\t\tselector = undefined;\n\t\t}\n\t}\n\tif ( fn === false ) {\n\t\tfn = returnFalse;\n\t} else if ( !fn ) {\n\t\treturn elem;\n\t}\n\n\tif ( one === 1 ) {\n\t\torigFn = fn;\n\t\tfn = function( event ) {\n\n\t\t\t// Can use an empty set, since event contains the info\n\t\t\tjQuery().off( event );\n\t\t\treturn origFn.apply( this, arguments );\n\t\t};\n\n\t\t// Use same guid so caller can remove using origFn\n\t\tfn.guid = origFn.guid || ( origFn.guid = jQuery.guid++ );\n\t}\n\treturn elem.each( function() {\n\t\tjQuery.event.add( this, types, fn, data, selector );\n\t} );\n}\n\n/*\n * Helper functions for managing events -- not part of the public interface.\n * Props to Dean Edwards' addEvent library for many of the ideas.\n */\njQuery.event = {\n\n\tglobal: {},\n\n\tadd: function( elem, types, handler, data, selector ) {\n\n\t\tvar handleObjIn, eventHandle, tmp,\n\t\t\tevents, t, handleObj,\n\t\t\tspecial, handlers, type, namespaces, origType,\n\t\t\telemData = dataPriv.get( elem );\n\n\t\t// Only attach events to objects that accept data\n\t\tif ( !acceptData( elem ) ) {\n\t\t\treturn;\n\t\t}\n\n\t\t// Caller can pass in an object of custom data in lieu of the handler\n\t\tif ( handler.handler ) {\n\t\t\thandleObjIn = handler;\n\t\t\thandler = handleObjIn.handler;\n\t\t\tselector = handleObjIn.selector;\n\t\t}\n\n\t\t// Ensure that invalid selectors throw exceptions at attach time\n\t\t// Evaluate against documentElement in case elem is a non-element node (e.g., document)\n\t\tif ( selector ) {\n\t\t\tjQuery.find.matchesSelector( documentElement, selector );\n\t\t}\n\n\t\t// Make sure that the handler has a unique ID, used to find/remove it later\n\t\tif ( !handler.guid ) {\n\t\t\thandler.guid = jQuery.guid++;\n\t\t}\n\n\t\t// Init the element's event structure and main handler, if this is the first\n\t\tif ( !( events = elemData.events ) ) {\n\t\t\tevents = elemData.events = Object.create( null );\n\t\t}\n\t\tif ( !( eventHandle = elemData.handle ) ) {\n\t\t\teventHandle = elemData.handle = function( e ) {\n\n\t\t\t\t// Discard the second event of a jQuery.event.trigger() and\n\t\t\t\t// when an event is called after a page has unloaded\n\t\t\t\treturn typeof jQuery !== \"undefined\" && jQuery.event.triggered !== e.type ?\n\t\t\t\t\tjQuery.event.dispatch.apply( elem, arguments ) : undefined;\n\t\t\t};\n\t\t}\n\n\t\t// Handle multiple events separated by a space\n\t\ttypes = ( types || \"\" ).match( rnothtmlwhite ) || [ \"\" ];\n\t\tt = types.length;\n\t\twhile ( t-- ) {\n\t\t\ttmp = rtypenamespace.exec( types[ t ] ) || [];\n\t\t\ttype = origType = tmp[ 1 ];\n\t\t\tnamespaces = ( tmp[ 2 ] || \"\" ).split( \".\" ).sort();\n\n\t\t\t// There *must* be a type, no attaching namespace-only handlers\n\t\t\tif ( !type ) {\n\t\t\t\tcontinue;\n\t\t\t}\n\n\t\t\t// If event changes its type, use the special event handlers for the changed type\n\t\t\tspecial = jQuery.event.special[ type ] || {};\n\n\t\t\t// If selector defined, determine special event api type, otherwise given type\n\t\t\ttype = ( selector ? special.delegateType : special.bindType ) || type;\n\n\t\t\t// Update special based on newly reset type\n\t\t\tspecial = jQuery.event.special[ type ] || {};\n\n\t\t\t// handleObj is passed to all event handlers\n\t\t\thandleObj = jQuery.extend( {\n\t\t\t\ttype: type,\n\t\t\t\torigType: origType,\n\t\t\t\tdata: data,\n\t\t\t\thandler: handler,\n\t\t\t\tguid: handler.guid,\n\t\t\t\tselector: selector,\n\t\t\t\tneedsContext: selector && jQuery.expr.match.needsContext.test( selector ),\n\t\t\t\tnamespace: namespaces.join( \".\" )\n\t\t\t}, handleObjIn );\n\n\t\t\t// Init the event handler queue if we're the first\n\t\t\tif ( !( handlers = events[ type ] ) ) {\n\t\t\t\thandlers = events[ type ] = [];\n\t\t\t\thandlers.delegateCount = 0;\n\n\t\t\t\t// Only use addEventListener if the special events handler returns false\n\t\t\t\tif ( !special.setup ||\n\t\t\t\t\tspecial.setup.call( elem, data, namespaces, eventHandle ) === false ) {\n\n\t\t\t\t\tif ( elem.addEventListener ) {\n\t\t\t\t\t\telem.addEventListener( type, eventHandle );\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t}\n\n\t\t\tif ( special.add ) {\n\t\t\t\tspecial.add.call( elem, handleObj );\n\n\t\t\t\tif ( !handleObj.handler.guid ) {\n\t\t\t\t\thandleObj.handler.guid = handler.guid;\n\t\t\t\t}\n\t\t\t}\n\n\t\t\t// Add to the element's handler list, delegates in front\n\t\t\tif ( selector ) {\n\t\t\t\thandlers.splice( handlers.delegateCount++, 0, handleObj );\n\t\t\t} else {\n\t\t\t\thandlers.push( handleObj );\n\t\t\t}\n\n\t\t\t// Keep track of which events have ever been used, for event optimization\n\t\t\tjQuery.event.global[ type ] = true;\n\t\t}\n\n\t},\n\n\t// Detach an event or set of events from an element\n\tremove: function( elem, types, handler, selector, mappedTypes ) {\n\n\t\tvar j, origCount, tmp,\n\t\t\tevents, t, handleObj,\n\t\t\tspecial, handlers, type, namespaces, origType,\n\t\t\telemData = dataPriv.hasData( elem ) && dataPriv.get( elem );\n\n\t\tif ( !elemData || !( events = elemData.events ) ) {\n\t\t\treturn;\n\t\t}\n\n\t\t// Once for each type.namespace in types; type may be omitted\n\t\ttypes = ( types || \"\" ).match( rnothtmlwhite ) || [ \"\" ];\n\t\tt = types.length;\n\t\twhile ( t-- ) {\n\t\t\ttmp = rtypenamespace.exec( types[ t ] ) || [];\n\t\t\ttype = origType = tmp[ 1 ];\n\t\t\tnamespaces = ( tmp[ 2 ] || \"\" ).split( \".\" ).sort();\n\n\t\t\t// Unbind all events (on this namespace, if provided) for the element\n\t\t\tif ( !type ) {\n\t\t\t\tfor ( type in events ) {\n\t\t\t\t\tjQuery.event.remove( elem, type + types[ t ], handler, selector, true );\n\t\t\t\t}\n\t\t\t\tcontinue;\n\t\t\t}\n\n\t\t\tspecial = jQuery.event.special[ type ] || {};\n\t\t\ttype = ( selector ? special.delegateType : special.bindType ) || type;\n\t\t\thandlers = events[ type ] || [];\n\t\t\ttmp = tmp[ 2 ] &&\n\t\t\t\tnew RegExp( \"(^|\\\\.)\" + namespaces.join( \"\\\\.(?:.*\\\\.|)\" ) + \"(\\\\.|$)\" );\n\n\t\t\t// Remove matching events\n\t\t\torigCount = j = handlers.length;\n\t\t\twhile ( j-- ) {\n\t\t\t\thandleObj = handlers[ j ];\n\n\t\t\t\tif ( ( mappedTypes || origType === handleObj.origType ) &&\n\t\t\t\t\t( !handler || handler.guid === handleObj.guid ) &&\n\t\t\t\t\t( !tmp || tmp.test( handleObj.namespace ) ) &&\n\t\t\t\t\t( !selector || selector === handleObj.selector ||\n\t\t\t\t\t\tselector === \"**\" && handleObj.selector ) ) {\n\t\t\t\t\thandlers.splice( j, 1 );\n\n\t\t\t\t\tif ( handleObj.selector ) {\n\t\t\t\t\t\thandlers.delegateCount--;\n\t\t\t\t\t}\n\t\t\t\t\tif ( special.remove ) {\n\t\t\t\t\t\tspecial.remove.call( elem, handleObj );\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t}\n\n\t\t\t// Remove generic event handler if we removed something and no more handlers exist\n\t\t\t// (avoids potential for endless recursion during removal of special event handlers)\n\t\t\tif ( origCount && !handlers.length ) {\n\t\t\t\tif ( !special.teardown ||\n\t\t\t\t\tspecial.teardown.call( elem, namespaces, elemData.handle ) === false ) {\n\n\t\t\t\t\tjQuery.removeEvent( elem, type, elemData.handle );\n\t\t\t\t}\n\n\t\t\t\tdelete events[ type ];\n\t\t\t}\n\t\t}\n\n\t\t// Remove data and the expando if it's no longer used\n\t\tif ( jQuery.isEmptyObject( events ) ) {\n\t\t\tdataPriv.remove( elem, \"handle events\" );\n\t\t}\n\t},\n\n\tdispatch: function( nativeEvent ) {\n\n\t\tvar i, j, ret, matched, handleObj, handlerQueue,\n\t\t\targs = new Array( arguments.length ),\n\n\t\t\t// Make a writable jQuery.Event from the native event object\n\t\t\tevent = jQuery.event.fix( nativeEvent ),\n\n\t\t\thandlers = (\n\t\t\t\tdataPriv.get( this, \"events\" ) || Object.create( null )\n\t\t\t)[ event.type ] || [],\n\t\t\tspecial = jQuery.event.special[ event.type ] || {};\n\n\t\t// Use the fix-ed jQuery.Event rather than the (read-only) native event\n\t\targs[ 0 ] = event;\n\n\t\tfor ( i = 1; i < arguments.length; i++ ) {\n\t\t\targs[ i ] = arguments[ i ];\n\t\t}\n\n\t\tevent.delegateTarget = this;\n\n\t\t// Call the preDispatch hook for the mapped type, and let it bail if desired\n\t\tif ( special.preDispatch && special.preDispatch.call( this, event ) === false ) {\n\t\t\treturn;\n\t\t}\n\n\t\t// Determine handlers\n\t\thandlerQueue = jQuery.event.handlers.call( this, event, handlers );\n\n\t\t// Run delegates first; they may want to stop propagation beneath us\n\t\ti = 0;\n\t\twhile ( ( matched = handlerQueue[ i++ ] ) && !event.isPropagationStopped() ) {\n\t\t\tevent.currentTarget = matched.elem;\n\n\t\t\tj = 0;\n\t\t\twhile ( ( handleObj = matched.handlers[ j++ ] ) &&\n\t\t\t\t!event.isImmediatePropagationStopped() ) {\n\n\t\t\t\t// If the event is namespaced, then each handler is only invoked if it is\n\t\t\t\t// specially universal or its namespaces are a superset of the event's.\n\t\t\t\tif ( !event.rnamespace || handleObj.namespace === false ||\n\t\t\t\t\tevent.rnamespace.test( handleObj.namespace ) ) {\n\n\t\t\t\t\tevent.handleObj = handleObj;\n\t\t\t\t\tevent.data = handleObj.data;\n\n\t\t\t\t\tret = ( ( jQuery.event.special[ handleObj.origType ] || {} ).handle ||\n\t\t\t\t\t\thandleObj.handler ).apply( matched.elem, args );\n\n\t\t\t\t\tif ( ret !== undefined ) {\n\t\t\t\t\t\tif ( ( event.result = ret ) === false ) {\n\t\t\t\t\t\t\tevent.preventDefault();\n\t\t\t\t\t\t\tevent.stopPropagation();\n\t\t\t\t\t\t}\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\n\t\t// Call the postDispatch hook for the mapped type\n\t\tif ( special.postDispatch ) {\n\t\t\tspecial.postDispatch.call( this, event );\n\t\t}\n\n\t\treturn event.result;\n\t},\n\n\thandlers: function( event, handlers ) {\n\t\tvar i, handleObj, sel, matchedHandlers, matchedSelectors,\n\t\t\thandlerQueue = [],\n\t\t\tdelegateCount = handlers.delegateCount,\n\t\t\tcur = event.target;\n\n\t\t// Find delegate handlers\n\t\tif ( delegateCount &&\n\n\t\t\t// Support: IE <=9\n\t\t\t// Black-hole SVG <use> instance trees (trac-13180)\n\t\t\tcur.nodeType &&\n\n\t\t\t// Support: Firefox <=42\n\t\t\t// Suppress spec-violating clicks indicating a non-primary pointer button (trac-3861)\n\t\t\t// https://www.w3.org/TR/DOM-Level-3-Events/#event-type-click\n\t\t\t// Support: IE 11 only\n\t\t\t// ...but not arrow key \"clicks\" of radio inputs, which can have `button` -1 (gh-2343)\n\t\t\t!( event.type === \"click\" && event.button >= 1 ) ) {\n\n\t\t\tfor ( ; cur !== this; cur = cur.parentNode || this ) {\n\n\t\t\t\t// Don't check non-elements (trac-13208)\n\t\t\t\t// Don't process clicks on disabled elements (trac-6911, trac-8165, trac-11382, trac-11764)\n\t\t\t\tif ( cur.nodeType === 1 && !( event.type === \"click\" && cur.disabled === true ) ) {\n\t\t\t\t\tmatchedHandlers = [];\n\t\t\t\t\tmatchedSelectors = {};\n\t\t\t\t\tfor ( i = 0; i < delegateCount; i++ ) {\n\t\t\t\t\t\thandleObj = handlers[ i ];\n\n\t\t\t\t\t\t// Don't conflict with Object.prototype properties (trac-13203)\n\t\t\t\t\t\tsel = handleObj.selector + \" \";\n\n\t\t\t\t\t\tif ( matchedSelectors[ sel ] === undefined ) {\n\t\t\t\t\t\t\tmatchedSelectors[ sel ] = handleObj.needsContext ?\n\t\t\t\t\t\t\t\tjQuery( sel, this ).index( cur ) > -1 :\n\t\t\t\t\t\t\t\tjQuery.find( sel, this, null, [ cur ] ).length;\n\t\t\t\t\t\t}\n\t\t\t\t\t\tif ( matchedSelectors[ sel ] ) {\n\t\t\t\t\t\t\tmatchedHandlers.push( handleObj );\n\t\t\t\t\t\t}\n\t\t\t\t\t}\n\t\t\t\t\tif ( matchedHandlers.length ) {\n\t\t\t\t\t\thandlerQueue.push( { elem: cur, handlers: matchedHandlers } );\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\n\t\t// Add the remaining (directly-bound) handlers\n\t\tcur = this;\n\t\tif ( delegateCount < handlers.length ) {\n\t\t\thandlerQueue.push( { elem: cur, handlers: handlers.slice( delegateCount ) } );\n\t\t}\n\n\t\treturn handlerQueue;\n\t},\n\n\taddProp: function( name, hook ) {\n\t\tObject.defineProperty( jQuery.Event.prototype, name, {\n\t\t\tenumerable: true,\n\t\t\tconfigurable: true,\n\n\t\t\tget: isFunction( hook ) ?\n\t\t\t\tfunction() {\n\t\t\t\t\tif ( this.originalEvent ) {\n\t\t\t\t\t\treturn hook( this.originalEvent );\n\t\t\t\t\t}\n\t\t\t\t} :\n\t\t\t\tfunction() {\n\t\t\t\t\tif ( this.originalEvent ) {\n\t\t\t\t\t\treturn this.originalEvent[ name ];\n\t\t\t\t\t}\n\t\t\t\t},\n\n\t\t\tset: function( value ) {\n\t\t\t\tObject.defineProperty( this, name, {\n\t\t\t\t\tenumerable: true,\n\t\t\t\t\tconfigurable: true,\n\t\t\t\t\twritable: true,\n\t\t\t\t\tvalue: value\n\t\t\t\t} );\n\t\t\t}\n\t\t} );\n\t},\n\n\tfix: function( originalEvent ) {\n\t\treturn originalEvent[ jQuery.expando ] ?\n\t\t\toriginalEvent :\n\t\t\tnew jQuery.Event( originalEvent );\n\t},\n\n\tspecial: {\n\t\tload: {\n\n\t\t\t// Prevent triggered image.load events from bubbling to window.load\n\t\t\tnoBubble: true\n\t\t},\n\t\tclick: {\n\n\t\t\t// Utilize native event to ensure correct state for checkable inputs\n\t\t\tsetup: function( data ) {\n\n\t\t\t\t// For mutual compressibility with _default, replace `this` access with a local var.\n\t\t\t\t// `|| data` is dead code meant only to preserve the variable through minification.\n\t\t\t\tvar el = this || data;\n\n\t\t\t\t// Claim the first handler\n\t\t\t\tif ( rcheckableType.test( el.type ) &&\n\t\t\t\t\tel.click && nodeName( el, \"input\" ) ) {\n\n\t\t\t\t\t// dataPriv.set( el, \"click\", ... )\n\t\t\t\t\tleverageNative( el, \"click\", true );\n\t\t\t\t}\n\n\t\t\t\t// Return false to allow normal processing in the caller\n\t\t\t\treturn false;\n\t\t\t},\n\t\t\ttrigger: function( data ) {\n\n\t\t\t\t// For mutual compressibility with _default, replace `this` access with a local var.\n\t\t\t\t// `|| data` is dead code meant only to preserve the variable through minification.\n\t\t\t\tvar el = this || data;\n\n\t\t\t\t// Force setup before triggering a click\n\t\t\t\tif ( rcheckableType.test( el.type ) &&\n\t\t\t\t\tel.click && nodeName( el, \"input\" ) ) {\n\n\t\t\t\t\tleverageNative( el, \"click\" );\n\t\t\t\t}\n\n\t\t\t\t// Return non-false to allow normal event-path propagation\n\t\t\t\treturn true;\n\t\t\t},\n\n\t\t\t// For cross-browser consistency, suppress native .click() on links\n\t\t\t// Also prevent it if we're currently inside a leveraged native-event stack\n\t\t\t_default: function( event ) {\n\t\t\t\tvar target = event.target;\n\t\t\t\treturn rcheckableType.test( target.type ) &&\n\t\t\t\t\ttarget.click && nodeName( target, \"input\" ) &&\n\t\t\t\t\tdataPriv.get( target, \"click\" ) ||\n\t\t\t\t\tnodeName( target, \"a\" );\n\t\t\t}\n\t\t},\n\n\t\tbeforeunload: {\n\t\t\tpostDispatch: function( event ) {\n\n\t\t\t\t// Support: Firefox 20+\n\t\t\t\t// Firefox doesn't alert if the returnValue field is not set.\n\t\t\t\tif ( event.result !== undefined && event.originalEvent ) {\n\t\t\t\t\tevent.originalEvent.returnValue = event.result;\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\t}\n};\n\n// Ensure the presence of an event listener that handles manually-triggered\n// synthetic events by interrupting progress until reinvoked in response to\n// *native* events that it fires directly, ensuring that state changes have\n// already occurred before other listeners are invoked.\nfunction leverageNative( el, type, isSetup ) {\n\n\t// Missing `isSetup` indicates a trigger call, which must force setup through jQuery.event.add\n\tif ( !isSetup ) {\n\t\tif ( dataPriv.get( el, type ) === undefined ) {\n\t\t\tjQuery.event.add( el, type, returnTrue );\n\t\t}\n\t\treturn;\n\t}\n\n\t// Register the controller as a special universal handler for all event namespaces\n\tdataPriv.set( el, type, false );\n\tjQuery.event.add( el, type, {\n\t\tnamespace: false,\n\t\thandler: function( event ) {\n\t\t\tvar result,\n\t\t\t\tsaved = dataPriv.get( this, type );\n\n\t\t\tif ( ( event.isTrigger & 1 ) && this[ type ] ) {\n\n\t\t\t\t// Interrupt processing of the outer synthetic .trigger()ed event\n\t\t\t\tif ( !saved ) {\n\n\t\t\t\t\t// Store arguments for use when handling the inner native event\n\t\t\t\t\t// There will always be at least one argument (an event object), so this array\n\t\t\t\t\t// will not be confused with a leftover capture object.\n\t\t\t\t\tsaved = slice.call( arguments );\n\t\t\t\t\tdataPriv.set( this, type, saved );\n\n\t\t\t\t\t// Trigger the native event and capture its result\n\t\t\t\t\tthis[ type ]();\n\t\t\t\t\tresult = dataPriv.get( this, type );\n\t\t\t\t\tdataPriv.set( this, type, false );\n\n\t\t\t\t\tif ( saved !== result ) {\n\n\t\t\t\t\t\t// Cancel the outer synthetic event\n\t\t\t\t\t\tevent.stopImmediatePropagation();\n\t\t\t\t\t\tevent.preventDefault();\n\n\t\t\t\t\t\treturn result;\n\t\t\t\t\t}\n\n\t\t\t\t// If this is an inner synthetic event for an event with a bubbling surrogate\n\t\t\t\t// (focus or blur), assume that the surrogate already propagated from triggering\n\t\t\t\t// the native event and prevent that from happening again here.\n\t\t\t\t// This technically gets the ordering wrong w.r.t. to `.trigger()` (in which the\n\t\t\t\t// bubbling surrogate propagates *after* the non-bubbling base), but that seems\n\t\t\t\t// less bad than duplication.\n\t\t\t\t} else if ( ( jQuery.event.special[ type ] || {} ).delegateType ) {\n\t\t\t\t\tevent.stopPropagation();\n\t\t\t\t}\n\n\t\t\t// If this is a native event triggered above, everything is now in order\n\t\t\t// Fire an inner synthetic event with the original arguments\n\t\t\t} else if ( saved ) {\n\n\t\t\t\t// ...and capture the result\n\t\t\t\tdataPriv.set( this, type, jQuery.event.trigger(\n\t\t\t\t\tsaved[ 0 ],\n\t\t\t\t\tsaved.slice( 1 ),\n\t\t\t\t\tthis\n\t\t\t\t) );\n\n\t\t\t\t// Abort handling of the native event by all jQuery handlers while allowing\n\t\t\t\t// native handlers on the same element to run. On target, this is achieved\n\t\t\t\t// by stopping immediate propagation just on the jQuery event. However,\n\t\t\t\t// the native event is re-wrapped by a jQuery one on each level of the\n\t\t\t\t// propagation so the only way to stop it for jQuery is to stop it for\n\t\t\t\t// everyone via native `stopPropagation()`. This is not a problem for\n\t\t\t\t// focus/blur which don't bubble, but it does also stop click on checkboxes\n\t\t\t\t// and radios. We accept this limitation.\n\t\t\t\tevent.stopPropagation();\n\t\t\t\tevent.isImmediatePropagationStopped = returnTrue;\n\t\t\t}\n\t\t}\n\t} );\n}\n\njQuery.removeEvent = function( elem, type, handle ) {\n\n\t// This \"if\" is needed for plain objects\n\tif ( elem.removeEventListener ) {\n\t\telem.removeEventListener( type, handle );\n\t}\n};\n\njQuery.Event = function( src, props ) {\n\n\t// Allow instantiation without the 'new' keyword\n\tif ( !( this instanceof jQuery.Event ) ) {\n\t\treturn new jQuery.Event( src, props );\n\t}\n\n\t// Event object\n\tif ( src && src.type ) {\n\t\tthis.originalEvent = src;\n\t\tthis.type = src.type;\n\n\t\t// Events bubbling up the document may have been marked as prevented\n\t\t// by a handler lower down the tree; reflect the correct value.\n\t\tthis.isDefaultPrevented = src.defaultPrevented ||\n\t\t\t\tsrc.defaultPrevented === undefined &&\n\n\t\t\t\t// Support: Android <=2.3 only\n\t\t\t\tsrc.returnValue === false ?\n\t\t\treturnTrue :\n\t\t\treturnFalse;\n\n\t\t// Create target properties\n\t\t// Support: Safari <=6 - 7 only\n\t\t// Target should not be a text node (trac-504, trac-13143)\n\t\tthis.target = ( src.target && src.target.nodeType === 3 ) ?\n\t\t\tsrc.target.parentNode :\n\t\t\tsrc.target;\n\n\t\tthis.currentTarget = src.currentTarget;\n\t\tthis.relatedTarget = src.relatedTarget;\n\n\t// Event type\n\t} else {\n\t\tthis.type = src;\n\t}\n\n\t// Put explicitly provided properties onto the event object\n\tif ( props ) {\n\t\tjQuery.extend( this, props );\n\t}\n\n\t// Create a timestamp if incoming event doesn't have one\n\tthis.timeStamp = src && src.timeStamp || Date.now();\n\n\t// Mark it as fixed\n\tthis[ jQuery.expando ] = true;\n};\n\n// jQuery.Event is based on DOM3 Events as specified by the ECMAScript Language Binding\n// https://www.w3.org/TR/2003/WD-DOM-Level-3-Events-20030331/ecma-script-binding.html\njQuery.Event.prototype = {\n\tconstructor: jQuery.Event,\n\tisDefaultPrevented: returnFalse,\n\tisPropagationStopped: returnFalse,\n\tisImmediatePropagationStopped: returnFalse,\n\tisSimulated: false,\n\n\tpreventDefault: function() {\n\t\tvar e = this.originalEvent;\n\n\t\tthis.isDefaultPrevented = returnTrue;\n\n\t\tif ( e && !this.isSimulated ) {\n\t\t\te.preventDefault();\n\t\t}\n\t},\n\tstopPropagation: function() {\n\t\tvar e = this.originalEvent;\n\n\t\tthis.isPropagationStopped = returnTrue;\n\n\t\tif ( e && !this.isSimulated ) {\n\t\t\te.stopPropagation();\n\t\t}\n\t},\n\tstopImmediatePropagation: function() {\n\t\tvar e = this.originalEvent;\n\n\t\tthis.isImmediatePropagationStopped = returnTrue;\n\n\t\tif ( e && !this.isSimulated ) {\n\t\t\te.stopImmediatePropagation();\n\t\t}\n\n\t\tthis.stopPropagation();\n\t}\n};\n\n// Includes all common event props including KeyEvent and MouseEvent specific props\njQuery.each( {\n\taltKey: true,\n\tbubbles: true,\n\tcancelable: true,\n\tchangedTouches: true,\n\tctrlKey: true,\n\tdetail: true,\n\teventPhase: true,\n\tmetaKey: true,\n\tpageX: true,\n\tpageY: true,\n\tshiftKey: true,\n\tview: true,\n\t\"char\": true,\n\tcode: true,\n\tcharCode: true,\n\tkey: true,\n\tkeyCode: true,\n\tbutton: true,\n\tbuttons: true,\n\tclientX: true,\n\tclientY: true,\n\toffsetX: true,\n\toffsetY: true,\n\tpointerId: true,\n\tpointerType: true,\n\tscreenX: true,\n\tscreenY: true,\n\ttargetTouches: true,\n\ttoElement: true,\n\ttouches: true,\n\twhich: true\n}, jQuery.event.addProp );\n\njQuery.each( { focus: \"focusin\", blur: \"focusout\" }, function( type, delegateType ) {\n\n\tfunction focusMappedHandler( nativeEvent ) {\n\t\tif ( document.documentMode ) {\n\n\t\t\t// Support: IE 11+\n\t\t\t// Attach a single focusin/focusout handler on the document while someone wants\n\t\t\t// focus/blur. This is because the former are synchronous in IE while the latter\n\t\t\t// are async. In other browsers, all those handlers are invoked synchronously.\n\n\t\t\t// `handle` from private data would already wrap the event, but we need\n\t\t\t// to change the `type` here.\n\t\t\tvar handle = dataPriv.get( this, \"handle\" ),\n\t\t\t\tevent = jQuery.event.fix( nativeEvent );\n\t\t\tevent.type = nativeEvent.type === \"focusin\" ? \"focus\" : \"blur\";\n\t\t\tevent.isSimulated = true;\n\n\t\t\t// First, handle focusin/focusout\n\t\t\thandle( nativeEvent );\n\n\t\t\t// ...then, handle focus/blur\n\t\t\t//\n\t\t\t// focus/blur don't bubble while focusin/focusout do; simulate the former by only\n\t\t\t// invoking the handler at the lower level.\n\t\t\tif ( event.target === event.currentTarget ) {\n\n\t\t\t\t// The setup part calls `leverageNative`, which, in turn, calls\n\t\t\t\t// `jQuery.event.add`, so event handle will already have been set\n\t\t\t\t// by this point.\n\t\t\t\thandle( event );\n\t\t\t}\n\t\t} else {\n\n\t\t\t// For non-IE browsers, attach a single capturing handler on the document\n\t\t\t// while someone wants focusin/focusout.\n\t\t\tjQuery.event.simulate( delegateType, nativeEvent.target,\n\t\t\t\tjQuery.event.fix( nativeEvent ) );\n\t\t}\n\t}\n\n\tjQuery.event.special[ type ] = {\n\n\t\t// Utilize native event if possible so blur/focus sequence is correct\n\t\tsetup: function() {\n\n\t\t\tvar attaches;\n\n\t\t\t// Claim the first handler\n\t\t\t// dataPriv.set( this, \"focus\", ... )\n\t\t\t// dataPriv.set( this, \"blur\", ... )\n\t\t\tleverageNative( this, type, true );\n\n\t\t\tif ( document.documentMode ) {\n\n\t\t\t\t// Support: IE 9 - 11+\n\t\t\t\t// We use the same native handler for focusin & focus (and focusout & blur)\n\t\t\t\t// so we need to coordinate setup & teardown parts between those events.\n\t\t\t\t// Use `delegateType` as the key as `type` is already used by `leverageNative`.\n\t\t\t\tattaches = dataPriv.get( this, delegateType );\n\t\t\t\tif ( !attaches ) {\n\t\t\t\t\tthis.addEventListener( delegateType, focusMappedHandler );\n\t\t\t\t}\n\t\t\t\tdataPriv.set( this, delegateType, ( attaches || 0 ) + 1 );\n\t\t\t} else {\n\n\t\t\t\t// Return false to allow normal processing in the caller\n\t\t\t\treturn false;\n\t\t\t}\n\t\t},\n\t\ttrigger: function() {\n\n\t\t\t// Force setup before trigger\n\t\t\tleverageNative( this, type );\n\n\t\t\t// Return non-false to allow normal event-path propagation\n\t\t\treturn true;\n\t\t},\n\n\t\tteardown: function() {\n\t\t\tvar attaches;\n\n\t\t\tif ( document.documentMode ) {\n\t\t\t\tattaches = dataPriv.get( this, delegateType ) - 1;\n\t\t\t\tif ( !attaches ) {\n\t\t\t\t\tthis.removeEventListener( delegateType, focusMappedHandler );\n\t\t\t\t\tdataPriv.remove( this, delegateType );\n\t\t\t\t} else {\n\t\t\t\t\tdataPriv.set( this, delegateType, attaches );\n\t\t\t\t}\n\t\t\t} else {\n\n\t\t\t\t// Return false to indicate standard teardown should be applied\n\t\t\t\treturn false;\n\t\t\t}\n\t\t},\n\n\t\t// Suppress native focus or blur if we're currently inside\n\t\t// a leveraged native-event stack\n\t\t_default: function( event ) {\n\t\t\treturn dataPriv.get( event.target, type );\n\t\t},\n\n\t\tdelegateType: delegateType\n\t};\n\n\t// Support: Firefox <=44\n\t// Firefox doesn't have focus(in | out) events\n\t// Related ticket - https://bugzilla.mozilla.org/show_bug.cgi?id=687787\n\t//\n\t// Support: Chrome <=48 - 49, Safari <=9.0 - 9.1\n\t// focus(in | out) events fire after focus & blur events,\n\t// which is spec violation - http://www.w3.org/TR/DOM-Level-3-Events/#events-focusevent-event-order\n\t// Related ticket - https://bugs.chromium.org/p/chromium/issues/detail?id=449857\n\t//\n\t// Support: IE 9 - 11+\n\t// To preserve relative focusin/focus & focusout/blur event order guaranteed on the 3.x branch,\n\t// attach a single handler for both events in IE.\n\tjQuery.event.special[ delegateType ] = {\n\t\tsetup: function() {\n\n\t\t\t// Handle: regular nodes (via `this.ownerDocument`), window\n\t\t\t// (via `this.document`) & document (via `this`).\n\t\t\tvar doc = this.ownerDocument || this.document || this,\n\t\t\t\tdataHolder = document.documentMode ? this : doc,\n\t\t\t\tattaches = dataPriv.get( dataHolder, delegateType );\n\n\t\t\t// Support: IE 9 - 11+\n\t\t\t// We use the same native handler for focusin & focus (and focusout & blur)\n\t\t\t// so we need to coordinate setup & teardown parts between those events.\n\t\t\t// Use `delegateType` as the key as `type` is already used by `leverageNative`.\n\t\t\tif ( !attaches ) {\n\t\t\t\tif ( document.documentMode ) {\n\t\t\t\t\tthis.addEventListener( delegateType, focusMappedHandler );\n\t\t\t\t} else {\n\t\t\t\t\tdoc.addEventListener( type, focusMappedHandler, true );\n\t\t\t\t}\n\t\t\t}\n\t\t\tdataPriv.set( dataHolder, delegateType, ( attaches || 0 ) + 1 );\n\t\t},\n\t\tteardown: function() {\n\t\t\tvar doc = this.ownerDocument || this.document || this,\n\t\t\t\tdataHolder = document.documentMode ? this : doc,\n\t\t\t\tattaches = dataPriv.get( dataHolder, delegateType ) - 1;\n\n\t\t\tif ( !attaches ) {\n\t\t\t\tif ( document.documentMode ) {\n\t\t\t\t\tthis.removeEventListener( delegateType, focusMappedHandler );\n\t\t\t\t} else {\n\t\t\t\t\tdoc.removeEventListener( type, focusMappedHandler, true );\n\t\t\t\t}\n\t\t\t\tdataPriv.remove( dataHolder, delegateType );\n\t\t\t} else {\n\t\t\t\tdataPriv.set( dataHolder, delegateType, attaches );\n\t\t\t}\n\t\t}\n\t};\n} );\n\n// Create mouseenter/leave events using mouseover/out and event-time checks\n// so that event delegation works in jQuery.\n// Do the same for pointerenter/pointerleave and pointerover/pointerout\n//\n// Support: Safari 7 only\n// Safari sends mouseenter too often; see:\n// https://bugs.chromium.org/p/chromium/issues/detail?id=470258\n// for the description of the bug (it existed in older Chrome versions as well).\njQuery.each( {\n\tmouseenter: \"mouseover\",\n\tmouseleave: \"mouseout\",\n\tpointerenter: \"pointerover\",\n\tpointerleave: \"pointerout\"\n}, function( orig, fix ) {\n\tjQuery.event.special[ orig ] = {\n\t\tdelegateType: fix,\n\t\tbindType: fix,\n\n\t\thandle: function( event ) {\n\t\t\tvar ret,\n\t\t\t\ttarget = this,\n\t\t\t\trelated = event.relatedTarget,\n\t\t\t\thandleObj = event.handleObj;\n\n\t\t\t// For mouseenter/leave call the handler if related is outside the target.\n\t\t\t// NB: No relatedTarget if the mouse left/entered the browser window\n\t\t\tif ( !related || ( related !== target && !jQuery.contains( target, related ) ) ) {\n\t\t\t\tevent.type = handleObj.origType;\n\t\t\t\tret = handleObj.handler.apply( this, arguments );\n\t\t\t\tevent.type = fix;\n\t\t\t}\n\t\t\treturn ret;\n\t\t}\n\t};\n} );\n\njQuery.fn.extend( {\n\n\ton: function( types, selector, data, fn ) {\n\t\treturn on( this, types, selector, data, fn );\n\t},\n\tone: function( types, selector, data, fn ) {\n\t\treturn on( this, types, selector, data, fn, 1 );\n\t},\n\toff: function( types, selector, fn ) {\n\t\tvar handleObj, type;\n\t\tif ( types && types.preventDefault && types.handleObj ) {\n\n\t\t\t// ( event ) dispatched jQuery.Event\n\t\t\thandleObj = types.handleObj;\n\t\t\tjQuery( types.delegateTarget ).off(\n\t\t\t\thandleObj.namespace ?\n\t\t\t\t\thandleObj.origType + \".\" + handleObj.namespace :\n\t\t\t\t\thandleObj.origType,\n\t\t\t\thandleObj.selector,\n\t\t\t\thandleObj.handler\n\t\t\t);\n\t\t\treturn this;\n\t\t}\n\t\tif ( typeof types === \"object\" ) {\n\n\t\t\t// ( types-object [, selector] )\n\t\t\tfor ( type in types ) {\n\t\t\t\tthis.off( type, selector, types[ type ] );\n\t\t\t}\n\t\t\treturn this;\n\t\t}\n\t\tif ( selector === false || typeof selector === \"function\" ) {\n\n\t\t\t// ( types [, fn] )\n\t\t\tfn = selector;\n\t\t\tselector = undefined;\n\t\t}\n\t\tif ( fn === false ) {\n\t\t\tfn = returnFalse;\n\t\t}\n\t\treturn this.each( function() {\n\t\t\tjQuery.event.remove( this, types, fn, selector );\n\t\t} );\n\t}\n} );\n\n\nvar\n\n\t// Support: IE <=10 - 11, Edge 12 - 13 only\n\t// In IE/Edge using regex groups here causes severe slowdowns.\n\t// See https://connect.microsoft.com/IE/feedback/details/1736512/\n\trnoInnerhtml = /<script|<style|<link/i,\n\n\t// checked=\"checked\" or checked\n\trchecked = /checked\\s*(?:[^=]|=\\s*.checked.)/i,\n\n\trcleanScript = /^\\s*<!\\[CDATA\\[|\\]\\]>\\s*$/g;\n\n// Prefer a tbody over its parent table for containing new rows\nfunction manipulationTarget( elem, content ) {\n\tif ( nodeName( elem, \"table\" ) &&\n\t\tnodeName( content.nodeType !== 11 ? content : content.firstChild, \"tr\" ) ) {\n\n\t\treturn jQuery( elem ).children( \"tbody\" )[ 0 ] || elem;\n\t}\n\n\treturn elem;\n}\n\n// Replace/restore the type attribute of script elements for safe DOM manipulation\nfunction disableScript( elem ) {\n\telem.type = ( elem.getAttribute( \"type\" ) !== null ) + \"/\" + elem.type;\n\treturn elem;\n}\nfunction restoreScript( elem ) {\n\tif ( ( elem.type || \"\" ).slice( 0, 5 ) === \"true/\" ) {\n\t\telem.type = elem.type.slice( 5 );\n\t} else {\n\t\telem.removeAttribute( \"type\" );\n\t}\n\n\treturn elem;\n}\n\nfunction cloneCopyEvent( src, dest ) {\n\tvar i, l, type, pdataOld, udataOld, udataCur, events;\n\n\tif ( dest.nodeType !== 1 ) {\n\t\treturn;\n\t}\n\n\t// 1. Copy private data: events, handlers, etc.\n\tif ( dataPriv.hasData( src ) ) {\n\t\tpdataOld = dataPriv.get( src );\n\t\tevents = pdataOld.events;\n\n\t\tif ( events ) {\n\t\t\tdataPriv.remove( dest, \"handle events\" );\n\n\t\t\tfor ( type in events ) {\n\t\t\t\tfor ( i = 0, l = events[ type ].length; i < l; i++ ) {\n\t\t\t\t\tjQuery.event.add( dest, type, events[ type ][ i ] );\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\t}\n\n\t// 2. Copy user data\n\tif ( dataUser.hasData( src ) ) {\n\t\tudataOld = dataUser.access( src );\n\t\tudataCur = jQuery.extend( {}, udataOld );\n\n\t\tdataUser.set( dest, udataCur );\n\t}\n}\n\n// Fix IE bugs, see support tests\nfunction fixInput( src, dest ) {\n\tvar nodeName = dest.nodeName.toLowerCase();\n\n\t// Fails to persist the checked state of a cloned checkbox or radio button.\n\tif ( nodeName === \"input\" && rcheckableType.test( src.type ) ) {\n\t\tdest.checked = src.checked;\n\n\t// Fails to return the selected option to the default selected state when cloning options\n\t} else if ( nodeName === \"input\" || nodeName === \"textarea\" ) {\n\t\tdest.defaultValue = src.defaultValue;\n\t}\n}\n\nfunction domManip( collection, args, callback, ignored ) {\n\n\t// Flatten any nested arrays\n\targs = flat( args );\n\n\tvar fragment, first, scripts, hasScripts, node, doc,\n\t\ti = 0,\n\t\tl = collection.length,\n\t\tiNoClone = l - 1,\n\t\tvalue = args[ 0 ],\n\t\tvalueIsFunction = isFunction( value );\n\n\t// We can't cloneNode fragments that contain checked, in WebKit\n\tif ( valueIsFunction ||\n\t\t\t( l > 1 && typeof value === \"string\" &&\n\t\t\t\t!support.checkClone && rchecked.test( value ) ) ) {\n\t\treturn collection.each( function( index ) {\n\t\t\tvar self = collection.eq( index );\n\t\t\tif ( valueIsFunction ) {\n\t\t\t\targs[ 0 ] = value.call( this, index, self.html() );\n\t\t\t}\n\t\t\tdomManip( self, args, callback, ignored );\n\t\t} );\n\t}\n\n\tif ( l ) {\n\t\tfragment = buildFragment( args, collection[ 0 ].ownerDocument, false, collection, ignored );\n\t\tfirst = fragment.firstChild;\n\n\t\tif ( fragment.childNodes.length === 1 ) {\n\t\t\tfragment = first;\n\t\t}\n\n\t\t// Require either new content or an interest in ignored elements to invoke the callback\n\t\tif ( first || ignored ) {\n\t\t\tscripts = jQuery.map( getAll( fragment, \"script\" ), disableScript );\n\t\t\thasScripts = scripts.length;\n\n\t\t\t// Use the original fragment for the last item\n\t\t\t// instead of the first because it can end up\n\t\t\t// being emptied incorrectly in certain situations (trac-8070).\n\t\t\tfor ( ; i < l; i++ ) {\n\t\t\t\tnode = fragment;\n\n\t\t\t\tif ( i !== iNoClone ) {\n\t\t\t\t\tnode = jQuery.clone( node, true, true );\n\n\t\t\t\t\t// Keep references to cloned scripts for later restoration\n\t\t\t\t\tif ( hasScripts ) {\n\n\t\t\t\t\t\t// Support: Android <=4.0 only, PhantomJS 1 only\n\t\t\t\t\t\t// push.apply(_, arraylike) throws on ancient WebKit\n\t\t\t\t\t\tjQuery.merge( scripts, getAll( node, \"script\" ) );\n\t\t\t\t\t}\n\t\t\t\t}\n\n\t\t\t\tcallback.call( collection[ i ], node, i );\n\t\t\t}\n\n\t\t\tif ( hasScripts ) {\n\t\t\t\tdoc = scripts[ scripts.length - 1 ].ownerDocument;\n\n\t\t\t\t// Re-enable scripts\n\t\t\t\tjQuery.map( scripts, restoreScript );\n\n\t\t\t\t// Evaluate executable scripts on first document insertion\n\t\t\t\tfor ( i = 0; i < hasScripts; i++ ) {\n\t\t\t\t\tnode = scripts[ i ];\n\t\t\t\t\tif ( rscriptType.test( node.type || \"\" ) &&\n\t\t\t\t\t\t!dataPriv.access( node, \"globalEval\" ) &&\n\t\t\t\t\t\tjQuery.contains( doc, node ) ) {\n\n\t\t\t\t\t\tif ( node.src && ( node.type || \"\" ).toLowerCase() !== \"module\" ) {\n\n\t\t\t\t\t\t\t// Optional AJAX dependency, but won't run scripts if not present\n\t\t\t\t\t\t\tif ( jQuery._evalUrl && !node.noModule ) {\n\t\t\t\t\t\t\t\tjQuery._evalUrl( node.src, {\n\t\t\t\t\t\t\t\t\tnonce: node.nonce || node.getAttribute( \"nonce\" )\n\t\t\t\t\t\t\t\t}, doc );\n\t\t\t\t\t\t\t}\n\t\t\t\t\t\t} else {\n\n\t\t\t\t\t\t\t// Unwrap a CDATA section containing script contents. This shouldn't be\n\t\t\t\t\t\t\t// needed as in XML documents they're already not visible when\n\t\t\t\t\t\t\t// inspecting element contents and in HTML documents they have no\n\t\t\t\t\t\t\t// meaning but we're preserving that logic for backwards compatibility.\n\t\t\t\t\t\t\t// This will be removed completely in 4.0. See gh-4904.\n\t\t\t\t\t\t\tDOMEval( node.textContent.replace( rcleanScript, \"\" ), node, doc );\n\t\t\t\t\t\t}\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\t}\n\n\treturn collection;\n}\n\nfunction remove( elem, selector, keepData ) {\n\tvar node,\n\t\tnodes = selector ? jQuery.filter( selector, elem ) : elem,\n\t\ti = 0;\n\n\tfor ( ; ( node = nodes[ i ] ) != null; i++ ) {\n\t\tif ( !keepData && node.nodeType === 1 ) {\n\t\t\tjQuery.cleanData( getAll( node ) );\n\t\t}\n\n\t\tif ( node.parentNode ) {\n\t\t\tif ( keepData && isAttached( node ) ) {\n\t\t\t\tsetGlobalEval( getAll( node, \"script\" ) );\n\t\t\t}\n\t\t\tnode.parentNode.removeChild( node );\n\t\t}\n\t}\n\n\treturn elem;\n}\n\njQuery.extend( {\n\thtmlPrefilter: function( html ) {\n\t\treturn html;\n\t},\n\n\tclone: function( elem, dataAndEvents, deepDataAndEvents ) {\n\t\tvar i, l, srcElements, destElements,\n\t\t\tclone = elem.cloneNode( true ),\n\t\t\tinPage = isAttached( elem );\n\n\t\t// Fix IE cloning issues\n\t\tif ( !support.noCloneChecked && ( elem.nodeType === 1 || elem.nodeType === 11 ) &&\n\t\t\t\t!jQuery.isXMLDoc( elem ) ) {\n\n\t\t\t// We eschew jQuery#find here for performance reasons:\n\t\t\t// https://jsperf.com/getall-vs-sizzle/2\n\t\t\tdestElements = getAll( clone );\n\t\t\tsrcElements = getAll( elem );\n\n\t\t\tfor ( i = 0, l = srcElements.length; i < l; i++ ) {\n\t\t\t\tfixInput( srcElements[ i ], destElements[ i ] );\n\t\t\t}\n\t\t}\n\n\t\t// Copy the events from the original to the clone\n\t\tif ( dataAndEvents ) {\n\t\t\tif ( deepDataAndEvents ) {\n\t\t\t\tsrcElements = srcElements || getAll( elem );\n\t\t\t\tdestElements = destElements || getAll( clone );\n\n\t\t\t\tfor ( i = 0, l = srcElements.length; i < l; i++ ) {\n\t\t\t\t\tcloneCopyEvent( srcElements[ i ], destElements[ i ] );\n\t\t\t\t}\n\t\t\t} else {\n\t\t\t\tcloneCopyEvent( elem, clone );\n\t\t\t}\n\t\t}\n\n\t\t// Preserve script evaluation history\n\t\tdestElements = getAll( clone, \"script\" );\n\t\tif ( destElements.length > 0 ) {\n\t\t\tsetGlobalEval( destElements, !inPage && getAll( elem, \"script\" ) );\n\t\t}\n\n\t\t// Return the cloned set\n\t\treturn clone;\n\t},\n\n\tcleanData: function( elems ) {\n\t\tvar data, elem, type,\n\t\t\tspecial = jQuery.event.special,\n\t\t\ti = 0;\n\n\t\tfor ( ; ( elem = elems[ i ] ) !== undefined; i++ ) {\n\t\t\tif ( acceptData( elem ) ) {\n\t\t\t\tif ( ( data = elem[ dataPriv.expando ] ) ) {\n\t\t\t\t\tif ( data.events ) {\n\t\t\t\t\t\tfor ( type in data.events ) {\n\t\t\t\t\t\t\tif ( special[ type ] ) {\n\t\t\t\t\t\t\t\tjQuery.event.remove( elem, type );\n\n\t\t\t\t\t\t\t// This is a shortcut to avoid jQuery.event.remove's overhead\n\t\t\t\t\t\t\t} else {\n\t\t\t\t\t\t\t\tjQuery.removeEvent( elem, type, data.handle );\n\t\t\t\t\t\t\t}\n\t\t\t\t\t\t}\n\t\t\t\t\t}\n\n\t\t\t\t\t// Support: Chrome <=35 - 45+\n\t\t\t\t\t// Assign undefined instead of using delete, see Data#remove\n\t\t\t\t\telem[ dataPriv.expando ] = undefined;\n\t\t\t\t}\n\t\t\t\tif ( elem[ dataUser.expando ] ) {\n\n\t\t\t\t\t// Support: Chrome <=35 - 45+\n\t\t\t\t\t// Assign undefined instead of using delete, see Data#remove\n\t\t\t\t\telem[ dataUser.expando ] = undefined;\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\t}\n} );\n\njQuery.fn.extend( {\n\tdetach: function( selector ) {\n\t\treturn remove( this, selector, true );\n\t},\n\n\tremove: function( selector ) {\n\t\treturn remove( this, selector );\n\t},\n\n\ttext: function( value ) {\n\t\treturn access( this, function( value ) {\n\t\t\treturn value === undefined ?\n\t\t\t\tjQuery.text( this ) :\n\t\t\t\tthis.empty().each( function() {\n\t\t\t\t\tif ( this.nodeType === 1 || this.nodeType === 11 || this.nodeType === 9 ) {\n\t\t\t\t\t\tthis.textContent = value;\n\t\t\t\t\t}\n\t\t\t\t} );\n\t\t}, null, value, arguments.length );\n\t},\n\n\tappend: function() {\n\t\treturn domManip( this, arguments, function( elem ) {\n\t\t\tif ( this.nodeType === 1 || this.nodeType === 11 || this.nodeType === 9 ) {\n\t\t\t\tvar target = manipulationTarget( this, elem );\n\t\t\t\ttarget.appendChild( elem );\n\t\t\t}\n\t\t} );\n\t},\n\n\tprepend: function() {\n\t\treturn domManip( this, arguments, function( elem ) {\n\t\t\tif ( this.nodeType === 1 || this.nodeType === 11 || this.nodeType === 9 ) {\n\t\t\t\tvar target = manipulationTarget( this, elem );\n\t\t\t\ttarget.insertBefore( elem, target.firstChild );\n\t\t\t}\n\t\t} );\n\t},\n\n\tbefore: function() {\n\t\treturn domManip( this, arguments, function( elem ) {\n\t\t\tif ( this.parentNode ) {\n\t\t\t\tthis.parentNode.insertBefore( elem, this );\n\t\t\t}\n\t\t} );\n\t},\n\n\tafter: function() {\n\t\treturn domManip( this, arguments, function( elem ) {\n\t\t\tif ( this.parentNode ) {\n\t\t\t\tthis.parentNode.insertBefore( elem, this.nextSibling );\n\t\t\t}\n\t\t} );\n\t},\n\n\tempty: function() {\n\t\tvar elem,\n\t\t\ti = 0;\n\n\t\tfor ( ; ( elem = this[ i ] ) != null; i++ ) {\n\t\t\tif ( elem.nodeType === 1 ) {\n\n\t\t\t\t// Prevent memory leaks\n\t\t\t\tjQuery.cleanData( getAll( elem, false ) );\n\n\t\t\t\t// Remove any remaining nodes\n\t\t\t\telem.textContent = \"\";\n\t\t\t}\n\t\t}\n\n\t\treturn this;\n\t},\n\n\tclone: function( dataAndEvents, deepDataAndEvents ) {\n\t\tdataAndEvents = dataAndEvents == null ? false : dataAndEvents;\n\t\tdeepDataAndEvents = deepDataAndEvents == null ? dataAndEvents : deepDataAndEvents;\n\n\t\treturn this.map( function() {\n\t\t\treturn jQuery.clone( this, dataAndEvents, deepDataAndEvents );\n\t\t} );\n\t},\n\n\thtml: function( value ) {\n\t\treturn access( this, function( value ) {\n\t\t\tvar elem = this[ 0 ] || {},\n\t\t\t\ti = 0,\n\t\t\t\tl = this.length;\n\n\t\t\tif ( value === undefined && elem.nodeType === 1 ) {\n\t\t\t\treturn elem.innerHTML;\n\t\t\t}\n\n\t\t\t// See if we can take a shortcut and just use innerHTML\n\t\t\tif ( typeof value === \"string\" && !rnoInnerhtml.test( value ) &&\n\t\t\t\t!wrapMap[ ( rtagName.exec( value ) || [ \"\", \"\" ] )[ 1 ].toLowerCase() ] ) {\n\n\t\t\t\tvalue = jQuery.htmlPrefilter( value );\n\n\t\t\t\ttry {\n\t\t\t\t\tfor ( ; i < l; i++ ) {\n\t\t\t\t\t\telem = this[ i ] || {};\n\n\t\t\t\t\t\t// Remove element nodes and prevent memory leaks\n\t\t\t\t\t\tif ( elem.nodeType === 1 ) {\n\t\t\t\t\t\t\tjQuery.cleanData( getAll( elem, false ) );\n\t\t\t\t\t\t\telem.innerHTML = value;\n\t\t\t\t\t\t}\n\t\t\t\t\t}\n\n\t\t\t\t\telem = 0;\n\n\t\t\t\t// If using innerHTML throws an exception, use the fallback method\n\t\t\t\t} catch ( e ) {}\n\t\t\t}\n\n\t\t\tif ( elem ) {\n\t\t\t\tthis.empty().append( value );\n\t\t\t}\n\t\t}, null, value, arguments.length );\n\t},\n\n\treplaceWith: function() {\n\t\tvar ignored = [];\n\n\t\t// Make the changes, replacing each non-ignored context element with the new content\n\t\treturn domManip( this, arguments, function( elem ) {\n\t\t\tvar parent = this.parentNode;\n\n\t\t\tif ( jQuery.inArray( this, ignored ) < 0 ) {\n\t\t\t\tjQuery.cleanData( getAll( this ) );\n\t\t\t\tif ( parent ) {\n\t\t\t\t\tparent.replaceChild( elem, this );\n\t\t\t\t}\n\t\t\t}\n\n\t\t// Force callback invocation\n\t\t}, ignored );\n\t}\n} );\n\njQuery.each( {\n\tappendTo: \"append\",\n\tprependTo: \"prepend\",\n\tinsertBefore: \"before\",\n\tinsertAfter: \"after\",\n\treplaceAll: \"replaceWith\"\n}, function( name, original ) {\n\tjQuery.fn[ name ] = function( selector ) {\n\t\tvar elems,\n\t\t\tret = [],\n\t\t\tinsert = jQuery( selector ),\n\t\t\tlast = insert.length - 1,\n\t\t\ti = 0;\n\n\t\tfor ( ; i <= last; i++ ) {\n\t\t\telems = i === last ? this : this.clone( true );\n\t\t\tjQuery( insert[ i ] )[ original ]( elems );\n\n\t\t\t// Support: Android <=4.0 only, PhantomJS 1 only\n\t\t\t// .get() because push.apply(_, arraylike) throws on ancient WebKit\n\t\t\tpush.apply( ret, elems.get() );\n\t\t}\n\n\t\treturn this.pushStack( ret );\n\t};\n} );\nvar rnumnonpx = new RegExp( \"^(\" + pnum + \")(?!px)[a-z%]+$\", \"i\" );\n\nvar rcustomProp = /^--/;\n\n\nvar getStyles = function( elem ) {\n\n\t\t// Support: IE <=11 only, Firefox <=30 (trac-15098, trac-14150)\n\t\t// IE throws on elements created in popups\n\t\t// FF meanwhile throws on frame elements through \"defaultView.getComputedStyle\"\n\t\tvar view = elem.ownerDocument.defaultView;\n\n\t\tif ( !view || !view.opener ) {\n\t\t\tview = window;\n\t\t}\n\n\t\treturn view.getComputedStyle( elem );\n\t};\n\nvar swap = function( elem, options, callback ) {\n\tvar ret, name,\n\t\told = {};\n\n\t// Remember the old values, and insert the new ones\n\tfor ( name in options ) {\n\t\told[ name ] = elem.style[ name ];\n\t\telem.style[ name ] = options[ name ];\n\t}\n\n\tret = callback.call( elem );\n\n\t// Revert the old values\n\tfor ( name in options ) {\n\t\telem.style[ name ] = old[ name ];\n\t}\n\n\treturn ret;\n};\n\n\nvar rboxStyle = new RegExp( cssExpand.join( \"|\" ), \"i\" );\n\n\n\n( function() {\n\n\t// Executing both pixelPosition & boxSizingReliable tests require only one layout\n\t// so they're executed at the same time to save the second computation.\n\tfunction computeStyleTests() {\n\n\t\t// This is a singleton, we need to execute it only once\n\t\tif ( !div ) {\n\t\t\treturn;\n\t\t}\n\n\t\tcontainer.style.cssText = \"position:absolute;left:-11111px;width:60px;\" +\n\t\t\t\"margin-top:1px;padding:0;border:0\";\n\t\tdiv.style.cssText =\n\t\t\t\"position:relative;display:block;box-sizing:border-box;overflow:scroll;\" +\n\t\t\t\"margin:auto;border:1px;padding:1px;\" +\n\t\t\t\"width:60%;top:1%\";\n\t\tdocumentElement.appendChild( container ).appendChild( div );\n\n\t\tvar divStyle = window.getComputedStyle( div );\n\t\tpixelPositionVal = divStyle.top !== \"1%\";\n\n\t\t// Support: Android 4.0 - 4.3 only, Firefox <=3 - 44\n\t\treliableMarginLeftVal = roundPixelMeasures( divStyle.marginLeft ) === 12;\n\n\t\t// Support: Android 4.0 - 4.3 only, Safari <=9.1 - 10.1, iOS <=7.0 - 9.3\n\t\t// Some styles come back with percentage values, even though they shouldn't\n\t\tdiv.style.right = \"60%\";\n\t\tpixelBoxStylesVal = roundPixelMeasures( divStyle.right ) === 36;\n\n\t\t// Support: IE 9 - 11 only\n\t\t// Detect misreporting of content dimensions for box-sizing:border-box elements\n\t\tboxSizingReliableVal = roundPixelMeasures( divStyle.width ) === 36;\n\n\t\t// Support: IE 9 only\n\t\t// Detect overflow:scroll screwiness (gh-3699)\n\t\t// Support: Chrome <=64\n\t\t// Don't get tricked when zoom affects offsetWidth (gh-4029)\n\t\tdiv.style.position = \"absolute\";\n\t\tscrollboxSizeVal = roundPixelMeasures( div.offsetWidth / 3 ) === 12;\n\n\t\tdocumentElement.removeChild( container );\n\n\t\t// Nullify the div so it wouldn't be stored in the memory and\n\t\t// it will also be a sign that checks already performed\n\t\tdiv = null;\n\t}\n\n\tfunction roundPixelMeasures( measure ) {\n\t\treturn Math.round( parseFloat( measure ) );\n\t}\n\n\tvar pixelPositionVal, boxSizingReliableVal, scrollboxSizeVal, pixelBoxStylesVal,\n\t\treliableTrDimensionsVal, reliableMarginLeftVal,\n\t\tcontainer = document.createElement( \"div\" ),\n\t\tdiv = document.createElement( \"div\" );\n\n\t// Finish early in limited (non-browser) environments\n\tif ( !div.style ) {\n\t\treturn;\n\t}\n\n\t// Support: IE <=9 - 11 only\n\t// Style of cloned element affects source element cloned (trac-8908)\n\tdiv.style.backgroundClip = \"content-box\";\n\tdiv.cloneNode( true ).style.backgroundClip = \"\";\n\tsupport.clearCloneStyle = div.style.backgroundClip === \"content-box\";\n\n\tjQuery.extend( support, {\n\t\tboxSizingReliable: function() {\n\t\t\tcomputeStyleTests();\n\t\t\treturn boxSizingReliableVal;\n\t\t},\n\t\tpixelBoxStyles: function() {\n\t\t\tcomputeStyleTests();\n\t\t\treturn pixelBoxStylesVal;\n\t\t},\n\t\tpixelPosition: function() {\n\t\t\tcomputeStyleTests();\n\t\t\treturn pixelPositionVal;\n\t\t},\n\t\treliableMarginLeft: function() {\n\t\t\tcomputeStyleTests();\n\t\t\treturn reliableMarginLeftVal;\n\t\t},\n\t\tscrollboxSize: function() {\n\t\t\tcomputeStyleTests();\n\t\t\treturn scrollboxSizeVal;\n\t\t},\n\n\t\t// Support: IE 9 - 11+, Edge 15 - 18+\n\t\t// IE/Edge misreport `getComputedStyle` of table rows with width/height\n\t\t// set in CSS while `offset*` properties report correct values.\n\t\t// Behavior in IE 9 is more subtle than in newer versions & it passes\n\t\t// some versions of this test; make sure not to make it pass there!\n\t\t//\n\t\t// Support: Firefox 70+\n\t\t// Only Firefox includes border widths\n\t\t// in computed dimensions. (gh-4529)\n\t\treliableTrDimensions: function() {\n\t\t\tvar table, tr, trChild, trStyle;\n\t\t\tif ( reliableTrDimensionsVal == null ) {\n\t\t\t\ttable = document.createElement( \"table\" );\n\t\t\t\ttr = document.createElement( \"tr\" );\n\t\t\t\ttrChild = document.createElement( \"div\" );\n\n\t\t\t\ttable.style.cssText = \"position:absolute;left:-11111px;border-collapse:separate\";\n\t\t\t\ttr.style.cssText = \"box-sizing:content-box;border:1px solid\";\n\n\t\t\t\t// Support: Chrome 86+\n\t\t\t\t// Height set through cssText does not get applied.\n\t\t\t\t// Computed height then comes back as 0.\n\t\t\t\ttr.style.height = \"1px\";\n\t\t\t\ttrChild.style.height = \"9px\";\n\n\t\t\t\t// Support: Android 8 Chrome 86+\n\t\t\t\t// In our bodyBackground.html iframe,\n\t\t\t\t// display for all div elements is set to \"inline\",\n\t\t\t\t// which causes a problem only in Android 8 Chrome 86.\n\t\t\t\t// Ensuring the div is `display: block`\n\t\t\t\t// gets around this issue.\n\t\t\t\ttrChild.style.display = \"block\";\n\n\t\t\t\tdocumentElement\n\t\t\t\t\t.appendChild( table )\n\t\t\t\t\t.appendChild( tr )\n\t\t\t\t\t.appendChild( trChild );\n\n\t\t\t\ttrStyle = window.getComputedStyle( tr );\n\t\t\t\treliableTrDimensionsVal = ( parseInt( trStyle.height, 10 ) +\n\t\t\t\t\tparseInt( trStyle.borderTopWidth, 10 ) +\n\t\t\t\t\tparseInt( trStyle.borderBottomWidth, 10 ) ) === tr.offsetHeight;\n\n\t\t\t\tdocumentElement.removeChild( table );\n\t\t\t}\n\t\t\treturn reliableTrDimensionsVal;\n\t\t}\n\t} );\n} )();\n\n\nfunction curCSS( elem, name, computed ) {\n\tvar width, minWidth, maxWidth, ret,\n\t\tisCustomProp = rcustomProp.test( name ),\n\n\t\t// Support: Firefox 51+\n\t\t// Retrieving style before computed somehow\n\t\t// fixes an issue with getting wrong values\n\t\t// on detached elements\n\t\tstyle = elem.style;\n\n\tcomputed = computed || getStyles( elem );\n\n\t// getPropertyValue is needed for:\n\t// .css('filter') (IE 9 only, trac-12537)\n\t// .css('--customProperty) (gh-3144)\n\tif ( computed ) {\n\n\t\t// Support: IE <=9 - 11+\n\t\t// IE only supports `\"float\"` in `getPropertyValue`; in computed styles\n\t\t// it's only available as `\"cssFloat\"`. We no longer modify properties\n\t\t// sent to `.css()` apart from camelCasing, so we need to check both.\n\t\t// Normally, this would create difference in behavior: if\n\t\t// `getPropertyValue` returns an empty string, the value returned\n\t\t// by `.css()` would be `undefined`. This is usually the case for\n\t\t// disconnected elements. However, in IE even disconnected elements\n\t\t// with no styles return `\"none\"` for `getPropertyValue( \"float\" )`\n\t\tret = computed.getPropertyValue( name ) || computed[ name ];\n\n\t\tif ( isCustomProp && ret ) {\n\n\t\t\t// Support: Firefox 105+, Chrome <=105+\n\t\t\t// Spec requires trimming whitespace for custom properties (gh-4926).\n\t\t\t// Firefox only trims leading whitespace. Chrome just collapses\n\t\t\t// both leading & trailing whitespace to a single space.\n\t\t\t//\n\t\t\t// Fall back to `undefined` if empty string returned.\n\t\t\t// This collapses a missing definition with property defined\n\t\t\t// and set to an empty string but there's no standard API\n\t\t\t// allowing us to differentiate them without a performance penalty\n\t\t\t// and returning `undefined` aligns with older jQuery.\n\t\t\t//\n\t\t\t// rtrimCSS treats U+000D CARRIAGE RETURN and U+000C FORM FEED\n\t\t\t// as whitespace while CSS does not, but this is not a problem\n\t\t\t// because CSS preprocessing replaces them with U+000A LINE FEED\n\t\t\t// (which *is* CSS whitespace)\n\t\t\t// https://www.w3.org/TR/css-syntax-3/#input-preprocessing\n\t\t\tret = ret.replace( rtrimCSS, \"$1\" ) || undefined;\n\t\t}\n\n\t\tif ( ret === \"\" && !isAttached( elem ) ) {\n\t\t\tret = jQuery.style( elem, name );\n\t\t}\n\n\t\t// A tribute to the \"awesome hack by Dean Edwards\"\n\t\t// Android Browser returns percentage for some values,\n\t\t// but width seems to be reliably pixels.\n\t\t// This is against the CSSOM draft spec:\n\t\t// https://drafts.csswg.org/cssom/#resolved-values\n\t\tif ( !support.pixelBoxStyles() && rnumnonpx.test( ret ) && rboxStyle.test( name ) ) {\n\n\t\t\t// Remember the original values\n\t\t\twidth = style.width;\n\t\t\tminWidth = style.minWidth;\n\t\t\tmaxWidth = style.maxWidth;\n\n\t\t\t// Put in the new values to get a computed value out\n\t\t\tstyle.minWidth = style.maxWidth = style.width = ret;\n\t\t\tret = computed.width;\n\n\t\t\t// Revert the changed values\n\t\t\tstyle.width = width;\n\t\t\tstyle.minWidth = minWidth;\n\t\t\tstyle.maxWidth = maxWidth;\n\t\t}\n\t}\n\n\treturn ret !== undefined ?\n\n\t\t// Support: IE <=9 - 11 only\n\t\t// IE returns zIndex value as an integer.\n\t\tret + \"\" :\n\t\tret;\n}\n\n\nfunction addGetHookIf( conditionFn, hookFn ) {\n\n\t// Define the hook, we'll check on the first run if it's really needed.\n\treturn {\n\t\tget: function() {\n\t\t\tif ( conditionFn() ) {\n\n\t\t\t\t// Hook not needed (or it's not possible to use it due\n\t\t\t\t// to missing dependency), remove it.\n\t\t\t\tdelete this.get;\n\t\t\t\treturn;\n\t\t\t}\n\n\t\t\t// Hook needed; redefine it so that the support test is not executed again.\n\t\t\treturn ( this.get = hookFn ).apply( this, arguments );\n\t\t}\n\t};\n}\n\n\nvar cssPrefixes = [ \"Webkit\", \"Moz\", \"ms\" ],\n\temptyStyle = document.createElement( \"div\" ).style,\n\tvendorProps = {};\n\n// Return a vendor-prefixed property or undefined\nfunction vendorPropName( name ) {\n\n\t// Check for vendor prefixed names\n\tvar capName = name[ 0 ].toUpperCase() + name.slice( 1 ),\n\t\ti = cssPrefixes.length;\n\n\twhile ( i-- ) {\n\t\tname = cssPrefixes[ i ] + capName;\n\t\tif ( name in emptyStyle ) {\n\t\t\treturn name;\n\t\t}\n\t}\n}\n\n// Return a potentially-mapped jQuery.cssProps or vendor prefixed property\nfunction finalPropName( name ) {\n\tvar final = jQuery.cssProps[ name ] || vendorProps[ name ];\n\n\tif ( final ) {\n\t\treturn final;\n\t}\n\tif ( name in emptyStyle ) {\n\t\treturn name;\n\t}\n\treturn vendorProps[ name ] = vendorPropName( name ) || name;\n}\n\n\nvar\n\n\t// Swappable if display is none or starts with table\n\t// except \"table\", \"table-cell\", or \"table-caption\"\n\t// See here for display values: https://developer.mozilla.org/en-US/docs/CSS/display\n\trdisplayswap = /^(none|table(?!-c[ea]).+)/,\n\tcssShow = { position: \"absolute\", visibility: \"hidden\", display: \"block\" },\n\tcssNormalTransform = {\n\t\tletterSpacing: \"0\",\n\t\tfontWeight: \"400\"\n\t};\n\nfunction setPositiveNumber( _elem, value, subtract ) {\n\n\t// Any relative (+/-) values have already been\n\t// normalized at this point\n\tvar matches = rcssNum.exec( value );\n\treturn matches ?\n\n\t\t// Guard against undefined \"subtract\", e.g., when used as in cssHooks\n\t\tMath.max( 0, matches[ 2 ] - ( subtract || 0 ) ) + ( matches[ 3 ] || \"px\" ) :\n\t\tvalue;\n}\n\nfunction boxModelAdjustment( elem, dimension, box, isBorderBox, styles, computedVal ) {\n\tvar i = dimension === \"width\" ? 1 : 0,\n\t\textra = 0,\n\t\tdelta = 0,\n\t\tmarginDelta = 0;\n\n\t// Adjustment may not be necessary\n\tif ( box === ( isBorderBox ? \"border\" : \"content\" ) ) {\n\t\treturn 0;\n\t}\n\n\tfor ( ; i < 4; i += 2 ) {\n\n\t\t// Both box models exclude margin\n\t\t// Count margin delta separately to only add it after scroll gutter adjustment.\n\t\t// This is needed to make negative margins work with `outerHeight( true )` (gh-3982).\n\t\tif ( box === \"margin\" ) {\n\t\t\tmarginDelta += jQuery.css( elem, box + cssExpand[ i ], true, styles );\n\t\t}\n\n\t\t// If we get here with a content-box, we're seeking \"padding\" or \"border\" or \"margin\"\n\t\tif ( !isBorderBox ) {\n\n\t\t\t// Add padding\n\t\t\tdelta += jQuery.css( elem, \"padding\" + cssExpand[ i ], true, styles );\n\n\t\t\t// For \"border\" or \"margin\", add border\n\t\t\tif ( box !== \"padding\" ) {\n\t\t\t\tdelta += jQuery.css( elem, \"border\" + cssExpand[ i ] + \"Width\", true, styles );\n\n\t\t\t// But still keep track of it otherwise\n\t\t\t} else {\n\t\t\t\textra += jQuery.css( elem, \"border\" + cssExpand[ i ] + \"Width\", true, styles );\n\t\t\t}\n\n\t\t// If we get here with a border-box (content + padding + border), we're seeking \"content\" or\n\t\t// \"padding\" or \"margin\"\n\t\t} else {\n\n\t\t\t// For \"content\", subtract padding\n\t\t\tif ( box === \"content\" ) {\n\t\t\t\tdelta -= jQuery.css( elem, \"padding\" + cssExpand[ i ], true, styles );\n\t\t\t}\n\n\t\t\t// For \"content\" or \"padding\", subtract border\n\t\t\tif ( box !== \"margin\" ) {\n\t\t\t\tdelta -= jQuery.css( elem, \"border\" + cssExpand[ i ] + \"Width\", true, styles );\n\t\t\t}\n\t\t}\n\t}\n\n\t// Account for positive content-box scroll gutter when requested by providing computedVal\n\tif ( !isBorderBox && computedVal >= 0 ) {\n\n\t\t// offsetWidth/offsetHeight is a rounded sum of content, padding, scroll gutter, and border\n\t\t// Assuming integer scroll gutter, subtract the rest and round down\n\t\tdelta += Math.max( 0, Math.ceil(\n\t\t\telem[ \"offset\" + dimension[ 0 ].toUpperCase() + dimension.slice( 1 ) ] -\n\t\t\tcomputedVal -\n\t\t\tdelta -\n\t\t\textra -\n\t\t\t0.5\n\n\t\t// If offsetWidth/offsetHeight is unknown, then we can't determine content-box scroll gutter\n\t\t// Use an explicit zero to avoid NaN (gh-3964)\n\t\t) ) || 0;\n\t}\n\n\treturn delta + marginDelta;\n}\n\nfunction getWidthOrHeight( elem, dimension, extra ) {\n\n\t// Start with computed style\n\tvar styles = getStyles( elem ),\n\n\t\t// To avoid forcing a reflow, only fetch boxSizing if we need it (gh-4322).\n\t\t// Fake content-box until we know it's needed to know the true value.\n\t\tboxSizingNeeded = !support.boxSizingReliable() || extra,\n\t\tisBorderBox = boxSizingNeeded &&\n\t\t\tjQuery.css( elem, \"boxSizing\", false, styles ) === \"border-box\",\n\t\tvalueIsBorderBox = isBorderBox,\n\n\t\tval = curCSS( elem, dimension, styles ),\n\t\toffsetProp = \"offset\" + dimension[ 0 ].toUpperCase() + dimension.slice( 1 );\n\n\t// Support: Firefox <=54\n\t// Return a confounding non-pixel value or feign ignorance, as appropriate.\n\tif ( rnumnonpx.test( val ) ) {\n\t\tif ( !extra ) {\n\t\t\treturn val;\n\t\t}\n\t\tval = \"auto\";\n\t}\n\n\n\t// Support: IE 9 - 11 only\n\t// Use offsetWidth/offsetHeight for when box sizing is unreliable.\n\t// In those cases, the computed value can be trusted to be border-box.\n\tif ( ( !support.boxSizingReliable() && isBorderBox ||\n\n\t\t// Support: IE 10 - 11+, Edge 15 - 18+\n\t\t// IE/Edge misreport `getComputedStyle` of table rows with width/height\n\t\t// set in CSS while `offset*` properties report correct values.\n\t\t// Interestingly, in some cases IE 9 doesn't suffer from this issue.\n\t\t!support.reliableTrDimensions() && nodeName( elem, \"tr\" ) ||\n\n\t\t// Fall back to offsetWidth/offsetHeight when value is \"auto\"\n\t\t// This happens for inline elements with no explicit setting (gh-3571)\n\t\tval === \"auto\" ||\n\n\t\t// Support: Android <=4.1 - 4.3 only\n\t\t// Also use offsetWidth/offsetHeight for misreported inline dimensions (gh-3602)\n\t\t!parseFloat( val ) && jQuery.css( elem, \"display\", false, styles ) === \"inline\" ) &&\n\n\t\t// Make sure the element is visible & connected\n\t\telem.getClientRects().length ) {\n\n\t\tisBorderBox = jQuery.css( elem, \"boxSizing\", false, styles ) === \"border-box\";\n\n\t\t// Where available, offsetWidth/offsetHeight approximate border box dimensions.\n\t\t// Where not available (e.g., SVG), assume unreliable box-sizing and interpret the\n\t\t// retrieved value as a content box dimension.\n\t\tvalueIsBorderBox = offsetProp in elem;\n\t\tif ( valueIsBorderBox ) {\n\t\t\tval = elem[ offsetProp ];\n\t\t}\n\t}\n\n\t// Normalize \"\" and auto\n\tval = parseFloat( val ) || 0;\n\n\t// Adjust for the element's box model\n\treturn ( val +\n\t\tboxModelAdjustment(\n\t\t\telem,\n\t\t\tdimension,\n\t\t\textra || ( isBorderBox ? \"border\" : \"content\" ),\n\t\t\tvalueIsBorderBox,\n\t\t\tstyles,\n\n\t\t\t// Provide the current computed size to request scroll gutter calculation (gh-3589)\n\t\t\tval\n\t\t)\n\t) + \"px\";\n}\n\njQuery.extend( {\n\n\t// Add in style property hooks for overriding the default\n\t// behavior of getting and setting a style property\n\tcssHooks: {\n\t\topacity: {\n\t\t\tget: function( elem, computed ) {\n\t\t\t\tif ( computed ) {\n\n\t\t\t\t\t// We should always get a number back from opacity\n\t\t\t\t\tvar ret = curCSS( elem, \"opacity\" );\n\t\t\t\t\treturn ret === \"\" ? \"1\" : ret;\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\t},\n\n\t// Don't automatically add \"px\" to these possibly-unitless properties\n\tcssNumber: {\n\t\tanimationIterationCount: true,\n\t\taspectRatio: true,\n\t\tborderImageSlice: true,\n\t\tcolumnCount: true,\n\t\tflexGrow: true,\n\t\tflexShrink: true,\n\t\tfontWeight: true,\n\t\tgridArea: true,\n\t\tgridColumn: true,\n\t\tgridColumnEnd: true,\n\t\tgridColumnStart: true,\n\t\tgridRow: true,\n\t\tgridRowEnd: true,\n\t\tgridRowStart: true,\n\t\tlineHeight: true,\n\t\topacity: true,\n\t\torder: true,\n\t\torphans: true,\n\t\tscale: true,\n\t\twidows: true,\n\t\tzIndex: true,\n\t\tzoom: true,\n\n\t\t// SVG-related\n\t\tfillOpacity: true,\n\t\tfloodOpacity: true,\n\t\tstopOpacity: true,\n\t\tstrokeMiterlimit: true,\n\t\tstrokeOpacity: true\n\t},\n\n\t// Add in properties whose names you wish to fix before\n\t// setting or getting the value\n\tcssProps: {},\n\n\t// Get and set the style property on a DOM Node\n\tstyle: function( elem, name, value, extra ) {\n\n\t\t// Don't set styles on text and comment nodes\n\t\tif ( !elem || elem.nodeType === 3 || elem.nodeType === 8 || !elem.style ) {\n\t\t\treturn;\n\t\t}\n\n\t\t// Make sure that we're working with the right name\n\t\tvar ret, type, hooks,\n\t\t\torigName = camelCase( name ),\n\t\t\tisCustomProp = rcustomProp.test( name ),\n\t\t\tstyle = elem.style;\n\n\t\t// Make sure that we're working with the right name. We don't\n\t\t// want to query the value if it is a CSS custom property\n\t\t// since they are user-defined.\n\t\tif ( !isCustomProp ) {\n\t\t\tname = finalPropName( origName );\n\t\t}\n\n\t\t// Gets hook for the prefixed version, then unprefixed version\n\t\thooks = jQuery.cssHooks[ name ] || jQuery.cssHooks[ origName ];\n\n\t\t// Check if we're setting a value\n\t\tif ( value !== undefined ) {\n\t\t\ttype = typeof value;\n\n\t\t\t// Convert \"+=\" or \"-=\" to relative numbers (trac-7345)\n\t\t\tif ( type === \"string\" && ( ret = rcssNum.exec( value ) ) && ret[ 1 ] ) {\n\t\t\t\tvalue = adjustCSS( elem, name, ret );\n\n\t\t\t\t// Fixes bug trac-9237\n\t\t\t\ttype = \"number\";\n\t\t\t}\n\n\t\t\t// Make sure that null and NaN values aren't set (trac-7116)\n\t\t\tif ( value == null || value !== value ) {\n\t\t\t\treturn;\n\t\t\t}\n\n\t\t\t// If a number was passed in, add the unit (except for certain CSS properties)\n\t\t\t// The isCustomProp check can be removed in jQuery 4.0 when we only auto-append\n\t\t\t// \"px\" to a few hardcoded values.\n\t\t\tif ( type === \"number\" && !isCustomProp ) {\n\t\t\t\tvalue += ret && ret[ 3 ] || ( jQuery.cssNumber[ origName ] ? \"\" : \"px\" );\n\t\t\t}\n\n\t\t\t// background-* props affect original clone's values\n\t\t\tif ( !support.clearCloneStyle && value === \"\" && name.indexOf( \"background\" ) === 0 ) {\n\t\t\t\tstyle[ name ] = \"inherit\";\n\t\t\t}\n\n\t\t\t// If a hook was provided, use that value, otherwise just set the specified value\n\t\t\tif ( !hooks || !( \"set\" in hooks ) ||\n\t\t\t\t( value = hooks.set( elem, value, extra ) ) !== undefined ) {\n\n\t\t\t\tif ( isCustomProp ) {\n\t\t\t\t\tstyle.setProperty( name, value );\n\t\t\t\t} else {\n\t\t\t\t\tstyle[ name ] = value;\n\t\t\t\t}\n\t\t\t}\n\n\t\t} else {\n\n\t\t\t// If a hook was provided get the non-computed value from there\n\t\t\tif ( hooks && \"get\" in hooks &&\n\t\t\t\t( ret = hooks.get( elem, false, extra ) ) !== undefined ) {\n\n\t\t\t\treturn ret;\n\t\t\t}\n\n\t\t\t// Otherwise just get the value from the style object\n\t\t\treturn style[ name ];\n\t\t}\n\t},\n\n\tcss: function( elem, name, extra, styles ) {\n\t\tvar val, num, hooks,\n\t\t\torigName = camelCase( name ),\n\t\t\tisCustomProp = rcustomProp.test( name );\n\n\t\t// Make sure that we're working with the right name. We don't\n\t\t// want to modify the value if it is a CSS custom property\n\t\t// since they are user-defined.\n\t\tif ( !isCustomProp ) {\n\t\t\tname = finalPropName( origName );\n\t\t}\n\n\t\t// Try prefixed name followed by the unprefixed name\n\t\thooks = jQuery.cssHooks[ name ] || jQuery.cssHooks[ origName ];\n\n\t\t// If a hook was provided get the computed value from there\n\t\tif ( hooks && \"get\" in hooks ) {\n\t\t\tval = hooks.get( elem, true, extra );\n\t\t}\n\n\t\t// Otherwise, if a way to get the computed value exists, use that\n\t\tif ( val === undefined ) {\n\t\t\tval = curCSS( elem, name, styles );\n\t\t}\n\n\t\t// Convert \"normal\" to computed value\n\t\tif ( val === \"normal\" && name in cssNormalTransform ) {\n\t\t\tval = cssNormalTransform[ name ];\n\t\t}\n\n\t\t// Make numeric if forced or a qualifier was provided and val looks numeric\n\t\tif ( extra === \"\" || extra ) {\n\t\t\tnum = parseFloat( val );\n\t\t\treturn extra === true || isFinite( num ) ? num || 0 : val;\n\t\t}\n\n\t\treturn val;\n\t}\n} );\n\njQuery.each( [ \"height\", \"width\" ], function( _i, dimension ) {\n\tjQuery.cssHooks[ dimension ] = {\n\t\tget: function( elem, computed, extra ) {\n\t\t\tif ( computed ) {\n\n\t\t\t\t// Certain elements can have dimension info if we invisibly show them\n\t\t\t\t// but it must have a current display style that would benefit\n\t\t\t\treturn rdisplayswap.test( jQuery.css( elem, \"display\" ) ) &&\n\n\t\t\t\t\t// Support: Safari 8+\n\t\t\t\t\t// Table columns in Safari have non-zero offsetWidth & zero\n\t\t\t\t\t// getBoundingClientRect().width unless display is changed.\n\t\t\t\t\t// Support: IE <=11 only\n\t\t\t\t\t// Running getBoundingClientRect on a disconnected node\n\t\t\t\t\t// in IE throws an error.\n\t\t\t\t\t( !elem.getClientRects().length || !elem.getBoundingClientRect().width ) ?\n\t\t\t\t\tswap( elem, cssShow, function() {\n\t\t\t\t\t\treturn getWidthOrHeight( elem, dimension, extra );\n\t\t\t\t\t} ) :\n\t\t\t\t\tgetWidthOrHeight( elem, dimension, extra );\n\t\t\t}\n\t\t},\n\n\t\tset: function( elem, value, extra ) {\n\t\t\tvar matches,\n\t\t\t\tstyles = getStyles( elem ),\n\n\t\t\t\t// Only read styles.position if the test has a chance to fail\n\t\t\t\t// to avoid forcing a reflow.\n\t\t\t\tscrollboxSizeBuggy = !support.scrollboxSize() &&\n\t\t\t\t\tstyles.position === \"absolute\",\n\n\t\t\t\t// To avoid forcing a reflow, only fetch boxSizing if we need it (gh-3991)\n\t\t\t\tboxSizingNeeded = scrollboxSizeBuggy || extra,\n\t\t\t\tisBorderBox = boxSizingNeeded &&\n\t\t\t\t\tjQuery.css( elem, \"boxSizing\", false, styles ) === \"border-box\",\n\t\t\t\tsubtract = extra ?\n\t\t\t\t\tboxModelAdjustment(\n\t\t\t\t\t\telem,\n\t\t\t\t\t\tdimension,\n\t\t\t\t\t\textra,\n\t\t\t\t\t\tisBorderBox,\n\t\t\t\t\t\tstyles\n\t\t\t\t\t) :\n\t\t\t\t\t0;\n\n\t\t\t// Account for unreliable border-box dimensions by comparing offset* to computed and\n\t\t\t// faking a content-box to get border and padding (gh-3699)\n\t\t\tif ( isBorderBox && scrollboxSizeBuggy ) {\n\t\t\t\tsubtract -= Math.ceil(\n\t\t\t\t\telem[ \"offset\" + dimension[ 0 ].toUpperCase() + dimension.slice( 1 ) ] -\n\t\t\t\t\tparseFloat( styles[ dimension ] ) -\n\t\t\t\t\tboxModelAdjustment( elem, dimension, \"border\", false, styles ) -\n\t\t\t\t\t0.5\n\t\t\t\t);\n\t\t\t}\n\n\t\t\t// Convert to pixels if value adjustment is needed\n\t\t\tif ( subtract && ( matches = rcssNum.exec( value ) ) &&\n\t\t\t\t( matches[ 3 ] || \"px\" ) !== \"px\" ) {\n\n\t\t\t\telem.style[ dimension ] = value;\n\t\t\t\tvalue = jQuery.css( elem, dimension );\n\t\t\t}\n\n\t\t\treturn setPositiveNumber( elem, value, subtract );\n\t\t}\n\t};\n} );\n\njQuery.cssHooks.marginLeft = addGetHookIf( support.reliableMarginLeft,\n\tfunction( elem, computed ) {\n\t\tif ( computed ) {\n\t\t\treturn ( parseFloat( curCSS( elem, \"marginLeft\" ) ) ||\n\t\t\t\telem.getBoundingClientRect().left -\n\t\t\t\t\tswap( elem, { marginLeft: 0 }, function() {\n\t\t\t\t\t\treturn elem.getBoundingClientRect().left;\n\t\t\t\t\t} )\n\t\t\t) + \"px\";\n\t\t}\n\t}\n);\n\n// These hooks are used by animate to expand properties\njQuery.each( {\n\tmargin: \"\",\n\tpadding: \"\",\n\tborder: \"Width\"\n}, function( prefix, suffix ) {\n\tjQuery.cssHooks[ prefix + suffix ] = {\n\t\texpand: function( value ) {\n\t\t\tvar i = 0,\n\t\t\t\texpanded = {},\n\n\t\t\t\t// Assumes a single number if not a string\n\t\t\t\tparts = typeof value === \"string\" ? value.split( \" \" ) : [ value ];\n\n\t\t\tfor ( ; i < 4; i++ ) {\n\t\t\t\texpanded[ prefix + cssExpand[ i ] + suffix ] =\n\t\t\t\t\tparts[ i ] || parts[ i - 2 ] || parts[ 0 ];\n\t\t\t}\n\n\t\t\treturn expanded;\n\t\t}\n\t};\n\n\tif ( prefix !== \"margin\" ) {\n\t\tjQuery.cssHooks[ prefix + suffix ].set = setPositiveNumber;\n\t}\n} );\n\njQuery.fn.extend( {\n\tcss: function( name, value ) {\n\t\treturn access( this, function( elem, name, value ) {\n\t\t\tvar styles, len,\n\t\t\t\tmap = {},\n\t\t\t\ti = 0;\n\n\t\t\tif ( Array.isArray( name ) ) {\n\t\t\t\tstyles = getStyles( elem );\n\t\t\t\tlen = name.length;\n\n\t\t\t\tfor ( ; i < len; i++ ) {\n\t\t\t\t\tmap[ name[ i ] ] = jQuery.css( elem, name[ i ], false, styles );\n\t\t\t\t}\n\n\t\t\t\treturn map;\n\t\t\t}\n\n\t\t\treturn value !== undefined ?\n\t\t\t\tjQuery.style( elem, name, value ) :\n\t\t\t\tjQuery.css( elem, name );\n\t\t}, name, value, arguments.length > 1 );\n\t}\n} );\n\n\nfunction Tween( elem, options, prop, end, easing ) {\n\treturn new Tween.prototype.init( elem, options, prop, end, easing );\n}\njQuery.Tween = Tween;\n\nTween.prototype = {\n\tconstructor: Tween,\n\tinit: function( elem, options, prop, end, easing, unit ) {\n\t\tthis.elem = elem;\n\t\tthis.prop = prop;\n\t\tthis.easing = easing || jQuery.easing._default;\n\t\tthis.options = options;\n\t\tthis.start = this.now = this.cur();\n\t\tthis.end = end;\n\t\tthis.unit = unit || ( jQuery.cssNumber[ prop ] ? \"\" : \"px\" );\n\t},\n\tcur: function() {\n\t\tvar hooks = Tween.propHooks[ this.prop ];\n\n\t\treturn hooks && hooks.get ?\n\t\t\thooks.get( this ) :\n\t\t\tTween.propHooks._default.get( this );\n\t},\n\trun: function( percent ) {\n\t\tvar eased,\n\t\t\thooks = Tween.propHooks[ this.prop ];\n\n\t\tif ( this.options.duration ) {\n\t\t\tthis.pos = eased = jQuery.easing[ this.easing ](\n\t\t\t\tpercent, this.options.duration * percent, 0, 1, this.options.duration\n\t\t\t);\n\t\t} else {\n\t\t\tthis.pos = eased = percent;\n\t\t}\n\t\tthis.now = ( this.end - this.start ) * eased + this.start;\n\n\t\tif ( this.options.step ) {\n\t\t\tthis.options.step.call( this.elem, this.now, this );\n\t\t}\n\n\t\tif ( hooks && hooks.set ) {\n\t\t\thooks.set( this );\n\t\t} else {\n\t\t\tTween.propHooks._default.set( this );\n\t\t}\n\t\treturn this;\n\t}\n};\n\nTween.prototype.init.prototype = Tween.prototype;\n\nTween.propHooks = {\n\t_default: {\n\t\tget: function( tween ) {\n\t\t\tvar result;\n\n\t\t\t// Use a property on the element directly when it is not a DOM element,\n\t\t\t// or when there is no matching style property that exists.\n\t\t\tif ( tween.elem.nodeType !== 1 ||\n\t\t\t\ttween.elem[ tween.prop ] != null && tween.elem.style[ tween.prop ] == null ) {\n\t\t\t\treturn tween.elem[ tween.prop ];\n\t\t\t}\n\n\t\t\t// Passing an empty string as a 3rd parameter to .css will automatically\n\t\t\t// attempt a parseFloat and fallback to a string if the parse fails.\n\t\t\t// Simple values such as \"10px\" are parsed to Float;\n\t\t\t// complex values such as \"rotate(1rad)\" are returned as-is.\n\t\t\tresult = jQuery.css( tween.elem, tween.prop, \"\" );\n\n\t\t\t// Empty strings, null, undefined and \"auto\" are converted to 0.\n\t\t\treturn !result || result === \"auto\" ? 0 : result;\n\t\t},\n\t\tset: function( tween ) {\n\n\t\t\t// Use step hook for back compat.\n\t\t\t// Use cssHook if its there.\n\t\t\t// Use .style if available and use plain properties where available.\n\t\t\tif ( jQuery.fx.step[ tween.prop ] ) {\n\t\t\t\tjQuery.fx.step[ tween.prop ]( tween );\n\t\t\t} else if ( tween.elem.nodeType === 1 && (\n\t\t\t\tjQuery.cssHooks[ tween.prop ] ||\n\t\t\t\t\ttween.elem.style[ finalPropName( tween.prop ) ] != null ) ) {\n\t\t\t\tjQuery.style( tween.elem, tween.prop, tween.now + tween.unit );\n\t\t\t} else {\n\t\t\t\ttween.elem[ tween.prop ] = tween.now;\n\t\t\t}\n\t\t}\n\t}\n};\n\n// Support: IE <=9 only\n// Panic based approach to setting things on disconnected nodes\nTween.propHooks.scrollTop = Tween.propHooks.scrollLeft = {\n\tset: function( tween ) {\n\t\tif ( tween.elem.nodeType && tween.elem.parentNode ) {\n\t\t\ttween.elem[ tween.prop ] = tween.now;\n\t\t}\n\t}\n};\n\njQuery.easing = {\n\tlinear: function( p ) {\n\t\treturn p;\n\t},\n\tswing: function( p ) {\n\t\treturn 0.5 - Math.cos( p * Math.PI ) / 2;\n\t},\n\t_default: \"swing\"\n};\n\njQuery.fx = Tween.prototype.init;\n\n// Back compat <1.8 extension point\njQuery.fx.step = {};\n\n\n\n\nvar\n\tfxNow, inProgress,\n\trfxtypes = /^(?:toggle|show|hide)$/,\n\trrun = /queueHooks$/;\n\nfunction schedule() {\n\tif ( inProgress ) {\n\t\tif ( document.hidden === false && window.requestAnimationFrame ) {\n\t\t\twindow.requestAnimationFrame( schedule );\n\t\t} else {\n\t\t\twindow.setTimeout( schedule, jQuery.fx.interval );\n\t\t}\n\n\t\tjQuery.fx.tick();\n\t}\n}\n\n// Animations created synchronously will run synchronously\nfunction createFxNow() {\n\twindow.setTimeout( function() {\n\t\tfxNow = undefined;\n\t} );\n\treturn ( fxNow = Date.now() );\n}\n\n// Generate parameters to create a standard animation\nfunction genFx( type, includeWidth ) {\n\tvar which,\n\t\ti = 0,\n\t\tattrs = { height: type };\n\n\t// If we include width, step value is 1 to do all cssExpand values,\n\t// otherwise step value is 2 to skip over Left and Right\n\tincludeWidth = includeWidth ? 1 : 0;\n\tfor ( ; i < 4; i += 2 - includeWidth ) {\n\t\twhich = cssExpand[ i ];\n\t\tattrs[ \"margin\" + which ] = attrs[ \"padding\" + which ] = type;\n\t}\n\n\tif ( includeWidth ) {\n\t\tattrs.opacity = attrs.width = type;\n\t}\n\n\treturn attrs;\n}\n\nfunction createTween( value, prop, animation ) {\n\tvar tween,\n\t\tcollection = ( Animation.tweeners[ prop ] || [] ).concat( Animation.tweeners[ \"*\" ] ),\n\t\tindex = 0,\n\t\tlength = collection.length;\n\tfor ( ; index < length; index++ ) {\n\t\tif ( ( tween = collection[ index ].call( animation, prop, value ) ) ) {\n\n\t\t\t// We're done with this property\n\t\t\treturn tween;\n\t\t}\n\t}\n}\n\nfunction defaultPrefilter( elem, props, opts ) {\n\tvar prop, value, toggle, hooks, oldfire, propTween, restoreDisplay, display,\n\t\tisBox = \"width\" in props || \"height\" in props,\n\t\tanim = this,\n\t\torig = {},\n\t\tstyle = elem.style,\n\t\thidden = elem.nodeType && isHiddenWithinTree( elem ),\n\t\tdataShow = dataPriv.get( elem, \"fxshow\" );\n\n\t// Queue-skipping animations hijack the fx hooks\n\tif ( !opts.queue ) {\n\t\thooks = jQuery._queueHooks( elem, \"fx\" );\n\t\tif ( hooks.unqueued == null ) {\n\t\t\thooks.unqueued = 0;\n\t\t\toldfire = hooks.empty.fire;\n\t\t\thooks.empty.fire = function() {\n\t\t\t\tif ( !hooks.unqueued ) {\n\t\t\t\t\toldfire();\n\t\t\t\t}\n\t\t\t};\n\t\t}\n\t\thooks.unqueued++;\n\n\t\tanim.always( function() {\n\n\t\t\t// Ensure the complete handler is called before this completes\n\t\t\tanim.always( function() {\n\t\t\t\thooks.unqueued--;\n\t\t\t\tif ( !jQuery.queue( elem, \"fx\" ).length ) {\n\t\t\t\t\thooks.empty.fire();\n\t\t\t\t}\n\t\t\t} );\n\t\t} );\n\t}\n\n\t// Detect show/hide animations\n\tfor ( prop in props ) {\n\t\tvalue = props[ prop ];\n\t\tif ( rfxtypes.test( value ) ) {\n\t\t\tdelete props[ prop ];\n\t\t\ttoggle = toggle || value === \"toggle\";\n\t\t\tif ( value === ( hidden ? \"hide\" : \"show\" ) ) {\n\n\t\t\t\t// Pretend to be hidden if this is a \"show\" and\n\t\t\t\t// there is still data from a stopped show/hide\n\t\t\t\tif ( value === \"show\" && dataShow && dataShow[ prop ] !== undefined ) {\n\t\t\t\t\thidden = true;\n\n\t\t\t\t// Ignore all other no-op show/hide data\n\t\t\t\t} else {\n\t\t\t\t\tcontinue;\n\t\t\t\t}\n\t\t\t}\n\t\t\torig[ prop ] = dataShow && dataShow[ prop ] || jQuery.style( elem, prop );\n\t\t}\n\t}\n\n\t// Bail out if this is a no-op like .hide().hide()\n\tpropTween = !jQuery.isEmptyObject( props );\n\tif ( !propTween && jQuery.isEmptyObject( orig ) ) {\n\t\treturn;\n\t}\n\n\t// Restrict \"overflow\" and \"display\" styles during box animations\n\tif ( isBox && elem.nodeType === 1 ) {\n\n\t\t// Support: IE <=9 - 11, Edge 12 - 15\n\t\t// Record all 3 overflow attributes because IE does not infer the shorthand\n\t\t// from identically-valued overflowX and overflowY and Edge just mirrors\n\t\t// the overflowX value there.\n\t\topts.overflow = [ style.overflow, style.overflowX, style.overflowY ];\n\n\t\t// Identify a display type, preferring old show/hide data over the CSS cascade\n\t\trestoreDisplay = dataShow && dataShow.display;\n\t\tif ( restoreDisplay == null ) {\n\t\t\trestoreDisplay = dataPriv.get( elem, \"display\" );\n\t\t}\n\t\tdisplay = jQuery.css( elem, \"display\" );\n\t\tif ( display === \"none\" ) {\n\t\t\tif ( restoreDisplay ) {\n\t\t\t\tdisplay = restoreDisplay;\n\t\t\t} else {\n\n\t\t\t\t// Get nonempty value(s) by temporarily forcing visibility\n\t\t\t\tshowHide( [ elem ], true );\n\t\t\t\trestoreDisplay = elem.style.display || restoreDisplay;\n\t\t\t\tdisplay = jQuery.css( elem, \"display\" );\n\t\t\t\tshowHide( [ elem ] );\n\t\t\t}\n\t\t}\n\n\t\t// Animate inline elements as inline-block\n\t\tif ( display === \"inline\" || display === \"inline-block\" && restoreDisplay != null ) {\n\t\t\tif ( jQuery.css( elem, \"float\" ) === \"none\" ) {\n\n\t\t\t\t// Restore the original display value at the end of pure show/hide animations\n\t\t\t\tif ( !propTween ) {\n\t\t\t\t\tanim.done( function() {\n\t\t\t\t\t\tstyle.display = restoreDisplay;\n\t\t\t\t\t} );\n\t\t\t\t\tif ( restoreDisplay == null ) {\n\t\t\t\t\t\tdisplay = style.display;\n\t\t\t\t\t\trestoreDisplay = display === \"none\" ? \"\" : display;\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t\tstyle.display = \"inline-block\";\n\t\t\t}\n\t\t}\n\t}\n\n\tif ( opts.overflow ) {\n\t\tstyle.overflow = \"hidden\";\n\t\tanim.always( function() {\n\t\t\tstyle.overflow = opts.overflow[ 0 ];\n\t\t\tstyle.overflowX = opts.overflow[ 1 ];\n\t\t\tstyle.overflowY = opts.overflow[ 2 ];\n\t\t} );\n\t}\n\n\t// Implement show/hide animations\n\tpropTween = false;\n\tfor ( prop in orig ) {\n\n\t\t// General show/hide setup for this element animation\n\t\tif ( !propTween ) {\n\t\t\tif ( dataShow ) {\n\t\t\t\tif ( \"hidden\" in dataShow ) {\n\t\t\t\t\thidden = dataShow.hidden;\n\t\t\t\t}\n\t\t\t} else {\n\t\t\t\tdataShow = dataPriv.access( elem, \"fxshow\", { display: restoreDisplay } );\n\t\t\t}\n\n\t\t\t// Store hidden/visible for toggle so `.stop().toggle()` \"reverses\"\n\t\t\tif ( toggle ) {\n\t\t\t\tdataShow.hidden = !hidden;\n\t\t\t}\n\n\t\t\t// Show elements before animating them\n\t\t\tif ( hidden ) {\n\t\t\t\tshowHide( [ elem ], true );\n\t\t\t}\n\n\t\t\t/* eslint-disable no-loop-func */\n\n\t\t\tanim.done( function() {\n\n\t\t\t\t/* eslint-enable no-loop-func */\n\n\t\t\t\t// The final step of a \"hide\" animation is actually hiding the element\n\t\t\t\tif ( !hidden ) {\n\t\t\t\t\tshowHide( [ elem ] );\n\t\t\t\t}\n\t\t\t\tdataPriv.remove( elem, \"fxshow\" );\n\t\t\t\tfor ( prop in orig ) {\n\t\t\t\t\tjQuery.style( elem, prop, orig[ prop ] );\n\t\t\t\t}\n\t\t\t} );\n\t\t}\n\n\t\t// Per-property setup\n\t\tpropTween = createTween( hidden ? dataShow[ prop ] : 0, prop, anim );\n\t\tif ( !( prop in dataShow ) ) {\n\t\t\tdataShow[ prop ] = propTween.start;\n\t\t\tif ( hidden ) {\n\t\t\t\tpropTween.end = propTween.start;\n\t\t\t\tpropTween.start = 0;\n\t\t\t}\n\t\t}\n\t}\n}\n\nfunction propFilter( props, specialEasing ) {\n\tvar index, name, easing, value, hooks;\n\n\t// camelCase, specialEasing and expand cssHook pass\n\tfor ( index in props ) {\n\t\tname = camelCase( index );\n\t\teasing = specialEasing[ name ];\n\t\tvalue = props[ index ];\n\t\tif ( Array.isArray( value ) ) {\n\t\t\teasing = value[ 1 ];\n\t\t\tvalue = props[ index ] = value[ 0 ];\n\t\t}\n\n\t\tif ( index !== name ) {\n\t\t\tprops[ name ] = value;\n\t\t\tdelete props[ index ];\n\t\t}\n\n\t\thooks = jQuery.cssHooks[ name ];\n\t\tif ( hooks && \"expand\" in hooks ) {\n\t\t\tvalue = hooks.expand( value );\n\t\t\tdelete props[ name ];\n\n\t\t\t// Not quite $.extend, this won't overwrite existing keys.\n\t\t\t// Reusing 'index' because we have the correct \"name\"\n\t\t\tfor ( index in value ) {\n\t\t\t\tif ( !( index in props ) ) {\n\t\t\t\t\tprops[ index ] = value[ index ];\n\t\t\t\t\tspecialEasing[ index ] = easing;\n\t\t\t\t}\n\t\t\t}\n\t\t} else {\n\t\t\tspecialEasing[ name ] = easing;\n\t\t}\n\t}\n}\n\nfunction Animation( elem, properties, options ) {\n\tvar result,\n\t\tstopped,\n\t\tindex = 0,\n\t\tlength = Animation.prefilters.length,\n\t\tdeferred = jQuery.Deferred().always( function() {\n\n\t\t\t// Don't match elem in the :animated selector\n\t\t\tdelete tick.elem;\n\t\t} ),\n\t\ttick = function() {\n\t\t\tif ( stopped ) {\n\t\t\t\treturn false;\n\t\t\t}\n\t\t\tvar currentTime = fxNow || createFxNow(),\n\t\t\t\tremaining = Math.max( 0, animation.startTime + animation.duration - currentTime ),\n\n\t\t\t\t// Support: Android 2.3 only\n\t\t\t\t// Archaic crash bug won't allow us to use `1 - ( 0.5 || 0 )` (trac-12497)\n\t\t\t\ttemp = remaining / animation.duration || 0,\n\t\t\t\tpercent = 1 - temp,\n\t\t\t\tindex = 0,\n\t\t\t\tlength = animation.tweens.length;\n\n\t\t\tfor ( ; index < length; index++ ) {\n\t\t\t\tanimation.tweens[ index ].run( percent );\n\t\t\t}\n\n\t\t\tdeferred.notifyWith( elem, [ animation, percent, remaining ] );\n\n\t\t\t// If there's more to do, yield\n\t\t\tif ( percent < 1 && length ) {\n\t\t\t\treturn remaining;\n\t\t\t}\n\n\t\t\t// If this was an empty animation, synthesize a final progress notification\n\t\t\tif ( !length ) {\n\t\t\t\tdeferred.notifyWith( elem, [ animation, 1, 0 ] );\n\t\t\t}\n\n\t\t\t// Resolve the animation and report its conclusion\n\t\t\tdeferred.resolveWith( elem, [ animation ] );\n\t\t\treturn false;\n\t\t},\n\t\tanimation = deferred.promise( {\n\t\t\telem: elem,\n\t\t\tprops: jQuery.extend( {}, properties ),\n\t\t\topts: jQuery.extend( true, {\n\t\t\t\tspecialEasing: {},\n\t\t\t\teasing: jQuery.easing._default\n\t\t\t}, options ),\n\t\t\toriginalProperties: properties,\n\t\t\toriginalOptions: options,\n\t\t\tstartTime: fxNow || createFxNow(),\n\t\t\tduration: options.duration,\n\t\t\ttweens: [],\n\t\t\tcreateTween: function( prop, end ) {\n\t\t\t\tvar tween = jQuery.Tween( elem, animation.opts, prop, end,\n\t\t\t\t\tanimation.opts.specialEasing[ prop ] || animation.opts.easing );\n\t\t\t\tanimation.tweens.push( tween );\n\t\t\t\treturn tween;\n\t\t\t},\n\t\t\tstop: function( gotoEnd ) {\n\t\t\t\tvar index = 0,\n\n\t\t\t\t\t// If we are going to the end, we want to run all the tweens\n\t\t\t\t\t// otherwise we skip this part\n\t\t\t\t\tlength = gotoEnd ? animation.tweens.length : 0;\n\t\t\t\tif ( stopped ) {\n\t\t\t\t\treturn this;\n\t\t\t\t}\n\t\t\t\tstopped = true;\n\t\t\t\tfor ( ; index < length; index++ ) {\n\t\t\t\t\tanimation.tweens[ index ].run( 1 );\n\t\t\t\t}\n\n\t\t\t\t// Resolve when we played the last frame; otherwise, reject\n\t\t\t\tif ( gotoEnd ) {\n\t\t\t\t\tdeferred.notifyWith( elem, [ animation, 1, 0 ] );\n\t\t\t\t\tdeferred.resolveWith( elem, [ animation, gotoEnd ] );\n\t\t\t\t} else {\n\t\t\t\t\tdeferred.rejectWith( elem, [ animation, gotoEnd ] );\n\t\t\t\t}\n\t\t\t\treturn this;\n\t\t\t}\n\t\t} ),\n\t\tprops = animation.props;\n\n\tpropFilter( props, animation.opts.specialEasing );\n\n\tfor ( ; index < length; index++ ) {\n\t\tresult = Animation.prefilters[ index ].call( animation, elem, props, animation.opts );\n\t\tif ( result ) {\n\t\t\tif ( isFunction( result.stop ) ) {\n\t\t\t\tjQuery._queueHooks( animation.elem, animation.opts.queue ).stop =\n\t\t\t\t\tresult.stop.bind( result );\n\t\t\t}\n\t\t\treturn result;\n\t\t}\n\t}\n\n\tjQuery.map( props, createTween, animation );\n\n\tif ( isFunction( animation.opts.start ) ) {\n\t\tanimation.opts.start.call( elem, animation );\n\t}\n\n\t// Attach callbacks from options\n\tanimation\n\t\t.progress( animation.opts.progress )\n\t\t.done( animation.opts.done, animation.opts.complete )\n\t\t.fail( animation.opts.fail )\n\t\t.always( animation.opts.always );\n\n\tjQuery.fx.timer(\n\t\tjQuery.extend( tick, {\n\t\t\telem: elem,\n\t\t\tanim: animation,\n\t\t\tqueue: animation.opts.queue\n\t\t} )\n\t);\n\n\treturn animation;\n}\n\njQuery.Animation = jQuery.extend( Animation, {\n\n\ttweeners: {\n\t\t\"*\": [ function( prop, value ) {\n\t\t\tvar tween = this.createTween( prop, value );\n\t\t\tadjustCSS( tween.elem, prop, rcssNum.exec( value ), tween );\n\t\t\treturn tween;\n\t\t} ]\n\t},\n\n\ttweener: function( props, callback ) {\n\t\tif ( isFunction( props ) ) {\n\t\t\tcallback = props;\n\t\t\tprops = [ \"*\" ];\n\t\t} else {\n\t\t\tprops = props.match( rnothtmlwhite );\n\t\t}\n\n\t\tvar prop,\n\t\t\tindex = 0,\n\t\t\tlength = props.length;\n\n\t\tfor ( ; index < length; index++ ) {\n\t\t\tprop = props[ index ];\n\t\t\tAnimation.tweeners[ prop ] = Animation.tweeners[ prop ] || [];\n\t\t\tAnimation.tweeners[ prop ].unshift( callback );\n\t\t}\n\t},\n\n\tprefilters: [ defaultPrefilter ],\n\n\tprefilter: function( callback, prepend ) {\n\t\tif ( prepend ) {\n\t\t\tAnimation.prefilters.unshift( callback );\n\t\t} else {\n\t\t\tAnimation.prefilters.push( callback );\n\t\t}\n\t}\n} );\n\njQuery.speed = function( speed, easing, fn ) {\n\tvar opt = speed && typeof speed === \"object\" ? jQuery.extend( {}, speed ) : {\n\t\tcomplete: fn || !fn && easing ||\n\t\t\tisFunction( speed ) && speed,\n\t\tduration: speed,\n\t\teasing: fn && easing || easing && !isFunction( easing ) && easing\n\t};\n\n\t// Go to the end state if fx are off\n\tif ( jQuery.fx.off ) {\n\t\topt.duration = 0;\n\n\t} else {\n\t\tif ( typeof opt.duration !== \"number\" ) {\n\t\t\tif ( opt.duration in jQuery.fx.speeds ) {\n\t\t\t\topt.duration = jQuery.fx.speeds[ opt.duration ];\n\n\t\t\t} else {\n\t\t\t\topt.duration = jQuery.fx.speeds._default;\n\t\t\t}\n\t\t}\n\t}\n\n\t// Normalize opt.queue - true/undefined/null -> \"fx\"\n\tif ( opt.queue == null || opt.queue === true ) {\n\t\topt.queue = \"fx\";\n\t}\n\n\t// Queueing\n\topt.old = opt.complete;\n\n\topt.complete = function() {\n\t\tif ( isFunction( opt.old ) ) {\n\t\t\topt.old.call( this );\n\t\t}\n\n\t\tif ( opt.queue ) {\n\t\t\tjQuery.dequeue( this, opt.queue );\n\t\t}\n\t};\n\n\treturn opt;\n};\n\njQuery.fn.extend( {\n\tfadeTo: function( speed, to, easing, callback ) {\n\n\t\t// Show any hidden elements after setting opacity to 0\n\t\treturn this.filter( isHiddenWithinTree ).css( \"opacity\", 0 ).show()\n\n\t\t\t// Animate to the value specified\n\t\t\t.end().animate( { opacity: to }, speed, easing, callback );\n\t},\n\tanimate: function( prop, speed, easing, callback ) {\n\t\tvar empty = jQuery.isEmptyObject( prop ),\n\t\t\toptall = jQuery.speed( speed, easing, callback ),\n\t\t\tdoAnimation = function() {\n\n\t\t\t\t// Operate on a copy of prop so per-property easing won't be lost\n\t\t\t\tvar anim = Animation( this, jQuery.extend( {}, prop ), optall );\n\n\t\t\t\t// Empty animations, or finishing resolves immediately\n\t\t\t\tif ( empty || dataPriv.get( this, \"finish\" ) ) {\n\t\t\t\t\tanim.stop( true );\n\t\t\t\t}\n\t\t\t};\n\n\t\tdoAnimation.finish = doAnimation;\n\n\t\treturn empty || optall.queue === false ?\n\t\t\tthis.each( doAnimation ) :\n\t\t\tthis.queue( optall.queue, doAnimation );\n\t},\n\tstop: function( type, clearQueue, gotoEnd ) {\n\t\tvar stopQueue = function( hooks ) {\n\t\t\tvar stop = hooks.stop;\n\t\t\tdelete hooks.stop;\n\t\t\tstop( gotoEnd );\n\t\t};\n\n\t\tif ( typeof type !== \"string\" ) {\n\t\t\tgotoEnd = clearQueue;\n\t\t\tclearQueue = type;\n\t\t\ttype = undefined;\n\t\t}\n\t\tif ( clearQueue ) {\n\t\t\tthis.queue( type || \"fx\", [] );\n\t\t}\n\n\t\treturn this.each( function() {\n\t\t\tvar dequeue = true,\n\t\t\t\tindex = type != null && type + \"queueHooks\",\n\t\t\t\ttimers = jQuery.timers,\n\t\t\t\tdata = dataPriv.get( this );\n\n\t\t\tif ( index ) {\n\t\t\t\tif ( data[ index ] && data[ index ].stop ) {\n\t\t\t\t\tstopQueue( data[ index ] );\n\t\t\t\t}\n\t\t\t} else {\n\t\t\t\tfor ( index in data ) {\n\t\t\t\t\tif ( data[ index ] && data[ index ].stop && rrun.test( index ) ) {\n\t\t\t\t\t\tstopQueue( data[ index ] );\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t}\n\n\t\t\tfor ( index = timers.length; index--; ) {\n\t\t\t\tif ( timers[ index ].elem === this &&\n\t\t\t\t\t( type == null || timers[ index ].queue === type ) ) {\n\n\t\t\t\t\ttimers[ index ].anim.stop( gotoEnd );\n\t\t\t\t\tdequeue = false;\n\t\t\t\t\ttimers.splice( index, 1 );\n\t\t\t\t}\n\t\t\t}\n\n\t\t\t// Start the next in the queue if the last step wasn't forced.\n\t\t\t// Timers currently will call their complete callbacks, which\n\t\t\t// will dequeue but only if they were gotoEnd.\n\t\t\tif ( dequeue || !gotoEnd ) {\n\t\t\t\tjQuery.dequeue( this, type );\n\t\t\t}\n\t\t} );\n\t},\n\tfinish: function( type ) {\n\t\tif ( type !== false ) {\n\t\t\ttype = type || \"fx\";\n\t\t}\n\t\treturn this.each( function() {\n\t\t\tvar index,\n\t\t\t\tdata = dataPriv.get( this ),\n\t\t\t\tqueue = data[ type + \"queue\" ],\n\t\t\t\thooks = data[ type + \"queueHooks\" ],\n\t\t\t\ttimers = jQuery.timers,\n\t\t\t\tlength = queue ? queue.length : 0;\n\n\t\t\t// Enable finishing flag on private data\n\t\t\tdata.finish = true;\n\n\t\t\t// Empty the queue first\n\t\t\tjQuery.queue( this, type, [] );\n\n\t\t\tif ( hooks && hooks.stop ) {\n\t\t\t\thooks.stop.call( this, true );\n\t\t\t}\n\n\t\t\t// Look for any active animations, and finish them\n\t\t\tfor ( index = timers.length; index--; ) {\n\t\t\t\tif ( timers[ index ].elem === this && timers[ index ].queue === type ) {\n\t\t\t\t\ttimers[ index ].anim.stop( true );\n\t\t\t\t\ttimers.splice( index, 1 );\n\t\t\t\t}\n\t\t\t}\n\n\t\t\t// Look for any animations in the old queue and finish them\n\t\t\tfor ( index = 0; index < length; index++ ) {\n\t\t\t\tif ( queue[ index ] && queue[ index ].finish ) {\n\t\t\t\t\tqueue[ index ].finish.call( this );\n\t\t\t\t}\n\t\t\t}\n\n\t\t\t// Turn off finishing flag\n\t\t\tdelete data.finish;\n\t\t} );\n\t}\n} );\n\njQuery.each( [ \"toggle\", \"show\", \"hide\" ], function( _i, name ) {\n\tvar cssFn = jQuery.fn[ name ];\n\tjQuery.fn[ name ] = function( speed, easing, callback ) {\n\t\treturn speed == null || typeof speed === \"boolean\" ?\n\t\t\tcssFn.apply( this, arguments ) :\n\t\t\tthis.animate( genFx( name, true ), speed, easing, callback );\n\t};\n} );\n\n// Generate shortcuts for custom animations\njQuery.each( {\n\tslideDown: genFx( \"show\" ),\n\tslideUp: genFx( \"hide\" ),\n\tslideToggle: genFx( \"toggle\" ),\n\tfadeIn: { opacity: \"show\" },\n\tfadeOut: { opacity: \"hide\" },\n\tfadeToggle: { opacity: \"toggle\" }\n}, function( name, props ) {\n\tjQuery.fn[ name ] = function( speed, easing, callback ) {\n\t\treturn this.animate( props, speed, easing, callback );\n\t};\n} );\n\njQuery.timers = [];\njQuery.fx.tick = function() {\n\tvar timer,\n\t\ti = 0,\n\t\ttimers = jQuery.timers;\n\n\tfxNow = Date.now();\n\n\tfor ( ; i < timers.length; i++ ) {\n\t\ttimer = timers[ i ];\n\n\t\t// Run the timer and safely remove it when done (allowing for external removal)\n\t\tif ( !timer() && timers[ i ] === timer ) {\n\t\t\ttimers.splice( i--, 1 );\n\t\t}\n\t}\n\n\tif ( !timers.length ) {\n\t\tjQuery.fx.stop();\n\t}\n\tfxNow = undefined;\n};\n\njQuery.fx.timer = function( timer ) {\n\tjQuery.timers.push( timer );\n\tjQuery.fx.start();\n};\n\njQuery.fx.interval = 13;\njQuery.fx.start = function() {\n\tif ( inProgress ) {\n\t\treturn;\n\t}\n\n\tinProgress = true;\n\tschedule();\n};\n\njQuery.fx.stop = function() {\n\tinProgress = null;\n};\n\njQuery.fx.speeds = {\n\tslow: 600,\n\tfast: 200,\n\n\t// Default speed\n\t_default: 400\n};\n\n\n// Based off of the plugin by Clint Helfers, with permission.\njQuery.fn.delay = function( time, type ) {\n\ttime = jQuery.fx ? jQuery.fx.speeds[ time ] || time : time;\n\ttype = type || \"fx\";\n\n\treturn this.queue( type, function( next, hooks ) {\n\t\tvar timeout = window.setTimeout( next, time );\n\t\thooks.stop = function() {\n\t\t\twindow.clearTimeout( timeout );\n\t\t};\n\t} );\n};\n\n\n( function() {\n\tvar input = document.createElement( \"input\" ),\n\t\tselect = document.createElement( \"select\" ),\n\t\topt = select.appendChild( document.createElement( \"option\" ) );\n\n\tinput.type = \"checkbox\";\n\n\t// Support: Android <=4.3 only\n\t// Default value for a checkbox should be \"on\"\n\tsupport.checkOn = input.value !== \"\";\n\n\t// Support: IE <=11 only\n\t// Must access selectedIndex to make default options select\n\tsupport.optSelected = opt.selected;\n\n\t// Support: IE <=11 only\n\t// An input loses its value after becoming a radio\n\tinput = document.createElement( \"input\" );\n\tinput.value = \"t\";\n\tinput.type = \"radio\";\n\tsupport.radioValue = input.value === \"t\";\n} )();\n\n\nvar boolHook,\n\tattrHandle = jQuery.expr.attrHandle;\n\njQuery.fn.extend( {\n\tattr: function( name, value ) {\n\t\treturn access( this, jQuery.attr, name, value, arguments.length > 1 );\n\t},\n\n\tremoveAttr: function( name ) {\n\t\treturn this.each( function() {\n\t\t\tjQuery.removeAttr( this, name );\n\t\t} );\n\t}\n} );\n\njQuery.extend( {\n\tattr: function( elem, name, value ) {\n\t\tvar ret, hooks,\n\t\t\tnType = elem.nodeType;\n\n\t\t// Don't get/set attributes on text, comment and attribute nodes\n\t\tif ( nType === 3 || nType === 8 || nType === 2 ) {\n\t\t\treturn;\n\t\t}\n\n\t\t// Fallback to prop when attributes are not supported\n\t\tif ( typeof elem.getAttribute === \"undefined\" ) {\n\t\t\treturn jQuery.prop( elem, name, value );\n\t\t}\n\n\t\t// Attribute hooks are determined by the lowercase version\n\t\t// Grab necessary hook if one is defined\n\t\tif ( nType !== 1 || !jQuery.isXMLDoc( elem ) ) {\n\t\t\thooks = jQuery.attrHooks[ name.toLowerCase() ] ||\n\t\t\t\t( jQuery.expr.match.bool.test( name ) ? boolHook : undefined );\n\t\t}\n\n\t\tif ( value !== undefined ) {\n\t\t\tif ( value === null ) {\n\t\t\t\tjQuery.removeAttr( elem, name );\n\t\t\t\treturn;\n\t\t\t}\n\n\t\t\tif ( hooks && \"set\" in hooks &&\n\t\t\t\t( ret = hooks.set( elem, value, name ) ) !== undefined ) {\n\t\t\t\treturn ret;\n\t\t\t}\n\n\t\t\telem.setAttribute( name, value + \"\" );\n\t\t\treturn value;\n\t\t}\n\n\t\tif ( hooks && \"get\" in hooks && ( ret = hooks.get( elem, name ) ) !== null ) {\n\t\t\treturn ret;\n\t\t}\n\n\t\tret = jQuery.find.attr( elem, name );\n\n\t\t// Non-existent attributes return null, we normalize to undefined\n\t\treturn ret == null ? undefined : ret;\n\t},\n\n\tattrHooks: {\n\t\ttype: {\n\t\t\tset: function( elem, value ) {\n\t\t\t\tif ( !support.radioValue && value === \"radio\" &&\n\t\t\t\t\tnodeName( elem, \"input\" ) ) {\n\t\t\t\t\tvar val = elem.value;\n\t\t\t\t\telem.setAttribute( \"type\", value );\n\t\t\t\t\tif ( val ) {\n\t\t\t\t\t\telem.value = val;\n\t\t\t\t\t}\n\t\t\t\t\treturn value;\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\t},\n\n\tremoveAttr: function( elem, value ) {\n\t\tvar name,\n\t\t\ti = 0,\n\n\t\t\t// Attribute names can contain non-HTML whitespace characters\n\t\t\t// https://html.spec.whatwg.org/multipage/syntax.html#attributes-2\n\t\t\tattrNames = value && value.match( rnothtmlwhite );\n\n\t\tif ( attrNames && elem.nodeType === 1 ) {\n\t\t\twhile ( ( name = attrNames[ i++ ] ) ) {\n\t\t\t\telem.removeAttribute( name );\n\t\t\t}\n\t\t}\n\t}\n} );\n\n// Hooks for boolean attributes\nboolHook = {\n\tset: function( elem, value, name ) {\n\t\tif ( value === false ) {\n\n\t\t\t// Remove boolean attributes when set to false\n\t\t\tjQuery.removeAttr( elem, name );\n\t\t} else {\n\t\t\telem.setAttribute( name, name );\n\t\t}\n\t\treturn name;\n\t}\n};\n\njQuery.each( jQuery.expr.match.bool.source.match( /\\w+/g ), function( _i, name ) {\n\tvar getter = attrHandle[ name ] || jQuery.find.attr;\n\n\tattrHandle[ name ] = function( elem, name, isXML ) {\n\t\tvar ret, handle,\n\t\t\tlowercaseName = name.toLowerCase();\n\n\t\tif ( !isXML ) {\n\n\t\t\t// Avoid an infinite loop by temporarily removing this function from the getter\n\t\t\thandle = attrHandle[ lowercaseName ];\n\t\t\tattrHandle[ lowercaseName ] = ret;\n\t\t\tret = getter( elem, name, isXML ) != null ?\n\t\t\t\tlowercaseName :\n\t\t\t\tnull;\n\t\t\tattrHandle[ lowercaseName ] = handle;\n\t\t}\n\t\treturn ret;\n\t};\n} );\n\n\n\n\nvar rfocusable = /^(?:input|select|textarea|button)$/i,\n\trclickable = /^(?:a|area)$/i;\n\njQuery.fn.extend( {\n\tprop: function( name, value ) {\n\t\treturn access( this, jQuery.prop, name, value, arguments.length > 1 );\n\t},\n\n\tremoveProp: function( name ) {\n\t\treturn this.each( function() {\n\t\t\tdelete this[ jQuery.propFix[ name ] || name ];\n\t\t} );\n\t}\n} );\n\njQuery.extend( {\n\tprop: function( elem, name, value ) {\n\t\tvar ret, hooks,\n\t\t\tnType = elem.nodeType;\n\n\t\t// Don't get/set properties on text, comment and attribute nodes\n\t\tif ( nType === 3 || nType === 8 || nType === 2 ) {\n\t\t\treturn;\n\t\t}\n\n\t\tif ( nType !== 1 || !jQuery.isXMLDoc( elem ) ) {\n\n\t\t\t// Fix name and attach hooks\n\t\t\tname = jQuery.propFix[ name ] || name;\n\t\t\thooks = jQuery.propHooks[ name ];\n\t\t}\n\n\t\tif ( value !== undefined ) {\n\t\t\tif ( hooks && \"set\" in hooks &&\n\t\t\t\t( ret = hooks.set( elem, value, name ) ) !== undefined ) {\n\t\t\t\treturn ret;\n\t\t\t}\n\n\t\t\treturn ( elem[ name ] = value );\n\t\t}\n\n\t\tif ( hooks && \"get\" in hooks && ( ret = hooks.get( elem, name ) ) !== null ) {\n\t\t\treturn ret;\n\t\t}\n\n\t\treturn elem[ name ];\n\t},\n\n\tpropHooks: {\n\t\ttabIndex: {\n\t\t\tget: function( elem ) {\n\n\t\t\t\t// Support: IE <=9 - 11 only\n\t\t\t\t// elem.tabIndex doesn't always return the\n\t\t\t\t// correct value when it hasn't been explicitly set\n\t\t\t\t// Use proper attribute retrieval (trac-12072)\n\t\t\t\tvar tabindex = jQuery.find.attr( elem, \"tabindex\" );\n\n\t\t\t\tif ( tabindex ) {\n\t\t\t\t\treturn parseInt( tabindex, 10 );\n\t\t\t\t}\n\n\t\t\t\tif (\n\t\t\t\t\trfocusable.test( elem.nodeName ) ||\n\t\t\t\t\trclickable.test( elem.nodeName ) &&\n\t\t\t\t\telem.href\n\t\t\t\t) {\n\t\t\t\t\treturn 0;\n\t\t\t\t}\n\n\t\t\t\treturn -1;\n\t\t\t}\n\t\t}\n\t},\n\n\tpropFix: {\n\t\t\"for\": \"htmlFor\",\n\t\t\"class\": \"className\"\n\t}\n} );\n\n// Support: IE <=11 only\n// Accessing the selectedIndex property\n// forces the browser to respect setting selected\n// on the option\n// The getter ensures a default option is selected\n// when in an optgroup\n// eslint rule \"no-unused-expressions\" is disabled for this code\n// since it considers such accessions noop\nif ( !support.optSelected ) {\n\tjQuery.propHooks.selected = {\n\t\tget: function( elem ) {\n\n\t\t\t/* eslint no-unused-expressions: \"off\" */\n\n\t\t\tvar parent = elem.parentNode;\n\t\t\tif ( parent && parent.parentNode ) {\n\t\t\t\tparent.parentNode.selectedIndex;\n\t\t\t}\n\t\t\treturn null;\n\t\t},\n\t\tset: function( elem ) {\n\n\t\t\t/* eslint no-unused-expressions: \"off\" */\n\n\t\t\tvar parent = elem.parentNode;\n\t\t\tif ( parent ) {\n\t\t\t\tparent.selectedIndex;\n\n\t\t\t\tif ( parent.parentNode ) {\n\t\t\t\t\tparent.parentNode.selectedIndex;\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\t};\n}\n\njQuery.each( [\n\t\"tabIndex\",\n\t\"readOnly\",\n\t\"maxLength\",\n\t\"cellSpacing\",\n\t\"cellPadding\",\n\t\"rowSpan\",\n\t\"colSpan\",\n\t\"useMap\",\n\t\"frameBorder\",\n\t\"contentEditable\"\n], function() {\n\tjQuery.propFix[ this.toLowerCase() ] = this;\n} );\n\n\n\n\n\t// Strip and collapse whitespace according to HTML spec\n\t// https://infra.spec.whatwg.org/#strip-and-collapse-ascii-whitespace\n\tfunction stripAndCollapse( value ) {\n\t\tvar tokens = value.match( rnothtmlwhite ) || [];\n\t\treturn tokens.join( \" \" );\n\t}\n\n\nfunction getClass( elem ) {\n\treturn elem.getAttribute && elem.getAttribute( \"class\" ) || \"\";\n}\n\nfunction classesToArray( value ) {\n\tif ( Array.isArray( value ) ) {\n\t\treturn value;\n\t}\n\tif ( typeof value === \"string\" ) {\n\t\treturn value.match( rnothtmlwhite ) || [];\n\t}\n\treturn [];\n}\n\njQuery.fn.extend( {\n\taddClass: function( value ) {\n\t\tvar classNames, cur, curValue, className, i, finalValue;\n\n\t\tif ( isFunction( value ) ) {\n\t\t\treturn this.each( function( j ) {\n\t\t\t\tjQuery( this ).addClass( value.call( this, j, getClass( this ) ) );\n\t\t\t} );\n\t\t}\n\n\t\tclassNames = classesToArray( value );\n\n\t\tif ( classNames.length ) {\n\t\t\treturn this.each( function() {\n\t\t\t\tcurValue = getClass( this );\n\t\t\t\tcur = this.nodeType === 1 && ( \" \" + stripAndCollapse( curValue ) + \" \" );\n\n\t\t\t\tif ( cur ) {\n\t\t\t\t\tfor ( i = 0; i < classNames.length; i++ ) {\n\t\t\t\t\t\tclassName = classNames[ i ];\n\t\t\t\t\t\tif ( cur.indexOf( \" \" + className + \" \" ) < 0 ) {\n\t\t\t\t\t\t\tcur += className + \" \";\n\t\t\t\t\t\t}\n\t\t\t\t\t}\n\n\t\t\t\t\t// Only assign if different to avoid unneeded rendering.\n\t\t\t\t\tfinalValue = stripAndCollapse( cur );\n\t\t\t\t\tif ( curValue !== finalValue ) {\n\t\t\t\t\t\tthis.setAttribute( \"class\", finalValue );\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t} );\n\t\t}\n\n\t\treturn this;\n\t},\n\n\tremoveClass: function( value ) {\n\t\tvar classNames, cur, curValue, className, i, finalValue;\n\n\t\tif ( isFunction( value ) ) {\n\t\t\treturn this.each( function( j ) {\n\t\t\t\tjQuery( this ).removeClass( value.call( this, j, getClass( this ) ) );\n\t\t\t} );\n\t\t}\n\n\t\tif ( !arguments.length ) {\n\t\t\treturn this.attr( \"class\", \"\" );\n\t\t}\n\n\t\tclassNames = classesToArray( value );\n\n\t\tif ( classNames.length ) {\n\t\t\treturn this.each( function() {\n\t\t\t\tcurValue = getClass( this );\n\n\t\t\t\t// This expression is here for better compressibility (see addClass)\n\t\t\t\tcur = this.nodeType === 1 && ( \" \" + stripAndCollapse( curValue ) + \" \" );\n\n\t\t\t\tif ( cur ) {\n\t\t\t\t\tfor ( i = 0; i < classNames.length; i++ ) {\n\t\t\t\t\t\tclassName = classNames[ i ];\n\n\t\t\t\t\t\t// Remove *all* instances\n\t\t\t\t\t\twhile ( cur.indexOf( \" \" + className + \" \" ) > -1 ) {\n\t\t\t\t\t\t\tcur = cur.replace( \" \" + className + \" \", \" \" );\n\t\t\t\t\t\t}\n\t\t\t\t\t}\n\n\t\t\t\t\t// Only assign if different to avoid unneeded rendering.\n\t\t\t\t\tfinalValue = stripAndCollapse( cur );\n\t\t\t\t\tif ( curValue !== finalValue ) {\n\t\t\t\t\t\tthis.setAttribute( \"class\", finalValue );\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t} );\n\t\t}\n\n\t\treturn this;\n\t},\n\n\ttoggleClass: function( value, stateVal ) {\n\t\tvar classNames, className, i, self,\n\t\t\ttype = typeof value,\n\t\t\tisValidValue = type === \"string\" || Array.isArray( value );\n\n\t\tif ( isFunction( value ) ) {\n\t\t\treturn this.each( function( i ) {\n\t\t\t\tjQuery( this ).toggleClass(\n\t\t\t\t\tvalue.call( this, i, getClass( this ), stateVal ),\n\t\t\t\t\tstateVal\n\t\t\t\t);\n\t\t\t} );\n\t\t}\n\n\t\tif ( typeof stateVal === \"boolean\" && isValidValue ) {\n\t\t\treturn stateVal ? this.addClass( value ) : this.removeClass( value );\n\t\t}\n\n\t\tclassNames = classesToArray( value );\n\n\t\treturn this.each( function() {\n\t\t\tif ( isValidValue ) {\n\n\t\t\t\t// Toggle individual class names\n\t\t\t\tself = jQuery( this );\n\n\t\t\t\tfor ( i = 0; i < classNames.length; i++ ) {\n\t\t\t\t\tclassName = classNames[ i ];\n\n\t\t\t\t\t// Check each className given, space separated list\n\t\t\t\t\tif ( self.hasClass( className ) ) {\n\t\t\t\t\t\tself.removeClass( className );\n\t\t\t\t\t} else {\n\t\t\t\t\t\tself.addClass( className );\n\t\t\t\t\t}\n\t\t\t\t}\n\n\t\t\t// Toggle whole class name\n\t\t\t} else if ( value === undefined || type === \"boolean\" ) {\n\t\t\t\tclassName = getClass( this );\n\t\t\t\tif ( className ) {\n\n\t\t\t\t\t// Store className if set\n\t\t\t\t\tdataPriv.set( this, \"__className__\", className );\n\t\t\t\t}\n\n\t\t\t\t// If the element has a class name or if we're passed `false`,\n\t\t\t\t// then remove the whole classname (if there was one, the above saved it).\n\t\t\t\t// Otherwise bring back whatever was previously saved (if anything),\n\t\t\t\t// falling back to the empty string if nothing was stored.\n\t\t\t\tif ( this.setAttribute ) {\n\t\t\t\t\tthis.setAttribute( \"class\",\n\t\t\t\t\t\tclassName || value === false ?\n\t\t\t\t\t\t\t\"\" :\n\t\t\t\t\t\t\tdataPriv.get( this, \"__className__\" ) || \"\"\n\t\t\t\t\t);\n\t\t\t\t}\n\t\t\t}\n\t\t} );\n\t},\n\n\thasClass: function( selector ) {\n\t\tvar className, elem,\n\t\t\ti = 0;\n\n\t\tclassName = \" \" + selector + \" \";\n\t\twhile ( ( elem = this[ i++ ] ) ) {\n\t\t\tif ( elem.nodeType === 1 &&\n\t\t\t\t( \" \" + stripAndCollapse( getClass( elem ) ) + \" \" ).indexOf( className ) > -1 ) {\n\t\t\t\treturn true;\n\t\t\t}\n\t\t}\n\n\t\treturn false;\n\t}\n} );\n\n\n\n\nvar rreturn = /\\r/g;\n\njQuery.fn.extend( {\n\tval: function( value ) {\n\t\tvar hooks, ret, valueIsFunction,\n\t\t\telem = this[ 0 ];\n\n\t\tif ( !arguments.length ) {\n\t\t\tif ( elem ) {\n\t\t\t\thooks = jQuery.valHooks[ elem.type ] ||\n\t\t\t\t\tjQuery.valHooks[ elem.nodeName.toLowerCase() ];\n\n\t\t\t\tif ( hooks &&\n\t\t\t\t\t\"get\" in hooks &&\n\t\t\t\t\t( ret = hooks.get( elem, \"value\" ) ) !== undefined\n\t\t\t\t) {\n\t\t\t\t\treturn ret;\n\t\t\t\t}\n\n\t\t\t\tret = elem.value;\n\n\t\t\t\t// Handle most common string cases\n\t\t\t\tif ( typeof ret === \"string\" ) {\n\t\t\t\t\treturn ret.replace( rreturn, \"\" );\n\t\t\t\t}\n\n\t\t\t\t// Handle cases where value is null/undef or number\n\t\t\t\treturn ret == null ? \"\" : ret;\n\t\t\t}\n\n\t\t\treturn;\n\t\t}\n\n\t\tvalueIsFunction = isFunction( value );\n\n\t\treturn this.each( function( i ) {\n\t\t\tvar val;\n\n\t\t\tif ( this.nodeType !== 1 ) {\n\t\t\t\treturn;\n\t\t\t}\n\n\t\t\tif ( valueIsFunction ) {\n\t\t\t\tval = value.call( this, i, jQuery( this ).val() );\n\t\t\t} else {\n\t\t\t\tval = value;\n\t\t\t}\n\n\t\t\t// Treat null/undefined as \"\"; convert numbers to string\n\t\t\tif ( val == null ) {\n\t\t\t\tval = \"\";\n\n\t\t\t} else if ( typeof val === \"number\" ) {\n\t\t\t\tval += \"\";\n\n\t\t\t} else if ( Array.isArray( val ) ) {\n\t\t\t\tval = jQuery.map( val, function( value ) {\n\t\t\t\t\treturn value == null ? \"\" : value + \"\";\n\t\t\t\t} );\n\t\t\t}\n\n\t\t\thooks = jQuery.valHooks[ this.type ] || jQuery.valHooks[ this.nodeName.toLowerCase() ];\n\n\t\t\t// If set returns undefined, fall back to normal setting\n\t\t\tif ( !hooks || !( \"set\" in hooks ) || hooks.set( this, val, \"value\" ) === undefined ) {\n\t\t\t\tthis.value = val;\n\t\t\t}\n\t\t} );\n\t}\n} );\n\njQuery.extend( {\n\tvalHooks: {\n\t\toption: {\n\t\t\tget: function( elem ) {\n\n\t\t\t\tvar val = jQuery.find.attr( elem, \"value\" );\n\t\t\t\treturn val != null ?\n\t\t\t\t\tval :\n\n\t\t\t\t\t// Support: IE <=10 - 11 only\n\t\t\t\t\t// option.text throws exceptions (trac-14686, trac-14858)\n\t\t\t\t\t// Strip and collapse whitespace\n\t\t\t\t\t// https://html.spec.whatwg.org/#strip-and-collapse-whitespace\n\t\t\t\t\tstripAndCollapse( jQuery.text( elem ) );\n\t\t\t}\n\t\t},\n\t\tselect: {\n\t\t\tget: function( elem ) {\n\t\t\t\tvar value, option, i,\n\t\t\t\t\toptions = elem.options,\n\t\t\t\t\tindex = elem.selectedIndex,\n\t\t\t\t\tone = elem.type === \"select-one\",\n\t\t\t\t\tvalues = one ? null : [],\n\t\t\t\t\tmax = one ? index + 1 : options.length;\n\n\t\t\t\tif ( index < 0 ) {\n\t\t\t\t\ti = max;\n\n\t\t\t\t} else {\n\t\t\t\t\ti = one ? index : 0;\n\t\t\t\t}\n\n\t\t\t\t// Loop through all the selected options\n\t\t\t\tfor ( ; i < max; i++ ) {\n\t\t\t\t\toption = options[ i ];\n\n\t\t\t\t\t// Support: IE <=9 only\n\t\t\t\t\t// IE8-9 doesn't update selected after form reset (trac-2551)\n\t\t\t\t\tif ( ( option.selected || i === index ) &&\n\n\t\t\t\t\t\t\t// Don't return options that are disabled or in a disabled optgroup\n\t\t\t\t\t\t\t!option.disabled &&\n\t\t\t\t\t\t\t( !option.parentNode.disabled ||\n\t\t\t\t\t\t\t\t!nodeName( option.parentNode, \"optgroup\" ) ) ) {\n\n\t\t\t\t\t\t// Get the specific value for the option\n\t\t\t\t\t\tvalue = jQuery( option ).val();\n\n\t\t\t\t\t\t// We don't need an array for one selects\n\t\t\t\t\t\tif ( one ) {\n\t\t\t\t\t\t\treturn value;\n\t\t\t\t\t\t}\n\n\t\t\t\t\t\t// Multi-Selects return an array\n\t\t\t\t\t\tvalues.push( value );\n\t\t\t\t\t}\n\t\t\t\t}\n\n\t\t\t\treturn values;\n\t\t\t},\n\n\t\t\tset: function( elem, value ) {\n\t\t\t\tvar optionSet, option,\n\t\t\t\t\toptions = elem.options,\n\t\t\t\t\tvalues = jQuery.makeArray( value ),\n\t\t\t\t\ti = options.length;\n\n\t\t\t\twhile ( i-- ) {\n\t\t\t\t\toption = options[ i ];\n\n\t\t\t\t\t/* eslint-disable no-cond-assign */\n\n\t\t\t\t\tif ( option.selected =\n\t\t\t\t\t\tjQuery.inArray( jQuery.valHooks.option.get( option ), values ) > -1\n\t\t\t\t\t) {\n\t\t\t\t\t\toptionSet = true;\n\t\t\t\t\t}\n\n\t\t\t\t\t/* eslint-enable no-cond-assign */\n\t\t\t\t}\n\n\t\t\t\t// Force browsers to behave consistently when non-matching value is set\n\t\t\t\tif ( !optionSet ) {\n\t\t\t\t\telem.selectedIndex = -1;\n\t\t\t\t}\n\t\t\t\treturn values;\n\t\t\t}\n\t\t}\n\t}\n} );\n\n// Radios and checkboxes getter/setter\njQuery.each( [ \"radio\", \"checkbox\" ], function() {\n\tjQuery.valHooks[ this ] = {\n\t\tset: function( elem, value ) {\n\t\t\tif ( Array.isArray( value ) ) {\n\t\t\t\treturn ( elem.checked = jQuery.inArray( jQuery( elem ).val(), value ) > -1 );\n\t\t\t}\n\t\t}\n\t};\n\tif ( !support.checkOn ) {\n\t\tjQuery.valHooks[ this ].get = function( elem ) {\n\t\t\treturn elem.getAttribute( \"value\" ) === null ? \"on\" : elem.value;\n\t\t};\n\t}\n} );\n\n\n\n\n// Return jQuery for attributes-only inclusion\nvar location = window.location;\n\nvar nonce = { guid: Date.now() };\n\nvar rquery = ( /\\?/ );\n\n\n\n// Cross-browser xml parsing\njQuery.parseXML = function( data ) {\n\tvar xml, parserErrorElem;\n\tif ( !data || typeof data !== \"string\" ) {\n\t\treturn null;\n\t}\n\n\t// Support: IE 9 - 11 only\n\t// IE throws on parseFromString with invalid input.\n\ttry {\n\t\txml = ( new window.DOMParser() ).parseFromString( data, \"text/xml\" );\n\t} catch ( e ) {}\n\n\tparserErrorElem = xml && xml.getElementsByTagName( \"parsererror\" )[ 0 ];\n\tif ( !xml || parserErrorElem ) {\n\t\tjQuery.error( \"Invalid XML: \" + (\n\t\t\tparserErrorElem ?\n\t\t\t\tjQuery.map( parserErrorElem.childNodes, function( el ) {\n\t\t\t\t\treturn el.textContent;\n\t\t\t\t} ).join( \"\\n\" ) :\n\t\t\t\tdata\n\t\t) );\n\t}\n\treturn xml;\n};\n\n\nvar rfocusMorph = /^(?:focusinfocus|focusoutblur)$/,\n\tstopPropagationCallback = function( e ) {\n\t\te.stopPropagation();\n\t};\n\njQuery.extend( jQuery.event, {\n\n\ttrigger: function( event, data, elem, onlyHandlers ) {\n\n\t\tvar i, cur, tmp, bubbleType, ontype, handle, special, lastElement,\n\t\t\teventPath = [ elem || document ],\n\t\t\ttype = hasOwn.call( event, \"type\" ) ? event.type : event,\n\t\t\tnamespaces = hasOwn.call( event, \"namespace\" ) ? event.namespace.split( \".\" ) : [];\n\n\t\tcur = lastElement = tmp = elem = elem || document;\n\n\t\t// Don't do events on text and comment nodes\n\t\tif ( elem.nodeType === 3 || elem.nodeType === 8 ) {\n\t\t\treturn;\n\t\t}\n\n\t\t// focus/blur morphs to focusin/out; ensure we're not firing them right now\n\t\tif ( rfocusMorph.test( type + jQuery.event.triggered ) ) {\n\t\t\treturn;\n\t\t}\n\n\t\tif ( type.indexOf( \".\" ) > -1 ) {\n\n\t\t\t// Namespaced trigger; create a regexp to match event type in handle()\n\t\t\tnamespaces = type.split( \".\" );\n\t\t\ttype = namespaces.shift();\n\t\t\tnamespaces.sort();\n\t\t}\n\t\tontype = type.indexOf( \":\" ) < 0 && \"on\" + type;\n\n\t\t// Caller can pass in a jQuery.Event object, Object, or just an event type string\n\t\tevent = event[ jQuery.expando ] ?\n\t\t\tevent :\n\t\t\tnew jQuery.Event( type, typeof event === \"object\" && event );\n\n\t\t// Trigger bitmask: & 1 for native handlers; & 2 for jQuery (always true)\n\t\tevent.isTrigger = onlyHandlers ? 2 : 3;\n\t\tevent.namespace = namespaces.join( \".\" );\n\t\tevent.rnamespace = event.namespace ?\n\t\t\tnew RegExp( \"(^|\\\\.)\" + namespaces.join( \"\\\\.(?:.*\\\\.|)\" ) + \"(\\\\.|$)\" ) :\n\t\t\tnull;\n\n\t\t// Clean up the event in case it is being reused\n\t\tevent.result = undefined;\n\t\tif ( !event.target ) {\n\t\t\tevent.target = elem;\n\t\t}\n\n\t\t// Clone any incoming data and prepend the event, creating the handler arg list\n\t\tdata = data == null ?\n\t\t\t[ event ] :\n\t\t\tjQuery.makeArray( data, [ event ] );\n\n\t\t// Allow special events to draw outside the lines\n\t\tspecial = jQuery.event.special[ type ] || {};\n\t\tif ( !onlyHandlers && special.trigger && special.trigger.apply( elem, data ) === false ) {\n\t\t\treturn;\n\t\t}\n\n\t\t// Determine event propagation path in advance, per W3C events spec (trac-9951)\n\t\t// Bubble up to document, then to window; watch for a global ownerDocument var (trac-9724)\n\t\tif ( !onlyHandlers && !special.noBubble && !isWindow( elem ) ) {\n\n\t\t\tbubbleType = special.delegateType || type;\n\t\t\tif ( !rfocusMorph.test( bubbleType + type ) ) {\n\t\t\t\tcur = cur.parentNode;\n\t\t\t}\n\t\t\tfor ( ; cur; cur = cur.parentNode ) {\n\t\t\t\teventPath.push( cur );\n\t\t\t\ttmp = cur;\n\t\t\t}\n\n\t\t\t// Only add window if we got to document (e.g., not plain obj or detached DOM)\n\t\t\tif ( tmp === ( elem.ownerDocument || document ) ) {\n\t\t\t\teventPath.push( tmp.defaultView || tmp.parentWindow || window );\n\t\t\t}\n\t\t}\n\n\t\t// Fire handlers on the event path\n\t\ti = 0;\n\t\twhile ( ( cur = eventPath[ i++ ] ) && !event.isPropagationStopped() ) {\n\t\t\tlastElement = cur;\n\t\t\tevent.type = i > 1 ?\n\t\t\t\tbubbleType :\n\t\t\t\tspecial.bindType || type;\n\n\t\t\t// jQuery handler\n\t\t\thandle = ( dataPriv.get( cur, \"events\" ) || Object.create( null ) )[ event.type ] &&\n\t\t\t\tdataPriv.get( cur, \"handle\" );\n\t\t\tif ( handle ) {\n\t\t\t\thandle.apply( cur, data );\n\t\t\t}\n\n\t\t\t// Native handler\n\t\t\thandle = ontype && cur[ ontype ];\n\t\t\tif ( handle && handle.apply && acceptData( cur ) ) {\n\t\t\t\tevent.result = handle.apply( cur, data );\n\t\t\t\tif ( event.result === false ) {\n\t\t\t\t\tevent.preventDefault();\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\t\tevent.type = type;\n\n\t\t// If nobody prevented the default action, do it now\n\t\tif ( !onlyHandlers && !event.isDefaultPrevented() ) {\n\n\t\t\tif ( ( !special._default ||\n\t\t\t\tspecial._default.apply( eventPath.pop(), data ) === false ) &&\n\t\t\t\tacceptData( elem ) ) {\n\n\t\t\t\t// Call a native DOM method on the target with the same name as the event.\n\t\t\t\t// Don't do default actions on window, that's where global variables be (trac-6170)\n\t\t\t\tif ( ontype && isFunction( elem[ type ] ) && !isWindow( elem ) ) {\n\n\t\t\t\t\t// Don't re-trigger an onFOO event when we call its FOO() method\n\t\t\t\t\ttmp = elem[ ontype ];\n\n\t\t\t\t\tif ( tmp ) {\n\t\t\t\t\t\telem[ ontype ] = null;\n\t\t\t\t\t}\n\n\t\t\t\t\t// Prevent re-triggering of the same event, since we already bubbled it above\n\t\t\t\t\tjQuery.event.triggered = type;\n\n\t\t\t\t\tif ( event.isPropagationStopped() ) {\n\t\t\t\t\t\tlastElement.addEventListener( type, stopPropagationCallback );\n\t\t\t\t\t}\n\n\t\t\t\t\telem[ type ]();\n\n\t\t\t\t\tif ( event.isPropagationStopped() ) {\n\t\t\t\t\t\tlastElement.removeEventListener( type, stopPropagationCallback );\n\t\t\t\t\t}\n\n\t\t\t\t\tjQuery.event.triggered = undefined;\n\n\t\t\t\t\tif ( tmp ) {\n\t\t\t\t\t\telem[ ontype ] = tmp;\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\n\t\treturn event.result;\n\t},\n\n\t// Piggyback on a donor event to simulate a different one\n\t// Used only for `focus(in | out)` events\n\tsimulate: function( type, elem, event ) {\n\t\tvar e = jQuery.extend(\n\t\t\tnew jQuery.Event(),\n\t\t\tevent,\n\t\t\t{\n\t\t\t\ttype: type,\n\t\t\t\tisSimulated: true\n\t\t\t}\n\t\t);\n\n\t\tjQuery.event.trigger( e, null, elem );\n\t}\n\n} );\n\njQuery.fn.extend( {\n\n\ttrigger: function( type, data ) {\n\t\treturn this.each( function() {\n\t\t\tjQuery.event.trigger( type, data, this );\n\t\t} );\n\t},\n\ttriggerHandler: function( type, data ) {\n\t\tvar elem = this[ 0 ];\n\t\tif ( elem ) {\n\t\t\treturn jQuery.event.trigger( type, data, elem, true );\n\t\t}\n\t}\n} );\n\n\nvar\n\trbracket = /\\[\\]$/,\n\trCRLF = /\\r?\\n/g,\n\trsubmitterTypes = /^(?:submit|button|image|reset|file)$/i,\n\trsubmittable = /^(?:input|select|textarea|keygen)/i;\n\nfunction buildParams( prefix, obj, traditional, add ) {\n\tvar name;\n\n\tif ( Array.isArray( obj ) ) {\n\n\t\t// Serialize array item.\n\t\tjQuery.each( obj, function( i, v ) {\n\t\t\tif ( traditional || rbracket.test( prefix ) ) {\n\n\t\t\t\t// Treat each array item as a scalar.\n\t\t\t\tadd( prefix, v );\n\n\t\t\t} else {\n\n\t\t\t\t// Item is non-scalar (array or object), encode its numeric index.\n\t\t\t\tbuildParams(\n\t\t\t\t\tprefix + \"[\" + ( typeof v === \"object\" && v != null ? i : \"\" ) + \"]\",\n\t\t\t\t\tv,\n\t\t\t\t\ttraditional,\n\t\t\t\t\tadd\n\t\t\t\t);\n\t\t\t}\n\t\t} );\n\n\t} else if ( !traditional && toType( obj ) === \"object\" ) {\n\n\t\t// Serialize object item.\n\t\tfor ( name in obj ) {\n\t\t\tbuildParams( prefix + \"[\" + name + \"]\", obj[ name ], traditional, add );\n\t\t}\n\n\t} else {\n\n\t\t// Serialize scalar item.\n\t\tadd( prefix, obj );\n\t}\n}\n\n// Serialize an array of form elements or a set of\n// key/values into a query string\njQuery.param = function( a, traditional ) {\n\tvar prefix,\n\t\ts = [],\n\t\tadd = function( key, valueOrFunction ) {\n\n\t\t\t// If value is a function, invoke it and use its return value\n\t\t\tvar value = isFunction( valueOrFunction ) ?\n\t\t\t\tvalueOrFunction() :\n\t\t\t\tvalueOrFunction;\n\n\t\t\ts[ s.length ] = encodeURIComponent( key ) + \"=\" +\n\t\t\t\tencodeURIComponent( value == null ? \"\" : value );\n\t\t};\n\n\tif ( a == null ) {\n\t\treturn \"\";\n\t}\n\n\t// If an array was passed in, assume that it is an array of form elements.\n\tif ( Array.isArray( a ) || ( a.jquery && !jQuery.isPlainObject( a ) ) ) {\n\n\t\t// Serialize the form elements\n\t\tjQuery.each( a, function() {\n\t\t\tadd( this.name, this.value );\n\t\t} );\n\n\t} else {\n\n\t\t// If traditional, encode the \"old\" way (the way 1.3.2 or older\n\t\t// did it), otherwise encode params recursively.\n\t\tfor ( prefix in a ) {\n\t\t\tbuildParams( prefix, a[ prefix ], traditional, add );\n\t\t}\n\t}\n\n\t// Return the resulting serialization\n\treturn s.join( \"&\" );\n};\n\njQuery.fn.extend( {\n\tserialize: function() {\n\t\treturn jQuery.param( this.serializeArray() );\n\t},\n\tserializeArray: function() {\n\t\treturn this.map( function() {\n\n\t\t\t// Can add propHook for \"elements\" to filter or add form elements\n\t\t\tvar elements = jQuery.prop( this, \"elements\" );\n\t\t\treturn elements ? jQuery.makeArray( elements ) : this;\n\t\t} ).filter( function() {\n\t\t\tvar type = this.type;\n\n\t\t\t// Use .is( \":disabled\" ) so that fieldset[disabled] works\n\t\t\treturn this.name && !jQuery( this ).is( \":disabled\" ) &&\n\t\t\t\trsubmittable.test( this.nodeName ) && !rsubmitterTypes.test( type ) &&\n\t\t\t\t( this.checked || !rcheckableType.test( type ) );\n\t\t} ).map( function( _i, elem ) {\n\t\t\tvar val = jQuery( this ).val();\n\n\t\t\tif ( val == null ) {\n\t\t\t\treturn null;\n\t\t\t}\n\n\t\t\tif ( Array.isArray( val ) ) {\n\t\t\t\treturn jQuery.map( val, function( val ) {\n\t\t\t\t\treturn { name: elem.name, value: val.replace( rCRLF, \"\\r\\n\" ) };\n\t\t\t\t} );\n\t\t\t}\n\n\t\t\treturn { name: elem.name, value: val.replace( rCRLF, \"\\r\\n\" ) };\n\t\t} ).get();\n\t}\n} );\n\n\nvar\n\tr20 = /%20/g,\n\trhash = /#.*$/,\n\trantiCache = /([?&])_=[^&]*/,\n\trheaders = /^(.*?):[ \\t]*([^\\r\\n]*)$/mg,\n\n\t// trac-7653, trac-8125, trac-8152: local protocol detection\n\trlocalProtocol = /^(?:about|app|app-storage|.+-extension|file|res|widget):$/,\n\trnoContent = /^(?:GET|HEAD)$/,\n\trprotocol = /^\\/\\//,\n\n\t/* Prefilters\n\t * 1) They are useful to introduce custom dataTypes (see ajax/jsonp.js for an example)\n\t * 2) These are called:\n\t * - BEFORE asking for a transport\n\t * - AFTER param serialization (s.data is a string if s.processData is true)\n\t * 3) key is the dataType\n\t * 4) the catchall symbol \"*\" can be used\n\t * 5) execution will start with transport dataType and THEN continue down to \"*\" if needed\n\t */\n\tprefilters = {},\n\n\t/* Transports bindings\n\t * 1) key is the dataType\n\t * 2) the catchall symbol \"*\" can be used\n\t * 3) selection will start with transport dataType and THEN go to \"*\" if needed\n\t */\n\ttransports = {},\n\n\t// Avoid comment-prolog char sequence (trac-10098); must appease lint and evade compression\n\tallTypes = \"*/\".concat( \"*\" ),\n\n\t// Anchor tag for parsing the document origin\n\toriginAnchor = document.createElement( \"a\" );\n\noriginAnchor.href = location.href;\n\n// Base \"constructor\" for jQuery.ajaxPrefilter and jQuery.ajaxTransport\nfunction addToPrefiltersOrTransports( structure ) {\n\n\t// dataTypeExpression is optional and defaults to \"*\"\n\treturn function( dataTypeExpression, func ) {\n\n\t\tif ( typeof dataTypeExpression !== \"string\" ) {\n\t\t\tfunc = dataTypeExpression;\n\t\t\tdataTypeExpression = \"*\";\n\t\t}\n\n\t\tvar dataType,\n\t\t\ti = 0,\n\t\t\tdataTypes = dataTypeExpression.toLowerCase().match( rnothtmlwhite ) || [];\n\n\t\tif ( isFunction( func ) ) {\n\n\t\t\t// For each dataType in the dataTypeExpression\n\t\t\twhile ( ( dataType = dataTypes[ i++ ] ) ) {\n\n\t\t\t\t// Prepend if requested\n\t\t\t\tif ( dataType[ 0 ] === \"+\" ) {\n\t\t\t\t\tdataType = dataType.slice( 1 ) || \"*\";\n\t\t\t\t\t( structure[ dataType ] = structure[ dataType ] || [] ).unshift( func );\n\n\t\t\t\t// Otherwise append\n\t\t\t\t} else {\n\t\t\t\t\t( structure[ dataType ] = structure[ dataType ] || [] ).push( func );\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\t};\n}\n\n// Base inspection function for prefilters and transports\nfunction inspectPrefiltersOrTransports( structure, options, originalOptions, jqXHR ) {\n\n\tvar inspected = {},\n\t\tseekingTransport = ( structure === transports );\n\n\tfunction inspect( dataType ) {\n\t\tvar selected;\n\t\tinspected[ dataType ] = true;\n\t\tjQuery.each( structure[ dataType ] || [], function( _, prefilterOrFactory ) {\n\t\t\tvar dataTypeOrTransport = prefilterOrFactory( options, originalOptions, jqXHR );\n\t\t\tif ( typeof dataTypeOrTransport === \"string\" &&\n\t\t\t\t!seekingTransport && !inspected[ dataTypeOrTransport ] ) {\n\n\t\t\t\toptions.dataTypes.unshift( dataTypeOrTransport );\n\t\t\t\tinspect( dataTypeOrTransport );\n\t\t\t\treturn false;\n\t\t\t} else if ( seekingTransport ) {\n\t\t\t\treturn !( selected = dataTypeOrTransport );\n\t\t\t}\n\t\t} );\n\t\treturn selected;\n\t}\n\n\treturn inspect( options.dataTypes[ 0 ] ) || !inspected[ \"*\" ] && inspect( \"*\" );\n}\n\n// A special extend for ajax options\n// that takes \"flat\" options (not to be deep extended)\n// Fixes trac-9887\nfunction ajaxExtend( target, src ) {\n\tvar key, deep,\n\t\tflatOptions = jQuery.ajaxSettings.flatOptions || {};\n\n\tfor ( key in src ) {\n\t\tif ( src[ key ] !== undefined ) {\n\t\t\t( flatOptions[ key ] ? target : ( deep || ( deep = {} ) ) )[ key ] = src[ key ];\n\t\t}\n\t}\n\tif ( deep ) {\n\t\tjQuery.extend( true, target, deep );\n\t}\n\n\treturn target;\n}\n\n/* Handles responses to an ajax request:\n * - finds the right dataType (mediates between content-type and expected dataType)\n * - returns the corresponding response\n */\nfunction ajaxHandleResponses( s, jqXHR, responses ) {\n\n\tvar ct, type, finalDataType, firstDataType,\n\t\tcontents = s.contents,\n\t\tdataTypes = s.dataTypes;\n\n\t// Remove auto dataType and get content-type in the process\n\twhile ( dataTypes[ 0 ] === \"*\" ) {\n\t\tdataTypes.shift();\n\t\tif ( ct === undefined ) {\n\t\t\tct = s.mimeType || jqXHR.getResponseHeader( \"Content-Type\" );\n\t\t}\n\t}\n\n\t// Check if we're dealing with a known content-type\n\tif ( ct ) {\n\t\tfor ( type in contents ) {\n\t\t\tif ( contents[ type ] && contents[ type ].test( ct ) ) {\n\t\t\t\tdataTypes.unshift( type );\n\t\t\t\tbreak;\n\t\t\t}\n\t\t}\n\t}\n\n\t// Check to see if we have a response for the expected dataType\n\tif ( dataTypes[ 0 ] in responses ) {\n\t\tfinalDataType = dataTypes[ 0 ];\n\t} else {\n\n\t\t// Try convertible dataTypes\n\t\tfor ( type in responses ) {\n\t\t\tif ( !dataTypes[ 0 ] || s.converters[ type + \" \" + dataTypes[ 0 ] ] ) {\n\t\t\t\tfinalDataType = type;\n\t\t\t\tbreak;\n\t\t\t}\n\t\t\tif ( !firstDataType ) {\n\t\t\t\tfirstDataType = type;\n\t\t\t}\n\t\t}\n\n\t\t// Or just use first one\n\t\tfinalDataType = finalDataType || firstDataType;\n\t}\n\n\t// If we found a dataType\n\t// We add the dataType to the list if needed\n\t// and return the corresponding response\n\tif ( finalDataType ) {\n\t\tif ( finalDataType !== dataTypes[ 0 ] ) {\n\t\t\tdataTypes.unshift( finalDataType );\n\t\t}\n\t\treturn responses[ finalDataType ];\n\t}\n}\n\n/* Chain conversions given the request and the original response\n * Also sets the responseXXX fields on the jqXHR instance\n */\nfunction ajaxConvert( s, response, jqXHR, isSuccess ) {\n\tvar conv2, current, conv, tmp, prev,\n\t\tconverters = {},\n\n\t\t// Work with a copy of dataTypes in case we need to modify it for conversion\n\t\tdataTypes = s.dataTypes.slice();\n\n\t// Create converters map with lowercased keys\n\tif ( dataTypes[ 1 ] ) {\n\t\tfor ( conv in s.converters ) {\n\t\t\tconverters[ conv.toLowerCase() ] = s.converters[ conv ];\n\t\t}\n\t}\n\n\tcurrent = dataTypes.shift();\n\n\t// Convert to each sequential dataType\n\twhile ( current ) {\n\n\t\tif ( s.responseFields[ current ] ) {\n\t\t\tjqXHR[ s.responseFields[ current ] ] = response;\n\t\t}\n\n\t\t// Apply the dataFilter if provided\n\t\tif ( !prev && isSuccess && s.dataFilter ) {\n\t\t\tresponse = s.dataFilter( response, s.dataType );\n\t\t}\n\n\t\tprev = current;\n\t\tcurrent = dataTypes.shift();\n\n\t\tif ( current ) {\n\n\t\t\t// There's only work to do if current dataType is non-auto\n\t\t\tif ( current === \"*\" ) {\n\n\t\t\t\tcurrent = prev;\n\n\t\t\t// Convert response if prev dataType is non-auto and differs from current\n\t\t\t} else if ( prev !== \"*\" && prev !== current ) {\n\n\t\t\t\t// Seek a direct converter\n\t\t\t\tconv = converters[ prev + \" \" + current ] || converters[ \"* \" + current ];\n\n\t\t\t\t// If none found, seek a pair\n\t\t\t\tif ( !conv ) {\n\t\t\t\t\tfor ( conv2 in converters ) {\n\n\t\t\t\t\t\t// If conv2 outputs current\n\t\t\t\t\t\ttmp = conv2.split( \" \" );\n\t\t\t\t\t\tif ( tmp[ 1 ] === current ) {\n\n\t\t\t\t\t\t\t// If prev can be converted to accepted input\n\t\t\t\t\t\t\tconv = converters[ prev + \" \" + tmp[ 0 ] ] ||\n\t\t\t\t\t\t\t\tconverters[ \"* \" + tmp[ 0 ] ];\n\t\t\t\t\t\t\tif ( conv ) {\n\n\t\t\t\t\t\t\t\t// Condense equivalence converters\n\t\t\t\t\t\t\t\tif ( conv === true ) {\n\t\t\t\t\t\t\t\t\tconv = converters[ conv2 ];\n\n\t\t\t\t\t\t\t\t// Otherwise, insert the intermediate dataType\n\t\t\t\t\t\t\t\t} else if ( converters[ conv2 ] !== true ) {\n\t\t\t\t\t\t\t\t\tcurrent = tmp[ 0 ];\n\t\t\t\t\t\t\t\t\tdataTypes.unshift( tmp[ 1 ] );\n\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t\tbreak;\n\t\t\t\t\t\t\t}\n\t\t\t\t\t\t}\n\t\t\t\t\t}\n\t\t\t\t}\n\n\t\t\t\t// Apply converter (if not an equivalence)\n\t\t\t\tif ( conv !== true ) {\n\n\t\t\t\t\t// Unless errors are allowed to bubble, catch and return them\n\t\t\t\t\tif ( conv && s.throws ) {\n\t\t\t\t\t\tresponse = conv( response );\n\t\t\t\t\t} else {\n\t\t\t\t\t\ttry {\n\t\t\t\t\t\t\tresponse = conv( response );\n\t\t\t\t\t\t} catch ( e ) {\n\t\t\t\t\t\t\treturn {\n\t\t\t\t\t\t\t\tstate: \"parsererror\",\n\t\t\t\t\t\t\t\terror: conv ? e : \"No conversion from \" + prev + \" to \" + current\n\t\t\t\t\t\t\t};\n\t\t\t\t\t\t}\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\t}\n\n\treturn { state: \"success\", data: response };\n}\n\njQuery.extend( {\n\n\t// Counter for holding the number of active queries\n\tactive: 0,\n\n\t// Last-Modified header cache for next request\n\tlastModified: {},\n\tetag: {},\n\n\tajaxSettings: {\n\t\turl: location.href,\n\t\ttype: \"GET\",\n\t\tisLocal: rlocalProtocol.test( location.protocol ),\n\t\tglobal: true,\n\t\tprocessData: true,\n\t\tasync: true,\n\t\tcontentType: \"application/x-www-form-urlencoded; charset=UTF-8\",\n\n\t\t/*\n\t\ttimeout: 0,\n\t\tdata: null,\n\t\tdataType: null,\n\t\tusername: null,\n\t\tpassword: null,\n\t\tcache: null,\n\t\tthrows: false,\n\t\ttraditional: false,\n\t\theaders: {},\n\t\t*/\n\n\t\taccepts: {\n\t\t\t\"*\": allTypes,\n\t\t\ttext: \"text/plain\",\n\t\t\thtml: \"text/html\",\n\t\t\txml: \"application/xml, text/xml\",\n\t\t\tjson: \"application/json, text/javascript\"\n\t\t},\n\n\t\tcontents: {\n\t\t\txml: /\\bxml\\b/,\n\t\t\thtml: /\\bhtml/,\n\t\t\tjson: /\\bjson\\b/\n\t\t},\n\n\t\tresponseFields: {\n\t\t\txml: \"responseXML\",\n\t\t\ttext: \"responseText\",\n\t\t\tjson: \"responseJSON\"\n\t\t},\n\n\t\t// Data converters\n\t\t// Keys separate source (or catchall \"*\") and destination types with a single space\n\t\tconverters: {\n\n\t\t\t// Convert anything to text\n\t\t\t\"* text\": String,\n\n\t\t\t// Text to html (true = no transformation)\n\t\t\t\"text html\": true,\n\n\t\t\t// Evaluate text as a json expression\n\t\t\t\"text json\": JSON.parse,\n\n\t\t\t// Parse text as xml\n\t\t\t\"text xml\": jQuery.parseXML\n\t\t},\n\n\t\t// For options that shouldn't be deep extended:\n\t\t// you can add your own custom options here if\n\t\t// and when you create one that shouldn't be\n\t\t// deep extended (see ajaxExtend)\n\t\tflatOptions: {\n\t\t\turl: true,\n\t\t\tcontext: true\n\t\t}\n\t},\n\n\t// Creates a full fledged settings object into target\n\t// with both ajaxSettings and settings fields.\n\t// If target is omitted, writes into ajaxSettings.\n\tajaxSetup: function( target, settings ) {\n\t\treturn settings ?\n\n\t\t\t// Building a settings object\n\t\t\tajaxExtend( ajaxExtend( target, jQuery.ajaxSettings ), settings ) :\n\n\t\t\t// Extending ajaxSettings\n\t\t\tajaxExtend( jQuery.ajaxSettings, target );\n\t},\n\n\tajaxPrefilter: addToPrefiltersOrTransports( prefilters ),\n\tajaxTransport: addToPrefiltersOrTransports( transports ),\n\n\t// Main method\n\tajax: function( url, options ) {\n\n\t\t// If url is an object, simulate pre-1.5 signature\n\t\tif ( typeof url === \"object\" ) {\n\t\t\toptions = url;\n\t\t\turl = undefined;\n\t\t}\n\n\t\t// Force options to be an object\n\t\toptions = options || {};\n\n\t\tvar transport,\n\n\t\t\t// URL without anti-cache param\n\t\t\tcacheURL,\n\n\t\t\t// Response headers\n\t\t\tresponseHeadersString,\n\t\t\tresponseHeaders,\n\n\t\t\t// timeout handle\n\t\t\ttimeoutTimer,\n\n\t\t\t// Url cleanup var\n\t\t\turlAnchor,\n\n\t\t\t// Request state (becomes false upon send and true upon completion)\n\t\t\tcompleted,\n\n\t\t\t// To know if global events are to be dispatched\n\t\t\tfireGlobals,\n\n\t\t\t// Loop variable\n\t\t\ti,\n\n\t\t\t// uncached part of the url\n\t\t\tuncached,\n\n\t\t\t// Create the final options object\n\t\t\ts = jQuery.ajaxSetup( {}, options ),\n\n\t\t\t// Callbacks context\n\t\t\tcallbackContext = s.context || s,\n\n\t\t\t// Context for global events is callbackContext if it is a DOM node or jQuery collection\n\t\t\tglobalEventContext = s.context &&\n\t\t\t\t( callbackContext.nodeType || callbackContext.jquery ) ?\n\t\t\t\tjQuery( callbackContext ) :\n\t\t\t\tjQuery.event,\n\n\t\t\t// Deferreds\n\t\t\tdeferred = jQuery.Deferred(),\n\t\t\tcompleteDeferred = jQuery.Callbacks( \"once memory\" ),\n\n\t\t\t// Status-dependent callbacks\n\t\t\tstatusCode = s.statusCode || {},\n\n\t\t\t// Headers (they are sent all at once)\n\t\t\trequestHeaders = {},\n\t\t\trequestHeadersNames = {},\n\n\t\t\t// Default abort message\n\t\t\tstrAbort = \"canceled\",\n\n\t\t\t// Fake xhr\n\t\t\tjqXHR = {\n\t\t\t\treadyState: 0,\n\n\t\t\t\t// Builds headers hashtable if needed\n\t\t\t\tgetResponseHeader: function( key ) {\n\t\t\t\t\tvar match;\n\t\t\t\t\tif ( completed ) {\n\t\t\t\t\t\tif ( !responseHeaders ) {\n\t\t\t\t\t\t\tresponseHeaders = {};\n\t\t\t\t\t\t\twhile ( ( match = rheaders.exec( responseHeadersString ) ) ) {\n\t\t\t\t\t\t\t\tresponseHeaders[ match[ 1 ].toLowerCase() + \" \" ] =\n\t\t\t\t\t\t\t\t\t( responseHeaders[ match[ 1 ].toLowerCase() + \" \" ] || [] )\n\t\t\t\t\t\t\t\t\t\t.concat( match[ 2 ] );\n\t\t\t\t\t\t\t}\n\t\t\t\t\t\t}\n\t\t\t\t\t\tmatch = responseHeaders[ key.toLowerCase() + \" \" ];\n\t\t\t\t\t}\n\t\t\t\t\treturn match == null ? null : match.join( \", \" );\n\t\t\t\t},\n\n\t\t\t\t// Raw string\n\t\t\t\tgetAllResponseHeaders: function() {\n\t\t\t\t\treturn completed ? responseHeadersString : null;\n\t\t\t\t},\n\n\t\t\t\t// Caches the header\n\t\t\t\tsetRequestHeader: function( name, value ) {\n\t\t\t\t\tif ( completed == null ) {\n\t\t\t\t\t\tname = requestHeadersNames[ name.toLowerCase() ] =\n\t\t\t\t\t\t\trequestHeadersNames[ name.toLowerCase() ] || name;\n\t\t\t\t\t\trequestHeaders[ name ] = value;\n\t\t\t\t\t}\n\t\t\t\t\treturn this;\n\t\t\t\t},\n\n\t\t\t\t// Overrides response content-type header\n\t\t\t\toverrideMimeType: function( type ) {\n\t\t\t\t\tif ( completed == null ) {\n\t\t\t\t\t\ts.mimeType = type;\n\t\t\t\t\t}\n\t\t\t\t\treturn this;\n\t\t\t\t},\n\n\t\t\t\t// Status-dependent callbacks\n\t\t\t\tstatusCode: function( map ) {\n\t\t\t\t\tvar code;\n\t\t\t\t\tif ( map ) {\n\t\t\t\t\t\tif ( completed ) {\n\n\t\t\t\t\t\t\t// Execute the appropriate callbacks\n\t\t\t\t\t\t\tjqXHR.always( map[ jqXHR.status ] );\n\t\t\t\t\t\t} else {\n\n\t\t\t\t\t\t\t// Lazy-add the new callbacks in a way that preserves old ones\n\t\t\t\t\t\t\tfor ( code in map ) {\n\t\t\t\t\t\t\t\tstatusCode[ code ] = [ statusCode[ code ], map[ code ] ];\n\t\t\t\t\t\t\t}\n\t\t\t\t\t\t}\n\t\t\t\t\t}\n\t\t\t\t\treturn this;\n\t\t\t\t},\n\n\t\t\t\t// Cancel the request\n\t\t\t\tabort: function( statusText ) {\n\t\t\t\t\tvar finalText = statusText || strAbort;\n\t\t\t\t\tif ( transport ) {\n\t\t\t\t\t\ttransport.abort( finalText );\n\t\t\t\t\t}\n\t\t\t\t\tdone( 0, finalText );\n\t\t\t\t\treturn this;\n\t\t\t\t}\n\t\t\t};\n\n\t\t// Attach deferreds\n\t\tdeferred.promise( jqXHR );\n\n\t\t// Add protocol if not provided (prefilters might expect it)\n\t\t// Handle falsy url in the settings object (trac-10093: consistency with old signature)\n\t\t// We also use the url parameter if available\n\t\ts.url = ( ( url || s.url || location.href ) + \"\" )\n\t\t\t.replace( rprotocol, location.protocol + \"//\" );\n\n\t\t// Alias method option to type as per ticket trac-12004\n\t\ts.type = options.method || options.type || s.method || s.type;\n\n\t\t// Extract dataTypes list\n\t\ts.dataTypes = ( s.dataType || \"*\" ).toLowerCase().match( rnothtmlwhite ) || [ \"\" ];\n\n\t\t// A cross-domain request is in order when the origin doesn't match the current origin.\n\t\tif ( s.crossDomain == null ) {\n\t\t\turlAnchor = document.createElement( \"a\" );\n\n\t\t\t// Support: IE <=8 - 11, Edge 12 - 15\n\t\t\t// IE throws exception on accessing the href property if url is malformed,\n\t\t\t// e.g. http://example.com:80x/\n\t\t\ttry {\n\t\t\t\turlAnchor.href = s.url;\n\n\t\t\t\t// Support: IE <=8 - 11 only\n\t\t\t\t// Anchor's host property isn't correctly set when s.url is relative\n\t\t\t\turlAnchor.href = urlAnchor.href;\n\t\t\t\ts.crossDomain = originAnchor.protocol + \"//\" + originAnchor.host !==\n\t\t\t\t\turlAnchor.protocol + \"//\" + urlAnchor.host;\n\t\t\t} catch ( e ) {\n\n\t\t\t\t// If there is an error parsing the URL, assume it is crossDomain,\n\t\t\t\t// it can be rejected by the transport if it is invalid\n\t\t\t\ts.crossDomain = true;\n\t\t\t}\n\t\t}\n\n\t\t// Convert data if not already a string\n\t\tif ( s.data && s.processData && typeof s.data !== \"string\" ) {\n\t\t\ts.data = jQuery.param( s.data, s.traditional );\n\t\t}\n\n\t\t// Apply prefilters\n\t\tinspectPrefiltersOrTransports( prefilters, s, options, jqXHR );\n\n\t\t// If request was aborted inside a prefilter, stop there\n\t\tif ( completed ) {\n\t\t\treturn jqXHR;\n\t\t}\n\n\t\t// We can fire global events as of now if asked to\n\t\t// Don't fire events if jQuery.event is undefined in an AMD-usage scenario (trac-15118)\n\t\tfireGlobals = jQuery.event && s.global;\n\n\t\t// Watch for a new set of requests\n\t\tif ( fireGlobals && jQuery.active++ === 0 ) {\n\t\t\tjQuery.event.trigger( \"ajaxStart\" );\n\t\t}\n\n\t\t// Uppercase the type\n\t\ts.type = s.type.toUpperCase();\n\n\t\t// Determine if request has content\n\t\ts.hasContent = !rnoContent.test( s.type );\n\n\t\t// Save the URL in case we're toying with the If-Modified-Since\n\t\t// and/or If-None-Match header later on\n\t\t// Remove hash to simplify url manipulation\n\t\tcacheURL = s.url.replace( rhash, \"\" );\n\n\t\t// More options handling for requests with no content\n\t\tif ( !s.hasContent ) {\n\n\t\t\t// Remember the hash so we can put it back\n\t\t\tuncached = s.url.slice( cacheURL.length );\n\n\t\t\t// If data is available and should be processed, append data to url\n\t\t\tif ( s.data && ( s.processData || typeof s.data === \"string\" ) ) {\n\t\t\t\tcacheURL += ( rquery.test( cacheURL ) ? \"&\" : \"?\" ) + s.data;\n\n\t\t\t\t// trac-9682: remove data so that it's not used in an eventual retry\n\t\t\t\tdelete s.data;\n\t\t\t}\n\n\t\t\t// Add or update anti-cache param if needed\n\t\t\tif ( s.cache === false ) {\n\t\t\t\tcacheURL = cacheURL.replace( rantiCache, \"$1\" );\n\t\t\t\tuncached = ( rquery.test( cacheURL ) ? \"&\" : \"?\" ) + \"_=\" + ( nonce.guid++ ) +\n\t\t\t\t\tuncached;\n\t\t\t}\n\n\t\t\t// Put hash and anti-cache on the URL that will be requested (gh-1732)\n\t\t\ts.url = cacheURL + uncached;\n\n\t\t// Change '%20' to '+' if this is encoded form body content (gh-2658)\n\t\t} else if ( s.data && s.processData &&\n\t\t\t( s.contentType || \"\" ).indexOf( \"application/x-www-form-urlencoded\" ) === 0 ) {\n\t\t\ts.data = s.data.replace( r20, \"+\" );\n\t\t}\n\n\t\t// Set the If-Modified-Since and/or If-None-Match header, if in ifModified mode.\n\t\tif ( s.ifModified ) {\n\t\t\tif ( jQuery.lastModified[ cacheURL ] ) {\n\t\t\t\tjqXHR.setRequestHeader( \"If-Modified-Since\", jQuery.lastModified[ cacheURL ] );\n\t\t\t}\n\t\t\tif ( jQuery.etag[ cacheURL ] ) {\n\t\t\t\tjqXHR.setRequestHeader( \"If-None-Match\", jQuery.etag[ cacheURL ] );\n\t\t\t}\n\t\t}\n\n\t\t// Set the correct header, if data is being sent\n\t\tif ( s.data && s.hasContent && s.contentType !== false || options.contentType ) {\n\t\t\tjqXHR.setRequestHeader( \"Content-Type\", s.contentType );\n\t\t}\n\n\t\t// Set the Accepts header for the server, depending on the dataType\n\t\tjqXHR.setRequestHeader(\n\t\t\t\"Accept\",\n\t\t\ts.dataTypes[ 0 ] && s.accepts[ s.dataTypes[ 0 ] ] ?\n\t\t\t\ts.accepts[ s.dataTypes[ 0 ] ] +\n\t\t\t\t\t( s.dataTypes[ 0 ] !== \"*\" ? \", \" + allTypes + \"; q=0.01\" : \"\" ) :\n\t\t\t\ts.accepts[ \"*\" ]\n\t\t);\n\n\t\t// Check for headers option\n\t\tfor ( i in s.headers ) {\n\t\t\tjqXHR.setRequestHeader( i, s.headers[ i ] );\n\t\t}\n\n\t\t// Allow custom headers/mimetypes and early abort\n\t\tif ( s.beforeSend &&\n\t\t\t( s.beforeSend.call( callbackContext, jqXHR, s ) === false || completed ) ) {\n\n\t\t\t// Abort if not done already and return\n\t\t\treturn jqXHR.abort();\n\t\t}\n\n\t\t// Aborting is no longer a cancellation\n\t\tstrAbort = \"abort\";\n\n\t\t// Install callbacks on deferreds\n\t\tcompleteDeferred.add( s.complete );\n\t\tjqXHR.done( s.success );\n\t\tjqXHR.fail( s.error );\n\n\t\t// Get transport\n\t\ttransport = inspectPrefiltersOrTransports( transports, s, options, jqXHR );\n\n\t\t// If no transport, we auto-abort\n\t\tif ( !transport ) {\n\t\t\tdone( -1, \"No Transport\" );\n\t\t} else {\n\t\t\tjqXHR.readyState = 1;\n\n\t\t\t// Send global event\n\t\t\tif ( fireGlobals ) {\n\t\t\t\tglobalEventContext.trigger( \"ajaxSend\", [ jqXHR, s ] );\n\t\t\t}\n\n\t\t\t// If request was aborted inside ajaxSend, stop there\n\t\t\tif ( completed ) {\n\t\t\t\treturn jqXHR;\n\t\t\t}\n\n\t\t\t// Timeout\n\t\t\tif ( s.async && s.timeout > 0 ) {\n\t\t\t\ttimeoutTimer = window.setTimeout( function() {\n\t\t\t\t\tjqXHR.abort( \"timeout\" );\n\t\t\t\t}, s.timeout );\n\t\t\t}\n\n\t\t\ttry {\n\t\t\t\tcompleted = false;\n\t\t\t\ttransport.send( requestHeaders, done );\n\t\t\t} catch ( e ) {\n\n\t\t\t\t// Rethrow post-completion exceptions\n\t\t\t\tif ( completed ) {\n\t\t\t\t\tthrow e;\n\t\t\t\t}\n\n\t\t\t\t// Propagate others as results\n\t\t\t\tdone( -1, e );\n\t\t\t}\n\t\t}\n\n\t\t// Callback for when everything is done\n\t\tfunction done( status, nativeStatusText, responses, headers ) {\n\t\t\tvar isSuccess, success, error, response, modified,\n\t\t\t\tstatusText = nativeStatusText;\n\n\t\t\t// Ignore repeat invocations\n\t\t\tif ( completed ) {\n\t\t\t\treturn;\n\t\t\t}\n\n\t\t\tcompleted = true;\n\n\t\t\t// Clear timeout if it exists\n\t\t\tif ( timeoutTimer ) {\n\t\t\t\twindow.clearTimeout( timeoutTimer );\n\t\t\t}\n\n\t\t\t// Dereference transport for early garbage collection\n\t\t\t// (no matter how long the jqXHR object will be used)\n\t\t\ttransport = undefined;\n\n\t\t\t// Cache response headers\n\t\t\tresponseHeadersString = headers || \"\";\n\n\t\t\t// Set readyState\n\t\t\tjqXHR.readyState = status > 0 ? 4 : 0;\n\n\t\t\t// Determine if successful\n\t\t\tisSuccess = status >= 200 && status < 300 || status === 304;\n\n\t\t\t// Get response data\n\t\t\tif ( responses ) {\n\t\t\t\tresponse = ajaxHandleResponses( s, jqXHR, responses );\n\t\t\t}\n\n\t\t\t// Use a noop converter for missing script but not if jsonp\n\t\t\tif ( !isSuccess &&\n\t\t\t\tjQuery.inArray( \"script\", s.dataTypes ) > -1 &&\n\t\t\t\tjQuery.inArray( \"json\", s.dataTypes ) < 0 ) {\n\t\t\t\ts.converters[ \"text script\" ] = function() {};\n\t\t\t}\n\n\t\t\t// Convert no matter what (that way responseXXX fields are always set)\n\t\t\tresponse = ajaxConvert( s, response, jqXHR, isSuccess );\n\n\t\t\t// If successful, handle type chaining\n\t\t\tif ( isSuccess ) {\n\n\t\t\t\t// Set the If-Modified-Since and/or If-None-Match header, if in ifModified mode.\n\t\t\t\tif ( s.ifModified ) {\n\t\t\t\t\tmodified = jqXHR.getResponseHeader( \"Last-Modified\" );\n\t\t\t\t\tif ( modified ) {\n\t\t\t\t\t\tjQuery.lastModified[ cacheURL ] = modified;\n\t\t\t\t\t}\n\t\t\t\t\tmodified = jqXHR.getResponseHeader( \"etag\" );\n\t\t\t\t\tif ( modified ) {\n\t\t\t\t\t\tjQuery.etag[ cacheURL ] = modified;\n\t\t\t\t\t}\n\t\t\t\t}\n\n\t\t\t\t// if no content\n\t\t\t\tif ( status === 204 || s.type === \"HEAD\" ) {\n\t\t\t\t\tstatusText = \"nocontent\";\n\n\t\t\t\t// if not modified\n\t\t\t\t} else if ( status === 304 ) {\n\t\t\t\t\tstatusText = \"notmodified\";\n\n\t\t\t\t// If we have data, let's convert it\n\t\t\t\t} else {\n\t\t\t\t\tstatusText = response.state;\n\t\t\t\t\tsuccess = response.data;\n\t\t\t\t\terror = response.error;\n\t\t\t\t\tisSuccess = !error;\n\t\t\t\t}\n\t\t\t} else {\n\n\t\t\t\t// Extract error from statusText and normalize for non-aborts\n\t\t\t\terror = statusText;\n\t\t\t\tif ( status || !statusText ) {\n\t\t\t\t\tstatusText = \"error\";\n\t\t\t\t\tif ( status < 0 ) {\n\t\t\t\t\t\tstatus = 0;\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t}\n\n\t\t\t// Set data for the fake xhr object\n\t\t\tjqXHR.status = status;\n\t\t\tjqXHR.statusText = ( nativeStatusText || statusText ) + \"\";\n\n\t\t\t// Success/Error\n\t\t\tif ( isSuccess ) {\n\t\t\t\tdeferred.resolveWith( callbackContext, [ success, statusText, jqXHR ] );\n\t\t\t} else {\n\t\t\t\tdeferred.rejectWith( callbackContext, [ jqXHR, statusText, error ] );\n\t\t\t}\n\n\t\t\t// Status-dependent callbacks\n\t\t\tjqXHR.statusCode( statusCode );\n\t\t\tstatusCode = undefined;\n\n\t\t\tif ( fireGlobals ) {\n\t\t\t\tglobalEventContext.trigger( isSuccess ? \"ajaxSuccess\" : \"ajaxError\",\n\t\t\t\t\t[ jqXHR, s, isSuccess ? success : error ] );\n\t\t\t}\n\n\t\t\t// Complete\n\t\t\tcompleteDeferred.fireWith( callbackContext, [ jqXHR, statusText ] );\n\n\t\t\tif ( fireGlobals ) {\n\t\t\t\tglobalEventContext.trigger( \"ajaxComplete\", [ jqXHR, s ] );\n\n\t\t\t\t// Handle the global AJAX counter\n\t\t\t\tif ( !( --jQuery.active ) ) {\n\t\t\t\t\tjQuery.event.trigger( \"ajaxStop\" );\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\n\t\treturn jqXHR;\n\t},\n\n\tgetJSON: function( url, data, callback ) {\n\t\treturn jQuery.get( url, data, callback, \"json\" );\n\t},\n\n\tgetScript: function( url, callback ) {\n\t\treturn jQuery.get( url, undefined, callback, \"script\" );\n\t}\n} );\n\njQuery.each( [ \"get\", \"post\" ], function( _i, method ) {\n\tjQuery[ method ] = function( url, data, callback, type ) {\n\n\t\t// Shift arguments if data argument was omitted\n\t\tif ( isFunction( data ) ) {\n\t\t\ttype = type || callback;\n\t\t\tcallback = data;\n\t\t\tdata = undefined;\n\t\t}\n\n\t\t// The url can be an options object (which then must have .url)\n\t\treturn jQuery.ajax( jQuery.extend( {\n\t\t\turl: url,\n\t\t\ttype: method,\n\t\t\tdataType: type,\n\t\t\tdata: data,\n\t\t\tsuccess: callback\n\t\t}, jQuery.isPlainObject( url ) && url ) );\n\t};\n} );\n\njQuery.ajaxPrefilter( function( s ) {\n\tvar i;\n\tfor ( i in s.headers ) {\n\t\tif ( i.toLowerCase() === \"content-type\" ) {\n\t\t\ts.contentType = s.headers[ i ] || \"\";\n\t\t}\n\t}\n} );\n\n\njQuery._evalUrl = function( url, options, doc ) {\n\treturn jQuery.ajax( {\n\t\turl: url,\n\n\t\t// Make this explicit, since user can override this through ajaxSetup (trac-11264)\n\t\ttype: \"GET\",\n\t\tdataType: \"script\",\n\t\tcache: true,\n\t\tasync: false,\n\t\tglobal: false,\n\n\t\t// Only evaluate the response if it is successful (gh-4126)\n\t\t// dataFilter is not invoked for failure responses, so using it instead\n\t\t// of the default converter is kludgy but it works.\n\t\tconverters: {\n\t\t\t\"text script\": function() {}\n\t\t},\n\t\tdataFilter: function( response ) {\n\t\t\tjQuery.globalEval( response, options, doc );\n\t\t}\n\t} );\n};\n\n\njQuery.fn.extend( {\n\twrapAll: function( html ) {\n\t\tvar wrap;\n\n\t\tif ( this[ 0 ] ) {\n\t\t\tif ( isFunction( html ) ) {\n\t\t\t\thtml = html.call( this[ 0 ] );\n\t\t\t}\n\n\t\t\t// The elements to wrap the target around\n\t\t\twrap = jQuery( html, this[ 0 ].ownerDocument ).eq( 0 ).clone( true );\n\n\t\t\tif ( this[ 0 ].parentNode ) {\n\t\t\t\twrap.insertBefore( this[ 0 ] );\n\t\t\t}\n\n\t\t\twrap.map( function() {\n\t\t\t\tvar elem = this;\n\n\t\t\t\twhile ( elem.firstElementChild ) {\n\t\t\t\t\telem = elem.firstElementChild;\n\t\t\t\t}\n\n\t\t\t\treturn elem;\n\t\t\t} ).append( this );\n\t\t}\n\n\t\treturn this;\n\t},\n\n\twrapInner: function( html ) {\n\t\tif ( isFunction( html ) ) {\n\t\t\treturn this.each( function( i ) {\n\t\t\t\tjQuery( this ).wrapInner( html.call( this, i ) );\n\t\t\t} );\n\t\t}\n\n\t\treturn this.each( function() {\n\t\t\tvar self = jQuery( this ),\n\t\t\t\tcontents = self.contents();\n\n\t\t\tif ( contents.length ) {\n\t\t\t\tcontents.wrapAll( html );\n\n\t\t\t} else {\n\t\t\t\tself.append( html );\n\t\t\t}\n\t\t} );\n\t},\n\n\twrap: function( html ) {\n\t\tvar htmlIsFunction = isFunction( html );\n\n\t\treturn this.each( function( i ) {\n\t\t\tjQuery( this ).wrapAll( htmlIsFunction ? html.call( this, i ) : html );\n\t\t} );\n\t},\n\n\tunwrap: function( selector ) {\n\t\tthis.parent( selector ).not( \"body\" ).each( function() {\n\t\t\tjQuery( this ).replaceWith( this.childNodes );\n\t\t} );\n\t\treturn this;\n\t}\n} );\n\n\njQuery.expr.pseudos.hidden = function( elem ) {\n\treturn !jQuery.expr.pseudos.visible( elem );\n};\njQuery.expr.pseudos.visible = function( elem ) {\n\treturn !!( elem.offsetWidth || elem.offsetHeight || elem.getClientRects().length );\n};\n\n\n\n\njQuery.ajaxSettings.xhr = function() {\n\ttry {\n\t\treturn new window.XMLHttpRequest();\n\t} catch ( e ) {}\n};\n\nvar xhrSuccessStatus = {\n\n\t\t// File protocol always yields status code 0, assume 200\n\t\t0: 200,\n\n\t\t// Support: IE <=9 only\n\t\t// trac-1450: sometimes IE returns 1223 when it should be 204\n\t\t1223: 204\n\t},\n\txhrSupported = jQuery.ajaxSettings.xhr();\n\nsupport.cors = !!xhrSupported && ( \"withCredentials\" in xhrSupported );\nsupport.ajax = xhrSupported = !!xhrSupported;\n\njQuery.ajaxTransport( function( options ) {\n\tvar callback, errorCallback;\n\n\t// Cross domain only allowed if supported through XMLHttpRequest\n\tif ( support.cors || xhrSupported && !options.crossDomain ) {\n\t\treturn {\n\t\t\tsend: function( headers, complete ) {\n\t\t\t\tvar i,\n\t\t\t\t\txhr = options.xhr();\n\n\t\t\t\txhr.open(\n\t\t\t\t\toptions.type,\n\t\t\t\t\toptions.url,\n\t\t\t\t\toptions.async,\n\t\t\t\t\toptions.username,\n\t\t\t\t\toptions.password\n\t\t\t\t);\n\n\t\t\t\t// Apply custom fields if provided\n\t\t\t\tif ( options.xhrFields ) {\n\t\t\t\t\tfor ( i in options.xhrFields ) {\n\t\t\t\t\t\txhr[ i ] = options.xhrFields[ i ];\n\t\t\t\t\t}\n\t\t\t\t}\n\n\t\t\t\t// Override mime type if needed\n\t\t\t\tif ( options.mimeType && xhr.overrideMimeType ) {\n\t\t\t\t\txhr.overrideMimeType( options.mimeType );\n\t\t\t\t}\n\n\t\t\t\t// X-Requested-With header\n\t\t\t\t// For cross-domain requests, seeing as conditions for a preflight are\n\t\t\t\t// akin to a jigsaw puzzle, we simply never set it to be sure.\n\t\t\t\t// (it can always be set on a per-request basis or even using ajaxSetup)\n\t\t\t\t// For same-domain requests, won't change header if already provided.\n\t\t\t\tif ( !options.crossDomain && !headers[ \"X-Requested-With\" ] ) {\n\t\t\t\t\theaders[ \"X-Requested-With\" ] = \"XMLHttpRequest\";\n\t\t\t\t}\n\n\t\t\t\t// Set headers\n\t\t\t\tfor ( i in headers ) {\n\t\t\t\t\txhr.setRequestHeader( i, headers[ i ] );\n\t\t\t\t}\n\n\t\t\t\t// Callback\n\t\t\t\tcallback = function( type ) {\n\t\t\t\t\treturn function() {\n\t\t\t\t\t\tif ( callback ) {\n\t\t\t\t\t\t\tcallback = errorCallback = xhr.onload =\n\t\t\t\t\t\t\t\txhr.onerror = xhr.onabort = xhr.ontimeout =\n\t\t\t\t\t\t\t\t\txhr.onreadystatechange = null;\n\n\t\t\t\t\t\t\tif ( type === \"abort\" ) {\n\t\t\t\t\t\t\t\txhr.abort();\n\t\t\t\t\t\t\t} else if ( type === \"error\" ) {\n\n\t\t\t\t\t\t\t\t// Support: IE <=9 only\n\t\t\t\t\t\t\t\t// On a manual native abort, IE9 throws\n\t\t\t\t\t\t\t\t// errors on any property access that is not readyState\n\t\t\t\t\t\t\t\tif ( typeof xhr.status !== \"number\" ) {\n\t\t\t\t\t\t\t\t\tcomplete( 0, \"error\" );\n\t\t\t\t\t\t\t\t} else {\n\t\t\t\t\t\t\t\t\tcomplete(\n\n\t\t\t\t\t\t\t\t\t\t// File: protocol always yields status 0; see trac-8605, trac-14207\n\t\t\t\t\t\t\t\t\t\txhr.status,\n\t\t\t\t\t\t\t\t\t\txhr.statusText\n\t\t\t\t\t\t\t\t\t);\n\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t} else {\n\t\t\t\t\t\t\t\tcomplete(\n\t\t\t\t\t\t\t\t\txhrSuccessStatus[ xhr.status ] || xhr.status,\n\t\t\t\t\t\t\t\t\txhr.statusText,\n\n\t\t\t\t\t\t\t\t\t// Support: IE <=9 only\n\t\t\t\t\t\t\t\t\t// IE9 has no XHR2 but throws on binary (trac-11426)\n\t\t\t\t\t\t\t\t\t// For XHR2 non-text, let the caller handle it (gh-2498)\n\t\t\t\t\t\t\t\t\t( xhr.responseType || \"text\" ) !== \"text\" ||\n\t\t\t\t\t\t\t\t\ttypeof xhr.responseText !== \"string\" ?\n\t\t\t\t\t\t\t\t\t\t{ binary: xhr.response } :\n\t\t\t\t\t\t\t\t\t\t{ text: xhr.responseText },\n\t\t\t\t\t\t\t\t\txhr.getAllResponseHeaders()\n\t\t\t\t\t\t\t\t);\n\t\t\t\t\t\t\t}\n\t\t\t\t\t\t}\n\t\t\t\t\t};\n\t\t\t\t};\n\n\t\t\t\t// Listen to events\n\t\t\t\txhr.onload = callback();\n\t\t\t\terrorCallback = xhr.onerror = xhr.ontimeout = callback( \"error\" );\n\n\t\t\t\t// Support: IE 9 only\n\t\t\t\t// Use onreadystatechange to replace onabort\n\t\t\t\t// to handle uncaught aborts\n\t\t\t\tif ( xhr.onabort !== undefined ) {\n\t\t\t\t\txhr.onabort = errorCallback;\n\t\t\t\t} else {\n\t\t\t\t\txhr.onreadystatechange = function() {\n\n\t\t\t\t\t\t// Check readyState before timeout as it changes\n\t\t\t\t\t\tif ( xhr.readyState === 4 ) {\n\n\t\t\t\t\t\t\t// Allow onerror to be called first,\n\t\t\t\t\t\t\t// but that will not handle a native abort\n\t\t\t\t\t\t\t// Also, save errorCallback to a variable\n\t\t\t\t\t\t\t// as xhr.onerror cannot be accessed\n\t\t\t\t\t\t\twindow.setTimeout( function() {\n\t\t\t\t\t\t\t\tif ( callback ) {\n\t\t\t\t\t\t\t\t\terrorCallback();\n\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t} );\n\t\t\t\t\t\t}\n\t\t\t\t\t};\n\t\t\t\t}\n\n\t\t\t\t// Create the abort callback\n\t\t\t\tcallback = callback( \"abort\" );\n\n\t\t\t\ttry {\n\n\t\t\t\t\t// Do send the request (this may raise an exception)\n\t\t\t\t\txhr.send( options.hasContent && options.data || null );\n\t\t\t\t} catch ( e ) {\n\n\t\t\t\t\t// trac-14683: Only rethrow if this hasn't been notified as an error yet\n\t\t\t\t\tif ( callback ) {\n\t\t\t\t\t\tthrow e;\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t},\n\n\t\t\tabort: function() {\n\t\t\t\tif ( callback ) {\n\t\t\t\t\tcallback();\n\t\t\t\t}\n\t\t\t}\n\t\t};\n\t}\n} );\n\n\n\n\n// Prevent auto-execution of scripts when no explicit dataType was provided (See gh-2432)\njQuery.ajaxPrefilter( function( s ) {\n\tif ( s.crossDomain ) {\n\t\ts.contents.script = false;\n\t}\n} );\n\n// Install script dataType\njQuery.ajaxSetup( {\n\taccepts: {\n\t\tscript: \"text/javascript, application/javascript, \" +\n\t\t\t\"application/ecmascript, application/x-ecmascript\"\n\t},\n\tcontents: {\n\t\tscript: /\\b(?:java|ecma)script\\b/\n\t},\n\tconverters: {\n\t\t\"text script\": function( text ) {\n\t\t\tjQuery.globalEval( text );\n\t\t\treturn text;\n\t\t}\n\t}\n} );\n\n// Handle cache's special case and crossDomain\njQuery.ajaxPrefilter( \"script\", function( s ) {\n\tif ( s.cache === undefined ) {\n\t\ts.cache = false;\n\t}\n\tif ( s.crossDomain ) {\n\t\ts.type = \"GET\";\n\t}\n} );\n\n// Bind script tag hack transport\njQuery.ajaxTransport( \"script\", function( s ) {\n\n\t// This transport only deals with cross domain or forced-by-attrs requests\n\tif ( s.crossDomain || s.scriptAttrs ) {\n\t\tvar script, callback;\n\t\treturn {\n\t\t\tsend: function( _, complete ) {\n\t\t\t\tscript = jQuery( \"<script>\" )\n\t\t\t\t\t.attr( s.scriptAttrs || {} )\n\t\t\t\t\t.prop( { charset: s.scriptCharset, src: s.url } )\n\t\t\t\t\t.on( \"load error\", callback = function( evt ) {\n\t\t\t\t\t\tscript.remove();\n\t\t\t\t\t\tcallback = null;\n\t\t\t\t\t\tif ( evt ) {\n\t\t\t\t\t\t\tcomplete( evt.type === \"error\" ? 404 : 200, evt.type );\n\t\t\t\t\t\t}\n\t\t\t\t\t} );\n\n\t\t\t\t// Use native DOM manipulation to avoid our domManip AJAX trickery\n\t\t\t\tdocument.head.appendChild( script[ 0 ] );\n\t\t\t},\n\t\t\tabort: function() {\n\t\t\t\tif ( callback ) {\n\t\t\t\t\tcallback();\n\t\t\t\t}\n\t\t\t}\n\t\t};\n\t}\n} );\n\n\n\n\nvar oldCallbacks = [],\n\trjsonp = /(=)\\?(?=&|$)|\\?\\?/;\n\n// Default jsonp settings\njQuery.ajaxSetup( {\n\tjsonp: \"callback\",\n\tjsonpCallback: function() {\n\t\tvar callback = oldCallbacks.pop() || ( jQuery.expando + \"_\" + ( nonce.guid++ ) );\n\t\tthis[ callback ] = true;\n\t\treturn callback;\n\t}\n} );\n\n// Detect, normalize options and install callbacks for jsonp requests\njQuery.ajaxPrefilter( \"json jsonp\", function( s, originalSettings, jqXHR ) {\n\n\tvar callbackName, overwritten, responseContainer,\n\t\tjsonProp = s.jsonp !== false && ( rjsonp.test( s.url ) ?\n\t\t\t\"url\" :\n\t\t\ttypeof s.data === \"string\" &&\n\t\t\t\t( s.contentType || \"\" )\n\t\t\t\t\t.indexOf( \"application/x-www-form-urlencoded\" ) === 0 &&\n\t\t\t\trjsonp.test( s.data ) && \"data\"\n\t\t);\n\n\t// Handle iff the expected data type is \"jsonp\" or we have a parameter to set\n\tif ( jsonProp || s.dataTypes[ 0 ] === \"jsonp\" ) {\n\n\t\t// Get callback name, remembering preexisting value associated with it\n\t\tcallbackName = s.jsonpCallback = isFunction( s.jsonpCallback ) ?\n\t\t\ts.jsonpCallback() :\n\t\t\ts.jsonpCallback;\n\n\t\t// Insert callback into url or form data\n\t\tif ( jsonProp ) {\n\t\t\ts[ jsonProp ] = s[ jsonProp ].replace( rjsonp, \"$1\" + callbackName );\n\t\t} else if ( s.jsonp !== false ) {\n\t\t\ts.url += ( rquery.test( s.url ) ? \"&\" : \"?\" ) + s.jsonp + \"=\" + callbackName;\n\t\t}\n\n\t\t// Use data converter to retrieve json after script execution\n\t\ts.converters[ \"script json\" ] = function() {\n\t\t\tif ( !responseContainer ) {\n\t\t\t\tjQuery.error( callbackName + \" was not called\" );\n\t\t\t}\n\t\t\treturn responseContainer[ 0 ];\n\t\t};\n\n\t\t// Force json dataType\n\t\ts.dataTypes[ 0 ] = \"json\";\n\n\t\t// Install callback\n\t\toverwritten = window[ callbackName ];\n\t\twindow[ callbackName ] = function() {\n\t\t\tresponseContainer = arguments;\n\t\t};\n\n\t\t// Clean-up function (fires after converters)\n\t\tjqXHR.always( function() {\n\n\t\t\t// If previous value didn't exist - remove it\n\t\t\tif ( overwritten === undefined ) {\n\t\t\t\tjQuery( window ).removeProp( callbackName );\n\n\t\t\t// Otherwise restore preexisting value\n\t\t\t} else {\n\t\t\t\twindow[ callbackName ] = overwritten;\n\t\t\t}\n\n\t\t\t// Save back as free\n\t\t\tif ( s[ callbackName ] ) {\n\n\t\t\t\t// Make sure that re-using the options doesn't screw things around\n\t\t\t\ts.jsonpCallback = originalSettings.jsonpCallback;\n\n\t\t\t\t// Save the callback name for future use\n\t\t\t\toldCallbacks.push( callbackName );\n\t\t\t}\n\n\t\t\t// Call if it was a function and we have a response\n\t\t\tif ( responseContainer && isFunction( overwritten ) ) {\n\t\t\t\toverwritten( responseContainer[ 0 ] );\n\t\t\t}\n\n\t\t\tresponseContainer = overwritten = undefined;\n\t\t} );\n\n\t\t// Delegate to script\n\t\treturn \"script\";\n\t}\n} );\n\n\n\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\nsupport.createHTMLDocument = ( function() {\n\tvar body = document.implementation.createHTMLDocument( \"\" ).body;\n\tbody.innerHTML = \"<form></form><form></form>\";\n\treturn body.childNodes.length === 2;\n} )();\n\n\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\njQuery.parseHTML = function( data, context, keepScripts ) {\n\tif ( typeof data !== \"string\" ) {\n\t\treturn [];\n\t}\n\tif ( typeof context === \"boolean\" ) {\n\t\tkeepScripts = context;\n\t\tcontext = false;\n\t}\n\n\tvar base, parsed, scripts;\n\n\tif ( !context ) {\n\n\t\t// Stop scripts or inline event handlers from being executed immediately\n\t\t// by using document.implementation\n\t\tif ( support.createHTMLDocument ) {\n\t\t\tcontext = document.implementation.createHTMLDocument( \"\" );\n\n\t\t\t// Set the base href for the created document\n\t\t\t// so any parsed elements with URLs\n\t\t\t// are based on the document's URL (gh-2965)\n\t\t\tbase = context.createElement( \"base\" );\n\t\t\tbase.href = document.location.href;\n\t\t\tcontext.head.appendChild( base );\n\t\t} else {\n\t\t\tcontext = document;\n\t\t}\n\t}\n\n\tparsed = rsingleTag.exec( data );\n\tscripts = !keepScripts && [];\n\n\t// Single tag\n\tif ( parsed ) {\n\t\treturn [ context.createElement( parsed[ 1 ] ) ];\n\t}\n\n\tparsed = buildFragment( [ data ], context, scripts );\n\n\tif ( scripts && scripts.length ) {\n\t\tjQuery( scripts ).remove();\n\t}\n\n\treturn jQuery.merge( [], parsed.childNodes );\n};\n\n\n/**\n * Load a url into a page\n */\njQuery.fn.load = function( url, params, callback ) {\n\tvar selector, type, response,\n\t\tself = this,\n\t\toff = url.indexOf( \" \" );\n\n\tif ( off > -1 ) {\n\t\tselector = stripAndCollapse( url.slice( off ) );\n\t\turl = url.slice( 0, off );\n\t}\n\n\t// If it's a function\n\tif ( isFunction( params ) ) {\n\n\t\t// We assume that it's the callback\n\t\tcallback = params;\n\t\tparams = undefined;\n\n\t// Otherwise, build a param string\n\t} else if ( params && typeof params === \"object\" ) {\n\t\ttype = \"POST\";\n\t}\n\n\t// If we have elements to modify, make the request\n\tif ( self.length > 0 ) {\n\t\tjQuery.ajax( {\n\t\t\turl: url,\n\n\t\t\t// If \"type\" variable is undefined, then \"GET\" method will be used.\n\t\t\t// Make value of this field explicit since\n\t\t\t// user can override it through ajaxSetup method\n\t\t\ttype: type || \"GET\",\n\t\t\tdataType: \"html\",\n\t\t\tdata: params\n\t\t} ).done( function( responseText ) {\n\n\t\t\t// Save response for use in complete callback\n\t\t\tresponse = arguments;\n\n\t\t\tself.html( selector ?\n\n\t\t\t\t// If a selector was specified, locate the right elements in a dummy div\n\t\t\t\t// Exclude scripts to avoid IE 'Permission Denied' errors\n\t\t\t\tjQuery( \"<div>\" ).append( jQuery.parseHTML( responseText ) ).find( selector ) :\n\n\t\t\t\t// Otherwise use the full result\n\t\t\t\tresponseText );\n\n\t\t// If the request succeeds, this function gets \"data\", \"status\", \"jqXHR\"\n\t\t// but they are ignored because response was set above.\n\t\t// If it fails, this function gets \"jqXHR\", \"status\", \"error\"\n\t\t} ).always( callback && function( jqXHR, status ) {\n\t\t\tself.each( function() {\n\t\t\t\tcallback.apply( this, response || [ jqXHR.responseText, status, jqXHR ] );\n\t\t\t} );\n\t\t} );\n\t}\n\n\treturn this;\n};\n\n\n\n\njQuery.expr.pseudos.animated = function( elem ) {\n\treturn jQuery.grep( jQuery.timers, function( fn ) {\n\t\treturn elem === fn.elem;\n\t} ).length;\n};\n\n\n\n\njQuery.offset = {\n\tsetOffset: function( elem, options, i ) {\n\t\tvar curPosition, curLeft, curCSSTop, curTop, curOffset, curCSSLeft, calculatePosition,\n\t\t\tposition = jQuery.css( elem, \"position\" ),\n\t\t\tcurElem = jQuery( elem ),\n\t\t\tprops = {};\n\n\t\t// Set position first, in-case top/left are set even on static elem\n\t\tif ( position === \"static\" ) {\n\t\t\telem.style.position = \"relative\";\n\t\t}\n\n\t\tcurOffset = curElem.offset();\n\t\tcurCSSTop = jQuery.css( elem, \"top\" );\n\t\tcurCSSLeft = jQuery.css( elem, \"left\" );\n\t\tcalculatePosition = ( position === \"absolute\" || position === \"fixed\" ) &&\n\t\t\t( curCSSTop + curCSSLeft ).indexOf( \"auto\" ) > -1;\n\n\t\t// Need to be able to calculate position if either\n\t\t// top or left is auto and position is either absolute or fixed\n\t\tif ( calculatePosition ) {\n\t\t\tcurPosition = curElem.position();\n\t\t\tcurTop = curPosition.top;\n\t\t\tcurLeft = curPosition.left;\n\n\t\t} else {\n\t\t\tcurTop = parseFloat( curCSSTop ) || 0;\n\t\t\tcurLeft = parseFloat( curCSSLeft ) || 0;\n\t\t}\n\n\t\tif ( isFunction( options ) ) {\n\n\t\t\t// Use jQuery.extend here to allow modification of coordinates argument (gh-1848)\n\t\t\toptions = options.call( elem, i, jQuery.extend( {}, curOffset ) );\n\t\t}\n\n\t\tif ( options.top != null ) {\n\t\t\tprops.top = ( options.top - curOffset.top ) + curTop;\n\t\t}\n\t\tif ( options.left != null ) {\n\t\t\tprops.left = ( options.left - curOffset.left ) + curLeft;\n\t\t}\n\n\t\tif ( \"using\" in options ) {\n\t\t\toptions.using.call( elem, props );\n\n\t\t} else {\n\t\t\tcurElem.css( props );\n\t\t}\n\t}\n};\n\njQuery.fn.extend( {\n\n\t// offset() relates an element's border box to the document origin\n\toffset: function( options ) {\n\n\t\t// Preserve chaining for setter\n\t\tif ( arguments.length ) {\n\t\t\treturn options === undefined ?\n\t\t\t\tthis :\n\t\t\t\tthis.each( function( i ) {\n\t\t\t\t\tjQuery.offset.setOffset( this, options, i );\n\t\t\t\t} );\n\t\t}\n\n\t\tvar rect, win,\n\t\t\telem = this[ 0 ];\n\n\t\tif ( !elem ) {\n\t\t\treturn;\n\t\t}\n\n\t\t// Return zeros for disconnected and hidden (display: none) elements (gh-2310)\n\t\t// Support: IE <=11 only\n\t\t// Running getBoundingClientRect on a\n\t\t// disconnected node in IE throws an error\n\t\tif ( !elem.getClientRects().length ) {\n\t\t\treturn { top: 0, left: 0 };\n\t\t}\n\n\t\t// Get document-relative position by adding viewport scroll to viewport-relative gBCR\n\t\trect = elem.getBoundingClientRect();\n\t\twin = elem.ownerDocument.defaultView;\n\t\treturn {\n\t\t\ttop: rect.top + win.pageYOffset,\n\t\t\tleft: rect.left + win.pageXOffset\n\t\t};\n\t},\n\n\t// position() relates an element's margin box to its offset parent's padding box\n\t// This corresponds to the behavior of CSS absolute positioning\n\tposition: function() {\n\t\tif ( !this[ 0 ] ) {\n\t\t\treturn;\n\t\t}\n\n\t\tvar offsetParent, offset, doc,\n\t\t\telem = this[ 0 ],\n\t\t\tparentOffset = { top: 0, left: 0 };\n\n\t\t// position:fixed elements are offset from the viewport, which itself always has zero offset\n\t\tif ( jQuery.css( elem, \"position\" ) === \"fixed\" ) {\n\n\t\t\t// Assume position:fixed implies availability of getBoundingClientRect\n\t\t\toffset = elem.getBoundingClientRect();\n\n\t\t} else {\n\t\t\toffset = this.offset();\n\n\t\t\t// Account for the *real* offset parent, which can be the document or its root element\n\t\t\t// when a statically positioned element is identified\n\t\t\tdoc = elem.ownerDocument;\n\t\t\toffsetParent = elem.offsetParent || doc.documentElement;\n\t\t\twhile ( offsetParent &&\n\t\t\t\t( offsetParent === doc.body || offsetParent === doc.documentElement ) &&\n\t\t\t\tjQuery.css( offsetParent, \"position\" ) === \"static\" ) {\n\n\t\t\t\toffsetParent = offsetParent.parentNode;\n\t\t\t}\n\t\t\tif ( offsetParent && offsetParent !== elem && offsetParent.nodeType === 1 ) {\n\n\t\t\t\t// Incorporate borders into its offset, since they are outside its content origin\n\t\t\t\tparentOffset = jQuery( offsetParent ).offset();\n\t\t\t\tparentOffset.top += jQuery.css( offsetParent, \"borderTopWidth\", true );\n\t\t\t\tparentOffset.left += jQuery.css( offsetParent, \"borderLeftWidth\", true );\n\t\t\t}\n\t\t}\n\n\t\t// Subtract parent offsets and element margins\n\t\treturn {\n\t\t\ttop: offset.top - parentOffset.top - jQuery.css( elem, \"marginTop\", true ),\n\t\t\tleft: offset.left - parentOffset.left - jQuery.css( elem, \"marginLeft\", true )\n\t\t};\n\t},\n\n\t// This method will return documentElement in the following cases:\n\t// 1) For the element inside the iframe without offsetParent, this method will return\n\t// documentElement of the parent window\n\t// 2) For the hidden or detached element\n\t// 3) For body or html element, i.e. in case of the html node - it will return itself\n\t//\n\t// but those exceptions were never presented as a real life use-cases\n\t// and might be considered as more preferable results.\n\t//\n\t// This logic, however, is not guaranteed and can change at any point in the future\n\toffsetParent: function() {\n\t\treturn this.map( function() {\n\t\t\tvar offsetParent = this.offsetParent;\n\n\t\t\twhile ( offsetParent && jQuery.css( offsetParent, \"position\" ) === \"static\" ) {\n\t\t\t\toffsetParent = offsetParent.offsetParent;\n\t\t\t}\n\n\t\t\treturn offsetParent || documentElement;\n\t\t} );\n\t}\n} );\n\n// Create scrollLeft and scrollTop methods\njQuery.each( { scrollLeft: \"pageXOffset\", scrollTop: \"pageYOffset\" }, function( method, prop ) {\n\tvar top = \"pageYOffset\" === prop;\n\n\tjQuery.fn[ method ] = function( val ) {\n\t\treturn access( this, function( elem, method, val ) {\n\n\t\t\t// Coalesce documents and windows\n\t\t\tvar win;\n\t\t\tif ( isWindow( elem ) ) {\n\t\t\t\twin = elem;\n\t\t\t} else if ( elem.nodeType === 9 ) {\n\t\t\t\twin = elem.defaultView;\n\t\t\t}\n\n\t\t\tif ( val === undefined ) {\n\t\t\t\treturn win ? win[ prop ] : elem[ method ];\n\t\t\t}\n\n\t\t\tif ( win ) {\n\t\t\t\twin.scrollTo(\n\t\t\t\t\t!top ? val : win.pageXOffset,\n\t\t\t\t\ttop ? val : win.pageYOffset\n\t\t\t\t);\n\n\t\t\t} else {\n\t\t\t\telem[ method ] = val;\n\t\t\t}\n\t\t}, method, val, arguments.length );\n\t};\n} );\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\njQuery.each( [ \"top\", \"left\" ], function( _i, prop ) {\n\tjQuery.cssHooks[ prop ] = addGetHookIf( support.pixelPosition,\n\t\tfunction( elem, computed ) {\n\t\t\tif ( computed ) {\n\t\t\t\tcomputed = curCSS( elem, prop );\n\n\t\t\t\t// If curCSS returns percentage, fallback to offset\n\t\t\t\treturn rnumnonpx.test( computed ) ?\n\t\t\t\t\tjQuery( elem ).position()[ prop ] + \"px\" :\n\t\t\t\t\tcomputed;\n\t\t\t}\n\t\t}\n\t);\n} );\n\n\n// Create innerHeight, innerWidth, height, width, outerHeight and outerWidth methods\njQuery.each( { Height: \"height\", Width: \"width\" }, function( name, type ) {\n\tjQuery.each( {\n\t\tpadding: \"inner\" + name,\n\t\tcontent: type,\n\t\t\"\": \"outer\" + name\n\t}, function( defaultExtra, funcName ) {\n\n\t\t// Margin is only for outerHeight, outerWidth\n\t\tjQuery.fn[ funcName ] = function( margin, value ) {\n\t\t\tvar chainable = arguments.length && ( defaultExtra || typeof margin !== \"boolean\" ),\n\t\t\t\textra = defaultExtra || ( margin === true || value === true ? \"margin\" : \"border\" );\n\n\t\t\treturn access( this, function( elem, type, value ) {\n\t\t\t\tvar doc;\n\n\t\t\t\tif ( isWindow( elem ) ) {\n\n\t\t\t\t\t// $( window ).outerWidth/Height return w/h including scrollbars (gh-1729)\n\t\t\t\t\treturn funcName.indexOf( \"outer\" ) === 0 ?\n\t\t\t\t\t\telem[ \"inner\" + name ] :\n\t\t\t\t\t\telem.document.documentElement[ \"client\" + name ];\n\t\t\t\t}\n\n\t\t\t\t// Get document width or height\n\t\t\t\tif ( elem.nodeType === 9 ) {\n\t\t\t\t\tdoc = elem.documentElement;\n\n\t\t\t\t\t// Either scroll[Width/Height] or offset[Width/Height] or client[Width/Height],\n\t\t\t\t\t// whichever is greatest\n\t\t\t\t\treturn Math.max(\n\t\t\t\t\t\telem.body[ \"scroll\" + name ], doc[ \"scroll\" + name ],\n\t\t\t\t\t\telem.body[ \"offset\" + name ], doc[ \"offset\" + name ],\n\t\t\t\t\t\tdoc[ \"client\" + name ]\n\t\t\t\t\t);\n\t\t\t\t}\n\n\t\t\t\treturn value === undefined ?\n\n\t\t\t\t\t// Get width or height on the element, requesting but not forcing parseFloat\n\t\t\t\t\tjQuery.css( elem, type, extra ) :\n\n\t\t\t\t\t// Set width or height on the element\n\t\t\t\t\tjQuery.style( elem, type, value, extra );\n\t\t\t}, type, chainable ? margin : undefined, chainable );\n\t\t};\n\t} );\n} );\n\n\njQuery.each( [\n\t\"ajaxStart\",\n\t\"ajaxStop\",\n\t\"ajaxComplete\",\n\t\"ajaxError\",\n\t\"ajaxSuccess\",\n\t\"ajaxSend\"\n], function( _i, type ) {\n\tjQuery.fn[ type ] = function( fn ) {\n\t\treturn this.on( type, fn );\n\t};\n} );\n\n\n\n\njQuery.fn.extend( {\n\n\tbind: function( types, data, fn ) {\n\t\treturn this.on( types, null, data, fn );\n\t},\n\tunbind: function( types, fn ) {\n\t\treturn this.off( types, null, fn );\n\t},\n\n\tdelegate: function( selector, types, data, fn ) {\n\t\treturn this.on( types, selector, data, fn );\n\t},\n\tundelegate: function( selector, types, fn ) {\n\n\t\t// ( namespace ) or ( selector, types [, fn] )\n\t\treturn arguments.length === 1 ?\n\t\t\tthis.off( selector, \"**\" ) :\n\t\t\tthis.off( types, selector || \"**\", fn );\n\t},\n\n\thover: function( fnOver, fnOut ) {\n\t\treturn this\n\t\t\t.on( \"mouseenter\", fnOver )\n\t\t\t.on( \"mouseleave\", fnOut || fnOver );\n\t}\n} );\n\njQuery.each(\n\t( \"blur focus focusin focusout resize scroll click dblclick \" +\n\t\"mousedown mouseup mousemove mouseover mouseout mouseenter mouseleave \" +\n\t\"change select submit keydown keypress keyup contextmenu\" ).split( \" \" ),\n\tfunction( _i, name ) {\n\n\t\t// Handle event binding\n\t\tjQuery.fn[ name ] = function( data, fn ) {\n\t\t\treturn arguments.length > 0 ?\n\t\t\t\tthis.on( name, null, data, fn ) :\n\t\t\t\tthis.trigger( name );\n\t\t};\n\t}\n);\n\n\n\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.\nvar rtrim = /^[\\s\\uFEFF\\xA0]+|([^\\s\\uFEFF\\xA0])[\\s\\uFEFF\\xA0]+$/g;\n\n// 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\njQuery.proxy = function( fn, context ) {\n\tvar tmp, args, proxy;\n\n\tif ( typeof context === \"string\" ) {\n\t\ttmp = fn[ context ];\n\t\tcontext = fn;\n\t\tfn = tmp;\n\t}\n\n\t// Quick check to determine if target is callable, in the spec\n\t// this throws a TypeError, but we will just return undefined.\n\tif ( !isFunction( fn ) ) {\n\t\treturn undefined;\n\t}\n\n\t// Simulated bind\n\targs = slice.call( arguments, 2 );\n\tproxy = function() {\n\t\treturn fn.apply( context || this, args.concat( slice.call( arguments ) ) );\n\t};\n\n\t// Set the guid of unique handler to the same of original handler, so it can be removed\n\tproxy.guid = fn.guid = fn.guid || jQuery.guid++;\n\n\treturn proxy;\n};\n\njQuery.holdReady = function( hold ) {\n\tif ( hold ) {\n\t\tjQuery.readyWait++;\n\t} else {\n\t\tjQuery.ready( true );\n\t}\n};\njQuery.isArray = Array.isArray;\njQuery.parseJSON = JSON.parse;\njQuery.nodeName = nodeName;\njQuery.isFunction = isFunction;\njQuery.isWindow = isWindow;\njQuery.camelCase = camelCase;\njQuery.type = toType;\n\njQuery.now = Date.now;\n\njQuery.isNumeric = function( obj ) {\n\n\t// As of jQuery 3.0, isNumeric is limited to\n\t// strings and numbers (primitives or objects)\n\t// that can be coerced to finite numbers (gh-2662)\n\tvar type = jQuery.type( obj );\n\treturn ( type === \"number\" || type === \"string\" ) &&\n\n\t\t// parseFloat NaNs numeric-cast false positives (\"\")\n\t\t// ...but misinterprets leading-number strings, particularly hex literals (\"0x...\")\n\t\t// subtraction forces infinities to NaN\n\t\t!isNaN( obj - parseFloat( obj ) );\n};\n\njQuery.trim = function( text ) {\n\treturn text == null ?\n\t\t\"\" :\n\t\t( text + \"\" ).replace( rtrim, \"$1\" );\n};\n\n\n\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\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\nif ( typeof define === \"function\" && define.amd ) {\n\tdefine( \"jquery\", [], function() {\n\t\treturn jQuery;\n\t} );\n}\n\n\n\n\nvar\n\n\t// Map over jQuery in case of overwrite\n\t_jQuery = window.jQuery,\n\n\t// Map over the $ in case of overwrite\n\t_$ = window.$;\n\njQuery.noConflict = function( deep ) {\n\tif ( window.$ === jQuery ) {\n\t\twindow.$ = _$;\n\t}\n\n\tif ( deep && window.jQuery === jQuery ) {\n\t\twindow.jQuery = _jQuery;\n\t}\n\n\treturn jQuery;\n};\n\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)\nif ( typeof noGlobal === \"undefined\" ) {\n\twindow.jQuery = window.$ = jQuery;\n}\n\n\n\n\nreturn jQuery;\n} );\n","//! moment.js\n//! version : 2.29.4\n//! authors : Tim Wood, Iskren Chernev, Moment.js contributors\n//! license : MIT\n//! momentjs.com\n\n;(function (global, factory) {\n typeof exports === 'object' && typeof module !== 'undefined' ? module.exports = factory() :\n typeof define === 'function' && define.amd ? define(factory) :\n global.moment = factory()\n}(this, (function () { 'use strict';\n\n var hookCallback;\n\n function hooks() {\n return hookCallback.apply(null, arguments);\n }\n\n // This is done to register the method called with moment()\n // without creating circular dependencies.\n function setHookCallback(callback) {\n hookCallback = callback;\n }\n\n function isArray(input) {\n return (\n input instanceof Array ||\n Object.prototype.toString.call(input) === '[object Array]'\n );\n }\n\n function isObject(input) {\n // IE8 will treat undefined and null as object if it wasn't for\n // input != null\n return (\n input != null &&\n Object.prototype.toString.call(input) === '[object Object]'\n );\n }\n\n function hasOwnProp(a, b) {\n return Object.prototype.hasOwnProperty.call(a, b);\n }\n\n function isObjectEmpty(obj) {\n if (Object.getOwnPropertyNames) {\n return Object.getOwnPropertyNames(obj).length === 0;\n } else {\n var k;\n for (k in obj) {\n if (hasOwnProp(obj, k)) {\n return false;\n }\n }\n return true;\n }\n }\n\n function isUndefined(input) {\n return input === void 0;\n }\n\n function isNumber(input) {\n return (\n typeof input === 'number' ||\n Object.prototype.toString.call(input) === '[object Number]'\n );\n }\n\n function isDate(input) {\n return (\n input instanceof Date ||\n Object.prototype.toString.call(input) === '[object Date]'\n );\n }\n\n function map(arr, fn) {\n var res = [],\n i,\n arrLen = arr.length;\n for (i = 0; i < arrLen; ++i) {\n res.push(fn(arr[i], i));\n }\n return res;\n }\n\n function extend(a, b) {\n for (var i in b) {\n if (hasOwnProp(b, i)) {\n a[i] = b[i];\n }\n }\n\n if (hasOwnProp(b, 'toString')) {\n a.toString = b.toString;\n }\n\n if (hasOwnProp(b, 'valueOf')) {\n a.valueOf = b.valueOf;\n }\n\n return a;\n }\n\n function createUTC(input, format, locale, strict) {\n return createLocalOrUTC(input, format, locale, strict, true).utc();\n }\n\n function defaultParsingFlags() {\n // We need to deep clone this object.\n return {\n empty: false,\n unusedTokens: [],\n unusedInput: [],\n overflow: -2,\n charsLeftOver: 0,\n nullInput: false,\n invalidEra: null,\n invalidMonth: null,\n invalidFormat: false,\n userInvalidated: false,\n iso: false,\n parsedDateParts: [],\n era: null,\n meridiem: null,\n rfc2822: false,\n weekdayMismatch: false,\n };\n }\n\n function getParsingFlags(m) {\n if (m._pf == null) {\n m._pf = defaultParsingFlags();\n }\n return m._pf;\n }\n\n var some;\n if (Array.prototype.some) {\n some = Array.prototype.some;\n } else {\n some = function (fun) {\n var t = Object(this),\n len = t.length >>> 0,\n i;\n\n for (i = 0; i < len; i++) {\n if (i in t && fun.call(this, t[i], i, t)) {\n return true;\n }\n }\n\n return false;\n };\n }\n\n function isValid(m) {\n if (m._isValid == null) {\n var flags = getParsingFlags(m),\n parsedParts = some.call(flags.parsedDateParts, function (i) {\n return i != null;\n }),\n isNowValid =\n !isNaN(m._d.getTime()) &&\n flags.overflow < 0 &&\n !flags.empty &&\n !flags.invalidEra &&\n !flags.invalidMonth &&\n !flags.invalidWeekday &&\n !flags.weekdayMismatch &&\n !flags.nullInput &&\n !flags.invalidFormat &&\n !flags.userInvalidated &&\n (!flags.meridiem || (flags.meridiem && parsedParts));\n\n if (m._strict) {\n isNowValid =\n isNowValid &&\n flags.charsLeftOver === 0 &&\n flags.unusedTokens.length === 0 &&\n flags.bigHour === undefined;\n }\n\n if (Object.isFrozen == null || !Object.isFrozen(m)) {\n m._isValid = isNowValid;\n } else {\n return isNowValid;\n }\n }\n return m._isValid;\n }\n\n function createInvalid(flags) {\n var m = createUTC(NaN);\n if (flags != null) {\n extend(getParsingFlags(m), flags);\n } else {\n getParsingFlags(m).userInvalidated = true;\n }\n\n return m;\n }\n\n // Plugins that add properties should also add the key here (null value),\n // so we can properly clone ourselves.\n var momentProperties = (hooks.momentProperties = []),\n updateInProgress = false;\n\n function copyConfig(to, from) {\n var i,\n prop,\n val,\n momentPropertiesLen = momentProperties.length;\n\n if (!isUndefined(from._isAMomentObject)) {\n to._isAMomentObject = from._isAMomentObject;\n }\n if (!isUndefined(from._i)) {\n to._i = from._i;\n }\n if (!isUndefined(from._f)) {\n to._f = from._f;\n }\n if (!isUndefined(from._l)) {\n to._l = from._l;\n }\n if (!isUndefined(from._strict)) {\n to._strict = from._strict;\n }\n if (!isUndefined(from._tzm)) {\n to._tzm = from._tzm;\n }\n if (!isUndefined(from._isUTC)) {\n to._isUTC = from._isUTC;\n }\n if (!isUndefined(from._offset)) {\n to._offset = from._offset;\n }\n if (!isUndefined(from._pf)) {\n to._pf = getParsingFlags(from);\n }\n if (!isUndefined(from._locale)) {\n to._locale = from._locale;\n }\n\n if (momentPropertiesLen > 0) {\n for (i = 0; i < momentPropertiesLen; i++) {\n prop = momentProperties[i];\n val = from[prop];\n if (!isUndefined(val)) {\n to[prop] = val;\n }\n }\n }\n\n return to;\n }\n\n // Moment prototype object\n function Moment(config) {\n copyConfig(this, config);\n this._d = new Date(config._d != null ? config._d.getTime() : NaN);\n if (!this.isValid()) {\n this._d = new Date(NaN);\n }\n // Prevent infinite loop in case updateOffset creates new moment\n // objects.\n if (updateInProgress === false) {\n updateInProgress = true;\n hooks.updateOffset(this);\n updateInProgress = false;\n }\n }\n\n function isMoment(obj) {\n return (\n obj instanceof Moment || (obj != null && obj._isAMomentObject != null)\n );\n }\n\n function warn(msg) {\n if (\n hooks.suppressDeprecationWarnings === false &&\n typeof console !== 'undefined' &&\n console.warn\n ) {\n console.warn('Deprecation warning: ' + msg);\n }\n }\n\n function deprecate(msg, fn) {\n var firstTime = true;\n\n return extend(function () {\n if (hooks.deprecationHandler != null) {\n hooks.deprecationHandler(null, msg);\n }\n if (firstTime) {\n var args = [],\n arg,\n i,\n key,\n argLen = arguments.length;\n for (i = 0; i < argLen; i++) {\n arg = '';\n if (typeof arguments[i] === 'object') {\n arg += '\\n[' + i + '] ';\n for (key in arguments[0]) {\n if (hasOwnProp(arguments[0], key)) {\n arg += key + ': ' + arguments[0][key] + ', ';\n }\n }\n arg = arg.slice(0, -2); // Remove trailing comma and space\n } else {\n arg = arguments[i];\n }\n args.push(arg);\n }\n warn(\n msg +\n '\\nArguments: ' +\n Array.prototype.slice.call(args).join('') +\n '\\n' +\n new Error().stack\n );\n firstTime = false;\n }\n return fn.apply(this, arguments);\n }, fn);\n }\n\n var deprecations = {};\n\n function deprecateSimple(name, msg) {\n if (hooks.deprecationHandler != null) {\n hooks.deprecationHandler(name, msg);\n }\n if (!deprecations[name]) {\n warn(msg);\n deprecations[name] = true;\n }\n }\n\n hooks.suppressDeprecationWarnings = false;\n hooks.deprecationHandler = null;\n\n function isFunction(input) {\n return (\n (typeof Function !== 'undefined' && input instanceof Function) ||\n Object.prototype.toString.call(input) === '[object Function]'\n );\n }\n\n function set(config) {\n var prop, i;\n for (i in config) {\n if (hasOwnProp(config, i)) {\n prop = config[i];\n if (isFunction(prop)) {\n this[i] = prop;\n } else {\n this['_' + i] = prop;\n }\n }\n }\n this._config = config;\n // Lenient ordinal parsing accepts just a number in addition to\n // number + (possibly) stuff coming from _dayOfMonthOrdinalParse.\n // TODO: Remove \"ordinalParse\" fallback in next major release.\n this._dayOfMonthOrdinalParseLenient = new RegExp(\n (this._dayOfMonthOrdinalParse.source || this._ordinalParse.source) +\n '|' +\n /\\d{1,2}/.source\n );\n }\n\n function mergeConfigs(parentConfig, childConfig) {\n var res = extend({}, parentConfig),\n prop;\n for (prop in childConfig) {\n if (hasOwnProp(childConfig, prop)) {\n if (isObject(parentConfig[prop]) && isObject(childConfig[prop])) {\n res[prop] = {};\n extend(res[prop], parentConfig[prop]);\n extend(res[prop], childConfig[prop]);\n } else if (childConfig[prop] != null) {\n res[prop] = childConfig[prop];\n } else {\n delete res[prop];\n }\n }\n }\n for (prop in parentConfig) {\n if (\n hasOwnProp(parentConfig, prop) &&\n !hasOwnProp(childConfig, prop) &&\n isObject(parentConfig[prop])\n ) {\n // make sure changes to properties don't modify parent config\n res[prop] = extend({}, res[prop]);\n }\n }\n return res;\n }\n\n function Locale(config) {\n if (config != null) {\n this.set(config);\n }\n }\n\n var keys;\n\n if (Object.keys) {\n keys = Object.keys;\n } else {\n keys = function (obj) {\n var i,\n res = [];\n for (i in obj) {\n if (hasOwnProp(obj, i)) {\n res.push(i);\n }\n }\n return res;\n };\n }\n\n var defaultCalendar = {\n sameDay: '[Today at] LT',\n nextDay: '[Tomorrow at] LT',\n nextWeek: 'dddd [at] LT',\n lastDay: '[Yesterday at] LT',\n lastWeek: '[Last] dddd [at] LT',\n sameElse: 'L',\n };\n\n function calendar(key, mom, now) {\n var output = this._calendar[key] || this._calendar['sameElse'];\n return isFunction(output) ? output.call(mom, now) : output;\n }\n\n function zeroFill(number, targetLength, forceSign) {\n var absNumber = '' + Math.abs(number),\n zerosToFill = targetLength - absNumber.length,\n sign = number >= 0;\n return (\n (sign ? (forceSign ? '+' : '') : '-') +\n Math.pow(10, Math.max(0, zerosToFill)).toString().substr(1) +\n absNumber\n );\n }\n\n var formattingTokens =\n /(\\[[^\\[]*\\])|(\\\\)?([Hh]mm(ss)?|Mo|MM?M?M?|Do|DDDo|DD?D?D?|ddd?d?|do?|w[o|w]?|W[o|W]?|Qo?|N{1,5}|YYYYYY|YYYYY|YYYY|YY|y{2,4}|yo?|gg(ggg?)?|GG(GGG?)?|e|E|a|A|hh?|HH?|kk?|mm?|ss?|S{1,9}|x|X|zz?|ZZ?|.)/g,\n localFormattingTokens = /(\\[[^\\[]*\\])|(\\\\)?(LTS|LT|LL?L?L?|l{1,4})/g,\n formatFunctions = {},\n formatTokenFunctions = {};\n\n // token: 'M'\n // padded: ['MM', 2]\n // ordinal: 'Mo'\n // callback: function () { this.month() + 1 }\n function addFormatToken(token, padded, ordinal, callback) {\n var func = callback;\n if (typeof callback === 'string') {\n func = function () {\n return this[callback]();\n };\n }\n if (token) {\n formatTokenFunctions[token] = func;\n }\n if (padded) {\n formatTokenFunctions[padded[0]] = function () {\n return zeroFill(func.apply(this, arguments), padded[1], padded[2]);\n };\n }\n if (ordinal) {\n formatTokenFunctions[ordinal] = function () {\n return this.localeData().ordinal(\n func.apply(this, arguments),\n token\n );\n };\n }\n }\n\n function removeFormattingTokens(input) {\n if (input.match(/\\[[\\s\\S]/)) {\n return input.replace(/^\\[|\\]$/g, '');\n }\n return input.replace(/\\\\/g, '');\n }\n\n function makeFormatFunction(format) {\n var array = format.match(formattingTokens),\n i,\n length;\n\n for (i = 0, length = array.length; i < length; i++) {\n if (formatTokenFunctions[array[i]]) {\n array[i] = formatTokenFunctions[array[i]];\n } else {\n array[i] = removeFormattingTokens(array[i]);\n }\n }\n\n return function (mom) {\n var output = '',\n i;\n for (i = 0; i < length; i++) {\n output += isFunction(array[i])\n ? array[i].call(mom, format)\n : array[i];\n }\n return output;\n };\n }\n\n // format date using native date object\n function formatMoment(m, format) {\n if (!m.isValid()) {\n return m.localeData().invalidDate();\n }\n\n format = expandFormat(format, m.localeData());\n formatFunctions[format] =\n formatFunctions[format] || makeFormatFunction(format);\n\n return formatFunctions[format](m);\n }\n\n function expandFormat(format, locale) {\n var i = 5;\n\n function replaceLongDateFormatTokens(input) {\n return locale.longDateFormat(input) || input;\n }\n\n localFormattingTokens.lastIndex = 0;\n while (i >= 0 && localFormattingTokens.test(format)) {\n format = format.replace(\n localFormattingTokens,\n replaceLongDateFormatTokens\n );\n localFormattingTokens.lastIndex = 0;\n i -= 1;\n }\n\n return format;\n }\n\n var defaultLongDateFormat = {\n LTS: 'h:mm:ss A',\n LT: 'h:mm A',\n L: 'MM/DD/YYYY',\n LL: 'MMMM D, YYYY',\n LLL: 'MMMM D, YYYY h:mm A',\n LLLL: 'dddd, MMMM D, YYYY h:mm A',\n };\n\n function longDateFormat(key) {\n var format = this._longDateFormat[key],\n formatUpper = this._longDateFormat[key.toUpperCase()];\n\n if (format || !formatUpper) {\n return format;\n }\n\n this._longDateFormat[key] = formatUpper\n .match(formattingTokens)\n .map(function (tok) {\n if (\n tok === 'MMMM' ||\n tok === 'MM' ||\n tok === 'DD' ||\n tok === 'dddd'\n ) {\n return tok.slice(1);\n }\n return tok;\n })\n .join('');\n\n return this._longDateFormat[key];\n }\n\n var defaultInvalidDate = 'Invalid date';\n\n function invalidDate() {\n return this._invalidDate;\n }\n\n var defaultOrdinal = '%d',\n defaultDayOfMonthOrdinalParse = /\\d{1,2}/;\n\n function ordinal(number) {\n return this._ordinal.replace('%d', number);\n }\n\n var defaultRelativeTime = {\n future: 'in %s',\n past: '%s ago',\n s: 'a few seconds',\n ss: '%d seconds',\n m: 'a minute',\n mm: '%d minutes',\n h: 'an hour',\n hh: '%d hours',\n d: 'a day',\n dd: '%d days',\n w: 'a week',\n ww: '%d weeks',\n M: 'a month',\n MM: '%d months',\n y: 'a year',\n yy: '%d years',\n };\n\n function relativeTime(number, withoutSuffix, string, isFuture) {\n var output = this._relativeTime[string];\n return isFunction(output)\n ? output(number, withoutSuffix, string, isFuture)\n : output.replace(/%d/i, number);\n }\n\n function pastFuture(diff, output) {\n var format = this._relativeTime[diff > 0 ? 'future' : 'past'];\n return isFunction(format) ? format(output) : format.replace(/%s/i, output);\n }\n\n var aliases = {};\n\n function addUnitAlias(unit, shorthand) {\n var lowerCase = unit.toLowerCase();\n aliases[lowerCase] = aliases[lowerCase + 's'] = aliases[shorthand] = unit;\n }\n\n function normalizeUnits(units) {\n return typeof units === 'string'\n ? aliases[units] || aliases[units.toLowerCase()]\n : undefined;\n }\n\n function normalizeObjectUnits(inputObject) {\n var normalizedInput = {},\n normalizedProp,\n prop;\n\n for (prop in inputObject) {\n if (hasOwnProp(inputObject, prop)) {\n normalizedProp = normalizeUnits(prop);\n if (normalizedProp) {\n normalizedInput[normalizedProp] = inputObject[prop];\n }\n }\n }\n\n return normalizedInput;\n }\n\n var priorities = {};\n\n function addUnitPriority(unit, priority) {\n priorities[unit] = priority;\n }\n\n function getPrioritizedUnits(unitsObj) {\n var units = [],\n u;\n for (u in unitsObj) {\n if (hasOwnProp(unitsObj, u)) {\n units.push({ unit: u, priority: priorities[u] });\n }\n }\n units.sort(function (a, b) {\n return a.priority - b.priority;\n });\n return units;\n }\n\n function isLeapYear(year) {\n return (year % 4 === 0 && year % 100 !== 0) || year % 400 === 0;\n }\n\n function absFloor(number) {\n if (number < 0) {\n // -0 -> 0\n return Math.ceil(number) || 0;\n } else {\n return Math.floor(number);\n }\n }\n\n function toInt(argumentForCoercion) {\n var coercedNumber = +argumentForCoercion,\n value = 0;\n\n if (coercedNumber !== 0 && isFinite(coercedNumber)) {\n value = absFloor(coercedNumber);\n }\n\n return value;\n }\n\n function makeGetSet(unit, keepTime) {\n return function (value) {\n if (value != null) {\n set$1(this, unit, value);\n hooks.updateOffset(this, keepTime);\n return this;\n } else {\n return get(this, unit);\n }\n };\n }\n\n function get(mom, unit) {\n return mom.isValid()\n ? mom._d['get' + (mom._isUTC ? 'UTC' : '') + unit]()\n : NaN;\n }\n\n function set$1(mom, unit, value) {\n if (mom.isValid() && !isNaN(value)) {\n if (\n unit === 'FullYear' &&\n isLeapYear(mom.year()) &&\n mom.month() === 1 &&\n mom.date() === 29\n ) {\n value = toInt(value);\n mom._d['set' + (mom._isUTC ? 'UTC' : '') + unit](\n value,\n mom.month(),\n daysInMonth(value, mom.month())\n );\n } else {\n mom._d['set' + (mom._isUTC ? 'UTC' : '') + unit](value);\n }\n }\n }\n\n // MOMENTS\n\n function stringGet(units) {\n units = normalizeUnits(units);\n if (isFunction(this[units])) {\n return this[units]();\n }\n return this;\n }\n\n function stringSet(units, value) {\n if (typeof units === 'object') {\n units = normalizeObjectUnits(units);\n var prioritized = getPrioritizedUnits(units),\n i,\n prioritizedLen = prioritized.length;\n for (i = 0; i < prioritizedLen; i++) {\n this[prioritized[i].unit](units[prioritized[i].unit]);\n }\n } else {\n units = normalizeUnits(units);\n if (isFunction(this[units])) {\n return this[units](value);\n }\n }\n return this;\n }\n\n var match1 = /\\d/, // 0 - 9\n match2 = /\\d\\d/, // 00 - 99\n match3 = /\\d{3}/, // 000 - 999\n match4 = /\\d{4}/, // 0000 - 9999\n match6 = /[+-]?\\d{6}/, // -999999 - 999999\n match1to2 = /\\d\\d?/, // 0 - 99\n match3to4 = /\\d\\d\\d\\d?/, // 999 - 9999\n match5to6 = /\\d\\d\\d\\d\\d\\d?/, // 99999 - 999999\n match1to3 = /\\d{1,3}/, // 0 - 999\n match1to4 = /\\d{1,4}/, // 0 - 9999\n match1to6 = /[+-]?\\d{1,6}/, // -999999 - 999999\n matchUnsigned = /\\d+/, // 0 - inf\n matchSigned = /[+-]?\\d+/, // -inf - inf\n matchOffset = /Z|[+-]\\d\\d:?\\d\\d/gi, // +00:00 -00:00 +0000 -0000 or Z\n matchShortOffset = /Z|[+-]\\d\\d(?::?\\d\\d)?/gi, // +00 -00 +00:00 -00:00 +0000 -0000 or Z\n matchTimestamp = /[+-]?\\d+(\\.\\d{1,3})?/, // 123456789 123456789.123\n // any word (or two) characters or numbers including two/three word month in arabic.\n // includes scottish gaelic two word and hyphenated months\n matchWord =\n /[0-9]{0,256}['a-z\\u00A0-\\u05FF\\u0700-\\uD7FF\\uF900-\\uFDCF\\uFDF0-\\uFF07\\uFF10-\\uFFEF]{1,256}|[\\u0600-\\u06FF\\/]{1,256}(\\s*?[\\u0600-\\u06FF]{1,256}){1,2}/i,\n regexes;\n\n regexes = {};\n\n function addRegexToken(token, regex, strictRegex) {\n regexes[token] = isFunction(regex)\n ? regex\n : function (isStrict, localeData) {\n return isStrict && strictRegex ? strictRegex : regex;\n };\n }\n\n function getParseRegexForToken(token, config) {\n if (!hasOwnProp(regexes, token)) {\n return new RegExp(unescapeFormat(token));\n }\n\n return regexes[token](config._strict, config._locale);\n }\n\n // Code from http://stackoverflow.com/questions/3561493/is-there-a-regexp-escape-function-in-javascript\n function unescapeFormat(s) {\n return regexEscape(\n s\n .replace('\\\\', '')\n .replace(\n /\\\\(\\[)|\\\\(\\])|\\[([^\\]\\[]*)\\]|\\\\(.)/g,\n function (matched, p1, p2, p3, p4) {\n return p1 || p2 || p3 || p4;\n }\n )\n );\n }\n\n function regexEscape(s) {\n return s.replace(/[-\\/\\\\^$*+?.()|[\\]{}]/g, '\\\\$&');\n }\n\n var tokens = {};\n\n function addParseToken(token, callback) {\n var i,\n func = callback,\n tokenLen;\n if (typeof token === 'string') {\n token = [token];\n }\n if (isNumber(callback)) {\n func = function (input, array) {\n array[callback] = toInt(input);\n };\n }\n tokenLen = token.length;\n for (i = 0; i < tokenLen; i++) {\n tokens[token[i]] = func;\n }\n }\n\n function addWeekParseToken(token, callback) {\n addParseToken(token, function (input, array, config, token) {\n config._w = config._w || {};\n callback(input, config._w, config, token);\n });\n }\n\n function addTimeToArrayFromToken(token, input, config) {\n if (input != null && hasOwnProp(tokens, token)) {\n tokens[token](input, config._a, config, token);\n }\n }\n\n var YEAR = 0,\n MONTH = 1,\n DATE = 2,\n HOUR = 3,\n MINUTE = 4,\n SECOND = 5,\n MILLISECOND = 6,\n WEEK = 7,\n WEEKDAY = 8;\n\n function mod(n, x) {\n return ((n % x) + x) % x;\n }\n\n var indexOf;\n\n if (Array.prototype.indexOf) {\n indexOf = Array.prototype.indexOf;\n } else {\n indexOf = function (o) {\n // I know\n var i;\n for (i = 0; i < this.length; ++i) {\n if (this[i] === o) {\n return i;\n }\n }\n return -1;\n };\n }\n\n function daysInMonth(year, month) {\n if (isNaN(year) || isNaN(month)) {\n return NaN;\n }\n var modMonth = mod(month, 12);\n year += (month - modMonth) / 12;\n return modMonth === 1\n ? isLeapYear(year)\n ? 29\n : 28\n : 31 - ((modMonth % 7) % 2);\n }\n\n // FORMATTING\n\n addFormatToken('M', ['MM', 2], 'Mo', function () {\n return this.month() + 1;\n });\n\n addFormatToken('MMM', 0, 0, function (format) {\n return this.localeData().monthsShort(this, format);\n });\n\n addFormatToken('MMMM', 0, 0, function (format) {\n return this.localeData().months(this, format);\n });\n\n // ALIASES\n\n addUnitAlias('month', 'M');\n\n // PRIORITY\n\n addUnitPriority('month', 8);\n\n // PARSING\n\n addRegexToken('M', match1to2);\n addRegexToken('MM', match1to2, match2);\n addRegexToken('MMM', function (isStrict, locale) {\n return locale.monthsShortRegex(isStrict);\n });\n addRegexToken('MMMM', function (isStrict, locale) {\n return locale.monthsRegex(isStrict);\n });\n\n addParseToken(['M', 'MM'], function (input, array) {\n array[MONTH] = toInt(input) - 1;\n });\n\n addParseToken(['MMM', 'MMMM'], function (input, array, config, token) {\n var month = config._locale.monthsParse(input, token, config._strict);\n // if we didn't find a month name, mark the date as invalid.\n if (month != null) {\n array[MONTH] = month;\n } else {\n getParsingFlags(config).invalidMonth = input;\n }\n });\n\n // LOCALES\n\n var defaultLocaleMonths =\n 'January_February_March_April_May_June_July_August_September_October_November_December'.split(\n '_'\n ),\n defaultLocaleMonthsShort =\n 'Jan_Feb_Mar_Apr_May_Jun_Jul_Aug_Sep_Oct_Nov_Dec'.split('_'),\n MONTHS_IN_FORMAT = /D[oD]?(\\[[^\\[\\]]*\\]|\\s)+MMMM?/,\n defaultMonthsShortRegex = matchWord,\n defaultMonthsRegex = matchWord;\n\n function localeMonths(m, format) {\n if (!m) {\n return isArray(this._months)\n ? this._months\n : this._months['standalone'];\n }\n return isArray(this._months)\n ? this._months[m.month()]\n : this._months[\n (this._months.isFormat || MONTHS_IN_FORMAT).test(format)\n ? 'format'\n : 'standalone'\n ][m.month()];\n }\n\n function localeMonthsShort(m, format) {\n if (!m) {\n return isArray(this._monthsShort)\n ? this._monthsShort\n : this._monthsShort['standalone'];\n }\n return isArray(this._monthsShort)\n ? this._monthsShort[m.month()]\n : this._monthsShort[\n MONTHS_IN_FORMAT.test(format) ? 'format' : 'standalone'\n ][m.month()];\n }\n\n function handleStrictParse(monthName, format, strict) {\n var i,\n ii,\n mom,\n llc = monthName.toLocaleLowerCase();\n if (!this._monthsParse) {\n // this is not used\n this._monthsParse = [];\n this._longMonthsParse = [];\n this._shortMonthsParse = [];\n for (i = 0; i < 12; ++i) {\n mom = createUTC([2000, i]);\n this._shortMonthsParse[i] = this.monthsShort(\n mom,\n ''\n ).toLocaleLowerCase();\n this._longMonthsParse[i] = this.months(mom, '').toLocaleLowerCase();\n }\n }\n\n if (strict) {\n if (format === 'MMM') {\n ii = indexOf.call(this._shortMonthsParse, llc);\n return ii !== -1 ? ii : null;\n } else {\n ii = indexOf.call(this._longMonthsParse, llc);\n return ii !== -1 ? ii : null;\n }\n } else {\n if (format === 'MMM') {\n ii = indexOf.call(this._shortMonthsParse, llc);\n if (ii !== -1) {\n return ii;\n }\n ii = indexOf.call(this._longMonthsParse, llc);\n return ii !== -1 ? ii : null;\n } else {\n ii = indexOf.call(this._longMonthsParse, llc);\n if (ii !== -1) {\n return ii;\n }\n ii = indexOf.call(this._shortMonthsParse, llc);\n return ii !== -1 ? ii : null;\n }\n }\n }\n\n function localeMonthsParse(monthName, format, strict) {\n var i, mom, regex;\n\n if (this._monthsParseExact) {\n return handleStrictParse.call(this, monthName, format, strict);\n }\n\n if (!this._monthsParse) {\n this._monthsParse = [];\n this._longMonthsParse = [];\n this._shortMonthsParse = [];\n }\n\n // TODO: add sorting\n // Sorting makes sure if one month (or abbr) is a prefix of another\n // see sorting in computeMonthsParse\n for (i = 0; i < 12; i++) {\n // make the regex if we don't have it already\n mom = createUTC([2000, i]);\n if (strict && !this._longMonthsParse[i]) {\n this._longMonthsParse[i] = new RegExp(\n '^' + this.months(mom, '').replace('.', '') + '$',\n 'i'\n );\n this._shortMonthsParse[i] = new RegExp(\n '^' + this.monthsShort(mom, '').replace('.', '') + '$',\n 'i'\n );\n }\n if (!strict && !this._monthsParse[i]) {\n regex =\n '^' + this.months(mom, '') + '|^' + this.monthsShort(mom, '');\n this._monthsParse[i] = new RegExp(regex.replace('.', ''), 'i');\n }\n // test the regex\n if (\n strict &&\n format === 'MMMM' &&\n this._longMonthsParse[i].test(monthName)\n ) {\n return i;\n } else if (\n strict &&\n format === 'MMM' &&\n this._shortMonthsParse[i].test(monthName)\n ) {\n return i;\n } else if (!strict && this._monthsParse[i].test(monthName)) {\n return i;\n }\n }\n }\n\n // MOMENTS\n\n function setMonth(mom, value) {\n var dayOfMonth;\n\n if (!mom.isValid()) {\n // No op\n return mom;\n }\n\n if (typeof value === 'string') {\n if (/^\\d+$/.test(value)) {\n value = toInt(value);\n } else {\n value = mom.localeData().monthsParse(value);\n // TODO: Another silent failure?\n if (!isNumber(value)) {\n return mom;\n }\n }\n }\n\n dayOfMonth = Math.min(mom.date(), daysInMonth(mom.year(), value));\n mom._d['set' + (mom._isUTC ? 'UTC' : '') + 'Month'](value, dayOfMonth);\n return mom;\n }\n\n function getSetMonth(value) {\n if (value != null) {\n setMonth(this, value);\n hooks.updateOffset(this, true);\n return this;\n } else {\n return get(this, 'Month');\n }\n }\n\n function getDaysInMonth() {\n return daysInMonth(this.year(), this.month());\n }\n\n function monthsShortRegex(isStrict) {\n if (this._monthsParseExact) {\n if (!hasOwnProp(this, '_monthsRegex')) {\n computeMonthsParse.call(this);\n }\n if (isStrict) {\n return this._monthsShortStrictRegex;\n } else {\n return this._monthsShortRegex;\n }\n } else {\n if (!hasOwnProp(this, '_monthsShortRegex')) {\n this._monthsShortRegex = defaultMonthsShortRegex;\n }\n return this._monthsShortStrictRegex && isStrict\n ? this._monthsShortStrictRegex\n : this._monthsShortRegex;\n }\n }\n\n function monthsRegex(isStrict) {\n if (this._monthsParseExact) {\n if (!hasOwnProp(this, '_monthsRegex')) {\n computeMonthsParse.call(this);\n }\n if (isStrict) {\n return this._monthsStrictRegex;\n } else {\n return this._monthsRegex;\n }\n } else {\n if (!hasOwnProp(this, '_monthsRegex')) {\n this._monthsRegex = defaultMonthsRegex;\n }\n return this._monthsStrictRegex && isStrict\n ? this._monthsStrictRegex\n : this._monthsRegex;\n }\n }\n\n function computeMonthsParse() {\n function cmpLenRev(a, b) {\n return b.length - a.length;\n }\n\n var shortPieces = [],\n longPieces = [],\n mixedPieces = [],\n i,\n mom;\n for (i = 0; i < 12; i++) {\n // make the regex if we don't have it already\n mom = createUTC([2000, i]);\n shortPieces.push(this.monthsShort(mom, ''));\n longPieces.push(this.months(mom, ''));\n mixedPieces.push(this.months(mom, ''));\n mixedPieces.push(this.monthsShort(mom, ''));\n }\n // Sorting makes sure if one month (or abbr) is a prefix of another it\n // will match the longer piece.\n shortPieces.sort(cmpLenRev);\n longPieces.sort(cmpLenRev);\n mixedPieces.sort(cmpLenRev);\n for (i = 0; i < 12; i++) {\n shortPieces[i] = regexEscape(shortPieces[i]);\n longPieces[i] = regexEscape(longPieces[i]);\n }\n for (i = 0; i < 24; i++) {\n mixedPieces[i] = regexEscape(mixedPieces[i]);\n }\n\n this._monthsRegex = new RegExp('^(' + mixedPieces.join('|') + ')', 'i');\n this._monthsShortRegex = this._monthsRegex;\n this._monthsStrictRegex = new RegExp(\n '^(' + longPieces.join('|') + ')',\n 'i'\n );\n this._monthsShortStrictRegex = new RegExp(\n '^(' + shortPieces.join('|') + ')',\n 'i'\n );\n }\n\n // FORMATTING\n\n addFormatToken('Y', 0, 0, function () {\n var y = this.year();\n return y <= 9999 ? zeroFill(y, 4) : '+' + y;\n });\n\n addFormatToken(0, ['YY', 2], 0, function () {\n return this.year() % 100;\n });\n\n addFormatToken(0, ['YYYY', 4], 0, 'year');\n addFormatToken(0, ['YYYYY', 5], 0, 'year');\n addFormatToken(0, ['YYYYYY', 6, true], 0, 'year');\n\n // ALIASES\n\n addUnitAlias('year', 'y');\n\n // PRIORITIES\n\n addUnitPriority('year', 1);\n\n // PARSING\n\n addRegexToken('Y', matchSigned);\n addRegexToken('YY', match1to2, match2);\n addRegexToken('YYYY', match1to4, match4);\n addRegexToken('YYYYY', match1to6, match6);\n addRegexToken('YYYYYY', match1to6, match6);\n\n addParseToken(['YYYYY', 'YYYYYY'], YEAR);\n addParseToken('YYYY', function (input, array) {\n array[YEAR] =\n input.length === 2 ? hooks.parseTwoDigitYear(input) : toInt(input);\n });\n addParseToken('YY', function (input, array) {\n array[YEAR] = hooks.parseTwoDigitYear(input);\n });\n addParseToken('Y', function (input, array) {\n array[YEAR] = parseInt(input, 10);\n });\n\n // HELPERS\n\n function daysInYear(year) {\n return isLeapYear(year) ? 366 : 365;\n }\n\n // HOOKS\n\n hooks.parseTwoDigitYear = function (input) {\n return toInt(input) + (toInt(input) > 68 ? 1900 : 2000);\n };\n\n // MOMENTS\n\n var getSetYear = makeGetSet('FullYear', true);\n\n function getIsLeapYear() {\n return isLeapYear(this.year());\n }\n\n function createDate(y, m, d, h, M, s, ms) {\n // can't just apply() to create a date:\n // https://stackoverflow.com/q/181348\n var date;\n // the date constructor remaps years 0-99 to 1900-1999\n if (y < 100 && y >= 0) {\n // preserve leap years using a full 400 year cycle, then reset\n date = new Date(y + 400, m, d, h, M, s, ms);\n if (isFinite(date.getFullYear())) {\n date.setFullYear(y);\n }\n } else {\n date = new Date(y, m, d, h, M, s, ms);\n }\n\n return date;\n }\n\n function createUTCDate(y) {\n var date, args;\n // the Date.UTC function remaps years 0-99 to 1900-1999\n if (y < 100 && y >= 0) {\n args = Array.prototype.slice.call(arguments);\n // preserve leap years using a full 400 year cycle, then reset\n args[0] = y + 400;\n date = new Date(Date.UTC.apply(null, args));\n if (isFinite(date.getUTCFullYear())) {\n date.setUTCFullYear(y);\n }\n } else {\n date = new Date(Date.UTC.apply(null, arguments));\n }\n\n return date;\n }\n\n // start-of-first-week - start-of-year\n function firstWeekOffset(year, dow, doy) {\n var // first-week day -- which january is always in the first week (4 for iso, 1 for other)\n fwd = 7 + dow - doy,\n // first-week day local weekday -- which local weekday is fwd\n fwdlw = (7 + createUTCDate(year, 0, fwd).getUTCDay() - dow) % 7;\n\n return -fwdlw + fwd - 1;\n }\n\n // https://en.wikipedia.org/wiki/ISO_week_date#Calculating_a_date_given_the_year.2C_week_number_and_weekday\n function dayOfYearFromWeeks(year, week, weekday, dow, doy) {\n var localWeekday = (7 + weekday - dow) % 7,\n weekOffset = firstWeekOffset(year, dow, doy),\n dayOfYear = 1 + 7 * (week - 1) + localWeekday + weekOffset,\n resYear,\n resDayOfYear;\n\n if (dayOfYear <= 0) {\n resYear = year - 1;\n resDayOfYear = daysInYear(resYear) + dayOfYear;\n } else if (dayOfYear > daysInYear(year)) {\n resYear = year + 1;\n resDayOfYear = dayOfYear - daysInYear(year);\n } else {\n resYear = year;\n resDayOfYear = dayOfYear;\n }\n\n return {\n year: resYear,\n dayOfYear: resDayOfYear,\n };\n }\n\n function weekOfYear(mom, dow, doy) {\n var weekOffset = firstWeekOffset(mom.year(), dow, doy),\n week = Math.floor((mom.dayOfYear() - weekOffset - 1) / 7) + 1,\n resWeek,\n resYear;\n\n if (week < 1) {\n resYear = mom.year() - 1;\n resWeek = week + weeksInYear(resYear, dow, doy);\n } else if (week > weeksInYear(mom.year(), dow, doy)) {\n resWeek = week - weeksInYear(mom.year(), dow, doy);\n resYear = mom.year() + 1;\n } else {\n resYear = mom.year();\n resWeek = week;\n }\n\n return {\n week: resWeek,\n year: resYear,\n };\n }\n\n function weeksInYear(year, dow, doy) {\n var weekOffset = firstWeekOffset(year, dow, doy),\n weekOffsetNext = firstWeekOffset(year + 1, dow, doy);\n return (daysInYear(year) - weekOffset + weekOffsetNext) / 7;\n }\n\n // FORMATTING\n\n addFormatToken('w', ['ww', 2], 'wo', 'week');\n addFormatToken('W', ['WW', 2], 'Wo', 'isoWeek');\n\n // ALIASES\n\n addUnitAlias('week', 'w');\n addUnitAlias('isoWeek', 'W');\n\n // PRIORITIES\n\n addUnitPriority('week', 5);\n addUnitPriority('isoWeek', 5);\n\n // PARSING\n\n addRegexToken('w', match1to2);\n addRegexToken('ww', match1to2, match2);\n addRegexToken('W', match1to2);\n addRegexToken('WW', match1to2, match2);\n\n addWeekParseToken(\n ['w', 'ww', 'W', 'WW'],\n function (input, week, config, token) {\n week[token.substr(0, 1)] = toInt(input);\n }\n );\n\n // HELPERS\n\n // LOCALES\n\n function localeWeek(mom) {\n return weekOfYear(mom, this._week.dow, this._week.doy).week;\n }\n\n var defaultLocaleWeek = {\n dow: 0, // Sunday is the first day of the week.\n doy: 6, // The week that contains Jan 6th is the first week of the year.\n };\n\n function localeFirstDayOfWeek() {\n return this._week.dow;\n }\n\n function localeFirstDayOfYear() {\n return this._week.doy;\n }\n\n // MOMENTS\n\n function getSetWeek(input) {\n var week = this.localeData().week(this);\n return input == null ? week : this.add((input - week) * 7, 'd');\n }\n\n function getSetISOWeek(input) {\n var week = weekOfYear(this, 1, 4).week;\n return input == null ? week : this.add((input - week) * 7, 'd');\n }\n\n // FORMATTING\n\n addFormatToken('d', 0, 'do', 'day');\n\n addFormatToken('dd', 0, 0, function (format) {\n return this.localeData().weekdaysMin(this, format);\n });\n\n addFormatToken('ddd', 0, 0, function (format) {\n return this.localeData().weekdaysShort(this, format);\n });\n\n addFormatToken('dddd', 0, 0, function (format) {\n return this.localeData().weekdays(this, format);\n });\n\n addFormatToken('e', 0, 0, 'weekday');\n addFormatToken('E', 0, 0, 'isoWeekday');\n\n // ALIASES\n\n addUnitAlias('day', 'd');\n addUnitAlias('weekday', 'e');\n addUnitAlias('isoWeekday', 'E');\n\n // PRIORITY\n addUnitPriority('day', 11);\n addUnitPriority('weekday', 11);\n addUnitPriority('isoWeekday', 11);\n\n // PARSING\n\n addRegexToken('d', match1to2);\n addRegexToken('e', match1to2);\n addRegexToken('E', match1to2);\n addRegexToken('dd', function (isStrict, locale) {\n return locale.weekdaysMinRegex(isStrict);\n });\n addRegexToken('ddd', function (isStrict, locale) {\n return locale.weekdaysShortRegex(isStrict);\n });\n addRegexToken('dddd', function (isStrict, locale) {\n return locale.weekdaysRegex(isStrict);\n });\n\n addWeekParseToken(['dd', 'ddd', 'dddd'], function (input, week, config, token) {\n var weekday = config._locale.weekdaysParse(input, token, config._strict);\n // if we didn't get a weekday name, mark the date as invalid\n if (weekday != null) {\n week.d = weekday;\n } else {\n getParsingFlags(config).invalidWeekday = input;\n }\n });\n\n addWeekParseToken(['d', 'e', 'E'], function (input, week, config, token) {\n week[token] = toInt(input);\n });\n\n // HELPERS\n\n function parseWeekday(input, locale) {\n if (typeof input !== 'string') {\n return input;\n }\n\n if (!isNaN(input)) {\n return parseInt(input, 10);\n }\n\n input = locale.weekdaysParse(input);\n if (typeof input === 'number') {\n return input;\n }\n\n return null;\n }\n\n function parseIsoWeekday(input, locale) {\n if (typeof input === 'string') {\n return locale.weekdaysParse(input) % 7 || 7;\n }\n return isNaN(input) ? null : input;\n }\n\n // LOCALES\n function shiftWeekdays(ws, n) {\n return ws.slice(n, 7).concat(ws.slice(0, n));\n }\n\n var defaultLocaleWeekdays =\n 'Sunday_Monday_Tuesday_Wednesday_Thursday_Friday_Saturday'.split('_'),\n defaultLocaleWeekdaysShort = 'Sun_Mon_Tue_Wed_Thu_Fri_Sat'.split('_'),\n defaultLocaleWeekdaysMin = 'Su_Mo_Tu_We_Th_Fr_Sa'.split('_'),\n defaultWeekdaysRegex = matchWord,\n defaultWeekdaysShortRegex = matchWord,\n defaultWeekdaysMinRegex = matchWord;\n\n function localeWeekdays(m, format) {\n var weekdays = isArray(this._weekdays)\n ? this._weekdays\n : this._weekdays[\n m && m !== true && this._weekdays.isFormat.test(format)\n ? 'format'\n : 'standalone'\n ];\n return m === true\n ? shiftWeekdays(weekdays, this._week.dow)\n : m\n ? weekdays[m.day()]\n : weekdays;\n }\n\n function localeWeekdaysShort(m) {\n return m === true\n ? shiftWeekdays(this._weekdaysShort, this._week.dow)\n : m\n ? this._weekdaysShort[m.day()]\n : this._weekdaysShort;\n }\n\n function localeWeekdaysMin(m) {\n return m === true\n ? shiftWeekdays(this._weekdaysMin, this._week.dow)\n : m\n ? this._weekdaysMin[m.day()]\n : this._weekdaysMin;\n }\n\n function handleStrictParse$1(weekdayName, format, strict) {\n var i,\n ii,\n mom,\n llc = weekdayName.toLocaleLowerCase();\n if (!this._weekdaysParse) {\n this._weekdaysParse = [];\n this._shortWeekdaysParse = [];\n this._minWeekdaysParse = [];\n\n for (i = 0; i < 7; ++i) {\n mom = createUTC([2000, 1]).day(i);\n this._minWeekdaysParse[i] = this.weekdaysMin(\n mom,\n ''\n ).toLocaleLowerCase();\n this._shortWeekdaysParse[i] = this.weekdaysShort(\n mom,\n ''\n ).toLocaleLowerCase();\n this._weekdaysParse[i] = this.weekdays(mom, '').toLocaleLowerCase();\n }\n }\n\n if (strict) {\n if (format === 'dddd') {\n ii = indexOf.call(this._weekdaysParse, llc);\n return ii !== -1 ? ii : null;\n } else if (format === 'ddd') {\n ii = indexOf.call(this._shortWeekdaysParse, llc);\n return ii !== -1 ? ii : null;\n } else {\n ii = indexOf.call(this._minWeekdaysParse, llc);\n return ii !== -1 ? ii : null;\n }\n } else {\n if (format === 'dddd') {\n ii = indexOf.call(this._weekdaysParse, llc);\n if (ii !== -1) {\n return ii;\n }\n ii = indexOf.call(this._shortWeekdaysParse, llc);\n if (ii !== -1) {\n return ii;\n }\n ii = indexOf.call(this._minWeekdaysParse, llc);\n return ii !== -1 ? ii : null;\n } else if (format === 'ddd') {\n ii = indexOf.call(this._shortWeekdaysParse, llc);\n if (ii !== -1) {\n return ii;\n }\n ii = indexOf.call(this._weekdaysParse, llc);\n if (ii !== -1) {\n return ii;\n }\n ii = indexOf.call(this._minWeekdaysParse, llc);\n return ii !== -1 ? ii : null;\n } else {\n ii = indexOf.call(this._minWeekdaysParse, llc);\n if (ii !== -1) {\n return ii;\n }\n ii = indexOf.call(this._weekdaysParse, llc);\n if (ii !== -1) {\n return ii;\n }\n ii = indexOf.call(this._shortWeekdaysParse, llc);\n return ii !== -1 ? ii : null;\n }\n }\n }\n\n function localeWeekdaysParse(weekdayName, format, strict) {\n var i, mom, regex;\n\n if (this._weekdaysParseExact) {\n return handleStrictParse$1.call(this, weekdayName, format, strict);\n }\n\n if (!this._weekdaysParse) {\n this._weekdaysParse = [];\n this._minWeekdaysParse = [];\n this._shortWeekdaysParse = [];\n this._fullWeekdaysParse = [];\n }\n\n for (i = 0; i < 7; i++) {\n // make the regex if we don't have it already\n\n mom = createUTC([2000, 1]).day(i);\n if (strict && !this._fullWeekdaysParse[i]) {\n this._fullWeekdaysParse[i] = new RegExp(\n '^' + this.weekdays(mom, '').replace('.', '\\\\.?') + '$',\n 'i'\n );\n this._shortWeekdaysParse[i] = new RegExp(\n '^' + this.weekdaysShort(mom, '').replace('.', '\\\\.?') + '$',\n 'i'\n );\n this._minWeekdaysParse[i] = new RegExp(\n '^' + this.weekdaysMin(mom, '').replace('.', '\\\\.?') + '$',\n 'i'\n );\n }\n if (!this._weekdaysParse[i]) {\n regex =\n '^' +\n this.weekdays(mom, '') +\n '|^' +\n this.weekdaysShort(mom, '') +\n '|^' +\n this.weekdaysMin(mom, '');\n this._weekdaysParse[i] = new RegExp(regex.replace('.', ''), 'i');\n }\n // test the regex\n if (\n strict &&\n format === 'dddd' &&\n this._fullWeekdaysParse[i].test(weekdayName)\n ) {\n return i;\n } else if (\n strict &&\n format === 'ddd' &&\n this._shortWeekdaysParse[i].test(weekdayName)\n ) {\n return i;\n } else if (\n strict &&\n format === 'dd' &&\n this._minWeekdaysParse[i].test(weekdayName)\n ) {\n return i;\n } else if (!strict && this._weekdaysParse[i].test(weekdayName)) {\n return i;\n }\n }\n }\n\n // MOMENTS\n\n function getSetDayOfWeek(input) {\n if (!this.isValid()) {\n return input != null ? this : NaN;\n }\n var day = this._isUTC ? this._d.getUTCDay() : this._d.getDay();\n if (input != null) {\n input = parseWeekday(input, this.localeData());\n return this.add(input - day, 'd');\n } else {\n return day;\n }\n }\n\n function getSetLocaleDayOfWeek(input) {\n if (!this.isValid()) {\n return input != null ? this : NaN;\n }\n var weekday = (this.day() + 7 - this.localeData()._week.dow) % 7;\n return input == null ? weekday : this.add(input - weekday, 'd');\n }\n\n function getSetISODayOfWeek(input) {\n if (!this.isValid()) {\n return input != null ? this : NaN;\n }\n\n // behaves the same as moment#day except\n // as a getter, returns 7 instead of 0 (1-7 range instead of 0-6)\n // as a setter, sunday should belong to the previous week.\n\n if (input != null) {\n var weekday = parseIsoWeekday(input, this.localeData());\n return this.day(this.day() % 7 ? weekday : weekday - 7);\n } else {\n return this.day() || 7;\n }\n }\n\n function weekdaysRegex(isStrict) {\n if (this._weekdaysParseExact) {\n if (!hasOwnProp(this, '_weekdaysRegex')) {\n computeWeekdaysParse.call(this);\n }\n if (isStrict) {\n return this._weekdaysStrictRegex;\n } else {\n return this._weekdaysRegex;\n }\n } else {\n if (!hasOwnProp(this, '_weekdaysRegex')) {\n this._weekdaysRegex = defaultWeekdaysRegex;\n }\n return this._weekdaysStrictRegex && isStrict\n ? this._weekdaysStrictRegex\n : this._weekdaysRegex;\n }\n }\n\n function weekdaysShortRegex(isStrict) {\n if (this._weekdaysParseExact) {\n if (!hasOwnProp(this, '_weekdaysRegex')) {\n computeWeekdaysParse.call(this);\n }\n if (isStrict) {\n return this._weekdaysShortStrictRegex;\n } else {\n return this._weekdaysShortRegex;\n }\n } else {\n if (!hasOwnProp(this, '_weekdaysShortRegex')) {\n this._weekdaysShortRegex = defaultWeekdaysShortRegex;\n }\n return this._weekdaysShortStrictRegex && isStrict\n ? this._weekdaysShortStrictRegex\n : this._weekdaysShortRegex;\n }\n }\n\n function weekdaysMinRegex(isStrict) {\n if (this._weekdaysParseExact) {\n if (!hasOwnProp(this, '_weekdaysRegex')) {\n computeWeekdaysParse.call(this);\n }\n if (isStrict) {\n return this._weekdaysMinStrictRegex;\n } else {\n return this._weekdaysMinRegex;\n }\n } else {\n if (!hasOwnProp(this, '_weekdaysMinRegex')) {\n this._weekdaysMinRegex = defaultWeekdaysMinRegex;\n }\n return this._weekdaysMinStrictRegex && isStrict\n ? this._weekdaysMinStrictRegex\n : this._weekdaysMinRegex;\n }\n }\n\n function computeWeekdaysParse() {\n function cmpLenRev(a, b) {\n return b.length - a.length;\n }\n\n var minPieces = [],\n shortPieces = [],\n longPieces = [],\n mixedPieces = [],\n i,\n mom,\n minp,\n shortp,\n longp;\n for (i = 0; i < 7; i++) {\n // make the regex if we don't have it already\n mom = createUTC([2000, 1]).day(i);\n minp = regexEscape(this.weekdaysMin(mom, ''));\n shortp = regexEscape(this.weekdaysShort(mom, ''));\n longp = regexEscape(this.weekdays(mom, ''));\n minPieces.push(minp);\n shortPieces.push(shortp);\n longPieces.push(longp);\n mixedPieces.push(minp);\n mixedPieces.push(shortp);\n mixedPieces.push(longp);\n }\n // Sorting makes sure if one weekday (or abbr) is a prefix of another it\n // will match the longer piece.\n minPieces.sort(cmpLenRev);\n shortPieces.sort(cmpLenRev);\n longPieces.sort(cmpLenRev);\n mixedPieces.sort(cmpLenRev);\n\n this._weekdaysRegex = new RegExp('^(' + mixedPieces.join('|') + ')', 'i');\n this._weekdaysShortRegex = this._weekdaysRegex;\n this._weekdaysMinRegex = this._weekdaysRegex;\n\n this._weekdaysStrictRegex = new RegExp(\n '^(' + longPieces.join('|') + ')',\n 'i'\n );\n this._weekdaysShortStrictRegex = new RegExp(\n '^(' + shortPieces.join('|') + ')',\n 'i'\n );\n this._weekdaysMinStrictRegex = new RegExp(\n '^(' + minPieces.join('|') + ')',\n 'i'\n );\n }\n\n // FORMATTING\n\n function hFormat() {\n return this.hours() % 12 || 12;\n }\n\n function kFormat() {\n return this.hours() || 24;\n }\n\n addFormatToken('H', ['HH', 2], 0, 'hour');\n addFormatToken('h', ['hh', 2], 0, hFormat);\n addFormatToken('k', ['kk', 2], 0, kFormat);\n\n addFormatToken('hmm', 0, 0, function () {\n return '' + hFormat.apply(this) + zeroFill(this.minutes(), 2);\n });\n\n addFormatToken('hmmss', 0, 0, function () {\n return (\n '' +\n hFormat.apply(this) +\n zeroFill(this.minutes(), 2) +\n zeroFill(this.seconds(), 2)\n );\n });\n\n addFormatToken('Hmm', 0, 0, function () {\n return '' + this.hours() + zeroFill(this.minutes(), 2);\n });\n\n addFormatToken('Hmmss', 0, 0, function () {\n return (\n '' +\n this.hours() +\n zeroFill(this.minutes(), 2) +\n zeroFill(this.seconds(), 2)\n );\n });\n\n function meridiem(token, lowercase) {\n addFormatToken(token, 0, 0, function () {\n return this.localeData().meridiem(\n this.hours(),\n this.minutes(),\n lowercase\n );\n });\n }\n\n meridiem('a', true);\n meridiem('A', false);\n\n // ALIASES\n\n addUnitAlias('hour', 'h');\n\n // PRIORITY\n addUnitPriority('hour', 13);\n\n // PARSING\n\n function matchMeridiem(isStrict, locale) {\n return locale._meridiemParse;\n }\n\n addRegexToken('a', matchMeridiem);\n addRegexToken('A', matchMeridiem);\n addRegexToken('H', match1to2);\n addRegexToken('h', match1to2);\n addRegexToken('k', match1to2);\n addRegexToken('HH', match1to2, match2);\n addRegexToken('hh', match1to2, match2);\n addRegexToken('kk', match1to2, match2);\n\n addRegexToken('hmm', match3to4);\n addRegexToken('hmmss', match5to6);\n addRegexToken('Hmm', match3to4);\n addRegexToken('Hmmss', match5to6);\n\n addParseToken(['H', 'HH'], HOUR);\n addParseToken(['k', 'kk'], function (input, array, config) {\n var kInput = toInt(input);\n array[HOUR] = kInput === 24 ? 0 : kInput;\n });\n addParseToken(['a', 'A'], function (input, array, config) {\n config._isPm = config._locale.isPM(input);\n config._meridiem = input;\n });\n addParseToken(['h', 'hh'], function (input, array, config) {\n array[HOUR] = toInt(input);\n getParsingFlags(config).bigHour = true;\n });\n addParseToken('hmm', function (input, array, config) {\n var pos = input.length - 2;\n array[HOUR] = toInt(input.substr(0, pos));\n array[MINUTE] = toInt(input.substr(pos));\n getParsingFlags(config).bigHour = true;\n });\n addParseToken('hmmss', function (input, array, config) {\n var pos1 = input.length - 4,\n pos2 = input.length - 2;\n array[HOUR] = toInt(input.substr(0, pos1));\n array[MINUTE] = toInt(input.substr(pos1, 2));\n array[SECOND] = toInt(input.substr(pos2));\n getParsingFlags(config).bigHour = true;\n });\n addParseToken('Hmm', function (input, array, config) {\n var pos = input.length - 2;\n array[HOUR] = toInt(input.substr(0, pos));\n array[MINUTE] = toInt(input.substr(pos));\n });\n addParseToken('Hmmss', function (input, array, config) {\n var pos1 = input.length - 4,\n pos2 = input.length - 2;\n array[HOUR] = toInt(input.substr(0, pos1));\n array[MINUTE] = toInt(input.substr(pos1, 2));\n array[SECOND] = toInt(input.substr(pos2));\n });\n\n // LOCALES\n\n function localeIsPM(input) {\n // IE8 Quirks Mode & IE7 Standards Mode do not allow accessing strings like arrays\n // Using charAt should be more compatible.\n return (input + '').toLowerCase().charAt(0) === 'p';\n }\n\n var defaultLocaleMeridiemParse = /[ap]\\.?m?\\.?/i,\n // Setting the hour should keep the time, because the user explicitly\n // specified which hour they want. So trying to maintain the same hour (in\n // a new timezone) makes sense. Adding/subtracting hours does not follow\n // this rule.\n getSetHour = makeGetSet('Hours', true);\n\n function localeMeridiem(hours, minutes, isLower) {\n if (hours > 11) {\n return isLower ? 'pm' : 'PM';\n } else {\n return isLower ? 'am' : 'AM';\n }\n }\n\n var baseConfig = {\n calendar: defaultCalendar,\n longDateFormat: defaultLongDateFormat,\n invalidDate: defaultInvalidDate,\n ordinal: defaultOrdinal,\n dayOfMonthOrdinalParse: defaultDayOfMonthOrdinalParse,\n relativeTime: defaultRelativeTime,\n\n months: defaultLocaleMonths,\n monthsShort: defaultLocaleMonthsShort,\n\n week: defaultLocaleWeek,\n\n weekdays: defaultLocaleWeekdays,\n weekdaysMin: defaultLocaleWeekdaysMin,\n weekdaysShort: defaultLocaleWeekdaysShort,\n\n meridiemParse: defaultLocaleMeridiemParse,\n };\n\n // internal storage for locale config files\n var locales = {},\n localeFamilies = {},\n globalLocale;\n\n function commonPrefix(arr1, arr2) {\n var i,\n minl = Math.min(arr1.length, arr2.length);\n for (i = 0; i < minl; i += 1) {\n if (arr1[i] !== arr2[i]) {\n return i;\n }\n }\n return minl;\n }\n\n function normalizeLocale(key) {\n return key ? key.toLowerCase().replace('_', '-') : key;\n }\n\n // pick the locale from the array\n // try ['en-au', 'en-gb'] as 'en-au', 'en-gb', 'en', as in move through the list trying each\n // substring from most specific to least, but move to the next array item if it's a more specific variant than the current root\n function chooseLocale(names) {\n var i = 0,\n j,\n next,\n locale,\n split;\n\n while (i < names.length) {\n split = normalizeLocale(names[i]).split('-');\n j = split.length;\n next = normalizeLocale(names[i + 1]);\n next = next ? next.split('-') : null;\n while (j > 0) {\n locale = loadLocale(split.slice(0, j).join('-'));\n if (locale) {\n return locale;\n }\n if (\n next &&\n next.length >= j &&\n commonPrefix(split, next) >= j - 1\n ) {\n //the next array item is better than a shallower substring of this one\n break;\n }\n j--;\n }\n i++;\n }\n return globalLocale;\n }\n\n function isLocaleNameSane(name) {\n // Prevent names that look like filesystem paths, i.e contain '/' or '\\'\n return name.match('^[^/\\\\\\\\]*$') != null;\n }\n\n function loadLocale(name) {\n var oldLocale = null,\n aliasedRequire;\n // TODO: Find a better way to register and load all the locales in Node\n if (\n locales[name] === undefined &&\n typeof module !== 'undefined' &&\n module &&\n module.exports &&\n isLocaleNameSane(name)\n ) {\n try {\n oldLocale = globalLocale._abbr;\n aliasedRequire = require;\n aliasedRequire('./locale/' + name);\n getSetGlobalLocale(oldLocale);\n } catch (e) {\n // mark as not found to avoid repeating expensive file require call causing high CPU\n // when trying to find en-US, en_US, en-us for every format call\n locales[name] = null; // null means not found\n }\n }\n return locales[name];\n }\n\n // This function will load locale and then set the global locale. If\n // no arguments are passed in, it will simply return the current global\n // locale key.\n function getSetGlobalLocale(key, values) {\n var data;\n if (key) {\n if (isUndefined(values)) {\n data = getLocale(key);\n } else {\n data = defineLocale(key, values);\n }\n\n if (data) {\n // moment.duration._locale = moment._locale = data;\n globalLocale = data;\n } else {\n if (typeof console !== 'undefined' && console.warn) {\n //warn user if arguments are passed but the locale could not be set\n console.warn(\n 'Locale ' + key + ' not found. Did you forget to load it?'\n );\n }\n }\n }\n\n return globalLocale._abbr;\n }\n\n function defineLocale(name, config) {\n if (config !== null) {\n var locale,\n parentConfig = baseConfig;\n config.abbr = name;\n if (locales[name] != null) {\n deprecateSimple(\n 'defineLocaleOverride',\n 'use moment.updateLocale(localeName, config) to change ' +\n 'an existing locale. moment.defineLocale(localeName, ' +\n 'config) should only be used for creating a new locale ' +\n 'See http://momentjs.com/guides/#/warnings/define-locale/ for more info.'\n );\n parentConfig = locales[name]._config;\n } else if (config.parentLocale != null) {\n if (locales[config.parentLocale] != null) {\n parentConfig = locales[config.parentLocale]._config;\n } else {\n locale = loadLocale(config.parentLocale);\n if (locale != null) {\n parentConfig = locale._config;\n } else {\n if (!localeFamilies[config.parentLocale]) {\n localeFamilies[config.parentLocale] = [];\n }\n localeFamilies[config.parentLocale].push({\n name: name,\n config: config,\n });\n return null;\n }\n }\n }\n locales[name] = new Locale(mergeConfigs(parentConfig, config));\n\n if (localeFamilies[name]) {\n localeFamilies[name].forEach(function (x) {\n defineLocale(x.name, x.config);\n });\n }\n\n // backwards compat for now: also set the locale\n // make sure we set the locale AFTER all child locales have been\n // created, so we won't end up with the child locale set.\n getSetGlobalLocale(name);\n\n return locales[name];\n } else {\n // useful for testing\n delete locales[name];\n return null;\n }\n }\n\n function updateLocale(name, config) {\n if (config != null) {\n var locale,\n tmpLocale,\n parentConfig = baseConfig;\n\n if (locales[name] != null && locales[name].parentLocale != null) {\n // Update existing child locale in-place to avoid memory-leaks\n locales[name].set(mergeConfigs(locales[name]._config, config));\n } else {\n // MERGE\n tmpLocale = loadLocale(name);\n if (tmpLocale != null) {\n parentConfig = tmpLocale._config;\n }\n config = mergeConfigs(parentConfig, config);\n if (tmpLocale == null) {\n // updateLocale is called for creating a new locale\n // Set abbr so it will have a name (getters return\n // undefined otherwise).\n config.abbr = name;\n }\n locale = new Locale(config);\n locale.parentLocale = locales[name];\n locales[name] = locale;\n }\n\n // backwards compat for now: also set the locale\n getSetGlobalLocale(name);\n } else {\n // pass null for config to unupdate, useful for tests\n if (locales[name] != null) {\n if (locales[name].parentLocale != null) {\n locales[name] = locales[name].parentLocale;\n if (name === getSetGlobalLocale()) {\n getSetGlobalLocale(name);\n }\n } else if (locales[name] != null) {\n delete locales[name];\n }\n }\n }\n return locales[name];\n }\n\n // returns locale data\n function getLocale(key) {\n var locale;\n\n if (key && key._locale && key._locale._abbr) {\n key = key._locale._abbr;\n }\n\n if (!key) {\n return globalLocale;\n }\n\n if (!isArray(key)) {\n //short-circuit everything else\n locale = loadLocale(key);\n if (locale) {\n return locale;\n }\n key = [key];\n }\n\n return chooseLocale(key);\n }\n\n function listLocales() {\n return keys(locales);\n }\n\n function checkOverflow(m) {\n var overflow,\n a = m._a;\n\n if (a && getParsingFlags(m).overflow === -2) {\n overflow =\n a[MONTH] < 0 || a[MONTH] > 11\n ? MONTH\n : a[DATE] < 1 || a[DATE] > daysInMonth(a[YEAR], a[MONTH])\n ? DATE\n : a[HOUR] < 0 ||\n a[HOUR] > 24 ||\n (a[HOUR] === 24 &&\n (a[MINUTE] !== 0 ||\n a[SECOND] !== 0 ||\n a[MILLISECOND] !== 0))\n ? HOUR\n : a[MINUTE] < 0 || a[MINUTE] > 59\n ? MINUTE\n : a[SECOND] < 0 || a[SECOND] > 59\n ? SECOND\n : a[MILLISECOND] < 0 || a[MILLISECOND] > 999\n ? MILLISECOND\n : -1;\n\n if (\n getParsingFlags(m)._overflowDayOfYear &&\n (overflow < YEAR || overflow > DATE)\n ) {\n overflow = DATE;\n }\n if (getParsingFlags(m)._overflowWeeks && overflow === -1) {\n overflow = WEEK;\n }\n if (getParsingFlags(m)._overflowWeekday && overflow === -1) {\n overflow = WEEKDAY;\n }\n\n getParsingFlags(m).overflow = overflow;\n }\n\n return m;\n }\n\n // iso 8601 regex\n // 0000-00-00 0000-W00 or 0000-W00-0 + T + 00 or 00:00 or 00:00:00 or 00:00:00.000 + +00:00 or +0000 or +00)\n var extendedIsoRegex =\n /^\\s*((?:[+-]\\d{6}|\\d{4})-(?:\\d\\d-\\d\\d|W\\d\\d-\\d|W\\d\\d|\\d\\d\\d|\\d\\d))(?:(T| )(\\d\\d(?::\\d\\d(?::\\d\\d(?:[.,]\\d+)?)?)?)([+-]\\d\\d(?::?\\d\\d)?|\\s*Z)?)?$/,\n basicIsoRegex =\n /^\\s*((?:[+-]\\d{6}|\\d{4})(?:\\d\\d\\d\\d|W\\d\\d\\d|W\\d\\d|\\d\\d\\d|\\d\\d|))(?:(T| )(\\d\\d(?:\\d\\d(?:\\d\\d(?:[.,]\\d+)?)?)?)([+-]\\d\\d(?::?\\d\\d)?|\\s*Z)?)?$/,\n tzRegex = /Z|[+-]\\d\\d(?::?\\d\\d)?/,\n isoDates = [\n ['YYYYYY-MM-DD', /[+-]\\d{6}-\\d\\d-\\d\\d/],\n ['YYYY-MM-DD', /\\d{4}-\\d\\d-\\d\\d/],\n ['GGGG-[W]WW-E', /\\d{4}-W\\d\\d-\\d/],\n ['GGGG-[W]WW', /\\d{4}-W\\d\\d/, false],\n ['YYYY-DDD', /\\d{4}-\\d{3}/],\n ['YYYY-MM', /\\d{4}-\\d\\d/, false],\n ['YYYYYYMMDD', /[+-]\\d{10}/],\n ['YYYYMMDD', /\\d{8}/],\n ['GGGG[W]WWE', /\\d{4}W\\d{3}/],\n ['GGGG[W]WW', /\\d{4}W\\d{2}/, false],\n ['YYYYDDD', /\\d{7}/],\n ['YYYYMM', /\\d{6}/, false],\n ['YYYY', /\\d{4}/, false],\n ],\n // iso time formats and regexes\n isoTimes = [\n ['HH:mm:ss.SSSS', /\\d\\d:\\d\\d:\\d\\d\\.\\d+/],\n ['HH:mm:ss,SSSS', /\\d\\d:\\d\\d:\\d\\d,\\d+/],\n ['HH:mm:ss', /\\d\\d:\\d\\d:\\d\\d/],\n ['HH:mm', /\\d\\d:\\d\\d/],\n ['HHmmss.SSSS', /\\d\\d\\d\\d\\d\\d\\.\\d+/],\n ['HHmmss,SSSS', /\\d\\d\\d\\d\\d\\d,\\d+/],\n ['HHmmss', /\\d\\d\\d\\d\\d\\d/],\n ['HHmm', /\\d\\d\\d\\d/],\n ['HH', /\\d\\d/],\n ],\n aspNetJsonRegex = /^\\/?Date\\((-?\\d+)/i,\n // RFC 2822 regex: For details see https://tools.ietf.org/html/rfc2822#section-3.3\n rfc2822 =\n /^(?:(Mon|Tue|Wed|Thu|Fri|Sat|Sun),?\\s)?(\\d{1,2})\\s(Jan|Feb|Mar|Apr|May|Jun|Jul|Aug|Sep|Oct|Nov|Dec)\\s(\\d{2,4})\\s(\\d\\d):(\\d\\d)(?::(\\d\\d))?\\s(?:(UT|GMT|[ECMP][SD]T)|([Zz])|([+-]\\d{4}))$/,\n obsOffsets = {\n UT: 0,\n GMT: 0,\n EDT: -4 * 60,\n EST: -5 * 60,\n CDT: -5 * 60,\n CST: -6 * 60,\n MDT: -6 * 60,\n MST: -7 * 60,\n PDT: -7 * 60,\n PST: -8 * 60,\n };\n\n // date from iso format\n function configFromISO(config) {\n var i,\n l,\n string = config._i,\n match = extendedIsoRegex.exec(string) || basicIsoRegex.exec(string),\n allowTime,\n dateFormat,\n timeFormat,\n tzFormat,\n isoDatesLen = isoDates.length,\n isoTimesLen = isoTimes.length;\n\n if (match) {\n getParsingFlags(config).iso = true;\n for (i = 0, l = isoDatesLen; i < l; i++) {\n if (isoDates[i][1].exec(match[1])) {\n dateFormat = isoDates[i][0];\n allowTime = isoDates[i][2] !== false;\n break;\n }\n }\n if (dateFormat == null) {\n config._isValid = false;\n return;\n }\n if (match[3]) {\n for (i = 0, l = isoTimesLen; i < l; i++) {\n if (isoTimes[i][1].exec(match[3])) {\n // match[2] should be 'T' or space\n timeFormat = (match[2] || ' ') + isoTimes[i][0];\n break;\n }\n }\n if (timeFormat == null) {\n config._isValid = false;\n return;\n }\n }\n if (!allowTime && timeFormat != null) {\n config._isValid = false;\n return;\n }\n if (match[4]) {\n if (tzRegex.exec(match[4])) {\n tzFormat = 'Z';\n } else {\n config._isValid = false;\n return;\n }\n }\n config._f = dateFormat + (timeFormat || '') + (tzFormat || '');\n configFromStringAndFormat(config);\n } else {\n config._isValid = false;\n }\n }\n\n function extractFromRFC2822Strings(\n yearStr,\n monthStr,\n dayStr,\n hourStr,\n minuteStr,\n secondStr\n ) {\n var result = [\n untruncateYear(yearStr),\n defaultLocaleMonthsShort.indexOf(monthStr),\n parseInt(dayStr, 10),\n parseInt(hourStr, 10),\n parseInt(minuteStr, 10),\n ];\n\n if (secondStr) {\n result.push(parseInt(secondStr, 10));\n }\n\n return result;\n }\n\n function untruncateYear(yearStr) {\n var year = parseInt(yearStr, 10);\n if (year <= 49) {\n return 2000 + year;\n } else if (year <= 999) {\n return 1900 + year;\n }\n return year;\n }\n\n function preprocessRFC2822(s) {\n // Remove comments and folding whitespace and replace multiple-spaces with a single space\n return s\n .replace(/\\([^()]*\\)|[\\n\\t]/g, ' ')\n .replace(/(\\s\\s+)/g, ' ')\n .replace(/^\\s\\s*/, '')\n .replace(/\\s\\s*$/, '');\n }\n\n function checkWeekday(weekdayStr, parsedInput, config) {\n if (weekdayStr) {\n // TODO: Replace the vanilla JS Date object with an independent day-of-week check.\n var weekdayProvided = defaultLocaleWeekdaysShort.indexOf(weekdayStr),\n weekdayActual = new Date(\n parsedInput[0],\n parsedInput[1],\n parsedInput[2]\n ).getDay();\n if (weekdayProvided !== weekdayActual) {\n getParsingFlags(config).weekdayMismatch = true;\n config._isValid = false;\n return false;\n }\n }\n return true;\n }\n\n function calculateOffset(obsOffset, militaryOffset, numOffset) {\n if (obsOffset) {\n return obsOffsets[obsOffset];\n } else if (militaryOffset) {\n // the only allowed military tz is Z\n return 0;\n } else {\n var hm = parseInt(numOffset, 10),\n m = hm % 100,\n h = (hm - m) / 100;\n return h * 60 + m;\n }\n }\n\n // date and time from ref 2822 format\n function configFromRFC2822(config) {\n var match = rfc2822.exec(preprocessRFC2822(config._i)),\n parsedArray;\n if (match) {\n parsedArray = extractFromRFC2822Strings(\n match[4],\n match[3],\n match[2],\n match[5],\n match[6],\n match[7]\n );\n if (!checkWeekday(match[1], parsedArray, config)) {\n return;\n }\n\n config._a = parsedArray;\n config._tzm = calculateOffset(match[8], match[9], match[10]);\n\n config._d = createUTCDate.apply(null, config._a);\n config._d.setUTCMinutes(config._d.getUTCMinutes() - config._tzm);\n\n getParsingFlags(config).rfc2822 = true;\n } else {\n config._isValid = false;\n }\n }\n\n // date from 1) ASP.NET, 2) ISO, 3) RFC 2822 formats, or 4) optional fallback if parsing isn't strict\n function configFromString(config) {\n var matched = aspNetJsonRegex.exec(config._i);\n if (matched !== null) {\n config._d = new Date(+matched[1]);\n return;\n }\n\n configFromISO(config);\n if (config._isValid === false) {\n delete config._isValid;\n } else {\n return;\n }\n\n configFromRFC2822(config);\n if (config._isValid === false) {\n delete config._isValid;\n } else {\n return;\n }\n\n if (config._strict) {\n config._isValid = false;\n } else {\n // Final attempt, use Input Fallback\n hooks.createFromInputFallback(config);\n }\n }\n\n hooks.createFromInputFallback = deprecate(\n 'value provided is not in a recognized RFC2822 or ISO format. moment construction falls back to js Date(), ' +\n 'which is not reliable across all browsers and versions. Non RFC2822/ISO date formats are ' +\n 'discouraged. Please refer to http://momentjs.com/guides/#/warnings/js-date/ for more info.',\n function (config) {\n config._d = new Date(config._i + (config._useUTC ? ' UTC' : ''));\n }\n );\n\n // Pick the first defined of two or three arguments.\n function defaults(a, b, c) {\n if (a != null) {\n return a;\n }\n if (b != null) {\n return b;\n }\n return c;\n }\n\n function currentDateArray(config) {\n // hooks is actually the exported moment object\n var nowValue = new Date(hooks.now());\n if (config._useUTC) {\n return [\n nowValue.getUTCFullYear(),\n nowValue.getUTCMonth(),\n nowValue.getUTCDate(),\n ];\n }\n return [nowValue.getFullYear(), nowValue.getMonth(), nowValue.getDate()];\n }\n\n // convert an array to a date.\n // the array should mirror the parameters below\n // note: all values past the year are optional and will default to the lowest possible value.\n // [year, month, day , hour, minute, second, millisecond]\n function configFromArray(config) {\n var i,\n date,\n input = [],\n currentDate,\n expectedWeekday,\n yearToUse;\n\n if (config._d) {\n return;\n }\n\n currentDate = currentDateArray(config);\n\n //compute day of the year from weeks and weekdays\n if (config._w && config._a[DATE] == null && config._a[MONTH] == null) {\n dayOfYearFromWeekInfo(config);\n }\n\n //if the day of the year is set, figure out what it is\n if (config._dayOfYear != null) {\n yearToUse = defaults(config._a[YEAR], currentDate[YEAR]);\n\n if (\n config._dayOfYear > daysInYear(yearToUse) ||\n config._dayOfYear === 0\n ) {\n getParsingFlags(config)._overflowDayOfYear = true;\n }\n\n date = createUTCDate(yearToUse, 0, config._dayOfYear);\n config._a[MONTH] = date.getUTCMonth();\n config._a[DATE] = date.getUTCDate();\n }\n\n // Default to current date.\n // * if no year, month, day of month are given, default to today\n // * if day of month is given, default month and year\n // * if month is given, default only year\n // * if year is given, don't default anything\n for (i = 0; i < 3 && config._a[i] == null; ++i) {\n config._a[i] = input[i] = currentDate[i];\n }\n\n // Zero out whatever was not defaulted, including time\n for (; i < 7; i++) {\n config._a[i] = input[i] =\n config._a[i] == null ? (i === 2 ? 1 : 0) : config._a[i];\n }\n\n // Check for 24:00:00.000\n if (\n config._a[HOUR] === 24 &&\n config._a[MINUTE] === 0 &&\n config._a[SECOND] === 0 &&\n config._a[MILLISECOND] === 0\n ) {\n config._nextDay = true;\n config._a[HOUR] = 0;\n }\n\n config._d = (config._useUTC ? createUTCDate : createDate).apply(\n null,\n input\n );\n expectedWeekday = config._useUTC\n ? config._d.getUTCDay()\n : config._d.getDay();\n\n // Apply timezone offset from input. The actual utcOffset can be changed\n // with parseZone.\n if (config._tzm != null) {\n config._d.setUTCMinutes(config._d.getUTCMinutes() - config._tzm);\n }\n\n if (config._nextDay) {\n config._a[HOUR] = 24;\n }\n\n // check for mismatching day of week\n if (\n config._w &&\n typeof config._w.d !== 'undefined' &&\n config._w.d !== expectedWeekday\n ) {\n getParsingFlags(config).weekdayMismatch = true;\n }\n }\n\n function dayOfYearFromWeekInfo(config) {\n var w, weekYear, week, weekday, dow, doy, temp, weekdayOverflow, curWeek;\n\n w = config._w;\n if (w.GG != null || w.W != null || w.E != null) {\n dow = 1;\n doy = 4;\n\n // TODO: We need to take the current isoWeekYear, but that depends on\n // how we interpret now (local, utc, fixed offset). So create\n // a now version of current config (take local/utc/offset flags, and\n // create now).\n weekYear = defaults(\n w.GG,\n config._a[YEAR],\n weekOfYear(createLocal(), 1, 4).year\n );\n week = defaults(w.W, 1);\n weekday = defaults(w.E, 1);\n if (weekday < 1 || weekday > 7) {\n weekdayOverflow = true;\n }\n } else {\n dow = config._locale._week.dow;\n doy = config._locale._week.doy;\n\n curWeek = weekOfYear(createLocal(), dow, doy);\n\n weekYear = defaults(w.gg, config._a[YEAR], curWeek.year);\n\n // Default to current week.\n week = defaults(w.w, curWeek.week);\n\n if (w.d != null) {\n // weekday -- low day numbers are considered next week\n weekday = w.d;\n if (weekday < 0 || weekday > 6) {\n weekdayOverflow = true;\n }\n } else if (w.e != null) {\n // local weekday -- counting starts from beginning of week\n weekday = w.e + dow;\n if (w.e < 0 || w.e > 6) {\n weekdayOverflow = true;\n }\n } else {\n // default to beginning of week\n weekday = dow;\n }\n }\n if (week < 1 || week > weeksInYear(weekYear, dow, doy)) {\n getParsingFlags(config)._overflowWeeks = true;\n } else if (weekdayOverflow != null) {\n getParsingFlags(config)._overflowWeekday = true;\n } else {\n temp = dayOfYearFromWeeks(weekYear, week, weekday, dow, doy);\n config._a[YEAR] = temp.year;\n config._dayOfYear = temp.dayOfYear;\n }\n }\n\n // constant that refers to the ISO standard\n hooks.ISO_8601 = function () {};\n\n // constant that refers to the RFC 2822 form\n hooks.RFC_2822 = function () {};\n\n // date from string and format string\n function configFromStringAndFormat(config) {\n // TODO: Move this to another part of the creation flow to prevent circular deps\n if (config._f === hooks.ISO_8601) {\n configFromISO(config);\n return;\n }\n if (config._f === hooks.RFC_2822) {\n configFromRFC2822(config);\n return;\n }\n config._a = [];\n getParsingFlags(config).empty = true;\n\n // This array is used to make a Date, either with `new Date` or `Date.UTC`\n var string = '' + config._i,\n i,\n parsedInput,\n tokens,\n token,\n skipped,\n stringLength = string.length,\n totalParsedInputLength = 0,\n era,\n tokenLen;\n\n tokens =\n expandFormat(config._f, config._locale).match(formattingTokens) || [];\n tokenLen = tokens.length;\n for (i = 0; i < tokenLen; i++) {\n token = tokens[i];\n parsedInput = (string.match(getParseRegexForToken(token, config)) ||\n [])[0];\n if (parsedInput) {\n skipped = string.substr(0, string.indexOf(parsedInput));\n if (skipped.length > 0) {\n getParsingFlags(config).unusedInput.push(skipped);\n }\n string = string.slice(\n string.indexOf(parsedInput) + parsedInput.length\n );\n totalParsedInputLength += parsedInput.length;\n }\n // don't parse if it's not a known token\n if (formatTokenFunctions[token]) {\n if (parsedInput) {\n getParsingFlags(config).empty = false;\n } else {\n getParsingFlags(config).unusedTokens.push(token);\n }\n addTimeToArrayFromToken(token, parsedInput, config);\n } else if (config._strict && !parsedInput) {\n getParsingFlags(config).unusedTokens.push(token);\n }\n }\n\n // add remaining unparsed input length to the string\n getParsingFlags(config).charsLeftOver =\n stringLength - totalParsedInputLength;\n if (string.length > 0) {\n getParsingFlags(config).unusedInput.push(string);\n }\n\n // clear _12h flag if hour is <= 12\n if (\n config._a[HOUR] <= 12 &&\n getParsingFlags(config).bigHour === true &&\n config._a[HOUR] > 0\n ) {\n getParsingFlags(config).bigHour = undefined;\n }\n\n getParsingFlags(config).parsedDateParts = config._a.slice(0);\n getParsingFlags(config).meridiem = config._meridiem;\n // handle meridiem\n config._a[HOUR] = meridiemFixWrap(\n config._locale,\n config._a[HOUR],\n config._meridiem\n );\n\n // handle era\n era = getParsingFlags(config).era;\n if (era !== null) {\n config._a[YEAR] = config._locale.erasConvertYear(era, config._a[YEAR]);\n }\n\n configFromArray(config);\n checkOverflow(config);\n }\n\n function meridiemFixWrap(locale, hour, meridiem) {\n var isPm;\n\n if (meridiem == null) {\n // nothing to do\n return hour;\n }\n if (locale.meridiemHour != null) {\n return locale.meridiemHour(hour, meridiem);\n } else if (locale.isPM != null) {\n // Fallback\n isPm = locale.isPM(meridiem);\n if (isPm && hour < 12) {\n hour += 12;\n }\n if (!isPm && hour === 12) {\n hour = 0;\n }\n return hour;\n } else {\n // this is not supposed to happen\n return hour;\n }\n }\n\n // date from string and array of format strings\n function configFromStringAndArray(config) {\n var tempConfig,\n bestMoment,\n scoreToBeat,\n i,\n currentScore,\n validFormatFound,\n bestFormatIsValid = false,\n configfLen = config._f.length;\n\n if (configfLen === 0) {\n getParsingFlags(config).invalidFormat = true;\n config._d = new Date(NaN);\n return;\n }\n\n for (i = 0; i < configfLen; i++) {\n currentScore = 0;\n validFormatFound = false;\n tempConfig = copyConfig({}, config);\n if (config._useUTC != null) {\n tempConfig._useUTC = config._useUTC;\n }\n tempConfig._f = config._f[i];\n configFromStringAndFormat(tempConfig);\n\n if (isValid(tempConfig)) {\n validFormatFound = true;\n }\n\n // if there is any input that was not parsed add a penalty for that format\n currentScore += getParsingFlags(tempConfig).charsLeftOver;\n\n //or tokens\n currentScore += getParsingFlags(tempConfig).unusedTokens.length * 10;\n\n getParsingFlags(tempConfig).score = currentScore;\n\n if (!bestFormatIsValid) {\n if (\n scoreToBeat == null ||\n currentScore < scoreToBeat ||\n validFormatFound\n ) {\n scoreToBeat = currentScore;\n bestMoment = tempConfig;\n if (validFormatFound) {\n bestFormatIsValid = true;\n }\n }\n } else {\n if (currentScore < scoreToBeat) {\n scoreToBeat = currentScore;\n bestMoment = tempConfig;\n }\n }\n }\n\n extend(config, bestMoment || tempConfig);\n }\n\n function configFromObject(config) {\n if (config._d) {\n return;\n }\n\n var i = normalizeObjectUnits(config._i),\n dayOrDate = i.day === undefined ? i.date : i.day;\n config._a = map(\n [i.year, i.month, dayOrDate, i.hour, i.minute, i.second, i.millisecond],\n function (obj) {\n return obj && parseInt(obj, 10);\n }\n );\n\n configFromArray(config);\n }\n\n function createFromConfig(config) {\n var res = new Moment(checkOverflow(prepareConfig(config)));\n if (res._nextDay) {\n // Adding is smart enough around DST\n res.add(1, 'd');\n res._nextDay = undefined;\n }\n\n return res;\n }\n\n function prepareConfig(config) {\n var input = config._i,\n format = config._f;\n\n config._locale = config._locale || getLocale(config._l);\n\n if (input === null || (format === undefined && input === '')) {\n return createInvalid({ nullInput: true });\n }\n\n if (typeof input === 'string') {\n config._i = input = config._locale.preparse(input);\n }\n\n if (isMoment(input)) {\n return new Moment(checkOverflow(input));\n } else if (isDate(input)) {\n config._d = input;\n } else if (isArray(format)) {\n configFromStringAndArray(config);\n } else if (format) {\n configFromStringAndFormat(config);\n } else {\n configFromInput(config);\n }\n\n if (!isValid(config)) {\n config._d = null;\n }\n\n return config;\n }\n\n function configFromInput(config) {\n var input = config._i;\n if (isUndefined(input)) {\n config._d = new Date(hooks.now());\n } else if (isDate(input)) {\n config._d = new Date(input.valueOf());\n } else if (typeof input === 'string') {\n configFromString(config);\n } else if (isArray(input)) {\n config._a = map(input.slice(0), function (obj) {\n return parseInt(obj, 10);\n });\n configFromArray(config);\n } else if (isObject(input)) {\n configFromObject(config);\n } else if (isNumber(input)) {\n // from milliseconds\n config._d = new Date(input);\n } else {\n hooks.createFromInputFallback(config);\n }\n }\n\n function createLocalOrUTC(input, format, locale, strict, isUTC) {\n var c = {};\n\n if (format === true || format === false) {\n strict = format;\n format = undefined;\n }\n\n if (locale === true || locale === false) {\n strict = locale;\n locale = undefined;\n }\n\n if (\n (isObject(input) && isObjectEmpty(input)) ||\n (isArray(input) && input.length === 0)\n ) {\n input = undefined;\n }\n // object construction must be done this way.\n // https://github.com/moment/moment/issues/1423\n c._isAMomentObject = true;\n c._useUTC = c._isUTC = isUTC;\n c._l = locale;\n c._i = input;\n c._f = format;\n c._strict = strict;\n\n return createFromConfig(c);\n }\n\n function createLocal(input, format, locale, strict) {\n return createLocalOrUTC(input, format, locale, strict, false);\n }\n\n var prototypeMin = deprecate(\n 'moment().min is deprecated, use moment.max instead. http://momentjs.com/guides/#/warnings/min-max/',\n function () {\n var other = createLocal.apply(null, arguments);\n if (this.isValid() && other.isValid()) {\n return other < this ? this : other;\n } else {\n return createInvalid();\n }\n }\n ),\n prototypeMax = deprecate(\n 'moment().max is deprecated, use moment.min instead. http://momentjs.com/guides/#/warnings/min-max/',\n function () {\n var other = createLocal.apply(null, arguments);\n if (this.isValid() && other.isValid()) {\n return other > this ? this : other;\n } else {\n return createInvalid();\n }\n }\n );\n\n // Pick a moment m from moments so that m[fn](other) is true for all\n // other. This relies on the function fn to be transitive.\n //\n // moments should either be an array of moment objects or an array, whose\n // first element is an array of moment objects.\n function pickBy(fn, moments) {\n var res, i;\n if (moments.length === 1 && isArray(moments[0])) {\n moments = moments[0];\n }\n if (!moments.length) {\n return createLocal();\n }\n res = moments[0];\n for (i = 1; i < moments.length; ++i) {\n if (!moments[i].isValid() || moments[i][fn](res)) {\n res = moments[i];\n }\n }\n return res;\n }\n\n // TODO: Use [].sort instead?\n function min() {\n var args = [].slice.call(arguments, 0);\n\n return pickBy('isBefore', args);\n }\n\n function max() {\n var args = [].slice.call(arguments, 0);\n\n return pickBy('isAfter', args);\n }\n\n var now = function () {\n return Date.now ? Date.now() : +new Date();\n };\n\n var ordering = [\n 'year',\n 'quarter',\n 'month',\n 'week',\n 'day',\n 'hour',\n 'minute',\n 'second',\n 'millisecond',\n ];\n\n function isDurationValid(m) {\n var key,\n unitHasDecimal = false,\n i,\n orderLen = ordering.length;\n for (key in m) {\n if (\n hasOwnProp(m, key) &&\n !(\n indexOf.call(ordering, key) !== -1 &&\n (m[key] == null || !isNaN(m[key]))\n )\n ) {\n return false;\n }\n }\n\n for (i = 0; i < orderLen; ++i) {\n if (m[ordering[i]]) {\n if (unitHasDecimal) {\n return false; // only allow non-integers for smallest unit\n }\n if (parseFloat(m[ordering[i]]) !== toInt(m[ordering[i]])) {\n unitHasDecimal = true;\n }\n }\n }\n\n return true;\n }\n\n function isValid$1() {\n return this._isValid;\n }\n\n function createInvalid$1() {\n return createDuration(NaN);\n }\n\n function Duration(duration) {\n var normalizedInput = normalizeObjectUnits(duration),\n years = normalizedInput.year || 0,\n quarters = normalizedInput.quarter || 0,\n months = normalizedInput.month || 0,\n weeks = normalizedInput.week || normalizedInput.isoWeek || 0,\n days = normalizedInput.day || 0,\n hours = normalizedInput.hour || 0,\n minutes = normalizedInput.minute || 0,\n seconds = normalizedInput.second || 0,\n milliseconds = normalizedInput.millisecond || 0;\n\n this._isValid = isDurationValid(normalizedInput);\n\n // representation for dateAddRemove\n this._milliseconds =\n +milliseconds +\n seconds * 1e3 + // 1000\n minutes * 6e4 + // 1000 * 60\n hours * 1000 * 60 * 60; //using 1000 * 60 * 60 instead of 36e5 to avoid floating point rounding errors https://github.com/moment/moment/issues/2978\n // Because of dateAddRemove treats 24 hours as different from a\n // day when working around DST, we need to store them separately\n this._days = +days + weeks * 7;\n // It is impossible to translate months into days without knowing\n // which months you are are talking about, so we have to store\n // it separately.\n this._months = +months + quarters * 3 + years * 12;\n\n this._data = {};\n\n this._locale = getLocale();\n\n this._bubble();\n }\n\n function isDuration(obj) {\n return obj instanceof Duration;\n }\n\n function absRound(number) {\n if (number < 0) {\n return Math.round(-1 * number) * -1;\n } else {\n return Math.round(number);\n }\n }\n\n // compare two arrays, return the number of differences\n function compareArrays(array1, array2, dontConvert) {\n var len = Math.min(array1.length, array2.length),\n lengthDiff = Math.abs(array1.length - array2.length),\n diffs = 0,\n i;\n for (i = 0; i < len; i++) {\n if (\n (dontConvert && array1[i] !== array2[i]) ||\n (!dontConvert && toInt(array1[i]) !== toInt(array2[i]))\n ) {\n diffs++;\n }\n }\n return diffs + lengthDiff;\n }\n\n // FORMATTING\n\n function offset(token, separator) {\n addFormatToken(token, 0, 0, function () {\n var offset = this.utcOffset(),\n sign = '+';\n if (offset < 0) {\n offset = -offset;\n sign = '-';\n }\n return (\n sign +\n zeroFill(~~(offset / 60), 2) +\n separator +\n zeroFill(~~offset % 60, 2)\n );\n });\n }\n\n offset('Z', ':');\n offset('ZZ', '');\n\n // PARSING\n\n addRegexToken('Z', matchShortOffset);\n addRegexToken('ZZ', matchShortOffset);\n addParseToken(['Z', 'ZZ'], function (input, array, config) {\n config._useUTC = true;\n config._tzm = offsetFromString(matchShortOffset, input);\n });\n\n // HELPERS\n\n // timezone chunker\n // '+10:00' > ['10', '00']\n // '-1530' > ['-15', '30']\n var chunkOffset = /([\\+\\-]|\\d\\d)/gi;\n\n function offsetFromString(matcher, string) {\n var matches = (string || '').match(matcher),\n chunk,\n parts,\n minutes;\n\n if (matches === null) {\n return null;\n }\n\n chunk = matches[matches.length - 1] || [];\n parts = (chunk + '').match(chunkOffset) || ['-', 0, 0];\n minutes = +(parts[1] * 60) + toInt(parts[2]);\n\n return minutes === 0 ? 0 : parts[0] === '+' ? minutes : -minutes;\n }\n\n // Return a moment from input, that is local/utc/zone equivalent to model.\n function cloneWithOffset(input, model) {\n var res, diff;\n if (model._isUTC) {\n res = model.clone();\n diff =\n (isMoment(input) || isDate(input)\n ? input.valueOf()\n : createLocal(input).valueOf()) - res.valueOf();\n // Use low-level api, because this fn is low-level api.\n res._d.setTime(res._d.valueOf() + diff);\n hooks.updateOffset(res, false);\n return res;\n } else {\n return createLocal(input).local();\n }\n }\n\n function getDateOffset(m) {\n // On Firefox.24 Date#getTimezoneOffset returns a floating point.\n // https://github.com/moment/moment/pull/1871\n return -Math.round(m._d.getTimezoneOffset());\n }\n\n // HOOKS\n\n // This function will be called whenever a moment is mutated.\n // It is intended to keep the offset in sync with the timezone.\n hooks.updateOffset = function () {};\n\n // MOMENTS\n\n // keepLocalTime = true means only change the timezone, without\n // affecting the local hour. So 5:31:26 +0300 --[utcOffset(2, true)]-->\n // 5:31:26 +0200 It is possible that 5:31:26 doesn't exist with offset\n // +0200, so we adjust the time as needed, to be valid.\n //\n // Keeping the time actually adds/subtracts (one hour)\n // from the actual represented time. That is why we call updateOffset\n // a second time. In case it wants us to change the offset again\n // _changeInProgress == true case, then we have to adjust, because\n // there is no such time in the given timezone.\n function getSetOffset(input, keepLocalTime, keepMinutes) {\n var offset = this._offset || 0,\n localAdjust;\n if (!this.isValid()) {\n return input != null ? this : NaN;\n }\n if (input != null) {\n if (typeof input === 'string') {\n input = offsetFromString(matchShortOffset, input);\n if (input === null) {\n return this;\n }\n } else if (Math.abs(input) < 16 && !keepMinutes) {\n input = input * 60;\n }\n if (!this._isUTC && keepLocalTime) {\n localAdjust = getDateOffset(this);\n }\n this._offset = input;\n this._isUTC = true;\n if (localAdjust != null) {\n this.add(localAdjust, 'm');\n }\n if (offset !== input) {\n if (!keepLocalTime || this._changeInProgress) {\n addSubtract(\n this,\n createDuration(input - offset, 'm'),\n 1,\n false\n );\n } else if (!this._changeInProgress) {\n this._changeInProgress = true;\n hooks.updateOffset(this, true);\n this._changeInProgress = null;\n }\n }\n return this;\n } else {\n return this._isUTC ? offset : getDateOffset(this);\n }\n }\n\n function getSetZone(input, keepLocalTime) {\n if (input != null) {\n if (typeof input !== 'string') {\n input = -input;\n }\n\n this.utcOffset(input, keepLocalTime);\n\n return this;\n } else {\n return -this.utcOffset();\n }\n }\n\n function setOffsetToUTC(keepLocalTime) {\n return this.utcOffset(0, keepLocalTime);\n }\n\n function setOffsetToLocal(keepLocalTime) {\n if (this._isUTC) {\n this.utcOffset(0, keepLocalTime);\n this._isUTC = false;\n\n if (keepLocalTime) {\n this.subtract(getDateOffset(this), 'm');\n }\n }\n return this;\n }\n\n function setOffsetToParsedOffset() {\n if (this._tzm != null) {\n this.utcOffset(this._tzm, false, true);\n } else if (typeof this._i === 'string') {\n var tZone = offsetFromString(matchOffset, this._i);\n if (tZone != null) {\n this.utcOffset(tZone);\n } else {\n this.utcOffset(0, true);\n }\n }\n return this;\n }\n\n function hasAlignedHourOffset(input) {\n if (!this.isValid()) {\n return false;\n }\n input = input ? createLocal(input).utcOffset() : 0;\n\n return (this.utcOffset() - input) % 60 === 0;\n }\n\n function isDaylightSavingTime() {\n return (\n this.utcOffset() > this.clone().month(0).utcOffset() ||\n this.utcOffset() > this.clone().month(5).utcOffset()\n );\n }\n\n function isDaylightSavingTimeShifted() {\n if (!isUndefined(this._isDSTShifted)) {\n return this._isDSTShifted;\n }\n\n var c = {},\n other;\n\n copyConfig(c, this);\n c = prepareConfig(c);\n\n if (c._a) {\n other = c._isUTC ? createUTC(c._a) : createLocal(c._a);\n this._isDSTShifted =\n this.isValid() && compareArrays(c._a, other.toArray()) > 0;\n } else {\n this._isDSTShifted = false;\n }\n\n return this._isDSTShifted;\n }\n\n function isLocal() {\n return this.isValid() ? !this._isUTC : false;\n }\n\n function isUtcOffset() {\n return this.isValid() ? this._isUTC : false;\n }\n\n function isUtc() {\n return this.isValid() ? this._isUTC && this._offset === 0 : false;\n }\n\n // ASP.NET json date format regex\n var aspNetRegex = /^(-|\\+)?(?:(\\d*)[. ])?(\\d+):(\\d+)(?::(\\d+)(\\.\\d*)?)?$/,\n // from http://docs.closure-library.googlecode.com/git/closure_goog_date_date.js.source.html\n // somewhat more in line with 4.4.3.2 2004 spec, but allows decimal anywhere\n // and further modified to allow for strings containing both week and day\n isoRegex =\n /^(-|\\+)?P(?:([-+]?[0-9,.]*)Y)?(?:([-+]?[0-9,.]*)M)?(?:([-+]?[0-9,.]*)W)?(?:([-+]?[0-9,.]*)D)?(?:T(?:([-+]?[0-9,.]*)H)?(?:([-+]?[0-9,.]*)M)?(?:([-+]?[0-9,.]*)S)?)?$/;\n\n function createDuration(input, key) {\n var duration = input,\n // matching against regexp is expensive, do it on demand\n match = null,\n sign,\n ret,\n diffRes;\n\n if (isDuration(input)) {\n duration = {\n ms: input._milliseconds,\n d: input._days,\n M: input._months,\n };\n } else if (isNumber(input) || !isNaN(+input)) {\n duration = {};\n if (key) {\n duration[key] = +input;\n } else {\n duration.milliseconds = +input;\n }\n } else if ((match = aspNetRegex.exec(input))) {\n sign = match[1] === '-' ? -1 : 1;\n duration = {\n y: 0,\n d: toInt(match[DATE]) * sign,\n h: toInt(match[HOUR]) * sign,\n m: toInt(match[MINUTE]) * sign,\n s: toInt(match[SECOND]) * sign,\n ms: toInt(absRound(match[MILLISECOND] * 1000)) * sign, // the millisecond decimal point is included in the match\n };\n } else if ((match = isoRegex.exec(input))) {\n sign = match[1] === '-' ? -1 : 1;\n duration = {\n y: parseIso(match[2], sign),\n M: parseIso(match[3], sign),\n w: parseIso(match[4], sign),\n d: parseIso(match[5], sign),\n h: parseIso(match[6], sign),\n m: parseIso(match[7], sign),\n s: parseIso(match[8], sign),\n };\n } else if (duration == null) {\n // checks for null or undefined\n duration = {};\n } else if (\n typeof duration === 'object' &&\n ('from' in duration || 'to' in duration)\n ) {\n diffRes = momentsDifference(\n createLocal(duration.from),\n createLocal(duration.to)\n );\n\n duration = {};\n duration.ms = diffRes.milliseconds;\n duration.M = diffRes.months;\n }\n\n ret = new Duration(duration);\n\n if (isDuration(input) && hasOwnProp(input, '_locale')) {\n ret._locale = input._locale;\n }\n\n if (isDuration(input) && hasOwnProp(input, '_isValid')) {\n ret._isValid = input._isValid;\n }\n\n return ret;\n }\n\n createDuration.fn = Duration.prototype;\n createDuration.invalid = createInvalid$1;\n\n function parseIso(inp, sign) {\n // We'd normally use ~~inp for this, but unfortunately it also\n // converts floats to ints.\n // inp may be undefined, so careful calling replace on it.\n var res = inp && parseFloat(inp.replace(',', '.'));\n // apply sign while we're at it\n return (isNaN(res) ? 0 : res) * sign;\n }\n\n function positiveMomentsDifference(base, other) {\n var res = {};\n\n res.months =\n other.month() - base.month() + (other.year() - base.year()) * 12;\n if (base.clone().add(res.months, 'M').isAfter(other)) {\n --res.months;\n }\n\n res.milliseconds = +other - +base.clone().add(res.months, 'M');\n\n return res;\n }\n\n function momentsDifference(base, other) {\n var res;\n if (!(base.isValid() && other.isValid())) {\n return { milliseconds: 0, months: 0 };\n }\n\n other = cloneWithOffset(other, base);\n if (base.isBefore(other)) {\n res = positiveMomentsDifference(base, other);\n } else {\n res = positiveMomentsDifference(other, base);\n res.milliseconds = -res.milliseconds;\n res.months = -res.months;\n }\n\n return res;\n }\n\n // TODO: remove 'name' arg after deprecation is removed\n function createAdder(direction, name) {\n return function (val, period) {\n var dur, tmp;\n //invert the arguments, but complain about it\n if (period !== null && !isNaN(+period)) {\n deprecateSimple(\n name,\n 'moment().' +\n name +\n '(period, number) is deprecated. Please use moment().' +\n name +\n '(number, period). ' +\n 'See http://momentjs.com/guides/#/warnings/add-inverted-param/ for more info.'\n );\n tmp = val;\n val = period;\n period = tmp;\n }\n\n dur = createDuration(val, period);\n addSubtract(this, dur, direction);\n return this;\n };\n }\n\n function addSubtract(mom, duration, isAdding, updateOffset) {\n var milliseconds = duration._milliseconds,\n days = absRound(duration._days),\n months = absRound(duration._months);\n\n if (!mom.isValid()) {\n // No op\n return;\n }\n\n updateOffset = updateOffset == null ? true : updateOffset;\n\n if (months) {\n setMonth(mom, get(mom, 'Month') + months * isAdding);\n }\n if (days) {\n set$1(mom, 'Date', get(mom, 'Date') + days * isAdding);\n }\n if (milliseconds) {\n mom._d.setTime(mom._d.valueOf() + milliseconds * isAdding);\n }\n if (updateOffset) {\n hooks.updateOffset(mom, days || months);\n }\n }\n\n var add = createAdder(1, 'add'),\n subtract = createAdder(-1, 'subtract');\n\n function isString(input) {\n return typeof input === 'string' || input instanceof String;\n }\n\n // type MomentInput = Moment | Date | string | number | (number | string)[] | MomentInputObject | void; // null | undefined\n function isMomentInput(input) {\n return (\n isMoment(input) ||\n isDate(input) ||\n isString(input) ||\n isNumber(input) ||\n isNumberOrStringArray(input) ||\n isMomentInputObject(input) ||\n input === null ||\n input === undefined\n );\n }\n\n function isMomentInputObject(input) {\n var objectTest = isObject(input) && !isObjectEmpty(input),\n propertyTest = false,\n properties = [\n 'years',\n 'year',\n 'y',\n 'months',\n 'month',\n 'M',\n 'days',\n 'day',\n 'd',\n 'dates',\n 'date',\n 'D',\n 'hours',\n 'hour',\n 'h',\n 'minutes',\n 'minute',\n 'm',\n 'seconds',\n 'second',\n 's',\n 'milliseconds',\n 'millisecond',\n 'ms',\n ],\n i,\n property,\n propertyLen = properties.length;\n\n for (i = 0; i < propertyLen; i += 1) {\n property = properties[i];\n propertyTest = propertyTest || hasOwnProp(input, property);\n }\n\n return objectTest && propertyTest;\n }\n\n function isNumberOrStringArray(input) {\n var arrayTest = isArray(input),\n dataTypeTest = false;\n if (arrayTest) {\n dataTypeTest =\n input.filter(function (item) {\n return !isNumber(item) && isString(input);\n }).length === 0;\n }\n return arrayTest && dataTypeTest;\n }\n\n function isCalendarSpec(input) {\n var objectTest = isObject(input) && !isObjectEmpty(input),\n propertyTest = false,\n properties = [\n 'sameDay',\n 'nextDay',\n 'lastDay',\n 'nextWeek',\n 'lastWeek',\n 'sameElse',\n ],\n i,\n property;\n\n for (i = 0; i < properties.length; i += 1) {\n property = properties[i];\n propertyTest = propertyTest || hasOwnProp(input, property);\n }\n\n return objectTest && propertyTest;\n }\n\n function getCalendarFormat(myMoment, now) {\n var diff = myMoment.diff(now, 'days', true);\n return diff < -6\n ? 'sameElse'\n : diff < -1\n ? 'lastWeek'\n : diff < 0\n ? 'lastDay'\n : diff < 1\n ? 'sameDay'\n : diff < 2\n ? 'nextDay'\n : diff < 7\n ? 'nextWeek'\n : 'sameElse';\n }\n\n function calendar$1(time, formats) {\n // Support for single parameter, formats only overload to the calendar function\n if (arguments.length === 1) {\n if (!arguments[0]) {\n time = undefined;\n formats = undefined;\n } else if (isMomentInput(arguments[0])) {\n time = arguments[0];\n formats = undefined;\n } else if (isCalendarSpec(arguments[0])) {\n formats = arguments[0];\n time = undefined;\n }\n }\n // We want to compare the start of today, vs this.\n // Getting start-of-today depends on whether we're local/utc/offset or not.\n var now = time || createLocal(),\n sod = cloneWithOffset(now, this).startOf('day'),\n format = hooks.calendarFormat(this, sod) || 'sameElse',\n output =\n formats &&\n (isFunction(formats[format])\n ? formats[format].call(this, now)\n : formats[format]);\n\n return this.format(\n output || this.localeData().calendar(format, this, createLocal(now))\n );\n }\n\n function clone() {\n return new Moment(this);\n }\n\n function isAfter(input, units) {\n var localInput = isMoment(input) ? input : createLocal(input);\n if (!(this.isValid() && localInput.isValid())) {\n return false;\n }\n units = normalizeUnits(units) || 'millisecond';\n if (units === 'millisecond') {\n return this.valueOf() > localInput.valueOf();\n } else {\n return localInput.valueOf() < this.clone().startOf(units).valueOf();\n }\n }\n\n function isBefore(input, units) {\n var localInput = isMoment(input) ? input : createLocal(input);\n if (!(this.isValid() && localInput.isValid())) {\n return false;\n }\n units = normalizeUnits(units) || 'millisecond';\n if (units === 'millisecond') {\n return this.valueOf() < localInput.valueOf();\n } else {\n return this.clone().endOf(units).valueOf() < localInput.valueOf();\n }\n }\n\n function isBetween(from, to, units, inclusivity) {\n var localFrom = isMoment(from) ? from : createLocal(from),\n localTo = isMoment(to) ? to : createLocal(to);\n if (!(this.isValid() && localFrom.isValid() && localTo.isValid())) {\n return false;\n }\n inclusivity = inclusivity || '()';\n return (\n (inclusivity[0] === '('\n ? this.isAfter(localFrom, units)\n : !this.isBefore(localFrom, units)) &&\n (inclusivity[1] === ')'\n ? this.isBefore(localTo, units)\n : !this.isAfter(localTo, units))\n );\n }\n\n function isSame(input, units) {\n var localInput = isMoment(input) ? input : createLocal(input),\n inputMs;\n if (!(this.isValid() && localInput.isValid())) {\n return false;\n }\n units = normalizeUnits(units) || 'millisecond';\n if (units === 'millisecond') {\n return this.valueOf() === localInput.valueOf();\n } else {\n inputMs = localInput.valueOf();\n return (\n this.clone().startOf(units).valueOf() <= inputMs &&\n inputMs <= this.clone().endOf(units).valueOf()\n );\n }\n }\n\n function isSameOrAfter(input, units) {\n return this.isSame(input, units) || this.isAfter(input, units);\n }\n\n function isSameOrBefore(input, units) {\n return this.isSame(input, units) || this.isBefore(input, units);\n }\n\n function diff(input, units, asFloat) {\n var that, zoneDelta, output;\n\n if (!this.isValid()) {\n return NaN;\n }\n\n that = cloneWithOffset(input, this);\n\n if (!that.isValid()) {\n return NaN;\n }\n\n zoneDelta = (that.utcOffset() - this.utcOffset()) * 6e4;\n\n units = normalizeUnits(units);\n\n switch (units) {\n case 'year':\n output = monthDiff(this, that) / 12;\n break;\n case 'month':\n output = monthDiff(this, that);\n break;\n case 'quarter':\n output = monthDiff(this, that) / 3;\n break;\n case 'second':\n output = (this - that) / 1e3;\n break; // 1000\n case 'minute':\n output = (this - that) / 6e4;\n break; // 1000 * 60\n case 'hour':\n output = (this - that) / 36e5;\n break; // 1000 * 60 * 60\n case 'day':\n output = (this - that - zoneDelta) / 864e5;\n break; // 1000 * 60 * 60 * 24, negate dst\n case 'week':\n output = (this - that - zoneDelta) / 6048e5;\n break; // 1000 * 60 * 60 * 24 * 7, negate dst\n default:\n output = this - that;\n }\n\n return asFloat ? output : absFloor(output);\n }\n\n function monthDiff(a, b) {\n if (a.date() < b.date()) {\n // end-of-month calculations work correct when the start month has more\n // days than the end month.\n return -monthDiff(b, a);\n }\n // difference in months\n var wholeMonthDiff = (b.year() - a.year()) * 12 + (b.month() - a.month()),\n // b is in (anchor - 1 month, anchor + 1 month)\n anchor = a.clone().add(wholeMonthDiff, 'months'),\n anchor2,\n adjust;\n\n if (b - anchor < 0) {\n anchor2 = a.clone().add(wholeMonthDiff - 1, 'months');\n // linear across the month\n adjust = (b - anchor) / (anchor - anchor2);\n } else {\n anchor2 = a.clone().add(wholeMonthDiff + 1, 'months');\n // linear across the month\n adjust = (b - anchor) / (anchor2 - anchor);\n }\n\n //check for negative zero, return zero if negative zero\n return -(wholeMonthDiff + adjust) || 0;\n }\n\n hooks.defaultFormat = 'YYYY-MM-DDTHH:mm:ssZ';\n hooks.defaultFormatUtc = 'YYYY-MM-DDTHH:mm:ss[Z]';\n\n function toString() {\n return this.clone().locale('en').format('ddd MMM DD YYYY HH:mm:ss [GMT]ZZ');\n }\n\n function toISOString(keepOffset) {\n if (!this.isValid()) {\n return null;\n }\n var utc = keepOffset !== true,\n m = utc ? this.clone().utc() : this;\n if (m.year() < 0 || m.year() > 9999) {\n return formatMoment(\n m,\n utc\n ? 'YYYYYY-MM-DD[T]HH:mm:ss.SSS[Z]'\n : 'YYYYYY-MM-DD[T]HH:mm:ss.SSSZ'\n );\n }\n if (isFunction(Date.prototype.toISOString)) {\n // native implementation is ~50x faster, use it when we can\n if (utc) {\n return this.toDate().toISOString();\n } else {\n return new Date(this.valueOf() + this.utcOffset() * 60 * 1000)\n .toISOString()\n .replace('Z', formatMoment(m, 'Z'));\n }\n }\n return formatMoment(\n m,\n utc ? 'YYYY-MM-DD[T]HH:mm:ss.SSS[Z]' : 'YYYY-MM-DD[T]HH:mm:ss.SSSZ'\n );\n }\n\n /**\n * Return a human readable representation of a moment that can\n * also be evaluated to get a new moment which is the same\n *\n * @link https://nodejs.org/dist/latest/docs/api/util.html#util_custom_inspect_function_on_objects\n */\n function inspect() {\n if (!this.isValid()) {\n return 'moment.invalid(/* ' + this._i + ' */)';\n }\n var func = 'moment',\n zone = '',\n prefix,\n year,\n datetime,\n suffix;\n if (!this.isLocal()) {\n func = this.utcOffset() === 0 ? 'moment.utc' : 'moment.parseZone';\n zone = 'Z';\n }\n prefix = '[' + func + '(\"]';\n year = 0 <= this.year() && this.year() <= 9999 ? 'YYYY' : 'YYYYYY';\n datetime = '-MM-DD[T]HH:mm:ss.SSS';\n suffix = zone + '[\")]';\n\n return this.format(prefix + year + datetime + suffix);\n }\n\n function format(inputString) {\n if (!inputString) {\n inputString = this.isUtc()\n ? hooks.defaultFormatUtc\n : hooks.defaultFormat;\n }\n var output = formatMoment(this, inputString);\n return this.localeData().postformat(output);\n }\n\n function from(time, withoutSuffix) {\n if (\n this.isValid() &&\n ((isMoment(time) && time.isValid()) || createLocal(time).isValid())\n ) {\n return createDuration({ to: this, from: time })\n .locale(this.locale())\n .humanize(!withoutSuffix);\n } else {\n return this.localeData().invalidDate();\n }\n }\n\n function fromNow(withoutSuffix) {\n return this.from(createLocal(), withoutSuffix);\n }\n\n function to(time, withoutSuffix) {\n if (\n this.isValid() &&\n ((isMoment(time) && time.isValid()) || createLocal(time).isValid())\n ) {\n return createDuration({ from: this, to: time })\n .locale(this.locale())\n .humanize(!withoutSuffix);\n } else {\n return this.localeData().invalidDate();\n }\n }\n\n function toNow(withoutSuffix) {\n return this.to(createLocal(), withoutSuffix);\n }\n\n // If passed a locale key, it will set the locale for this\n // instance. Otherwise, it will return the locale configuration\n // variables for this instance.\n function locale(key) {\n var newLocaleData;\n\n if (key === undefined) {\n return this._locale._abbr;\n } else {\n newLocaleData = getLocale(key);\n if (newLocaleData != null) {\n this._locale = newLocaleData;\n }\n return this;\n }\n }\n\n var lang = deprecate(\n 'moment().lang() is deprecated. Instead, use moment().localeData() to get the language configuration. Use moment().locale() to change languages.',\n function (key) {\n if (key === undefined) {\n return this.localeData();\n } else {\n return this.locale(key);\n }\n }\n );\n\n function localeData() {\n return this._locale;\n }\n\n var MS_PER_SECOND = 1000,\n MS_PER_MINUTE = 60 * MS_PER_SECOND,\n MS_PER_HOUR = 60 * MS_PER_MINUTE,\n MS_PER_400_YEARS = (365 * 400 + 97) * 24 * MS_PER_HOUR;\n\n // actual modulo - handles negative numbers (for dates before 1970):\n function mod$1(dividend, divisor) {\n return ((dividend % divisor) + divisor) % divisor;\n }\n\n function localStartOfDate(y, m, d) {\n // the date constructor remaps years 0-99 to 1900-1999\n if (y < 100 && y >= 0) {\n // preserve leap years using a full 400 year cycle, then reset\n return new Date(y + 400, m, d) - MS_PER_400_YEARS;\n } else {\n return new Date(y, m, d).valueOf();\n }\n }\n\n function utcStartOfDate(y, m, d) {\n // Date.UTC remaps years 0-99 to 1900-1999\n if (y < 100 && y >= 0) {\n // preserve leap years using a full 400 year cycle, then reset\n return Date.UTC(y + 400, m, d) - MS_PER_400_YEARS;\n } else {\n return Date.UTC(y, m, d);\n }\n }\n\n function startOf(units) {\n var time, startOfDate;\n units = normalizeUnits(units);\n if (units === undefined || units === 'millisecond' || !this.isValid()) {\n return this;\n }\n\n startOfDate = this._isUTC ? utcStartOfDate : localStartOfDate;\n\n switch (units) {\n case 'year':\n time = startOfDate(this.year(), 0, 1);\n break;\n case 'quarter':\n time = startOfDate(\n this.year(),\n this.month() - (this.month() % 3),\n 1\n );\n break;\n case 'month':\n time = startOfDate(this.year(), this.month(), 1);\n break;\n case 'week':\n time = startOfDate(\n this.year(),\n this.month(),\n this.date() - this.weekday()\n );\n break;\n case 'isoWeek':\n time = startOfDate(\n this.year(),\n this.month(),\n this.date() - (this.isoWeekday() - 1)\n );\n break;\n case 'day':\n case 'date':\n time = startOfDate(this.year(), this.month(), this.date());\n break;\n case 'hour':\n time = this._d.valueOf();\n time -= mod$1(\n time + (this._isUTC ? 0 : this.utcOffset() * MS_PER_MINUTE),\n MS_PER_HOUR\n );\n break;\n case 'minute':\n time = this._d.valueOf();\n time -= mod$1(time, MS_PER_MINUTE);\n break;\n case 'second':\n time = this._d.valueOf();\n time -= mod$1(time, MS_PER_SECOND);\n break;\n }\n\n this._d.setTime(time);\n hooks.updateOffset(this, true);\n return this;\n }\n\n function endOf(units) {\n var time, startOfDate;\n units = normalizeUnits(units);\n if (units === undefined || units === 'millisecond' || !this.isValid()) {\n return this;\n }\n\n startOfDate = this._isUTC ? utcStartOfDate : localStartOfDate;\n\n switch (units) {\n case 'year':\n time = startOfDate(this.year() + 1, 0, 1) - 1;\n break;\n case 'quarter':\n time =\n startOfDate(\n this.year(),\n this.month() - (this.month() % 3) + 3,\n 1\n ) - 1;\n break;\n case 'month':\n time = startOfDate(this.year(), this.month() + 1, 1) - 1;\n break;\n case 'week':\n time =\n startOfDate(\n this.year(),\n this.month(),\n this.date() - this.weekday() + 7\n ) - 1;\n break;\n case 'isoWeek':\n time =\n startOfDate(\n this.year(),\n this.month(),\n this.date() - (this.isoWeekday() - 1) + 7\n ) - 1;\n break;\n case 'day':\n case 'date':\n time = startOfDate(this.year(), this.month(), this.date() + 1) - 1;\n break;\n case 'hour':\n time = this._d.valueOf();\n time +=\n MS_PER_HOUR -\n mod$1(\n time + (this._isUTC ? 0 : this.utcOffset() * MS_PER_MINUTE),\n MS_PER_HOUR\n ) -\n 1;\n break;\n case 'minute':\n time = this._d.valueOf();\n time += MS_PER_MINUTE - mod$1(time, MS_PER_MINUTE) - 1;\n break;\n case 'second':\n time = this._d.valueOf();\n time += MS_PER_SECOND - mod$1(time, MS_PER_SECOND) - 1;\n break;\n }\n\n this._d.setTime(time);\n hooks.updateOffset(this, true);\n return this;\n }\n\n function valueOf() {\n return this._d.valueOf() - (this._offset || 0) * 60000;\n }\n\n function unix() {\n return Math.floor(this.valueOf() / 1000);\n }\n\n function toDate() {\n return new Date(this.valueOf());\n }\n\n function toArray() {\n var m = this;\n return [\n m.year(),\n m.month(),\n m.date(),\n m.hour(),\n m.minute(),\n m.second(),\n m.millisecond(),\n ];\n }\n\n function toObject() {\n var m = this;\n return {\n years: m.year(),\n months: m.month(),\n date: m.date(),\n hours: m.hours(),\n minutes: m.minutes(),\n seconds: m.seconds(),\n milliseconds: m.milliseconds(),\n };\n }\n\n function toJSON() {\n // new Date(NaN).toJSON() === null\n return this.isValid() ? this.toISOString() : null;\n }\n\n function isValid$2() {\n return isValid(this);\n }\n\n function parsingFlags() {\n return extend({}, getParsingFlags(this));\n }\n\n function invalidAt() {\n return getParsingFlags(this).overflow;\n }\n\n function creationData() {\n return {\n input: this._i,\n format: this._f,\n locale: this._locale,\n isUTC: this._isUTC,\n strict: this._strict,\n };\n }\n\n addFormatToken('N', 0, 0, 'eraAbbr');\n addFormatToken('NN', 0, 0, 'eraAbbr');\n addFormatToken('NNN', 0, 0, 'eraAbbr');\n addFormatToken('NNNN', 0, 0, 'eraName');\n addFormatToken('NNNNN', 0, 0, 'eraNarrow');\n\n addFormatToken('y', ['y', 1], 'yo', 'eraYear');\n addFormatToken('y', ['yy', 2], 0, 'eraYear');\n addFormatToken('y', ['yyy', 3], 0, 'eraYear');\n addFormatToken('y', ['yyyy', 4], 0, 'eraYear');\n\n addRegexToken('N', matchEraAbbr);\n addRegexToken('NN', matchEraAbbr);\n addRegexToken('NNN', matchEraAbbr);\n addRegexToken('NNNN', matchEraName);\n addRegexToken('NNNNN', matchEraNarrow);\n\n addParseToken(\n ['N', 'NN', 'NNN', 'NNNN', 'NNNNN'],\n function (input, array, config, token) {\n var era = config._locale.erasParse(input, token, config._strict);\n if (era) {\n getParsingFlags(config).era = era;\n } else {\n getParsingFlags(config).invalidEra = input;\n }\n }\n );\n\n addRegexToken('y', matchUnsigned);\n addRegexToken('yy', matchUnsigned);\n addRegexToken('yyy', matchUnsigned);\n addRegexToken('yyyy', matchUnsigned);\n addRegexToken('yo', matchEraYearOrdinal);\n\n addParseToken(['y', 'yy', 'yyy', 'yyyy'], YEAR);\n addParseToken(['yo'], function (input, array, config, token) {\n var match;\n if (config._locale._eraYearOrdinalRegex) {\n match = input.match(config._locale._eraYearOrdinalRegex);\n }\n\n if (config._locale.eraYearOrdinalParse) {\n array[YEAR] = config._locale.eraYearOrdinalParse(input, match);\n } else {\n array[YEAR] = parseInt(input, 10);\n }\n });\n\n function localeEras(m, format) {\n var i,\n l,\n date,\n eras = this._eras || getLocale('en')._eras;\n for (i = 0, l = eras.length; i < l; ++i) {\n switch (typeof eras[i].since) {\n case 'string':\n // truncate time\n date = hooks(eras[i].since).startOf('day');\n eras[i].since = date.valueOf();\n break;\n }\n\n switch (typeof eras[i].until) {\n case 'undefined':\n eras[i].until = +Infinity;\n break;\n case 'string':\n // truncate time\n date = hooks(eras[i].until).startOf('day').valueOf();\n eras[i].until = date.valueOf();\n break;\n }\n }\n return eras;\n }\n\n function localeErasParse(eraName, format, strict) {\n var i,\n l,\n eras = this.eras(),\n name,\n abbr,\n narrow;\n eraName = eraName.toUpperCase();\n\n for (i = 0, l = eras.length; i < l; ++i) {\n name = eras[i].name.toUpperCase();\n abbr = eras[i].abbr.toUpperCase();\n narrow = eras[i].narrow.toUpperCase();\n\n if (strict) {\n switch (format) {\n case 'N':\n case 'NN':\n case 'NNN':\n if (abbr === eraName) {\n return eras[i];\n }\n break;\n\n case 'NNNN':\n if (name === eraName) {\n return eras[i];\n }\n break;\n\n case 'NNNNN':\n if (narrow === eraName) {\n return eras[i];\n }\n break;\n }\n } else if ([name, abbr, narrow].indexOf(eraName) >= 0) {\n return eras[i];\n }\n }\n }\n\n function localeErasConvertYear(era, year) {\n var dir = era.since <= era.until ? +1 : -1;\n if (year === undefined) {\n return hooks(era.since).year();\n } else {\n return hooks(era.since).year() + (year - era.offset) * dir;\n }\n }\n\n function getEraName() {\n var i,\n l,\n val,\n eras = this.localeData().eras();\n for (i = 0, l = eras.length; i < l; ++i) {\n // truncate time\n val = this.clone().startOf('day').valueOf();\n\n if (eras[i].since <= val && val <= eras[i].until) {\n return eras[i].name;\n }\n if (eras[i].until <= val && val <= eras[i].since) {\n return eras[i].name;\n }\n }\n\n return '';\n }\n\n function getEraNarrow() {\n var i,\n l,\n val,\n eras = this.localeData().eras();\n for (i = 0, l = eras.length; i < l; ++i) {\n // truncate time\n val = this.clone().startOf('day').valueOf();\n\n if (eras[i].since <= val && val <= eras[i].until) {\n return eras[i].narrow;\n }\n if (eras[i].until <= val && val <= eras[i].since) {\n return eras[i].narrow;\n }\n }\n\n return '';\n }\n\n function getEraAbbr() {\n var i,\n l,\n val,\n eras = this.localeData().eras();\n for (i = 0, l = eras.length; i < l; ++i) {\n // truncate time\n val = this.clone().startOf('day').valueOf();\n\n if (eras[i].since <= val && val <= eras[i].until) {\n return eras[i].abbr;\n }\n if (eras[i].until <= val && val <= eras[i].since) {\n return eras[i].abbr;\n }\n }\n\n return '';\n }\n\n function getEraYear() {\n var i,\n l,\n dir,\n val,\n eras = this.localeData().eras();\n for (i = 0, l = eras.length; i < l; ++i) {\n dir = eras[i].since <= eras[i].until ? +1 : -1;\n\n // truncate time\n val = this.clone().startOf('day').valueOf();\n\n if (\n (eras[i].since <= val && val <= eras[i].until) ||\n (eras[i].until <= val && val <= eras[i].since)\n ) {\n return (\n (this.year() - hooks(eras[i].since).year()) * dir +\n eras[i].offset\n );\n }\n }\n\n return this.year();\n }\n\n function erasNameRegex(isStrict) {\n if (!hasOwnProp(this, '_erasNameRegex')) {\n computeErasParse.call(this);\n }\n return isStrict ? this._erasNameRegex : this._erasRegex;\n }\n\n function erasAbbrRegex(isStrict) {\n if (!hasOwnProp(this, '_erasAbbrRegex')) {\n computeErasParse.call(this);\n }\n return isStrict ? this._erasAbbrRegex : this._erasRegex;\n }\n\n function erasNarrowRegex(isStrict) {\n if (!hasOwnProp(this, '_erasNarrowRegex')) {\n computeErasParse.call(this);\n }\n return isStrict ? this._erasNarrowRegex : this._erasRegex;\n }\n\n function matchEraAbbr(isStrict, locale) {\n return locale.erasAbbrRegex(isStrict);\n }\n\n function matchEraName(isStrict, locale) {\n return locale.erasNameRegex(isStrict);\n }\n\n function matchEraNarrow(isStrict, locale) {\n return locale.erasNarrowRegex(isStrict);\n }\n\n function matchEraYearOrdinal(isStrict, locale) {\n return locale._eraYearOrdinalRegex || matchUnsigned;\n }\n\n function computeErasParse() {\n var abbrPieces = [],\n namePieces = [],\n narrowPieces = [],\n mixedPieces = [],\n i,\n l,\n eras = this.eras();\n\n for (i = 0, l = eras.length; i < l; ++i) {\n namePieces.push(regexEscape(eras[i].name));\n abbrPieces.push(regexEscape(eras[i].abbr));\n narrowPieces.push(regexEscape(eras[i].narrow));\n\n mixedPieces.push(regexEscape(eras[i].name));\n mixedPieces.push(regexEscape(eras[i].abbr));\n mixedPieces.push(regexEscape(eras[i].narrow));\n }\n\n this._erasRegex = new RegExp('^(' + mixedPieces.join('|') + ')', 'i');\n this._erasNameRegex = new RegExp('^(' + namePieces.join('|') + ')', 'i');\n this._erasAbbrRegex = new RegExp('^(' + abbrPieces.join('|') + ')', 'i');\n this._erasNarrowRegex = new RegExp(\n '^(' + narrowPieces.join('|') + ')',\n 'i'\n );\n }\n\n // FORMATTING\n\n addFormatToken(0, ['gg', 2], 0, function () {\n return this.weekYear() % 100;\n });\n\n addFormatToken(0, ['GG', 2], 0, function () {\n return this.isoWeekYear() % 100;\n });\n\n function addWeekYearFormatToken(token, getter) {\n addFormatToken(0, [token, token.length], 0, getter);\n }\n\n addWeekYearFormatToken('gggg', 'weekYear');\n addWeekYearFormatToken('ggggg', 'weekYear');\n addWeekYearFormatToken('GGGG', 'isoWeekYear');\n addWeekYearFormatToken('GGGGG', 'isoWeekYear');\n\n // ALIASES\n\n addUnitAlias('weekYear', 'gg');\n addUnitAlias('isoWeekYear', 'GG');\n\n // PRIORITY\n\n addUnitPriority('weekYear', 1);\n addUnitPriority('isoWeekYear', 1);\n\n // PARSING\n\n addRegexToken('G', matchSigned);\n addRegexToken('g', matchSigned);\n addRegexToken('GG', match1to2, match2);\n addRegexToken('gg', match1to2, match2);\n addRegexToken('GGGG', match1to4, match4);\n addRegexToken('gggg', match1to4, match4);\n addRegexToken('GGGGG', match1to6, match6);\n addRegexToken('ggggg', match1to6, match6);\n\n addWeekParseToken(\n ['gggg', 'ggggg', 'GGGG', 'GGGGG'],\n function (input, week, config, token) {\n week[token.substr(0, 2)] = toInt(input);\n }\n );\n\n addWeekParseToken(['gg', 'GG'], function (input, week, config, token) {\n week[token] = hooks.parseTwoDigitYear(input);\n });\n\n // MOMENTS\n\n function getSetWeekYear(input) {\n return getSetWeekYearHelper.call(\n this,\n input,\n this.week(),\n this.weekday(),\n this.localeData()._week.dow,\n this.localeData()._week.doy\n );\n }\n\n function getSetISOWeekYear(input) {\n return getSetWeekYearHelper.call(\n this,\n input,\n this.isoWeek(),\n this.isoWeekday(),\n 1,\n 4\n );\n }\n\n function getISOWeeksInYear() {\n return weeksInYear(this.year(), 1, 4);\n }\n\n function getISOWeeksInISOWeekYear() {\n return weeksInYear(this.isoWeekYear(), 1, 4);\n }\n\n function getWeeksInYear() {\n var weekInfo = this.localeData()._week;\n return weeksInYear(this.year(), weekInfo.dow, weekInfo.doy);\n }\n\n function getWeeksInWeekYear() {\n var weekInfo = this.localeData()._week;\n return weeksInYear(this.weekYear(), weekInfo.dow, weekInfo.doy);\n }\n\n function getSetWeekYearHelper(input, week, weekday, dow, doy) {\n var weeksTarget;\n if (input == null) {\n return weekOfYear(this, dow, doy).year;\n } else {\n weeksTarget = weeksInYear(input, dow, doy);\n if (week > weeksTarget) {\n week = weeksTarget;\n }\n return setWeekAll.call(this, input, week, weekday, dow, doy);\n }\n }\n\n function setWeekAll(weekYear, week, weekday, dow, doy) {\n var dayOfYearData = dayOfYearFromWeeks(weekYear, week, weekday, dow, doy),\n date = createUTCDate(dayOfYearData.year, 0, dayOfYearData.dayOfYear);\n\n this.year(date.getUTCFullYear());\n this.month(date.getUTCMonth());\n this.date(date.getUTCDate());\n return this;\n }\n\n // FORMATTING\n\n addFormatToken('Q', 0, 'Qo', 'quarter');\n\n // ALIASES\n\n addUnitAlias('quarter', 'Q');\n\n // PRIORITY\n\n addUnitPriority('quarter', 7);\n\n // PARSING\n\n addRegexToken('Q', match1);\n addParseToken('Q', function (input, array) {\n array[MONTH] = (toInt(input) - 1) * 3;\n });\n\n // MOMENTS\n\n function getSetQuarter(input) {\n return input == null\n ? Math.ceil((this.month() + 1) / 3)\n : this.month((input - 1) * 3 + (this.month() % 3));\n }\n\n // FORMATTING\n\n addFormatToken('D', ['DD', 2], 'Do', 'date');\n\n // ALIASES\n\n addUnitAlias('date', 'D');\n\n // PRIORITY\n addUnitPriority('date', 9);\n\n // PARSING\n\n addRegexToken('D', match1to2);\n addRegexToken('DD', match1to2, match2);\n addRegexToken('Do', function (isStrict, locale) {\n // TODO: Remove \"ordinalParse\" fallback in next major release.\n return isStrict\n ? locale._dayOfMonthOrdinalParse || locale._ordinalParse\n : locale._dayOfMonthOrdinalParseLenient;\n });\n\n addParseToken(['D', 'DD'], DATE);\n addParseToken('Do', function (input, array) {\n array[DATE] = toInt(input.match(match1to2)[0]);\n });\n\n // MOMENTS\n\n var getSetDayOfMonth = makeGetSet('Date', true);\n\n // FORMATTING\n\n addFormatToken('DDD', ['DDDD', 3], 'DDDo', 'dayOfYear');\n\n // ALIASES\n\n addUnitAlias('dayOfYear', 'DDD');\n\n // PRIORITY\n addUnitPriority('dayOfYear', 4);\n\n // PARSING\n\n addRegexToken('DDD', match1to3);\n addRegexToken('DDDD', match3);\n addParseToken(['DDD', 'DDDD'], function (input, array, config) {\n config._dayOfYear = toInt(input);\n });\n\n // HELPERS\n\n // MOMENTS\n\n function getSetDayOfYear(input) {\n var dayOfYear =\n Math.round(\n (this.clone().startOf('day') - this.clone().startOf('year')) / 864e5\n ) + 1;\n return input == null ? dayOfYear : this.add(input - dayOfYear, 'd');\n }\n\n // FORMATTING\n\n addFormatToken('m', ['mm', 2], 0, 'minute');\n\n // ALIASES\n\n addUnitAlias('minute', 'm');\n\n // PRIORITY\n\n addUnitPriority('minute', 14);\n\n // PARSING\n\n addRegexToken('m', match1to2);\n addRegexToken('mm', match1to2, match2);\n addParseToken(['m', 'mm'], MINUTE);\n\n // MOMENTS\n\n var getSetMinute = makeGetSet('Minutes', false);\n\n // FORMATTING\n\n addFormatToken('s', ['ss', 2], 0, 'second');\n\n // ALIASES\n\n addUnitAlias('second', 's');\n\n // PRIORITY\n\n addUnitPriority('second', 15);\n\n // PARSING\n\n addRegexToken('s', match1to2);\n addRegexToken('ss', match1to2, match2);\n addParseToken(['s', 'ss'], SECOND);\n\n // MOMENTS\n\n var getSetSecond = makeGetSet('Seconds', false);\n\n // FORMATTING\n\n addFormatToken('S', 0, 0, function () {\n return ~~(this.millisecond() / 100);\n });\n\n addFormatToken(0, ['SS', 2], 0, function () {\n return ~~(this.millisecond() / 10);\n });\n\n addFormatToken(0, ['SSS', 3], 0, 'millisecond');\n addFormatToken(0, ['SSSS', 4], 0, function () {\n return this.millisecond() * 10;\n });\n addFormatToken(0, ['SSSSS', 5], 0, function () {\n return this.millisecond() * 100;\n });\n addFormatToken(0, ['SSSSSS', 6], 0, function () {\n return this.millisecond() * 1000;\n });\n addFormatToken(0, ['SSSSSSS', 7], 0, function () {\n return this.millisecond() * 10000;\n });\n addFormatToken(0, ['SSSSSSSS', 8], 0, function () {\n return this.millisecond() * 100000;\n });\n addFormatToken(0, ['SSSSSSSSS', 9], 0, function () {\n return this.millisecond() * 1000000;\n });\n\n // ALIASES\n\n addUnitAlias('millisecond', 'ms');\n\n // PRIORITY\n\n addUnitPriority('millisecond', 16);\n\n // PARSING\n\n addRegexToken('S', match1to3, match1);\n addRegexToken('SS', match1to3, match2);\n addRegexToken('SSS', match1to3, match3);\n\n var token, getSetMillisecond;\n for (token = 'SSSS'; token.length <= 9; token += 'S') {\n addRegexToken(token, matchUnsigned);\n }\n\n function parseMs(input, array) {\n array[MILLISECOND] = toInt(('0.' + input) * 1000);\n }\n\n for (token = 'S'; token.length <= 9; token += 'S') {\n addParseToken(token, parseMs);\n }\n\n getSetMillisecond = makeGetSet('Milliseconds', false);\n\n // FORMATTING\n\n addFormatToken('z', 0, 0, 'zoneAbbr');\n addFormatToken('zz', 0, 0, 'zoneName');\n\n // MOMENTS\n\n function getZoneAbbr() {\n return this._isUTC ? 'UTC' : '';\n }\n\n function getZoneName() {\n return this._isUTC ? 'Coordinated Universal Time' : '';\n }\n\n var proto = Moment.prototype;\n\n proto.add = add;\n proto.calendar = calendar$1;\n proto.clone = clone;\n proto.diff = diff;\n proto.endOf = endOf;\n proto.format = format;\n proto.from = from;\n proto.fromNow = fromNow;\n proto.to = to;\n proto.toNow = toNow;\n proto.get = stringGet;\n proto.invalidAt = invalidAt;\n proto.isAfter = isAfter;\n proto.isBefore = isBefore;\n proto.isBetween = isBetween;\n proto.isSame = isSame;\n proto.isSameOrAfter = isSameOrAfter;\n proto.isSameOrBefore = isSameOrBefore;\n proto.isValid = isValid$2;\n proto.lang = lang;\n proto.locale = locale;\n proto.localeData = localeData;\n proto.max = prototypeMax;\n proto.min = prototypeMin;\n proto.parsingFlags = parsingFlags;\n proto.set = stringSet;\n proto.startOf = startOf;\n proto.subtract = subtract;\n proto.toArray = toArray;\n proto.toObject = toObject;\n proto.toDate = toDate;\n proto.toISOString = toISOString;\n proto.inspect = inspect;\n if (typeof Symbol !== 'undefined' && Symbol.for != null) {\n proto[Symbol.for('nodejs.util.inspect.custom')] = function () {\n return 'Moment<' + this.format() + '>';\n };\n }\n proto.toJSON = toJSON;\n proto.toString = toString;\n proto.unix = unix;\n proto.valueOf = valueOf;\n proto.creationData = creationData;\n proto.eraName = getEraName;\n proto.eraNarrow = getEraNarrow;\n proto.eraAbbr = getEraAbbr;\n proto.eraYear = getEraYear;\n proto.year = getSetYear;\n proto.isLeapYear = getIsLeapYear;\n proto.weekYear = getSetWeekYear;\n proto.isoWeekYear = getSetISOWeekYear;\n proto.quarter = proto.quarters = getSetQuarter;\n proto.month = getSetMonth;\n proto.daysInMonth = getDaysInMonth;\n proto.week = proto.weeks = getSetWeek;\n proto.isoWeek = proto.isoWeeks = getSetISOWeek;\n proto.weeksInYear = getWeeksInYear;\n proto.weeksInWeekYear = getWeeksInWeekYear;\n proto.isoWeeksInYear = getISOWeeksInYear;\n proto.isoWeeksInISOWeekYear = getISOWeeksInISOWeekYear;\n proto.date = getSetDayOfMonth;\n proto.day = proto.days = getSetDayOfWeek;\n proto.weekday = getSetLocaleDayOfWeek;\n proto.isoWeekday = getSetISODayOfWeek;\n proto.dayOfYear = getSetDayOfYear;\n proto.hour = proto.hours = getSetHour;\n proto.minute = proto.minutes = getSetMinute;\n proto.second = proto.seconds = getSetSecond;\n proto.millisecond = proto.milliseconds = getSetMillisecond;\n proto.utcOffset = getSetOffset;\n proto.utc = setOffsetToUTC;\n proto.local = setOffsetToLocal;\n proto.parseZone = setOffsetToParsedOffset;\n proto.hasAlignedHourOffset = hasAlignedHourOffset;\n proto.isDST = isDaylightSavingTime;\n proto.isLocal = isLocal;\n proto.isUtcOffset = isUtcOffset;\n proto.isUtc = isUtc;\n proto.isUTC = isUtc;\n proto.zoneAbbr = getZoneAbbr;\n proto.zoneName = getZoneName;\n proto.dates = deprecate(\n 'dates accessor is deprecated. Use date instead.',\n getSetDayOfMonth\n );\n proto.months = deprecate(\n 'months accessor is deprecated. Use month instead',\n getSetMonth\n );\n proto.years = deprecate(\n 'years accessor is deprecated. Use year instead',\n getSetYear\n );\n proto.zone = deprecate(\n 'moment().zone is deprecated, use moment().utcOffset instead. http://momentjs.com/guides/#/warnings/zone/',\n getSetZone\n );\n proto.isDSTShifted = deprecate(\n 'isDSTShifted is deprecated. See http://momentjs.com/guides/#/warnings/dst-shifted/ for more information',\n isDaylightSavingTimeShifted\n );\n\n function createUnix(input) {\n return createLocal(input * 1000);\n }\n\n function createInZone() {\n return createLocal.apply(null, arguments).parseZone();\n }\n\n function preParsePostFormat(string) {\n return string;\n }\n\n var proto$1 = Locale.prototype;\n\n proto$1.calendar = calendar;\n proto$1.longDateFormat = longDateFormat;\n proto$1.invalidDate = invalidDate;\n proto$1.ordinal = ordinal;\n proto$1.preparse = preParsePostFormat;\n proto$1.postformat = preParsePostFormat;\n proto$1.relativeTime = relativeTime;\n proto$1.pastFuture = pastFuture;\n proto$1.set = set;\n proto$1.eras = localeEras;\n proto$1.erasParse = localeErasParse;\n proto$1.erasConvertYear = localeErasConvertYear;\n proto$1.erasAbbrRegex = erasAbbrRegex;\n proto$1.erasNameRegex = erasNameRegex;\n proto$1.erasNarrowRegex = erasNarrowRegex;\n\n proto$1.months = localeMonths;\n proto$1.monthsShort = localeMonthsShort;\n proto$1.monthsParse = localeMonthsParse;\n proto$1.monthsRegex = monthsRegex;\n proto$1.monthsShortRegex = monthsShortRegex;\n proto$1.week = localeWeek;\n proto$1.firstDayOfYear = localeFirstDayOfYear;\n proto$1.firstDayOfWeek = localeFirstDayOfWeek;\n\n proto$1.weekdays = localeWeekdays;\n proto$1.weekdaysMin = localeWeekdaysMin;\n proto$1.weekdaysShort = localeWeekdaysShort;\n proto$1.weekdaysParse = localeWeekdaysParse;\n\n proto$1.weekdaysRegex = weekdaysRegex;\n proto$1.weekdaysShortRegex = weekdaysShortRegex;\n proto$1.weekdaysMinRegex = weekdaysMinRegex;\n\n proto$1.isPM = localeIsPM;\n proto$1.meridiem = localeMeridiem;\n\n function get$1(format, index, field, setter) {\n var locale = getLocale(),\n utc = createUTC().set(setter, index);\n return locale[field](utc, format);\n }\n\n function listMonthsImpl(format, index, field) {\n if (isNumber(format)) {\n index = format;\n format = undefined;\n }\n\n format = format || '';\n\n if (index != null) {\n return get$1(format, index, field, 'month');\n }\n\n var i,\n out = [];\n for (i = 0; i < 12; i++) {\n out[i] = get$1(format, i, field, 'month');\n }\n return out;\n }\n\n // ()\n // (5)\n // (fmt, 5)\n // (fmt)\n // (true)\n // (true, 5)\n // (true, fmt, 5)\n // (true, fmt)\n function listWeekdaysImpl(localeSorted, format, index, field) {\n if (typeof localeSorted === 'boolean') {\n if (isNumber(format)) {\n index = format;\n format = undefined;\n }\n\n format = format || '';\n } else {\n format = localeSorted;\n index = format;\n localeSorted = false;\n\n if (isNumber(format)) {\n index = format;\n format = undefined;\n }\n\n format = format || '';\n }\n\n var locale = getLocale(),\n shift = localeSorted ? locale._week.dow : 0,\n i,\n out = [];\n\n if (index != null) {\n return get$1(format, (index + shift) % 7, field, 'day');\n }\n\n for (i = 0; i < 7; i++) {\n out[i] = get$1(format, (i + shift) % 7, field, 'day');\n }\n return out;\n }\n\n function listMonths(format, index) {\n return listMonthsImpl(format, index, 'months');\n }\n\n function listMonthsShort(format, index) {\n return listMonthsImpl(format, index, 'monthsShort');\n }\n\n function listWeekdays(localeSorted, format, index) {\n return listWeekdaysImpl(localeSorted, format, index, 'weekdays');\n }\n\n function listWeekdaysShort(localeSorted, format, index) {\n return listWeekdaysImpl(localeSorted, format, index, 'weekdaysShort');\n }\n\n function listWeekdaysMin(localeSorted, format, index) {\n return listWeekdaysImpl(localeSorted, format, index, 'weekdaysMin');\n }\n\n getSetGlobalLocale('en', {\n eras: [\n {\n since: '0001-01-01',\n until: +Infinity,\n offset: 1,\n name: 'Anno Domini',\n narrow: 'AD',\n abbr: 'AD',\n },\n {\n since: '0000-12-31',\n until: -Infinity,\n offset: 1,\n name: 'Before Christ',\n narrow: 'BC',\n abbr: 'BC',\n },\n ],\n dayOfMonthOrdinalParse: /\\d{1,2}(th|st|nd|rd)/,\n ordinal: function (number) {\n var b = number % 10,\n output =\n toInt((number % 100) / 10) === 1\n ? 'th'\n : b === 1\n ? 'st'\n : b === 2\n ? 'nd'\n : b === 3\n ? 'rd'\n : 'th';\n return number + output;\n },\n });\n\n // Side effect imports\n\n hooks.lang = deprecate(\n 'moment.lang is deprecated. Use moment.locale instead.',\n getSetGlobalLocale\n );\n hooks.langData = deprecate(\n 'moment.langData is deprecated. Use moment.localeData instead.',\n getLocale\n );\n\n var mathAbs = Math.abs;\n\n function abs() {\n var data = this._data;\n\n this._milliseconds = mathAbs(this._milliseconds);\n this._days = mathAbs(this._days);\n this._months = mathAbs(this._months);\n\n data.milliseconds = mathAbs(data.milliseconds);\n data.seconds = mathAbs(data.seconds);\n data.minutes = mathAbs(data.minutes);\n data.hours = mathAbs(data.hours);\n data.months = mathAbs(data.months);\n data.years = mathAbs(data.years);\n\n return this;\n }\n\n function addSubtract$1(duration, input, value, direction) {\n var other = createDuration(input, value);\n\n duration._milliseconds += direction * other._milliseconds;\n duration._days += direction * other._days;\n duration._months += direction * other._months;\n\n return duration._bubble();\n }\n\n // supports only 2.0-style add(1, 's') or add(duration)\n function add$1(input, value) {\n return addSubtract$1(this, input, value, 1);\n }\n\n // supports only 2.0-style subtract(1, 's') or subtract(duration)\n function subtract$1(input, value) {\n return addSubtract$1(this, input, value, -1);\n }\n\n function absCeil(number) {\n if (number < 0) {\n return Math.floor(number);\n } else {\n return Math.ceil(number);\n }\n }\n\n function bubble() {\n var milliseconds = this._milliseconds,\n days = this._days,\n months = this._months,\n data = this._data,\n seconds,\n minutes,\n hours,\n years,\n monthsFromDays;\n\n // if we have a mix of positive and negative values, bubble down first\n // check: https://github.com/moment/moment/issues/2166\n if (\n !(\n (milliseconds >= 0 && days >= 0 && months >= 0) ||\n (milliseconds <= 0 && days <= 0 && months <= 0)\n )\n ) {\n milliseconds += absCeil(monthsToDays(months) + days) * 864e5;\n days = 0;\n months = 0;\n }\n\n // The following code bubbles up values, see the tests for\n // examples of what that means.\n data.milliseconds = milliseconds % 1000;\n\n seconds = absFloor(milliseconds / 1000);\n data.seconds = seconds % 60;\n\n minutes = absFloor(seconds / 60);\n data.minutes = minutes % 60;\n\n hours = absFloor(minutes / 60);\n data.hours = hours % 24;\n\n days += absFloor(hours / 24);\n\n // convert days to months\n monthsFromDays = absFloor(daysToMonths(days));\n months += monthsFromDays;\n days -= absCeil(monthsToDays(monthsFromDays));\n\n // 12 months -> 1 year\n years = absFloor(months / 12);\n months %= 12;\n\n data.days = days;\n data.months = months;\n data.years = years;\n\n return this;\n }\n\n function daysToMonths(days) {\n // 400 years have 146097 days (taking into account leap year rules)\n // 400 years have 12 months === 4800\n return (days * 4800) / 146097;\n }\n\n function monthsToDays(months) {\n // the reverse of daysToMonths\n return (months * 146097) / 4800;\n }\n\n function as(units) {\n if (!this.isValid()) {\n return NaN;\n }\n var days,\n months,\n milliseconds = this._milliseconds;\n\n units = normalizeUnits(units);\n\n if (units === 'month' || units === 'quarter' || units === 'year') {\n days = this._days + milliseconds / 864e5;\n months = this._months + daysToMonths(days);\n switch (units) {\n case 'month':\n return months;\n case 'quarter':\n return months / 3;\n case 'year':\n return months / 12;\n }\n } else {\n // handle milliseconds separately because of floating point math errors (issue #1867)\n days = this._days + Math.round(monthsToDays(this._months));\n switch (units) {\n case 'week':\n return days / 7 + milliseconds / 6048e5;\n case 'day':\n return days + milliseconds / 864e5;\n case 'hour':\n return days * 24 + milliseconds / 36e5;\n case 'minute':\n return days * 1440 + milliseconds / 6e4;\n case 'second':\n return days * 86400 + milliseconds / 1000;\n // Math.floor prevents floating point math errors here\n case 'millisecond':\n return Math.floor(days * 864e5) + milliseconds;\n default:\n throw new Error('Unknown unit ' + units);\n }\n }\n }\n\n // TODO: Use this.as('ms')?\n function valueOf$1() {\n if (!this.isValid()) {\n return NaN;\n }\n return (\n this._milliseconds +\n this._days * 864e5 +\n (this._months % 12) * 2592e6 +\n toInt(this._months / 12) * 31536e6\n );\n }\n\n function makeAs(alias) {\n return function () {\n return this.as(alias);\n };\n }\n\n var asMilliseconds = makeAs('ms'),\n asSeconds = makeAs('s'),\n asMinutes = makeAs('m'),\n asHours = makeAs('h'),\n asDays = makeAs('d'),\n asWeeks = makeAs('w'),\n asMonths = makeAs('M'),\n asQuarters = makeAs('Q'),\n asYears = makeAs('y');\n\n function clone$1() {\n return createDuration(this);\n }\n\n function get$2(units) {\n units = normalizeUnits(units);\n return this.isValid() ? this[units + 's']() : NaN;\n }\n\n function makeGetter(name) {\n return function () {\n return this.isValid() ? this._data[name] : NaN;\n };\n }\n\n var milliseconds = makeGetter('milliseconds'),\n seconds = makeGetter('seconds'),\n minutes = makeGetter('minutes'),\n hours = makeGetter('hours'),\n days = makeGetter('days'),\n months = makeGetter('months'),\n years = makeGetter('years');\n\n function weeks() {\n return absFloor(this.days() / 7);\n }\n\n var round = Math.round,\n thresholds = {\n ss: 44, // a few seconds to seconds\n s: 45, // seconds to minute\n m: 45, // minutes to hour\n h: 22, // hours to day\n d: 26, // days to month/week\n w: null, // weeks to month\n M: 11, // months to year\n };\n\n // helper function for moment.fn.from, moment.fn.fromNow, and moment.duration.fn.humanize\n function substituteTimeAgo(string, number, withoutSuffix, isFuture, locale) {\n return locale.relativeTime(number || 1, !!withoutSuffix, string, isFuture);\n }\n\n function relativeTime$1(posNegDuration, withoutSuffix, thresholds, locale) {\n var duration = createDuration(posNegDuration).abs(),\n seconds = round(duration.as('s')),\n minutes = round(duration.as('m')),\n hours = round(duration.as('h')),\n days = round(duration.as('d')),\n months = round(duration.as('M')),\n weeks = round(duration.as('w')),\n years = round(duration.as('y')),\n a =\n (seconds <= thresholds.ss && ['s', seconds]) ||\n (seconds < thresholds.s && ['ss', seconds]) ||\n (minutes <= 1 && ['m']) ||\n (minutes < thresholds.m && ['mm', minutes]) ||\n (hours <= 1 && ['h']) ||\n (hours < thresholds.h && ['hh', hours]) ||\n (days <= 1 && ['d']) ||\n (days < thresholds.d && ['dd', days]);\n\n if (thresholds.w != null) {\n a =\n a ||\n (weeks <= 1 && ['w']) ||\n (weeks < thresholds.w && ['ww', weeks]);\n }\n a = a ||\n (months <= 1 && ['M']) ||\n (months < thresholds.M && ['MM', months]) ||\n (years <= 1 && ['y']) || ['yy', years];\n\n a[2] = withoutSuffix;\n a[3] = +posNegDuration > 0;\n a[4] = locale;\n return substituteTimeAgo.apply(null, a);\n }\n\n // This function allows you to set the rounding function for relative time strings\n function getSetRelativeTimeRounding(roundingFunction) {\n if (roundingFunction === undefined) {\n return round;\n }\n if (typeof roundingFunction === 'function') {\n round = roundingFunction;\n return true;\n }\n return false;\n }\n\n // This function allows you to set a threshold for relative time strings\n function getSetRelativeTimeThreshold(threshold, limit) {\n if (thresholds[threshold] === undefined) {\n return false;\n }\n if (limit === undefined) {\n return thresholds[threshold];\n }\n thresholds[threshold] = limit;\n if (threshold === 's') {\n thresholds.ss = limit - 1;\n }\n return true;\n }\n\n function humanize(argWithSuffix, argThresholds) {\n if (!this.isValid()) {\n return this.localeData().invalidDate();\n }\n\n var withSuffix = false,\n th = thresholds,\n locale,\n output;\n\n if (typeof argWithSuffix === 'object') {\n argThresholds = argWithSuffix;\n argWithSuffix = false;\n }\n if (typeof argWithSuffix === 'boolean') {\n withSuffix = argWithSuffix;\n }\n if (typeof argThresholds === 'object') {\n th = Object.assign({}, thresholds, argThresholds);\n if (argThresholds.s != null && argThresholds.ss == null) {\n th.ss = argThresholds.s - 1;\n }\n }\n\n locale = this.localeData();\n output = relativeTime$1(this, !withSuffix, th, locale);\n\n if (withSuffix) {\n output = locale.pastFuture(+this, output);\n }\n\n return locale.postformat(output);\n }\n\n var abs$1 = Math.abs;\n\n function sign(x) {\n return (x > 0) - (x < 0) || +x;\n }\n\n function toISOString$1() {\n // for ISO strings we do not use the normal bubbling rules:\n // * milliseconds bubble up until they become hours\n // * days do not bubble at all\n // * months bubble up until they become years\n // This is because there is no context-free conversion between hours and days\n // (think of clock changes)\n // and also not between days and months (28-31 days per month)\n if (!this.isValid()) {\n return this.localeData().invalidDate();\n }\n\n var seconds = abs$1(this._milliseconds) / 1000,\n days = abs$1(this._days),\n months = abs$1(this._months),\n minutes,\n hours,\n years,\n s,\n total = this.asSeconds(),\n totalSign,\n ymSign,\n daysSign,\n hmsSign;\n\n if (!total) {\n // this is the same as C#'s (Noda) and python (isodate)...\n // but not other JS (goog.date)\n return 'P0D';\n }\n\n // 3600 seconds -> 60 minutes -> 1 hour\n minutes = absFloor(seconds / 60);\n hours = absFloor(minutes / 60);\n seconds %= 60;\n minutes %= 60;\n\n // 12 months -> 1 year\n years = absFloor(months / 12);\n months %= 12;\n\n // inspired by https://github.com/dordille/moment-isoduration/blob/master/moment.isoduration.js\n s = seconds ? seconds.toFixed(3).replace(/\\.?0+$/, '') : '';\n\n totalSign = total < 0 ? '-' : '';\n ymSign = sign(this._months) !== sign(total) ? '-' : '';\n daysSign = sign(this._days) !== sign(total) ? '-' : '';\n hmsSign = sign(this._milliseconds) !== sign(total) ? '-' : '';\n\n return (\n totalSign +\n 'P' +\n (years ? ymSign + years + 'Y' : '') +\n (months ? ymSign + months + 'M' : '') +\n (days ? daysSign + days + 'D' : '') +\n (hours || minutes || seconds ? 'T' : '') +\n (hours ? hmsSign + hours + 'H' : '') +\n (minutes ? hmsSign + minutes + 'M' : '') +\n (seconds ? hmsSign + s + 'S' : '')\n );\n }\n\n var proto$2 = Duration.prototype;\n\n proto$2.isValid = isValid$1;\n proto$2.abs = abs;\n proto$2.add = add$1;\n proto$2.subtract = subtract$1;\n proto$2.as = as;\n proto$2.asMilliseconds = asMilliseconds;\n proto$2.asSeconds = asSeconds;\n proto$2.asMinutes = asMinutes;\n proto$2.asHours = asHours;\n proto$2.asDays = asDays;\n proto$2.asWeeks = asWeeks;\n proto$2.asMonths = asMonths;\n proto$2.asQuarters = asQuarters;\n proto$2.asYears = asYears;\n proto$2.valueOf = valueOf$1;\n proto$2._bubble = bubble;\n proto$2.clone = clone$1;\n proto$2.get = get$2;\n proto$2.milliseconds = milliseconds;\n proto$2.seconds = seconds;\n proto$2.minutes = minutes;\n proto$2.hours = hours;\n proto$2.days = days;\n proto$2.weeks = weeks;\n proto$2.months = months;\n proto$2.years = years;\n proto$2.humanize = humanize;\n proto$2.toISOString = toISOString$1;\n proto$2.toString = toISOString$1;\n proto$2.toJSON = toISOString$1;\n proto$2.locale = locale;\n proto$2.localeData = localeData;\n\n proto$2.toIsoString = deprecate(\n 'toIsoString() is deprecated. Please use toISOString() instead (notice the capitals)',\n toISOString$1\n );\n proto$2.lang = lang;\n\n // FORMATTING\n\n addFormatToken('X', 0, 0, 'unix');\n addFormatToken('x', 0, 0, 'valueOf');\n\n // PARSING\n\n addRegexToken('x', matchSigned);\n addRegexToken('X', matchTimestamp);\n addParseToken('X', function (input, array, config) {\n config._d = new Date(parseFloat(input) * 1000);\n });\n addParseToken('x', function (input, array, config) {\n config._d = new Date(toInt(input));\n });\n\n //! moment.js\n\n hooks.version = '2.29.4';\n\n setHookCallback(createLocal);\n\n hooks.fn = proto;\n hooks.min = min;\n hooks.max = max;\n hooks.now = now;\n hooks.utc = createUTC;\n hooks.unix = createUnix;\n hooks.months = listMonths;\n hooks.isDate = isDate;\n hooks.locale = getSetGlobalLocale;\n hooks.invalid = createInvalid;\n hooks.duration = createDuration;\n hooks.isMoment = isMoment;\n hooks.weekdays = listWeekdays;\n hooks.parseZone = createInZone;\n hooks.localeData = getLocale;\n hooks.isDuration = isDuration;\n hooks.monthsShort = listMonthsShort;\n hooks.weekdaysMin = listWeekdaysMin;\n hooks.defineLocale = defineLocale;\n hooks.updateLocale = updateLocale;\n hooks.locales = listLocales;\n hooks.weekdaysShort = listWeekdaysShort;\n hooks.normalizeUnits = normalizeUnits;\n hooks.relativeTimeRounding = getSetRelativeTimeRounding;\n hooks.relativeTimeThreshold = getSetRelativeTimeThreshold;\n hooks.calendarFormat = getCalendarFormat;\n hooks.prototype = proto;\n\n // currently HTML5 input type only supports 24-hour formats\n hooks.HTML5_FMT = {\n DATETIME_LOCAL: 'YYYY-MM-DDTHH:mm', // <input type=\"datetime-local\" />\n DATETIME_LOCAL_SECONDS: 'YYYY-MM-DDTHH:mm:ss', // <input type=\"datetime-local\" step=\"1\" />\n DATETIME_LOCAL_MS: 'YYYY-MM-DDTHH:mm:ss.SSS', // <input type=\"datetime-local\" step=\"0.001\" />\n DATE: 'YYYY-MM-DD', // <input type=\"date\" />\n TIME: 'HH:mm', // <input type=\"time\" />\n TIME_SECONDS: 'HH:mm:ss', // <input type=\"time\" step=\"1\" />\n TIME_MS: 'HH:mm:ss.SSS', // <input type=\"time\" step=\"0.001\" />\n WEEK: 'GGGG-[W]WW', // <input type=\"week\" />\n MONTH: 'YYYY-MM', // <input type=\"month\" />\n };\n\n return hooks;\n\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\nimport $ from 'jquery'\n\n/**\n * Private TransitionEnd Helpers\n */\n\nconst TRANSITION_END = 'transitionend'\nconst MAX_UID = 1000000\nconst MILLISECONDS_MULTIPLIER = 1000\n\n// Shoutout AngusCroll (https://goo.gl/pxwQGp)\nfunction 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\nfunction getSpecialTransitionEndEvent() {\n return {\n bindType: TRANSITION_END,\n delegateType: TRANSITION_END,\n handle(event) {\n if ($(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\nfunction transitionEndEmulator(duration) {\n let called = false\n\n $(this).one(Util.TRANSITION_END, () => {\n called = true\n })\n\n setTimeout(() => {\n if (!called) {\n Util.triggerTransitionEnd(this)\n }\n }, duration)\n\n return this\n}\n\nfunction setTransitionEndSupport() {\n $.fn.emulateTransitionEnd = transitionEndEmulator\n $.event.special[Util.TRANSITION_END] = getSpecialTransitionEndEvent()\n}\n\n/**\n * Public Util API\n */\n\nconst Util = {\n TRANSITION_END: 'bsTransitionEnd',\n\n 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\n getSelectorFromElement(element) {\n let selector = element.getAttribute('data-target')\n\n if (!selector || selector === '#') {\n const 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\n getTransitionDurationFromElement(element) {\n if (!element) {\n return 0\n }\n\n // Get transition-duration of the element\n let transitionDuration = $(element).css('transition-duration')\n let transitionDelay = $(element).css('transition-delay')\n\n const floatTransitionDuration = parseFloat(transitionDuration)\n const floatTransitionDelay = parseFloat(transitionDelay)\n\n // Return 0 if element or transition duration is not found\n if (!floatTransitionDuration && !floatTransitionDelay) {\n return 0\n }\n\n // If multiple durations are defined, take the first\n transitionDuration = transitionDuration.split(',')[0]\n transitionDelay = transitionDelay.split(',')[0]\n\n return (parseFloat(transitionDuration) + parseFloat(transitionDelay)) * MILLISECONDS_MULTIPLIER\n },\n\n reflow(element) {\n return element.offsetHeight\n },\n\n triggerTransitionEnd(element) {\n $(element).trigger(TRANSITION_END)\n },\n\n supportsTransitionEnd() {\n return Boolean(TRANSITION_END)\n },\n\n isElement(obj) {\n return (obj[0] || obj).nodeType\n },\n\n typeCheckConfig(componentName, config, configTypes) {\n for (const property in configTypes) {\n if (Object.prototype.hasOwnProperty.call(configTypes, property)) {\n const expectedTypes = configTypes[property]\n const value = config[property]\n const valueType = value && Util.isElement(value) ?\n 'element' : toType(value)\n\n if (!new RegExp(expectedTypes).test(valueType)) {\n throw new Error(\n `${componentName.toUpperCase()}: ` +\n `Option \"${property}\" provided type \"${valueType}\" ` +\n `but expected type \"${expectedTypes}\".`)\n }\n }\n }\n },\n\n findShadowRoot(element) {\n if (!document.documentElement.attachShadow) {\n return null\n }\n\n // Can find the shadow root otherwise it'll return the document\n if (typeof element.getRootNode === 'function') {\n const root = element.getRootNode()\n return root instanceof ShadowRoot ? root : null\n }\n\n if (element instanceof ShadowRoot) {\n return element\n }\n\n // when we don't find a shadow root\n if (!element.parentNode) {\n return null\n }\n\n return Util.findShadowRoot(element.parentNode)\n },\n\n jQueryDetection() {\n if (typeof $ === 'undefined') {\n throw new TypeError('Bootstrap\\'s JavaScript requires jQuery. jQuery must be included before Bootstrap\\'s JavaScript.')\n }\n\n const version = $.fn.jquery.split(' ')[0].split('.')\n const minMajor = 1\n const ltMajor = 2\n const minMinor = 9\n const minPatch = 1\n const 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\nUtil.jQueryDetection()\nsetTransitionEndSupport()\n\nexport default Util\n","'use strict';\n\nmodule.exports = function (include) {\n if (typeof include === 'function') {\n include();\n } else if (typeof include === 'object') {\n Object.keys(include).forEach(function (key) {\n if (typeof include[key] === 'function') {\n include[key]();\n }\n });\n }\n};\n","'use strict';\n\nmodule.exports = function (element) {\n var position = element && element.length ? element.offset().top : 0;\n $('html, body').animate({\n scrollTop: position\n }, 500);\n if (!element) {\n $('.logo-home').focus();\n }\n};\n","'use strict';\n\nvar carouselHelper = require('~/components/carousel');\nvar load3dModel = require('~/components/load3dModel');\nvar loadVideo = require('~/components/loadVideo');\nvar focusHelper = require('base:components/focus');\n\n/**\n * Retrieves the relevant pid value\n * @param {jquery} $el - DOM container for a given add to cart button\n * @return {string} - value to be used when adding product to cart\n */\nfunction getPidValue($el) {\n var pid;\n\n if ($('#quickViewModal').hasClass('show') && !$('.product-set').length) {\n pid = $($el)\n .closest('.modal-content')\n .find('.product-quickview')\n .data('pid');\n } else if ($('.product-set-detail').length || $('.product-set').length) {\n pid = $($el)\n .closest('.product-detail')\n .find('.product-id')\n .text();\n } else {\n pid = $('.product-detail:not(\".bundle-item\")').data('pid');\n }\n\n return pid;\n}\n\n/**\n * Retrieve contextual quantity selector\n * @param {jquery} $el - DOM container for the relevant quantity\n * @return {jquery} - quantity selector DOM container\n */\nfunction getQuantitySelector($el) {\n return $el && $('.set-items').length\n ? $($el)\n .closest('.product-detail')\n .find('.quantity-select')\n : $('.quantity-select');\n}\n\n/**\n * Retrieves the value associated with the Quantity pull-down menu\n * @param {jquery} $el - DOM container for the relevant quantity\n * @return {string} - value found in the quantity input\n */\nfunction getQuantitySelected($el) {\n return getQuantitySelector($el).val();\n}\n\n/**\n * Process the attribute values for an attribute that has image swatches\n *\n * @param {Object} attr - Attribute\n * @param {string} attr.id - Attribute ID\n * @param {Object[]} attr.values - Array of attribute value objects\n * @param {string} attr.values.value - Attribute coded value\n * @param {string} attr.values.url - URL to de/select an attribute value of the product\n * @param {boolean} attr.values.isSelectable - Flag as to whether an attribute value can be\n * selected. If there is no variant that corresponds to a specific combination of attribute\n * values, an attribute may be disabled in the Product Detail Page\n * @param {jQuery} $productContainer - DOM container for a given product\n * @param {Object} msgs - object containing resource messages\n */\nfunction processSwatchValues(attr, $productContainer, msgs, isQuickView) {\n attr.values.forEach(function (attrValue) {\n var $attrValue = $productContainer.find(\n '[data-attr=\"' + attr.id + '\"] [data-attr-value=\"' + attrValue.value + '\"]'\n );\n var $swatchButton = $attrValue.parent();\n\n if (attrValue.selected) {\n $attrValue.addClass('selected');\n $attrValue.siblings('.selected-assistive-text').text(msgs.assistiveSelectedText);\n } else {\n $attrValue.removeClass('selected');\n $attrValue.siblings('.selected-assistive-text').empty();\n }\n if (attrValue.url && !attrValue.selected) {\n $swatchButton.attr('data-url', attrValue.url + (isQuickView ? '&isQuickView=true' : ''));\n } else {\n $swatchButton.removeAttr('data-url');\n }\n\n // Disable if not selectable\n $attrValue.removeClass('selectable unselectable');\n\n $attrValue.addClass(attrValue.selectable ? 'selectable' : 'unselectable');\n });\n}\n\n/**\n * Process the attribute values for an attribute that has image swatches\n *\n * @param {Object} attr - Attribute\n * @param {string} attr.id - Attribute ID\n * @param {Object[]} attr.values - Array of attribute value objects\n * @param {string} attr.values.value - Attribute coded value\n * @param {string} attr.values.url - URL to de/select an attribute value of the product\n * @param {boolean} attr.values.isSelectable - Flag as to whether an attribute value can be\n * selected. If there is no variant that corresponds to a specific combination of attribute\n * values, an attribute may be disabled in the Product Detail Page\n * @param {jQuery} $productContainer - DOM container for a given product\n */\nfunction processSizeValues(attr, $productContainer, isQuickView) {\n attr.values.forEach(function (attrValue) {\n var $attrValue = $productContainer.find(\n '[data-attr=\"' + attr.id + '\"] [data-attr-value=\"' + attrValue.value + '\"]'\n );\n var $swatchButton = $attrValue.parent();\n\n if (attrValue.selected) {\n $swatchButton.addClass('selected');\n } else {\n $swatchButton.removeClass('selected');\n }\n\n if (attrValue.url) {\n $swatchButton.attr('data-url', attrValue.url + (isQuickView ? '&isQuickView=true' : ''));\n } else {\n $swatchButton.removeAttr('data-url');\n }\n\n // Disable if not selectable\n $swatchButton.removeAttr('disabled');\n\n if (!attrValue.selectable) {\n $swatchButton.attr('disabled', true);\n }\n\n if (attrValue.isOnline) {\n $swatchButton.removeClass('d-none');\n } else {\n $swatchButton.addClass('d-none');\n }\n\n var url = attrValue.url;\n var color = url.substring(\n url.lastIndexOf('_color=') + 7,\n url.indexOf('&')\n ).replace('%26', '&').replace('%2B', '+').replace('%25', '%').replace('%3E', '>');\n var size = attrValue.value;\n var isOrderable;\n if (typeof attrValue.inStockMapping[color] !== 'undefined') {\n isOrderable = !!attrValue.inStockMapping[color][size];\n }\n if (isOrderable) {\n $swatchButton.removeClass('swatch-not-orderable');\n } else {\n $swatchButton.addClass('swatch-not-orderable');\n }\n });\n}\n\n/**\n * Process attribute values associated with an attribute that does not have image swatches\n *\n * @param {Object} attr - Attribute\n * @param {string} attr.id - Attribute ID\n * @param {Object[]} attr.values - Array of attribute value objects\n * @param {string} attr.values.value - Attribute coded value\n * @param {string} attr.values.url - URL to de/select an attribute value of the product\n * @param {boolean} attr.values.isSelectable - Flag as to whether an attribute value can be\n * selected. If there is no variant that corresponds to a specific combination of attribute\n * values, an attribute may be disabled in the Product Detail Page\n * @param {jQuery} $productContainer - DOM container for a given product\n */\nfunction processNonSwatchValues(attr, $productContainer, isQuickView) {\n var $attr = '[data-attr=\"' + attr.id + '\"]';\n var $defaultOption = $productContainer.find($attr + ' .select-' + attr.id + ' option:first');\n $defaultOption.attr('value', attr.resetUrl);\n\n attr.values.forEach(function (attrValue) {\n var $attrValue = $productContainer.find($attr + ' [data-attr-value=\"' + attrValue.value + '\"]');\n $attrValue.attr('value', attrValue.url + (isQuickView ? '&isQuickView=true' : '')).removeAttr('disabled');\n\n if (!attrValue.selectable) {\n $attrValue.attr('disabled', true);\n }\n });\n}\n\n/**\n * Routes the handling of attribute processing depending on whether the attribute has image\n * swatches or not\n *\n * @param {Object} attrs - Attribute\n * @param {string} attr.id - Attribute ID\n * @param {jQuery} $productContainer - DOM element for a given product\n * @param {Object} msgs - object containing resource messages\n */\nfunction updateAttrs(attrs, $productContainer, msgs, isQuickView) {\n // Currently, the only attribute type that has image swatches is Color.\n var attrsWithSwatches = ['color'];\n\n attrs.forEach(function (attr) {\n if (attrsWithSwatches.indexOf(attr.id) > -1) {\n processSwatchValues(attr, $productContainer, msgs, isQuickView);\n } else if (attr.id === 'size') {\n processSizeValues(attr, $productContainer, isQuickView);\n } else {\n processNonSwatchValues(attr, $productContainer, isQuickView);\n }\n });\n}\n\n/**\n * Updates the availability status in the Product Detail Page\n *\n * @param {Object} response - Ajax response object after an\n * attribute value has been [de]selected\n * @param {jQuery} $productContainer - DOM element for a given product\n */\nfunction updateAvailability(response, $productContainer) {\n var availabilityValue = '';\n var availabilityMessages = response.product.availability.messages;\n if (!response.product.readyToOrder) {\n availabilityValue = '<li><div>' + response.resources.info_selectforstock + '</div></li>';\n } else {\n availabilityMessages.forEach(function (message) {\n availabilityValue += '<li><div>' + message + '</div></li>';\n });\n }\n\n if (response.product) {\n var updatedAvailability = response.product.productSoldWithQuoteRequest ? false : response.product.available;\n $productContainer.find('.product-availability').attr('data-available', updatedAvailability);\n $productContainer.find('.product-availability').attr('data-ready-to-order', response.product.readyToOrder);\n }\n\n $($productContainer).trigger('product:updateAvailability', {\n product: response.product,\n $productContainer: $productContainer,\n message: availabilityValue,\n resources: response.resources\n });\n}\n\n/**\n * Updates the lens Description status in the Product Detail Page\n *\n * @param {Object} response - Ajax response object after an\n * attribute value has been [de]selected\n * @param {jQuery} $productContainer - DOM element for a given product\n */\nfunction updateLensDescription(response, $productContainer) {\n var showLensLabel = false;\n if (response.product.lensName && response.product.lensName !== 'No Lens Reference') {\n if (response.product.lensName && response.product.lensName.length > 0) {\n $productContainer.find('.lens-attribute-name').html(response.product.lensName);\n showLensLabel = true;\n } else {\n $productContainer.find('.lens-attribute-name').empty();\n }\n\n if (response.product.lensCategory && response.product.lensCategory.length > 0) {\n $productContainer.find('.lens-attribute-category').html(' - ' + response.product.lensCategory);\n showLensLabel = true;\n } else {\n $productContainer.find('.lens-attribute-category').empty();\n }\n\n if (response.product.lensDescription && response.product.lensDescription.length > 0) {\n $productContainer.find('.lens-attribute-description').html(response.product.lensDescription);\n showLensLabel = true;\n } else {\n $productContainer.find('.lens-attribute-description').empty();\n }\n } else {\n $productContainer.find('.lens-attribute-name').empty();\n $productContainer.find('.lens-attribute-category').empty();\n $productContainer.find('.lens-attribute-description').empty();\n }\n\n // eslint-disable-next-line no-unused-expressions\n if (showLensLabel) {\n $productContainer.find('.lens-attributes').removeClass('d-none');\n } else {\n $productContainer.find('.lens-attributes').addClass('d-none');\n }\n}\n\n/**\n * Updates the Manufacturer SKU in the Product Detail Page\n *\n * @param {Object} response - Ajax response object after an\n * attribute value has been [de]selected\n * @param {jQuery} $productContainer - DOM element for a given product\n */\nfunction updateManufacturerSKU(response, $productContainer) {\n if (response.product.manufacturerSKU && response.product.manufacturerSKU.length > 0) {\n $productContainer.find('.manufacturer-sku').html(response.product.manufacturerSKU);\n $productContainer.find('.manufacturer-sku-section').removeClass('d-none');\n } else {\n $productContainer.find('.manufacturer-sku').empty();\n $productContainer.find('.manufacturer-sku-section').addClass('d-none');\n }\n}\n\n/**\n * Updates the Add to cart in the Product Detail Page\n * If the product is only sellable with a quote then the add to cart redirect to this page\n *\n * @param {Object} response - Ajax response object after an\n * attribute value has been [de]selected\n * @param {jQuery} $productContainer - DOM element for a given product\n */\nfunction updateProductSoldWithQuoteRequest(response, $productContainer) {\n $productContainer.find('.pdp-quote-button a, .js-content-asset-quote-link').attr('href', response.product.productQuoteUrl);\n if (response.product.productSoldWithQuoteRequest) {\n $productContainer.find('.pdp-quote-button').removeClass('d-none').addClass('d-flex');\n $productContainer.find('.prices-add-to-cart-actions .pdp-checkout-button').not('.pdp-quote-button').addClass('d-none').removeClass('d-flex');\n $productContainer.find('.add-to-cart-quantities').addClass('d-none');\n $productContainer.find('.update-cart-url').parent().addClass('d-none').removeClass('d-flex');\n $productContainer.find('.pdp-reinsurance-asset').addClass('d-none');\n } else {\n $productContainer.find('.pdp-quote-button').addClass('d-none').removeClass('d-flex');\n $productContainer.find('.prices-add-to-cart-actions .pdp-checkout-button').not('.pdp-quote-button').removeClass('d-none').addClass('d-flex');\n $productContainer.find('.add-to-cart-quantities').removeClass('d-none');\n $productContainer.find('.update-cart-url').parent().removeClass('d-none').addClass('d-flex');\n $productContainer.find('.pdp-reinsurance-asset').removeClass('d-none');\n }\n}\n\n/**\n * Update promotion percentage\n * @param {Object} response response\n * @param {JQuery} $productContainer productContainer\n */\nfunction updatePercentage(response, $productContainer) {\n var price = $productContainer.find('.prices .price > span');\n price.append('<span class=\"value percentage\" content=\"' + response.product.price.list.decimalPrice + '\"><span class=\"percentageValue\">' + response.product.productSale + '%</span></span>');\n}\n\n/**\n * Updates the recommendation carousal in the Product Detail Page\n *\n * @param {Object} response - Ajax response object after an\n * attribute value has been [de]selected\n * @param {jQuery} $productContainer - DOM element for a given product\n */\nfunction updateRecommendations(response, $productContainer) {\n var $recommendations = $productContainer.find('.recommendations-carousel');\n $recommendations.html(response.product.relatedRecommendations);\n if (response.product.relatedRecommendations) {\n $recommendations.removeClass('slick-initialized slick-slider');\n carouselHelper.methods.initRecommendationsCarousel($recommendations);\n $productContainer.find('.recommendations .product-reco').removeClass('d-none');\n $productContainer.find('.recommendations .product-reco').attr('aria-hidden', 'false');\n } else {\n $productContainer.find('.recommendations .product-reco').addClass('d-none');\n $productContainer.find('.recommendations .product-reco').attr('aria-hidden', 'true');\n }\n}\n\n/**\n * Generates html for product attributes section\n *\n * @param {array} attributes - list of attributes\n * @return {string} - Compiled HTML\n */\nfunction getAttributesHtml(attributes) {\n if (!attributes) {\n return '';\n }\n\n var html = '';\n\n attributes.forEach(function (attributeGroup) {\n if (attributeGroup.ID === 'mainAttributes') {\n attributeGroup.attributes.forEach(function (attribute) {\n html += '<div class=\"attribute-values\">' + attribute.label + ': ' + attribute.value + '</div>';\n });\n }\n });\n\n return html;\n}\n\n/**\n * @typedef UpdatedOptionValue\n * @type Object\n * @property {string} id - Option value ID for look up\n * @property {string} url - Updated option value selection URL\n */\n\n/**\n * @typedef OptionSelectionResponse\n * @type Object\n * @property {string} priceHtml - Updated price HTML code\n * @property {Object} options - Updated Options\n * @property {string} options.id - Option ID\n * @property {UpdatedOptionValue[]} options.values - Option values\n */\n\n/**\n * Updates DOM using post-option selection Ajax response\n *\n * @param {OptionSelectionResponse} options - Ajax response options from selecting a product option\n * @param {jQuery} $productContainer - DOM element for current product\n */\nfunction updateOptions(options, $productContainer) {\n options.forEach(function (option) {\n var $optionEl = $productContainer.find('.product-option[data-option-id*=\"' + option.id + '\"]');\n option.values.forEach(function (value) {\n var valueEl = $optionEl.find('option[data-value-id*=\"' + value.id + '\"]');\n valueEl.val(value.url);\n });\n });\n}\n\n/**\n * Parses JSON from Ajax call made whenever an attribute value is [de]selected\n * @param {Object} response - response from Ajax call\n * @param {Object} response.product - Product object\n * @param {string} response.product.id - Product ID\n * @param {Object[]} response.product.variationAttributes - Product attributes\n * @param {Object[]} response.product.images - Product images\n * @param {boolean} response.product.hasRequiredAttrsSelected - Flag as to whether all required\n * attributes have been selected. Used partially to\n * determine whether the Add to Cart button can be enabled\n * @param {jQuery} $productContainer - DOM element for a given product.\n */\nfunction handleVariantResponse(response, $productContainer) {\n var isChoiceOfBonusProducts = $productContainer.parents('.choose-bonus-product-dialog').length > 0;\n var isVaraint;\n var isMaster;\n\n if (response.product.isEcommerceDisabled === true) {\n $('.js-hide-on-ecom-disabled', $productContainer).addClass('hide-ecom');\n $('.js-show-on-ecom-disabled', $productContainer).removeClass('hide-ecom');\n } else {\n $('.js-hide-on-ecom-disabled', $productContainer).removeClass('hide-ecom');\n $('.js-show-on-ecom-disabled', $productContainer).addClass('hide-ecom');\n }\n\n if (response.product.variationAttributes) {\n updateAttrs(response.product.variationAttributes, $productContainer, response.resources, response.isQuickView);\n\n isMaster = response.product.productType === 'master';\n isVaraint = response.product.productType === 'variant';\n\n var hasSelectedColor = $productContainer.find('.color-value').hasClass('selected');\n var $sizeButtonsContainer = $productContainer.find('.size-buttons-wrapper');\n\n // handle the case when a master with size and color attributes has no attribute selected and it is displayed as a master (incorrect name, prices appear as a range)\n if (isMaster && hasSelectedColor) { // just the color is selected, the size is not\n if ($sizeButtonsContainer.hasClass('size-first-load')) { // page first load with no selected sizes\n var selectableSizesList = $sizeButtonsContainer.find('.size-attribute').not(':disabled'); // list of selectable sizes\n if (selectableSizesList.length > 0) { // selectable sizes list is not empty\n $sizeButtonsContainer.removeClass('size-first-load'); // remove the original class added from the html when the page is loaded\n attributeSelect($(selectableSizesList[0]).attr('data-url'), $productContainer); // select the first selevctable size\n }\n }\n }\n\n if (isChoiceOfBonusProducts && isVaraint) {\n $productContainer.parent('.bonus-product-item').data('pid', response.product.id);\n\n $productContainer.parent('.bonus-product-item').data('ready-to-order', response.product.readyToOrder);\n }\n }\n\n // Update Display Name\n var productName = response.product.productName;\n $productContainer.find('.product-name').html(productName);\n\n // Update Display Color\n if (response.product.frameColor && response.product.frameColor.length > 0) {\n $productContainer.find('.frame-attribute-color-value').html(response.product.frameColor);\n }\n\n // Update carousel\n var carouselHtml = response.product.carouselHtml;\n carouselHelper.methods.createProductCarousel(carouselHtml, $productContainer);\n load3dModel.bind3dModel();\n loadVideo();\n\n // Update pricing\n if (!isChoiceOfBonusProducts) {\n var $pricesContainer = $('.prices', $productContainer);\n if (response.product.isPriceHidden === true) {\n $pricesContainer.addClass('hide-price');\n } else {\n $pricesContainer.removeClass('hide-price');\n }\n var $priceSelector = $('.price', $pricesContainer).length\n ? $('.price', $pricesContainer)\n : $('.prices .price');\n $priceSelector.replaceWith(response.product.price.html);\n }\n\n // Update promotions\n $('.promotions')\n .empty()\n .html(response.product.promotionsHtml);\n\n updateAvailability(response, $productContainer);\n\n if (isChoiceOfBonusProducts) {\n var $selectButton = $productContainer.find('.select-bonus-product');\n $selectButton.trigger('bonusproduct:updateSelectButton', {\n product: response.product,\n $productContainer: $productContainer\n });\n } else {\n // Enable \"Add to Cart\" button if all required attributes have been selected\n $('button.add-to-cart, button.add-to-cart-global, button.update-cart-product-global')\n .trigger('product:updateAddToCart', {\n product: response.product,\n $productContainer: $productContainer\n })\n .trigger('product:statusUpdate', response.product);\n }\n if (response.product.productSale) {\n updatePercentage(response, $productContainer);\n }\n updateLensDescription(response, $productContainer);\n\n updateRecommendations(response, $productContainer);\n $productContainer.find('.size-description').html(response.product.sizeDescription);\n\n if (response.product.pdpContentAssets) {\n let $contentAssetSection = $productContainer.find('.content-asset-section');\n if ($contentAssetSection.length) {\n $contentAssetSection.html(response.product.pdpContentAssets);\n } else {\n $productContainer.siblings('.content-asset-section').html(response.product.pdpContentAssets);\n }\n }\n if (response.product.pdpContentAssetsSeo) {\n let $contentAssetSeoSection = $productContainer.find('.content-asset-seo-section');\n if ($contentAssetSeoSection.length) {\n $contentAssetSeoSection.html(response.product.pdpContentAssetsSeo);\n } else {\n $productContainer.siblings('.content-asset-seo-section').html(response.product.pdpContentAssetsSeo);\n }\n }\n\n // Update Manufacturer SKU\n updateManufacturerSKU(response, $productContainer);\n\n updateProductSoldWithQuoteRequest(response, $productContainer);\n\n // Update Delivery Dates\n if (!response.product.available || !response.displayShippingDateRange) {\n $productContainer.find('.shipping-dates').addClass('d-none');\n $productContainer.find('.shipping-dates-value-container').addClass('d-none');\n } else {\n $productContainer.find('.shipping-dates').removeClass('d-none');\n $productContainer.find('.shipping-dates-value-container').removeClass('d-none');\n\n // Check if free delivery or not\n if (response.product.shippingDates) {\n var deliveryPrice = response.product.shippingDates.shippingCost;\n if (deliveryPrice === '0.00') {\n $productContainer.find('.free-shipping-dates').removeClass('d-none');\n $productContainer.find('.paid-shipping-dates').addClass('d-none');\n } else {\n $productContainer.find('.paid-shipping-dates').removeClass('d-none');\n $productContainer.find('.free-shipping-dates').addClass('d-none');\n }\n }\n }\n\n // Update attributes\n $productContainer\n .find('.main-attributes')\n .empty()\n .html(getAttributesHtml(response.product.attributes));\n\n if ($('.filter-by-lens-technology-list').length > 0 && $('.filter-by-lens-technology-list.no-refresh').length === 0) {\n var $tabToSelect = $('.filter-by-lens-technology-list li a[data-lenstechnology=\\'' + response.product.lensTechnology.toLowerCase().replace(/\\.|\\s/g, '-') + '\\']');\n $('.filter-by-lens-technology-list li').removeClass('active');\n $tabToSelect.parent().addClass('active');\n $('.lens-technology-description-variation').removeClass('d-none d-flex').addClass('d-none');\n var $currentSliderContainer = $('.lens-technology-description .variation-' + escapeSpecialChar(response.product.lensTechnology.toLowerCase().replace(/\\.|\\s/g, '-')));\n $currentSliderContainer.removeClass('d-none').addClass('d-flex');\n\n $('.variant-technology-image').removeClass('active');\n var $newImageToSelect = $('.lens-technology-description-variation .variant-color-attribute[data-image-variant=\\'' + response.product.id + '\\']:visible');\n $newImageToSelect.parent().addClass('active');\n\n $('.variant-technology-description').removeClass('active d-flex').addClass('d-none');\n var $newSectionToDisplay = $newImageToSelect.parents('.lens-technology-description-variation').find('.variant-technology-description[data-variant=\\'' + response.product.id + '\\']').first();\n $newSectionToDisplay.removeClass('d-none').addClass('active d-flex');\n var $currentSlickSlider = $currentSliderContainer.find('.lens-technology-carousel:visible');\n if (!$currentSlickSlider.hasClass('slick-initialized slick-slider')) {\n carouselHelper.methods.initLensTechnologyCarousel($currentSlickSlider);\n }\n } else {\n $('.filter-by-lens-technology-list').removeClass('no-refresh');\n }\n}\n\n/**\n * @typespec UpdatedQuantity\n * @type Object\n * @property {boolean} selected - Whether the quantity has been selected\n * @property {string} value - The number of products to purchase\n * @property {string} url - Compiled URL that specifies variation attributes, product ID, options,\n * etc.\n */\n\n/**\n * Updates the quantity DOM elements post Ajax call\n * @param {UpdatedQuantity[]} quantities -\n * @param {jQuery} $productContainer - DOM container for a given product\n */\nfunction updateQuantities(quantities, $productContainer) {\n if (!($productContainer.parent('.bonus-product-item').length > 0)) {\n var optionsHtml = quantities\n .map(function (quantity) {\n var selected = quantity.selected ? ' selected ' : '';\n return (\n '<option value=\"'\n + quantity.value\n + '\" data-url=\"'\n + quantity.url\n + '\"'\n + selected\n + '>'\n + quantity.value\n + '</option>'\n );\n })\n .join('');\n getQuantitySelector($productContainer)\n .empty()\n .html(optionsHtml);\n }\n}\n\n/**\n * updates the product view when a product attribute is selected or deselected or when\n * changing quantity\n * @param {string} selectedValueUrl - the Url for the selected variation value\n * @param {jQuery} $productContainer - DOM element for current product\n */\nfunction attributeSelect(selectedValueUrl, $productContainer) {\n if (selectedValueUrl) {\n $('body').trigger('product:beforeAttributeSelect', { url: selectedValueUrl, container: $productContainer });\n\n $.ajax({\n url: selectedValueUrl,\n method: 'GET',\n success: function (data) {\n handleVariantResponse(data, $productContainer);\n updateOptions(data.product.options, $productContainer);\n var productQuantities = (data.product.customquantities && data.product.customquantities.length > 0) ? data.product.customquantities : data.product.quantities;\n updateQuantities(productQuantities, $productContainer);\n $('body').trigger('product:afterAttributeSelect', { data: data, container: $productContainer });\n $.spinner().stop();\n },\n error: function () {\n $.spinner().stop();\n }\n });\n }\n}\n\n/**\n * Retrieves url to use when adding a product to the cart\n *\n * @return {string} - The provided URL to use when adding a product to the cart\n */\nfunction getAddToCartUrl() {\n return $('.add-to-cart-url').val();\n}\n\n/**\n * Escape String for special Characters\n * @param {*} str\n * @returns\n */\nfunction escapeSpecialChar(str) {\n return str.replace(/\\+/g, '\\\\+');\n}\n\n/**\n * Parses the html for a modal window\n * @param {string} html - representing the body and footer of the modal window\n *\n * @return {Object} - Object with properties body and footer.\n */\nfunction parseHtml(html) {\n var $html = $('<div>').append($.parseHTML(html));\n\n var body = $html.find('.choice-of-bonus-product');\n var footer = $html.find('.modal-footer').children();\n\n return { body: body, footer: footer };\n}\n\n/**\n * Retrieves url to use when adding a product to the cart\n *\n * @param {Object} data - data object used to fill in dynamic portions of the html\n */\nfunction chooseBonusProducts(data) {\n if ($('#chooseBonusProductModal').length !== 0) {\n $('#chooseBonusProductModal').remove();\n }\n var bonusUrl;\n if (data.bonusChoiceRuleBased) {\n bonusUrl = data.showProductsUrlRuleBased;\n } else {\n bonusUrl = data.showProductsUrlListBased;\n }\n\n var htmlString = '<!-- Modal -->'\n + '<div class=\"modal fade\" id=\"chooseBonusProductModal\" tabindex=\"-1\" role=\"dialog\">'\n + '<span class=\"enter-message sr-only\" ></span>'\n + '<div class=\"modal-dialog choose-bonus-product-dialog modal-lg modal-dialog-centered\" '\n + 'data-total-qty=\"'\n + data.maxBonusItems\n + '\"'\n + 'data-UUID=\"'\n + data.uuid\n + '\"'\n + 'data-pliUUID=\"'\n + data.pliUUID\n + '\"'\n + 'data-addToCartUrl=\"'\n + data.addToCartUrl\n + '\"'\n + 'data-pageStart=\"0\"'\n + 'data-pageSize=\"'\n + data.pageSize\n + '\"'\n + 'data-moreURL=\"'\n + data.showProductsUrlRuleBased\n + '\"'\n + 'data-bonusChoiceRuleBased=\"'\n + data.bonusChoiceRuleBased\n + '\">'\n + '<!-- Modal content-->'\n + '<div class=\"modal-content\">'\n + '<div class=\"modal-header\">'\n + ' <span class=\"\">'\n + data.labels.selectprods\n + '</span>'\n + ' <button type=\"button\" class=\"close pull-right\" data-dismiss=\"modal\">'\n + ' <span aria-hidden=\"true\">×</span>'\n + ' <span class=\"sr-only\"> </span>'\n + ' </button>'\n + '</div>'\n + '<div class=\"modal-body\"></div>'\n + '<div class=\"modal-footer d-none\"></div>'\n + '</div>'\n + '</div>'\n + '</div>';\n\n $('body').append(htmlString);\n\n $('#chooseBonusProductModal').on('shown.bs.modal', function () {\n if ($('.cart-page').length === 0) {\n $('#chooseBonusProductModal .modal-content')\n .spinner()\n .start();\n }\n });\n $('#chooseBonusProductModal').modal('show');\n $.ajax({\n url: bonusUrl,\n method: 'GET',\n dataType: 'json',\n success: function (response) {\n var parsedHtml = parseHtml(response.renderedTemplate);\n $('#chooseBonusProductModal .modal-body').empty();\n $('#chooseBonusProductModal .enter-message').text(response.enterDialogMessage);\n $('#chooseBonusProductModal .modal-header .close .sr-only').text(response.closeButtonText);\n $('#chooseBonusProductModal .modal-body').html(parsedHtml.body);\n $('#chooseBonusProductModal .modal-footer').html(parsedHtml.footer);\n\n $.spinner().stop();\n $('#chooseBonusProductModal .modal-content').spinner().stop();\n },\n error: function () {\n $.spinner().stop();\n $('#chooseBonusProductModal .modal-content').spinner().stop();\n }\n });\n}\n\n/**\n * Updates the Mini-Cart quantity value after the customer has pressed the \"Add to Cart\" button\n * @param {string} response - ajax response from clicking the add to cart button\n */\nfunction handlePostCartAdd(response) {\n $('.minicart').trigger('count:update', response);\n\n // show add to cart toast\n if (response.newBonusDiscountLineItem && Object.keys(response.newBonusDiscountLineItem).length !== 0) {\n chooseBonusProducts(response.newBonusDiscountLineItem);\n }\n}\n\n/**\n * Retrieves the bundle product item ID's for the Controller to replace bundle master product\n * items with their selected variants\n *\n * @return {string[]} - List of selected bundle product item ID's\n */\nfunction getChildProducts() {\n var childProducts = [];\n $('.bundle-item').each(function () {\n childProducts.push({\n pid: $(this)\n .find('.product-id')\n .text(),\n quantity: parseInt(\n $(this)\n .find('label.quantity')\n .data('quantity'),\n 10\n )\n });\n });\n\n return childProducts.length ? JSON.stringify(childProducts) : [];\n}\n\n/**\n * Retrieve product options\n *\n * @param {jQuery} $productContainer - DOM element for current product\n * @return {string} - Product options and their selected values\n */\nfunction getOptions($productContainer) {\n var options = $productContainer\n .find('.product-option')\n .map(function () {\n var $elOption = $(this).find('.options-select');\n var urlValue = $elOption.val();\n var selectedValueId = $elOption.find('option[value=\"' + urlValue + '\"]').data('value-id');\n return {\n optionId: $(this).data('option-id'),\n selectedValueId: selectedValueId\n };\n })\n .toArray();\n\n return JSON.stringify(options);\n}\n\nmodule.exports = {\n attributeSelect: attributeSelect,\n methods: {\n editBonusProducts: function (data) {\n chooseBonusProducts(data);\n }\n },\n\n focusChooseBonusProductModal: function () {\n $('body').on('shown.bs.modal', '#chooseBonusProductModal', function () {\n $('#chooseBonusProductModal')\n .siblings()\n .attr('aria-hidden', 'true');\n $('#chooseBonusProductModal .close').focus();\n });\n },\n\n onClosingChooseBonusProductModal: function () {\n $('body').on('hidden.bs.modal', '#chooseBonusProductModal', function () {\n $('#chooseBonusProductModal')\n .siblings()\n .attr('aria-hidden', 'false');\n });\n },\n\n trapChooseBonusProductModalFocus: function () {\n $('body').on('keydown', '#chooseBonusProductModal', function (e) {\n var focusParams = {\n event: e,\n containerSelector: '#chooseBonusProductModal',\n firstElementSelector: '.close',\n lastElementSelector: '.add-bonus-products'\n };\n focusHelper.setTabNextFocus(focusParams);\n });\n },\n\n buttonAttribute: function () {\n $(document).on('click', '[data-attr=\"color\"] button, [data-attr=\"size\"] button', function (e) {\n e.preventDefault();\n\n if ($(this).attr('disabled')) {\n return;\n }\n var $productContainer = $(this).closest('.set-item');\n if (!$productContainer.length) {\n $productContainer = $(this).closest('.product-detail');\n }\n\n attributeSelect($(this).attr('data-url'), $productContainer);\n });\n },\n\n selectAttribute: function () {\n $(document).on('change', 'select[class*=\"select-\"], .options-select', function (e) {\n e.preventDefault();\n\n var $productContainer = $(this).closest('.set-item');\n if (!$productContainer.length) {\n $productContainer = $(this).closest('.product-detail');\n }\n attributeSelect(e.currentTarget.value, $productContainer);\n });\n },\n\n availability: function () {\n $(document).on('change', '.quantity-select', function (e) {\n e.preventDefault();\n\n var $productContainer = $(this).closest('.product-detail');\n if (!$productContainer.length) {\n $productContainer = $(this)\n .closest('.modal-content')\n .find('.product-quickview');\n }\n\n if ($('.bundle-items', $productContainer).length === 0) {\n attributeSelect(\n $(e.currentTarget)\n .find('option:selected')\n .data('url'),\n $productContainer\n );\n }\n });\n },\n\n addToCart: function () {\n $(document).on('click', 'button.add-to-cart, button.add-to-cart-global', function () {\n var addToCartUrl;\n var pid;\n var pidsObj;\n var setPids;\n\n $('body').trigger('product:beforeAddToCart', this);\n\n if ($('.set-items').length && $(this).hasClass('add-to-cart-global')) {\n setPids = [];\n\n $('.product-detail').each(function () {\n if (!$(this).hasClass('product-set-detail')) {\n setPids.push({\n pid: $(this)\n .find('.product-id')\n .text(),\n qty: $(this)\n .find('.quantity-select')\n .val(),\n options: getOptions($(this))\n });\n }\n });\n pidsObj = JSON.stringify(setPids);\n }\n\n pid = getPidValue($(this));\n\n var $productContainer = $(this).closest('.product-detail');\n if (!$productContainer.length) {\n $productContainer = $(this)\n .closest('.quick-view-dialog')\n .find('.product-detail');\n }\n\n addToCartUrl = getAddToCartUrl();\n\n var form = {\n pid: pid,\n pidsObj: pidsObj,\n childProducts: getChildProducts(),\n quantity: getQuantitySelected($(this))\n };\n\n if (!$('.bundle-item').length) {\n form.options = getOptions($productContainer);\n }\n\n $(this).trigger('updateAddToCartFormData', form);\n if (addToCartUrl) {\n $.ajax({\n url: addToCartUrl,\n method: 'POST',\n data: form,\n success: function (data) {\n handlePostCartAdd(data);\n $('body').trigger('product:afterAddToCart', data);\n $.spinner().stop();\n },\n error: function () {\n $.spinner().stop();\n }\n });\n }\n });\n },\n selectBonusProduct: function () {\n $(document).on('click', '.select-bonus-product', function () {\n //Remove Previously added product\n $('.selected-pid').trigger('click');\n\n var $choiceOfBonusProduct = $(this).parents('.choice-of-bonus-product');\n var pid = $(this).data('pid');\n var maxPids = $('.choose-bonus-product-dialog').data('total-qty');\n var submittedQty = parseInt($choiceOfBonusProduct.find('.bonus-quantity-select').val(), 10);\n var totalQty = 0;\n $.each($('#chooseBonusProductModal .selected-bonus-products .selected-pid'), function () {\n totalQty += $(this).data('qty');\n });\n totalQty += submittedQty;\n var optionID = $choiceOfBonusProduct.find('.product-option').data('option-id');\n var valueId = $choiceOfBonusProduct.find('.options-select option:selected').data('valueId');\n if (totalQty <= maxPids) {\n var selectedBonusProductHtml = ''\n + '<div class=\"selected-pid row\" '\n + 'data-pid=\"'\n + pid\n + '\"'\n + 'data-qty=\"'\n + submittedQty\n + '\"'\n + 'data-optionID=\"'\n + (optionID || '')\n + '\"'\n + 'data-option-selected-value=\"'\n + (valueId || '')\n + '\"'\n + '>'\n + '<div class=\"col-sm-11 col-9 bonus-product-name\" >'\n + $choiceOfBonusProduct.find('.product-name').html()\n + '</div>'\n + '<div class=\"col-1\"><i class=\"fa fa-times\" aria-hidden=\"true\"></i></div>'\n + '</div>';\n $('#chooseBonusProductModal .selected-bonus-products').append(selectedBonusProductHtml);\n $('.pre-cart-products').html(totalQty);\n $('.selected-bonus-products .bonus-summary').removeClass('alert-danger');\n } else {\n $('.selected-bonus-products .bonus-summary').addClass('alert-danger');\n }\n $('.add-bonus-products').trigger('click');\n });\n },\n removeBonusProduct: function () {\n $(document).on('click', '.selected-pid', function () {\n $(this).remove();\n var $selected = $('#chooseBonusProductModal .selected-bonus-products .selected-pid');\n var count = 0;\n if ($selected.length) {\n $selected.each(function () {\n count += parseInt($(this).data('qty'), 10);\n });\n }\n\n $('.pre-cart-products').html(count);\n $('.selected-bonus-products .bonus-summary').removeClass('alert-danger');\n });\n },\n enableBonusProductSelection: function () {\n $('body').on('bonusproduct:updateSelectButton', function (e, response) {\n $('button.select-bonus-product', response.$productContainer).attr(\n 'disabled',\n !response.product.readyToOrder || !response.product.available\n );\n var pid = response.product.id;\n $('button.select-bonus-product', response.$productContainer).data('pid', pid);\n });\n },\n showMoreBonusProducts: function () {\n $(document).on('click', '.show-more-bonus-products', function () {\n var url = $(this).data('url');\n $('.modal-content')\n .spinner()\n .start();\n $.ajax({\n url: url,\n method: 'GET',\n success: function (html) {\n var parsedHtml = parseHtml(html);\n $('.modal-body').append(parsedHtml.body);\n $('.show-more-bonus-products:first').remove();\n $('.modal-content')\n .spinner()\n .stop();\n },\n error: function () {\n $('.modal-content')\n .spinner()\n .stop();\n }\n });\n });\n },\n addBonusProductsToCart: function () {\n $(document).on('click', '.add-bonus-products', function () {\n var $readyToOrderBonusProducts = $('.choose-bonus-product-dialog .selected-pid');\n var queryString = '?pids=';\n var url = $('.choose-bonus-product-dialog').data('addtocarturl');\n var pidsObject = {\n bonusProducts: []\n };\n\n $.each($readyToOrderBonusProducts, function () {\n var qtyOption = parseInt($(this).data('qty'), 10);\n\n var option = null;\n if (qtyOption > 0) {\n if ($(this).data('optionid') && $(this).data('option-selected-value')) {\n option = {};\n option.optionId = $(this).data('optionid');\n option.productId = $(this).data('pid');\n option.selectedValueId = $(this).data('option-selected-value');\n }\n pidsObject.bonusProducts.push({\n pid: $(this).data('pid'),\n qty: qtyOption,\n options: [option]\n });\n pidsObject.totalQty = parseInt($('.pre-cart-products').html(), 10);\n }\n });\n queryString += JSON.stringify(pidsObject);\n queryString = queryString + '&uuid=' + $('.choose-bonus-product-dialog').data('uuid');\n queryString = queryString + '&pliuuid=' + $('.choose-bonus-product-dialog').data('pliuuid');\n $.spinner().start();\n $.ajax({\n url: url + queryString,\n method: 'POST',\n success: function (data) {\n $.spinner().stop();\n if (data.error) {\n $('#chooseBonusProductModal').modal('hide');\n if ($('.add-to-cart-messages').length === 0) {\n $('body').append('<div class=\"add-to-cart-messages\"></div>');\n }\n $('.add-to-cart-messages').append(\n '<div class=\"alert alert-danger add-to-basket-alert text-center\"'\n + ' role=\"alert\">'\n + data.errorMessage + '</div>'\n );\n setTimeout(function () {\n $('.add-to-basket-alert').remove();\n }, 3000);\n } else {\n $('.configure-bonus-product-attributes').html(data);\n $('.bonus-products-step2').removeClass('hidden-xl-down');\n $('#chooseBonusProductModal').modal('hide');\n\n $('.minicart-quantity').html(data.totalQty);\n if ($('.cart-page').length === 0) {\n $('body').trigger('cart:update');\n }\n setTimeout(function () {\n if ($('.cart-page').length) {\n location.reload();\n }\n }, 1500);\n }\n },\n error: function () {\n $.spinner().stop();\n }\n });\n });\n },\n getPidValue: getPidValue,\n getQuantitySelected: getQuantitySelected\n};\n","/**!\n * @fileOverview Kickass library to create and place poppers near their reference elements.\n * @version 1.16.1\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' && typeof navigator !== 'undefined';\n\nvar timeoutDuration = function () {\n var longerTimeoutBrowsers = ['Edge', 'Trident', 'Firefox'];\n for (var i = 0; i < longerTimeoutBrowsers.length; i += 1) {\n if (isBrowser && navigator.userAgent.indexOf(longerTimeoutBrowsers[i]) >= 0) {\n return 1;\n }\n }\n return 0;\n}();\n\nfunction microtaskDebounce(fn) {\n var called = false;\n return function () {\n if (called) {\n return;\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/**\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*/\nvar debounce = supportsMicroTasks ? microtaskDebounce : taskDebounce;\n\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 */\nfunction isFunction(functionToCheck) {\n var getType = {};\n return functionToCheck && getType.toString.call(functionToCheck) === '[object Function]';\n}\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 */\nfunction getStyleComputedProperty(element, property) {\n if (element.nodeType !== 1) {\n return [];\n }\n // NOTE: 1 DOM access here\n var window = element.ownerDocument.defaultView;\n var css = window.getComputedStyle(element, null);\n return property ? css[property] : css;\n}\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 */\nfunction getParentNode(element) {\n if (element.nodeName === 'HTML') {\n return element;\n }\n return element.parentNode || element.host;\n}\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 */\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 case '#document':\n return element.body;\n }\n\n // Firefox want us to check `-x` and `-y` variations as well\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\n/**\n * Returns the reference node of the reference object, or the reference object itself.\n * @method\n * @memberof Popper.Utils\n * @param {Element|Object} reference - the reference element (the popper will be relative to this)\n * @returns {Element} parent\n */\nfunction getReferenceNode(reference) {\n return reference && reference.referenceNode ? reference.referenceNode : reference;\n}\n\nvar isIE11 = isBrowser && !!(window.MSInputMethodContext && document.documentMode);\nvar isIE10 = isBrowser && /MSIE 10/.test(navigator.userAgent);\n\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 */\nfunction isIE(version) {\n if (version === 11) {\n return isIE11;\n }\n if (version === 10) {\n return isIE10;\n }\n return isIE11 || isIE10;\n}\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 */\nfunction getOffsetParent(element) {\n if (!element) {\n return document.documentElement;\n }\n\n var noOffsetParent = isIE(10) ? document.body : null;\n\n // NOTE: 1 DOM access here\n var offsetParent = element.offsetParent || null;\n // Skip hidden elements which don't have an offsetParent\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 }\n\n // .offsetParent will return the closest TH, TD or TABLE in case\n // no offsetParent is present, I hate this job...\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 return nodeName === 'HTML' || getOffsetParent(element.firstElementChild) === element;\n}\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 */\nfunction getRoot(node) {\n if (node.parentNode !== null) {\n return getRoot(node.parentNode);\n }\n\n return node;\n}\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 */\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 }\n\n // Here we make sure to give as \"start\" the element that comes first in the DOM\n var order = element1.compareDocumentPosition(element2) & Node.DOCUMENT_POSITION_FOLLOWING;\n var start = order ? element1 : element2;\n var end = order ? element2 : element1;\n\n // Get common ancestor container\n var range = document.createRange();\n range.setStart(start, 0);\n range.setEnd(end, 0);\n var commonAncestorContainer = range.commonAncestorContainer;\n\n // 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 }\n\n // one of the nodes is inside shadowDOM, find which one\n var element1root = getRoot(element1);\n if (element1root.host) {\n return findCommonOffsetParent(element1root.host, element2);\n } else {\n return findCommonOffsetParent(element1, getRoot(element2).host);\n }\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 */\nfunction getScroll(element) {\n var side = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : 'top';\n\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/*\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 */\nfunction includeScroll(rect, element) {\n var subtract = arguments.length > 2 && arguments[2] !== undefined ? arguments[2] : false;\n\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/*\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\nfunction getBordersSize(styles, axis) {\n var sideA = axis === 'x' ? 'Left' : 'Top';\n var sideB = sideA === 'Left' ? 'Right' : 'Bottom';\n\n return parseFloat(styles['border' + sideA + 'Width']) + parseFloat(styles['border' + sideB + 'Width']);\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\n return {\n height: getSize('Height', body, html, computedStyle),\n width: getSize('Width', body, html, computedStyle)\n };\n}\n\nvar classCallCheck = function (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\n\n\n\n\nvar defineProperty = function (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/**\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 */\nfunction getClientRect(offsets) {\n return _extends({}, offsets, {\n right: offsets.left + offsets.width,\n bottom: offsets.top + offsets.height\n });\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 */\nfunction getBoundingClientRect(element) {\n var rect = {};\n\n // 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 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 };\n\n // subtract scrollbar size from sizes\n var sizes = element.nodeName === 'HTML' ? getWindowSizes(element.ownerDocument) : {};\n var width = sizes.width || element.clientWidth || result.width;\n var height = sizes.height || element.clientHeight || result.height;\n\n var horizScrollbar = element.offsetWidth - width;\n var vertScrollbar = element.offsetHeight - height;\n\n // 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 if (horizScrollbar || vertScrollbar) {\n var styles = getStyleComputedProperty(element);\n horizScrollbar -= getBordersSize(styles, 'x');\n vertScrollbar -= getBordersSize(styles, 'y');\n\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\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\n var styles = getStyleComputedProperty(parent);\n var borderTopWidth = parseFloat(styles.borderTopWidth);\n var borderLeftWidth = parseFloat(styles.borderLeftWidth);\n\n // In cases where the parent is fixed, we must ignore negative scroll in offset calc\n if (fixedPosition && isHTML) {\n parentRect.top = Math.max(parentRect.top, 0);\n parentRect.left = Math.max(parentRect.left, 0);\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;\n\n // 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 if (!isIE10 && isHTML) {\n var marginTop = parseFloat(styles.marginTop);\n var marginLeft = parseFloat(styles.marginLeft);\n\n offsets.top -= borderTopWidth - marginTop;\n offsets.bottom -= borderTopWidth - marginTop;\n offsets.left -= borderLeftWidth - marginLeft;\n offsets.right -= borderLeftWidth - marginLeft;\n\n // Attach marginTop and marginLeft because in some circumstances we may need them\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\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\n var scrollTop = !excludeScroll ? getScroll(html) : 0;\n var scrollLeft = !excludeScroll ? getScroll(html, 'left') : 0;\n\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\n return getClientRect(offset);\n}\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 */\nfunction isFixed(element) {\n var nodeName = element.nodeName;\n if (nodeName === 'BODY' || nodeName === 'HTML') {\n return false;\n }\n if (getStyleComputedProperty(element, 'position') === 'fixed') {\n return true;\n }\n var parentNode = getParentNode(element);\n if (!parentNode) {\n return false;\n }\n return isFixed(parentNode);\n}\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\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 var el = element.parentElement;\n while (el && getStyleComputedProperty(el, 'transform') === 'none') {\n el = el.parentElement;\n }\n return el || document.documentElement;\n}\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 */\nfunction getBoundaries(popper, reference, padding, boundariesElement) {\n var fixedPosition = arguments.length > 4 && arguments[4] !== undefined ? arguments[4] : false;\n\n // NOTE: 1 DOM access here\n\n var boundaries = { top: 0, left: 0 };\n var offsetParent = fixedPosition ? getFixedPositionOffsetParent(popper) : findCommonOffsetParent(popper, getReferenceNode(reference));\n\n // Handle viewport case\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 if (boundariesElement === 'scrollParent') {\n boundariesNode = getScrollParent(getParentNode(reference));\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);\n\n // In case of HTML, we need a different computation\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 }\n\n // Add paddings\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\n return boundaries;\n}\n\nfunction getArea(_ref) {\n var width = _ref.width,\n height = _ref.height;\n\n return width * height;\n}\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 */\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\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\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\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\n var computedPlacement = filteredAreas.length > 0 ? filteredAreas[0].key : sortedAreas[0].key;\n\n var variation = placement.split('-')[1];\n\n return computedPlacement + (variation ? '-' + variation : '');\n}\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 */\nfunction getReferenceOffsets(state, popper, reference) {\n var fixedPosition = arguments.length > 3 && arguments[3] !== undefined ? arguments[3] : null;\n\n var commonOffsetParent = fixedPosition ? getFixedPositionOffsetParent(popper) : findCommonOffsetParent(popper, getReferenceNode(reference));\n return getOffsetRectRelativeToArbitraryNode(reference, commonOffsetParent, fixedPosition);\n}\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 */\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/**\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 */\nfunction getOppositePlacement(placement) {\n var hash = { left: 'right', right: 'left', bottom: 'top', top: 'bottom' };\n return placement.replace(/left|right|bottom|top/g, function (matched) {\n return hash[matched];\n });\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 */\nfunction getPopperOffsets(popper, referenceOffsets, placement) {\n placement = placement.split('-')[0];\n\n // Get popper node sizes\n var popperRect = getOuterSizes(popper);\n\n // Add position, width and height to our offsets object\n var popperOffsets = {\n width: popperRect.width,\n height: popperRect.height\n };\n\n // depending by the popper placement we have to compute its offsets slightly differently\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\n popperOffsets[mainSide] = referenceOffsets[mainSide] + referenceOffsets[measurement] / 2 - popperRect[measurement] / 2;\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/**\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 */\nfunction find(arr, check) {\n // use native find if supported\n if (Array.prototype.find) {\n return arr.find(check);\n }\n\n // use `filter` to obtain the same behavior of `find`\n return arr.filter(check)[0];\n}\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 */\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 }\n\n // use `find` + `indexOf` if `findIndex` isn't supported\n var match = find(arr, function (obj) {\n return obj[prop] === value;\n });\n return arr.indexOf(match);\n}\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 */\nfunction runModifiers(modifiers, data, ends) {\n var modifiersToRun = ends === undefined ? modifiers : modifiers.slice(0, findIndex(modifiers, 'name', ends));\n\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 var fn = modifier['function'] || modifier.fn; // eslint-disable-line dot-notation\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\n data = fn(data, modifier);\n }\n });\n\n return data;\n}\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 */\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 };\n\n // compute reference element offsets\n data.offsets.reference = getReferenceOffsets(this.state, this.popper, this.reference, this.options.positionFixed);\n\n // 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 data.placement = computeAutoPlacement(this.options.placement, data.offsets.reference, this.popper, this.reference, this.options.modifiers.flip.boundariesElement, this.options.modifiers.flip.padding);\n\n // store the computed placement inside `originalPlacement`\n data.originalPlacement = data.placement;\n\n data.positionFixed = this.options.positionFixed;\n\n // compute the popper offsets\n data.offsets.popper = getPopperOffsets(this.popper, data.offsets.reference, data.placement);\n\n data.offsets.popper.position = this.options.positionFixed ? 'fixed' : 'absolute';\n\n // run the modifiers\n data = runModifiers(this.modifiers, data);\n\n // the first `update` will call `onCreate` callback\n // the other ones will call `onUpdate` callback\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/**\n * Helper used to know if the given modifier is enabled.\n * @method\n * @memberof Popper.Utils\n * @returns {Boolean}\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/**\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 */\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 if (typeof document.body.style[toCheck] !== 'undefined') {\n return toCheck;\n }\n }\n return null;\n}\n\n/**\n * Destroys the popper.\n * @method\n * @memberof Popper\n */\nfunction destroy() {\n this.state.isDestroyed = true;\n\n // touch DOM only if `applyStyle` modifier is enabled\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();\n\n // remove the popper if user explicitly asked for the deletion on destroy\n // do not use `remove` because IE11 doesn't support it\n if (this.options.removeOnDestroy) {\n this.popper.parentNode.removeChild(this.popper);\n }\n return this;\n}\n\n/**\n * Get the window associated with the element\n * @argument {Element} element\n * @returns {Window}\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, { passive: true });\n\n if (!isBody) {\n attachToScrollParents(getScrollParent(target.parentNode), event, callback, scrollParents);\n }\n scrollParents.push(target);\n}\n\n/**\n * Setup needed event listeners used to update the popper position\n * @method\n * @memberof Popper.Utils\n * @private\n */\nfunction setupEventListeners(reference, options, state, updateBound) {\n // Resize event listener on window\n state.updateBound = updateBound;\n getWindow(reference).addEventListener('resize', state.updateBound, { passive: true });\n\n // Scroll event listener on scroll parents\n var scrollElement = getScrollParent(reference);\n attachToScrollParents(scrollElement, 'scroll', state.updateBound, state.scrollParents);\n state.scrollElement = scrollElement;\n state.eventsEnabled = true;\n\n return state;\n}\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 */\nfunction enableEventListeners() {\n if (!this.state.eventsEnabled) {\n this.state = setupEventListeners(this.reference, this.options, this.state, this.scheduleUpdate);\n }\n}\n\n/**\n * Remove event listeners used to update the popper position\n * @method\n * @memberof Popper.Utils\n * @private\n */\nfunction removeEventListeners(reference, state) {\n // Remove resize event listener on window\n getWindow(reference).removeEventListener('resize', state.updateBound);\n\n // Remove scroll event listener on scroll parents\n state.scrollParents.forEach(function (target) {\n target.removeEventListener('scroll', state.updateBound);\n });\n\n // Reset state\n state.updateBound = null;\n state.scrollParents = [];\n state.scrollElement = null;\n state.eventsEnabled = false;\n return state;\n}\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 */\nfunction disableEventListeners() {\n if (this.state.eventsEnabled) {\n cancelAnimationFrame(this.scheduleUpdate);\n this.state = removeEventListeners(this.reference, this.state);\n }\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 */\nfunction isNumeric(n) {\n return n !== '' && !isNaN(parseFloat(n)) && isFinite(n);\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 */\nfunction setStyles(element, styles) {\n Object.keys(styles).forEach(function (prop) {\n var unit = '';\n // add unit if the value is numeric and is one of the following\n if (['width', 'height', 'top', 'right', 'bottom', 'left'].indexOf(prop) !== -1 && isNumeric(styles[prop])) {\n unit = 'px';\n }\n element.style[prop] = styles[prop] + unit;\n });\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 */\nfunction setAttributes(element, attributes) {\n Object.keys(attributes).forEach(function (prop) {\n var value = attributes[prop];\n if (value !== false) {\n element.setAttribute(prop, attributes[prop]);\n } else {\n element.removeAttribute(prop);\n }\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 */\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);\n\n // any property present in `data.attributes` will be applied to the popper,\n // they will be set as HTML attributes of the element\n setAttributes(data.instance.popper, data.attributes);\n\n // if arrowElement is defined and arrowStyles has some properties\n if (data.arrowElement && Object.keys(data.arrowStyles).length) {\n setStyles(data.arrowElement, data.arrowStyles);\n }\n\n return data;\n}\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 */\nfunction applyStyleOnLoad(reference, popper, options, modifierOptions, state) {\n // compute reference element offsets\n var referenceOffsets = getReferenceOffsets(state, popper, reference, options.positionFixed);\n\n // 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 var placement = computeAutoPlacement(options.placement, referenceOffsets, popper, reference, options.modifiers.flip.boundariesElement, options.modifiers.flip.padding);\n\n popper.setAttribute('x-placement', placement);\n\n // Apply `position` to popper before anything else because\n // without the position applied we can't guarantee correct computations\n setStyles(popper, { position: options.positionFixed ? 'fixed' : 'absolute' });\n\n return options;\n}\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 */\nfunction getRoundedOffsets(data, shouldRound) {\n var _data$offsets = data.offsets,\n popper = _data$offsets.popper,\n reference = _data$offsets.reference;\n var round = Math.round,\n floor = Math.floor;\n\n var noRound = function noRound(v) {\n return v;\n };\n\n var referenceWidth = round(reference.width);\n var popperWidth = round(popper.width);\n\n var isVertical = ['left', 'right'].indexOf(data.placement) !== -1;\n var isVariation = data.placement.indexOf('-') !== -1;\n var sameWidthParity = referenceWidth % 2 === popperWidth % 2;\n var bothOddWidth = referenceWidth % 2 === 1 && popperWidth % 2 === 1;\n\n var horizontalToInteger = !shouldRound ? noRound : isVertical || isVariation || sameWidthParity ? round : floor;\n var verticalToInteger = !shouldRound ? noRound : round;\n\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/**\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 */\nfunction computeStyle(data, options) {\n var x = options.x,\n y = options.y;\n var popper = data.offsets.popper;\n\n // 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 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 var gpuAcceleration = legacyGpuAccelerationOption !== undefined ? legacyGpuAccelerationOption : options.gpuAcceleration;\n\n var offsetParent = getOffsetParent(data.instance.popper);\n var offsetParentRect = getBoundingClientRect(offsetParent);\n\n // Styles\n var styles = {\n position: popper.position\n };\n\n var offsets = getRoundedOffsets(data, window.devicePixelRatio < 2 || !isFirefox);\n\n var sideA = x === 'bottom' ? 'top' : 'bottom';\n var sideB = y === 'right' ? 'left' : 'right';\n\n // 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 var prefixedProperty = getSupportedPropertyName('transform');\n\n // 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 var left = void 0,\n top = void 0;\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 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 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 }\n\n // Attributes\n var attributes = {\n 'x-placement': data.placement\n };\n\n // Update `data` attributes, styles and arrowStyles\n data.attributes = _extends({}, attributes, data.attributes);\n data.styles = _extends({}, styles, data.styles);\n data.arrowStyles = _extends({}, data.offsets.arrow, data.arrowStyles);\n\n return data;\n}\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 */\nfunction isModifierRequired(modifiers, requestingName, requestedName) {\n var requesting = find(modifiers, function (_ref) {\n var name = _ref.name;\n return name === requestingName;\n });\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 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 return isRequired;\n}\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 */\nfunction arrow(data, options) {\n var _data$offsets$arrow;\n\n // arrow depends on keepTogether in order to work\n if (!isModifierRequired(data.instance.modifiers, 'arrow', 'keepTogether')) {\n return data;\n }\n\n var arrowElement = options.element;\n\n // if arrowElement is a string, suppose it's a CSS selector\n if (typeof arrowElement === 'string') {\n arrowElement = data.instance.popper.querySelector(arrowElement);\n\n // if arrowElement is not found, don't run the modifier\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\n var isVertical = ['left', 'right'].indexOf(placement) !== -1;\n\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\n //\n // extends keepTogether behavior making sure the popper and its\n // reference have enough pixels in conjunction\n //\n\n // top/left side\n if (reference[opSide] - arrowElementSize < popper[side]) {\n data.offsets.popper[side] -= popper[side] - (reference[opSide] - arrowElementSize);\n }\n // bottom/right side\n if (reference[side] + arrowElementSize > popper[opSide]) {\n data.offsets.popper[side] += reference[side] + arrowElementSize - popper[opSide];\n }\n data.offsets.popper = getClientRect(data.offsets.popper);\n\n // compute center of the popper\n var center = reference[side] + reference[len] / 2 - arrowElementSize / 2;\n\n // Compute the sideValue using the updated popper offsets\n // take popper margin in account because we don't have this info available\n var css = getStyleComputedProperty(data.instance.popper);\n var popperMarginSide = parseFloat(css['margin' + sideCapitalized]);\n var popperBorderSide = parseFloat(css['border' + sideCapitalized + 'Width']);\n var sideValue = center - data.offsets.popper[side] - popperMarginSide - popperBorderSide;\n\n // prevent arrowElement from being placed not contiguously to its popper\n sideValue = Math.max(Math.min(popper[len] - arrowElementSize, sideValue), 0);\n\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\n return data;\n}\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 */\nfunction getOppositeVariation(variation) {\n if (variation === 'end') {\n return 'start';\n } else if (variation === 'start') {\n return 'end';\n }\n return variation;\n}\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 */\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'];\n\n// Get rid of `auto` `auto-start` and `auto-end`\nvar validPlacements = placements.slice(3);\n\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 */\nfunction clockwise(placement) {\n var counter = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : false;\n\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/**\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 */\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\n var placement = data.placement.split('-')[0];\n var placementOpposite = getOppositePlacement(placement);\n var variation = data.placement.split('-')[1] || '';\n\n var flipOrder = [];\n\n switch (options.behavior) {\n case BEHAVIORS.FLIP:\n flipOrder = [placement, placementOpposite];\n break;\n case BEHAVIORS.CLOCKWISE:\n flipOrder = clockwise(placement);\n break;\n case BEHAVIORS.COUNTERCLOCKWISE:\n flipOrder = clockwise(placement, true);\n break;\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\n var popperOffsets = data.offsets.popper;\n var refOffsets = data.offsets.reference;\n\n // using floor because the reference offsets may contain decimals we are not going to consider here\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\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\n var overflowsBoundaries = placement === 'left' && overflowsLeft || placement === 'right' && overflowsRight || placement === 'top' && overflowsTop || placement === 'bottom' && overflowsBottom;\n\n // flip the variation if required\n var isVertical = ['top', 'bottom'].indexOf(placement) !== -1;\n\n // flips variation if reference element overflows boundaries\n var flippedVariationByRef = !!options.flipVariations && (isVertical && variation === 'start' && overflowsLeft || isVertical && variation === 'end' && overflowsRight || !isVertical && variation === 'start' && overflowsTop || !isVertical && variation === 'end' && overflowsBottom);\n\n // flips variation if popper content overflows boundaries\n var flippedVariationByContent = !!options.flipVariationsByContent && (isVertical && variation === 'start' && overflowsRight || isVertical && variation === 'end' && overflowsLeft || !isVertical && variation === 'start' && overflowsBottom || !isVertical && variation === 'end' && overflowsTop);\n\n var flippedVariation = flippedVariationByRef || flippedVariationByContent;\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 : '');\n\n // this object contains `position`, we want to preserve it along with\n // any additional property we may add in the future\n data.offsets.popper = _extends({}, data.offsets.popper, getPopperOffsets(data.instance.popper, data.offsets.reference, data.placement));\n\n data = runModifiers(data.instance.modifiers, data, 'flip');\n }\n });\n return data;\n}\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 */\nfunction keepTogether(data) {\n var _data$offsets = data.offsets,\n popper = _data$offsets.popper,\n reference = _data$offsets.reference;\n\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 if (popper[opSide] > floor(reference[side])) {\n data.offsets.popper[opSide] = floor(reference[side]);\n }\n\n return data;\n}\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 */\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];\n\n // If it's not a number it's an operator, I guess\n if (!value) {\n return str;\n }\n\n if (unit.indexOf('%') === 0) {\n var element = void 0;\n switch (unit) {\n case '%p':\n element = popperOffsets;\n break;\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 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 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/**\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 */\nfunction parseOffset(offset, popperOffsets, referenceOffsets, basePlacement) {\n var offsets = [0, 0];\n\n // 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 var useHeight = ['right', 'left'].indexOf(basePlacement) !== -1;\n\n // 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 var fragments = offset.split(/(\\+|\\-)/).map(function (frag) {\n return frag.trim();\n });\n\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 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 }\n\n // If divider is found, we divide the list of values and operands to divide\n // them by ofset X and Y.\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];\n\n // Convert the values with units to absolute pixels to allow our computations\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\n // 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 }, [])\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 });\n\n // Loop trough the offsets arrays and execute the operations\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/**\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 */\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\n var basePlacement = placement.split('-')[0];\n\n var offsets = void 0;\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/**\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 */\nfunction preventOverflow(data, options) {\n var boundariesElement = options.boundariesElement || getOffsetParent(data.instance.popper);\n\n // 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 if (data.instance.reference === boundariesElement) {\n boundariesElement = getOffsetParent(boundariesElement);\n }\n\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 var transformProp = getSupportedPropertyName('transform');\n var popperStyles = data.instance.popper.style; // assignment to help minification\n var top = popperStyles.top,\n left = popperStyles.left,\n transform = popperStyles[transformProp];\n\n popperStyles.top = '';\n popperStyles.left = '';\n popperStyles[transformProp] = '';\n\n var boundaries = getBoundaries(data.instance.popper, data.instance.reference, options.padding, boundariesElement, data.positionFixed);\n\n // NOTE: DOM access here\n // restores the original style properties after the offsets have been computed\n popperStyles.top = top;\n popperStyles.left = left;\n popperStyles[transformProp] = transform;\n\n options.boundaries = boundaries;\n\n var order = options.priority;\n var popper = data.offsets.popper;\n\n var check = {\n primary: function primary(placement) {\n var value = popper[placement];\n if (popper[placement] < boundaries[placement] && !options.escapeWithReference) {\n value = Math.max(popper[placement], boundaries[placement]);\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 if (popper[placement] > boundaries[placement] && !options.escapeWithReference) {\n value = Math.min(popper[mainSide], boundaries[placement] - (placement === 'right' ? popper.width : popper.height));\n }\n return defineProperty({}, mainSide, value);\n }\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\n data.offsets.popper = popper;\n\n return data;\n}\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 */\nfunction shift(data) {\n var placement = data.placement;\n var basePlacement = placement.split('-')[0];\n var shiftvariation = placement.split('-')[1];\n\n // if shift shiftvariation is specified, run the modifier\n if (shiftvariation) {\n var _data$offsets = data.offsets,\n reference = _data$offsets.reference,\n popper = _data$offsets.popper;\n\n var isVertical = ['bottom', 'top'].indexOf(basePlacement) !== -1;\n var side = isVertical ? 'left' : 'top';\n var measurement = isVertical ? 'width' : 'height';\n\n var shiftOffsets = {\n start: defineProperty({}, side, reference[side]),\n end: defineProperty({}, side, reference[side] + reference[measurement] - popper[measurement])\n };\n\n data.offsets.popper = _extends({}, popper, shiftOffsets[shiftvariation]);\n }\n\n return data;\n}\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 */\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/**\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 */\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\n var isHoriz = ['left', 'right'].indexOf(basePlacement) !== -1;\n\n var subtractLength = ['top', 'left'].indexOf(basePlacement) === -1;\n\n popper[isHoriz ? 'left' : 'top'] = reference[basePlacement] - (subtractLength ? popper[isHoriz ? 'width' : 'height'] : 0);\n\n data.placement = getOppositePlacement(placement);\n data.offsets.popper = getClientRect(popper);\n\n return data;\n}\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 */\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 /** @prop {Boolean} enabled=true - Whether the modifier is enabled or not */\n enabled: true,\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 /** @prop {Boolean} enabled=true - Whether the modifier is enabled or not */\n enabled: true,\n /** @prop {ModifierFn} */\n fn: offset,\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 /** @prop {Boolean} enabled=true - Whether the modifier is enabled or not */\n enabled: true,\n /** @prop {ModifierFn} */\n fn: preventOverflow,\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 * @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 * @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 /** @prop {Boolean} enabled=true - Whether the modifier is enabled or not */\n enabled: true,\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 /** @prop {Boolean} enabled=true - Whether the modifier is enabled or not */\n enabled: true,\n /** @prop {ModifierFn} */\n fn: arrow,\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 /** @prop {Boolean} enabled=true - Whether the modifier is enabled or not */\n enabled: true,\n /** @prop {ModifierFn} */\n fn: flip,\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 * @prop {number} padding=5\n * The popper will flip if it hits the edges of the `boundariesElement`\n */\n padding: 5,\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 * @prop {Boolean} flipVariations=false\n * The popper will switch placement variation between `-start` and `-end` when\n * the reference element overlaps its boundaries.\n *\n * The original placement should have a set variation.\n */\n flipVariations: false,\n /**\n * @prop {Boolean} flipVariationsByContent=false\n * The popper will switch placement variation between `-start` and `-end` when\n * the popper element overlaps its reference boundaries.\n *\n * The original placement should have a set variation.\n */\n flipVariationsByContent: false\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 /** @prop {Boolean} enabled=false - Whether the modifier is enabled or not */\n enabled: false,\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 /** @prop {Boolean} enabled=true - Whether the modifier is enabled or not */\n enabled: true,\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 /** @prop {Boolean} enabled=true - Whether the modifier is enabled or not */\n enabled: true,\n /** @prop {ModifierFn} */\n fn: computeStyle,\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 * @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 * @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 /** @prop {Boolean} enabled=true - Whether the modifier is enabled or not */\n enabled: true,\n /** @prop {ModifierFn} */\n fn: applyStyle,\n /** @prop {Function} */\n onLoad: applyStyleOnLoad,\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/**\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 */\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/**\n * @callback onCreate\n * @param {dataObject} data\n */\n\n/**\n * @callback onUpdate\n * @param {dataObject} data\n */\n\n// Utils\n// Methods\nvar Popper = function () {\n /**\n * Creates a new Popper.js instance.\n * @class Popper\n * @param {Element|referenceObject} reference - The reference element used to position the popper\n * @param {Element} popper - The HTML / XML 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 };\n\n // make update() debounced, so that it only runs at most once-per-tick\n this.update = debounce(this.update.bind(this));\n\n // with {} we create a new object with the options inside it\n this.options = _extends({}, Popper.Defaults, options);\n\n // init state\n this.state = {\n isDestroyed: false,\n isCreated: false,\n scrollParents: []\n };\n\n // get reference and popper elements (allow jQuery wrappers)\n this.reference = reference && reference.jquery ? reference[0] : reference;\n this.popper = popper && popper.jquery ? popper[0] : popper;\n\n // Deep merge modifiers options\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 });\n\n // Refactoring modifiers' list (Object => Array)\n this.modifiers = Object.keys(this.options.modifiers).map(function (name) {\n return _extends({\n name: name\n }, _this.options.modifiers[name]);\n })\n // sort the modifiers by order\n .sort(function (a, b) {\n return a.order - b.order;\n });\n\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 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 });\n\n // fire the first update to position the popper in the right place\n this.update();\n\n var eventsEnabled = this.options.eventsEnabled;\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 }\n\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 /**\n * Schedules an update. It will run on the next UI update available.\n * @method scheduleUpdate\n * @memberof Popper\n */\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/**\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;\n\nexport default Popper;\n//# sourceMappingURL=popper.js.map\n","'use strict';\n\nconst defaultConfig = {\n rows: 0,\n dots: true,\n infinite: true,\n slidesToShow: 4,\n slidesToScroll: 4,\n responsive: [\n {\n breakpoint: 1024,\n settings: {\n dots: true,\n infinite: true,\n rows: 0,\n slidesToShow: 3,\n slidesToScroll: 3\n\n }\n }, {\n breakpoint: 600,\n settings: {\n dots: true,\n infinite: true,\n rows: 0,\n slidesToShow: 2,\n slidesToScroll: 2\n }\n }, {\n breakpoint: 480,\n settings: {\n dots: false,\n infinite: true,\n rows: 0,\n slidesToShow: 2,\n slidesToScroll: 1\n }\n }\n ]\n};\n\nconst recommendationsDefaultConfig = {\n rows: 0,\n dots: true,\n infinite: false,\n slidesToShow: 4,\n slidesToScroll: 1,\n centerMode: false,\n autoplay: false,\n autoplaySpeed: 1000,\n responsive: [\n {\n breakpoint: 1140,\n settings: {\n dots: true,\n infinite: true,\n rows: 0,\n slidesToShow: 3,\n slidesToScroll: 1,\n centerMode: false,\n autoplay: false,\n autoplaySpeed: 1000,\n arrows: true\n }\n }, {\n breakpoint: 720,\n settings: {\n dots: true,\n infinite: true,\n rows: 0,\n slidesToShow: 2,\n slidesToScroll: 1,\n centerMode: false,\n autoplay: false,\n autoplaySpeed: 1000,\n arrows: true\n }\n }, {\n breakpoint: 540,\n settings: {\n dots: true,\n infinite: true,\n rows: 0,\n slidesToShow: 2,\n slidesToScroll: 1,\n centerMode: false,\n autoplay: false,\n autoplaySpeed: 1000,\n arrows: true\n }\n }\n ]\n};\n\nconst upsellRecommendationsDefaultConfig = {\n rows: 0,\n dots: false,\n infinite: false,\n slidesToShow: 2,\n slidesToScroll: 1,\n centerMode: false,\n autoplay: false,\n mobileFist: true,\n responsive: []\n};\n\nconst einsteinDefaultConfig = {\n rows: 0,\n dots: false,\n infinite: false,\n slidesToShow: 4,\n slidesToScroll: 1,\n centerMode: false,\n autoplay: false,\n autoplaySpeed: 1000,\n responsive: [\n {\n breakpoint: 1140,\n settings: {\n dots: true,\n infinite: true,\n rows: 0,\n slidesToShow: 3,\n slidesToScroll: 1,\n centerMode: false,\n autoplay: false,\n autoplaySpeed: 1000,\n arrows: true\n }\n }, {\n breakpoint: 720,\n settings: {\n dots: true,\n infinite: true,\n rows: 0,\n slidesToShow: 2,\n slidesToScroll: 1,\n centerMode: false,\n autoplay: false,\n autoplaySpeed: 1000,\n arrows: true\n }\n }, {\n breakpoint: 540,\n settings: {\n dots: false,\n infinite: true,\n rows: 0,\n slidesToShow: 2,\n slidesToScroll: 1,\n centerMode: false,\n autoplay: false,\n autoplaySpeed: 1000,\n arrows: true\n }\n }\n ]\n};\n\nvar lensTechnologyConfig = {\n rows: 0,\n dots: false,\n infinite: false,\n slidesToShow: 5,\n centerMode: false,\n autoplay: false,\n autoplaySpeed: 1000,\n arrows: true,\n responsive: [\n {\n breakpoint: 1140,\n settings: {\n dots: false,\n infinite: false,\n rows: 0,\n slidesToShow: 4,\n centerMode: false,\n autoplay: false,\n autoplaySpeed: 1000,\n arrows: true\n }\n }, {\n breakpoint: 992,\n settings: {\n dots: false,\n infinite: false,\n rows: 0,\n slidesToShow: 4,\n centerMode: false,\n autoplay: false,\n autoplaySpeed: 1000,\n arrows: true\n }\n }, {\n breakpoint: 544,\n settings: {\n dots: false,\n infinite: false,\n rows: 0,\n slidesToShow: 5,\n centerMode: false,\n autoplay: false,\n autoplaySpeed: 1000,\n arrows: true\n }\n }, {\n breakpoint: 460,\n settings: {\n dots: false,\n infinite: false,\n rows: 0,\n slidesToShow: 4,\n centerMode: false,\n autoplay: false,\n autoplaySpeed: 1000,\n arrows: true\n }\n }, {\n breakpoint: 365,\n settings: {\n dots: false,\n infinite: false,\n rows: 0,\n slidesToShow: 3,\n centerMode: false,\n autoplay: false,\n autoplaySpeed: 1000,\n arrows: true\n }\n }\n ]\n};\n\n/**\n * Dynamically creates Bootstrap carousel from response containing images\n * @param {string} html - The carousel html\n * @param {jQuery} $productContainer - DOM element for a given product\n */\nconst createProductCarousel = (html, $productContainer) => {\n const $carouselContainer = $productContainer.find('.carousel-container');\n const $oldCarousel = $($carouselContainer).find('.product-carousel');\n\n $carouselContainer.off('touchstart click', '.slick-paging-btn');\n $oldCarousel.off('beforeChange');\n $oldCarousel.find('.product-carousel').slick('unslick');\n\n $($carouselContainer)\n .empty()\n .append(html);\n\n const $carousel = $($carouselContainer).find('.product-carousel');\n initProductCarousel($carousel);\n};\n\n/**\n * Initializes the carousel with all the necessary events\n * @param {jQuery} $carousel The jQuery object for the carousel\n */\nconst initProductCarousel = ($carousel) => {\n const $carouselContainer = $carousel.parents('.carousel-container');\n var carouselSlickConfig = $carouselContainer.data('configuration');\n if (carouselSlickConfig) {\n $carousel.slick(carouselSlickConfig);\n } else {\n $carousel.slick({ rows: 0 });\n }\n\n $carousel.on('beforeChange', function (event, slick, currentSlide, nextSlide) {\n var $slickPaging = $carouselContainer.find('.slick-paging');\n $slickPaging.find('.slick-paging-btn').removeClass('active');\n $slickPaging.find(`.slick-paging-btn:nth-child(${nextSlide + 1})`).addClass('active');\n });\n\n $carouselContainer.on('touchstart click', '.slick-paging-btn', function () {\n $carousel.slick('slickGoTo', $(this).index());\n });\n};\n\nconst initCarousel = ($carousel) => {\n if (!$carousel.data('slick')) {\n $carousel.slick(defaultConfig);\n } else {\n $carousel.slick();\n }\n};\n\n// recommendations-carousel\nconst initRecommendationsCarousel = ($carousel) => {\n if (!$carousel.data('slick')) {\n $carousel.slick(recommendationsDefaultConfig);\n } else {\n $carousel.slick();\n }\n};\n\n// upsell recommendations-carousel\nconst initUpsellRecommendationsCarousel = ($carousel) => {\n if (!$carousel.data('slick')) {\n $carousel.slick(upsellRecommendationsDefaultConfig);\n } else {\n $carousel.slick();\n }\n};\n\n// recommendations-carousel\nconst initEinsteinRecommendationsCarousel = ($carousel) => {\n if (!$carousel.data('slick')) {\n $carousel.slick(einsteinDefaultConfig);\n } else {\n $carousel.slick();\n }\n};\n\nconst initLensTechnologyCarousel = ($carousel) => {\n if (!$carousel.data('slick')) {\n var nbOfItems = $carousel.find('li').length;\n if (nbOfItems >= 5) {\n lensTechnologyConfig.slidesToShow = 5;\n } else if (nbOfItems === 4) {\n lensTechnologyConfig.slidesToShow = 4;\n } else if (nbOfItems === 3) {\n lensTechnologyConfig.slidesToShow = 3;\n lensTechnologyConfig.responsive[0].settings.slidesToShow = 3;\n lensTechnologyConfig.responsive[1].settings.slidesToShow = 3;\n lensTechnologyConfig.responsive[2].settings.slidesToShow = 3;\n lensTechnologyConfig.responsive[3].settings.slidesToShow = 3;\n } else if (nbOfItems === 2) {\n lensTechnologyConfig.slidesToShow = 2;\n lensTechnologyConfig.responsive[0].settings.slidesToShow = 2;\n lensTechnologyConfig.responsive[1].settings.slidesToShow = 2;\n lensTechnologyConfig.responsive[2].settings.slidesToShow = 2;\n lensTechnologyConfig.responsive[3].settings.slidesToShow = 2;\n lensTechnologyConfig.responsive[4].settings.slidesToShow = 2;\n } else if (nbOfItems === 1) {\n lensTechnologyConfig.slidesToShow = 1;\n lensTechnologyConfig.responsive[0].settings.slidesToShow = 1;\n lensTechnologyConfig.responsive[1].settings.slidesToShow = 1;\n lensTechnologyConfig.responsive[2].settings.slidesToShow = 1;\n lensTechnologyConfig.responsive[3].settings.slidesToShow = 1;\n lensTechnologyConfig.responsive[3].settings.slidesToShow = 1;\n lensTechnologyConfig.responsive[4].settings.slidesToShow = 1;\n } else if (nbOfItems === 0) {\n lensTechnologyConfig.slidesToShow = 0;\n lensTechnologyConfig.responsive[0].settings.slidesToShow = 0;\n lensTechnologyConfig.responsive[1].settings.slidesToShow = 0;\n lensTechnologyConfig.responsive[2].settings.slidesToShow = 0;\n lensTechnologyConfig.responsive[3].settings.slidesToShow = 0;\n lensTechnologyConfig.responsive[4].settings.slidesToShow = 0;\n } else {\n lensTechnologyConfig.slidesToShow = $carousel.find('li').length;\n }\n $carousel.slick(lensTechnologyConfig);\n } else {\n $carousel.slick();\n }\n};\n\nconst init = () => {\n $('.carousel').each(function () {\n initCarousel($(this));\n });\n\n $('.product-carousel').each(function () {\n initProductCarousel($(this));\n });\n\n $('.lens-technology-carousel:visible').each(function () {\n /**\n * Select lens technology based on default variation (at page load)\n */\n $(this).on('init', function (event, slick) {\n var selectedVariation = $('#color-vatiations-wrapper .color-value.selected').closest('.color-vatiations-item').attr('data-color-variant');\n\n // retieve the corresponding lens technology item\n var $currentLensTechnologyItem = $(\".variant-technology-image[data-color-variant='\" + selectedVariation + \"']\");\n // scroll to the current active slide\n if ($currentLensTechnologyItem.closest('.lens-technology-image-list').hasClass('slick-initialized')) {\n var currentSlideClasses = $currentLensTechnologyItem.attr('class').split(' '); // get all classes\n var currentSlideClasseName = currentSlideClasses.filter(className => /^custom-order-\\d+$/.test(className))[0]; // get the string for the class \"order-<number>\"\n var currentSlidePosition = parseInt(currentSlideClasseName.split('-')[1], 10); // get the number\n\n var slidesToShow = slick.options.slidesToShow;\n var startIndex = currentSlidePosition - slidesToShow + 1;\n startIndex = Math.max(startIndex, 0);\n slick.currentSlide = startIndex;\n }\n });\n initLensTechnologyCarousel($(this));\n });\n\n $('.recommendations-carousel').each(function () {\n initRecommendationsCarousel($(this));\n });\n\n $('.recommendations-upsell-carousel').each(function () {\n initUpsellRecommendationsCarousel($(this));\n });\n\n $('body').on('shown.bs.modal', '.modal', function () {\n $(this).find('.product-carousel').each(function () {\n initProductCarousel($(this));\n });\n });\n\n const observer = new MutationObserver(function (mutations) {\n mutations.forEach((mutation) => {\n if (mutation.addedNodes && mutation.addedNodes.length > 0) {\n const carousels = $(mutation.addedNodes).find('.slot-carousel');\n for (let i = 0, len = carousels.length; i < len; i++) {\n initEinsteinRecommendationsCarousel($(carousels[i]));\n }\n }\n });\n });\n\n observer.observe(document.body, { childList: true, subtree: true });\n};\n\nmodule.exports = {\n init,\n methods: {\n createProductCarousel: createProductCarousel,\n initRecommendationsCarousel: initRecommendationsCarousel,\n initUpsellRecommendationsCarousel: initUpsellRecommendationsCarousel,\n initLensTechnologyCarousel: initLensTechnologyCarousel\n }\n};\n","'use strict';\n\nvar hotspotsVisible = true;\nlet htsptbtns = document.getElementsByClassName('Hotspot hs-element');\n\nfunction mvHoverOff() {\n hotspotsVisible = false;\n document.getElementById('btn-toggle').style.backgroundImage = \"url('https://dky5neca2x8co.cloudfront.net/Bolle/model-viewers/common/images/info-icon2.png')\";\n let list= document.getElementsByClassName('hs-element');\n for (var i = 0; i < list.length; i++) {\n list[i].style.visibility= \"hidden\";\n }\n}\n\nfunction mvHoverOn() {\n hotspotsVisible = true;\n document.getElementById('btn-toggle').style.backgroundImage = \"url('https://dky5neca2x8co.cloudfront.net/Bolle/model-viewers/common/images/info-icon.png')\";\n let list= document.getElementsByClassName('hs-element');\n for (var i = 0; i < list.length; i++) {\n list[i].style.visibility= \"visible\";\n }\n}\n\nwindow.toggleHotspots = function() {\n if(hotspotsVisible) mvHoverOff();\n else mvHoverOn();\n}\n\nwindow.startWiggle = function() {\n $('model-viewer').attr('interaction-prompt', \"auto\");\n}\n\nwindow.stopWiggle = function() {\n $('model-viewer').attr('interaction-prompt', \"none\");\n}\n\nwindow.hs_show = function(id) {\n document.getElementById(id).style.display = \"block\";\n document.getElementById(id).style.animationName = \"slide-in\";\n document.getElementById(id).style.bottom = \"0\";\n \n // hide btns\n for(var i=0; i<htsptbtns.length; i++){\n htsptbtns[i].style.backgroundColor = \"transparent\";\n htsptbtns[i].style.animationName = \"none\";\n }\n \n}\n\nwindow.hs_hide = function(id) {\n document.getElementById(id).style.display = \"none\";\n document.getElementById(id).style.animationName = \"slide-out\";\n document.getElementById(id).style.bottom = \"-500\";\n\n // show btns\n for(var i=0; i<htsptbtns.length; i++){\n htsptbtns[i].style.backgroundColor = \"\";\n htsptbtns[i].style.animationName = \"breathe\";\n }\n}\n\n// Bind 3d Modal\nconst bind3dModel = () => {\n $(window).on('resize', function () {\n var $modelEle = $('.product-carousel .model-container');\n setTimeout(() => {\n $('model-viewer').css({\n 'width' : $modelEle.width(),\n 'height' : $modelEle.width()\n })\n }, 200);\n });\n $('.product-sticker-3d').on('click', function(event) {\n event.preventDefault();\n $('.slick-paging-3d').addClass('showcase-ar').trigger('click');\n });\n $('.product-carousel').on('afterChange', function(event, slick, currentSlide, nextSlide) {\n var $currentActiveContainer = $('.carousel-item[data-slick-index=\"' + currentSlide + '\"');\n if ($currentActiveContainer.hasClass('model-container')) {\n $('.product-carousel').slick('slickSetOption', 'swipe', false, false);\n var $modelEle = $('.product-carousel .model-container');\n\n //If model is already loaded, then return\n if ($modelEle.hasClass('model-loaded')) return;\n\n var modelViewer = $currentActiveContainer.find('.model-viewer').get(0);\n var progress = $currentActiveContainer.find('.model-progress').get(0);\n var bar = progress.querySelector('.bar');\n \n modelViewer.addEventListener('progress', (event) => {\n var { totalProgress } = event.detail;\n progress.classList.toggle('show', totalProgress < 1);\n bar.style.transform = `scaleX(${totalProgress})`;\n });\n \n //3d model js files\n var script1 = document.createElement(\"script\");\n var script2 = document.createElement(\"script\");\n var script3 = document.createElement(\"script\");\n var script4 = document.createElement(\"script\");\n var script5 = document.createElement(\"script\");\n var script6 = document.createElement(\"script\");\n var script7 = document.createElement(\"script\");\n var script8 = document.createElement(\"script\");\n script1.type = \"text/javascript\";\n script2.type = \"text/javascript\";\n script3.type = \"text/javascript\";\n script4.type = \"text/javascript\";\n script5.type = \"text/javascript\";\n script6.type = \"module\";\n script7.type = \"text/javascript\";\n script8.type = \"text/javascript\";\n script1.src=\"https://unpkg.com/@webcomponents/webcomponentsjs@2.1.3/webcomponents-loader.js\"\n script2.src=\"https://unpkg.com/intersection-observer@0.5.1/intersection-observer.js\"\n script3.src=\"https://unpkg.com/resize-observer-polyfill@1.5.0/dist/ResizeObserver.js\"\n script4.src=\"https://unpkg.com/fullscreen-polyfill@1.0.2/dist/fullscreen.polyfill.js\"\n script5.src=\"https://unpkg.com/focus-visible@5.1.0/dist/focus-visible.js\"\n script6.src=\"https://dky5neca2x8co.cloudfront.net/model-viewer-public/model-viewer.min.js\"\n script7.src=\"https://dky5neca2x8co.cloudfront.net/model-viewer-public/timeme.min.js\"\n script8.src=\"https://dky5neca2x8co.cloudfront.net/model-viewer-public/stats_track.min.js\"\n document.getElementsByTagName(\"head\")[0].appendChild(script1);\n document.getElementsByTagName(\"head\")[0].appendChild(script2);\n document.getElementsByTagName(\"head\")[0].appendChild(script3);\n document.getElementsByTagName(\"head\")[0].appendChild(script4);\n document.getElementsByTagName(\"head\")[0].appendChild(script5);\n document.getElementsByTagName(\"head\")[0].appendChild(script6);\n document.getElementsByTagName(\"head\")[0].appendChild(script7);\n document.getElementsByTagName(\"head\")[0].appendChild(script8);\n\n $('model-viewer').css({\n 'width' : $modelEle.width(),\n 'height' : $modelEle.width()\n });\n $modelEle.addClass('model-loaded');\n } else if ($currentActiveContainer.hasClass('emersya-container')) {\n $('.product-carousel').slick('slickSetOption', 'swipe', false, false);\n var $modelEle = $('.product-carousel .emersya-container').not('.slick-cloned');\n var isAR = $('.slick-paging-3d.showcase-ar').length > 0 ? true : false;\n\n if (isAR) {\n $('.emersya-iframe').hide();\n $('.emersya-iframe-ar').show();\n } else {\n $('.emersya-iframe').show();\n $('.emersya-iframe-ar').hide();\n }\n $('.slick-paging-3d').removeClass('showcase-ar');\n\n //If model is already loaded, then return\n if (!isAR && $modelEle.hasClass('emersya-loaded')) return;\n if (isAR && $modelEle.hasClass('emersya-ar-loaded')) return;\n \n var emersyaURL = getEmersyaURL($modelEle, isAR);\n\n $('<iframe class=\"' + (isAR ? 'emersya-iframe-ar' : 'emersya-iframe') + '\" src=\"' + emersyaURL + '\" width=\"100%\" height=\"100%\" webkitallowfullscreen allow=\"camera; gyroscope; accelerometer; magnetometer; fullscreen;\" ></iframe>')\n .appendTo($modelEle);\n\n if (isAR) {\n $modelEle.addClass('emersya-ar-loaded');\n } else {\n $modelEle.addClass('emersya-loaded');\n }\n } else {\n $('.product-carousel').slick('slickSetOption', 'swipe', true, false);\n }\n });\n};\n\nconst init = () => {\n if ($('.emersya-container').length === 0) {\n bind3dModel();\n }\n};\n\n/**\n * Create emersya url\n * @param {jQuery} $modelEle - Current container\n * @param {boolean} isShowcaseAR - Display the AR directly or not\n * @returns {string} - Emersya URL\n */\nfunction getEmersyaURL($modelEle, isShowcaseAR) {\n var productCode = $modelEle.attr('data-emersya-productcode');\n\n if (productCode.length === 0) return;\n\n var presetCode = $modelEle.attr('data-emersya-productpreset');\n var locale = $modelEle.attr('data-emersya-locale');\n\n if (locale === 'default' || locale.length === 0) {\n locale = 'en';\n }\n var emersyaURL = 'https://emersya.com';\n if (locale.length > 0) {\n emersyaURL += '/' + locale;\n }\n\n emersyaURL += (isShowcaseAR ? '/showcaseAR/' : '/showcase/') + productCode;\n\n if (presetCode.length > 0) {\n emersyaURL += '/' + presetCode;\n }\n\n return emersyaURL;\n}\n\nmodule.exports = {\n init,\n bind3dModel: bind3dModel\n};\n","'use strict';\n\n/**\n * Function to load a youtube video in the pdp image carousel\n */\nmodule.exports = function () {\n $('.product-carousel').on('afterChange', function (event, slick, currentSlide, nextSlide) {\n var $currentActiveContainer = $('.carousel-item[data-slick-index=\"' + currentSlide + '\"');\n if ($currentActiveContainer.hasClass('video-container')) {\n $('.product-carousel').slick('slickSetOption', 'swipe', false, false);\n var $videoEle = $('.product-carousel .video-container');\n\n // If model is already loaded, then return\n if ($videoEle.hasClass('video-loaded')) return;\n\n var videoThumbnail = $videoEle.attr('data-video-thumbnail');\n\n if (videoThumbnail.length === 0) return;\n\n var videoUrl = $videoEle.attr('data-video-url');\n\n // Youtube URL\n $('<iframe class=\"video\" src=\"' + videoUrl + '\" width=\"100%\" height=\"100%\" frameborder=\"0\" allow=\"autoplay; fullscreen; picture-in-picture\" allowfullscreen></iframe>')\n .appendTo($videoEle);\n\n $videoEle.addClass('video-loaded');\n }\n });\n};\n","'use strict';\n\nmodule.exports = {\n setTabNextFocus: function (focusParams) {\n var KEYCODE_TAB = 9;\n var isTabPressed = (focusParams.event.key === 'Tab' || focusParams.event.keyCode === KEYCODE_TAB);\n\n if (!isTabPressed) {\n return;\n }\n\n var firstFocusableEl = $(focusParams.containerSelector + ' ' + focusParams.firstElementSelector);\n var lastFocusableEl = $(focusParams.containerSelector + ' ' + focusParams.lastElementSelector);\n\n if ($(focusParams.containerSelector + ' ' + focusParams.lastElementSelector).is(':disabled')) {\n lastFocusableEl = $(focusParams.containerSelector + ' ' + focusParams.nextToLastElementSelector);\n if ($('.product-quickview.product-set').length > 0) {\n var linkElements = $(focusParams.containerSelector + ' a#fa-link.share-icons');\n lastFocusableEl = linkElements[linkElements.length - 1];\n }\n }\n\n if (focusParams.event.shiftKey) /* shift + tab */ {\n if ($(':focus').is(firstFocusableEl)) {\n lastFocusableEl.focus();\n focusParams.event.preventDefault();\n }\n } else /* tab */ {\n if ($(':focus').is(lastFocusableEl)) { // eslint-disable-line\n firstFocusableEl.focus();\n focusParams.event.preventDefault();\n }\n }\n }\n};\n","var g;\n\n// This works in non-strict mode\ng = (function() {\n\treturn this;\n})();\n\ntry {\n\t// This works if eval is allowed (see CSP)\n\tg = g || new Function(\"return this\")();\n} catch (e) {\n\t// This works if the window reference is available\n\tif (typeof window === \"object\") g = window;\n}\n\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\nmodule.exports = g;\n","'use strict';\n\n/**\n * Helper for updating the search url based on the ajax request\n * @param {string} ajaxUrl The ajax url for the search query\n */\nfunction updateUrl(ajaxUrl) {\n const baseUrl = new URL(window.location.href);\n const url = new URL(ajaxUrl, baseUrl);\n baseUrl.search = url.search;\n\n window.history.pushState({}, null, baseUrl);\n}\n\n/**\n * Update DOM elements with Ajax results\n *\n * @param {Object} $results - jQuery DOM element\n * @param {string} selector - DOM element to look up in the $results\n * @return {undefined}\n */\nfunction updateDom($results, selector) {\n var $updates = $results.find(selector);\n $(selector)\n .empty()\n .html($updates.html());\n}\n\n/**\n * Keep refinement panes expanded/collapsed after Ajax refresh\n *\n * @param {Object} $results - jQuery DOM element\n * @return {undefined}\n */\nfunction handleRefinements($results) {\n $('.refinement').each(function () {\n const $currentHeader = $(this).find('.refinement-header');\n const $currentBody = $(this).find('.refinement-body');\n const $activeDiv = $results.find($(this).data('refinement'));\n $activeDiv\n .find('.refinement-header')\n .attr('class', $currentHeader.attr('class'))\n .attr('aria-expanded', $currentHeader.attr('aria-expanded'));\n $activeDiv.find('.refinement-body').attr('class', $currentBody.attr('class'));\n });\n\n updateDom($results, '.refinements');\n}\n\n/**\n * Parse Ajax results and updated select DOM elements\n *\n * @param {string} response - Ajax response HTML code\n * @return {undefined}\n */\nfunction parseResults(response) {\n var $results = $(response);\n var specialHandlers = {\n '.refinements': handleRefinements\n };\n\n // Update DOM elements that do not require special handling\n ['.grid-header', '.header-bar', '.product-grid', '.show-more', '.filter-bar'].forEach(function (\n selector\n ) {\n updateDom($results, selector);\n });\n\n Object.keys(specialHandlers).forEach(function (selector) {\n specialHandlers[selector]($results);\n });\n}\n\n/**\n * This function retrieves another page of content to display in the content search grid\n * @param {JQuery} $element - the jquery element that has the click event attached\n * @param {JQuery} $target - the jquery element that will receive the response\n * @return {undefined}\n */\nfunction getContent($element, $target) {\n var showMoreUrl = $element.data('url');\n $.spinner().start();\n $.ajax({\n url: showMoreUrl,\n method: 'GET',\n success: function (response) {\n $target.append(response);\n $.spinner().stop();\n },\n error: function () {\n $.spinner().stop();\n }\n });\n}\n\n/**\n * Update sort option URLs from Ajax response\n *\n * @param {string} response - Ajax response HTML code\n * @return {undefined}\n */\nfunction updateSortOptions(response) {\n var $tempDom = $('<div>').append($(response));\n var sortOptions = $tempDom.find('.grid-footer').data('sort-options').options;\n sortOptions.forEach(function (option) {\n $('option.' + option.id).val(option.url);\n });\n}\n\n/**\n * Update sticker based on current variation\n * @param {Object} stickerContainer stickerContainer\n * @param {String} stickerValue stickerValue\n */\nfunction updateSticker(stickerContainer, stickerValue) {\n if (stickerValue.length > 0) {\n stickerContainer.find('img').attr('src', stickerValue);\n stickerContainer.removeClass('d-none');\n } else {\n stickerContainer.addClass('d-none');\n }\n}\n\n/**\n * Updates the product tile label\n * @param {Object} tileContainer tileContainer\n * @param {String} labelValue labelValue\n * @param {String} labelColor labelColor\n */\nfunction updateProductTileLabel(tileContainer, labelValue, labelColor) {\n if (labelValue) {\n tileContainer.html(labelValue);\n if (labelValue) {\n tileContainer.css('color', labelColor);\n tileContainer.css('border-color', labelColor);\n }\n tileContainer.removeClass('d-none');\n } else {\n tileContainer.addClass('d-none');\n }\n}\n\nmodule.exports = {\n init: function () {\n $(window).bind('popstate', function () {\n $(window).unbind('popstate');\n window.location = location.href;\n });\n },\n // Display refinements bar when Menu icon clicked\n filter: function () {\n $('.search-results').on('click', '.filter-results', function () {\n $('body').addClass('mobile-refinement-bar-open');\n });\n },\n // Refinements close button\n closeRefinements: function () {\n $('.search-results').on('click', '.refinement-bar button.close, .filter-footer .filter', function () {\n $('body').removeClass('mobile-refinement-bar-open');\n });\n },\n // Handle sort order menu selection\n sort: function () {\n $('.search-results').on('change', '[name=sort-order]', function (e) {\n e.preventDefault();\n\n $.spinner().start();\n $(this).trigger('search:sort', this.value);\n $.ajax({\n url: this.value,\n data: { selectedUrl: this.value },\n method: 'GET',\n success: function (response) {\n $('.product-grid')\n .empty()\n .html(response);\n $.spinner().stop();\n },\n error: function () {\n $.spinner().stop();\n }\n });\n });\n },\n // Show more products\n showMore: function () {\n $('.search-results').on('click', '.show-more button', function (e) {\n e.stopPropagation();\n var showMoreUrl = $(this).data('url');\n\n e.preventDefault();\n\n $.spinner().start();\n $(this).trigger('search:showMore', e);\n $.ajax({\n url: showMoreUrl,\n data: { selectedUrl: showMoreUrl },\n method: 'GET',\n success: function (response) {\n $('.grid-footer').replaceWith(response);\n updateSortOptions(response);\n $('body').trigger('search:afterShowMore', e);\n $.spinner().stop();\n },\n error: function () {\n $.spinner().stop();\n }\n });\n });\n },\n // Handle refinement value selection and reset click\n applyFilter: function () {\n $('.search-results').on(\n 'click change',\n '.refinement-link:not(.category), .filter-bar .btn, .filter-footer .reset, .form-check-input',\n function (e) {\n e.preventDefault();\n e.stopPropagation();\n\n if ($(this).hasClass('disabled')) return;\n\n const url = $(this).data('href');\n\n $.spinner().start();\n $(this).trigger('search:filter', e);\n var attributeId = '#' + $(this).find('span').last().attr('id');\n $.ajax({\n url,\n data: {\n page: $('.grid-footer').data('page-number'),\n selectedUrl: url\n },\n method: 'GET',\n success: function (response) {\n parseResults(response);\n\n updateUrl(url);\n $('body').trigger('search:afterFilter', e);\n $.spinner().stop();\n $(attributeId).parent('button').focus();\n },\n error: function () {\n $.spinner().stop();\n $(attributeId).parent('button').focus();\n }\n });\n }\n );\n },\n\n showContentTab: function () {\n // Display content results from the search\n $('.search-results').on('click', '.content-search', function () {\n if ($('#content-search-results').html() === '') {\n getContent($(this), $('#content-search-results'));\n }\n });\n\n // Display the next page of content results from the search\n $('.search-results').on('click', '.show-more-content button', function () {\n getContent($(this), $('#content-search-results'));\n $('.show-more-content').remove();\n });\n },\n toggleFilter: function () {\n $('.refinement-bar-toggle').on('click', function () {\n $(this).closest('#product-search-results').toggleClass('refinement-bar-closed');\n });\n },\n toggleMoreLess: function () {\n $('.seo-desc-toggle').on('click', function () {\n let $wrapper = $(this).closest('.category-seo-description');\n $('.category-seo-description-text', $wrapper).toggleClass('seo-text-ellipsis');\n $('.read-more-less-txt', $wrapper).toggleClass('d-none');\n if ($wrapper.hasClass('msg-slideup')) {\n $wrapper.removeClass('msg-slideup');\n $wrapper.addClass('msg-slidedown');\n } else {\n $wrapper.removeClass('msg-slidedown');\n $wrapper.addClass('msg-slideup');\n }\n });\n $('.category-seo-description').each(function () {\n let $wrapper = $(this);\n if ($(window).width() > 768 && ($('.category-seo-description-span', $wrapper).width() < $('.category-seo-description-text', $wrapper).width())) {\n $('.seo-desc-toggle', $wrapper).addClass('d-none');\n }\n });\n\n /* start: footer section */\n let $seoFooter = $('.category-seo-description-footer');\n let $footerSection = $('.category-seo-description-wrapper.collapsible', $seoFooter);\n if ($footerSection.length && $footerSection.height() >= $('.category-seo-description-content', $footerSection).height()) {\n $footerSection.removeClass('collapsible');\n }\n $('.seo-desc-collapse-toggle', $seoFooter).on('click', function () {\n let $target = $(this).siblings('.category-seo-description-wrapper.collapsible');\n if ($target.hasClass('active')) {\n $target.removeClass('active');\n $target.height($('.category-seo-description-content', $target).height());\n } else {\n $target.addClass('active');\n $target.height('');\n }\n });\n /* end: footer section */\n },\n swatchHover: function () {\n $('body').off('mouseenter', '.product-tile .swatch').on('mouseenter', '.product-tile .swatch', function () {\n var productTile = $(this).closest('.product-tile');\n var productSticker1 = productTile.find('.stickers .product-sticker1');\n var productSticker2 = productTile.find('.stickers .product-sticker2');\n var productSticker3 = productTile.find('.stickers .product-sticker3');\n var productTileLabel = productTile.find('.product-tile-label');\n updateSticker(productSticker1, $(this).attr('data-sticker1'));\n updateSticker(productSticker2, $(this).attr('data-sticker2'));\n updateSticker(productSticker3, $(this).attr('data-sticker3'));\n updateProductTileLabel(productTileLabel, productTileLabel.attr('product-tile-label'), productTileLabel.attr('product-tile-label-color'));\n\n productTile.find('img.tile-image').attr('src', $(this).attr('src'));\n });\n $('body').off('mouseleave', '.product-tile .swatches').on('mouseleave', '.product-tile .swatches', function () {\n var productTile = $(this).closest('.product-tile');\n var productSticker1 = productTile.find('.stickers .product-sticker1');\n var productSticker2 = productTile.find('.stickers .product-sticker2');\n var productSticker3 = productTile.find('.stickers .product-sticker3');\n var productTileLabel = productTile.find('.product-tile-label');\n updateSticker(productSticker1, productSticker1.find('.sticker-image').attr('data-default-sticker1'));\n updateSticker(productSticker2, productSticker2.find('.sticker-image').attr('data-default-sticker2'));\n updateSticker(productSticker3, productSticker3.find('.sticker-image').attr('data-default-sticker3'));\n updateProductTileLabel(productTileLabel, productTileLabel.attr('product-tile-label'), productTileLabel.attr('product-tile-label-color'));\n\n productTile.find('img.tile-image').attr('src', productTile.find('img.tile-image').attr('data-src'));\n });\n },\n tileHover: function () {\n var initTileHover = function initTileHover() {\n $('.product-tile .image-container').on('mouseenter', function () {\n if ($(this).find('img.tile-image').attr('data-alternate-image-src')) {\n $(this).find('img.tile-image').attr('src', $(this).find('img.tile-image').attr('data-alternate-image-src'));\n }\n });\n $('.product-tile .image-container').on('mouseleave', function () {\n if ($(this).find('img.tile-image').attr('data-alternate-image-src')) {\n $(this).find('img.tile-image').attr('src', $(this).find('img.tile-image').attr('data-src'));\n }\n });\n };\n\n initTileHover();\n $('body').on('search:afterShowMore search:afterFilter', function () {\n initTileHover();\n });\n }\n};\n","'use strict';\n\nvar clientSideValidation = require('base:components/clientSideValidation');\n\n/**\n * Remove current element validation.\n * @param {element} - element to be cleared\n * @returns {void}\n */\nfunction clearFieldError(element) {\n $(element).removeClass('is-invalid');\n if($(element).is('#phone') || $(element).is('#shippingPhoneNumber') || $(element).is('#shippingPhoneNumberdefault') || $(element).is('#phoneNumber')) {\n $(element).parent('.iti').removeClass('invalidField');\n }\n $(element).parent('.input-group').parent().find('.invalid-feedback')\n .empty();\n\n $('.submit-shipping, .submit-payment, .place-order').removeAttr('disabled');\n}\n\n/**\n * Validate form field. Requires `this` to be set to form object\n * @param {jQuery.event} event - Event to be canceled if form is invalid.\n */\nfunction validationField(element, event) {\n var valid = true;\n \n if ($(element).hasClass('flatpickr-input')) {\n var $invalidFeedback = $(element).parents('.form-group').find('.invalid-feedback');\n if ($(element).attr('required') && $(element).val() === '') {\n $invalidFeedback.text($(element).attr('data-missing-error'));\n $invalidFeedback.show();\n $(element).addClass('is-invalid');\n valid = false;\n } else {\n $invalidFeedback.hide();\n $(element).removeClass('is-invalid');\n }\n }\n if (element && element.checkValidity && !element.checkValidity()) {\n // safari\n valid = false;\n if (event) {\n event.preventDefault();\n event.stopPropagation();\n event.stopImmediatePropagation();\n }\n if (!element.validity.valid) {\n $(element).trigger('invalid', element.validity);\n }\n }\n if (valid) {\n clearFieldError(element);\n }\n\n}\n\nclientSideValidation.invalid = function () {\n $('form input, form select, form textarea').on('invalid', function (e) {\n e.preventDefault();\n \n if ($(this).hasClass('cardNumber') && this.validity.customError) {\n var supportedCards = $('.supported-cards') ? $('.supported-cards').attr('data-cards') : '';\n var element = document.querySelector('.cardNumber');\n var cardType = $('#cardType').val();\n if (cardType !== 'Unknown' && supportedCards && supportedCards.indexOf(cardType) === -1) {\n \n var cardsError = $('.supported-cards') ? $('.supported-cards').attr('data-cards-error') : '';\n $(this).parents('.form-group').find('.invalid-feedback').text(cardsError).show();\n $(this).addClass('is-invalid');\n } else {\n clearFieldError(this);\n $(this).parents('.form-group').find('input.cardNumber').removeClass('is-invalid');\n $('#cardType').removeClass('is-invalid');\n }\n } else {\n this.setCustomValidity('');\n if (!this.validity.valid) {\n var validationMessage = this.validationMessage;\n $(this).addClass('is-invalid');\n if ($(this).is('#phone') || $(this).is('#shippingPhoneNumber') || $(this).is('#shippingPhoneNumberdefault') || $(this).is('#phoneNumber')) {\n $(this).parent('.iti').addClass('invalidField');\n }\n if (this.validity.patternMismatch && $(this).data('pattern-mismatch')) {\n validationMessage = $(this).data('pattern-mismatch');\n }\n if ((this.validity.rangeOverflow || this.validity.rangeUnderflow)\n && $(this).data('range-error')) {\n validationMessage = $(this).data('range-error');\n }\n if ((this.validity.tooLong || this.validity.tooShort)\n && $(this).data('range-error')) {\n validationMessage = $(this).data('range-error');\n }\n if (this.validity.valueMissing && $(this).data('missing-error')) {\n validationMessage = $(this).data('missing-error');\n }\n $(this).parents('.form-group').find('.invalid-feedback')\n .text(validationMessage);\n }\n }\n });\n};\n\nclientSideValidation.focusout = function () {\n $('form .required').on('keyup', 'input, select', function (e) {\n if (e.keyCode !== 9) { // escape tab key\n validationField(this, e);\n }\n });\n\n $('form .required').on('blur', 'input, select', function (e) {\n validationField(this, e);\n });\n\n $('form .required').on('focusout', 'input', function (e) {\n validationField(this, e);\n });\n};\n\nclientSideValidation.buttonClick = function () {\n $('form button[type=\"submit\"], form input[type=\"submit\"]').on('click', function () {\n if (!$(this).parents('form').find('.is-invalid').length) {\n // clear all errors when trying to submit the form\n clientSideValidation.functions.clearForm($(this).parents('form'));\n }\n });\n};\n\nclientSideValidation.validationAddressFields = function () {\n $('.validate-this-field').on('keydown', function(e) {\n var regex = $(this).closest('form').attr('data-address-regex');\n if (regex) {\n var typedKey = e.key;\n if (typeof typedKey !== 'undefined') {\n var result = typedKey.match(new RegExp(regex, 'gi'));\n if (result && result.length) {\n return false;\n }\n }\n }\n return true;\n });\n};\n\nmodule.exports = clientSideValidation;\n","/**\n * Checks if `value` is the\n * [language type](http://www.ecma-international.org/ecma-262/7.0/#sec-ecmascript-language-types)\n * of `Object`. (e.g. arrays, functions, objects, regexes, `new Number(0)`, and `new String('')`)\n *\n * @static\n * @memberOf _\n * @since 0.1.0\n * @category Lang\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is an object, else `false`.\n * @example\n *\n * _.isObject({});\n * // => true\n *\n * _.isObject([1, 2, 3]);\n * // => true\n *\n * _.isObject(_.noop);\n * // => true\n *\n * _.isObject(null);\n * // => false\n */\nfunction isObject(value) {\n var type = typeof value;\n return value != null && (type == 'object' || type == 'function');\n}\n\nmodule.exports = isObject;\n","var freeGlobal = require('./_freeGlobal');\n\n/** Detect free variable `self`. */\nvar freeSelf = typeof self == 'object' && self && self.Object === Object && self;\n\n/** Used as a reference to the global object. */\nvar root = freeGlobal || freeSelf || Function('return this')();\n\nmodule.exports = root;\n","var root = require('./_root');\n\n/** Built-in value references. */\nvar Symbol = root.Symbol;\n\nmodule.exports = Symbol;\n","//! moment.js locale configuration\n//! locale : Afrikaans [af]\n//! author : Werner Mollentze : https://github.com/wernerm\n\n;(function (global, factory) {\n typeof exports === 'object' && typeof module !== 'undefined'\n && typeof require === 'function' ? factory(require('../moment')) :\n typeof define === 'function' && define.amd ? define(['../moment'], factory) :\n factory(global.moment)\n}(this, (function (moment) { 'use strict';\n\n //! moment.js locale configuration\n\n var af = moment.defineLocale('af', {\n months: 'Januarie_Februarie_Maart_April_Mei_Junie_Julie_Augustus_September_Oktober_November_Desember'.split(\n '_'\n ),\n monthsShort: 'Jan_Feb_Mrt_Apr_Mei_Jun_Jul_Aug_Sep_Okt_Nov_Des'.split('_'),\n weekdays: 'Sondag_Maandag_Dinsdag_Woensdag_Donderdag_Vrydag_Saterdag'.split(\n '_'\n ),\n weekdaysShort: 'Son_Maa_Din_Woe_Don_Vry_Sat'.split('_'),\n weekdaysMin: 'So_Ma_Di_Wo_Do_Vr_Sa'.split('_'),\n meridiemParse: /vm|nm/i,\n isPM: function (input) {\n return /^nm$/i.test(input);\n },\n meridiem: function (hours, minutes, isLower) {\n if (hours < 12) {\n return isLower ? 'vm' : 'VM';\n } else {\n return isLower ? 'nm' : 'NM';\n }\n },\n longDateFormat: {\n LT: 'HH:mm',\n LTS: 'HH:mm:ss',\n L: 'DD/MM/YYYY',\n LL: 'D MMMM YYYY',\n LLL: 'D MMMM YYYY HH:mm',\n LLLL: 'dddd, D MMMM YYYY HH:mm',\n },\n calendar: {\n sameDay: '[Vandag om] LT',\n nextDay: '[Môre om] LT',\n nextWeek: 'dddd [om] LT',\n lastDay: '[Gister om] LT',\n lastWeek: '[Laas] dddd [om] LT',\n sameElse: 'L',\n },\n relativeTime: {\n future: 'oor %s',\n past: '%s gelede',\n s: \"'n paar sekondes\",\n ss: '%d sekondes',\n m: \"'n minuut\",\n mm: '%d minute',\n h: \"'n uur\",\n hh: '%d ure',\n d: \"'n dag\",\n dd: '%d dae',\n M: \"'n maand\",\n MM: '%d maande',\n y: \"'n jaar\",\n yy: '%d jaar',\n },\n dayOfMonthOrdinalParse: /\\d{1,2}(ste|de)/,\n ordinal: function (number) {\n return (\n number +\n (number === 1 || number === 8 || number >= 20 ? 'ste' : 'de')\n ); // Thanks to Joris Röling : https://github.com/jjupiter\n },\n week: {\n dow: 1, // Maandag is die eerste dag van die week.\n doy: 4, // Die week wat die 4de Januarie bevat is die eerste week van die jaar.\n },\n });\n\n return af;\n\n})));\n","//! moment.js locale configuration\n//! locale : Arabic [ar]\n//! author : Abdel Said: https://github.com/abdelsaid\n//! author : Ahmed Elkhatib\n//! author : forabi https://github.com/forabi\n\n;(function (global, factory) {\n typeof exports === 'object' && typeof module !== 'undefined'\n && typeof require === 'function' ? factory(require('../moment')) :\n typeof define === 'function' && define.amd ? define(['../moment'], factory) :\n factory(global.moment)\n}(this, (function (moment) { 'use strict';\n\n //! moment.js locale configuration\n\n var symbolMap = {\n 1: 'Ù¡',\n 2: 'Ù¢',\n 3: 'Ù£',\n 4: 'Ù¤',\n 5: 'Ù¥',\n 6: 'Ù¦',\n 7: 'Ù§',\n 8: 'Ù¨',\n 9: 'Ù©',\n 0: 'Ù ',\n },\n numberMap = {\n 'Ù¡': '1',\n 'Ù¢': '2',\n 'Ù£': '3',\n 'Ù¤': '4',\n 'Ù¥': '5',\n 'Ù¦': '6',\n 'Ù§': '7',\n 'Ù¨': '8',\n 'Ù©': '9',\n 'Ù ': '0',\n },\n pluralForm = function (n) {\n return n === 0\n ? 0\n : n === 1\n ? 1\n : n === 2\n ? 2\n : n % 100 >= 3 && n % 100 <= 10\n ? 3\n : n % 100 >= 11\n ? 4\n : 5;\n },\n plurals = {\n s: [\n 'أقل من ثانية',\n 'ثانية واØدة',\n ['ثانيتان', 'ثانيتين'],\n '%d ثوان',\n '%d ثانية',\n '%d ثانية',\n ],\n m: [\n 'أقل من دقيقة',\n 'دقيقة واØدة',\n ['دقيقتان', 'دقيقتين'],\n '%d دقائق',\n '%d دقيقة',\n '%d دقيقة',\n ],\n h: [\n 'أقل من ساعة',\n 'ساعة واØدة',\n ['ساعتان', 'ساعتين'],\n '%d ساعات',\n '%d ساعة',\n '%d ساعة',\n ],\n d: [\n 'أقل من يوم',\n 'يوم واØد',\n ['يومان', 'يومين'],\n '%d أيام',\n '%d يومًا',\n '%d يوم',\n ],\n M: [\n 'أقل من شهر',\n 'شهر واØد',\n ['شهران', 'شهرين'],\n '%d أشهر',\n '%d شهرا',\n '%d شهر',\n ],\n y: [\n 'أقل من عام',\n 'عام واØد',\n ['عامان', 'عامين'],\n '%d أعوام',\n '%d عامًا',\n '%d عام',\n ],\n },\n pluralize = function (u) {\n return function (number, withoutSuffix, string, isFuture) {\n var f = pluralForm(number),\n str = plurals[u][pluralForm(number)];\n if (f === 2) {\n str = str[withoutSuffix ? 0 : 1];\n }\n return str.replace(/%d/i, number);\n };\n },\n months = [\n 'يناير',\n 'Ùبراير',\n 'مارس',\n 'أبريل',\n 'مايو',\n 'يونيو',\n 'يوليو',\n 'أغسطس',\n 'سبتمبر',\n 'أكتوبر',\n 'نوÙمبر',\n 'ديسمبر',\n ];\n\n var ar = moment.defineLocale('ar', {\n months: months,\n monthsShort: months,\n weekdays: 'الأØد_الإثنين_الثلاثاء_الأربعاء_الخميس_الجمعة_السبت'.split('_'),\n weekdaysShort: 'Ø£Øد_إثنين_ثلاثاء_أربعاء_خميس_جمعة_سبت'.split('_'),\n weekdaysMin: 'Ø_Ù†_Ø«_ر_Ø®_ج_س'.split('_'),\n weekdaysParseExact: true,\n longDateFormat: {\n LT: 'HH:mm',\n LTS: 'HH:mm:ss',\n L: 'D/\\u200FM/\\u200FYYYY',\n LL: 'D MMMM YYYY',\n LLL: 'D MMMM YYYY HH:mm',\n LLLL: 'dddd D MMMM YYYY HH:mm',\n },\n meridiemParse: /ص|Ù…/,\n isPM: function (input) {\n return 'Ù…' === input;\n },\n meridiem: function (hour, minute, isLower) {\n if (hour < 12) {\n return 'ص';\n } else {\n return 'Ù…';\n }\n },\n calendar: {\n sameDay: '[اليوم عند الساعة] LT',\n nextDay: '[غدًا عند الساعة] LT',\n nextWeek: 'dddd [عند الساعة] LT',\n lastDay: '[أمس عند الساعة] LT',\n lastWeek: 'dddd [عند الساعة] LT',\n sameElse: 'L',\n },\n relativeTime: {\n future: 'بعد %s',\n past: 'منذ %s',\n s: pluralize('s'),\n ss: pluralize('s'),\n m: pluralize('m'),\n mm: pluralize('m'),\n h: pluralize('h'),\n hh: pluralize('h'),\n d: pluralize('d'),\n dd: pluralize('d'),\n M: pluralize('M'),\n MM: pluralize('M'),\n y: pluralize('y'),\n yy: pluralize('y'),\n },\n preparse: function (string) {\n return string\n .replace(/[١٢٣٤٥٦٧٨٩٠]/g, function (match) {\n return numberMap[match];\n })\n .replace(/ØŒ/g, ',');\n },\n postformat: function (string) {\n return string\n .replace(/\\d/g, function (match) {\n return symbolMap[match];\n })\n .replace(/,/g, 'ØŒ');\n },\n week: {\n dow: 6, // Saturday is the first day of the week.\n doy: 12, // The week that contains Jan 12th is the first week of the year.\n },\n });\n\n return ar;\n\n})));\n","//! moment.js locale configuration\n//! locale : Arabic (Algeria) [ar-dz]\n//! author : Amine Roukh: https://github.com/Amine27\n//! author : Abdel Said: https://github.com/abdelsaid\n//! author : Ahmed Elkhatib\n//! author : forabi https://github.com/forabi\n//! author : Noureddine LOUAHEDJ : https://github.com/noureddinem\n\n;(function (global, factory) {\n typeof exports === 'object' && typeof module !== 'undefined'\n && typeof require === 'function' ? factory(require('../moment')) :\n typeof define === 'function' && define.amd ? define(['../moment'], factory) :\n factory(global.moment)\n}(this, (function (moment) { 'use strict';\n\n //! moment.js locale configuration\n\n var pluralForm = function (n) {\n return n === 0\n ? 0\n : n === 1\n ? 1\n : n === 2\n ? 2\n : n % 100 >= 3 && n % 100 <= 10\n ? 3\n : n % 100 >= 11\n ? 4\n : 5;\n },\n plurals = {\n s: [\n 'أقل من ثانية',\n 'ثانية واØدة',\n ['ثانيتان', 'ثانيتين'],\n '%d ثوان',\n '%d ثانية',\n '%d ثانية',\n ],\n m: [\n 'أقل من دقيقة',\n 'دقيقة واØدة',\n ['دقيقتان', 'دقيقتين'],\n '%d دقائق',\n '%d دقيقة',\n '%d دقيقة',\n ],\n h: [\n 'أقل من ساعة',\n 'ساعة واØدة',\n ['ساعتان', 'ساعتين'],\n '%d ساعات',\n '%d ساعة',\n '%d ساعة',\n ],\n d: [\n 'أقل من يوم',\n 'يوم واØد',\n ['يومان', 'يومين'],\n '%d أيام',\n '%d يومًا',\n '%d يوم',\n ],\n M: [\n 'أقل من شهر',\n 'شهر واØد',\n ['شهران', 'شهرين'],\n '%d أشهر',\n '%d شهرا',\n '%d شهر',\n ],\n y: [\n 'أقل من عام',\n 'عام واØد',\n ['عامان', 'عامين'],\n '%d أعوام',\n '%d عامًا',\n '%d عام',\n ],\n },\n pluralize = function (u) {\n return function (number, withoutSuffix, string, isFuture) {\n var f = pluralForm(number),\n str = plurals[u][pluralForm(number)];\n if (f === 2) {\n str = str[withoutSuffix ? 0 : 1];\n }\n return str.replace(/%d/i, number);\n };\n },\n months = [\n 'جانÙÙŠ',\n 'ÙÙŠÙري',\n 'مارس',\n 'Ø£Ùريل',\n 'ماي',\n 'جوان',\n 'جويلية',\n 'أوت',\n 'سبتمبر',\n 'أكتوبر',\n 'نوÙمبر',\n 'ديسمبر',\n ];\n\n var arDz = moment.defineLocale('ar-dz', {\n months: months,\n monthsShort: months,\n weekdays: 'الأØد_الإثنين_الثلاثاء_الأربعاء_الخميس_الجمعة_السبت'.split('_'),\n weekdaysShort: 'Ø£Øد_إثنين_ثلاثاء_أربعاء_خميس_جمعة_سبت'.split('_'),\n weekdaysMin: 'Ø_Ù†_Ø«_ر_Ø®_ج_س'.split('_'),\n weekdaysParseExact: true,\n longDateFormat: {\n LT: 'HH:mm',\n LTS: 'HH:mm:ss',\n L: 'D/\\u200FM/\\u200FYYYY',\n LL: 'D MMMM YYYY',\n LLL: 'D MMMM YYYY HH:mm',\n LLLL: 'dddd D MMMM YYYY HH:mm',\n },\n meridiemParse: /ص|Ù…/,\n isPM: function (input) {\n return 'Ù…' === input;\n },\n meridiem: function (hour, minute, isLower) {\n if (hour < 12) {\n return 'ص';\n } else {\n return 'Ù…';\n }\n },\n calendar: {\n sameDay: '[اليوم عند الساعة] LT',\n nextDay: '[غدًا عند الساعة] LT',\n nextWeek: 'dddd [عند الساعة] LT',\n lastDay: '[أمس عند الساعة] LT',\n lastWeek: 'dddd [عند الساعة] LT',\n sameElse: 'L',\n },\n relativeTime: {\n future: 'بعد %s',\n past: 'منذ %s',\n s: pluralize('s'),\n ss: pluralize('s'),\n m: pluralize('m'),\n mm: pluralize('m'),\n h: pluralize('h'),\n hh: pluralize('h'),\n d: pluralize('d'),\n dd: pluralize('d'),\n M: pluralize('M'),\n MM: pluralize('M'),\n y: pluralize('y'),\n yy: pluralize('y'),\n },\n postformat: function (string) {\n return string.replace(/,/g, 'ØŒ');\n },\n week: {\n dow: 0, // Sunday is the first day of the week.\n doy: 4, // The week that contains Jan 4th is the first week of the year.\n },\n });\n\n return arDz;\n\n})));\n","//! moment.js locale configuration\n//! locale : Arabic (Kuwait) [ar-kw]\n//! author : Nusret Parlak: https://github.com/nusretparlak\n\n;(function (global, factory) {\n typeof exports === 'object' && typeof module !== 'undefined'\n && typeof require === 'function' ? factory(require('../moment')) :\n typeof define === 'function' && define.amd ? define(['../moment'], factory) :\n factory(global.moment)\n}(this, (function (moment) { 'use strict';\n\n //! moment.js locale configuration\n\n var arKw = moment.defineLocale('ar-kw', {\n months: 'يناير_Ùبراير_مارس_أبريل_ماي_يونيو_يوليوز_غشت_شتنبر_أكتوبر_نونبر_دجنبر'.split(\n '_'\n ),\n monthsShort:\n 'يناير_Ùبراير_مارس_أبريل_ماي_يونيو_يوليوز_غشت_شتنبر_أكتوبر_نونبر_دجنبر'.split(\n '_'\n ),\n weekdays: 'الأØد_الإتنين_الثلاثاء_الأربعاء_الخميس_الجمعة_السبت'.split('_'),\n weekdaysShort: 'اØد_اتنين_ثلاثاء_اربعاء_خميس_جمعة_سبت'.split('_'),\n weekdaysMin: 'Ø_Ù†_Ø«_ر_Ø®_ج_س'.split('_'),\n weekdaysParseExact: true,\n longDateFormat: {\n LT: 'HH:mm',\n LTS: 'HH:mm:ss',\n L: 'DD/MM/YYYY',\n LL: 'D MMMM YYYY',\n LLL: 'D MMMM YYYY HH:mm',\n LLLL: 'dddd D MMMM YYYY HH:mm',\n },\n calendar: {\n sameDay: '[اليوم على الساعة] LT',\n nextDay: '[غدا على الساعة] LT',\n nextWeek: 'dddd [على الساعة] LT',\n lastDay: '[أمس على الساعة] LT',\n lastWeek: 'dddd [على الساعة] LT',\n sameElse: 'L',\n },\n relativeTime: {\n future: 'ÙÙŠ %s',\n past: 'منذ %s',\n s: 'ثوان',\n ss: '%d ثانية',\n m: 'دقيقة',\n mm: '%d دقائق',\n h: 'ساعة',\n hh: '%d ساعات',\n d: 'يوم',\n dd: '%d أيام',\n M: 'شهر',\n MM: '%d أشهر',\n y: 'سنة',\n yy: '%d سنوات',\n },\n week: {\n dow: 0, // Sunday is the first day of the week.\n doy: 12, // The week that contains Jan 12th is the first week of the year.\n },\n });\n\n return arKw;\n\n})));\n","//! moment.js locale configuration\n//! locale : Arabic (Libya) [ar-ly]\n//! author : Ali Hmer: https://github.com/kikoanis\n\n;(function (global, factory) {\n typeof exports === 'object' && typeof module !== 'undefined'\n && typeof require === 'function' ? factory(require('../moment')) :\n typeof define === 'function' && define.amd ? define(['../moment'], factory) :\n factory(global.moment)\n}(this, (function (moment) { 'use strict';\n\n //! moment.js locale configuration\n\n var symbolMap = {\n 1: '1',\n 2: '2',\n 3: '3',\n 4: '4',\n 5: '5',\n 6: '6',\n 7: '7',\n 8: '8',\n 9: '9',\n 0: '0',\n },\n pluralForm = function (n) {\n return n === 0\n ? 0\n : n === 1\n ? 1\n : n === 2\n ? 2\n : n % 100 >= 3 && n % 100 <= 10\n ? 3\n : n % 100 >= 11\n ? 4\n : 5;\n },\n plurals = {\n s: [\n 'أقل من ثانية',\n 'ثانية واØدة',\n ['ثانيتان', 'ثانيتين'],\n '%d ثوان',\n '%d ثانية',\n '%d ثانية',\n ],\n m: [\n 'أقل من دقيقة',\n 'دقيقة واØدة',\n ['دقيقتان', 'دقيقتين'],\n '%d دقائق',\n '%d دقيقة',\n '%d دقيقة',\n ],\n h: [\n 'أقل من ساعة',\n 'ساعة واØدة',\n ['ساعتان', 'ساعتين'],\n '%d ساعات',\n '%d ساعة',\n '%d ساعة',\n ],\n d: [\n 'أقل من يوم',\n 'يوم واØد',\n ['يومان', 'يومين'],\n '%d أيام',\n '%d يومًا',\n '%d يوم',\n ],\n M: [\n 'أقل من شهر',\n 'شهر واØد',\n ['شهران', 'شهرين'],\n '%d أشهر',\n '%d شهرا',\n '%d شهر',\n ],\n y: [\n 'أقل من عام',\n 'عام واØد',\n ['عامان', 'عامين'],\n '%d أعوام',\n '%d عامًا',\n '%d عام',\n ],\n },\n pluralize = function (u) {\n return function (number, withoutSuffix, string, isFuture) {\n var f = pluralForm(number),\n str = plurals[u][pluralForm(number)];\n if (f === 2) {\n str = str[withoutSuffix ? 0 : 1];\n }\n return str.replace(/%d/i, number);\n };\n },\n months = [\n 'يناير',\n 'Ùبراير',\n 'مارس',\n 'أبريل',\n 'مايو',\n 'يونيو',\n 'يوليو',\n 'أغسطس',\n 'سبتمبر',\n 'أكتوبر',\n 'نوÙمبر',\n 'ديسمبر',\n ];\n\n var arLy = moment.defineLocale('ar-ly', {\n months: months,\n monthsShort: months,\n weekdays: 'الأØد_الإثنين_الثلاثاء_الأربعاء_الخميس_الجمعة_السبت'.split('_'),\n weekdaysShort: 'Ø£Øد_إثنين_ثلاثاء_أربعاء_خميس_جمعة_سبت'.split('_'),\n weekdaysMin: 'Ø_Ù†_Ø«_ر_Ø®_ج_س'.split('_'),\n weekdaysParseExact: true,\n longDateFormat: {\n LT: 'HH:mm',\n LTS: 'HH:mm:ss',\n L: 'D/\\u200FM/\\u200FYYYY',\n LL: 'D MMMM YYYY',\n LLL: 'D MMMM YYYY HH:mm',\n LLLL: 'dddd D MMMM YYYY HH:mm',\n },\n meridiemParse: /ص|Ù…/,\n isPM: function (input) {\n return 'Ù…' === input;\n },\n meridiem: function (hour, minute, isLower) {\n if (hour < 12) {\n return 'ص';\n } else {\n return 'Ù…';\n }\n },\n calendar: {\n sameDay: '[اليوم عند الساعة] LT',\n nextDay: '[غدًا عند الساعة] LT',\n nextWeek: 'dddd [عند الساعة] LT',\n lastDay: '[أمس عند الساعة] LT',\n lastWeek: 'dddd [عند الساعة] LT',\n sameElse: 'L',\n },\n relativeTime: {\n future: 'بعد %s',\n past: 'منذ %s',\n s: pluralize('s'),\n ss: pluralize('s'),\n m: pluralize('m'),\n mm: pluralize('m'),\n h: pluralize('h'),\n hh: pluralize('h'),\n d: pluralize('d'),\n dd: pluralize('d'),\n M: pluralize('M'),\n MM: pluralize('M'),\n y: pluralize('y'),\n yy: pluralize('y'),\n },\n preparse: function (string) {\n return string.replace(/ØŒ/g, ',');\n },\n postformat: function (string) {\n return string\n .replace(/\\d/g, function (match) {\n return symbolMap[match];\n })\n .replace(/,/g, 'ØŒ');\n },\n week: {\n dow: 6, // Saturday is the first day of the week.\n doy: 12, // The week that contains Jan 12th is the first week of the year.\n },\n });\n\n return arLy;\n\n})));\n","//! moment.js locale configuration\n//! locale : Arabic (Morocco) [ar-ma]\n//! author : ElFadili Yassine : https://github.com/ElFadiliY\n//! author : Abdel Said : https://github.com/abdelsaid\n\n;(function (global, factory) {\n typeof exports === 'object' && typeof module !== 'undefined'\n && typeof require === 'function' ? factory(require('../moment')) :\n typeof define === 'function' && define.amd ? define(['../moment'], factory) :\n factory(global.moment)\n}(this, (function (moment) { 'use strict';\n\n //! moment.js locale configuration\n\n var arMa = moment.defineLocale('ar-ma', {\n months: 'يناير_Ùبراير_مارس_أبريل_ماي_يونيو_يوليوز_غشت_شتنبر_أكتوبر_نونبر_دجنبر'.split(\n '_'\n ),\n monthsShort:\n 'يناير_Ùبراير_مارس_أبريل_ماي_يونيو_يوليوز_غشت_شتنبر_أكتوبر_نونبر_دجنبر'.split(\n '_'\n ),\n weekdays: 'الأØد_الإثنين_الثلاثاء_الأربعاء_الخميس_الجمعة_السبت'.split('_'),\n weekdaysShort: 'اØد_اثنين_ثلاثاء_اربعاء_خميس_جمعة_سبت'.split('_'),\n weekdaysMin: 'Ø_Ù†_Ø«_ر_Ø®_ج_س'.split('_'),\n weekdaysParseExact: true,\n longDateFormat: {\n LT: 'HH:mm',\n LTS: 'HH:mm:ss',\n L: 'DD/MM/YYYY',\n LL: 'D MMMM YYYY',\n LLL: 'D MMMM YYYY HH:mm',\n LLLL: 'dddd D MMMM YYYY HH:mm',\n },\n calendar: {\n sameDay: '[اليوم على الساعة] LT',\n nextDay: '[غدا على الساعة] LT',\n nextWeek: 'dddd [على الساعة] LT',\n lastDay: '[أمس على الساعة] LT',\n lastWeek: 'dddd [على الساعة] LT',\n sameElse: 'L',\n },\n relativeTime: {\n future: 'ÙÙŠ %s',\n past: 'منذ %s',\n s: 'ثوان',\n ss: '%d ثانية',\n m: 'دقيقة',\n mm: '%d دقائق',\n h: 'ساعة',\n hh: '%d ساعات',\n d: 'يوم',\n dd: '%d أيام',\n M: 'شهر',\n MM: '%d أشهر',\n y: 'سنة',\n yy: '%d سنوات',\n },\n week: {\n dow: 1, // Monday is the first day of the week.\n doy: 4, // The week that contains Jan 4th is the first week of the year.\n },\n });\n\n return arMa;\n\n})));\n","//! moment.js locale configuration\n//! locale : Arabic (Saudi Arabia) [ar-sa]\n//! author : Suhail Alkowaileet : https://github.com/xsoh\n\n;(function (global, factory) {\n typeof exports === 'object' && typeof module !== 'undefined'\n && typeof require === 'function' ? factory(require('../moment')) :\n typeof define === 'function' && define.amd ? define(['../moment'], factory) :\n factory(global.moment)\n}(this, (function (moment) { 'use strict';\n\n //! moment.js locale configuration\n\n var symbolMap = {\n 1: 'Ù¡',\n 2: 'Ù¢',\n 3: 'Ù£',\n 4: 'Ù¤',\n 5: 'Ù¥',\n 6: 'Ù¦',\n 7: 'Ù§',\n 8: 'Ù¨',\n 9: 'Ù©',\n 0: 'Ù ',\n },\n numberMap = {\n 'Ù¡': '1',\n 'Ù¢': '2',\n 'Ù£': '3',\n 'Ù¤': '4',\n 'Ù¥': '5',\n 'Ù¦': '6',\n 'Ù§': '7',\n 'Ù¨': '8',\n 'Ù©': '9',\n 'Ù ': '0',\n };\n\n var arSa = moment.defineLocale('ar-sa', {\n months: 'يناير_Ùبراير_مارس_أبريل_مايو_يونيو_يوليو_أغسطس_سبتمبر_أكتوبر_نوÙمبر_ديسمبر'.split(\n '_'\n ),\n monthsShort:\n 'يناير_Ùبراير_مارس_أبريل_مايو_يونيو_يوليو_أغسطس_سبتمبر_أكتوبر_نوÙمبر_ديسمبر'.split(\n '_'\n ),\n weekdays: 'الأØد_الإثنين_الثلاثاء_الأربعاء_الخميس_الجمعة_السبت'.split('_'),\n weekdaysShort: 'Ø£Øد_إثنين_ثلاثاء_أربعاء_خميس_جمعة_سبت'.split('_'),\n weekdaysMin: 'Ø_Ù†_Ø«_ر_Ø®_ج_س'.split('_'),\n weekdaysParseExact: true,\n longDateFormat: {\n LT: 'HH:mm',\n LTS: 'HH:mm:ss',\n L: 'DD/MM/YYYY',\n LL: 'D MMMM YYYY',\n LLL: 'D MMMM YYYY HH:mm',\n LLLL: 'dddd D MMMM YYYY HH:mm',\n },\n meridiemParse: /ص|Ù…/,\n isPM: function (input) {\n return 'Ù…' === input;\n },\n meridiem: function (hour, minute, isLower) {\n if (hour < 12) {\n return 'ص';\n } else {\n return 'Ù…';\n }\n },\n calendar: {\n sameDay: '[اليوم على الساعة] LT',\n nextDay: '[غدا على الساعة] LT',\n nextWeek: 'dddd [على الساعة] LT',\n lastDay: '[أمس على الساعة] LT',\n lastWeek: 'dddd [على الساعة] LT',\n sameElse: 'L',\n },\n relativeTime: {\n future: 'ÙÙŠ %s',\n past: 'منذ %s',\n s: 'ثوان',\n ss: '%d ثانية',\n m: 'دقيقة',\n mm: '%d دقائق',\n h: 'ساعة',\n hh: '%d ساعات',\n d: 'يوم',\n dd: '%d أيام',\n M: 'شهر',\n MM: '%d أشهر',\n y: 'سنة',\n yy: '%d سنوات',\n },\n preparse: function (string) {\n return string\n .replace(/[١٢٣٤٥٦٧٨٩٠]/g, function (match) {\n return numberMap[match];\n })\n .replace(/ØŒ/g, ',');\n },\n postformat: function (string) {\n return string\n .replace(/\\d/g, function (match) {\n return symbolMap[match];\n })\n .replace(/,/g, 'ØŒ');\n },\n week: {\n dow: 0, // Sunday is the first day of the week.\n doy: 6, // The week that contains Jan 6th is the first week of the year.\n },\n });\n\n return arSa;\n\n})));\n","//! moment.js locale configuration\n//! locale : Arabic (Tunisia) [ar-tn]\n//! author : Nader Toukabri : https://github.com/naderio\n\n;(function (global, factory) {\n typeof exports === 'object' && typeof module !== 'undefined'\n && typeof require === 'function' ? factory(require('../moment')) :\n typeof define === 'function' && define.amd ? define(['../moment'], factory) :\n factory(global.moment)\n}(this, (function (moment) { 'use strict';\n\n //! moment.js locale configuration\n\n var arTn = moment.defineLocale('ar-tn', {\n months: 'جانÙÙŠ_ÙÙŠÙري_مارس_Ø£Ùريل_ماي_جوان_جويلية_أوت_سبتمبر_أكتوبر_نوÙمبر_ديسمبر'.split(\n '_'\n ),\n monthsShort:\n 'جانÙÙŠ_ÙÙŠÙري_مارس_Ø£Ùريل_ماي_جوان_جويلية_أوت_سبتمبر_أكتوبر_نوÙمبر_ديسمبر'.split(\n '_'\n ),\n weekdays: 'الأØد_الإثنين_الثلاثاء_الأربعاء_الخميس_الجمعة_السبت'.split('_'),\n weekdaysShort: 'Ø£Øد_إثنين_ثلاثاء_أربعاء_خميس_جمعة_سبت'.split('_'),\n weekdaysMin: 'Ø_Ù†_Ø«_ر_Ø®_ج_س'.split('_'),\n weekdaysParseExact: true,\n longDateFormat: {\n LT: 'HH:mm',\n LTS: 'HH:mm:ss',\n L: 'DD/MM/YYYY',\n LL: 'D MMMM YYYY',\n LLL: 'D MMMM YYYY HH:mm',\n LLLL: 'dddd D MMMM YYYY HH:mm',\n },\n calendar: {\n sameDay: '[اليوم على الساعة] LT',\n nextDay: '[غدا على الساعة] LT',\n nextWeek: 'dddd [على الساعة] LT',\n lastDay: '[أمس على الساعة] LT',\n lastWeek: 'dddd [على الساعة] LT',\n sameElse: 'L',\n },\n relativeTime: {\n future: 'ÙÙŠ %s',\n past: 'منذ %s',\n s: 'ثوان',\n ss: '%d ثانية',\n m: 'دقيقة',\n mm: '%d دقائق',\n h: 'ساعة',\n hh: '%d ساعات',\n d: 'يوم',\n dd: '%d أيام',\n M: 'شهر',\n MM: '%d أشهر',\n y: 'سنة',\n yy: '%d سنوات',\n },\n week: {\n dow: 1, // Monday is the first day of the week.\n doy: 4, // The week that contains Jan 4th is the first week of the year.\n },\n });\n\n return arTn;\n\n})));\n","//! moment.js locale configuration\n//! locale : Azerbaijani [az]\n//! author : topchiyev : https://github.com/topchiyev\n\n;(function (global, factory) {\n typeof exports === 'object' && typeof module !== 'undefined'\n && typeof require === 'function' ? factory(require('../moment')) :\n typeof define === 'function' && define.amd ? define(['../moment'], factory) :\n factory(global.moment)\n}(this, (function (moment) { 'use strict';\n\n //! moment.js locale configuration\n\n var suffixes = {\n 1: '-inci',\n 5: '-inci',\n 8: '-inci',\n 70: '-inci',\n 80: '-inci',\n 2: '-nci',\n 7: '-nci',\n 20: '-nci',\n 50: '-nci',\n 3: '-üncü',\n 4: '-üncü',\n 100: '-üncü',\n 6: '-ncı',\n 9: '-uncu',\n 10: '-uncu',\n 30: '-uncu',\n 60: '-ıncı',\n 90: '-ıncı',\n };\n\n var az = moment.defineLocale('az', {\n months: 'yanvar_fevral_mart_aprel_may_iyun_iyul_avqust_sentyabr_oktyabr_noyabr_dekabr'.split(\n '_'\n ),\n monthsShort: 'yan_fev_mar_apr_may_iyn_iyl_avq_sen_okt_noy_dek'.split('_'),\n weekdays:\n 'Bazar_Bazar ertÉ™si_ÇərÅŸÉ™nbÉ™ axÅŸamı_ÇərÅŸÉ™nbÉ™_CümÉ™ axÅŸamı_CümÉ™_ŞənbÉ™'.split(\n '_'\n ),\n weekdaysShort: 'Baz_BzE_ÇAx_Çər_CAx_Cüm_Şən'.split('_'),\n weekdaysMin: 'Bz_BE_ÇA_Çə_CA_Cü_Şə'.split('_'),\n weekdaysParseExact: true,\n longDateFormat: {\n LT: 'HH:mm',\n LTS: 'HH:mm:ss',\n L: 'DD.MM.YYYY',\n LL: 'D MMMM YYYY',\n LLL: 'D MMMM YYYY HH:mm',\n LLLL: 'dddd, D MMMM YYYY HH:mm',\n },\n calendar: {\n sameDay: '[bugün saat] LT',\n nextDay: '[sabah saat] LT',\n nextWeek: '[gÉ™lÉ™n hÉ™ftÉ™] dddd [saat] LT',\n lastDay: '[dünÉ™n] LT',\n lastWeek: '[keçən hÉ™ftÉ™] dddd [saat] LT',\n sameElse: 'L',\n },\n relativeTime: {\n future: '%s sonra',\n past: '%s É™vvÉ™l',\n s: 'bir neçə saniyÉ™',\n ss: '%d saniyÉ™',\n m: 'bir dÉ™qiqÉ™',\n mm: '%d dÉ™qiqÉ™',\n h: 'bir saat',\n hh: '%d saat',\n d: 'bir gün',\n dd: '%d gün',\n M: 'bir ay',\n MM: '%d ay',\n y: 'bir il',\n yy: '%d il',\n },\n meridiemParse: /gecÉ™|sÉ™hÉ™r|gündüz|axÅŸam/,\n isPM: function (input) {\n return /^(gündüz|axÅŸam)$/.test(input);\n },\n meridiem: function (hour, minute, isLower) {\n if (hour < 4) {\n return 'gecÉ™';\n } else if (hour < 12) {\n return 'sÉ™hÉ™r';\n } else if (hour < 17) {\n return 'gündüz';\n } else {\n return 'axÅŸam';\n }\n },\n dayOfMonthOrdinalParse: /\\d{1,2}-(ıncı|inci|nci|üncü|ncı|uncu)/,\n ordinal: function (number) {\n if (number === 0) {\n // special case for zero\n return number + '-ıncı';\n }\n var a = number % 10,\n b = (number % 100) - a,\n c = number >= 100 ? 100 : null;\n return number + (suffixes[a] || suffixes[b] || suffixes[c]);\n },\n week: {\n dow: 1, // Monday is the first day of the week.\n doy: 7, // The week that contains Jan 7th is the first week of the year.\n },\n });\n\n return az;\n\n})));\n","//! moment.js locale configuration\n//! locale : Belarusian [be]\n//! author : Dmitry Demidov : https://github.com/demidov91\n//! author: Praleska: http://praleska.pro/\n//! Author : Menelion Elensúle : https://github.com/Oire\n\n;(function (global, factory) {\n typeof exports === 'object' && typeof module !== 'undefined'\n && typeof require === 'function' ? factory(require('../moment')) :\n typeof define === 'function' && define.amd ? define(['../moment'], factory) :\n factory(global.moment)\n}(this, (function (moment) { 'use strict';\n\n //! moment.js locale configuration\n\n function plural(word, num) {\n var forms = word.split('_');\n return num % 10 === 1 && num % 100 !== 11\n ? forms[0]\n : num % 10 >= 2 && num % 10 <= 4 && (num % 100 < 10 || num % 100 >= 20)\n ? forms[1]\n : forms[2];\n }\n function relativeTimeWithPlural(number, withoutSuffix, key) {\n var format = {\n ss: withoutSuffix ? 'Ñекунда_Ñекунды_Ñекунд' : 'Ñекунду_Ñекунды_Ñекунд',\n mm: withoutSuffix ? 'хвіліна_хвіліны_хвілін' : 'хвіліну_хвіліны_хвілін',\n hh: withoutSuffix ? 'гадзіна_гадзіны_гадзін' : 'гадзіну_гадзіны_гадзін',\n dd: 'дзень_дні_дзён',\n MM: 'меÑÑц_меÑÑцы_меÑÑцаў',\n yy: 'год_гады_гадоў',\n };\n if (key === 'm') {\n return withoutSuffix ? 'хвіліна' : 'хвіліну';\n } else if (key === 'h') {\n return withoutSuffix ? 'гадзіна' : 'гадзіну';\n } else {\n return number + ' ' + plural(format[key], +number);\n }\n }\n\n var be = moment.defineLocale('be', {\n months: {\n format: 'ÑтудзенÑ_лютага_Ñакавіка_краÑавіка_траўнÑ_чÑрвенÑ_ліпенÑ_жніўнÑ_вераÑнÑ_каÑтрычніка_ліÑтапада_ÑнежнÑ'.split(\n '_'\n ),\n standalone:\n 'Ñтудзень_люты_Ñакавік_краÑавік_травень_чÑрвень_ліпень_жнівень_вераÑень_каÑтрычнік_ліÑтапад_Ñнежань'.split(\n '_'\n ),\n },\n monthsShort:\n 'Ñтуд_лют_Ñак_краÑ_трав_чÑрв_ліп_жнів_вер_каÑÑ‚_ліÑÑ‚_Ñнеж'.split('_'),\n weekdays: {\n format: 'нÑдзелю_панÑдзелак_аўторак_Ñераду_чацвер_пÑтніцу_Ñуботу'.split(\n '_'\n ),\n standalone:\n 'нÑдзелÑ_панÑдзелак_аўторак_Ñерада_чацвер_пÑтніца_Ñубота'.split(\n '_'\n ),\n isFormat: /\\[ ?[Ууў] ?(?:мінулую|наÑтупную)? ?\\] ?dddd/,\n },\n weekdaysShort: 'нд_пн_ат_ÑÑ€_чц_пт_Ñб'.split('_'),\n weekdaysMin: 'нд_пн_ат_ÑÑ€_чц_пт_Ñб'.split('_'),\n longDateFormat: {\n LT: 'HH:mm',\n LTS: 'HH:mm:ss',\n L: 'DD.MM.YYYY',\n LL: 'D MMMM YYYY г.',\n LLL: 'D MMMM YYYY г., HH:mm',\n LLLL: 'dddd, D MMMM YYYY г., HH:mm',\n },\n calendar: {\n sameDay: '[Ð¡Ñ‘Ð½Ð½Ñ Ñž] LT',\n nextDay: '[Заўтра Ñž] LT',\n lastDay: '[Учора Ñž] LT',\n nextWeek: function () {\n return '[У] dddd [Ñž] LT';\n },\n lastWeek: function () {\n switch (this.day()) {\n case 0:\n case 3:\n case 5:\n case 6:\n return '[У мінулую] dddd [Ñž] LT';\n case 1:\n case 2:\n case 4:\n return '[У мінулы] dddd [Ñž] LT';\n }\n },\n sameElse: 'L',\n },\n relativeTime: {\n future: 'праз %s',\n past: '%s таму',\n s: 'некалькі Ñекунд',\n m: relativeTimeWithPlural,\n mm: relativeTimeWithPlural,\n h: relativeTimeWithPlural,\n hh: relativeTimeWithPlural,\n d: 'дзень',\n dd: relativeTimeWithPlural,\n M: 'меÑÑц',\n MM: relativeTimeWithPlural,\n y: 'год',\n yy: relativeTimeWithPlural,\n },\n meridiemParse: /ночы|раніцы|днÑ|вечара/,\n isPM: function (input) {\n return /^(днÑ|вечара)$/.test(input);\n },\n meridiem: function (hour, minute, isLower) {\n if (hour < 4) {\n return 'ночы';\n } else if (hour < 12) {\n return 'раніцы';\n } else if (hour < 17) {\n return 'днÑ';\n } else {\n return 'вечара';\n }\n },\n dayOfMonthOrdinalParse: /\\d{1,2}-(Ñ–|Ñ‹|га)/,\n ordinal: function (number, period) {\n switch (period) {\n case 'M':\n case 'd':\n case 'DDD':\n case 'w':\n case 'W':\n return (number % 10 === 2 || number % 10 === 3) &&\n number % 100 !== 12 &&\n number % 100 !== 13\n ? number + '-Ñ–'\n : number + '-Ñ‹';\n case 'D':\n return number + '-га';\n default:\n return number;\n }\n },\n week: {\n dow: 1, // Monday is the first day of the week.\n doy: 7, // The week that contains Jan 7th is the first week of the year.\n },\n });\n\n return be;\n\n})));\n","//! moment.js locale configuration\n//! locale : Bulgarian [bg]\n//! author : Krasen Borisov : https://github.com/kraz\n\n;(function (global, factory) {\n typeof exports === 'object' && typeof module !== 'undefined'\n && typeof require === 'function' ? factory(require('../moment')) :\n typeof define === 'function' && define.amd ? define(['../moment'], factory) :\n factory(global.moment)\n}(this, (function (moment) { 'use strict';\n\n //! moment.js locale configuration\n\n var bg = moment.defineLocale('bg', {\n months: 'Ñнуари_февруари_март_април_май_юни_юли_авгуÑÑ‚_Ñептември_октомври_ноември_декември'.split(\n '_'\n ),\n monthsShort: 'Ñну_фев_мар_апр_май_юни_юли_авг_Ñеп_окт_ное_дек'.split('_'),\n weekdays: 'неделÑ_понеделник_вторник_ÑÑ€Ñда_четвъртък_петък_Ñъбота'.split(\n '_'\n ),\n weekdaysShort: 'нед_пон_вто_ÑÑ€Ñ_чет_пет_Ñъб'.split('_'),\n weekdaysMin: 'нд_пн_вт_ÑÑ€_чт_пт_Ñб'.split('_'),\n longDateFormat: {\n LT: 'H:mm',\n LTS: 'H:mm:ss',\n L: 'D.MM.YYYY',\n LL: 'D MMMM YYYY',\n LLL: 'D MMMM YYYY H:mm',\n LLLL: 'dddd, D MMMM YYYY H:mm',\n },\n calendar: {\n sameDay: '[Ð”Ð½ÐµÑ Ð²] LT',\n nextDay: '[Утре в] LT',\n nextWeek: 'dddd [в] LT',\n lastDay: '[Вчера в] LT',\n lastWeek: function () {\n switch (this.day()) {\n case 0:\n case 3:\n case 6:\n return '[Миналата] dddd [в] LT';\n case 1:\n case 2:\n case 4:\n case 5:\n return '[МиналиÑ] dddd [в] LT';\n }\n },\n sameElse: 'L',\n },\n relativeTime: {\n future: 'Ñлед %s',\n past: 'преди %s',\n s: 'нÑколко Ñекунди',\n ss: '%d Ñекунди',\n m: 'минута',\n mm: '%d минути',\n h: 'чаÑ',\n hh: '%d чаÑа',\n d: 'ден',\n dd: '%d дена',\n w: 'Ñедмица',\n ww: '%d Ñедмици',\n M: 'меÑец',\n MM: '%d меÑеца',\n y: 'година',\n yy: '%d години',\n },\n dayOfMonthOrdinalParse: /\\d{1,2}-(ев|ен|ти|ви|ри|ми)/,\n ordinal: function (number) {\n var lastDigit = number % 10,\n last2Digits = number % 100;\n if (number === 0) {\n return number + '-ев';\n } else if (last2Digits === 0) {\n return number + '-ен';\n } else if (last2Digits > 10 && last2Digits < 20) {\n return number + '-ти';\n } else if (lastDigit === 1) {\n return number + '-ви';\n } else if (lastDigit === 2) {\n return number + '-ри';\n } else if (lastDigit === 7 || lastDigit === 8) {\n return number + '-ми';\n } else {\n return number + '-ти';\n }\n },\n week: {\n dow: 1, // Monday is the first day of the week.\n doy: 7, // The week that contains Jan 7th is the first week of the year.\n },\n });\n\n return bg;\n\n})));\n","//! moment.js locale configuration\n//! locale : Bambara [bm]\n//! author : Estelle Comment : https://github.com/estellecomment\n\n;(function (global, factory) {\n typeof exports === 'object' && typeof module !== 'undefined'\n && typeof require === 'function' ? factory(require('../moment')) :\n typeof define === 'function' && define.amd ? define(['../moment'], factory) :\n factory(global.moment)\n}(this, (function (moment) { 'use strict';\n\n //! moment.js locale configuration\n\n var bm = moment.defineLocale('bm', {\n months: 'Zanwuyekalo_Fewuruyekalo_Marisikalo_Awirilikalo_MÉ›kalo_ZuwÉ›nkalo_Zuluyekalo_Utikalo_SÉ›tanburukalo_É”kutÉ”burukalo_Nowanburukalo_Desanburukalo'.split(\n '_'\n ),\n monthsShort: 'Zan_Few_Mar_Awi_MÉ›_Zuw_Zul_Uti_SÉ›t_É”ku_Now_Des'.split('_'),\n weekdays: 'Kari_NtÉ›nÉ›n_Tarata_Araba_Alamisa_Juma_Sibiri'.split('_'),\n weekdaysShort: 'Kar_NtÉ›_Tar_Ara_Ala_Jum_Sib'.split('_'),\n weekdaysMin: 'Ka_Nt_Ta_Ar_Al_Ju_Si'.split('_'),\n longDateFormat: {\n LT: 'HH:mm',\n LTS: 'HH:mm:ss',\n L: 'DD/MM/YYYY',\n LL: 'MMMM [tile] D [san] YYYY',\n LLL: 'MMMM [tile] D [san] YYYY [lÉ›rÉ›] HH:mm',\n LLLL: 'dddd MMMM [tile] D [san] YYYY [lÉ›rÉ›] HH:mm',\n },\n calendar: {\n sameDay: '[Bi lÉ›rÉ›] LT',\n nextDay: '[Sini lÉ›rÉ›] LT',\n nextWeek: 'dddd [don lÉ›rÉ›] LT',\n lastDay: '[Kunu lÉ›rÉ›] LT',\n lastWeek: 'dddd [tÉ›mÉ›nen lÉ›rÉ›] LT',\n sameElse: 'L',\n },\n relativeTime: {\n future: '%s kÉ”nÉ”',\n past: 'a bÉ› %s bÉ”',\n s: 'sanga dama dama',\n ss: 'sekondi %d',\n m: 'miniti kelen',\n mm: 'miniti %d',\n h: 'lÉ›rÉ› kelen',\n hh: 'lÉ›rÉ› %d',\n d: 'tile kelen',\n dd: 'tile %d',\n M: 'kalo kelen',\n MM: 'kalo %d',\n y: 'san kelen',\n yy: 'san %d',\n },\n week: {\n dow: 1, // Monday is the first day of the week.\n doy: 4, // The week that contains Jan 4th is the first week of the year.\n },\n });\n\n return bm;\n\n})));\n","//! moment.js locale configuration\n//! locale : Bengali [bn]\n//! author : Kaushik Gandhi : https://github.com/kaushikgandhi\n\n;(function (global, factory) {\n typeof exports === 'object' && typeof module !== 'undefined'\n && typeof require === 'function' ? factory(require('../moment')) :\n typeof define === 'function' && define.amd ? define(['../moment'], factory) :\n factory(global.moment)\n}(this, (function (moment) { 'use strict';\n\n //! moment.js locale configuration\n\n var symbolMap = {\n 1: '১',\n 2: '২',\n 3: '৩',\n 4: '৪',\n 5: '৫',\n 6: '৬',\n 7: 'à§',\n 8: '৮',\n 9: '৯',\n 0: '০',\n },\n numberMap = {\n '১': '1',\n '২': '2',\n '৩': '3',\n '৪': '4',\n '৫': '5',\n '৬': '6',\n 'à§': '7',\n '৮': '8',\n '৯': '9',\n '০': '0',\n };\n\n var bn = moment.defineLocale('bn', {\n months: 'জানà§à§Ÿà¦¾à¦°à¦¿_ফেবà§à¦°à§à§Ÿà¦¾à¦°à¦¿_মারà§à¦š_à¦à¦ªà§à¦°à¦¿à¦²_মে_জà§à¦¨_জà§à¦²à¦¾à¦‡_আগসà§à¦Ÿ_সেপà§à¦Ÿà§‡à¦®à§à¦¬à¦°_অকà§à¦Ÿà§‹à¦¬à¦°_নà¦à§‡à¦®à§à¦¬à¦°_ডিসেমà§à¦¬à¦°'.split(\n '_'\n ),\n monthsShort:\n 'জানà§_ফেবà§à¦°à§_মারà§à¦š_à¦à¦ªà§à¦°à¦¿à¦²_মে_জà§à¦¨_জà§à¦²à¦¾à¦‡_আগসà§à¦Ÿ_সেপà§à¦Ÿ_অকà§à¦Ÿà§‹_নà¦à§‡_ডিসে'.split(\n '_'\n ),\n weekdays: 'রবিবার_সোমবার_মঙà§à¦—লবার_বà§à¦§à¦¬à¦¾à¦°_বৃহসà§à¦ªà¦¤à¦¿à¦¬à¦¾à¦°_শà§à¦•à§à¦°à¦¬à¦¾à¦°_শনিবার'.split(\n '_'\n ),\n weekdaysShort: 'রবি_সোম_মঙà§à¦—ল_বà§à¦§_বৃহসà§à¦ªà¦¤à¦¿_শà§à¦•à§à¦°_শনি'.split('_'),\n weekdaysMin: 'রবি_সোম_মঙà§à¦—ল_বà§à¦§_বৃহ_শà§à¦•à§à¦°_শনি'.split('_'),\n longDateFormat: {\n LT: 'A h:mm সময়',\n LTS: 'A h:mm:ss সময়',\n L: 'DD/MM/YYYY',\n LL: 'D MMMM YYYY',\n LLL: 'D MMMM YYYY, A h:mm সময়',\n LLLL: 'dddd, D MMMM YYYY, A h:mm সময়',\n },\n calendar: {\n sameDay: '[আজ] LT',\n nextDay: '[আগামীকাল] LT',\n nextWeek: 'dddd, LT',\n lastDay: '[গতকাল] LT',\n lastWeek: '[গত] dddd, LT',\n sameElse: 'L',\n },\n relativeTime: {\n future: '%s পরে',\n past: '%s আগে',\n s: 'কয়েক সেকেনà§à¦¡',\n ss: '%d সেকেনà§à¦¡',\n m: 'à¦à¦• মিনিট',\n mm: '%d মিনিট',\n h: 'à¦à¦• ঘনà§à¦Ÿà¦¾',\n hh: '%d ঘনà§à¦Ÿà¦¾',\n d: 'à¦à¦• দিন',\n dd: '%d দিন',\n M: 'à¦à¦• মাস',\n MM: '%d মাস',\n y: 'à¦à¦• বছর',\n yy: '%d বছর',\n },\n preparse: function (string) {\n return string.replace(/[১২৩৪৫৬à§à§®à§¯à§¦]/g, function (match) {\n return numberMap[match];\n });\n },\n postformat: function (string) {\n return string.replace(/\\d/g, function (match) {\n return symbolMap[match];\n });\n },\n meridiemParse: /রাত|সকাল|দà§à¦ªà§à¦°|বিকাল|রাত/,\n meridiemHour: function (hour, meridiem) {\n if (hour === 12) {\n hour = 0;\n }\n if (\n (meridiem === 'রাত' && hour >= 4) ||\n (meridiem === 'দà§à¦ªà§à¦°' && hour < 5) ||\n meridiem === 'বিকাল'\n ) {\n return hour + 12;\n } else {\n return hour;\n }\n },\n meridiem: function (hour, minute, isLower) {\n if (hour < 4) {\n return 'রাত';\n } else if (hour < 10) {\n return 'সকাল';\n } else if (hour < 17) {\n return 'দà§à¦ªà§à¦°';\n } else if (hour < 20) {\n return 'বিকাল';\n } else {\n return 'রাত';\n }\n },\n week: {\n dow: 0, // Sunday is the first day of the week.\n doy: 6, // The week that contains Jan 6th is the first week of the year.\n },\n });\n\n return bn;\n\n})));\n","//! moment.js locale configuration\n//! locale : Bengali (Bangladesh) [bn-bd]\n//! author : Asraf Hossain Patoary : https://github.com/ashwoolford\n\n;(function (global, factory) {\n typeof exports === 'object' && typeof module !== 'undefined'\n && typeof require === 'function' ? factory(require('../moment')) :\n typeof define === 'function' && define.amd ? define(['../moment'], factory) :\n factory(global.moment)\n}(this, (function (moment) { 'use strict';\n\n //! moment.js locale configuration\n\n var symbolMap = {\n 1: '১',\n 2: '২',\n 3: '৩',\n 4: '৪',\n 5: '৫',\n 6: '৬',\n 7: 'à§',\n 8: '৮',\n 9: '৯',\n 0: '০',\n },\n numberMap = {\n '১': '1',\n '২': '2',\n '৩': '3',\n '৪': '4',\n '৫': '5',\n '৬': '6',\n 'à§': '7',\n '৮': '8',\n '৯': '9',\n '০': '0',\n };\n\n var bnBd = moment.defineLocale('bn-bd', {\n months: 'জানà§à§Ÿà¦¾à¦°à¦¿_ফেবà§à¦°à§à§Ÿà¦¾à¦°à¦¿_মারà§à¦š_à¦à¦ªà§à¦°à¦¿à¦²_মে_জà§à¦¨_জà§à¦²à¦¾à¦‡_আগসà§à¦Ÿ_সেপà§à¦Ÿà§‡à¦®à§à¦¬à¦°_অকà§à¦Ÿà§‹à¦¬à¦°_নà¦à§‡à¦®à§à¦¬à¦°_ডিসেমà§à¦¬à¦°'.split(\n '_'\n ),\n monthsShort:\n 'জানà§_ফেবà§à¦°à§_মারà§à¦š_à¦à¦ªà§à¦°à¦¿à¦²_মে_জà§à¦¨_জà§à¦²à¦¾à¦‡_আগসà§à¦Ÿ_সেপà§à¦Ÿ_অকà§à¦Ÿà§‹_নà¦à§‡_ডিসে'.split(\n '_'\n ),\n weekdays: 'রবিবার_সোমবার_মঙà§à¦—লবার_বà§à¦§à¦¬à¦¾à¦°_বৃহসà§à¦ªà¦¤à¦¿à¦¬à¦¾à¦°_শà§à¦•à§à¦°à¦¬à¦¾à¦°_শনিবার'.split(\n '_'\n ),\n weekdaysShort: 'রবি_সোম_মঙà§à¦—ল_বà§à¦§_বৃহসà§à¦ªà¦¤à¦¿_শà§à¦•à§à¦°_শনি'.split('_'),\n weekdaysMin: 'রবি_সোম_মঙà§à¦—ল_বà§à¦§_বৃহ_শà§à¦•à§à¦°_শনি'.split('_'),\n longDateFormat: {\n LT: 'A h:mm সময়',\n LTS: 'A h:mm:ss সময়',\n L: 'DD/MM/YYYY',\n LL: 'D MMMM YYYY',\n LLL: 'D MMMM YYYY, A h:mm সময়',\n LLLL: 'dddd, D MMMM YYYY, A h:mm সময়',\n },\n calendar: {\n sameDay: '[আজ] LT',\n nextDay: '[আগামীকাল] LT',\n nextWeek: 'dddd, LT',\n lastDay: '[গতকাল] LT',\n lastWeek: '[গত] dddd, LT',\n sameElse: 'L',\n },\n relativeTime: {\n future: '%s পরে',\n past: '%s আগে',\n s: 'কয়েক সেকেনà§à¦¡',\n ss: '%d সেকেনà§à¦¡',\n m: 'à¦à¦• মিনিট',\n mm: '%d মিনিট',\n h: 'à¦à¦• ঘনà§à¦Ÿà¦¾',\n hh: '%d ঘনà§à¦Ÿà¦¾',\n d: 'à¦à¦• দিন',\n dd: '%d দিন',\n M: 'à¦à¦• মাস',\n MM: '%d মাস',\n y: 'à¦à¦• বছর',\n yy: '%d বছর',\n },\n preparse: function (string) {\n return string.replace(/[১২৩৪৫৬à§à§®à§¯à§¦]/g, function (match) {\n return numberMap[match];\n });\n },\n postformat: function (string) {\n return string.replace(/\\d/g, function (match) {\n return symbolMap[match];\n });\n },\n\n meridiemParse: /রাত|à¦à§‹à¦°|সকাল|দà§à¦ªà§à¦°|বিকাল|সনà§à¦§à§à¦¯à¦¾|রাত/,\n meridiemHour: function (hour, meridiem) {\n if (hour === 12) {\n hour = 0;\n }\n if (meridiem === 'রাত') {\n return hour < 4 ? hour : hour + 12;\n } else if (meridiem === 'à¦à§‹à¦°') {\n return hour;\n } else if (meridiem === 'সকাল') {\n return hour;\n } else if (meridiem === 'দà§à¦ªà§à¦°') {\n return hour >= 3 ? hour : hour + 12;\n } else if (meridiem === 'বিকাল') {\n return hour + 12;\n } else if (meridiem === 'সনà§à¦§à§à¦¯à¦¾') {\n return hour + 12;\n }\n },\n\n meridiem: function (hour, minute, isLower) {\n if (hour < 4) {\n return 'রাত';\n } else if (hour < 6) {\n return 'à¦à§‹à¦°';\n } else if (hour < 12) {\n return 'সকাল';\n } else if (hour < 15) {\n return 'দà§à¦ªà§à¦°';\n } else if (hour < 18) {\n return 'বিকাল';\n } else if (hour < 20) {\n return 'সনà§à¦§à§à¦¯à¦¾';\n } else {\n return 'রাত';\n }\n },\n week: {\n dow: 0, // Sunday is the first day of the week.\n doy: 6, // The week that contains Jan 6th is the first week of the year.\n },\n });\n\n return bnBd;\n\n})));\n","//! moment.js locale configuration\n//! locale : Tibetan [bo]\n//! author : Thupten N. Chakrishar : https://github.com/vajradog\n\n;(function (global, factory) {\n typeof exports === 'object' && typeof module !== 'undefined'\n && typeof require === 'function' ? factory(require('../moment')) :\n typeof define === 'function' && define.amd ? define(['../moment'], factory) :\n factory(global.moment)\n}(this, (function (moment) { 'use strict';\n\n //! moment.js locale configuration\n\n var symbolMap = {\n 1: '༡',\n 2: '༢',\n 3: '༣',\n 4: '༤',\n 5: '༥',\n 6: '༦',\n 7: '༧',\n 8: '༨',\n 9: '༩',\n 0: '༠',\n },\n numberMap = {\n '༡': '1',\n '༢': '2',\n '༣': '3',\n '༤': '4',\n '༥': '5',\n '༦': '6',\n '༧': '7',\n '༨': '8',\n '༩': '9',\n '༠': '0',\n };\n\n var bo = moment.defineLocale('bo', {\n months: 'ཟླ་བ་དང་པོ_ཟླ་བ་གཉིས་པ_ཟླ་བ་གསུམ་པ_ཟླ་བ་བཞི་པ_ཟླ་བ་ལྔ་པ_ཟླ་བ་དྲུག་པ_ཟླ་བ་བདུན་པ_ཟླ་བ་བརྒྱད་པ_ཟླ་བ་དགུ་པ_ཟླ་བ་བཅུ་པ_ཟླ་བ་བཅུ་གཅིག་པ_ཟླ་བ་བཅུ་གཉིས་པ'.split(\n '_'\n ),\n monthsShort:\n 'ཟླ་1_ཟླ་2_ཟླ་3_ཟླ་4_ཟླ་5_ཟླ་6_ཟླ་7_ཟླ་8_ཟླ་9_ཟླ་10_ཟླ་11_ཟླ་12'.split(\n '_'\n ),\n monthsShortRegex: /^(ཟླ་\\d{1,2})/,\n monthsParseExact: true,\n weekdays:\n 'གཟའ་ཉི་མ་_གཟའ་ཟླ་བ་_གཟའ་མིག་དམར་_གཟའ་ལྷག་པ་_གཟའ་ཕུར་བུ_གཟའ་པ་སངས་_གཟའ་སྤེན་པ་'.split(\n '_'\n ),\n weekdaysShort: 'ཉི་མ་_ཟླ་བ་_མིག་དམར་_ལྷག་པ་_ཕུར་བུ_པ་སངས་_སྤེན་པ་'.split(\n '_'\n ),\n weekdaysMin: 'ཉི_ཟླ_མིག_ལྷག_ཕུར_སངས_སྤེན'.split('_'),\n longDateFormat: {\n LT: 'A h:mm',\n LTS: 'A h:mm:ss',\n L: 'DD/MM/YYYY',\n LL: 'D MMMM YYYY',\n LLL: 'D MMMM YYYY, A h:mm',\n LLLL: 'dddd, D MMMM YYYY, A h:mm',\n },\n calendar: {\n sameDay: '[དི་རིང] LT',\n nextDay: '[སང་ཉིན] LT',\n nextWeek: '[བདུན་ཕྲག་རྗེས་མ], LT',\n lastDay: '[à½à¼‹à½¦à½„] LT',\n lastWeek: '[བདུན་ཕྲག་མà½à½ ་མ] dddd, LT',\n sameElse: 'L',\n },\n relativeTime: {\n future: '%s ལ་',\n past: '%s སྔན་ལ',\n s: 'ལམ་སང',\n ss: '%d སà¾à½¢à¼‹à½†à¼',\n m: 'སà¾à½¢à¼‹à½˜à¼‹à½‚ཅིག',\n mm: '%d སà¾à½¢à¼‹à½˜',\n h: 'ཆུ་ཚོད་གཅིག',\n hh: '%d ཆུ་ཚོད',\n d: 'ཉིན་གཅིག',\n dd: '%d ཉིན་',\n M: 'ཟླ་བ་གཅིག',\n MM: '%d ཟླ་བ',\n y: 'ལོ་གཅིག',\n yy: '%d ལོ',\n },\n preparse: function (string) {\n return string.replace(/[༡༢༣༤༥༦༧༨༩༠]/g, function (match) {\n return numberMap[match];\n });\n },\n postformat: function (string) {\n return string.replace(/\\d/g, function (match) {\n return symbolMap[match];\n });\n },\n meridiemParse: /མཚན་མོ|ཞོགས་ཀས|ཉིན་གུང|དགོང་དག|མཚན་མོ/,\n meridiemHour: function (hour, meridiem) {\n if (hour === 12) {\n hour = 0;\n }\n if (\n (meridiem === 'མཚན་མོ' && hour >= 4) ||\n (meridiem === 'ཉིན་གུང' && hour < 5) ||\n meridiem === 'དགོང་དག'\n ) {\n return hour + 12;\n } else {\n return hour;\n }\n },\n meridiem: function (hour, minute, isLower) {\n if (hour < 4) {\n return 'མཚན་མོ';\n } else if (hour < 10) {\n return 'ཞོགས་ཀས';\n } else if (hour < 17) {\n return 'ཉིན་གུང';\n } else if (hour < 20) {\n return 'དགོང་དག';\n } else {\n return 'མཚན་མོ';\n }\n },\n week: {\n dow: 0, // Sunday is the first day of the week.\n doy: 6, // The week that contains Jan 6th is the first week of the year.\n },\n });\n\n return bo;\n\n})));\n","//! moment.js locale configuration\n//! locale : Breton [br]\n//! author : Jean-Baptiste Le Duigou : https://github.com/jbleduigou\n\n;(function (global, factory) {\n typeof exports === 'object' && typeof module !== 'undefined'\n && typeof require === 'function' ? factory(require('../moment')) :\n typeof define === 'function' && define.amd ? define(['../moment'], factory) :\n factory(global.moment)\n}(this, (function (moment) { 'use strict';\n\n //! moment.js locale configuration\n\n function relativeTimeWithMutation(number, withoutSuffix, key) {\n var format = {\n mm: 'munutenn',\n MM: 'miz',\n dd: 'devezh',\n };\n return number + ' ' + mutation(format[key], number);\n }\n function specialMutationForYears(number) {\n switch (lastNumber(number)) {\n case 1:\n case 3:\n case 4:\n case 5:\n case 9:\n return number + ' bloaz';\n default:\n return number + ' vloaz';\n }\n }\n function lastNumber(number) {\n if (number > 9) {\n return lastNumber(number % 10);\n }\n return number;\n }\n function mutation(text, number) {\n if (number === 2) {\n return softMutation(text);\n }\n return text;\n }\n function softMutation(text) {\n var mutationTable = {\n m: 'v',\n b: 'v',\n d: 'z',\n };\n if (mutationTable[text.charAt(0)] === undefined) {\n return text;\n }\n return mutationTable[text.charAt(0)] + text.substring(1);\n }\n\n var monthsParse = [\n /^gen/i,\n /^c[ʼ\\']hwe/i,\n /^meu/i,\n /^ebr/i,\n /^mae/i,\n /^(mez|eve)/i,\n /^gou/i,\n /^eos/i,\n /^gwe/i,\n /^her/i,\n /^du/i,\n /^ker/i,\n ],\n monthsRegex =\n /^(genver|c[ʼ\\']hwevrer|meurzh|ebrel|mae|mezheven|gouere|eost|gwengolo|here|du|kerzu|gen|c[ʼ\\']hwe|meu|ebr|mae|eve|gou|eos|gwe|her|du|ker)/i,\n monthsStrictRegex =\n /^(genver|c[ʼ\\']hwevrer|meurzh|ebrel|mae|mezheven|gouere|eost|gwengolo|here|du|kerzu)/i,\n monthsShortStrictRegex =\n /^(gen|c[ʼ\\']hwe|meu|ebr|mae|eve|gou|eos|gwe|her|du|ker)/i,\n fullWeekdaysParse = [\n /^sul/i,\n /^lun/i,\n /^meurzh/i,\n /^merc[ʼ\\']her/i,\n /^yaou/i,\n /^gwener/i,\n /^sadorn/i,\n ],\n shortWeekdaysParse = [\n /^Sul/i,\n /^Lun/i,\n /^Meu/i,\n /^Mer/i,\n /^Yao/i,\n /^Gwe/i,\n /^Sad/i,\n ],\n minWeekdaysParse = [\n /^Su/i,\n /^Lu/i,\n /^Me([^r]|$)/i,\n /^Mer/i,\n /^Ya/i,\n /^Gw/i,\n /^Sa/i,\n ];\n\n var br = moment.defineLocale('br', {\n months: 'Genver_Cʼhwevrer_Meurzh_Ebrel_Mae_Mezheven_Gouere_Eost_Gwengolo_Here_Du_Kerzu'.split(\n '_'\n ),\n monthsShort: 'Gen_Cʼhwe_Meu_Ebr_Mae_Eve_Gou_Eos_Gwe_Her_Du_Ker'.split('_'),\n weekdays: 'Sul_Lun_Meurzh_Mercʼher_Yaou_Gwener_Sadorn'.split('_'),\n weekdaysShort: 'Sul_Lun_Meu_Mer_Yao_Gwe_Sad'.split('_'),\n weekdaysMin: 'Su_Lu_Me_Mer_Ya_Gw_Sa'.split('_'),\n weekdaysParse: minWeekdaysParse,\n fullWeekdaysParse: fullWeekdaysParse,\n shortWeekdaysParse: shortWeekdaysParse,\n minWeekdaysParse: minWeekdaysParse,\n\n monthsRegex: monthsRegex,\n monthsShortRegex: monthsRegex,\n monthsStrictRegex: monthsStrictRegex,\n monthsShortStrictRegex: monthsShortStrictRegex,\n monthsParse: monthsParse,\n longMonthsParse: monthsParse,\n shortMonthsParse: monthsParse,\n\n longDateFormat: {\n LT: 'HH:mm',\n LTS: 'HH:mm:ss',\n L: 'DD/MM/YYYY',\n LL: 'D [a viz] MMMM YYYY',\n LLL: 'D [a viz] MMMM YYYY HH:mm',\n LLLL: 'dddd, D [a viz] MMMM YYYY HH:mm',\n },\n calendar: {\n sameDay: '[Hiziv da] LT',\n nextDay: '[Warcʼhoazh da] LT',\n nextWeek: 'dddd [da] LT',\n lastDay: '[Decʼh da] LT',\n lastWeek: 'dddd [paset da] LT',\n sameElse: 'L',\n },\n relativeTime: {\n future: 'a-benn %s',\n past: '%s ʼzo',\n s: 'un nebeud segondennoù',\n ss: '%d eilenn',\n m: 'ur vunutenn',\n mm: relativeTimeWithMutation,\n h: 'un eur',\n hh: '%d eur',\n d: 'un devezh',\n dd: relativeTimeWithMutation,\n M: 'ur miz',\n MM: relativeTimeWithMutation,\n y: 'ur bloaz',\n yy: specialMutationForYears,\n },\n dayOfMonthOrdinalParse: /\\d{1,2}(añ|vet)/,\n ordinal: function (number) {\n var output = number === 1 ? 'añ' : 'vet';\n return number + output;\n },\n week: {\n dow: 1, // Monday is the first day of the week.\n doy: 4, // The week that contains Jan 4th is the first week of the year.\n },\n meridiemParse: /a.m.|g.m./, // goude merenn | a-raok merenn\n isPM: function (token) {\n return token === 'g.m.';\n },\n meridiem: function (hour, minute, isLower) {\n return hour < 12 ? 'a.m.' : 'g.m.';\n },\n });\n\n return br;\n\n})));\n","//! moment.js locale configuration\n//! locale : Bosnian [bs]\n//! author : Nedim Cholich : https://github.com/frontyard\n//! based on (hr) translation by Bojan Marković\n\n;(function (global, factory) {\n typeof exports === 'object' && typeof module !== 'undefined'\n && typeof require === 'function' ? factory(require('../moment')) :\n typeof define === 'function' && define.amd ? define(['../moment'], factory) :\n factory(global.moment)\n}(this, (function (moment) { 'use strict';\n\n //! moment.js locale configuration\n\n function translate(number, withoutSuffix, key) {\n var result = number + ' ';\n switch (key) {\n case 'ss':\n if (number === 1) {\n result += 'sekunda';\n } else if (number === 2 || number === 3 || number === 4) {\n result += 'sekunde';\n } else {\n result += 'sekundi';\n }\n return result;\n case 'm':\n return withoutSuffix ? 'jedna minuta' : 'jedne minute';\n case 'mm':\n if (number === 1) {\n result += 'minuta';\n } else if (number === 2 || number === 3 || number === 4) {\n result += 'minute';\n } else {\n result += 'minuta';\n }\n return result;\n case 'h':\n return withoutSuffix ? 'jedan sat' : 'jednog sata';\n case 'hh':\n if (number === 1) {\n result += 'sat';\n } else if (number === 2 || number === 3 || number === 4) {\n result += 'sata';\n } else {\n result += 'sati';\n }\n return result;\n case 'dd':\n if (number === 1) {\n result += 'dan';\n } else {\n result += 'dana';\n }\n return result;\n case 'MM':\n if (number === 1) {\n result += 'mjesec';\n } else if (number === 2 || number === 3 || number === 4) {\n result += 'mjeseca';\n } else {\n result += 'mjeseci';\n }\n return result;\n case 'yy':\n if (number === 1) {\n result += 'godina';\n } else if (number === 2 || number === 3 || number === 4) {\n result += 'godine';\n } else {\n result += 'godina';\n }\n return result;\n }\n }\n\n var bs = moment.defineLocale('bs', {\n months: 'januar_februar_mart_april_maj_juni_juli_august_septembar_oktobar_novembar_decembar'.split(\n '_'\n ),\n monthsShort:\n 'jan._feb._mar._apr._maj._jun._jul._aug._sep._okt._nov._dec.'.split(\n '_'\n ),\n monthsParseExact: true,\n weekdays: 'nedjelja_ponedjeljak_utorak_srijeda_Äetvrtak_petak_subota'.split(\n '_'\n ),\n weekdaysShort: 'ned._pon._uto._sri._Äet._pet._sub.'.split('_'),\n weekdaysMin: 'ne_po_ut_sr_Äe_pe_su'.split('_'),\n weekdaysParseExact: true,\n longDateFormat: {\n LT: 'H:mm',\n LTS: 'H:mm:ss',\n L: 'DD.MM.YYYY',\n LL: 'D. MMMM YYYY',\n LLL: 'D. MMMM YYYY H:mm',\n LLLL: 'dddd, D. MMMM YYYY H:mm',\n },\n calendar: {\n sameDay: '[danas u] LT',\n nextDay: '[sutra u] LT',\n nextWeek: function () {\n switch (this.day()) {\n case 0:\n return '[u] [nedjelju] [u] LT';\n case 3:\n return '[u] [srijedu] [u] LT';\n case 6:\n return '[u] [subotu] [u] LT';\n case 1:\n case 2:\n case 4:\n case 5:\n return '[u] dddd [u] LT';\n }\n },\n lastDay: '[juÄer u] LT',\n lastWeek: function () {\n switch (this.day()) {\n case 0:\n case 3:\n return '[proÅ¡lu] dddd [u] LT';\n case 6:\n return '[proÅ¡le] [subote] [u] LT';\n case 1:\n case 2:\n case 4:\n case 5:\n return '[proÅ¡li] dddd [u] LT';\n }\n },\n sameElse: 'L',\n },\n relativeTime: {\n future: 'za %s',\n past: 'prije %s',\n s: 'par sekundi',\n ss: translate,\n m: translate,\n mm: translate,\n h: translate,\n hh: translate,\n d: 'dan',\n dd: translate,\n M: 'mjesec',\n MM: translate,\n y: 'godinu',\n yy: translate,\n },\n dayOfMonthOrdinalParse: /\\d{1,2}\\./,\n ordinal: '%d.',\n week: {\n dow: 1, // Monday is the first day of the week.\n doy: 7, // The week that contains Jan 7th is the first week of the year.\n },\n });\n\n return bs;\n\n})));\n","//! moment.js locale configuration\n//! locale : Catalan [ca]\n//! author : Juan G. Hurtado : https://github.com/juanghurtado\n\n;(function (global, factory) {\n typeof exports === 'object' && typeof module !== 'undefined'\n && typeof require === 'function' ? factory(require('../moment')) :\n typeof define === 'function' && define.amd ? define(['../moment'], factory) :\n factory(global.moment)\n}(this, (function (moment) { 'use strict';\n\n //! moment.js locale configuration\n\n var ca = moment.defineLocale('ca', {\n months: {\n standalone:\n 'gener_febrer_març_abril_maig_juny_juliol_agost_setembre_octubre_novembre_desembre'.split(\n '_'\n ),\n format: \"de gener_de febrer_de març_d'abril_de maig_de juny_de juliol_d'agost_de setembre_d'octubre_de novembre_de desembre\".split(\n '_'\n ),\n isFormat: /D[oD]?(\\s)+MMMM/,\n },\n monthsShort:\n 'gen._febr._març_abr._maig_juny_jul._ag._set._oct._nov._des.'.split(\n '_'\n ),\n monthsParseExact: true,\n weekdays:\n 'diumenge_dilluns_dimarts_dimecres_dijous_divendres_dissabte'.split(\n '_'\n ),\n weekdaysShort: 'dg._dl._dt._dc._dj._dv._ds.'.split('_'),\n weekdaysMin: 'dg_dl_dt_dc_dj_dv_ds'.split('_'),\n weekdaysParseExact: true,\n longDateFormat: {\n LT: 'H:mm',\n LTS: 'H:mm:ss',\n L: 'DD/MM/YYYY',\n LL: 'D MMMM [de] YYYY',\n ll: 'D MMM YYYY',\n LLL: 'D MMMM [de] YYYY [a les] H:mm',\n lll: 'D MMM YYYY, H:mm',\n LLLL: 'dddd D MMMM [de] YYYY [a les] H:mm',\n llll: 'ddd D MMM YYYY, H:mm',\n },\n calendar: {\n sameDay: function () {\n return '[avui a ' + (this.hours() !== 1 ? 'les' : 'la') + '] LT';\n },\n nextDay: function () {\n return '[demà a ' + (this.hours() !== 1 ? 'les' : 'la') + '] LT';\n },\n nextWeek: function () {\n return 'dddd [a ' + (this.hours() !== 1 ? 'les' : 'la') + '] LT';\n },\n lastDay: function () {\n return '[ahir a ' + (this.hours() !== 1 ? 'les' : 'la') + '] LT';\n },\n lastWeek: function () {\n return (\n '[el] dddd [passat a ' +\n (this.hours() !== 1 ? 'les' : 'la') +\n '] LT'\n );\n },\n sameElse: 'L',\n },\n relativeTime: {\n future: \"d'aquà %s\",\n past: 'fa %s',\n s: 'uns segons',\n ss: '%d segons',\n m: 'un minut',\n mm: '%d minuts',\n h: 'una hora',\n hh: '%d hores',\n d: 'un dia',\n dd: '%d dies',\n M: 'un mes',\n MM: '%d mesos',\n y: 'un any',\n yy: '%d anys',\n },\n dayOfMonthOrdinalParse: /\\d{1,2}(r|n|t|è|a)/,\n ordinal: function (number, period) {\n var output =\n number === 1\n ? 'r'\n : number === 2\n ? 'n'\n : number === 3\n ? 'r'\n : number === 4\n ? 't'\n : 'è';\n if (period === 'w' || period === 'W') {\n output = 'a';\n }\n return number + output;\n },\n week: {\n dow: 1, // Monday is the first day of the week.\n doy: 4, // The week that contains Jan 4th is the first week of the year.\n },\n });\n\n return ca;\n\n})));\n","//! moment.js locale configuration\n//! locale : Czech [cs]\n//! author : petrbela : https://github.com/petrbela\n\n;(function (global, factory) {\n typeof exports === 'object' && typeof module !== 'undefined'\n && typeof require === 'function' ? factory(require('../moment')) :\n typeof define === 'function' && define.amd ? define(['../moment'], factory) :\n factory(global.moment)\n}(this, (function (moment) { 'use strict';\n\n //! moment.js locale configuration\n\n var months = {\n format: 'leden_únor_bÅ™ezen_duben_kvÄ›ten_Äerven_Äervenec_srpen_zářÃ_Å™Ãjen_listopad_prosinec'.split(\n '_'\n ),\n standalone:\n 'ledna_února_bÅ™ezna_dubna_kvÄ›tna_Äervna_Äervence_srpna_zářÃ_Å™Ãjna_listopadu_prosince'.split(\n '_'\n ),\n },\n monthsShort = 'led_úno_bÅ™e_dub_kvÄ›_Ävn_Ävc_srp_zář_Å™Ãj_lis_pro'.split('_'),\n monthsParse = [\n /^led/i,\n /^úno/i,\n /^bÅ™e/i,\n /^dub/i,\n /^kvÄ›/i,\n /^(Ävn|Äerven$|Äervna)/i,\n /^(Ävc|Äervenec|Äervence)/i,\n /^srp/i,\n /^zář/i,\n /^Å™Ãj/i,\n /^lis/i,\n /^pro/i,\n ],\n // NOTE: 'Äerven' is substring of 'Äervenec'; therefore 'Äervenec' must precede 'Äerven' in the regex to be fully matched.\n // Otherwise parser matches '1. Äervenec' as '1. Äerven' + 'ec'.\n monthsRegex =\n /^(leden|únor|bÅ™ezen|duben|kvÄ›ten|Äervenec|Äervence|Äerven|Äervna|srpen|zářÃ|Å™Ãjen|listopad|prosinec|led|úno|bÅ™e|dub|kvÄ›|Ävn|Ävc|srp|zář|Å™Ãj|lis|pro)/i;\n\n function plural(n) {\n return n > 1 && n < 5 && ~~(n / 10) !== 1;\n }\n function translate(number, withoutSuffix, key, isFuture) {\n var result = number + ' ';\n switch (key) {\n case 's': // a few seconds / in a few seconds / a few seconds ago\n return withoutSuffix || isFuture ? 'pár sekund' : 'pár sekundami';\n case 'ss': // 9 seconds / in 9 seconds / 9 seconds ago\n if (withoutSuffix || isFuture) {\n return result + (plural(number) ? 'sekundy' : 'sekund');\n } else {\n return result + 'sekundami';\n }\n case 'm': // a minute / in a minute / a minute ago\n return withoutSuffix ? 'minuta' : isFuture ? 'minutu' : 'minutou';\n case 'mm': // 9 minutes / in 9 minutes / 9 minutes ago\n if (withoutSuffix || isFuture) {\n return result + (plural(number) ? 'minuty' : 'minut');\n } else {\n return result + 'minutami';\n }\n case 'h': // an hour / in an hour / an hour ago\n return withoutSuffix ? 'hodina' : isFuture ? 'hodinu' : 'hodinou';\n case 'hh': // 9 hours / in 9 hours / 9 hours ago\n if (withoutSuffix || isFuture) {\n return result + (plural(number) ? 'hodiny' : 'hodin');\n } else {\n return result + 'hodinami';\n }\n case 'd': // a day / in a day / a day ago\n return withoutSuffix || isFuture ? 'den' : 'dnem';\n case 'dd': // 9 days / in 9 days / 9 days ago\n if (withoutSuffix || isFuture) {\n return result + (plural(number) ? 'dny' : 'dnÃ');\n } else {\n return result + 'dny';\n }\n case 'M': // a month / in a month / a month ago\n return withoutSuffix || isFuture ? 'mÄ›sÃc' : 'mÄ›sÃcem';\n case 'MM': // 9 months / in 9 months / 9 months ago\n if (withoutSuffix || isFuture) {\n return result + (plural(number) ? 'mÄ›sÃce' : 'mÄ›sÃců');\n } else {\n return result + 'mÄ›sÃci';\n }\n case 'y': // a year / in a year / a year ago\n return withoutSuffix || isFuture ? 'rok' : 'rokem';\n case 'yy': // 9 years / in 9 years / 9 years ago\n if (withoutSuffix || isFuture) {\n return result + (plural(number) ? 'roky' : 'let');\n } else {\n return result + 'lety';\n }\n }\n }\n\n var cs = moment.defineLocale('cs', {\n months: months,\n monthsShort: monthsShort,\n monthsRegex: monthsRegex,\n monthsShortRegex: monthsRegex,\n // NOTE: 'Äerven' is substring of 'Äervenec'; therefore 'Äervenec' must precede 'Äerven' in the regex to be fully matched.\n // Otherwise parser matches '1. Äervenec' as '1. Äerven' + 'ec'.\n monthsStrictRegex:\n /^(leden|ledna|února|únor|bÅ™ezen|bÅ™ezna|duben|dubna|kvÄ›ten|kvÄ›tna|Äervenec|Äervence|Äerven|Äervna|srpen|srpna|zářÃ|Å™Ãjen|Å™Ãjna|listopadu|listopad|prosinec|prosince)/i,\n monthsShortStrictRegex:\n /^(led|úno|bÅ™e|dub|kvÄ›|Ävn|Ävc|srp|zář|Å™Ãj|lis|pro)/i,\n monthsParse: monthsParse,\n longMonthsParse: monthsParse,\n shortMonthsParse: monthsParse,\n weekdays: 'nedÄ›le_pondÄ›lÃ_úterý_stÅ™eda_Ätvrtek_pátek_sobota'.split('_'),\n weekdaysShort: 'ne_po_út_st_Ät_pá_so'.split('_'),\n weekdaysMin: 'ne_po_út_st_Ät_pá_so'.split('_'),\n longDateFormat: {\n LT: 'H:mm',\n LTS: 'H:mm:ss',\n L: 'DD.MM.YYYY',\n LL: 'D. MMMM YYYY',\n LLL: 'D. MMMM YYYY H:mm',\n LLLL: 'dddd D. MMMM YYYY H:mm',\n l: 'D. M. YYYY',\n },\n calendar: {\n sameDay: '[dnes v] LT',\n nextDay: '[zÃtra v] LT',\n nextWeek: function () {\n switch (this.day()) {\n case 0:\n return '[v nedÄ›li v] LT';\n case 1:\n case 2:\n return '[v] dddd [v] LT';\n case 3:\n return '[ve stÅ™edu v] LT';\n case 4:\n return '[ve Ätvrtek v] LT';\n case 5:\n return '[v pátek v] LT';\n case 6:\n return '[v sobotu v] LT';\n }\n },\n lastDay: '[vÄera v] LT',\n lastWeek: function () {\n switch (this.day()) {\n case 0:\n return '[minulou nedÄ›li v] LT';\n case 1:\n case 2:\n return '[minulé] dddd [v] LT';\n case 3:\n return '[minulou stÅ™edu v] LT';\n case 4:\n case 5:\n return '[minulý] dddd [v] LT';\n case 6:\n return '[minulou sobotu v] LT';\n }\n },\n sameElse: 'L',\n },\n relativeTime: {\n future: 'za %s',\n past: 'pÅ™ed %s',\n s: translate,\n ss: translate,\n m: translate,\n mm: translate,\n h: translate,\n hh: translate,\n d: translate,\n dd: translate,\n M: translate,\n MM: translate,\n y: translate,\n yy: translate,\n },\n dayOfMonthOrdinalParse: /\\d{1,2}\\./,\n ordinal: '%d.',\n week: {\n dow: 1, // Monday is the first day of the week.\n doy: 4, // The week that contains Jan 4th is the first week of the year.\n },\n });\n\n return cs;\n\n})));\n","//! moment.js locale configuration\n//! locale : Chuvash [cv]\n//! author : Anatoly Mironov : https://github.com/mirontoli\n\n;(function (global, factory) {\n typeof exports === 'object' && typeof module !== 'undefined'\n && typeof require === 'function' ? factory(require('../moment')) :\n typeof define === 'function' && define.amd ? define(['../moment'], factory) :\n factory(global.moment)\n}(this, (function (moment) { 'use strict';\n\n //! moment.js locale configuration\n\n var cv = moment.defineLocale('cv', {\n months: 'кӑрлач_нарӑÑ_пуш_ака_май_ҫӗртме_утӑ_ҫурла_авӑн_юпа_чӳк_раштав'.split(\n '_'\n ),\n monthsShort: 'кӑр_нар_пуш_ака_май_Ò«Ó—Ñ€_утӑ_ҫур_авн_юпа_чӳк_раш'.split('_'),\n weekdays:\n 'вырÑарникун_тунтикун_ытларикун_юнкун_кӗҫнерникун_Ñрнекун_шӑматкун'.split(\n '_'\n ),\n weekdaysShort: 'выр_тун_ытл_юн_кӗҫ_Ñрн_шӑм'.split('_'),\n weekdaysMin: 'вр_тн_Ñ‹Ñ‚_юн_кҫ_ÑÑ€_шм'.split('_'),\n longDateFormat: {\n LT: 'HH:mm',\n LTS: 'HH:mm:ss',\n L: 'DD-MM-YYYY',\n LL: 'YYYY [ҫулхи] MMMM [уйӑхӗн] D[-мӗшӗ]',\n LLL: 'YYYY [ҫулхи] MMMM [уйӑхӗн] D[-мӗшӗ], HH:mm',\n LLLL: 'dddd, YYYY [ҫулхи] MMMM [уйӑхӗн] D[-мӗшӗ], HH:mm',\n },\n calendar: {\n sameDay: '[ПаÑн] LT [Ñехетре]',\n nextDay: '[Ыран] LT [Ñехетре]',\n lastDay: '[Ӗнер] LT [Ñехетре]',\n nextWeek: '[ҪитеÑ] dddd LT [Ñехетре]',\n lastWeek: '[Иртнӗ] dddd LT [Ñехетре]',\n sameElse: 'L',\n },\n relativeTime: {\n future: function (output) {\n var affix = /Ñехет$/i.exec(output)\n ? 'рен'\n : /ҫул$/i.exec(output)\n ? 'тан'\n : 'ран';\n return output + affix;\n },\n past: '%s каÑлла',\n s: 'пӗр-ик ҫеккунт',\n ss: '%d ҫеккунт',\n m: 'пӗр минут',\n mm: '%d минут',\n h: 'пӗр Ñехет',\n hh: '%d Ñехет',\n d: 'пӗр кун',\n dd: '%d кун',\n M: 'пӗр уйӑх',\n MM: '%d уйӑх',\n y: 'пӗр ҫул',\n yy: '%d ҫул',\n },\n dayOfMonthOrdinalParse: /\\d{1,2}-мӗш/,\n ordinal: '%d-мӗш',\n week: {\n dow: 1, // Monday is the first day of the week.\n doy: 7, // The week that contains Jan 7th is the first week of the year.\n },\n });\n\n return cv;\n\n})));\n","//! moment.js locale configuration\n//! locale : Welsh [cy]\n//! author : Robert Allen : https://github.com/robgallen\n//! author : https://github.com/ryangreaves\n\n;(function (global, factory) {\n typeof exports === 'object' && typeof module !== 'undefined'\n && typeof require === 'function' ? factory(require('../moment')) :\n typeof define === 'function' && define.amd ? define(['../moment'], factory) :\n factory(global.moment)\n}(this, (function (moment) { 'use strict';\n\n //! moment.js locale configuration\n\n var cy = moment.defineLocale('cy', {\n months: 'Ionawr_Chwefror_Mawrth_Ebrill_Mai_Mehefin_Gorffennaf_Awst_Medi_Hydref_Tachwedd_Rhagfyr'.split(\n '_'\n ),\n monthsShort: 'Ion_Chwe_Maw_Ebr_Mai_Meh_Gor_Aws_Med_Hyd_Tach_Rhag'.split(\n '_'\n ),\n weekdays:\n 'Dydd Sul_Dydd Llun_Dydd Mawrth_Dydd Mercher_Dydd Iau_Dydd Gwener_Dydd Sadwrn'.split(\n '_'\n ),\n weekdaysShort: 'Sul_Llun_Maw_Mer_Iau_Gwe_Sad'.split('_'),\n weekdaysMin: 'Su_Ll_Ma_Me_Ia_Gw_Sa'.split('_'),\n weekdaysParseExact: true,\n // time formats are the same as en-gb\n longDateFormat: {\n LT: 'HH:mm',\n LTS: 'HH:mm:ss',\n L: 'DD/MM/YYYY',\n LL: 'D MMMM YYYY',\n LLL: 'D MMMM YYYY HH:mm',\n LLLL: 'dddd, D MMMM YYYY HH:mm',\n },\n calendar: {\n sameDay: '[Heddiw am] LT',\n nextDay: '[Yfory am] LT',\n nextWeek: 'dddd [am] LT',\n lastDay: '[Ddoe am] LT',\n lastWeek: 'dddd [diwethaf am] LT',\n sameElse: 'L',\n },\n relativeTime: {\n future: 'mewn %s',\n past: '%s yn ôl',\n s: 'ychydig eiliadau',\n ss: '%d eiliad',\n m: 'munud',\n mm: '%d munud',\n h: 'awr',\n hh: '%d awr',\n d: 'diwrnod',\n dd: '%d diwrnod',\n M: 'mis',\n MM: '%d mis',\n y: 'blwyddyn',\n yy: '%d flynedd',\n },\n dayOfMonthOrdinalParse: /\\d{1,2}(fed|ain|af|il|ydd|ed|eg)/,\n // traditional ordinal numbers above 31 are not commonly used in colloquial Welsh\n ordinal: function (number) {\n var b = number,\n output = '',\n lookup = [\n '',\n 'af',\n 'il',\n 'ydd',\n 'ydd',\n 'ed',\n 'ed',\n 'ed',\n 'fed',\n 'fed',\n 'fed', // 1af to 10fed\n 'eg',\n 'fed',\n 'eg',\n 'eg',\n 'fed',\n 'eg',\n 'eg',\n 'fed',\n 'eg',\n 'fed', // 11eg to 20fed\n ];\n if (b > 20) {\n if (b === 40 || b === 50 || b === 60 || b === 80 || b === 100) {\n output = 'fed'; // not 30ain, 70ain or 90ain\n } else {\n output = 'ain';\n }\n } else if (b > 0) {\n output = lookup[b];\n }\n return number + output;\n },\n week: {\n dow: 1, // Monday is the first day of the week.\n doy: 4, // The week that contains Jan 4th is the first week of the year.\n },\n });\n\n return cy;\n\n})));\n","//! moment.js locale configuration\n//! locale : Danish [da]\n//! author : Ulrik Nielsen : https://github.com/mrbase\n\n;(function (global, factory) {\n typeof exports === 'object' && typeof module !== 'undefined'\n && typeof require === 'function' ? factory(require('../moment')) :\n typeof define === 'function' && define.amd ? define(['../moment'], factory) :\n factory(global.moment)\n}(this, (function (moment) { 'use strict';\n\n //! moment.js locale configuration\n\n var da = moment.defineLocale('da', {\n months: 'januar_februar_marts_april_maj_juni_juli_august_september_oktober_november_december'.split(\n '_'\n ),\n monthsShort: 'jan_feb_mar_apr_maj_jun_jul_aug_sep_okt_nov_dec'.split('_'),\n weekdays: 'søndag_mandag_tirsdag_onsdag_torsdag_fredag_lørdag'.split('_'),\n weekdaysShort: 'søn_man_tir_ons_tor_fre_lør'.split('_'),\n weekdaysMin: 'sø_ma_ti_on_to_fr_lø'.split('_'),\n longDateFormat: {\n LT: 'HH:mm',\n LTS: 'HH:mm:ss',\n L: 'DD.MM.YYYY',\n LL: 'D. MMMM YYYY',\n LLL: 'D. MMMM YYYY HH:mm',\n LLLL: 'dddd [d.] D. MMMM YYYY [kl.] HH:mm',\n },\n calendar: {\n sameDay: '[i dag kl.] LT',\n nextDay: '[i morgen kl.] LT',\n nextWeek: 'pÃ¥ dddd [kl.] LT',\n lastDay: '[i gÃ¥r kl.] LT',\n lastWeek: '[i] dddd[s kl.] LT',\n sameElse: 'L',\n },\n relativeTime: {\n future: 'om %s',\n past: '%s siden',\n s: 'fÃ¥ sekunder',\n ss: '%d sekunder',\n m: 'et minut',\n mm: '%d minutter',\n h: 'en time',\n hh: '%d timer',\n d: 'en dag',\n dd: '%d dage',\n M: 'en mÃ¥ned',\n MM: '%d mÃ¥neder',\n y: 'et Ã¥r',\n yy: '%d Ã¥r',\n },\n dayOfMonthOrdinalParse: /\\d{1,2}\\./,\n ordinal: '%d.',\n week: {\n dow: 1, // Monday is the first day of the week.\n doy: 4, // The week that contains Jan 4th is the first week of the year.\n },\n });\n\n return da;\n\n})));\n","//! moment.js locale configuration\n//! locale : German [de]\n//! author : lluchs : https://github.com/lluchs\n//! author: Menelion Elensúle: https://github.com/Oire\n//! author : Mikolaj Dadela : https://github.com/mik01aj\n\n;(function (global, factory) {\n typeof exports === 'object' && typeof module !== 'undefined'\n && typeof require === 'function' ? factory(require('../moment')) :\n typeof define === 'function' && define.amd ? define(['../moment'], factory) :\n factory(global.moment)\n}(this, (function (moment) { 'use strict';\n\n //! moment.js locale configuration\n\n function processRelativeTime(number, withoutSuffix, key, isFuture) {\n var format = {\n m: ['eine Minute', 'einer Minute'],\n h: ['eine Stunde', 'einer Stunde'],\n d: ['ein Tag', 'einem Tag'],\n dd: [number + ' Tage', number + ' Tagen'],\n w: ['eine Woche', 'einer Woche'],\n M: ['ein Monat', 'einem Monat'],\n MM: [number + ' Monate', number + ' Monaten'],\n y: ['ein Jahr', 'einem Jahr'],\n yy: [number + ' Jahre', number + ' Jahren'],\n };\n return withoutSuffix ? format[key][0] : format[key][1];\n }\n\n var de = moment.defineLocale('de', {\n months: 'Januar_Februar_März_April_Mai_Juni_Juli_August_September_Oktober_November_Dezember'.split(\n '_'\n ),\n monthsShort:\n 'Jan._Feb._März_Apr._Mai_Juni_Juli_Aug._Sep._Okt._Nov._Dez.'.split('_'),\n monthsParseExact: true,\n weekdays:\n 'Sonntag_Montag_Dienstag_Mittwoch_Donnerstag_Freitag_Samstag'.split(\n '_'\n ),\n weekdaysShort: 'So._Mo._Di._Mi._Do._Fr._Sa.'.split('_'),\n weekdaysMin: 'So_Mo_Di_Mi_Do_Fr_Sa'.split('_'),\n weekdaysParseExact: true,\n longDateFormat: {\n LT: 'HH:mm',\n LTS: 'HH:mm:ss',\n L: 'DD.MM.YYYY',\n LL: 'D. MMMM YYYY',\n LLL: 'D. MMMM YYYY HH:mm',\n LLLL: 'dddd, D. MMMM YYYY HH:mm',\n },\n calendar: {\n sameDay: '[heute um] LT [Uhr]',\n sameElse: 'L',\n nextDay: '[morgen um] LT [Uhr]',\n nextWeek: 'dddd [um] LT [Uhr]',\n lastDay: '[gestern um] LT [Uhr]',\n lastWeek: '[letzten] dddd [um] LT [Uhr]',\n },\n relativeTime: {\n future: 'in %s',\n past: 'vor %s',\n s: 'ein paar Sekunden',\n ss: '%d Sekunden',\n m: processRelativeTime,\n mm: '%d Minuten',\n h: processRelativeTime,\n hh: '%d Stunden',\n d: processRelativeTime,\n dd: processRelativeTime,\n w: processRelativeTime,\n ww: '%d Wochen',\n M: processRelativeTime,\n MM: processRelativeTime,\n y: processRelativeTime,\n yy: processRelativeTime,\n },\n dayOfMonthOrdinalParse: /\\d{1,2}\\./,\n ordinal: '%d.',\n week: {\n dow: 1, // Monday is the first day of the week.\n doy: 4, // The week that contains Jan 4th is the first week of the year.\n },\n });\n\n return de;\n\n})));\n","//! moment.js locale configuration\n//! locale : German (Austria) [de-at]\n//! author : lluchs : https://github.com/lluchs\n//! author: Menelion Elensúle: https://github.com/Oire\n//! author : Martin Groller : https://github.com/MadMG\n//! author : Mikolaj Dadela : https://github.com/mik01aj\n\n;(function (global, factory) {\n typeof exports === 'object' && typeof module !== 'undefined'\n && typeof require === 'function' ? factory(require('../moment')) :\n typeof define === 'function' && define.amd ? define(['../moment'], factory) :\n factory(global.moment)\n}(this, (function (moment) { 'use strict';\n\n //! moment.js locale configuration\n\n function processRelativeTime(number, withoutSuffix, key, isFuture) {\n var format = {\n m: ['eine Minute', 'einer Minute'],\n h: ['eine Stunde', 'einer Stunde'],\n d: ['ein Tag', 'einem Tag'],\n dd: [number + ' Tage', number + ' Tagen'],\n w: ['eine Woche', 'einer Woche'],\n M: ['ein Monat', 'einem Monat'],\n MM: [number + ' Monate', number + ' Monaten'],\n y: ['ein Jahr', 'einem Jahr'],\n yy: [number + ' Jahre', number + ' Jahren'],\n };\n return withoutSuffix ? format[key][0] : format[key][1];\n }\n\n var deAt = moment.defineLocale('de-at', {\n months: 'Jänner_Februar_März_April_Mai_Juni_Juli_August_September_Oktober_November_Dezember'.split(\n '_'\n ),\n monthsShort:\n 'Jän._Feb._März_Apr._Mai_Juni_Juli_Aug._Sep._Okt._Nov._Dez.'.split('_'),\n monthsParseExact: true,\n weekdays:\n 'Sonntag_Montag_Dienstag_Mittwoch_Donnerstag_Freitag_Samstag'.split(\n '_'\n ),\n weekdaysShort: 'So._Mo._Di._Mi._Do._Fr._Sa.'.split('_'),\n weekdaysMin: 'So_Mo_Di_Mi_Do_Fr_Sa'.split('_'),\n weekdaysParseExact: true,\n longDateFormat: {\n LT: 'HH:mm',\n LTS: 'HH:mm:ss',\n L: 'DD.MM.YYYY',\n LL: 'D. MMMM YYYY',\n LLL: 'D. MMMM YYYY HH:mm',\n LLLL: 'dddd, D. MMMM YYYY HH:mm',\n },\n calendar: {\n sameDay: '[heute um] LT [Uhr]',\n sameElse: 'L',\n nextDay: '[morgen um] LT [Uhr]',\n nextWeek: 'dddd [um] LT [Uhr]',\n lastDay: '[gestern um] LT [Uhr]',\n lastWeek: '[letzten] dddd [um] LT [Uhr]',\n },\n relativeTime: {\n future: 'in %s',\n past: 'vor %s',\n s: 'ein paar Sekunden',\n ss: '%d Sekunden',\n m: processRelativeTime,\n mm: '%d Minuten',\n h: processRelativeTime,\n hh: '%d Stunden',\n d: processRelativeTime,\n dd: processRelativeTime,\n w: processRelativeTime,\n ww: '%d Wochen',\n M: processRelativeTime,\n MM: processRelativeTime,\n y: processRelativeTime,\n yy: processRelativeTime,\n },\n dayOfMonthOrdinalParse: /\\d{1,2}\\./,\n ordinal: '%d.',\n week: {\n dow: 1, // Monday is the first day of the week.\n doy: 4, // The week that contains Jan 4th is the first week of the year.\n },\n });\n\n return deAt;\n\n})));\n","//! moment.js locale configuration\n//! locale : German (Switzerland) [de-ch]\n//! author : sschueller : https://github.com/sschueller\n\n;(function (global, factory) {\n typeof exports === 'object' && typeof module !== 'undefined'\n && typeof require === 'function' ? factory(require('../moment')) :\n typeof define === 'function' && define.amd ? define(['../moment'], factory) :\n factory(global.moment)\n}(this, (function (moment) { 'use strict';\n\n //! moment.js locale configuration\n\n function processRelativeTime(number, withoutSuffix, key, isFuture) {\n var format = {\n m: ['eine Minute', 'einer Minute'],\n h: ['eine Stunde', 'einer Stunde'],\n d: ['ein Tag', 'einem Tag'],\n dd: [number + ' Tage', number + ' Tagen'],\n w: ['eine Woche', 'einer Woche'],\n M: ['ein Monat', 'einem Monat'],\n MM: [number + ' Monate', number + ' Monaten'],\n y: ['ein Jahr', 'einem Jahr'],\n yy: [number + ' Jahre', number + ' Jahren'],\n };\n return withoutSuffix ? format[key][0] : format[key][1];\n }\n\n var deCh = moment.defineLocale('de-ch', {\n months: 'Januar_Februar_März_April_Mai_Juni_Juli_August_September_Oktober_November_Dezember'.split(\n '_'\n ),\n monthsShort:\n 'Jan._Feb._März_Apr._Mai_Juni_Juli_Aug._Sep._Okt._Nov._Dez.'.split('_'),\n monthsParseExact: true,\n weekdays:\n 'Sonntag_Montag_Dienstag_Mittwoch_Donnerstag_Freitag_Samstag'.split(\n '_'\n ),\n weekdaysShort: 'So_Mo_Di_Mi_Do_Fr_Sa'.split('_'),\n weekdaysMin: 'So_Mo_Di_Mi_Do_Fr_Sa'.split('_'),\n weekdaysParseExact: true,\n longDateFormat: {\n LT: 'HH:mm',\n LTS: 'HH:mm:ss',\n L: 'DD.MM.YYYY',\n LL: 'D. MMMM YYYY',\n LLL: 'D. MMMM YYYY HH:mm',\n LLLL: 'dddd, D. MMMM YYYY HH:mm',\n },\n calendar: {\n sameDay: '[heute um] LT [Uhr]',\n sameElse: 'L',\n nextDay: '[morgen um] LT [Uhr]',\n nextWeek: 'dddd [um] LT [Uhr]',\n lastDay: '[gestern um] LT [Uhr]',\n lastWeek: '[letzten] dddd [um] LT [Uhr]',\n },\n relativeTime: {\n future: 'in %s',\n past: 'vor %s',\n s: 'ein paar Sekunden',\n ss: '%d Sekunden',\n m: processRelativeTime,\n mm: '%d Minuten',\n h: processRelativeTime,\n hh: '%d Stunden',\n d: processRelativeTime,\n dd: processRelativeTime,\n w: processRelativeTime,\n ww: '%d Wochen',\n M: processRelativeTime,\n MM: processRelativeTime,\n y: processRelativeTime,\n yy: processRelativeTime,\n },\n dayOfMonthOrdinalParse: /\\d{1,2}\\./,\n ordinal: '%d.',\n week: {\n dow: 1, // Monday is the first day of the week.\n doy: 4, // The week that contains Jan 4th is the first week of the year.\n },\n });\n\n return deCh;\n\n})));\n","//! moment.js locale configuration\n//! locale : Maldivian [dv]\n//! author : Jawish Hameed : https://github.com/jawish\n\n;(function (global, factory) {\n typeof exports === 'object' && typeof module !== 'undefined'\n && typeof require === 'function' ? factory(require('../moment')) :\n typeof define === 'function' && define.amd ? define(['../moment'], factory) :\n factory(global.moment)\n}(this, (function (moment) { 'use strict';\n\n //! moment.js locale configuration\n\n var months = [\n 'Þ–Þ¬Þ‚ÞªÞ‡Þ¦ÞƒÞ©',\n 'ÞŠÞ¬Þ„Þ°ÞƒÞªÞ‡Þ¦ÞƒÞ©',\n 'Þ‰Þ§ÞƒÞ¨Þ—Þª',\n 'Þ‡ÞÞ•Þ°ÞƒÞ©ÞÞª',\n 'Þ‰Þ',\n 'Þ–Þ«Þ‚Þ°',\n 'Þ–ÞªÞÞ¦Þ‡Þ¨',\n 'Þ‡Þ¯ÞŽÞ¦ÞÞ°Þ“Þª',\n 'ÞÞ¬Þ•Þ°Þ“Þ¬Þ‰Þ°Þ„Þ¦ÞƒÞª',\n 'Þ‡Þ®Þ†Þ°Þ“Þ¯Þ„Þ¦ÞƒÞª',\n 'Þ‚Þ®ÞˆÞ¬Þ‰Þ°Þ„Þ¦ÞƒÞª',\n 'Þ‘Þ¨ÞÞ¬Þ‰Þ°Þ„Þ¦ÞƒÞª',\n ],\n weekdays = [\n 'އާދިއްތަ',\n 'Þ€Þ¯Þ‰Þ¦',\n 'Þ‡Þ¦Þ‚Þ°ÞŽÞ§ÞƒÞ¦',\n 'Þ„ÞªÞ‹Þ¦',\n 'Þ„ÞªÞƒÞ§Þްފަތި',\n 'Þ€ÞªÞ†ÞªÞƒÞª',\n 'Þ€Þ®Þ‚Þ¨Þ€Þ¨ÞƒÞª',\n ];\n\n var dv = moment.defineLocale('dv', {\n months: months,\n monthsShort: months,\n weekdays: weekdays,\n weekdaysShort: weekdays,\n weekdaysMin: 'Þ‡Þ§Þ‹Þ¨_Þ€Þ¯Þ‰Þ¦_Þ‡Þ¦Þ‚Þ°_Þ„ÞªÞ‹Þ¦_Þ„ÞªÞƒÞ§_Þ€ÞªÞ†Þª_Þ€Þ®Þ‚Þ¨'.split('_'),\n longDateFormat: {\n LT: 'HH:mm',\n LTS: 'HH:mm:ss',\n L: 'D/M/YYYY',\n LL: 'D MMMM YYYY',\n LLL: 'D MMMM YYYY HH:mm',\n LLLL: 'dddd D MMMM YYYY HH:mm',\n },\n meridiemParse: /Þ‰Þ†|Þ‰ÞŠ/,\n isPM: function (input) {\n return 'Þ‰ÞŠ' === input;\n },\n meridiem: function (hour, minute, isLower) {\n if (hour < 12) {\n return 'Þ‰Þ†';\n } else {\n return 'Þ‰ÞŠ';\n }\n },\n calendar: {\n sameDay: '[Þ‰Þ¨Þ‡Þ¦Þ‹Þª] LT',\n nextDay: '[Þ‰Þ§Þ‹Þ¦Þ‰Þ§] LT',\n nextWeek: 'dddd LT',\n lastDay: '[Þ‡Þ¨Þ‡Þ°Þ”Þ¬] LT',\n lastWeek: '[ފާއިތުވި] dddd LT',\n sameElse: 'L',\n },\n relativeTime: {\n future: 'ތެރÞÞŽÞ¦Þ‡Þ¨ %s',\n past: 'Þ†ÞªÞƒÞ¨Þ‚Þ° %s',\n s: 'Þިކުންތުކޮޅެއް',\n ss: 'd% Þިކުންތު',\n m: 'Þ‰Þ¨Þ‚Þ¨Þ“Þ¬Þ‡Þ°',\n mm: 'Þ‰Þ¨Þ‚Þ¨Þ“Þª %d',\n h: 'ÞŽÞ¦Þ‘Þ¨Þ‡Þ¨ÞƒÞ¬Þ‡Þ°',\n hh: 'ÞŽÞ¦Þ‘Þ¨Þ‡Þ¨ÞƒÞª %d',\n d: 'Þ‹ÞªÞˆÞ¦Þ€Þ¬Þ‡Þ°',\n dd: 'Þ‹ÞªÞˆÞ¦ÞÞ° %d',\n M: 'Þ‰Þ¦Þ€Þ¬Þ‡Þ°',\n MM: 'Þ‰Þ¦ÞÞ° %d',\n y: 'Þ‡Þ¦Þ€Þ¦ÞƒÞ¬Þ‡Þ°',\n yy: 'Þ‡Þ¦Þ€Þ¦ÞƒÞª %d',\n },\n preparse: function (string) {\n return string.replace(/ØŒ/g, ',');\n },\n postformat: function (string) {\n return string.replace(/,/g, 'ØŒ');\n },\n week: {\n dow: 7, // Sunday is the first day of the week.\n doy: 12, // The week that contains Jan 12th is the first week of the year.\n },\n });\n\n return dv;\n\n})));\n","//! moment.js locale configuration\n//! locale : Greek [el]\n//! author : Aggelos Karalias : https://github.com/mehiel\n\n;(function (global, factory) {\n typeof exports === 'object' && typeof module !== 'undefined'\n && typeof require === 'function' ? factory(require('../moment')) :\n typeof define === 'function' && define.amd ? define(['../moment'], factory) :\n factory(global.moment)\n}(this, (function (moment) { 'use strict';\n\n //! moment.js locale configuration\n\n function isFunction(input) {\n return (\n (typeof Function !== 'undefined' && input instanceof Function) ||\n Object.prototype.toString.call(input) === '[object Function]'\n );\n }\n\n var el = moment.defineLocale('el', {\n monthsNominativeEl:\n 'ΙανουάÏιος_ΦεβÏουάÏιος_ΜάÏτιος_ΑπÏίλιος_Μάιος_ΙοÏνιος_ΙοÏλιος_ΑÏγουστος_ΣεπτÎμβÏιος_ΟκτώβÏιος_ÎοÎμβÏιος_ΔεκÎμβÏιος'.split(\n '_'\n ),\n monthsGenitiveEl:\n 'ΙανουαÏίου_ΦεβÏουαÏίου_ΜαÏτίου_ΑπÏιλίου_ΜαÎου_Ιουνίου_Ιουλίου_ΑυγοÏστου_ΣεπτεμβÏίου_ΟκτωβÏίου_ÎοεμβÏίου_ΔεκεμβÏίου'.split(\n '_'\n ),\n months: function (momentToFormat, format) {\n if (!momentToFormat) {\n return this._monthsNominativeEl;\n } else if (\n typeof format === 'string' &&\n /D/.test(format.substring(0, format.indexOf('MMMM')))\n ) {\n // if there is a day number before 'MMMM'\n return this._monthsGenitiveEl[momentToFormat.month()];\n } else {\n return this._monthsNominativeEl[momentToFormat.month()];\n }\n },\n monthsShort: 'Ιαν_Φεβ_ΜαÏ_ΑπÏ_Μαϊ_Ιουν_Ιουλ_Αυγ_Σεπ_Οκτ_Îοε_Δεκ'.split('_'),\n weekdays: 'ΚυÏιακή_ΔευτÎÏα_ΤÏίτη_ΤετάÏτη_Î Îμπτη_ΠαÏασκευή_Σάββατο'.split(\n '_'\n ),\n weekdaysShort: 'ΚυÏ_Δευ_ΤÏι_Τετ_Πεμ_ΠαÏ_Σαβ'.split('_'),\n weekdaysMin: 'Κυ_Δε_ΤÏ_Τε_Πε_Πα_Σα'.split('_'),\n meridiem: function (hours, minutes, isLower) {\n if (hours > 11) {\n return isLower ? 'μμ' : 'ΜΜ';\n } else {\n return isLower ? 'πμ' : 'Î Îœ';\n }\n },\n isPM: function (input) {\n return (input + '').toLowerCase()[0] === 'μ';\n },\n meridiemParse: /[Î Îœ]\\.?Îœ?\\.?/i,\n longDateFormat: {\n LT: 'h:mm A',\n LTS: 'h:mm:ss A',\n L: 'DD/MM/YYYY',\n LL: 'D MMMM YYYY',\n LLL: 'D MMMM YYYY h:mm A',\n LLLL: 'dddd, D MMMM YYYY h:mm A',\n },\n calendarEl: {\n sameDay: '[ΣήμεÏα {}] LT',\n nextDay: '[ΑÏÏιο {}] LT',\n nextWeek: 'dddd [{}] LT',\n lastDay: '[Χθες {}] LT',\n lastWeek: function () {\n switch (this.day()) {\n case 6:\n return '[το Ï€ÏοηγοÏμενο] dddd [{}] LT';\n default:\n return '[την Ï€ÏοηγοÏμενη] dddd [{}] LT';\n }\n },\n sameElse: 'L',\n },\n calendar: function (key, mom) {\n var output = this._calendarEl[key],\n hours = mom && mom.hours();\n if (isFunction(output)) {\n output = output.apply(mom);\n }\n return output.replace('{}', hours % 12 === 1 ? 'στη' : 'στις');\n },\n relativeTime: {\n future: 'σε %s',\n past: '%s Ï€Ïιν',\n s: 'λίγα δευτεÏόλεπτα',\n ss: '%d δευτεÏόλεπτα',\n m: 'Îνα λεπτό',\n mm: '%d λεπτά',\n h: 'μία ÏŽÏα',\n hh: '%d ÏŽÏες',\n d: 'μία μÎÏα',\n dd: '%d μÎÏες',\n M: 'Îνας μήνας',\n MM: '%d μήνες',\n y: 'Îνας χÏόνος',\n yy: '%d χÏόνια',\n },\n dayOfMonthOrdinalParse: /\\d{1,2}η/,\n ordinal: '%dη',\n week: {\n dow: 1, // Monday is the first day of the week.\n doy: 4, // The week that contains Jan 4st is the first week of the year.\n },\n });\n\n return el;\n\n})));\n","//! moment.js locale configuration\n//! locale : English (Australia) [en-au]\n//! author : Jared Morse : https://github.com/jarcoal\n\n;(function (global, factory) {\n typeof exports === 'object' && typeof module !== 'undefined'\n && typeof require === 'function' ? factory(require('../moment')) :\n typeof define === 'function' && define.amd ? define(['../moment'], factory) :\n factory(global.moment)\n}(this, (function (moment) { 'use strict';\n\n //! moment.js locale configuration\n\n var enAu = moment.defineLocale('en-au', {\n months: 'January_February_March_April_May_June_July_August_September_October_November_December'.split(\n '_'\n ),\n monthsShort: 'Jan_Feb_Mar_Apr_May_Jun_Jul_Aug_Sep_Oct_Nov_Dec'.split('_'),\n weekdays: 'Sunday_Monday_Tuesday_Wednesday_Thursday_Friday_Saturday'.split(\n '_'\n ),\n weekdaysShort: 'Sun_Mon_Tue_Wed_Thu_Fri_Sat'.split('_'),\n weekdaysMin: 'Su_Mo_Tu_We_Th_Fr_Sa'.split('_'),\n longDateFormat: {\n LT: 'h:mm A',\n LTS: 'h:mm:ss A',\n L: 'DD/MM/YYYY',\n LL: 'D MMMM YYYY',\n LLL: 'D MMMM YYYY h:mm A',\n LLLL: 'dddd, D MMMM YYYY h:mm A',\n },\n calendar: {\n sameDay: '[Today at] LT',\n nextDay: '[Tomorrow at] LT',\n nextWeek: 'dddd [at] LT',\n lastDay: '[Yesterday at] LT',\n lastWeek: '[Last] dddd [at] LT',\n sameElse: 'L',\n },\n relativeTime: {\n future: 'in %s',\n past: '%s ago',\n s: 'a few seconds',\n ss: '%d seconds',\n m: 'a minute',\n mm: '%d minutes',\n h: 'an hour',\n hh: '%d hours',\n d: 'a day',\n dd: '%d days',\n M: 'a month',\n MM: '%d months',\n y: 'a year',\n yy: '%d years',\n },\n dayOfMonthOrdinalParse: /\\d{1,2}(st|nd|rd|th)/,\n ordinal: function (number) {\n var b = number % 10,\n output =\n ~~((number % 100) / 10) === 1\n ? 'th'\n : b === 1\n ? 'st'\n : b === 2\n ? 'nd'\n : b === 3\n ? 'rd'\n : 'th';\n return number + output;\n },\n week: {\n dow: 0, // Sunday is the first day of the week.\n doy: 4, // The week that contains Jan 4th is the first week of the year.\n },\n });\n\n return enAu;\n\n})));\n","//! moment.js locale configuration\n//! locale : English (Canada) [en-ca]\n//! author : Jonathan Abourbih : https://github.com/jonbca\n\n;(function (global, factory) {\n typeof exports === 'object' && typeof module !== 'undefined'\n && typeof require === 'function' ? factory(require('../moment')) :\n typeof define === 'function' && define.amd ? define(['../moment'], factory) :\n factory(global.moment)\n}(this, (function (moment) { 'use strict';\n\n //! moment.js locale configuration\n\n var enCa = moment.defineLocale('en-ca', {\n months: 'January_February_March_April_May_June_July_August_September_October_November_December'.split(\n '_'\n ),\n monthsShort: 'Jan_Feb_Mar_Apr_May_Jun_Jul_Aug_Sep_Oct_Nov_Dec'.split('_'),\n weekdays: 'Sunday_Monday_Tuesday_Wednesday_Thursday_Friday_Saturday'.split(\n '_'\n ),\n weekdaysShort: 'Sun_Mon_Tue_Wed_Thu_Fri_Sat'.split('_'),\n weekdaysMin: 'Su_Mo_Tu_We_Th_Fr_Sa'.split('_'),\n longDateFormat: {\n LT: 'h:mm A',\n LTS: 'h:mm:ss A',\n L: 'YYYY-MM-DD',\n LL: 'MMMM D, YYYY',\n LLL: 'MMMM D, YYYY h:mm A',\n LLLL: 'dddd, MMMM D, YYYY h:mm A',\n },\n calendar: {\n sameDay: '[Today at] LT',\n nextDay: '[Tomorrow at] LT',\n nextWeek: 'dddd [at] LT',\n lastDay: '[Yesterday at] LT',\n lastWeek: '[Last] dddd [at] LT',\n sameElse: 'L',\n },\n relativeTime: {\n future: 'in %s',\n past: '%s ago',\n s: 'a few seconds',\n ss: '%d seconds',\n m: 'a minute',\n mm: '%d minutes',\n h: 'an hour',\n hh: '%d hours',\n d: 'a day',\n dd: '%d days',\n M: 'a month',\n MM: '%d months',\n y: 'a year',\n yy: '%d years',\n },\n dayOfMonthOrdinalParse: /\\d{1,2}(st|nd|rd|th)/,\n ordinal: function (number) {\n var b = number % 10,\n output =\n ~~((number % 100) / 10) === 1\n ? 'th'\n : b === 1\n ? 'st'\n : b === 2\n ? 'nd'\n : b === 3\n ? 'rd'\n : 'th';\n return number + output;\n },\n });\n\n return enCa;\n\n})));\n","//! moment.js locale configuration\n//! locale : English (United Kingdom) [en-gb]\n//! author : Chris Gedrim : https://github.com/chrisgedrim\n\n;(function (global, factory) {\n typeof exports === 'object' && typeof module !== 'undefined'\n && typeof require === 'function' ? factory(require('../moment')) :\n typeof define === 'function' && define.amd ? define(['../moment'], factory) :\n factory(global.moment)\n}(this, (function (moment) { 'use strict';\n\n //! moment.js locale configuration\n\n var enGb = moment.defineLocale('en-gb', {\n months: 'January_February_March_April_May_June_July_August_September_October_November_December'.split(\n '_'\n ),\n monthsShort: 'Jan_Feb_Mar_Apr_May_Jun_Jul_Aug_Sep_Oct_Nov_Dec'.split('_'),\n weekdays: 'Sunday_Monday_Tuesday_Wednesday_Thursday_Friday_Saturday'.split(\n '_'\n ),\n weekdaysShort: 'Sun_Mon_Tue_Wed_Thu_Fri_Sat'.split('_'),\n weekdaysMin: 'Su_Mo_Tu_We_Th_Fr_Sa'.split('_'),\n longDateFormat: {\n LT: 'HH:mm',\n LTS: 'HH:mm:ss',\n L: 'DD/MM/YYYY',\n LL: 'D MMMM YYYY',\n LLL: 'D MMMM YYYY HH:mm',\n LLLL: 'dddd, D MMMM YYYY HH:mm',\n },\n calendar: {\n sameDay: '[Today at] LT',\n nextDay: '[Tomorrow at] LT',\n nextWeek: 'dddd [at] LT',\n lastDay: '[Yesterday at] LT',\n lastWeek: '[Last] dddd [at] LT',\n sameElse: 'L',\n },\n relativeTime: {\n future: 'in %s',\n past: '%s ago',\n s: 'a few seconds',\n ss: '%d seconds',\n m: 'a minute',\n mm: '%d minutes',\n h: 'an hour',\n hh: '%d hours',\n d: 'a day',\n dd: '%d days',\n M: 'a month',\n MM: '%d months',\n y: 'a year',\n yy: '%d years',\n },\n dayOfMonthOrdinalParse: /\\d{1,2}(st|nd|rd|th)/,\n ordinal: function (number) {\n var b = number % 10,\n output =\n ~~((number % 100) / 10) === 1\n ? 'th'\n : b === 1\n ? 'st'\n : b === 2\n ? 'nd'\n : b === 3\n ? 'rd'\n : 'th';\n return number + output;\n },\n week: {\n dow: 1, // Monday is the first day of the week.\n doy: 4, // The week that contains Jan 4th is the first week of the year.\n },\n });\n\n return enGb;\n\n})));\n","//! moment.js locale configuration\n//! locale : English (Ireland) [en-ie]\n//! author : Chris Cartlidge : https://github.com/chriscartlidge\n\n;(function (global, factory) {\n typeof exports === 'object' && typeof module !== 'undefined'\n && typeof require === 'function' ? factory(require('../moment')) :\n typeof define === 'function' && define.amd ? define(['../moment'], factory) :\n factory(global.moment)\n}(this, (function (moment) { 'use strict';\n\n //! moment.js locale configuration\n\n var enIe = moment.defineLocale('en-ie', {\n months: 'January_February_March_April_May_June_July_August_September_October_November_December'.split(\n '_'\n ),\n monthsShort: 'Jan_Feb_Mar_Apr_May_Jun_Jul_Aug_Sep_Oct_Nov_Dec'.split('_'),\n weekdays: 'Sunday_Monday_Tuesday_Wednesday_Thursday_Friday_Saturday'.split(\n '_'\n ),\n weekdaysShort: 'Sun_Mon_Tue_Wed_Thu_Fri_Sat'.split('_'),\n weekdaysMin: 'Su_Mo_Tu_We_Th_Fr_Sa'.split('_'),\n longDateFormat: {\n LT: 'HH:mm',\n LTS: 'HH:mm:ss',\n L: 'DD/MM/YYYY',\n LL: 'D MMMM YYYY',\n LLL: 'D MMMM YYYY HH:mm',\n LLLL: 'dddd D MMMM YYYY HH:mm',\n },\n calendar: {\n sameDay: '[Today at] LT',\n nextDay: '[Tomorrow at] LT',\n nextWeek: 'dddd [at] LT',\n lastDay: '[Yesterday at] LT',\n lastWeek: '[Last] dddd [at] LT',\n sameElse: 'L',\n },\n relativeTime: {\n future: 'in %s',\n past: '%s ago',\n s: 'a few seconds',\n ss: '%d seconds',\n m: 'a minute',\n mm: '%d minutes',\n h: 'an hour',\n hh: '%d hours',\n d: 'a day',\n dd: '%d days',\n M: 'a month',\n MM: '%d months',\n y: 'a year',\n yy: '%d years',\n },\n dayOfMonthOrdinalParse: /\\d{1,2}(st|nd|rd|th)/,\n ordinal: function (number) {\n var b = number % 10,\n output =\n ~~((number % 100) / 10) === 1\n ? 'th'\n : b === 1\n ? 'st'\n : b === 2\n ? 'nd'\n : b === 3\n ? 'rd'\n : 'th';\n return number + output;\n },\n week: {\n dow: 1, // Monday is the first day of the week.\n doy: 4, // The week that contains Jan 4th is the first week of the year.\n },\n });\n\n return enIe;\n\n})));\n","//! moment.js locale configuration\n//! locale : English (Israel) [en-il]\n//! author : Chris Gedrim : https://github.com/chrisgedrim\n\n;(function (global, factory) {\n typeof exports === 'object' && typeof module !== 'undefined'\n && typeof require === 'function' ? factory(require('../moment')) :\n typeof define === 'function' && define.amd ? define(['../moment'], factory) :\n factory(global.moment)\n}(this, (function (moment) { 'use strict';\n\n //! moment.js locale configuration\n\n var enIl = moment.defineLocale('en-il', {\n months: 'January_February_March_April_May_June_July_August_September_October_November_December'.split(\n '_'\n ),\n monthsShort: 'Jan_Feb_Mar_Apr_May_Jun_Jul_Aug_Sep_Oct_Nov_Dec'.split('_'),\n weekdays: 'Sunday_Monday_Tuesday_Wednesday_Thursday_Friday_Saturday'.split(\n '_'\n ),\n weekdaysShort: 'Sun_Mon_Tue_Wed_Thu_Fri_Sat'.split('_'),\n weekdaysMin: 'Su_Mo_Tu_We_Th_Fr_Sa'.split('_'),\n longDateFormat: {\n LT: 'HH:mm',\n LTS: 'HH:mm:ss',\n L: 'DD/MM/YYYY',\n LL: 'D MMMM YYYY',\n LLL: 'D MMMM YYYY HH:mm',\n LLLL: 'dddd, D MMMM YYYY HH:mm',\n },\n calendar: {\n sameDay: '[Today at] LT',\n nextDay: '[Tomorrow at] LT',\n nextWeek: 'dddd [at] LT',\n lastDay: '[Yesterday at] LT',\n lastWeek: '[Last] dddd [at] LT',\n sameElse: 'L',\n },\n relativeTime: {\n future: 'in %s',\n past: '%s ago',\n s: 'a few seconds',\n ss: '%d seconds',\n m: 'a minute',\n mm: '%d minutes',\n h: 'an hour',\n hh: '%d hours',\n d: 'a day',\n dd: '%d days',\n M: 'a month',\n MM: '%d months',\n y: 'a year',\n yy: '%d years',\n },\n dayOfMonthOrdinalParse: /\\d{1,2}(st|nd|rd|th)/,\n ordinal: function (number) {\n var b = number % 10,\n output =\n ~~((number % 100) / 10) === 1\n ? 'th'\n : b === 1\n ? 'st'\n : b === 2\n ? 'nd'\n : b === 3\n ? 'rd'\n : 'th';\n return number + output;\n },\n });\n\n return enIl;\n\n})));\n","//! moment.js locale configuration\n//! locale : English (India) [en-in]\n//! author : Jatin Agrawal : https://github.com/jatinag22\n\n;(function (global, factory) {\n typeof exports === 'object' && typeof module !== 'undefined'\n && typeof require === 'function' ? factory(require('../moment')) :\n typeof define === 'function' && define.amd ? define(['../moment'], factory) :\n factory(global.moment)\n}(this, (function (moment) { 'use strict';\n\n //! moment.js locale configuration\n\n var enIn = moment.defineLocale('en-in', {\n months: 'January_February_March_April_May_June_July_August_September_October_November_December'.split(\n '_'\n ),\n monthsShort: 'Jan_Feb_Mar_Apr_May_Jun_Jul_Aug_Sep_Oct_Nov_Dec'.split('_'),\n weekdays: 'Sunday_Monday_Tuesday_Wednesday_Thursday_Friday_Saturday'.split(\n '_'\n ),\n weekdaysShort: 'Sun_Mon_Tue_Wed_Thu_Fri_Sat'.split('_'),\n weekdaysMin: 'Su_Mo_Tu_We_Th_Fr_Sa'.split('_'),\n longDateFormat: {\n LT: 'h:mm A',\n LTS: 'h:mm:ss A',\n L: 'DD/MM/YYYY',\n LL: 'D MMMM YYYY',\n LLL: 'D MMMM YYYY h:mm A',\n LLLL: 'dddd, D MMMM YYYY h:mm A',\n },\n calendar: {\n sameDay: '[Today at] LT',\n nextDay: '[Tomorrow at] LT',\n nextWeek: 'dddd [at] LT',\n lastDay: '[Yesterday at] LT',\n lastWeek: '[Last] dddd [at] LT',\n sameElse: 'L',\n },\n relativeTime: {\n future: 'in %s',\n past: '%s ago',\n s: 'a few seconds',\n ss: '%d seconds',\n m: 'a minute',\n mm: '%d minutes',\n h: 'an hour',\n hh: '%d hours',\n d: 'a day',\n dd: '%d days',\n M: 'a month',\n MM: '%d months',\n y: 'a year',\n yy: '%d years',\n },\n dayOfMonthOrdinalParse: /\\d{1,2}(st|nd|rd|th)/,\n ordinal: function (number) {\n var b = number % 10,\n output =\n ~~((number % 100) / 10) === 1\n ? 'th'\n : b === 1\n ? 'st'\n : b === 2\n ? 'nd'\n : b === 3\n ? 'rd'\n : 'th';\n return number + output;\n },\n week: {\n dow: 0, // Sunday is the first day of the week.\n doy: 6, // The week that contains Jan 1st is the first week of the year.\n },\n });\n\n return enIn;\n\n})));\n","//! moment.js locale configuration\n//! locale : English (New Zealand) [en-nz]\n//! author : Luke McGregor : https://github.com/lukemcgregor\n\n;(function (global, factory) {\n typeof exports === 'object' && typeof module !== 'undefined'\n && typeof require === 'function' ? factory(require('../moment')) :\n typeof define === 'function' && define.amd ? define(['../moment'], factory) :\n factory(global.moment)\n}(this, (function (moment) { 'use strict';\n\n //! moment.js locale configuration\n\n var enNz = moment.defineLocale('en-nz', {\n months: 'January_February_March_April_May_June_July_August_September_October_November_December'.split(\n '_'\n ),\n monthsShort: 'Jan_Feb_Mar_Apr_May_Jun_Jul_Aug_Sep_Oct_Nov_Dec'.split('_'),\n weekdays: 'Sunday_Monday_Tuesday_Wednesday_Thursday_Friday_Saturday'.split(\n '_'\n ),\n weekdaysShort: 'Sun_Mon_Tue_Wed_Thu_Fri_Sat'.split('_'),\n weekdaysMin: 'Su_Mo_Tu_We_Th_Fr_Sa'.split('_'),\n longDateFormat: {\n LT: 'h:mm A',\n LTS: 'h:mm:ss A',\n L: 'DD/MM/YYYY',\n LL: 'D MMMM YYYY',\n LLL: 'D MMMM YYYY h:mm A',\n LLLL: 'dddd, D MMMM YYYY h:mm A',\n },\n calendar: {\n sameDay: '[Today at] LT',\n nextDay: '[Tomorrow at] LT',\n nextWeek: 'dddd [at] LT',\n lastDay: '[Yesterday at] LT',\n lastWeek: '[Last] dddd [at] LT',\n sameElse: 'L',\n },\n relativeTime: {\n future: 'in %s',\n past: '%s ago',\n s: 'a few seconds',\n ss: '%d seconds',\n m: 'a minute',\n mm: '%d minutes',\n h: 'an hour',\n hh: '%d hours',\n d: 'a day',\n dd: '%d days',\n M: 'a month',\n MM: '%d months',\n y: 'a year',\n yy: '%d years',\n },\n dayOfMonthOrdinalParse: /\\d{1,2}(st|nd|rd|th)/,\n ordinal: function (number) {\n var b = number % 10,\n output =\n ~~((number % 100) / 10) === 1\n ? 'th'\n : b === 1\n ? 'st'\n : b === 2\n ? 'nd'\n : b === 3\n ? 'rd'\n : 'th';\n return number + output;\n },\n week: {\n dow: 1, // Monday is the first day of the week.\n doy: 4, // The week that contains Jan 4th is the first week of the year.\n },\n });\n\n return enNz;\n\n})));\n","//! moment.js locale configuration\n//! locale : English (Singapore) [en-sg]\n//! author : Matthew Castrillon-Madrigal : https://github.com/techdimension\n\n;(function (global, factory) {\n typeof exports === 'object' && typeof module !== 'undefined'\n && typeof require === 'function' ? factory(require('../moment')) :\n typeof define === 'function' && define.amd ? define(['../moment'], factory) :\n factory(global.moment)\n}(this, (function (moment) { 'use strict';\n\n //! moment.js locale configuration\n\n var enSg = moment.defineLocale('en-sg', {\n months: 'January_February_March_April_May_June_July_August_September_October_November_December'.split(\n '_'\n ),\n monthsShort: 'Jan_Feb_Mar_Apr_May_Jun_Jul_Aug_Sep_Oct_Nov_Dec'.split('_'),\n weekdays: 'Sunday_Monday_Tuesday_Wednesday_Thursday_Friday_Saturday'.split(\n '_'\n ),\n weekdaysShort: 'Sun_Mon_Tue_Wed_Thu_Fri_Sat'.split('_'),\n weekdaysMin: 'Su_Mo_Tu_We_Th_Fr_Sa'.split('_'),\n longDateFormat: {\n LT: 'HH:mm',\n LTS: 'HH:mm:ss',\n L: 'DD/MM/YYYY',\n LL: 'D MMMM YYYY',\n LLL: 'D MMMM YYYY HH:mm',\n LLLL: 'dddd, D MMMM YYYY HH:mm',\n },\n calendar: {\n sameDay: '[Today at] LT',\n nextDay: '[Tomorrow at] LT',\n nextWeek: 'dddd [at] LT',\n lastDay: '[Yesterday at] LT',\n lastWeek: '[Last] dddd [at] LT',\n sameElse: 'L',\n },\n relativeTime: {\n future: 'in %s',\n past: '%s ago',\n s: 'a few seconds',\n ss: '%d seconds',\n m: 'a minute',\n mm: '%d minutes',\n h: 'an hour',\n hh: '%d hours',\n d: 'a day',\n dd: '%d days',\n M: 'a month',\n MM: '%d months',\n y: 'a year',\n yy: '%d years',\n },\n dayOfMonthOrdinalParse: /\\d{1,2}(st|nd|rd|th)/,\n ordinal: function (number) {\n var b = number % 10,\n output =\n ~~((number % 100) / 10) === 1\n ? 'th'\n : b === 1\n ? 'st'\n : b === 2\n ? 'nd'\n : b === 3\n ? 'rd'\n : 'th';\n return number + output;\n },\n week: {\n dow: 1, // Monday is the first day of the week.\n doy: 4, // The week that contains Jan 4th is the first week of the year.\n },\n });\n\n return enSg;\n\n})));\n","//! moment.js locale configuration\n//! locale : Esperanto [eo]\n//! author : Colin Dean : https://github.com/colindean\n//! author : Mia Nordentoft Imperatori : https://github.com/miestasmia\n//! comment : miestasmia corrected the translation by colindean\n//! comment : Vivakvo corrected the translation by colindean and miestasmia\n\n;(function (global, factory) {\n typeof exports === 'object' && typeof module !== 'undefined'\n && typeof require === 'function' ? factory(require('../moment')) :\n typeof define === 'function' && define.amd ? define(['../moment'], factory) :\n factory(global.moment)\n}(this, (function (moment) { 'use strict';\n\n //! moment.js locale configuration\n\n var eo = moment.defineLocale('eo', {\n months: 'januaro_februaro_marto_aprilo_majo_junio_julio_aÅgusto_septembro_oktobro_novembro_decembro'.split(\n '_'\n ),\n monthsShort: 'jan_feb_mart_apr_maj_jun_jul_aÅg_sept_okt_nov_dec'.split('_'),\n weekdays: 'dimanĉo_lundo_mardo_merkredo_ĵaÅdo_vendredo_sabato'.split('_'),\n weekdaysShort: 'dim_lun_mard_merk_ĵaÅ_ven_sab'.split('_'),\n weekdaysMin: 'di_lu_ma_me_ĵa_ve_sa'.split('_'),\n longDateFormat: {\n LT: 'HH:mm',\n LTS: 'HH:mm:ss',\n L: 'YYYY-MM-DD',\n LL: '[la] D[-an de] MMMM, YYYY',\n LLL: '[la] D[-an de] MMMM, YYYY HH:mm',\n LLLL: 'dddd[n], [la] D[-an de] MMMM, YYYY HH:mm',\n llll: 'ddd, [la] D[-an de] MMM, YYYY HH:mm',\n },\n meridiemParse: /[ap]\\.t\\.m/i,\n isPM: function (input) {\n return input.charAt(0).toLowerCase() === 'p';\n },\n meridiem: function (hours, minutes, isLower) {\n if (hours > 11) {\n return isLower ? 'p.t.m.' : 'P.T.M.';\n } else {\n return isLower ? 'a.t.m.' : 'A.T.M.';\n }\n },\n calendar: {\n sameDay: '[HodiaÅ je] LT',\n nextDay: '[MorgaÅ je] LT',\n nextWeek: 'dddd[n je] LT',\n lastDay: '[HieraÅ je] LT',\n lastWeek: '[pasintan] dddd[n je] LT',\n sameElse: 'L',\n },\n relativeTime: {\n future: 'post %s',\n past: 'antaÅ %s',\n s: 'kelkaj sekundoj',\n ss: '%d sekundoj',\n m: 'unu minuto',\n mm: '%d minutoj',\n h: 'unu horo',\n hh: '%d horoj',\n d: 'unu tago', //ne 'diurno', ĉar estas uzita por proksimumo\n dd: '%d tagoj',\n M: 'unu monato',\n MM: '%d monatoj',\n y: 'unu jaro',\n yy: '%d jaroj',\n },\n dayOfMonthOrdinalParse: /\\d{1,2}a/,\n ordinal: '%da',\n week: {\n dow: 1, // Monday is the first day of the week.\n doy: 7, // The week that contains Jan 7th is the first week of the year.\n },\n });\n\n return eo;\n\n})));\n","//! moment.js locale configuration\n//! locale : Spanish [es]\n//! author : Julio Napurà : https://github.com/julionc\n\n;(function (global, factory) {\n typeof exports === 'object' && typeof module !== 'undefined'\n && typeof require === 'function' ? factory(require('../moment')) :\n typeof define === 'function' && define.amd ? define(['../moment'], factory) :\n factory(global.moment)\n}(this, (function (moment) { 'use strict';\n\n //! moment.js locale configuration\n\n var monthsShortDot =\n 'ene._feb._mar._abr._may._jun._jul._ago._sep._oct._nov._dic.'.split(\n '_'\n ),\n monthsShort = 'ene_feb_mar_abr_may_jun_jul_ago_sep_oct_nov_dic'.split('_'),\n monthsParse = [\n /^ene/i,\n /^feb/i,\n /^mar/i,\n /^abr/i,\n /^may/i,\n /^jun/i,\n /^jul/i,\n /^ago/i,\n /^sep/i,\n /^oct/i,\n /^nov/i,\n /^dic/i,\n ],\n monthsRegex =\n /^(enero|febrero|marzo|abril|mayo|junio|julio|agosto|septiembre|octubre|noviembre|diciembre|ene\\.?|feb\\.?|mar\\.?|abr\\.?|may\\.?|jun\\.?|jul\\.?|ago\\.?|sep\\.?|oct\\.?|nov\\.?|dic\\.?)/i;\n\n var es = moment.defineLocale('es', {\n months: 'enero_febrero_marzo_abril_mayo_junio_julio_agosto_septiembre_octubre_noviembre_diciembre'.split(\n '_'\n ),\n monthsShort: function (m, format) {\n if (!m) {\n return monthsShortDot;\n } else if (/-MMM-/.test(format)) {\n return monthsShort[m.month()];\n } else {\n return monthsShortDot[m.month()];\n }\n },\n monthsRegex: monthsRegex,\n monthsShortRegex: monthsRegex,\n monthsStrictRegex:\n /^(enero|febrero|marzo|abril|mayo|junio|julio|agosto|septiembre|octubre|noviembre|diciembre)/i,\n monthsShortStrictRegex:\n /^(ene\\.?|feb\\.?|mar\\.?|abr\\.?|may\\.?|jun\\.?|jul\\.?|ago\\.?|sep\\.?|oct\\.?|nov\\.?|dic\\.?)/i,\n monthsParse: monthsParse,\n longMonthsParse: monthsParse,\n shortMonthsParse: monthsParse,\n weekdays: 'domingo_lunes_martes_miércoles_jueves_viernes_sábado'.split('_'),\n weekdaysShort: 'dom._lun._mar._mié._jue._vie._sáb.'.split('_'),\n weekdaysMin: 'do_lu_ma_mi_ju_vi_sá'.split('_'),\n weekdaysParseExact: true,\n longDateFormat: {\n LT: 'H:mm',\n LTS: 'H:mm:ss',\n L: 'DD/MM/YYYY',\n LL: 'D [de] MMMM [de] YYYY',\n LLL: 'D [de] MMMM [de] YYYY H:mm',\n LLLL: 'dddd, D [de] MMMM [de] YYYY H:mm',\n },\n calendar: {\n sameDay: function () {\n return '[hoy a la' + (this.hours() !== 1 ? 's' : '') + '] LT';\n },\n nextDay: function () {\n return '[mañana a la' + (this.hours() !== 1 ? 's' : '') + '] LT';\n },\n nextWeek: function () {\n return 'dddd [a la' + (this.hours() !== 1 ? 's' : '') + '] LT';\n },\n lastDay: function () {\n return '[ayer a la' + (this.hours() !== 1 ? 's' : '') + '] LT';\n },\n lastWeek: function () {\n return (\n '[el] dddd [pasado a la' +\n (this.hours() !== 1 ? 's' : '') +\n '] LT'\n );\n },\n sameElse: 'L',\n },\n relativeTime: {\n future: 'en %s',\n past: 'hace %s',\n s: 'unos segundos',\n ss: '%d segundos',\n m: 'un minuto',\n mm: '%d minutos',\n h: 'una hora',\n hh: '%d horas',\n d: 'un dÃa',\n dd: '%d dÃas',\n w: 'una semana',\n ww: '%d semanas',\n M: 'un mes',\n MM: '%d meses',\n y: 'un año',\n yy: '%d años',\n },\n dayOfMonthOrdinalParse: /\\d{1,2}º/,\n ordinal: '%dº',\n week: {\n dow: 1, // Monday is the first day of the week.\n doy: 4, // The week that contains Jan 4th is the first week of the year.\n },\n invalidDate: 'Fecha inválida',\n });\n\n return es;\n\n})));\n","//! moment.js locale configuration\n//! locale : Spanish (Dominican Republic) [es-do]\n\n;(function (global, factory) {\n typeof exports === 'object' && typeof module !== 'undefined'\n && typeof require === 'function' ? factory(require('../moment')) :\n typeof define === 'function' && define.amd ? define(['../moment'], factory) :\n factory(global.moment)\n}(this, (function (moment) { 'use strict';\n\n //! moment.js locale configuration\n\n var monthsShortDot =\n 'ene._feb._mar._abr._may._jun._jul._ago._sep._oct._nov._dic.'.split(\n '_'\n ),\n monthsShort = 'ene_feb_mar_abr_may_jun_jul_ago_sep_oct_nov_dic'.split('_'),\n monthsParse = [\n /^ene/i,\n /^feb/i,\n /^mar/i,\n /^abr/i,\n /^may/i,\n /^jun/i,\n /^jul/i,\n /^ago/i,\n /^sep/i,\n /^oct/i,\n /^nov/i,\n /^dic/i,\n ],\n monthsRegex =\n /^(enero|febrero|marzo|abril|mayo|junio|julio|agosto|septiembre|octubre|noviembre|diciembre|ene\\.?|feb\\.?|mar\\.?|abr\\.?|may\\.?|jun\\.?|jul\\.?|ago\\.?|sep\\.?|oct\\.?|nov\\.?|dic\\.?)/i;\n\n var esDo = moment.defineLocale('es-do', {\n months: 'enero_febrero_marzo_abril_mayo_junio_julio_agosto_septiembre_octubre_noviembre_diciembre'.split(\n '_'\n ),\n monthsShort: function (m, format) {\n if (!m) {\n return monthsShortDot;\n } else if (/-MMM-/.test(format)) {\n return monthsShort[m.month()];\n } else {\n return monthsShortDot[m.month()];\n }\n },\n monthsRegex: monthsRegex,\n monthsShortRegex: monthsRegex,\n monthsStrictRegex:\n /^(enero|febrero|marzo|abril|mayo|junio|julio|agosto|septiembre|octubre|noviembre|diciembre)/i,\n monthsShortStrictRegex:\n /^(ene\\.?|feb\\.?|mar\\.?|abr\\.?|may\\.?|jun\\.?|jul\\.?|ago\\.?|sep\\.?|oct\\.?|nov\\.?|dic\\.?)/i,\n monthsParse: monthsParse,\n longMonthsParse: monthsParse,\n shortMonthsParse: monthsParse,\n weekdays: 'domingo_lunes_martes_miércoles_jueves_viernes_sábado'.split('_'),\n weekdaysShort: 'dom._lun._mar._mié._jue._vie._sáb.'.split('_'),\n weekdaysMin: 'do_lu_ma_mi_ju_vi_sá'.split('_'),\n weekdaysParseExact: true,\n longDateFormat: {\n LT: 'h:mm A',\n LTS: 'h:mm:ss A',\n L: 'DD/MM/YYYY',\n LL: 'D [de] MMMM [de] YYYY',\n LLL: 'D [de] MMMM [de] YYYY h:mm A',\n LLLL: 'dddd, D [de] MMMM [de] YYYY h:mm A',\n },\n calendar: {\n sameDay: function () {\n return '[hoy a la' + (this.hours() !== 1 ? 's' : '') + '] LT';\n },\n nextDay: function () {\n return '[mañana a la' + (this.hours() !== 1 ? 's' : '') + '] LT';\n },\n nextWeek: function () {\n return 'dddd [a la' + (this.hours() !== 1 ? 's' : '') + '] LT';\n },\n lastDay: function () {\n return '[ayer a la' + (this.hours() !== 1 ? 's' : '') + '] LT';\n },\n lastWeek: function () {\n return (\n '[el] dddd [pasado a la' +\n (this.hours() !== 1 ? 's' : '') +\n '] LT'\n );\n },\n sameElse: 'L',\n },\n relativeTime: {\n future: 'en %s',\n past: 'hace %s',\n s: 'unos segundos',\n ss: '%d segundos',\n m: 'un minuto',\n mm: '%d minutos',\n h: 'una hora',\n hh: '%d horas',\n d: 'un dÃa',\n dd: '%d dÃas',\n w: 'una semana',\n ww: '%d semanas',\n M: 'un mes',\n MM: '%d meses',\n y: 'un año',\n yy: '%d años',\n },\n dayOfMonthOrdinalParse: /\\d{1,2}º/,\n ordinal: '%dº',\n week: {\n dow: 1, // Monday is the first day of the week.\n doy: 4, // The week that contains Jan 4th is the first week of the year.\n },\n });\n\n return esDo;\n\n})));\n","//! moment.js locale configuration\n//! locale : Spanish (Mexico) [es-mx]\n//! author : JC Franco : https://github.com/jcfranco\n\n;(function (global, factory) {\n typeof exports === 'object' && typeof module !== 'undefined'\n && typeof require === 'function' ? factory(require('../moment')) :\n typeof define === 'function' && define.amd ? define(['../moment'], factory) :\n factory(global.moment)\n}(this, (function (moment) { 'use strict';\n\n //! moment.js locale configuration\n\n var monthsShortDot =\n 'ene._feb._mar._abr._may._jun._jul._ago._sep._oct._nov._dic.'.split(\n '_'\n ),\n monthsShort = 'ene_feb_mar_abr_may_jun_jul_ago_sep_oct_nov_dic'.split('_'),\n monthsParse = [\n /^ene/i,\n /^feb/i,\n /^mar/i,\n /^abr/i,\n /^may/i,\n /^jun/i,\n /^jul/i,\n /^ago/i,\n /^sep/i,\n /^oct/i,\n /^nov/i,\n /^dic/i,\n ],\n monthsRegex =\n /^(enero|febrero|marzo|abril|mayo|junio|julio|agosto|septiembre|octubre|noviembre|diciembre|ene\\.?|feb\\.?|mar\\.?|abr\\.?|may\\.?|jun\\.?|jul\\.?|ago\\.?|sep\\.?|oct\\.?|nov\\.?|dic\\.?)/i;\n\n var esMx = moment.defineLocale('es-mx', {\n months: 'enero_febrero_marzo_abril_mayo_junio_julio_agosto_septiembre_octubre_noviembre_diciembre'.split(\n '_'\n ),\n monthsShort: function (m, format) {\n if (!m) {\n return monthsShortDot;\n } else if (/-MMM-/.test(format)) {\n return monthsShort[m.month()];\n } else {\n return monthsShortDot[m.month()];\n }\n },\n monthsRegex: monthsRegex,\n monthsShortRegex: monthsRegex,\n monthsStrictRegex:\n /^(enero|febrero|marzo|abril|mayo|junio|julio|agosto|septiembre|octubre|noviembre|diciembre)/i,\n monthsShortStrictRegex:\n /^(ene\\.?|feb\\.?|mar\\.?|abr\\.?|may\\.?|jun\\.?|jul\\.?|ago\\.?|sep\\.?|oct\\.?|nov\\.?|dic\\.?)/i,\n monthsParse: monthsParse,\n longMonthsParse: monthsParse,\n shortMonthsParse: monthsParse,\n weekdays: 'domingo_lunes_martes_miércoles_jueves_viernes_sábado'.split('_'),\n weekdaysShort: 'dom._lun._mar._mié._jue._vie._sáb.'.split('_'),\n weekdaysMin: 'do_lu_ma_mi_ju_vi_sá'.split('_'),\n weekdaysParseExact: true,\n longDateFormat: {\n LT: 'H:mm',\n LTS: 'H:mm:ss',\n L: 'DD/MM/YYYY',\n LL: 'D [de] MMMM [de] YYYY',\n LLL: 'D [de] MMMM [de] YYYY H:mm',\n LLLL: 'dddd, D [de] MMMM [de] YYYY H:mm',\n },\n calendar: {\n sameDay: function () {\n return '[hoy a la' + (this.hours() !== 1 ? 's' : '') + '] LT';\n },\n nextDay: function () {\n return '[mañana a la' + (this.hours() !== 1 ? 's' : '') + '] LT';\n },\n nextWeek: function () {\n return 'dddd [a la' + (this.hours() !== 1 ? 's' : '') + '] LT';\n },\n lastDay: function () {\n return '[ayer a la' + (this.hours() !== 1 ? 's' : '') + '] LT';\n },\n lastWeek: function () {\n return (\n '[el] dddd [pasado a la' +\n (this.hours() !== 1 ? 's' : '') +\n '] LT'\n );\n },\n sameElse: 'L',\n },\n relativeTime: {\n future: 'en %s',\n past: 'hace %s',\n s: 'unos segundos',\n ss: '%d segundos',\n m: 'un minuto',\n mm: '%d minutos',\n h: 'una hora',\n hh: '%d horas',\n d: 'un dÃa',\n dd: '%d dÃas',\n w: 'una semana',\n ww: '%d semanas',\n M: 'un mes',\n MM: '%d meses',\n y: 'un año',\n yy: '%d años',\n },\n dayOfMonthOrdinalParse: /\\d{1,2}º/,\n ordinal: '%dº',\n week: {\n dow: 0, // Sunday is the first day of the week.\n doy: 4, // The week that contains Jan 4th is the first week of the year.\n },\n invalidDate: 'Fecha inválida',\n });\n\n return esMx;\n\n})));\n","//! moment.js locale configuration\n//! locale : Spanish (United States) [es-us]\n//! author : bustta : https://github.com/bustta\n//! author : chrisrodz : https://github.com/chrisrodz\n\n;(function (global, factory) {\n typeof exports === 'object' && typeof module !== 'undefined'\n && typeof require === 'function' ? factory(require('../moment')) :\n typeof define === 'function' && define.amd ? define(['../moment'], factory) :\n factory(global.moment)\n}(this, (function (moment) { 'use strict';\n\n //! moment.js locale configuration\n\n var monthsShortDot =\n 'ene._feb._mar._abr._may._jun._jul._ago._sep._oct._nov._dic.'.split(\n '_'\n ),\n monthsShort = 'ene_feb_mar_abr_may_jun_jul_ago_sep_oct_nov_dic'.split('_'),\n monthsParse = [\n /^ene/i,\n /^feb/i,\n /^mar/i,\n /^abr/i,\n /^may/i,\n /^jun/i,\n /^jul/i,\n /^ago/i,\n /^sep/i,\n /^oct/i,\n /^nov/i,\n /^dic/i,\n ],\n monthsRegex =\n /^(enero|febrero|marzo|abril|mayo|junio|julio|agosto|septiembre|octubre|noviembre|diciembre|ene\\.?|feb\\.?|mar\\.?|abr\\.?|may\\.?|jun\\.?|jul\\.?|ago\\.?|sep\\.?|oct\\.?|nov\\.?|dic\\.?)/i;\n\n var esUs = moment.defineLocale('es-us', {\n months: 'enero_febrero_marzo_abril_mayo_junio_julio_agosto_septiembre_octubre_noviembre_diciembre'.split(\n '_'\n ),\n monthsShort: function (m, format) {\n if (!m) {\n return monthsShortDot;\n } else if (/-MMM-/.test(format)) {\n return monthsShort[m.month()];\n } else {\n return monthsShortDot[m.month()];\n }\n },\n monthsRegex: monthsRegex,\n monthsShortRegex: monthsRegex,\n monthsStrictRegex:\n /^(enero|febrero|marzo|abril|mayo|junio|julio|agosto|septiembre|octubre|noviembre|diciembre)/i,\n monthsShortStrictRegex:\n /^(ene\\.?|feb\\.?|mar\\.?|abr\\.?|may\\.?|jun\\.?|jul\\.?|ago\\.?|sep\\.?|oct\\.?|nov\\.?|dic\\.?)/i,\n monthsParse: monthsParse,\n longMonthsParse: monthsParse,\n shortMonthsParse: monthsParse,\n weekdays: 'domingo_lunes_martes_miércoles_jueves_viernes_sábado'.split('_'),\n weekdaysShort: 'dom._lun._mar._mié._jue._vie._sáb.'.split('_'),\n weekdaysMin: 'do_lu_ma_mi_ju_vi_sá'.split('_'),\n weekdaysParseExact: true,\n longDateFormat: {\n LT: 'h:mm A',\n LTS: 'h:mm:ss A',\n L: 'MM/DD/YYYY',\n LL: 'D [de] MMMM [de] YYYY',\n LLL: 'D [de] MMMM [de] YYYY h:mm A',\n LLLL: 'dddd, D [de] MMMM [de] YYYY h:mm A',\n },\n calendar: {\n sameDay: function () {\n return '[hoy a la' + (this.hours() !== 1 ? 's' : '') + '] LT';\n },\n nextDay: function () {\n return '[mañana a la' + (this.hours() !== 1 ? 's' : '') + '] LT';\n },\n nextWeek: function () {\n return 'dddd [a la' + (this.hours() !== 1 ? 's' : '') + '] LT';\n },\n lastDay: function () {\n return '[ayer a la' + (this.hours() !== 1 ? 's' : '') + '] LT';\n },\n lastWeek: function () {\n return (\n '[el] dddd [pasado a la' +\n (this.hours() !== 1 ? 's' : '') +\n '] LT'\n );\n },\n sameElse: 'L',\n },\n relativeTime: {\n future: 'en %s',\n past: 'hace %s',\n s: 'unos segundos',\n ss: '%d segundos',\n m: 'un minuto',\n mm: '%d minutos',\n h: 'una hora',\n hh: '%d horas',\n d: 'un dÃa',\n dd: '%d dÃas',\n w: 'una semana',\n ww: '%d semanas',\n M: 'un mes',\n MM: '%d meses',\n y: 'un año',\n yy: '%d años',\n },\n dayOfMonthOrdinalParse: /\\d{1,2}º/,\n ordinal: '%dº',\n week: {\n dow: 0, // Sunday is the first day of the week.\n doy: 6, // The week that contains Jan 6th is the first week of the year.\n },\n });\n\n return esUs;\n\n})));\n","//! moment.js locale configuration\n//! locale : Estonian [et]\n//! author : Henry Kehlmann : https://github.com/madhenry\n//! improvements : Illimar Tambek : https://github.com/ragulka\n\n;(function (global, factory) {\n typeof exports === 'object' && typeof module !== 'undefined'\n && typeof require === 'function' ? factory(require('../moment')) :\n typeof define === 'function' && define.amd ? define(['../moment'], factory) :\n factory(global.moment)\n}(this, (function (moment) { 'use strict';\n\n //! moment.js locale configuration\n\n function processRelativeTime(number, withoutSuffix, key, isFuture) {\n var format = {\n s: ['mõne sekundi', 'mõni sekund', 'paar sekundit'],\n ss: [number + 'sekundi', number + 'sekundit'],\n m: ['ühe minuti', 'üks minut'],\n mm: [number + ' minuti', number + ' minutit'],\n h: ['ühe tunni', 'tund aega', 'üks tund'],\n hh: [number + ' tunni', number + ' tundi'],\n d: ['ühe päeva', 'üks päev'],\n M: ['kuu aja', 'kuu aega', 'üks kuu'],\n MM: [number + ' kuu', number + ' kuud'],\n y: ['ühe aasta', 'aasta', 'üks aasta'],\n yy: [number + ' aasta', number + ' aastat'],\n };\n if (withoutSuffix) {\n return format[key][2] ? format[key][2] : format[key][1];\n }\n return isFuture ? format[key][0] : format[key][1];\n }\n\n var et = moment.defineLocale('et', {\n months: 'jaanuar_veebruar_märts_aprill_mai_juuni_juuli_august_september_oktoober_november_detsember'.split(\n '_'\n ),\n monthsShort:\n 'jaan_veebr_märts_apr_mai_juuni_juuli_aug_sept_okt_nov_dets'.split('_'),\n weekdays:\n 'pühapäev_esmaspäev_teisipäev_kolmapäev_neljapäev_reede_laupäev'.split(\n '_'\n ),\n weekdaysShort: 'P_E_T_K_N_R_L'.split('_'),\n weekdaysMin: 'P_E_T_K_N_R_L'.split('_'),\n longDateFormat: {\n LT: 'H:mm',\n LTS: 'H:mm:ss',\n L: 'DD.MM.YYYY',\n LL: 'D. MMMM YYYY',\n LLL: 'D. MMMM YYYY H:mm',\n LLLL: 'dddd, D. MMMM YYYY H:mm',\n },\n calendar: {\n sameDay: '[Täna,] LT',\n nextDay: '[Homme,] LT',\n nextWeek: '[Järgmine] dddd LT',\n lastDay: '[Eile,] LT',\n lastWeek: '[Eelmine] dddd LT',\n sameElse: 'L',\n },\n relativeTime: {\n future: '%s pärast',\n past: '%s tagasi',\n s: processRelativeTime,\n ss: processRelativeTime,\n m: processRelativeTime,\n mm: processRelativeTime,\n h: processRelativeTime,\n hh: processRelativeTime,\n d: processRelativeTime,\n dd: '%d päeva',\n M: processRelativeTime,\n MM: processRelativeTime,\n y: processRelativeTime,\n yy: processRelativeTime,\n },\n dayOfMonthOrdinalParse: /\\d{1,2}\\./,\n ordinal: '%d.',\n week: {\n dow: 1, // Monday is the first day of the week.\n doy: 4, // The week that contains Jan 4th is the first week of the year.\n },\n });\n\n return et;\n\n})));\n","//! moment.js locale configuration\n//! locale : Basque [eu]\n//! author : Eneko Illarramendi : https://github.com/eillarra\n\n;(function (global, factory) {\n typeof exports === 'object' && typeof module !== 'undefined'\n && typeof require === 'function' ? factory(require('../moment')) :\n typeof define === 'function' && define.amd ? define(['../moment'], factory) :\n factory(global.moment)\n}(this, (function (moment) { 'use strict';\n\n //! moment.js locale configuration\n\n var eu = moment.defineLocale('eu', {\n months: 'urtarrila_otsaila_martxoa_apirila_maiatza_ekaina_uztaila_abuztua_iraila_urria_azaroa_abendua'.split(\n '_'\n ),\n monthsShort:\n 'urt._ots._mar._api._mai._eka._uzt._abu._ira._urr._aza._abe.'.split(\n '_'\n ),\n monthsParseExact: true,\n weekdays:\n 'igandea_astelehena_asteartea_asteazkena_osteguna_ostirala_larunbata'.split(\n '_'\n ),\n weekdaysShort: 'ig._al._ar._az._og._ol._lr.'.split('_'),\n weekdaysMin: 'ig_al_ar_az_og_ol_lr'.split('_'),\n weekdaysParseExact: true,\n longDateFormat: {\n LT: 'HH:mm',\n LTS: 'HH:mm:ss',\n L: 'YYYY-MM-DD',\n LL: 'YYYY[ko] MMMM[ren] D[a]',\n LLL: 'YYYY[ko] MMMM[ren] D[a] HH:mm',\n LLLL: 'dddd, YYYY[ko] MMMM[ren] D[a] HH:mm',\n l: 'YYYY-M-D',\n ll: 'YYYY[ko] MMM D[a]',\n lll: 'YYYY[ko] MMM D[a] HH:mm',\n llll: 'ddd, YYYY[ko] MMM D[a] HH:mm',\n },\n calendar: {\n sameDay: '[gaur] LT[etan]',\n nextDay: '[bihar] LT[etan]',\n nextWeek: 'dddd LT[etan]',\n lastDay: '[atzo] LT[etan]',\n lastWeek: '[aurreko] dddd LT[etan]',\n sameElse: 'L',\n },\n relativeTime: {\n future: '%s barru',\n past: 'duela %s',\n s: 'segundo batzuk',\n ss: '%d segundo',\n m: 'minutu bat',\n mm: '%d minutu',\n h: 'ordu bat',\n hh: '%d ordu',\n d: 'egun bat',\n dd: '%d egun',\n M: 'hilabete bat',\n MM: '%d hilabete',\n y: 'urte bat',\n yy: '%d urte',\n },\n dayOfMonthOrdinalParse: /\\d{1,2}\\./,\n ordinal: '%d.',\n week: {\n dow: 1, // Monday is the first day of the week.\n doy: 7, // The week that contains Jan 7th is the first week of the year.\n },\n });\n\n return eu;\n\n})));\n","//! moment.js locale configuration\n//! locale : Persian [fa]\n//! author : Ebrahim Byagowi : https://github.com/ebraminio\n\n;(function (global, factory) {\n typeof exports === 'object' && typeof module !== 'undefined'\n && typeof require === 'function' ? factory(require('../moment')) :\n typeof define === 'function' && define.amd ? define(['../moment'], factory) :\n factory(global.moment)\n}(this, (function (moment) { 'use strict';\n\n //! moment.js locale configuration\n\n var symbolMap = {\n 1: 'Û±',\n 2: 'Û²',\n 3: 'Û³',\n 4: 'Û´',\n 5: 'Ûµ',\n 6: 'Û¶',\n 7: 'Û·',\n 8: 'Û¸',\n 9: 'Û¹',\n 0: 'Û°',\n },\n numberMap = {\n 'Û±': '1',\n 'Û²': '2',\n 'Û³': '3',\n 'Û´': '4',\n 'Ûµ': '5',\n 'Û¶': '6',\n 'Û·': '7',\n 'Û¸': '8',\n 'Û¹': '9',\n 'Û°': '0',\n };\n\n var fa = moment.defineLocale('fa', {\n months: 'ژانویه_Ùوریه_مارس_آوریل_مه_ژوئن_ژوئیه_اوت_سپتامبر_اکتبر_نوامبر_دسامبر'.split(\n '_'\n ),\n monthsShort:\n 'ژانویه_Ùوریه_مارس_آوریل_مه_ژوئن_ژوئیه_اوت_سپتامبر_اکتبر_نوامبر_دسامبر'.split(\n '_'\n ),\n weekdays:\n 'یک\\u200cشنبه_دوشنبه_سه\\u200cشنبه_چهارشنبه_پنج\\u200cشنبه_جمعه_شنبه'.split(\n '_'\n ),\n weekdaysShort:\n 'یک\\u200cشنبه_دوشنبه_سه\\u200cشنبه_چهارشنبه_پنج\\u200cشنبه_جمعه_شنبه'.split(\n '_'\n ),\n weekdaysMin: 'ÛŒ_د_س_Ú†_Ù¾_ج_Ø´'.split('_'),\n weekdaysParseExact: true,\n longDateFormat: {\n LT: 'HH:mm',\n LTS: 'HH:mm:ss',\n L: 'DD/MM/YYYY',\n LL: 'D MMMM YYYY',\n LLL: 'D MMMM YYYY HH:mm',\n LLLL: 'dddd, D MMMM YYYY HH:mm',\n },\n meridiemParse: /قبل از ظهر|بعد از ظهر/,\n isPM: function (input) {\n return /بعد از ظهر/.test(input);\n },\n meridiem: function (hour, minute, isLower) {\n if (hour < 12) {\n return 'قبل از ظهر';\n } else {\n return 'بعد از ظهر';\n }\n },\n calendar: {\n sameDay: '[امروز ساعت] LT',\n nextDay: '[Ùردا ساعت] LT',\n nextWeek: 'dddd [ساعت] LT',\n lastDay: '[دیروز ساعت] LT',\n lastWeek: 'dddd [پیش] [ساعت] LT',\n sameElse: 'L',\n },\n relativeTime: {\n future: 'در %s',\n past: '%s پیش',\n s: 'چند ثانیه',\n ss: '%d ثانیه',\n m: 'یک دقیقه',\n mm: '%d دقیقه',\n h: 'یک ساعت',\n hh: '%d ساعت',\n d: 'یک روز',\n dd: '%d روز',\n M: 'یک ماه',\n MM: '%d ماه',\n y: 'یک سال',\n yy: '%d سال',\n },\n preparse: function (string) {\n return string\n .replace(/[Û°-Û¹]/g, function (match) {\n return numberMap[match];\n })\n .replace(/ØŒ/g, ',');\n },\n postformat: function (string) {\n return string\n .replace(/\\d/g, function (match) {\n return symbolMap[match];\n })\n .replace(/,/g, 'ØŒ');\n },\n dayOfMonthOrdinalParse: /\\d{1,2}Ù…/,\n ordinal: '%dÙ…',\n week: {\n dow: 6, // Saturday is the first day of the week.\n doy: 12, // The week that contains Jan 12th is the first week of the year.\n },\n });\n\n return fa;\n\n})));\n","//! moment.js locale configuration\n//! locale : Finnish [fi]\n//! author : Tarmo Aidantausta : https://github.com/bleadof\n\n;(function (global, factory) {\n typeof exports === 'object' && typeof module !== 'undefined'\n && typeof require === 'function' ? factory(require('../moment')) :\n typeof define === 'function' && define.amd ? define(['../moment'], factory) :\n factory(global.moment)\n}(this, (function (moment) { 'use strict';\n\n //! moment.js locale configuration\n\n var numbersPast =\n 'nolla yksi kaksi kolme neljä viisi kuusi seitsemän kahdeksan yhdeksän'.split(\n ' '\n ),\n numbersFuture = [\n 'nolla',\n 'yhden',\n 'kahden',\n 'kolmen',\n 'neljän',\n 'viiden',\n 'kuuden',\n numbersPast[7],\n numbersPast[8],\n numbersPast[9],\n ];\n function translate(number, withoutSuffix, key, isFuture) {\n var result = '';\n switch (key) {\n case 's':\n return isFuture ? 'muutaman sekunnin' : 'muutama sekunti';\n case 'ss':\n result = isFuture ? 'sekunnin' : 'sekuntia';\n break;\n case 'm':\n return isFuture ? 'minuutin' : 'minuutti';\n case 'mm':\n result = isFuture ? 'minuutin' : 'minuuttia';\n break;\n case 'h':\n return isFuture ? 'tunnin' : 'tunti';\n case 'hh':\n result = isFuture ? 'tunnin' : 'tuntia';\n break;\n case 'd':\n return isFuture ? 'päivän' : 'päivä';\n case 'dd':\n result = isFuture ? 'päivän' : 'päivää';\n break;\n case 'M':\n return isFuture ? 'kuukauden' : 'kuukausi';\n case 'MM':\n result = isFuture ? 'kuukauden' : 'kuukautta';\n break;\n case 'y':\n return isFuture ? 'vuoden' : 'vuosi';\n case 'yy':\n result = isFuture ? 'vuoden' : 'vuotta';\n break;\n }\n result = verbalNumber(number, isFuture) + ' ' + result;\n return result;\n }\n function verbalNumber(number, isFuture) {\n return number < 10\n ? isFuture\n ? numbersFuture[number]\n : numbersPast[number]\n : number;\n }\n\n var fi = moment.defineLocale('fi', {\n months: 'tammikuu_helmikuu_maaliskuu_huhtikuu_toukokuu_kesäkuu_heinäkuu_elokuu_syyskuu_lokakuu_marraskuu_joulukuu'.split(\n '_'\n ),\n monthsShort:\n 'tammi_helmi_maalis_huhti_touko_kesä_heinä_elo_syys_loka_marras_joulu'.split(\n '_'\n ),\n weekdays:\n 'sunnuntai_maanantai_tiistai_keskiviikko_torstai_perjantai_lauantai'.split(\n '_'\n ),\n weekdaysShort: 'su_ma_ti_ke_to_pe_la'.split('_'),\n weekdaysMin: 'su_ma_ti_ke_to_pe_la'.split('_'),\n longDateFormat: {\n LT: 'HH.mm',\n LTS: 'HH.mm.ss',\n L: 'DD.MM.YYYY',\n LL: 'Do MMMM[ta] YYYY',\n LLL: 'Do MMMM[ta] YYYY, [klo] HH.mm',\n LLLL: 'dddd, Do MMMM[ta] YYYY, [klo] HH.mm',\n l: 'D.M.YYYY',\n ll: 'Do MMM YYYY',\n lll: 'Do MMM YYYY, [klo] HH.mm',\n llll: 'ddd, Do MMM YYYY, [klo] HH.mm',\n },\n calendar: {\n sameDay: '[tänään] [klo] LT',\n nextDay: '[huomenna] [klo] LT',\n nextWeek: 'dddd [klo] LT',\n lastDay: '[eilen] [klo] LT',\n lastWeek: '[viime] dddd[na] [klo] LT',\n sameElse: 'L',\n },\n relativeTime: {\n future: '%s päästä',\n past: '%s sitten',\n s: translate,\n ss: translate,\n m: translate,\n mm: translate,\n h: translate,\n hh: translate,\n d: translate,\n dd: translate,\n M: translate,\n MM: translate,\n y: translate,\n yy: translate,\n },\n dayOfMonthOrdinalParse: /\\d{1,2}\\./,\n ordinal: '%d.',\n week: {\n dow: 1, // Monday is the first day of the week.\n doy: 4, // The week that contains Jan 4th is the first week of the year.\n },\n });\n\n return fi;\n\n})));\n","//! moment.js locale configuration\n//! locale : Filipino [fil]\n//! author : Dan Hagman : https://github.com/hagmandan\n//! author : Matthew Co : https://github.com/matthewdeeco\n\n;(function (global, factory) {\n typeof exports === 'object' && typeof module !== 'undefined'\n && typeof require === 'function' ? factory(require('../moment')) :\n typeof define === 'function' && define.amd ? define(['../moment'], factory) :\n factory(global.moment)\n}(this, (function (moment) { 'use strict';\n\n //! moment.js locale configuration\n\n var fil = moment.defineLocale('fil', {\n months: 'Enero_Pebrero_Marso_Abril_Mayo_Hunyo_Hulyo_Agosto_Setyembre_Oktubre_Nobyembre_Disyembre'.split(\n '_'\n ),\n monthsShort: 'Ene_Peb_Mar_Abr_May_Hun_Hul_Ago_Set_Okt_Nob_Dis'.split('_'),\n weekdays: 'Linggo_Lunes_Martes_Miyerkules_Huwebes_Biyernes_Sabado'.split(\n '_'\n ),\n weekdaysShort: 'Lin_Lun_Mar_Miy_Huw_Biy_Sab'.split('_'),\n weekdaysMin: 'Li_Lu_Ma_Mi_Hu_Bi_Sab'.split('_'),\n longDateFormat: {\n LT: 'HH:mm',\n LTS: 'HH:mm:ss',\n L: 'MM/D/YYYY',\n LL: 'MMMM D, YYYY',\n LLL: 'MMMM D, YYYY HH:mm',\n LLLL: 'dddd, MMMM DD, YYYY HH:mm',\n },\n calendar: {\n sameDay: 'LT [ngayong araw]',\n nextDay: '[Bukas ng] LT',\n nextWeek: 'LT [sa susunod na] dddd',\n lastDay: 'LT [kahapon]',\n lastWeek: 'LT [noong nakaraang] dddd',\n sameElse: 'L',\n },\n relativeTime: {\n future: 'sa loob ng %s',\n past: '%s ang nakalipas',\n s: 'ilang segundo',\n ss: '%d segundo',\n m: 'isang minuto',\n mm: '%d minuto',\n h: 'isang oras',\n hh: '%d oras',\n d: 'isang araw',\n dd: '%d araw',\n M: 'isang buwan',\n MM: '%d buwan',\n y: 'isang taon',\n yy: '%d taon',\n },\n dayOfMonthOrdinalParse: /\\d{1,2}/,\n ordinal: function (number) {\n return number;\n },\n week: {\n dow: 1, // Monday is the first day of the week.\n doy: 4, // The week that contains Jan 4th is the first week of the year.\n },\n });\n\n return fil;\n\n})));\n","//! moment.js locale configuration\n//! locale : Faroese [fo]\n//! author : Ragnar Johannesen : https://github.com/ragnar123\n//! author : Kristian Sakarisson : https://github.com/sakarisson\n\n;(function (global, factory) {\n typeof exports === 'object' && typeof module !== 'undefined'\n && typeof require === 'function' ? factory(require('../moment')) :\n typeof define === 'function' && define.amd ? define(['../moment'], factory) :\n factory(global.moment)\n}(this, (function (moment) { 'use strict';\n\n //! moment.js locale configuration\n\n var fo = moment.defineLocale('fo', {\n months: 'januar_februar_mars_aprÃl_mai_juni_juli_august_september_oktober_november_desember'.split(\n '_'\n ),\n monthsShort: 'jan_feb_mar_apr_mai_jun_jul_aug_sep_okt_nov_des'.split('_'),\n weekdays:\n 'sunnudagur_mánadagur_týsdagur_mikudagur_hósdagur_frÃggjadagur_leygardagur'.split(\n '_'\n ),\n weekdaysShort: 'sun_mán_týs_mik_hós_frÃ_ley'.split('_'),\n weekdaysMin: 'su_má_tý_mi_hó_fr_le'.split('_'),\n longDateFormat: {\n LT: 'HH:mm',\n LTS: 'HH:mm:ss',\n L: 'DD/MM/YYYY',\n LL: 'D MMMM YYYY',\n LLL: 'D MMMM YYYY HH:mm',\n LLLL: 'dddd D. MMMM, YYYY HH:mm',\n },\n calendar: {\n sameDay: '[à dag kl.] LT',\n nextDay: '[à morgin kl.] LT',\n nextWeek: 'dddd [kl.] LT',\n lastDay: '[à gjár kl.] LT',\n lastWeek: '[sÃðstu] dddd [kl] LT',\n sameElse: 'L',\n },\n relativeTime: {\n future: 'um %s',\n past: '%s sÃðani',\n s: 'fá sekund',\n ss: '%d sekundir',\n m: 'ein minuttur',\n mm: '%d minuttir',\n h: 'ein tÃmi',\n hh: '%d tÃmar',\n d: 'ein dagur',\n dd: '%d dagar',\n M: 'ein mánaður',\n MM: '%d mánaðir',\n y: 'eitt ár',\n yy: '%d ár',\n },\n dayOfMonthOrdinalParse: /\\d{1,2}\\./,\n ordinal: '%d.',\n week: {\n dow: 1, // Monday is the first day of the week.\n doy: 4, // The week that contains Jan 4th is the first week of the year.\n },\n });\n\n return fo;\n\n})));\n","//! moment.js locale configuration\n//! locale : French [fr]\n//! author : John Fischer : https://github.com/jfroffice\n\n;(function (global, factory) {\n typeof exports === 'object' && typeof module !== 'undefined'\n && typeof require === 'function' ? factory(require('../moment')) :\n typeof define === 'function' && define.amd ? define(['../moment'], factory) :\n factory(global.moment)\n}(this, (function (moment) { 'use strict';\n\n //! moment.js locale configuration\n\n var monthsStrictRegex =\n /^(janvier|février|mars|avril|mai|juin|juillet|août|septembre|octobre|novembre|décembre)/i,\n monthsShortStrictRegex =\n /(janv\\.?|févr\\.?|mars|avr\\.?|mai|juin|juil\\.?|août|sept\\.?|oct\\.?|nov\\.?|déc\\.?)/i,\n monthsRegex =\n /(janv\\.?|févr\\.?|mars|avr\\.?|mai|juin|juil\\.?|août|sept\\.?|oct\\.?|nov\\.?|déc\\.?|janvier|février|mars|avril|mai|juin|juillet|août|septembre|octobre|novembre|décembre)/i,\n monthsParse = [\n /^janv/i,\n /^févr/i,\n /^mars/i,\n /^avr/i,\n /^mai/i,\n /^juin/i,\n /^juil/i,\n /^août/i,\n /^sept/i,\n /^oct/i,\n /^nov/i,\n /^déc/i,\n ];\n\n var fr = moment.defineLocale('fr', {\n months: 'janvier_février_mars_avril_mai_juin_juillet_août_septembre_octobre_novembre_décembre'.split(\n '_'\n ),\n monthsShort:\n 'janv._févr._mars_avr._mai_juin_juil._août_sept._oct._nov._déc.'.split(\n '_'\n ),\n monthsRegex: monthsRegex,\n monthsShortRegex: monthsRegex,\n monthsStrictRegex: monthsStrictRegex,\n monthsShortStrictRegex: monthsShortStrictRegex,\n monthsParse: monthsParse,\n longMonthsParse: monthsParse,\n shortMonthsParse: monthsParse,\n weekdays: 'dimanche_lundi_mardi_mercredi_jeudi_vendredi_samedi'.split('_'),\n weekdaysShort: 'dim._lun._mar._mer._jeu._ven._sam.'.split('_'),\n weekdaysMin: 'di_lu_ma_me_je_ve_sa'.split('_'),\n weekdaysParseExact: true,\n longDateFormat: {\n LT: 'HH:mm',\n LTS: 'HH:mm:ss',\n L: 'DD/MM/YYYY',\n LL: 'D MMMM YYYY',\n LLL: 'D MMMM YYYY HH:mm',\n LLLL: 'dddd D MMMM YYYY HH:mm',\n },\n calendar: {\n sameDay: '[Aujourd’hui à ] LT',\n nextDay: '[Demain à ] LT',\n nextWeek: 'dddd [à ] LT',\n lastDay: '[Hier à ] LT',\n lastWeek: 'dddd [dernier à ] LT',\n sameElse: 'L',\n },\n relativeTime: {\n future: 'dans %s',\n past: 'il y a %s',\n s: 'quelques secondes',\n ss: '%d secondes',\n m: 'une minute',\n mm: '%d minutes',\n h: 'une heure',\n hh: '%d heures',\n d: 'un jour',\n dd: '%d jours',\n w: 'une semaine',\n ww: '%d semaines',\n M: 'un mois',\n MM: '%d mois',\n y: 'un an',\n yy: '%d ans',\n },\n dayOfMonthOrdinalParse: /\\d{1,2}(er|)/,\n ordinal: function (number, period) {\n switch (period) {\n // TODO: Return 'e' when day of month > 1. Move this case inside\n // block for masculine words below.\n // See https://github.com/moment/moment/issues/3375\n case 'D':\n return number + (number === 1 ? 'er' : '');\n\n // Words with masculine grammatical gender: mois, trimestre, jour\n default:\n case 'M':\n case 'Q':\n case 'DDD':\n case 'd':\n return number + (number === 1 ? 'er' : 'e');\n\n // Words with feminine grammatical gender: semaine\n case 'w':\n case 'W':\n return number + (number === 1 ? 're' : 'e');\n }\n },\n week: {\n dow: 1, // Monday is the first day of the week.\n doy: 4, // The week that contains Jan 4th is the first week of the year.\n },\n });\n\n return fr;\n\n})));\n","//! moment.js locale configuration\n//! locale : French (Canada) [fr-ca]\n//! author : Jonathan Abourbih : https://github.com/jonbca\n\n;(function (global, factory) {\n typeof exports === 'object' && typeof module !== 'undefined'\n && typeof require === 'function' ? factory(require('../moment')) :\n typeof define === 'function' && define.amd ? define(['../moment'], factory) :\n factory(global.moment)\n}(this, (function (moment) { 'use strict';\n\n //! moment.js locale configuration\n\n var frCa = moment.defineLocale('fr-ca', {\n months: 'janvier_février_mars_avril_mai_juin_juillet_août_septembre_octobre_novembre_décembre'.split(\n '_'\n ),\n monthsShort:\n 'janv._févr._mars_avr._mai_juin_juil._août_sept._oct._nov._déc.'.split(\n '_'\n ),\n monthsParseExact: true,\n weekdays: 'dimanche_lundi_mardi_mercredi_jeudi_vendredi_samedi'.split('_'),\n weekdaysShort: 'dim._lun._mar._mer._jeu._ven._sam.'.split('_'),\n weekdaysMin: 'di_lu_ma_me_je_ve_sa'.split('_'),\n weekdaysParseExact: true,\n longDateFormat: {\n LT: 'HH:mm',\n LTS: 'HH:mm:ss',\n L: 'YYYY-MM-DD',\n LL: 'D MMMM YYYY',\n LLL: 'D MMMM YYYY HH:mm',\n LLLL: 'dddd D MMMM YYYY HH:mm',\n },\n calendar: {\n sameDay: '[Aujourd’hui à ] LT',\n nextDay: '[Demain à ] LT',\n nextWeek: 'dddd [à ] LT',\n lastDay: '[Hier à ] LT',\n lastWeek: 'dddd [dernier à ] LT',\n sameElse: 'L',\n },\n relativeTime: {\n future: 'dans %s',\n past: 'il y a %s',\n s: 'quelques secondes',\n ss: '%d secondes',\n m: 'une minute',\n mm: '%d minutes',\n h: 'une heure',\n hh: '%d heures',\n d: 'un jour',\n dd: '%d jours',\n M: 'un mois',\n MM: '%d mois',\n y: 'un an',\n yy: '%d ans',\n },\n dayOfMonthOrdinalParse: /\\d{1,2}(er|e)/,\n ordinal: function (number, period) {\n switch (period) {\n // Words with masculine grammatical gender: mois, trimestre, jour\n default:\n case 'M':\n case 'Q':\n case 'D':\n case 'DDD':\n case 'd':\n return number + (number === 1 ? 'er' : 'e');\n\n // Words with feminine grammatical gender: semaine\n case 'w':\n case 'W':\n return number + (number === 1 ? 're' : 'e');\n }\n },\n });\n\n return frCa;\n\n})));\n","//! moment.js locale configuration\n//! locale : French (Switzerland) [fr-ch]\n//! author : Gaspard Bucher : https://github.com/gaspard\n\n;(function (global, factory) {\n typeof exports === 'object' && typeof module !== 'undefined'\n && typeof require === 'function' ? factory(require('../moment')) :\n typeof define === 'function' && define.amd ? define(['../moment'], factory) :\n factory(global.moment)\n}(this, (function (moment) { 'use strict';\n\n //! moment.js locale configuration\n\n var frCh = moment.defineLocale('fr-ch', {\n months: 'janvier_février_mars_avril_mai_juin_juillet_août_septembre_octobre_novembre_décembre'.split(\n '_'\n ),\n monthsShort:\n 'janv._févr._mars_avr._mai_juin_juil._août_sept._oct._nov._déc.'.split(\n '_'\n ),\n monthsParseExact: true,\n weekdays: 'dimanche_lundi_mardi_mercredi_jeudi_vendredi_samedi'.split('_'),\n weekdaysShort: 'dim._lun._mar._mer._jeu._ven._sam.'.split('_'),\n weekdaysMin: 'di_lu_ma_me_je_ve_sa'.split('_'),\n weekdaysParseExact: true,\n longDateFormat: {\n LT: 'HH:mm',\n LTS: 'HH:mm:ss',\n L: 'DD.MM.YYYY',\n LL: 'D MMMM YYYY',\n LLL: 'D MMMM YYYY HH:mm',\n LLLL: 'dddd D MMMM YYYY HH:mm',\n },\n calendar: {\n sameDay: '[Aujourd’hui à ] LT',\n nextDay: '[Demain à ] LT',\n nextWeek: 'dddd [à ] LT',\n lastDay: '[Hier à ] LT',\n lastWeek: 'dddd [dernier à ] LT',\n sameElse: 'L',\n },\n relativeTime: {\n future: 'dans %s',\n past: 'il y a %s',\n s: 'quelques secondes',\n ss: '%d secondes',\n m: 'une minute',\n mm: '%d minutes',\n h: 'une heure',\n hh: '%d heures',\n d: 'un jour',\n dd: '%d jours',\n M: 'un mois',\n MM: '%d mois',\n y: 'un an',\n yy: '%d ans',\n },\n dayOfMonthOrdinalParse: /\\d{1,2}(er|e)/,\n ordinal: function (number, period) {\n switch (period) {\n // Words with masculine grammatical gender: mois, trimestre, jour\n default:\n case 'M':\n case 'Q':\n case 'D':\n case 'DDD':\n case 'd':\n return number + (number === 1 ? 'er' : 'e');\n\n // Words with feminine grammatical gender: semaine\n case 'w':\n case 'W':\n return number + (number === 1 ? 're' : 'e');\n }\n },\n week: {\n dow: 1, // Monday is the first day of the week.\n doy: 4, // The week that contains Jan 4th is the first week of the year.\n },\n });\n\n return frCh;\n\n})));\n","//! moment.js locale configuration\n//! locale : Frisian [fy]\n//! author : Robin van der Vliet : https://github.com/robin0van0der0v\n\n;(function (global, factory) {\n typeof exports === 'object' && typeof module !== 'undefined'\n && typeof require === 'function' ? factory(require('../moment')) :\n typeof define === 'function' && define.amd ? define(['../moment'], factory) :\n factory(global.moment)\n}(this, (function (moment) { 'use strict';\n\n //! moment.js locale configuration\n\n var monthsShortWithDots =\n 'jan._feb._mrt._apr._mai_jun._jul._aug._sep._okt._nov._des.'.split('_'),\n monthsShortWithoutDots =\n 'jan_feb_mrt_apr_mai_jun_jul_aug_sep_okt_nov_des'.split('_');\n\n var fy = moment.defineLocale('fy', {\n months: 'jannewaris_febrewaris_maart_april_maaie_juny_july_augustus_septimber_oktober_novimber_desimber'.split(\n '_'\n ),\n monthsShort: function (m, format) {\n if (!m) {\n return monthsShortWithDots;\n } else if (/-MMM-/.test(format)) {\n return monthsShortWithoutDots[m.month()];\n } else {\n return monthsShortWithDots[m.month()];\n }\n },\n monthsParseExact: true,\n weekdays: 'snein_moandei_tiisdei_woansdei_tongersdei_freed_sneon'.split(\n '_'\n ),\n weekdaysShort: 'si._mo._ti._wo._to._fr._so.'.split('_'),\n weekdaysMin: 'Si_Mo_Ti_Wo_To_Fr_So'.split('_'),\n weekdaysParseExact: true,\n longDateFormat: {\n LT: 'HH:mm',\n LTS: 'HH:mm:ss',\n L: 'DD-MM-YYYY',\n LL: 'D MMMM YYYY',\n LLL: 'D MMMM YYYY HH:mm',\n LLLL: 'dddd D MMMM YYYY HH:mm',\n },\n calendar: {\n sameDay: '[hjoed om] LT',\n nextDay: '[moarn om] LT',\n nextWeek: 'dddd [om] LT',\n lastDay: '[juster om] LT',\n lastWeek: '[ôfrûne] dddd [om] LT',\n sameElse: 'L',\n },\n relativeTime: {\n future: 'oer %s',\n past: '%s lyn',\n s: 'in pear sekonden',\n ss: '%d sekonden',\n m: 'ien minút',\n mm: '%d minuten',\n h: 'ien oere',\n hh: '%d oeren',\n d: 'ien dei',\n dd: '%d dagen',\n M: 'ien moanne',\n MM: '%d moannen',\n y: 'ien jier',\n yy: '%d jierren',\n },\n dayOfMonthOrdinalParse: /\\d{1,2}(ste|de)/,\n ordinal: function (number) {\n return (\n number +\n (number === 1 || number === 8 || number >= 20 ? 'ste' : 'de')\n );\n },\n week: {\n dow: 1, // Monday is the first day of the week.\n doy: 4, // The week that contains Jan 4th is the first week of the year.\n },\n });\n\n return fy;\n\n})));\n","//! moment.js locale configuration\n//! locale : Irish or Irish Gaelic [ga]\n//! author : André Silva : https://github.com/askpt\n\n;(function (global, factory) {\n typeof exports === 'object' && typeof module !== 'undefined'\n && typeof require === 'function' ? factory(require('../moment')) :\n typeof define === 'function' && define.amd ? define(['../moment'], factory) :\n factory(global.moment)\n}(this, (function (moment) { 'use strict';\n\n //! moment.js locale configuration\n\n var months = [\n 'Eanáir',\n 'Feabhra',\n 'Márta',\n 'Aibreán',\n 'Bealtaine',\n 'Meitheamh',\n 'Iúil',\n 'Lúnasa',\n 'Meán Fómhair',\n 'Deireadh Fómhair',\n 'Samhain',\n 'Nollaig',\n ],\n monthsShort = [\n 'Ean',\n 'Feabh',\n 'Márt',\n 'Aib',\n 'Beal',\n 'Meith',\n 'Iúil',\n 'Lún',\n 'M.F.',\n 'D.F.',\n 'Samh',\n 'Noll',\n ],\n weekdays = [\n 'Dé Domhnaigh',\n 'Dé Luain',\n 'Dé Máirt',\n 'Dé Céadaoin',\n 'Déardaoin',\n 'Dé hAoine',\n 'Dé Sathairn',\n ],\n weekdaysShort = ['Domh', 'Luan', 'Máirt', 'Céad', 'Déar', 'Aoine', 'Sath'],\n weekdaysMin = ['Do', 'Lu', 'Má', 'Cé', 'Dé', 'A', 'Sa'];\n\n var ga = moment.defineLocale('ga', {\n months: months,\n monthsShort: monthsShort,\n monthsParseExact: true,\n weekdays: weekdays,\n weekdaysShort: weekdaysShort,\n weekdaysMin: weekdaysMin,\n longDateFormat: {\n LT: 'HH:mm',\n LTS: 'HH:mm:ss',\n L: 'DD/MM/YYYY',\n LL: 'D MMMM YYYY',\n LLL: 'D MMMM YYYY HH:mm',\n LLLL: 'dddd, D MMMM YYYY HH:mm',\n },\n calendar: {\n sameDay: '[Inniu ag] LT',\n nextDay: '[Amárach ag] LT',\n nextWeek: 'dddd [ag] LT',\n lastDay: '[Inné ag] LT',\n lastWeek: 'dddd [seo caite] [ag] LT',\n sameElse: 'L',\n },\n relativeTime: {\n future: 'i %s',\n past: '%s ó shin',\n s: 'cúpla soicind',\n ss: '%d soicind',\n m: 'nóiméad',\n mm: '%d nóiméad',\n h: 'uair an chloig',\n hh: '%d uair an chloig',\n d: 'lá',\n dd: '%d lá',\n M: 'mÃ',\n MM: '%d mÃonna',\n y: 'bliain',\n yy: '%d bliain',\n },\n dayOfMonthOrdinalParse: /\\d{1,2}(d|na|mh)/,\n ordinal: function (number) {\n var output = number === 1 ? 'd' : number % 10 === 2 ? 'na' : 'mh';\n return number + output;\n },\n week: {\n dow: 1, // Monday is the first day of the week.\n doy: 4, // The week that contains Jan 4th is the first week of the year.\n },\n });\n\n return ga;\n\n})));\n","//! moment.js locale configuration\n//! locale : Scottish Gaelic [gd]\n//! author : Jon Ashdown : https://github.com/jonashdown\n\n;(function (global, factory) {\n typeof exports === 'object' && typeof module !== 'undefined'\n && typeof require === 'function' ? factory(require('../moment')) :\n typeof define === 'function' && define.amd ? define(['../moment'], factory) :\n factory(global.moment)\n}(this, (function (moment) { 'use strict';\n\n //! moment.js locale configuration\n\n var months = [\n 'Am Faoilleach',\n 'An Gearran',\n 'Am Mà rt',\n 'An Giblean',\n 'An Cèitean',\n 'An t-Ã’gmhios',\n 'An t-Iuchar',\n 'An Lùnastal',\n 'An t-Sultain',\n 'An Dà mhair',\n 'An t-Samhain',\n 'An Dùbhlachd',\n ],\n monthsShort = [\n 'Faoi',\n 'Gear',\n 'Mà rt',\n 'Gibl',\n 'Cèit',\n 'Ã’gmh',\n 'Iuch',\n 'Lùn',\n 'Sult',\n 'Dà mh',\n 'Samh',\n 'Dùbh',\n ],\n weekdays = [\n 'Didòmhnaich',\n 'Diluain',\n 'Dimà irt',\n 'Diciadain',\n 'Diardaoin',\n 'Dihaoine',\n 'Disathairne',\n ],\n weekdaysShort = ['Did', 'Dil', 'Dim', 'Dic', 'Dia', 'Dih', 'Dis'],\n weekdaysMin = ['Dò', 'Lu', 'Mà ', 'Ci', 'Ar', 'Ha', 'Sa'];\n\n var gd = moment.defineLocale('gd', {\n months: months,\n monthsShort: monthsShort,\n monthsParseExact: true,\n weekdays: weekdays,\n weekdaysShort: weekdaysShort,\n weekdaysMin: weekdaysMin,\n longDateFormat: {\n LT: 'HH:mm',\n LTS: 'HH:mm:ss',\n L: 'DD/MM/YYYY',\n LL: 'D MMMM YYYY',\n LLL: 'D MMMM YYYY HH:mm',\n LLLL: 'dddd, D MMMM YYYY HH:mm',\n },\n calendar: {\n sameDay: '[An-diugh aig] LT',\n nextDay: '[A-mà ireach aig] LT',\n nextWeek: 'dddd [aig] LT',\n lastDay: '[An-dè aig] LT',\n lastWeek: 'dddd [seo chaidh] [aig] LT',\n sameElse: 'L',\n },\n relativeTime: {\n future: 'ann an %s',\n past: 'bho chionn %s',\n s: 'beagan diogan',\n ss: '%d diogan',\n m: 'mionaid',\n mm: '%d mionaidean',\n h: 'uair',\n hh: '%d uairean',\n d: 'latha',\n dd: '%d latha',\n M: 'mìos',\n MM: '%d mìosan',\n y: 'bliadhna',\n yy: '%d bliadhna',\n },\n dayOfMonthOrdinalParse: /\\d{1,2}(d|na|mh)/,\n ordinal: function (number) {\n var output = number === 1 ? 'd' : number % 10 === 2 ? 'na' : 'mh';\n return number + output;\n },\n week: {\n dow: 1, // Monday is the first day of the week.\n doy: 4, // The week that contains Jan 4th is the first week of the year.\n },\n });\n\n return gd;\n\n})));\n","//! moment.js locale configuration\n//! locale : Galician [gl]\n//! author : Juan G. Hurtado : https://github.com/juanghurtado\n\n;(function (global, factory) {\n typeof exports === 'object' && typeof module !== 'undefined'\n && typeof require === 'function' ? factory(require('../moment')) :\n typeof define === 'function' && define.amd ? define(['../moment'], factory) :\n factory(global.moment)\n}(this, (function (moment) { 'use strict';\n\n //! moment.js locale configuration\n\n var gl = moment.defineLocale('gl', {\n months: 'xaneiro_febreiro_marzo_abril_maio_xuño_xullo_agosto_setembro_outubro_novembro_decembro'.split(\n '_'\n ),\n monthsShort:\n 'xan._feb._mar._abr._mai._xuñ._xul._ago._set._out._nov._dec.'.split(\n '_'\n ),\n monthsParseExact: true,\n weekdays: 'domingo_luns_martes_mércores_xoves_venres_sábado'.split('_'),\n weekdaysShort: 'dom._lun._mar._mér._xov._ven._sáb.'.split('_'),\n weekdaysMin: 'do_lu_ma_mé_xo_ve_sá'.split('_'),\n weekdaysParseExact: true,\n longDateFormat: {\n LT: 'H:mm',\n LTS: 'H:mm:ss',\n L: 'DD/MM/YYYY',\n LL: 'D [de] MMMM [de] YYYY',\n LLL: 'D [de] MMMM [de] YYYY H:mm',\n LLLL: 'dddd, D [de] MMMM [de] YYYY H:mm',\n },\n calendar: {\n sameDay: function () {\n return '[hoxe ' + (this.hours() !== 1 ? 'ás' : 'á') + '] LT';\n },\n nextDay: function () {\n return '[mañá ' + (this.hours() !== 1 ? 'ás' : 'á') + '] LT';\n },\n nextWeek: function () {\n return 'dddd [' + (this.hours() !== 1 ? 'ás' : 'a') + '] LT';\n },\n lastDay: function () {\n return '[onte ' + (this.hours() !== 1 ? 'á' : 'a') + '] LT';\n },\n lastWeek: function () {\n return (\n '[o] dddd [pasado ' + (this.hours() !== 1 ? 'ás' : 'a') + '] LT'\n );\n },\n sameElse: 'L',\n },\n relativeTime: {\n future: function (str) {\n if (str.indexOf('un') === 0) {\n return 'n' + str;\n }\n return 'en ' + str;\n },\n past: 'hai %s',\n s: 'uns segundos',\n ss: '%d segundos',\n m: 'un minuto',\n mm: '%d minutos',\n h: 'unha hora',\n hh: '%d horas',\n d: 'un dÃa',\n dd: '%d dÃas',\n M: 'un mes',\n MM: '%d meses',\n y: 'un ano',\n yy: '%d anos',\n },\n dayOfMonthOrdinalParse: /\\d{1,2}º/,\n ordinal: '%dº',\n week: {\n dow: 1, // Monday is the first day of the week.\n doy: 4, // The week that contains Jan 4th is the first week of the year.\n },\n });\n\n return gl;\n\n})));\n","//! moment.js locale configuration\n//! locale : Konkani Devanagari script [gom-deva]\n//! author : The Discoverer : https://github.com/WikiDiscoverer\n\n;(function (global, factory) {\n typeof exports === 'object' && typeof module !== 'undefined'\n && typeof require === 'function' ? factory(require('../moment')) :\n typeof define === 'function' && define.amd ? define(['../moment'], factory) :\n factory(global.moment)\n}(this, (function (moment) { 'use strict';\n\n //! moment.js locale configuration\n\n function processRelativeTime(number, withoutSuffix, key, isFuture) {\n var format = {\n s: ['थोडया सॅकंडांनी', 'थोडे सॅकंड'],\n ss: [number + ' सॅकंडांनी', number + ' सॅकंड'],\n m: ['à¤à¤•à¤¾ मिणटान', 'à¤à¤• मिनूट'],\n mm: [number + ' मिणटांनी', number + ' मिणटां'],\n h: ['à¤à¤•à¤¾ वरान', 'à¤à¤• वर'],\n hh: [number + ' वरांनी', number + ' वरां'],\n d: ['à¤à¤•à¤¾ दिसान', 'à¤à¤• दीस'],\n dd: [number + ' दिसांनी', number + ' दीस'],\n M: ['à¤à¤•à¤¾ मà¥à¤¹à¤¯à¤¨à¥à¤¯à¤¾à¤¨', 'à¤à¤• मà¥à¤¹à¤¯à¤¨à¥‹'],\n MM: [number + ' मà¥à¤¹à¤¯à¤¨à¥à¤¯à¤¾à¤¨à¥€', number + ' मà¥à¤¹à¤¯à¤¨à¥‡'],\n y: ['à¤à¤•à¤¾ वरà¥à¤¸à¤¾à¤¨', 'à¤à¤• वरà¥à¤¸'],\n yy: [number + ' वरà¥à¤¸à¤¾à¤‚नी', number + ' वरà¥à¤¸à¤¾à¤‚'],\n };\n return isFuture ? format[key][0] : format[key][1];\n }\n\n var gomDeva = moment.defineLocale('gom-deva', {\n months: {\n standalone:\n 'जानेवारी_फेबà¥à¤°à¥à¤µà¤¾à¤°à¥€_मारà¥à¤š_à¤à¤ªà¥à¤°à¥€à¤²_मे_जून_जà¥à¤²à¤¯_ऑगसà¥à¤Ÿ_सपà¥à¤Ÿà¥‡à¤‚बर_ऑकà¥à¤Ÿà¥‹à¤¬à¤°_नोवà¥à¤¹à¥‡à¤‚बर_डिसेंबर'.split(\n '_'\n ),\n format: 'जानेवारीचà¥à¤¯à¤¾_फेबà¥à¤°à¥à¤µà¤¾à¤°à¥€à¤šà¥à¤¯à¤¾_मारà¥à¤šà¤¾à¤šà¥à¤¯à¤¾_à¤à¤ªà¥à¤°à¥€à¤²à¤¾à¤šà¥à¤¯à¤¾_मेयाचà¥à¤¯à¤¾_जूनाचà¥à¤¯à¤¾_जà¥à¤²à¤¯à¤¾à¤šà¥à¤¯à¤¾_ऑगसà¥à¤Ÿà¤¾à¤šà¥à¤¯à¤¾_सपà¥à¤Ÿà¥‡à¤‚बराचà¥à¤¯à¤¾_ऑकà¥à¤Ÿà¥‹à¤¬à¤°à¤¾à¤šà¥à¤¯à¤¾_नोवà¥à¤¹à¥‡à¤‚बराचà¥à¤¯à¤¾_डिसेंबराचà¥à¤¯à¤¾'.split(\n '_'\n ),\n isFormat: /MMMM(\\s)+D[oD]?/,\n },\n monthsShort:\n 'जाने._फेबà¥à¤°à¥._मारà¥à¤š_à¤à¤ªà¥à¤°à¥€._मे_जून_जà¥à¤²._ऑग._सपà¥à¤Ÿà¥‡à¤‚._ऑकà¥à¤Ÿà¥‹._नोवà¥à¤¹à¥‡à¤‚._डिसें.'.split(\n '_'\n ),\n monthsParseExact: true,\n weekdays: 'आयतार_सोमार_मंगळार_बà¥à¤§à¤µà¤¾à¤°_बिरेसà¥à¤¤à¤¾à¤°_सà¥à¤•à¥à¤°à¤¾à¤°_शेनवार'.split('_'),\n weekdaysShort: 'आयत._सोम._मंगळ._बà¥à¤§._बà¥à¤°à¥‡à¤¸à¥à¤¤._सà¥à¤•à¥à¤°._शेन.'.split('_'),\n weekdaysMin: 'आ_सो_मं_बà¥_बà¥à¤°à¥‡_सà¥_शे'.split('_'),\n weekdaysParseExact: true,\n longDateFormat: {\n LT: 'A h:mm [वाजतां]',\n LTS: 'A h:mm:ss [वाजतां]',\n L: 'DD-MM-YYYY',\n LL: 'D MMMM YYYY',\n LLL: 'D MMMM YYYY A h:mm [वाजतां]',\n LLLL: 'dddd, MMMM Do, YYYY, A h:mm [वाजतां]',\n llll: 'ddd, D MMM YYYY, A h:mm [वाजतां]',\n },\n calendar: {\n sameDay: '[आयज] LT',\n nextDay: '[फालà¥à¤¯à¤¾à¤‚] LT',\n nextWeek: '[फà¥à¤¡à¤²à¥‹] dddd[,] LT',\n lastDay: '[काल] LT',\n lastWeek: '[फाटलो] dddd[,] LT',\n sameElse: 'L',\n },\n relativeTime: {\n future: '%s',\n past: '%s आदीं',\n s: processRelativeTime,\n ss: processRelativeTime,\n m: processRelativeTime,\n mm: processRelativeTime,\n h: processRelativeTime,\n hh: processRelativeTime,\n d: processRelativeTime,\n dd: processRelativeTime,\n M: processRelativeTime,\n MM: processRelativeTime,\n y: processRelativeTime,\n yy: processRelativeTime,\n },\n dayOfMonthOrdinalParse: /\\d{1,2}(वेर)/,\n ordinal: function (number, period) {\n switch (period) {\n // the ordinal 'वेर' only applies to day of the month\n case 'D':\n return number + 'वेर';\n default:\n case 'M':\n case 'Q':\n case 'DDD':\n case 'd':\n case 'w':\n case 'W':\n return number;\n }\n },\n week: {\n dow: 0, // Sunday is the first day of the week\n doy: 3, // The week that contains Jan 4th is the first week of the year (7 + 0 - 4)\n },\n meridiemParse: /राती|सकाळीं|दनपारां|सांजे/,\n meridiemHour: function (hour, meridiem) {\n if (hour === 12) {\n hour = 0;\n }\n if (meridiem === 'राती') {\n return hour < 4 ? hour : hour + 12;\n } else if (meridiem === 'सकाळीं') {\n return hour;\n } else if (meridiem === 'दनपारां') {\n return hour > 12 ? hour : hour + 12;\n } else if (meridiem === 'सांजे') {\n return hour + 12;\n }\n },\n meridiem: function (hour, minute, isLower) {\n if (hour < 4) {\n return 'राती';\n } else if (hour < 12) {\n return 'सकाळीं';\n } else if (hour < 16) {\n return 'दनपारां';\n } else if (hour < 20) {\n return 'सांजे';\n } else {\n return 'राती';\n }\n },\n });\n\n return gomDeva;\n\n})));\n","//! moment.js locale configuration\n//! locale : Konkani Latin script [gom-latn]\n//! author : The Discoverer : https://github.com/WikiDiscoverer\n\n;(function (global, factory) {\n typeof exports === 'object' && typeof module !== 'undefined'\n && typeof require === 'function' ? factory(require('../moment')) :\n typeof define === 'function' && define.amd ? define(['../moment'], factory) :\n factory(global.moment)\n}(this, (function (moment) { 'use strict';\n\n //! moment.js locale configuration\n\n function processRelativeTime(number, withoutSuffix, key, isFuture) {\n var format = {\n s: ['thoddea sekondamni', 'thodde sekond'],\n ss: [number + ' sekondamni', number + ' sekond'],\n m: ['eka mintan', 'ek minut'],\n mm: [number + ' mintamni', number + ' mintam'],\n h: ['eka voran', 'ek vor'],\n hh: [number + ' voramni', number + ' voram'],\n d: ['eka disan', 'ek dis'],\n dd: [number + ' disamni', number + ' dis'],\n M: ['eka mhoinean', 'ek mhoino'],\n MM: [number + ' mhoineamni', number + ' mhoine'],\n y: ['eka vorsan', 'ek voros'],\n yy: [number + ' vorsamni', number + ' vorsam'],\n };\n return isFuture ? format[key][0] : format[key][1];\n }\n\n var gomLatn = moment.defineLocale('gom-latn', {\n months: {\n standalone:\n 'Janer_Febrer_Mars_Abril_Mai_Jun_Julai_Agost_Setembr_Otubr_Novembr_Dezembr'.split(\n '_'\n ),\n format: 'Janerachea_Febrerachea_Marsachea_Abrilachea_Maiachea_Junachea_Julaiachea_Agostachea_Setembrachea_Otubrachea_Novembrachea_Dezembrachea'.split(\n '_'\n ),\n isFormat: /MMMM(\\s)+D[oD]?/,\n },\n monthsShort:\n 'Jan._Feb._Mars_Abr._Mai_Jun_Jul._Ago._Set._Otu._Nov._Dez.'.split('_'),\n monthsParseExact: true,\n weekdays: \"Aitar_Somar_Mongllar_Budhvar_Birestar_Sukrar_Son'var\".split('_'),\n weekdaysShort: 'Ait._Som._Mon._Bud._Bre._Suk._Son.'.split('_'),\n weekdaysMin: 'Ai_Sm_Mo_Bu_Br_Su_Sn'.split('_'),\n weekdaysParseExact: true,\n longDateFormat: {\n LT: 'A h:mm [vazta]',\n LTS: 'A h:mm:ss [vazta]',\n L: 'DD-MM-YYYY',\n LL: 'D MMMM YYYY',\n LLL: 'D MMMM YYYY A h:mm [vazta]',\n LLLL: 'dddd, MMMM Do, YYYY, A h:mm [vazta]',\n llll: 'ddd, D MMM YYYY, A h:mm [vazta]',\n },\n calendar: {\n sameDay: '[Aiz] LT',\n nextDay: '[Faleam] LT',\n nextWeek: '[Fuddlo] dddd[,] LT',\n lastDay: '[Kal] LT',\n lastWeek: '[Fattlo] dddd[,] LT',\n sameElse: 'L',\n },\n relativeTime: {\n future: '%s',\n past: '%s adim',\n s: processRelativeTime,\n ss: processRelativeTime,\n m: processRelativeTime,\n mm: processRelativeTime,\n h: processRelativeTime,\n hh: processRelativeTime,\n d: processRelativeTime,\n dd: processRelativeTime,\n M: processRelativeTime,\n MM: processRelativeTime,\n y: processRelativeTime,\n yy: processRelativeTime,\n },\n dayOfMonthOrdinalParse: /\\d{1,2}(er)/,\n ordinal: function (number, period) {\n switch (period) {\n // the ordinal 'er' only applies to day of the month\n case 'D':\n return number + 'er';\n default:\n case 'M':\n case 'Q':\n case 'DDD':\n case 'd':\n case 'w':\n case 'W':\n return number;\n }\n },\n week: {\n dow: 0, // Sunday is the first day of the week\n doy: 3, // The week that contains Jan 4th is the first week of the year (7 + 0 - 4)\n },\n meridiemParse: /rati|sokallim|donparam|sanje/,\n meridiemHour: function (hour, meridiem) {\n if (hour === 12) {\n hour = 0;\n }\n if (meridiem === 'rati') {\n return hour < 4 ? hour : hour + 12;\n } else if (meridiem === 'sokallim') {\n return hour;\n } else if (meridiem === 'donparam') {\n return hour > 12 ? hour : hour + 12;\n } else if (meridiem === 'sanje') {\n return hour + 12;\n }\n },\n meridiem: function (hour, minute, isLower) {\n if (hour < 4) {\n return 'rati';\n } else if (hour < 12) {\n return 'sokallim';\n } else if (hour < 16) {\n return 'donparam';\n } else if (hour < 20) {\n return 'sanje';\n } else {\n return 'rati';\n }\n },\n });\n\n return gomLatn;\n\n})));\n","//! moment.js locale configuration\n//! locale : Gujarati [gu]\n//! author : Kaushik Thanki : https://github.com/Kaushik1987\n\n;(function (global, factory) {\n typeof exports === 'object' && typeof module !== 'undefined'\n && typeof require === 'function' ? factory(require('../moment')) :\n typeof define === 'function' && define.amd ? define(['../moment'], factory) :\n factory(global.moment)\n}(this, (function (moment) { 'use strict';\n\n //! moment.js locale configuration\n\n var symbolMap = {\n 1: '૧',\n 2: '૨',\n 3: 'à«©',\n 4: '૪',\n 5: 'à««',\n 6: '૬',\n 7: 'à«',\n 8: 'à«®',\n 9: '૯',\n 0: '૦',\n },\n numberMap = {\n '૧': '1',\n '૨': '2',\n 'à«©': '3',\n '૪': '4',\n 'à««': '5',\n '૬': '6',\n 'à«': '7',\n 'à«®': '8',\n '૯': '9',\n '૦': '0',\n };\n\n var gu = moment.defineLocale('gu', {\n months: 'જાનà«àª¯à«àª†àª°à«€_ફેબà«àª°à«àª†àª°à«€_મારà«àªš_àªàªªà«àª°àª¿àª²_મે_જૂન_જà«àª²àª¾àªˆ_ઑગસà«àªŸ_સપà«àªŸà«‡àª®à«àª¬àª°_ઑકà«àªŸà«àª¬àª°_નવેમà«àª¬àª°_ડિસેમà«àª¬àª°'.split(\n '_'\n ),\n monthsShort:\n 'જાનà«àª¯à«._ફેબà«àª°à«._મારà«àªš_àªàªªà«àª°àª¿._મે_જૂન_જà«àª²àª¾._ઑગ._સપà«àªŸà«‡._ઑકà«àªŸà«._નવે._ડિસે.'.split(\n '_'\n ),\n monthsParseExact: true,\n weekdays: 'રવિવાર_સોમવાર_મંગળવાર_બà«àª§à«àªµàª¾àª°_ગà«àª°à«àªµàª¾àª°_શà«àª•à«àª°àªµàª¾àª°_શનિવાર'.split(\n '_'\n ),\n weekdaysShort: 'રવિ_સોમ_મંગળ_બà«àª§à«_ગà«àª°à«_શà«àª•à«àª°_શનિ'.split('_'),\n weekdaysMin: 'ર_સો_મં_બà«_ગà«_શà«_શ'.split('_'),\n longDateFormat: {\n LT: 'A h:mm વાગà«àª¯à«‡',\n LTS: 'A h:mm:ss વાગà«àª¯à«‡',\n L: 'DD/MM/YYYY',\n LL: 'D MMMM YYYY',\n LLL: 'D MMMM YYYY, A h:mm વાગà«àª¯à«‡',\n LLLL: 'dddd, D MMMM YYYY, A h:mm વાગà«àª¯à«‡',\n },\n calendar: {\n sameDay: '[આજ] LT',\n nextDay: '[કાલે] LT',\n nextWeek: 'dddd, LT',\n lastDay: '[ગઇકાલે] LT',\n lastWeek: '[પાછલા] dddd, LT',\n sameElse: 'L',\n },\n relativeTime: {\n future: '%s મા',\n past: '%s પહેલા',\n s: 'અમà«àª• પળો',\n ss: '%d સેકંડ',\n m: 'àªàª• મિનિટ',\n mm: '%d મિનિટ',\n h: 'àªàª• કલાક',\n hh: '%d કલાક',\n d: 'àªàª• દિવસ',\n dd: '%d દિવસ',\n M: 'àªàª• મહિનો',\n MM: '%d મહિનો',\n y: 'àªàª• વરà«àª·',\n yy: '%d વરà«àª·',\n },\n preparse: function (string) {\n return string.replace(/[૧૨૩૪૫૬à«à«®à«¯à«¦]/g, function (match) {\n return numberMap[match];\n });\n },\n postformat: function (string) {\n return string.replace(/\\d/g, function (match) {\n return symbolMap[match];\n });\n },\n // Gujarati notation for meridiems are quite fuzzy in practice. While there exists\n // a rigid notion of a 'Pahar' it is not used as rigidly in modern Gujarati.\n meridiemParse: /રાત|બપોર|સવાર|સાંજ/,\n meridiemHour: function (hour, meridiem) {\n if (hour === 12) {\n hour = 0;\n }\n if (meridiem === 'રાત') {\n return hour < 4 ? hour : hour + 12;\n } else if (meridiem === 'સવાર') {\n return hour;\n } else if (meridiem === 'બપોર') {\n return hour >= 10 ? hour : hour + 12;\n } else if (meridiem === 'સાંજ') {\n return hour + 12;\n }\n },\n meridiem: function (hour, minute, isLower) {\n if (hour < 4) {\n return 'રાત';\n } else if (hour < 10) {\n return 'સવાર';\n } else if (hour < 17) {\n return 'બપોર';\n } else if (hour < 20) {\n return 'સાંજ';\n } else {\n return 'રાત';\n }\n },\n week: {\n dow: 0, // Sunday is the first day of the week.\n doy: 6, // The week that contains Jan 6th is the first week of the year.\n },\n });\n\n return gu;\n\n})));\n","//! moment.js locale configuration\n//! locale : Hebrew [he]\n//! author : Tomer Cohen : https://github.com/tomer\n//! author : Moshe Simantov : https://github.com/DevelopmentIL\n//! author : Tal Ater : https://github.com/TalAter\n\n;(function (global, factory) {\n typeof exports === 'object' && typeof module !== 'undefined'\n && typeof require === 'function' ? factory(require('../moment')) :\n typeof define === 'function' && define.amd ? define(['../moment'], factory) :\n factory(global.moment)\n}(this, (function (moment) { 'use strict';\n\n //! moment.js locale configuration\n\n var he = moment.defineLocale('he', {\n months: '×™× ×•×ר_פברו×ר_מרץ_×פריל_מ××™_×™×•× ×™_יולי_×וגוסט_ספטמבר_×וקטובר_× ×•×‘×ž×‘×¨_דצמבר'.split(\n '_'\n ),\n monthsShort:\n '×™× ×•×³_פבר׳_מרץ_×פר׳_מ××™_×™×•× ×™_יולי_×וג׳_ספט׳_×וק׳_× ×•×‘×³_דצמ׳'.split('_'),\n weekdays: 'ר×שון_×©× ×™_שלישי_רביעי_חמישי_שישי_שבת'.split('_'),\n weekdaysShort: '×׳_ב׳_ג׳_ד׳_ה׳_ו׳_ש׳'.split('_'),\n weekdaysMin: '×_ב_×’_ד_×”_ו_ש'.split('_'),\n longDateFormat: {\n LT: 'HH:mm',\n LTS: 'HH:mm:ss',\n L: 'DD/MM/YYYY',\n LL: 'D [ב]MMMM YYYY',\n LLL: 'D [ב]MMMM YYYY HH:mm',\n LLLL: 'dddd, D [ב]MMMM YYYY HH:mm',\n l: 'D/M/YYYY',\n ll: 'D MMM YYYY',\n lll: 'D MMM YYYY HH:mm',\n llll: 'ddd, D MMM YYYY HH:mm',\n },\n calendar: {\n sameDay: '[×”×™×•× ×‘Ö¾]LT',\n nextDay: '[מחר ב־]LT',\n nextWeek: 'dddd [בשעה] LT',\n lastDay: '[×תמול ב־]LT',\n lastWeek: '[ביו×] dddd [×”×חרון בשעה] LT',\n sameElse: 'L',\n },\n relativeTime: {\n future: 'בעוד %s',\n past: '×œ×¤× ×™ %s',\n s: 'מספר ×©× ×™×•×ª',\n ss: '%d ×©× ×™×•×ª',\n m: 'דקה',\n mm: '%d דקות',\n h: 'שעה',\n hh: function (number) {\n if (number === 2) {\n return 'שעתיי×';\n }\n return number + ' שעות';\n },\n d: 'יו×',\n dd: function (number) {\n if (number === 2) {\n return 'יומיי×';\n }\n return number + ' ימי×';\n },\n M: 'חודש',\n MM: function (number) {\n if (number === 2) {\n return 'חודשיי×';\n }\n return number + ' חודשי×';\n },\n y: '×©× ×”',\n yy: function (number) {\n if (number === 2) {\n return '×©× ×ª×™×™×';\n } else if (number % 10 === 0 && number !== 10) {\n return number + ' ×©× ×”';\n }\n return number + ' ×©× ×™×';\n },\n },\n meridiemParse:\n /××—×”\"צ|×œ×¤× ×”\"צ|×חרי הצהריי×|×œ×¤× ×™ הצהריי×|×œ×¤× ×•×ª בוקר|בבוקר|בערב/i,\n isPM: function (input) {\n return /^(××—×”\"צ|×חרי הצהריי×|בערב)$/.test(input);\n },\n meridiem: function (hour, minute, isLower) {\n if (hour < 5) {\n return '×œ×¤× ×•×ª בוקר';\n } else if (hour < 10) {\n return 'בבוקר';\n } else if (hour < 12) {\n return isLower ? '×œ×¤× ×”\"צ' : '×œ×¤× ×™ הצהריי×';\n } else if (hour < 18) {\n return isLower ? '××—×”\"צ' : '×חרי הצהריי×';\n } else {\n return 'בערב';\n }\n },\n });\n\n return he;\n\n})));\n","//! moment.js locale configuration\n//! locale : Hindi [hi]\n//! author : Mayank Singhal : https://github.com/mayanksinghal\n\n;(function (global, factory) {\n typeof exports === 'object' && typeof module !== 'undefined'\n && typeof require === 'function' ? factory(require('../moment')) :\n typeof define === 'function' && define.amd ? define(['../moment'], factory) :\n factory(global.moment)\n}(this, (function (moment) { 'use strict';\n\n //! moment.js locale configuration\n\n var symbolMap = {\n 1: '१',\n 2: '२',\n 3: '३',\n 4: '४',\n 5: '५',\n 6: '६',\n 7: 'à¥',\n 8: '८',\n 9: '९',\n 0: '०',\n },\n numberMap = {\n '१': '1',\n '२': '2',\n '३': '3',\n '४': '4',\n '५': '5',\n '६': '6',\n 'à¥': '7',\n '८': '8',\n '९': '9',\n '०': '0',\n },\n monthsParse = [\n /^जन/i,\n /^फ़र|फर/i,\n /^मारà¥à¤š/i,\n /^अपà¥à¤°à¥ˆ/i,\n /^मई/i,\n /^जून/i,\n /^जà¥à¤²/i,\n /^अग/i,\n /^सितं|सित/i,\n /^अकà¥à¤Ÿà¥‚/i,\n /^नव|नवं/i,\n /^दिसं|दिस/i,\n ],\n shortMonthsParse = [\n /^जन/i,\n /^फ़र/i,\n /^मारà¥à¤š/i,\n /^अपà¥à¤°à¥ˆ/i,\n /^मई/i,\n /^जून/i,\n /^जà¥à¤²/i,\n /^अग/i,\n /^सित/i,\n /^अकà¥à¤Ÿà¥‚/i,\n /^नव/i,\n /^दिस/i,\n ];\n\n var hi = moment.defineLocale('hi', {\n months: {\n format: 'जनवरी_फ़रवरी_मारà¥à¤š_अपà¥à¤°à¥ˆà¤²_मई_जून_जà¥à¤²à¤¾à¤ˆ_अगसà¥à¤¤_सितमà¥à¤¬à¤°_अकà¥à¤Ÿà¥‚बर_नवमà¥à¤¬à¤°_दिसमà¥à¤¬à¤°'.split(\n '_'\n ),\n standalone:\n 'जनवरी_फरवरी_मारà¥à¤š_अपà¥à¤°à¥ˆà¤²_मई_जून_जà¥à¤²à¤¾à¤ˆ_अगसà¥à¤¤_सितंबर_अकà¥à¤Ÿà¥‚बर_नवंबर_दिसंबर'.split(\n '_'\n ),\n },\n monthsShort:\n 'जन._फ़र._मारà¥à¤š_अपà¥à¤°à¥ˆ._मई_जून_जà¥à¤²._अग._सित._अकà¥à¤Ÿà¥‚._नव._दिस.'.split('_'),\n weekdays: 'रविवार_सोमवार_मंगलवार_बà¥à¤§à¤µà¤¾à¤°_गà¥à¤°à¥‚वार_शà¥à¤•à¥à¤°à¤µà¤¾à¤°_शनिवार'.split('_'),\n weekdaysShort: 'रवि_सोम_मंगल_बà¥à¤§_गà¥à¤°à¥‚_शà¥à¤•à¥à¤°_शनि'.split('_'),\n weekdaysMin: 'र_सो_मं_बà¥_गà¥_शà¥_श'.split('_'),\n longDateFormat: {\n LT: 'A h:mm बजे',\n LTS: 'A h:mm:ss बजे',\n L: 'DD/MM/YYYY',\n LL: 'D MMMM YYYY',\n LLL: 'D MMMM YYYY, A h:mm बजे',\n LLLL: 'dddd, D MMMM YYYY, A h:mm बजे',\n },\n\n monthsParse: monthsParse,\n longMonthsParse: monthsParse,\n shortMonthsParse: shortMonthsParse,\n\n monthsRegex:\n /^(जनवरी|जन\\.?|फ़रवरी|फरवरी|फ़र\\.?|मारà¥à¤š?|अपà¥à¤°à¥ˆà¤²|अपà¥à¤°à¥ˆ\\.?|मई?|जून?|जà¥à¤²à¤¾à¤ˆ|जà¥à¤²\\.?|अगसà¥à¤¤|अग\\.?|सितमà¥à¤¬à¤°|सितंबर|सित\\.?|अकà¥à¤Ÿà¥‚बर|अकà¥à¤Ÿà¥‚\\.?|नवमà¥à¤¬à¤°|नवंबर|नव\\.?|दिसमà¥à¤¬à¤°|दिसंबर|दिस\\.?)/i,\n\n monthsShortRegex:\n /^(जनवरी|जन\\.?|फ़रवरी|फरवरी|फ़र\\.?|मारà¥à¤š?|अपà¥à¤°à¥ˆà¤²|अपà¥à¤°à¥ˆ\\.?|मई?|जून?|जà¥à¤²à¤¾à¤ˆ|जà¥à¤²\\.?|अगसà¥à¤¤|अग\\.?|सितमà¥à¤¬à¤°|सितंबर|सित\\.?|अकà¥à¤Ÿà¥‚बर|अकà¥à¤Ÿà¥‚\\.?|नवमà¥à¤¬à¤°|नवंबर|नव\\.?|दिसमà¥à¤¬à¤°|दिसंबर|दिस\\.?)/i,\n\n monthsStrictRegex:\n /^(जनवरी?|फ़रवरी|फरवरी?|मारà¥à¤š?|अपà¥à¤°à¥ˆà¤²?|मई?|जून?|जà¥à¤²à¤¾à¤ˆ?|अगसà¥à¤¤?|सितमà¥à¤¬à¤°|सितंबर|सित?\\.?|अकà¥à¤Ÿà¥‚बर|अकà¥à¤Ÿà¥‚\\.?|नवमà¥à¤¬à¤°|नवंबर?|दिसमà¥à¤¬à¤°|दिसंबर?)/i,\n\n monthsShortStrictRegex:\n /^(जन\\.?|फ़र\\.?|मारà¥à¤š?|अपà¥à¤°à¥ˆ\\.?|मई?|जून?|जà¥à¤²\\.?|अग\\.?|सित\\.?|अकà¥à¤Ÿà¥‚\\.?|नव\\.?|दिस\\.?)/i,\n\n calendar: {\n sameDay: '[आज] LT',\n nextDay: '[कल] LT',\n nextWeek: 'dddd, LT',\n lastDay: '[कल] LT',\n lastWeek: '[पिछले] dddd, LT',\n sameElse: 'L',\n },\n relativeTime: {\n future: '%s में',\n past: '%s पहले',\n s: 'कà¥à¤› ही कà¥à¤·à¤£',\n ss: '%d सेकंड',\n m: 'à¤à¤• मिनट',\n mm: '%d मिनट',\n h: 'à¤à¤• घंटा',\n hh: '%d घंटे',\n d: 'à¤à¤• दिन',\n dd: '%d दिन',\n M: 'à¤à¤• महीने',\n MM: '%d महीने',\n y: 'à¤à¤• वरà¥à¤·',\n yy: '%d वरà¥à¤·',\n },\n preparse: function (string) {\n return string.replace(/[१२३४५६à¥à¥®à¥¯à¥¦]/g, function (match) {\n return numberMap[match];\n });\n },\n postformat: function (string) {\n return string.replace(/\\d/g, function (match) {\n return symbolMap[match];\n });\n },\n // Hindi notation for meridiems are quite fuzzy in practice. While there exists\n // a rigid notion of a 'Pahar' it is not used as rigidly in modern Hindi.\n meridiemParse: /रात|सà¥à¤¬à¤¹|दोपहर|शाम/,\n meridiemHour: function (hour, meridiem) {\n if (hour === 12) {\n hour = 0;\n }\n if (meridiem === 'रात') {\n return hour < 4 ? hour : hour + 12;\n } else if (meridiem === 'सà¥à¤¬à¤¹') {\n return hour;\n } else if (meridiem === 'दोपहर') {\n return hour >= 10 ? hour : hour + 12;\n } else if (meridiem === 'शाम') {\n return hour + 12;\n }\n },\n meridiem: function (hour, minute, isLower) {\n if (hour < 4) {\n return 'रात';\n } else if (hour < 10) {\n return 'सà¥à¤¬à¤¹';\n } else if (hour < 17) {\n return 'दोपहर';\n } else if (hour < 20) {\n return 'शाम';\n } else {\n return 'रात';\n }\n },\n week: {\n dow: 0, // Sunday is the first day of the week.\n doy: 6, // The week that contains Jan 6th is the first week of the year.\n },\n });\n\n return hi;\n\n})));\n","//! moment.js locale configuration\n//! locale : Croatian [hr]\n//! author : Bojan Marković : https://github.com/bmarkovic\n\n;(function (global, factory) {\n typeof exports === 'object' && typeof module !== 'undefined'\n && typeof require === 'function' ? factory(require('../moment')) :\n typeof define === 'function' && define.amd ? define(['../moment'], factory) :\n factory(global.moment)\n}(this, (function (moment) { 'use strict';\n\n //! moment.js locale configuration\n\n function translate(number, withoutSuffix, key) {\n var result = number + ' ';\n switch (key) {\n case 'ss':\n if (number === 1) {\n result += 'sekunda';\n } else if (number === 2 || number === 3 || number === 4) {\n result += 'sekunde';\n } else {\n result += 'sekundi';\n }\n return result;\n case 'm':\n return withoutSuffix ? 'jedna minuta' : 'jedne minute';\n case 'mm':\n if (number === 1) {\n result += 'minuta';\n } else if (number === 2 || number === 3 || number === 4) {\n result += 'minute';\n } else {\n result += 'minuta';\n }\n return result;\n case 'h':\n return withoutSuffix ? 'jedan sat' : 'jednog sata';\n case 'hh':\n if (number === 1) {\n result += 'sat';\n } else if (number === 2 || number === 3 || number === 4) {\n result += 'sata';\n } else {\n result += 'sati';\n }\n return result;\n case 'dd':\n if (number === 1) {\n result += 'dan';\n } else {\n result += 'dana';\n }\n return result;\n case 'MM':\n if (number === 1) {\n result += 'mjesec';\n } else if (number === 2 || number === 3 || number === 4) {\n result += 'mjeseca';\n } else {\n result += 'mjeseci';\n }\n return result;\n case 'yy':\n if (number === 1) {\n result += 'godina';\n } else if (number === 2 || number === 3 || number === 4) {\n result += 'godine';\n } else {\n result += 'godina';\n }\n return result;\n }\n }\n\n var hr = moment.defineLocale('hr', {\n months: {\n format: 'sijeÄnja_veljaÄe_ožujka_travnja_svibnja_lipnja_srpnja_kolovoza_rujna_listopada_studenoga_prosinca'.split(\n '_'\n ),\n standalone:\n 'sijeÄanj_veljaÄa_ožujak_travanj_svibanj_lipanj_srpanj_kolovoz_rujan_listopad_studeni_prosinac'.split(\n '_'\n ),\n },\n monthsShort:\n 'sij._velj._ožu._tra._svi._lip._srp._kol._ruj._lis._stu._pro.'.split(\n '_'\n ),\n monthsParseExact: true,\n weekdays: 'nedjelja_ponedjeljak_utorak_srijeda_Äetvrtak_petak_subota'.split(\n '_'\n ),\n weekdaysShort: 'ned._pon._uto._sri._Äet._pet._sub.'.split('_'),\n weekdaysMin: 'ne_po_ut_sr_Äe_pe_su'.split('_'),\n weekdaysParseExact: true,\n longDateFormat: {\n LT: 'H:mm',\n LTS: 'H:mm:ss',\n L: 'DD.MM.YYYY',\n LL: 'Do MMMM YYYY',\n LLL: 'Do MMMM YYYY H:mm',\n LLLL: 'dddd, Do MMMM YYYY H:mm',\n },\n calendar: {\n sameDay: '[danas u] LT',\n nextDay: '[sutra u] LT',\n nextWeek: function () {\n switch (this.day()) {\n case 0:\n return '[u] [nedjelju] [u] LT';\n case 3:\n return '[u] [srijedu] [u] LT';\n case 6:\n return '[u] [subotu] [u] LT';\n case 1:\n case 2:\n case 4:\n case 5:\n return '[u] dddd [u] LT';\n }\n },\n lastDay: '[juÄer u] LT',\n lastWeek: function () {\n switch (this.day()) {\n case 0:\n return '[proÅ¡lu] [nedjelju] [u] LT';\n case 3:\n return '[proÅ¡lu] [srijedu] [u] LT';\n case 6:\n return '[proÅ¡le] [subote] [u] LT';\n case 1:\n case 2:\n case 4:\n case 5:\n return '[proÅ¡li] dddd [u] LT';\n }\n },\n sameElse: 'L',\n },\n relativeTime: {\n future: 'za %s',\n past: 'prije %s',\n s: 'par sekundi',\n ss: translate,\n m: translate,\n mm: translate,\n h: translate,\n hh: translate,\n d: 'dan',\n dd: translate,\n M: 'mjesec',\n MM: translate,\n y: 'godinu',\n yy: translate,\n },\n dayOfMonthOrdinalParse: /\\d{1,2}\\./,\n ordinal: '%d.',\n week: {\n dow: 1, // Monday is the first day of the week.\n doy: 7, // The week that contains Jan 7th is the first week of the year.\n },\n });\n\n return hr;\n\n})));\n","//! moment.js locale configuration\n//! locale : Hungarian [hu]\n//! author : Adam Brunner : https://github.com/adambrunner\n//! author : Peter Viszt : https://github.com/passatgt\n\n;(function (global, factory) {\n typeof exports === 'object' && typeof module !== 'undefined'\n && typeof require === 'function' ? factory(require('../moment')) :\n typeof define === 'function' && define.amd ? define(['../moment'], factory) :\n factory(global.moment)\n}(this, (function (moment) { 'use strict';\n\n //! moment.js locale configuration\n\n var weekEndings =\n 'vasárnap hétfÅ‘n kedden szerdán csütörtökön pénteken szombaton'.split(' ');\n function translate(number, withoutSuffix, key, isFuture) {\n var num = number;\n switch (key) {\n case 's':\n return isFuture || withoutSuffix\n ? 'néhány másodperc'\n : 'néhány másodperce';\n case 'ss':\n return num + (isFuture || withoutSuffix)\n ? ' másodperc'\n : ' másodperce';\n case 'm':\n return 'egy' + (isFuture || withoutSuffix ? ' perc' : ' perce');\n case 'mm':\n return num + (isFuture || withoutSuffix ? ' perc' : ' perce');\n case 'h':\n return 'egy' + (isFuture || withoutSuffix ? ' óra' : ' órája');\n case 'hh':\n return num + (isFuture || withoutSuffix ? ' óra' : ' órája');\n case 'd':\n return 'egy' + (isFuture || withoutSuffix ? ' nap' : ' napja');\n case 'dd':\n return num + (isFuture || withoutSuffix ? ' nap' : ' napja');\n case 'M':\n return 'egy' + (isFuture || withoutSuffix ? ' hónap' : ' hónapja');\n case 'MM':\n return num + (isFuture || withoutSuffix ? ' hónap' : ' hónapja');\n case 'y':\n return 'egy' + (isFuture || withoutSuffix ? ' év' : ' éve');\n case 'yy':\n return num + (isFuture || withoutSuffix ? ' év' : ' éve');\n }\n return '';\n }\n function week(isFuture) {\n return (\n (isFuture ? '' : '[múlt] ') +\n '[' +\n weekEndings[this.day()] +\n '] LT[-kor]'\n );\n }\n\n var hu = moment.defineLocale('hu', {\n months: 'január_február_március_április_május_június_július_augusztus_szeptember_október_november_december'.split(\n '_'\n ),\n monthsShort:\n 'jan._feb._márc._ápr._máj._jún._júl._aug._szept._okt._nov._dec.'.split(\n '_'\n ),\n monthsParseExact: true,\n weekdays: 'vasárnap_hétfÅ‘_kedd_szerda_csütörtök_péntek_szombat'.split('_'),\n weekdaysShort: 'vas_hét_kedd_sze_csüt_pén_szo'.split('_'),\n weekdaysMin: 'v_h_k_sze_cs_p_szo'.split('_'),\n longDateFormat: {\n LT: 'H:mm',\n LTS: 'H:mm:ss',\n L: 'YYYY.MM.DD.',\n LL: 'YYYY. MMMM D.',\n LLL: 'YYYY. MMMM D. H:mm',\n LLLL: 'YYYY. MMMM D., dddd H:mm',\n },\n meridiemParse: /de|du/i,\n isPM: function (input) {\n return input.charAt(1).toLowerCase() === 'u';\n },\n meridiem: function (hours, minutes, isLower) {\n if (hours < 12) {\n return isLower === true ? 'de' : 'DE';\n } else {\n return isLower === true ? 'du' : 'DU';\n }\n },\n calendar: {\n sameDay: '[ma] LT[-kor]',\n nextDay: '[holnap] LT[-kor]',\n nextWeek: function () {\n return week.call(this, true);\n },\n lastDay: '[tegnap] LT[-kor]',\n lastWeek: function () {\n return week.call(this, false);\n },\n sameElse: 'L',\n },\n relativeTime: {\n future: '%s múlva',\n past: '%s',\n s: translate,\n ss: translate,\n m: translate,\n mm: translate,\n h: translate,\n hh: translate,\n d: translate,\n dd: translate,\n M: translate,\n MM: translate,\n y: translate,\n yy: translate,\n },\n dayOfMonthOrdinalParse: /\\d{1,2}\\./,\n ordinal: '%d.',\n week: {\n dow: 1, // Monday is the first day of the week.\n doy: 4, // The week that contains Jan 4th is the first week of the year.\n },\n });\n\n return hu;\n\n})));\n","//! moment.js locale configuration\n//! locale : Armenian [hy-am]\n//! author : Armendarabyan : https://github.com/armendarabyan\n\n;(function (global, factory) {\n typeof exports === 'object' && typeof module !== 'undefined'\n && typeof require === 'function' ? factory(require('../moment')) :\n typeof define === 'function' && define.amd ? define(['../moment'], factory) :\n factory(global.moment)\n}(this, (function (moment) { 'use strict';\n\n //! moment.js locale configuration\n\n var hyAm = moment.defineLocale('hy-am', {\n months: {\n format: 'Õ°Õ¸Ö‚Õ¶Õ¾Õ¡Ö€Õ«_ÖƒÕ¥Õ¿Ö€Õ¾Õ¡Ö€Õ«_Õ´Õ¡Ö€Õ¿Õ«_Õ¡ÕºÖ€Õ«Õ¬Õ«_Õ´Õ¡ÕµÕ«Õ½Õ«_Õ°Õ¸Ö‚Õ¶Õ«Õ½Õ«_Õ°Õ¸Ö‚Õ¬Õ«Õ½Õ«_Ö…Õ£Õ¸Õ½Õ¿Õ¸Õ½Õ«_Õ½Õ¥ÕºÕ¿Õ¥Õ´Õ¢Õ¥Ö€Õ«_Õ°Õ¸Õ¯Õ¿Õ¥Õ´Õ¢Õ¥Ö€Õ«_Õ¶Õ¸ÕµÕ¥Õ´Õ¢Õ¥Ö€Õ«_Õ¤Õ¥Õ¯Õ¿Õ¥Õ´Õ¢Õ¥Ö€Õ«'.split(\n '_'\n ),\n standalone:\n 'Õ°Õ¸Ö‚Õ¶Õ¾Õ¡Ö€_ÖƒÕ¥Õ¿Ö€Õ¾Õ¡Ö€_Õ´Õ¡Ö€Õ¿_Õ¡ÕºÖ€Õ«Õ¬_Õ´Õ¡ÕµÕ«Õ½_Õ°Õ¸Ö‚Õ¶Õ«Õ½_Õ°Õ¸Ö‚Õ¬Õ«Õ½_Ö…Õ£Õ¸Õ½Õ¿Õ¸Õ½_Õ½Õ¥ÕºÕ¿Õ¥Õ´Õ¢Õ¥Ö€_Õ°Õ¸Õ¯Õ¿Õ¥Õ´Õ¢Õ¥Ö€_Õ¶Õ¸ÕµÕ¥Õ´Õ¢Õ¥Ö€_Õ¤Õ¥Õ¯Õ¿Õ¥Õ´Õ¢Õ¥Ö€'.split(\n '_'\n ),\n },\n monthsShort: 'Õ°Õ¶Õ¾_ÖƒÕ¿Ö€_Õ´Ö€Õ¿_Õ¡ÕºÖ€_Õ´ÕµÕ½_Õ°Õ¶Õ½_Õ°Õ¬Õ½_Ö…Õ£Õ½_Õ½ÕºÕ¿_Õ°Õ¯Õ¿_Õ¶Õ´Õ¢_Õ¤Õ¯Õ¿'.split('_'),\n weekdays:\n 'Õ¯Õ«Ö€Õ¡Õ¯Õ«_Õ¥Ö€Õ¯Õ¸Ö‚Õ·Õ¡Õ¢Õ©Õ«_Õ¥Ö€Õ¥Ö„Õ·Õ¡Õ¢Õ©Õ«_Õ¹Õ¸Ö€Õ¥Ö„Õ·Õ¡Õ¢Õ©Õ«_Õ°Õ«Õ¶Õ£Õ·Õ¡Õ¢Õ©Õ«_Õ¸Ö‚Ö€Õ¢Õ¡Õ©_Õ·Õ¡Õ¢Õ¡Õ©'.split(\n '_'\n ),\n weekdaysShort: 'Õ¯Ö€Õ¯_Õ¥Ö€Õ¯_Õ¥Ö€Ö„_Õ¹Ö€Ö„_Õ°Õ¶Õ£_Õ¸Ö‚Ö€Õ¢_Õ·Õ¢Õ©'.split('_'),\n weekdaysMin: 'Õ¯Ö€Õ¯_Õ¥Ö€Õ¯_Õ¥Ö€Ö„_Õ¹Ö€Ö„_Õ°Õ¶Õ£_Õ¸Ö‚Ö€Õ¢_Õ·Õ¢Õ©'.split('_'),\n longDateFormat: {\n LT: 'HH:mm',\n LTS: 'HH:mm:ss',\n L: 'DD.MM.YYYY',\n LL: 'D MMMM YYYY Õ©.',\n LLL: 'D MMMM YYYY Õ©., HH:mm',\n LLLL: 'dddd, D MMMM YYYY Õ©., HH:mm',\n },\n calendar: {\n sameDay: '[Õ¡ÕµÕ½Ö…Ö€] LT',\n nextDay: '[Õ¾Õ¡Õ²Õ¨] LT',\n lastDay: '[Õ¥Ö€Õ¥Õ¯] LT',\n nextWeek: function () {\n return 'dddd [Ö…Ö€Õ¨ ÕªÕ¡Õ´Õ¨] LT';\n },\n lastWeek: function () {\n return '[Õ¡Õ¶ÖÕ¡Õ®] dddd [Ö…Ö€Õ¨ ÕªÕ¡Õ´Õ¨] LT';\n },\n sameElse: 'L',\n },\n relativeTime: {\n future: '%s Õ°Õ¥Õ¿Õ¸',\n past: '%s Õ¡Õ¼Õ¡Õ»',\n s: 'Õ´Õ« Ö„Õ¡Õ¶Õ« Õ¾Õ¡ÕµÖ€Õ¯ÕµÕ¡Õ¶',\n ss: '%d Õ¾Õ¡ÕµÖ€Õ¯ÕµÕ¡Õ¶',\n m: 'Ö€Õ¸ÕºÕ¥',\n mm: '%d Ö€Õ¸ÕºÕ¥',\n h: 'ÕªÕ¡Õ´',\n hh: '%d ÕªÕ¡Õ´',\n d: 'Ö…Ö€',\n dd: '%d Ö…Ö€',\n M: 'Õ¡Õ´Õ«Õ½',\n MM: '%d Õ¡Õ´Õ«Õ½',\n y: 'Õ¿Õ¡Ö€Õ«',\n yy: '%d Õ¿Õ¡Ö€Õ«',\n },\n meridiemParse: /Õ£Õ«Õ·Õ¥Ö€Õ¾Õ¡|Õ¡Õ¼Õ¡Õ¾Õ¸Õ¿Õ¾Õ¡|ÖÕ¥Ö€Õ¥Õ¯Õ¾Õ¡|Õ¥Ö€Õ¥Õ¯Õ¸ÕµÕ¡Õ¶/,\n isPM: function (input) {\n return /^(ÖÕ¥Ö€Õ¥Õ¯Õ¾Õ¡|Õ¥Ö€Õ¥Õ¯Õ¸ÕµÕ¡Õ¶)$/.test(input);\n },\n meridiem: function (hour) {\n if (hour < 4) {\n return 'Õ£Õ«Õ·Õ¥Ö€Õ¾Õ¡';\n } else if (hour < 12) {\n return 'Õ¡Õ¼Õ¡Õ¾Õ¸Õ¿Õ¾Õ¡';\n } else if (hour < 17) {\n return 'ÖÕ¥Ö€Õ¥Õ¯Õ¾Õ¡';\n } else {\n return 'Õ¥Ö€Õ¥Õ¯Õ¸ÕµÕ¡Õ¶';\n }\n },\n dayOfMonthOrdinalParse: /\\d{1,2}|\\d{1,2}-(Õ«Õ¶|Ö€Õ¤)/,\n ordinal: function (number, period) {\n switch (period) {\n case 'DDD':\n case 'w':\n case 'W':\n case 'DDDo':\n if (number === 1) {\n return number + '-Õ«Õ¶';\n }\n return number + '-Ö€Õ¤';\n default:\n return number;\n }\n },\n week: {\n dow: 1, // Monday is the first day of the week.\n doy: 7, // The week that contains Jan 7th is the first week of the year.\n },\n });\n\n return hyAm;\n\n})));\n","//! moment.js locale configuration\n//! locale : Indonesian [id]\n//! author : Mohammad Satrio Utomo : https://github.com/tyok\n//! reference: http://id.wikisource.org/wiki/Pedoman_Umum_Ejaan_Bahasa_Indonesia_yang_Disempurnakan\n\n;(function (global, factory) {\n typeof exports === 'object' && typeof module !== 'undefined'\n && typeof require === 'function' ? factory(require('../moment')) :\n typeof define === 'function' && define.amd ? define(['../moment'], factory) :\n factory(global.moment)\n}(this, (function (moment) { 'use strict';\n\n //! moment.js locale configuration\n\n var id = moment.defineLocale('id', {\n months: 'Januari_Februari_Maret_April_Mei_Juni_Juli_Agustus_September_Oktober_November_Desember'.split(\n '_'\n ),\n monthsShort: 'Jan_Feb_Mar_Apr_Mei_Jun_Jul_Agt_Sep_Okt_Nov_Des'.split('_'),\n weekdays: 'Minggu_Senin_Selasa_Rabu_Kamis_Jumat_Sabtu'.split('_'),\n weekdaysShort: 'Min_Sen_Sel_Rab_Kam_Jum_Sab'.split('_'),\n weekdaysMin: 'Mg_Sn_Sl_Rb_Km_Jm_Sb'.split('_'),\n longDateFormat: {\n LT: 'HH.mm',\n LTS: 'HH.mm.ss',\n L: 'DD/MM/YYYY',\n LL: 'D MMMM YYYY',\n LLL: 'D MMMM YYYY [pukul] HH.mm',\n LLLL: 'dddd, D MMMM YYYY [pukul] HH.mm',\n },\n meridiemParse: /pagi|siang|sore|malam/,\n meridiemHour: function (hour, meridiem) {\n if (hour === 12) {\n hour = 0;\n }\n if (meridiem === 'pagi') {\n return hour;\n } else if (meridiem === 'siang') {\n return hour >= 11 ? hour : hour + 12;\n } else if (meridiem === 'sore' || meridiem === 'malam') {\n return hour + 12;\n }\n },\n meridiem: function (hours, minutes, isLower) {\n if (hours < 11) {\n return 'pagi';\n } else if (hours < 15) {\n return 'siang';\n } else if (hours < 19) {\n return 'sore';\n } else {\n return 'malam';\n }\n },\n calendar: {\n sameDay: '[Hari ini pukul] LT',\n nextDay: '[Besok pukul] LT',\n nextWeek: 'dddd [pukul] LT',\n lastDay: '[Kemarin pukul] LT',\n lastWeek: 'dddd [lalu pukul] LT',\n sameElse: 'L',\n },\n relativeTime: {\n future: 'dalam %s',\n past: '%s yang lalu',\n s: 'beberapa detik',\n ss: '%d detik',\n m: 'semenit',\n mm: '%d menit',\n h: 'sejam',\n hh: '%d jam',\n d: 'sehari',\n dd: '%d hari',\n M: 'sebulan',\n MM: '%d bulan',\n y: 'setahun',\n yy: '%d tahun',\n },\n week: {\n dow: 0, // Sunday is the first day of the week.\n doy: 6, // The week that contains Jan 6th is the first week of the year.\n },\n });\n\n return id;\n\n})));\n","//! moment.js locale configuration\n//! locale : Icelandic [is]\n//! author : Hinrik Örn Sigurðsson : https://github.com/hinrik\n\n;(function (global, factory) {\n typeof exports === 'object' && typeof module !== 'undefined'\n && typeof require === 'function' ? factory(require('../moment')) :\n typeof define === 'function' && define.amd ? define(['../moment'], factory) :\n factory(global.moment)\n}(this, (function (moment) { 'use strict';\n\n //! moment.js locale configuration\n\n function plural(n) {\n if (n % 100 === 11) {\n return true;\n } else if (n % 10 === 1) {\n return false;\n }\n return true;\n }\n function translate(number, withoutSuffix, key, isFuture) {\n var result = number + ' ';\n switch (key) {\n case 's':\n return withoutSuffix || isFuture\n ? 'nokkrar sekúndur'\n : 'nokkrum sekúndum';\n case 'ss':\n if (plural(number)) {\n return (\n result +\n (withoutSuffix || isFuture ? 'sekúndur' : 'sekúndum')\n );\n }\n return result + 'sekúnda';\n case 'm':\n return withoutSuffix ? 'mÃnúta' : 'mÃnútu';\n case 'mm':\n if (plural(number)) {\n return (\n result + (withoutSuffix || isFuture ? 'mÃnútur' : 'mÃnútum')\n );\n } else if (withoutSuffix) {\n return result + 'mÃnúta';\n }\n return result + 'mÃnútu';\n case 'hh':\n if (plural(number)) {\n return (\n result +\n (withoutSuffix || isFuture\n ? 'klukkustundir'\n : 'klukkustundum')\n );\n }\n return result + 'klukkustund';\n case 'd':\n if (withoutSuffix) {\n return 'dagur';\n }\n return isFuture ? 'dag' : 'degi';\n case 'dd':\n if (plural(number)) {\n if (withoutSuffix) {\n return result + 'dagar';\n }\n return result + (isFuture ? 'daga' : 'dögum');\n } else if (withoutSuffix) {\n return result + 'dagur';\n }\n return result + (isFuture ? 'dag' : 'degi');\n case 'M':\n if (withoutSuffix) {\n return 'mánuður';\n }\n return isFuture ? 'mánuð' : 'mánuði';\n case 'MM':\n if (plural(number)) {\n if (withoutSuffix) {\n return result + 'mánuðir';\n }\n return result + (isFuture ? 'mánuði' : 'mánuðum');\n } else if (withoutSuffix) {\n return result + 'mánuður';\n }\n return result + (isFuture ? 'mánuð' : 'mánuði');\n case 'y':\n return withoutSuffix || isFuture ? 'ár' : 'ári';\n case 'yy':\n if (plural(number)) {\n return result + (withoutSuffix || isFuture ? 'ár' : 'árum');\n }\n return result + (withoutSuffix || isFuture ? 'ár' : 'ári');\n }\n }\n\n var is = moment.defineLocale('is', {\n months: 'janúar_febrúar_mars_aprÃl_maÃ_júnÃ_júlÃ_ágúst_september_október_nóvember_desember'.split(\n '_'\n ),\n monthsShort: 'jan_feb_mar_apr_maÃ_jún_júl_ágú_sep_okt_nóv_des'.split('_'),\n weekdays:\n 'sunnudagur_mánudagur_þriðjudagur_miðvikudagur_fimmtudagur_föstudagur_laugardagur'.split(\n '_'\n ),\n weekdaysShort: 'sun_mán_þri_mið_fim_fös_lau'.split('_'),\n weekdaysMin: 'Su_Má_Þr_Mi_Fi_Fö_La'.split('_'),\n longDateFormat: {\n LT: 'H:mm',\n LTS: 'H:mm:ss',\n L: 'DD.MM.YYYY',\n LL: 'D. MMMM YYYY',\n LLL: 'D. MMMM YYYY [kl.] H:mm',\n LLLL: 'dddd, D. MMMM YYYY [kl.] H:mm',\n },\n calendar: {\n sameDay: '[à dag kl.] LT',\n nextDay: '[á morgun kl.] LT',\n nextWeek: 'dddd [kl.] LT',\n lastDay: '[à gær kl.] LT',\n lastWeek: '[sÃðasta] dddd [kl.] LT',\n sameElse: 'L',\n },\n relativeTime: {\n future: 'eftir %s',\n past: 'fyrir %s sÃðan',\n s: translate,\n ss: translate,\n m: translate,\n mm: translate,\n h: 'klukkustund',\n hh: translate,\n d: translate,\n dd: translate,\n M: translate,\n MM: translate,\n y: translate,\n yy: translate,\n },\n dayOfMonthOrdinalParse: /\\d{1,2}\\./,\n ordinal: '%d.',\n week: {\n dow: 1, // Monday is the first day of the week.\n doy: 4, // The week that contains Jan 4th is the first week of the year.\n },\n });\n\n return is;\n\n})));\n","//! moment.js locale configuration\n//! locale : Italian [it]\n//! author : Lorenzo : https://github.com/aliem\n//! author: Mattia Larentis: https://github.com/nostalgiaz\n//! author: Marco : https://github.com/Manfre98\n\n;(function (global, factory) {\n typeof exports === 'object' && typeof module !== 'undefined'\n && typeof require === 'function' ? factory(require('../moment')) :\n typeof define === 'function' && define.amd ? define(['../moment'], factory) :\n factory(global.moment)\n}(this, (function (moment) { 'use strict';\n\n //! moment.js locale configuration\n\n var it = moment.defineLocale('it', {\n months: 'gennaio_febbraio_marzo_aprile_maggio_giugno_luglio_agosto_settembre_ottobre_novembre_dicembre'.split(\n '_'\n ),\n monthsShort: 'gen_feb_mar_apr_mag_giu_lug_ago_set_ott_nov_dic'.split('_'),\n weekdays: 'domenica_lunedì_martedì_mercoledì_giovedì_venerdì_sabato'.split(\n '_'\n ),\n weekdaysShort: 'dom_lun_mar_mer_gio_ven_sab'.split('_'),\n weekdaysMin: 'do_lu_ma_me_gi_ve_sa'.split('_'),\n longDateFormat: {\n LT: 'HH:mm',\n LTS: 'HH:mm:ss',\n L: 'DD/MM/YYYY',\n LL: 'D MMMM YYYY',\n LLL: 'D MMMM YYYY HH:mm',\n LLLL: 'dddd D MMMM YYYY HH:mm',\n },\n calendar: {\n sameDay: function () {\n return (\n '[Oggi a' +\n (this.hours() > 1 ? 'lle ' : this.hours() === 0 ? ' ' : \"ll'\") +\n ']LT'\n );\n },\n nextDay: function () {\n return (\n '[Domani a' +\n (this.hours() > 1 ? 'lle ' : this.hours() === 0 ? ' ' : \"ll'\") +\n ']LT'\n );\n },\n nextWeek: function () {\n return (\n 'dddd [a' +\n (this.hours() > 1 ? 'lle ' : this.hours() === 0 ? ' ' : \"ll'\") +\n ']LT'\n );\n },\n lastDay: function () {\n return (\n '[Ieri a' +\n (this.hours() > 1 ? 'lle ' : this.hours() === 0 ? ' ' : \"ll'\") +\n ']LT'\n );\n },\n lastWeek: function () {\n switch (this.day()) {\n case 0:\n return (\n '[La scorsa] dddd [a' +\n (this.hours() > 1\n ? 'lle '\n : this.hours() === 0\n ? ' '\n : \"ll'\") +\n ']LT'\n );\n default:\n return (\n '[Lo scorso] dddd [a' +\n (this.hours() > 1\n ? 'lle '\n : this.hours() === 0\n ? ' '\n : \"ll'\") +\n ']LT'\n );\n }\n },\n sameElse: 'L',\n },\n relativeTime: {\n future: 'tra %s',\n past: '%s fa',\n s: 'alcuni secondi',\n ss: '%d secondi',\n m: 'un minuto',\n mm: '%d minuti',\n h: \"un'ora\",\n hh: '%d ore',\n d: 'un giorno',\n dd: '%d giorni',\n w: 'una settimana',\n ww: '%d settimane',\n M: 'un mese',\n MM: '%d mesi',\n y: 'un anno',\n yy: '%d anni',\n },\n dayOfMonthOrdinalParse: /\\d{1,2}º/,\n ordinal: '%dº',\n week: {\n dow: 1, // Monday is the first day of the week.\n doy: 4, // The week that contains Jan 4th is the first week of the year.\n },\n });\n\n return it;\n\n})));\n","//! moment.js locale configuration\n//! locale : Italian (Switzerland) [it-ch]\n//! author : xfh : https://github.com/xfh\n\n;(function (global, factory) {\n typeof exports === 'object' && typeof module !== 'undefined'\n && typeof require === 'function' ? factory(require('../moment')) :\n typeof define === 'function' && define.amd ? define(['../moment'], factory) :\n factory(global.moment)\n}(this, (function (moment) { 'use strict';\n\n //! moment.js locale configuration\n\n var itCh = moment.defineLocale('it-ch', {\n months: 'gennaio_febbraio_marzo_aprile_maggio_giugno_luglio_agosto_settembre_ottobre_novembre_dicembre'.split(\n '_'\n ),\n monthsShort: 'gen_feb_mar_apr_mag_giu_lug_ago_set_ott_nov_dic'.split('_'),\n weekdays: 'domenica_lunedì_martedì_mercoledì_giovedì_venerdì_sabato'.split(\n '_'\n ),\n weekdaysShort: 'dom_lun_mar_mer_gio_ven_sab'.split('_'),\n weekdaysMin: 'do_lu_ma_me_gi_ve_sa'.split('_'),\n longDateFormat: {\n LT: 'HH:mm',\n LTS: 'HH:mm:ss',\n L: 'DD.MM.YYYY',\n LL: 'D MMMM YYYY',\n LLL: 'D MMMM YYYY HH:mm',\n LLLL: 'dddd D MMMM YYYY HH:mm',\n },\n calendar: {\n sameDay: '[Oggi alle] LT',\n nextDay: '[Domani alle] LT',\n nextWeek: 'dddd [alle] LT',\n lastDay: '[Ieri alle] LT',\n lastWeek: function () {\n switch (this.day()) {\n case 0:\n return '[la scorsa] dddd [alle] LT';\n default:\n return '[lo scorso] dddd [alle] LT';\n }\n },\n sameElse: 'L',\n },\n relativeTime: {\n future: function (s) {\n return (/^[0-9].+$/.test(s) ? 'tra' : 'in') + ' ' + s;\n },\n past: '%s fa',\n s: 'alcuni secondi',\n ss: '%d secondi',\n m: 'un minuto',\n mm: '%d minuti',\n h: \"un'ora\",\n hh: '%d ore',\n d: 'un giorno',\n dd: '%d giorni',\n M: 'un mese',\n MM: '%d mesi',\n y: 'un anno',\n yy: '%d anni',\n },\n dayOfMonthOrdinalParse: /\\d{1,2}º/,\n ordinal: '%dº',\n week: {\n dow: 1, // Monday is the first day of the week.\n doy: 4, // The week that contains Jan 4th is the first week of the year.\n },\n });\n\n return itCh;\n\n})));\n","//! moment.js locale configuration\n//! locale : Japanese [ja]\n//! author : LI Long : https://github.com/baryon\n\n;(function (global, factory) {\n typeof exports === 'object' && typeof module !== 'undefined'\n && typeof require === 'function' ? factory(require('../moment')) :\n typeof define === 'function' && define.amd ? define(['../moment'], factory) :\n factory(global.moment)\n}(this, (function (moment) { 'use strict';\n\n //! moment.js locale configuration\n\n var ja = moment.defineLocale('ja', {\n eras: [\n {\n since: '2019-05-01',\n offset: 1,\n name: '令和',\n narrow: 'ã‹¿',\n abbr: 'R',\n },\n {\n since: '1989-01-08',\n until: '2019-04-30',\n offset: 1,\n name: 'å¹³æˆ',\n narrow: 'ã»',\n abbr: 'H',\n },\n {\n since: '1926-12-25',\n until: '1989-01-07',\n offset: 1,\n name: 'æ˜å’Œ',\n narrow: 'ã¼',\n abbr: 'S',\n },\n {\n since: '1912-07-30',\n until: '1926-12-24',\n offset: 1,\n name: '大æ£',\n narrow: 'ã½',\n abbr: 'T',\n },\n {\n since: '1873-01-01',\n until: '1912-07-29',\n offset: 6,\n name: '明治',\n narrow: 'ã¾',\n abbr: 'M',\n },\n {\n since: '0001-01-01',\n until: '1873-12-31',\n offset: 1,\n name: '西暦',\n narrow: 'AD',\n abbr: 'AD',\n },\n {\n since: '0000-12-31',\n until: -Infinity,\n offset: 1,\n name: '紀元å‰',\n narrow: 'BC',\n abbr: 'BC',\n },\n ],\n eraYearOrdinalRegex: /(å…ƒ|\\d+)å¹´/,\n eraYearOrdinalParse: function (input, match) {\n return match[1] === 'å…ƒ' ? 1 : parseInt(match[1] || input, 10);\n },\n months: '1月_2月_3月_4月_5月_6月_7月_8月_9月_10月_11月_12月'.split('_'),\n monthsShort: '1月_2月_3月_4月_5月_6月_7月_8月_9月_10月_11月_12月'.split(\n '_'\n ),\n weekdays: '日曜日_月曜日_ç«æ›œæ—¥_水曜日_木曜日_金曜日_土曜日'.split('_'),\n weekdaysShort: 'æ—¥_月_ç«_æ°´_木_金_土'.split('_'),\n weekdaysMin: 'æ—¥_月_ç«_æ°´_木_金_土'.split('_'),\n longDateFormat: {\n LT: 'HH:mm',\n LTS: 'HH:mm:ss',\n L: 'YYYY/MM/DD',\n LL: 'YYYYå¹´M月Dæ—¥',\n LLL: 'YYYYå¹´M月Dæ—¥ HH:mm',\n LLLL: 'YYYYå¹´M月Dæ—¥ dddd HH:mm',\n l: 'YYYY/MM/DD',\n ll: 'YYYYå¹´M月Dæ—¥',\n lll: 'YYYYå¹´M月Dæ—¥ HH:mm',\n llll: 'YYYYå¹´M月Dæ—¥(ddd) HH:mm',\n },\n meridiemParse: /åˆå‰|åˆå¾Œ/i,\n isPM: function (input) {\n return input === 'åˆå¾Œ';\n },\n meridiem: function (hour, minute, isLower) {\n if (hour < 12) {\n return 'åˆå‰';\n } else {\n return 'åˆå¾Œ';\n }\n },\n calendar: {\n sameDay: '[今日] LT',\n nextDay: '[明日] LT',\n nextWeek: function (now) {\n if (now.week() !== this.week()) {\n return '[æ¥é€±]dddd LT';\n } else {\n return 'dddd LT';\n }\n },\n lastDay: '[昨日] LT',\n lastWeek: function (now) {\n if (this.week() !== now.week()) {\n return '[先週]dddd LT';\n } else {\n return 'dddd LT';\n }\n },\n sameElse: 'L',\n },\n dayOfMonthOrdinalParse: /\\d{1,2}æ—¥/,\n ordinal: function (number, period) {\n switch (period) {\n case 'y':\n return number === 1 ? '元年' : number + 'å¹´';\n case 'd':\n case 'D':\n case 'DDD':\n return number + 'æ—¥';\n default:\n return number;\n }\n },\n relativeTime: {\n future: '%s後',\n past: '%så‰',\n s: '数秒',\n ss: '%d秒',\n m: '1分',\n mm: '%d分',\n h: '1時間',\n hh: '%d時間',\n d: '1æ—¥',\n dd: '%dæ—¥',\n M: '1ヶ月',\n MM: '%dヶ月',\n y: '1å¹´',\n yy: '%då¹´',\n },\n });\n\n return ja;\n\n})));\n","//! moment.js locale configuration\n//! locale : Javanese [jv]\n//! author : Rony Lantip : https://github.com/lantip\n//! reference: http://jv.wikipedia.org/wiki/Basa_Jawa\n\n;(function (global, factory) {\n typeof exports === 'object' && typeof module !== 'undefined'\n && typeof require === 'function' ? factory(require('../moment')) :\n typeof define === 'function' && define.amd ? define(['../moment'], factory) :\n factory(global.moment)\n}(this, (function (moment) { 'use strict';\n\n //! moment.js locale configuration\n\n var jv = moment.defineLocale('jv', {\n months: 'Januari_Februari_Maret_April_Mei_Juni_Juli_Agustus_September_Oktober_Nopember_Desember'.split(\n '_'\n ),\n monthsShort: 'Jan_Feb_Mar_Apr_Mei_Jun_Jul_Ags_Sep_Okt_Nop_Des'.split('_'),\n weekdays: 'Minggu_Senen_Seloso_Rebu_Kemis_Jemuwah_Septu'.split('_'),\n weekdaysShort: 'Min_Sen_Sel_Reb_Kem_Jem_Sep'.split('_'),\n weekdaysMin: 'Mg_Sn_Sl_Rb_Km_Jm_Sp'.split('_'),\n longDateFormat: {\n LT: 'HH.mm',\n LTS: 'HH.mm.ss',\n L: 'DD/MM/YYYY',\n LL: 'D MMMM YYYY',\n LLL: 'D MMMM YYYY [pukul] HH.mm',\n LLLL: 'dddd, D MMMM YYYY [pukul] HH.mm',\n },\n meridiemParse: /enjing|siyang|sonten|ndalu/,\n meridiemHour: function (hour, meridiem) {\n if (hour === 12) {\n hour = 0;\n }\n if (meridiem === 'enjing') {\n return hour;\n } else if (meridiem === 'siyang') {\n return hour >= 11 ? hour : hour + 12;\n } else if (meridiem === 'sonten' || meridiem === 'ndalu') {\n return hour + 12;\n }\n },\n meridiem: function (hours, minutes, isLower) {\n if (hours < 11) {\n return 'enjing';\n } else if (hours < 15) {\n return 'siyang';\n } else if (hours < 19) {\n return 'sonten';\n } else {\n return 'ndalu';\n }\n },\n calendar: {\n sameDay: '[Dinten puniko pukul] LT',\n nextDay: '[Mbenjang pukul] LT',\n nextWeek: 'dddd [pukul] LT',\n lastDay: '[Kala wingi pukul] LT',\n lastWeek: 'dddd [kepengker pukul] LT',\n sameElse: 'L',\n },\n relativeTime: {\n future: 'wonten ing %s',\n past: '%s ingkang kepengker',\n s: 'sawetawis detik',\n ss: '%d detik',\n m: 'setunggal menit',\n mm: '%d menit',\n h: 'setunggal jam',\n hh: '%d jam',\n d: 'sedinten',\n dd: '%d dinten',\n M: 'sewulan',\n MM: '%d wulan',\n y: 'setaun',\n yy: '%d taun',\n },\n week: {\n dow: 1, // Monday is the first day of the week.\n doy: 7, // The week that contains Jan 7th is the first week of the year.\n },\n });\n\n return jv;\n\n})));\n","//! moment.js locale configuration\n//! locale : Georgian [ka]\n//! author : Irakli Janiashvili : https://github.com/IrakliJani\n\n;(function (global, factory) {\n typeof exports === 'object' && typeof module !== 'undefined'\n && typeof require === 'function' ? factory(require('../moment')) :\n typeof define === 'function' && define.amd ? define(['../moment'], factory) :\n factory(global.moment)\n}(this, (function (moment) { 'use strict';\n\n //! moment.js locale configuration\n\n var ka = moment.defineLocale('ka', {\n months: 'იáƒáƒœáƒ•áƒáƒ ი_თებერვáƒáƒšáƒ˜_მáƒáƒ ტი_áƒáƒžáƒ ილი_მáƒáƒ˜áƒ¡áƒ˜_ივნისი_ივლისი_áƒáƒ’ვისტáƒ_სექტემბერი_áƒáƒ¥áƒ¢áƒáƒ›áƒ‘ერი_ნáƒáƒ”მბერი_დეკემბერი'.split(\n '_'\n ),\n monthsShort: 'იáƒáƒœ_თებ_მáƒáƒ _áƒáƒžáƒ _მáƒáƒ˜_ივნ_ივლ_áƒáƒ’ვ_სექ_áƒáƒ¥áƒ¢_ნáƒáƒ”_დეკ'.split('_'),\n weekdays: {\n standalone:\n 'კვირáƒ_áƒáƒ შáƒáƒ‘áƒáƒ—ი_სáƒáƒ›áƒ¨áƒáƒ‘áƒáƒ—ი_áƒáƒ—ხშáƒáƒ‘áƒáƒ—ი_ხუთშáƒáƒ‘áƒáƒ—ი_პáƒáƒ áƒáƒ¡áƒ™áƒ”ვი_შáƒáƒ‘áƒáƒ—ი'.split(\n '_'\n ),\n format: 'კვირáƒáƒ¡_áƒáƒ შáƒáƒ‘áƒáƒ—ს_სáƒáƒ›áƒ¨áƒáƒ‘áƒáƒ—ს_áƒáƒ—ხშáƒáƒ‘áƒáƒ—ს_ხუთშáƒáƒ‘áƒáƒ—ს_პáƒáƒ áƒáƒ¡áƒ™áƒ”ვს_შáƒáƒ‘áƒáƒ—ს'.split(\n '_'\n ),\n isFormat: /(წინáƒ|შემდეგ)/,\n },\n weekdaysShort: 'კვი_áƒáƒ შ_სáƒáƒ›_áƒáƒ—ხ_ხუთ_პáƒáƒ _შáƒáƒ‘'.split('_'),\n weekdaysMin: 'კვ_áƒáƒ _სáƒ_áƒáƒ—_ხუ_პáƒ_შáƒ'.split('_'),\n longDateFormat: {\n LT: 'HH:mm',\n LTS: 'HH:mm:ss',\n L: 'DD/MM/YYYY',\n LL: 'D MMMM YYYY',\n LLL: 'D MMMM YYYY HH:mm',\n LLLL: 'dddd, D MMMM YYYY HH:mm',\n },\n calendar: {\n sameDay: '[დღეს] LT[-ზე]',\n nextDay: '[ხვáƒáƒš] LT[-ზე]',\n lastDay: '[გუშინ] LT[-ზე]',\n nextWeek: '[შემდეგ] dddd LT[-ზე]',\n lastWeek: '[წინáƒ] dddd LT-ზე',\n sameElse: 'L',\n },\n relativeTime: {\n future: function (s) {\n return s.replace(\n /(წáƒáƒ›|წუთ|სáƒáƒáƒ—|წელ|დღ|თვ)(ი|ე)/,\n function ($0, $1, $2) {\n return $2 === 'ი' ? $1 + 'ში' : $1 + $2 + 'ში';\n }\n );\n },\n past: function (s) {\n if (/(წáƒáƒ›áƒ˜|წუთი|სáƒáƒáƒ—ი|დღე|თვე)/.test(s)) {\n return s.replace(/(ი|ე)$/, 'ის წინ');\n }\n if (/წელი/.test(s)) {\n return s.replace(/წელი$/, 'წლის წინ');\n }\n return s;\n },\n s: 'რáƒáƒ›áƒ“ენიმე წáƒáƒ›áƒ˜',\n ss: '%d წáƒáƒ›áƒ˜',\n m: 'წუთი',\n mm: '%d წუთი',\n h: 'სáƒáƒáƒ—ი',\n hh: '%d სáƒáƒáƒ—ი',\n d: 'დღე',\n dd: '%d დღე',\n M: 'თვე',\n MM: '%d თვე',\n y: 'წელი',\n yy: '%d წელი',\n },\n dayOfMonthOrdinalParse: /0|1-ლი|მე-\\d{1,2}|\\d{1,2}-ე/,\n ordinal: function (number) {\n if (number === 0) {\n return number;\n }\n if (number === 1) {\n return number + '-ლი';\n }\n if (\n number < 20 ||\n (number <= 100 && number % 20 === 0) ||\n number % 100 === 0\n ) {\n return 'მე-' + number;\n }\n return number + '-ე';\n },\n week: {\n dow: 1,\n doy: 7,\n },\n });\n\n return ka;\n\n})));\n","//! moment.js locale configuration\n//! locale : Kazakh [kk]\n//! authors : Nurlan Rakhimzhanov : https://github.com/nurlan\n\n;(function (global, factory) {\n typeof exports === 'object' && typeof module !== 'undefined'\n && typeof require === 'function' ? factory(require('../moment')) :\n typeof define === 'function' && define.amd ? define(['../moment'], factory) :\n factory(global.moment)\n}(this, (function (moment) { 'use strict';\n\n //! moment.js locale configuration\n\n var suffixes = {\n 0: '-ші',\n 1: '-ші',\n 2: '-ші',\n 3: '-ші',\n 4: '-ші',\n 5: '-ші',\n 6: '-шы',\n 7: '-ші',\n 8: '-ші',\n 9: '-шы',\n 10: '-шы',\n 20: '-шы',\n 30: '-шы',\n 40: '-шы',\n 50: '-ші',\n 60: '-шы',\n 70: '-ші',\n 80: '-ші',\n 90: '-шы',\n 100: '-ші',\n };\n\n var kk = moment.defineLocale('kk', {\n months: 'қаңтар_ақпан_наурыз_Ñәуір_мамыр_мауÑым_шілде_тамыз_қыркүйек_қазан_қараша_желтоқÑан'.split(\n '_'\n ),\n monthsShort: 'қаң_ақп_нау_Ñәу_мам_мау_шіл_там_қыр_қаз_қар_жел'.split('_'),\n weekdays: 'жекÑенбі_дүйÑенбі_ÑейÑенбі_ÑәрÑенбі_бейÑенбі_жұма_Ñенбі'.split(\n '_'\n ),\n weekdaysShort: 'жек_дүй_Ñей_Ñәр_бей_жұм_Ñен'.split('_'),\n weekdaysMin: 'жк_дй_Ñй_ÑÑ€_бй_жм_Ñн'.split('_'),\n longDateFormat: {\n LT: 'HH:mm',\n LTS: 'HH:mm:ss',\n L: 'DD.MM.YYYY',\n LL: 'D MMMM YYYY',\n LLL: 'D MMMM YYYY HH:mm',\n LLLL: 'dddd, D MMMM YYYY HH:mm',\n },\n calendar: {\n sameDay: '[Бүгін Ñағат] LT',\n nextDay: '[Ертең Ñағат] LT',\n nextWeek: 'dddd [Ñағат] LT',\n lastDay: '[Кеше Ñағат] LT',\n lastWeek: '[Өткен аптаның] dddd [Ñағат] LT',\n sameElse: 'L',\n },\n relativeTime: {\n future: '%s ішінде',\n past: '%s бұрын',\n s: 'бірнеше Ñекунд',\n ss: '%d Ñекунд',\n m: 'бір минут',\n mm: '%d минут',\n h: 'бір Ñағат',\n hh: '%d Ñағат',\n d: 'бір күн',\n dd: '%d күн',\n M: 'бір ай',\n MM: '%d ай',\n y: 'бір жыл',\n yy: '%d жыл',\n },\n dayOfMonthOrdinalParse: /\\d{1,2}-(ші|шы)/,\n ordinal: function (number) {\n var a = number % 10,\n b = number >= 100 ? 100 : null;\n return number + (suffixes[number] || suffixes[a] || suffixes[b]);\n },\n week: {\n dow: 1, // Monday is the first day of the week.\n doy: 7, // The week that contains Jan 7th is the first week of the year.\n },\n });\n\n return kk;\n\n})));\n","//! moment.js locale configuration\n//! locale : Cambodian [km]\n//! author : Kruy Vanna : https://github.com/kruyvanna\n\n;(function (global, factory) {\n typeof exports === 'object' && typeof module !== 'undefined'\n && typeof require === 'function' ? factory(require('../moment')) :\n typeof define === 'function' && define.amd ? define(['../moment'], factory) :\n factory(global.moment)\n}(this, (function (moment) { 'use strict';\n\n //! moment.js locale configuration\n\n var symbolMap = {\n 1: '១',\n 2: '២',\n 3: '៣',\n 4: '៤',\n 5: '៥',\n 6: '៦',\n 7: '៧',\n 8: '៨',\n 9: '៩',\n 0: '០',\n },\n numberMap = {\n '១': '1',\n '២': '2',\n '៣': '3',\n '៤': '4',\n '៥': '5',\n '៦': '6',\n '៧': '7',\n '៨': '8',\n '៩': '9',\n '០': '0',\n };\n\n var km = moment.defineLocale('km', {\n months: 'មករា_កុម្ភៈ_មីនា_មáŸážŸáž¶_ឧសភា_មិážáž»áž“ា_កក្កដា_សីហា_កញ្ញា_ážáž»áž›áž¶_វិច្ឆិកា_ធ្នូ'.split(\n '_'\n ),\n monthsShort:\n 'មករា_កុម្ភៈ_មីនា_មáŸážŸáž¶_ឧសភា_មិážáž»áž“ា_កក្កដា_សីហា_កញ្ញា_ážáž»áž›áž¶_វិច្ឆិកា_ធ្នូ'.split(\n '_'\n ),\n weekdays: 'អាទិážáŸ’áž™_áž…áŸáž“្ទ_អង្គារ_ពុធ_ព្រហស្បážáž·áŸ_សុក្រ_សៅរáŸ'.split('_'),\n weekdaysShort: 'អា_áž…_អ_áž–_ព្រ_សុ_ស'.split('_'),\n weekdaysMin: 'អា_áž…_អ_áž–_ព្រ_សុ_ស'.split('_'),\n weekdaysParseExact: true,\n longDateFormat: {\n LT: 'HH:mm',\n LTS: 'HH:mm:ss',\n L: 'DD/MM/YYYY',\n LL: 'D MMMM YYYY',\n LLL: 'D MMMM YYYY HH:mm',\n LLLL: 'dddd, D MMMM YYYY HH:mm',\n },\n meridiemParse: /ព្រឹក|ល្ងាច/,\n isPM: function (input) {\n return input === 'ល្ងាច';\n },\n meridiem: function (hour, minute, isLower) {\n if (hour < 12) {\n return 'ព្រឹក';\n } else {\n return 'ល្ងាច';\n }\n },\n calendar: {\n sameDay: '[ážáŸ’ងៃនáŸáŸ‡ ម៉ោង] LT',\n nextDay: '[ស្អែក ម៉ោង] LT',\n nextWeek: 'dddd [ម៉ោង] LT',\n lastDay: '[ម្សិលមិញ ម៉ោង] LT',\n lastWeek: 'dddd [សប្ážáž¶áž áŸáž˜áž»áž“] [ម៉ោង] LT',\n sameElse: 'L',\n },\n relativeTime: {\n future: '%sទៀáž',\n past: '%sមុន',\n s: 'ប៉ុន្មានវិនាទី',\n ss: '%d វិនាទី',\n m: 'មួយនាទី',\n mm: '%d នាទី',\n h: 'មួយម៉ោង',\n hh: '%d ម៉ោង',\n d: 'មួយážáŸ’ងៃ',\n dd: '%d ážáŸ’ងៃ',\n M: 'មួយážáŸ‚',\n MM: '%d ážáŸ‚',\n y: 'មួយឆ្នាំ',\n yy: '%d ឆ្នាំ',\n },\n dayOfMonthOrdinalParse: /ទី\\d{1,2}/,\n ordinal: 'ទី%d',\n preparse: function (string) {\n return string.replace(/[១២៣៤៥៦៧៨៩០]/g, function (match) {\n return numberMap[match];\n });\n },\n postformat: function (string) {\n return string.replace(/\\d/g, function (match) {\n return symbolMap[match];\n });\n },\n week: {\n dow: 1, // Monday is the first day of the week.\n doy: 4, // The week that contains Jan 4th is the first week of the year.\n },\n });\n\n return km;\n\n})));\n","//! moment.js locale configuration\n//! locale : Kannada [kn]\n//! author : Rajeev Naik : https://github.com/rajeevnaikte\n\n;(function (global, factory) {\n typeof exports === 'object' && typeof module !== 'undefined'\n && typeof require === 'function' ? factory(require('../moment')) :\n typeof define === 'function' && define.amd ? define(['../moment'], factory) :\n factory(global.moment)\n}(this, (function (moment) { 'use strict';\n\n //! moment.js locale configuration\n\n var symbolMap = {\n 1: '೧',\n 2: '೨',\n 3: '೩',\n 4: '೪',\n 5: '೫',\n 6: '೬',\n 7: 'à³',\n 8: 'à³®',\n 9: '೯',\n 0: '೦',\n },\n numberMap = {\n '೧': '1',\n '೨': '2',\n '೩': '3',\n '೪': '4',\n '೫': '5',\n '೬': '6',\n 'à³': '7',\n 'à³®': '8',\n '೯': '9',\n '೦': '0',\n };\n\n var kn = moment.defineLocale('kn', {\n months: 'ಜನವರಿ_ಫೆಬà³à²°à²µà²°à²¿_ಮಾರà³à²šà³_à²à²ªà³à²°à²¿à²²à³_ಮೇ_ಜೂನà³_ಜà³à²²à³†à³–_ಆಗಸà³à²Ÿà³_ಸೆಪà³à²Ÿà³†à²‚ಬರà³_ಅಕà³à²Ÿà³†à³‚ೕಬರà³_ನವೆಂಬರà³_ಡಿಸೆಂಬರà³'.split(\n '_'\n ),\n monthsShort:\n 'ಜನ_ಫೆಬà³à²°_ಮಾರà³à²šà³_à²à²ªà³à²°à²¿à²²à³_ಮೇ_ಜೂನà³_ಜà³à²²à³†à³–_ಆಗಸà³à²Ÿà³_ಸೆಪà³à²Ÿà³†à²‚_ಅಕà³à²Ÿà³†à³‚ೕ_ನವೆಂ_ಡಿಸೆಂ'.split(\n '_'\n ),\n monthsParseExact: true,\n weekdays: 'à²à²¾à²¨à³à²µà²¾à²°_ಸೋಮವಾರ_ಮಂಗಳವಾರ_ಬà³à²§à²µà²¾à²°_ಗà³à²°à³à²µà²¾à²°_ಶà³à²•à³à²°à²µà²¾à²°_ಶನಿವಾರ'.split(\n '_'\n ),\n weekdaysShort: 'à²à²¾à²¨à³_ಸೋಮ_ಮಂಗಳ_ಬà³à²§_ಗà³à²°à³_ಶà³à²•à³à²°_ಶನಿ'.split('_'),\n weekdaysMin: 'à²à²¾_ಸೋ_ಮಂ_ಬà³_ಗà³_ಶà³_ಶ'.split('_'),\n longDateFormat: {\n LT: 'A h:mm',\n LTS: 'A h:mm:ss',\n L: 'DD/MM/YYYY',\n LL: 'D MMMM YYYY',\n LLL: 'D MMMM YYYY, A h:mm',\n LLLL: 'dddd, D MMMM YYYY, A h:mm',\n },\n calendar: {\n sameDay: '[ಇಂದà³] LT',\n nextDay: '[ನಾಳೆ] LT',\n nextWeek: 'dddd, LT',\n lastDay: '[ನಿನà³à²¨à³†] LT',\n lastWeek: '[ಕೊನೆಯ] dddd, LT',\n sameElse: 'L',\n },\n relativeTime: {\n future: '%s ನಂತರ',\n past: '%s ಹಿಂದೆ',\n s: 'ಕೆಲವೠಕà³à²·à²£à²—ಳà³',\n ss: '%d ಸೆಕೆಂಡà³à²—ಳà³',\n m: 'ಒಂದೠನಿಮಿಷ',\n mm: '%d ನಿಮಿಷ',\n h: 'ಒಂದೠಗಂಟೆ',\n hh: '%d ಗಂಟೆ',\n d: 'ಒಂದೠದಿನ',\n dd: '%d ದಿನ',\n M: 'ಒಂದೠತಿಂಗಳà³',\n MM: '%d ತಿಂಗಳà³',\n y: 'ಒಂದೠವರà³à²·',\n yy: '%d ವರà³à²·',\n },\n preparse: function (string) {\n return string.replace(/[೧೨೩೪೫೬à³à³®à³¯à³¦]/g, function (match) {\n return numberMap[match];\n });\n },\n postformat: function (string) {\n return string.replace(/\\d/g, function (match) {\n return symbolMap[match];\n });\n },\n meridiemParse: /ರಾತà³à²°à²¿|ಬೆಳಿಗà³à²—ೆ|ಮಧà³à²¯à²¾à²¹à³à²¨|ಸಂಜೆ/,\n meridiemHour: function (hour, meridiem) {\n if (hour === 12) {\n hour = 0;\n }\n if (meridiem === 'ರಾತà³à²°à²¿') {\n return hour < 4 ? hour : hour + 12;\n } else if (meridiem === 'ಬೆಳಿಗà³à²—ೆ') {\n return hour;\n } else if (meridiem === 'ಮಧà³à²¯à²¾à²¹à³à²¨') {\n return hour >= 10 ? hour : hour + 12;\n } else if (meridiem === 'ಸಂಜೆ') {\n return hour + 12;\n }\n },\n meridiem: function (hour, minute, isLower) {\n if (hour < 4) {\n return 'ರಾತà³à²°à²¿';\n } else if (hour < 10) {\n return 'ಬೆಳಿಗà³à²—ೆ';\n } else if (hour < 17) {\n return 'ಮಧà³à²¯à²¾à²¹à³à²¨';\n } else if (hour < 20) {\n return 'ಸಂಜೆ';\n } else {\n return 'ರಾತà³à²°à²¿';\n }\n },\n dayOfMonthOrdinalParse: /\\d{1,2}(ನೇ)/,\n ordinal: function (number) {\n return number + 'ನೇ';\n },\n week: {\n dow: 0, // Sunday is the first day of the week.\n doy: 6, // The week that contains Jan 6th is the first week of the year.\n },\n });\n\n return kn;\n\n})));\n","//! moment.js locale configuration\n//! locale : Korean [ko]\n//! author : Kyungwook, Park : https://github.com/kyungw00k\n//! author : Jeeeyul Lee <jeeeyul@gmail.com>\n\n;(function (global, factory) {\n typeof exports === 'object' && typeof module !== 'undefined'\n && typeof require === 'function' ? factory(require('../moment')) :\n typeof define === 'function' && define.amd ? define(['../moment'], factory) :\n factory(global.moment)\n}(this, (function (moment) { 'use strict';\n\n //! moment.js locale configuration\n\n var ko = moment.defineLocale('ko', {\n months: '1ì›”_2ì›”_3ì›”_4ì›”_5ì›”_6ì›”_7ì›”_8ì›”_9ì›”_10ì›”_11ì›”_12ì›”'.split('_'),\n monthsShort: '1ì›”_2ì›”_3ì›”_4ì›”_5ì›”_6ì›”_7ì›”_8ì›”_9ì›”_10ì›”_11ì›”_12ì›”'.split(\n '_'\n ),\n weekdays: 'ì¼ìš”ì¼_월요ì¼_화요ì¼_수요ì¼_목요ì¼_금요ì¼_í† ìš”ì¼'.split('_'),\n weekdaysShort: 'ì¼_ì›”_í™”_수_목_금_í† '.split('_'),\n weekdaysMin: 'ì¼_ì›”_í™”_수_목_금_í† '.split('_'),\n longDateFormat: {\n LT: 'A h:mm',\n LTS: 'A h:mm:ss',\n L: 'YYYY.MM.DD.',\n LL: 'YYYYë…„ MMMM Dì¼',\n LLL: 'YYYYë…„ MMMM Dì¼ A h:mm',\n LLLL: 'YYYYë…„ MMMM Dì¼ dddd A h:mm',\n l: 'YYYY.MM.DD.',\n ll: 'YYYYë…„ MMMM Dì¼',\n lll: 'YYYYë…„ MMMM Dì¼ A h:mm',\n llll: 'YYYYë…„ MMMM Dì¼ dddd A h:mm',\n },\n calendar: {\n sameDay: '오늘 LT',\n nextDay: 'ë‚´ì¼ LT',\n nextWeek: 'dddd LT',\n lastDay: 'ì–´ì œ LT',\n lastWeek: '지난주 dddd LT',\n sameElse: 'L',\n },\n relativeTime: {\n future: '%s 후',\n past: '%s ì „',\n s: '몇 ì´ˆ',\n ss: '%dì´ˆ',\n m: '1분',\n mm: '%d분',\n h: 'í•œ 시간',\n hh: '%d시간',\n d: '하루',\n dd: '%dì¼',\n M: 'í•œ 달',\n MM: '%d달',\n y: 'ì¼ ë…„',\n yy: '%dë…„',\n },\n dayOfMonthOrdinalParse: /\\d{1,2}(ì¼|ì›”|주)/,\n ordinal: function (number, period) {\n switch (period) {\n case 'd':\n case 'D':\n case 'DDD':\n return number + 'ì¼';\n case 'M':\n return number + 'ì›”';\n case 'w':\n case 'W':\n return number + '주';\n default:\n return number;\n }\n },\n meridiemParse: /ì˜¤ì „|오후/,\n isPM: function (token) {\n return token === '오후';\n },\n meridiem: function (hour, minute, isUpper) {\n return hour < 12 ? 'ì˜¤ì „' : '오후';\n },\n });\n\n return ko;\n\n})));\n","//! moment.js locale configuration\n//! locale : Kurdish [ku]\n//! author : Shahram Mebashar : https://github.com/ShahramMebashar\n\n;(function (global, factory) {\n typeof exports === 'object' && typeof module !== 'undefined'\n && typeof require === 'function' ? factory(require('../moment')) :\n typeof define === 'function' && define.amd ? define(['../moment'], factory) :\n factory(global.moment)\n}(this, (function (moment) { 'use strict';\n\n //! moment.js locale configuration\n\n var symbolMap = {\n 1: 'Ù¡',\n 2: 'Ù¢',\n 3: 'Ù£',\n 4: 'Ù¤',\n 5: 'Ù¥',\n 6: 'Ù¦',\n 7: 'Ù§',\n 8: 'Ù¨',\n 9: 'Ù©',\n 0: 'Ù ',\n },\n numberMap = {\n 'Ù¡': '1',\n 'Ù¢': '2',\n 'Ù£': '3',\n 'Ù¤': '4',\n 'Ù¥': '5',\n 'Ù¦': '6',\n 'Ù§': '7',\n 'Ù¨': '8',\n 'Ù©': '9',\n 'Ù ': '0',\n },\n months = [\n 'کانونی دووەم',\n 'شوبات',\n 'ئازار',\n 'نیسان',\n 'ئایار',\n 'Øوزەیران',\n 'تەمموز',\n 'ئاب',\n 'ئەیلوول',\n 'تشرینی یەكەم',\n 'تشرینی دووەم',\n 'كانونی یەکەم',\n ];\n\n var ku = moment.defineLocale('ku', {\n months: months,\n monthsShort: months,\n weekdays:\n 'یه‌كشه‌ممه‌_دووشه‌ممه‌_سێشه‌ممه‌_چوارشه‌ممه‌_پێنجشه‌ممه‌_هه‌ینی_شه‌ممه‌'.split(\n '_'\n ),\n weekdaysShort:\n 'یه‌كشه‌م_دووشه‌م_سێشه‌م_چوارشه‌م_پێنجشه‌م_هه‌ینی_شه‌ممه‌'.split('_'),\n weekdaysMin: 'ÛŒ_د_س_Ú†_Ù¾_Ù‡_Ø´'.split('_'),\n weekdaysParseExact: true,\n longDateFormat: {\n LT: 'HH:mm',\n LTS: 'HH:mm:ss',\n L: 'DD/MM/YYYY',\n LL: 'D MMMM YYYY',\n LLL: 'D MMMM YYYY HH:mm',\n LLLL: 'dddd, D MMMM YYYY HH:mm',\n },\n meridiemParse: /ئێواره‌|به‌یانی/,\n isPM: function (input) {\n return /ئێواره‌/.test(input);\n },\n meridiem: function (hour, minute, isLower) {\n if (hour < 12) {\n return 'به‌یانی';\n } else {\n return 'ئێواره‌';\n }\n },\n calendar: {\n sameDay: '[ئه‌مرۆ كاتژمێر] LT',\n nextDay: '[به‌یانی كاتژمێر] LT',\n nextWeek: 'dddd [كاتژمێر] LT',\n lastDay: '[دوێنێ كاتژمێر] LT',\n lastWeek: 'dddd [كاتژمێر] LT',\n sameElse: 'L',\n },\n relativeTime: {\n future: 'له‌ %s',\n past: '%s',\n s: 'چه‌ند چركه‌یه‌ك',\n ss: 'چركه‌ %d',\n m: 'یه‌ك خوله‌ك',\n mm: '%d خوله‌ك',\n h: 'یه‌ك كاتژمێر',\n hh: '%d كاتژمێر',\n d: 'یه‌ك Ú•Û†Ú˜',\n dd: '%d Ú•Û†Ú˜',\n M: 'یه‌ك مانگ',\n MM: '%d مانگ',\n y: 'یه‌ك ساڵ',\n yy: '%d ساڵ',\n },\n preparse: function (string) {\n return string\n .replace(/[١٢٣٤٥٦٧٨٩٠]/g, function (match) {\n return numberMap[match];\n })\n .replace(/ØŒ/g, ',');\n },\n postformat: function (string) {\n return string\n .replace(/\\d/g, function (match) {\n return symbolMap[match];\n })\n .replace(/,/g, 'ØŒ');\n },\n week: {\n dow: 6, // Saturday is the first day of the week.\n doy: 12, // The week that contains Jan 12th is the first week of the year.\n },\n });\n\n return ku;\n\n})));\n","//! moment.js locale configuration\n//! locale : Kyrgyz [ky]\n//! author : Chyngyz Arystan uulu : https://github.com/chyngyz\n\n;(function (global, factory) {\n typeof exports === 'object' && typeof module !== 'undefined'\n && typeof require === 'function' ? factory(require('../moment')) :\n typeof define === 'function' && define.amd ? define(['../moment'], factory) :\n factory(global.moment)\n}(this, (function (moment) { 'use strict';\n\n //! moment.js locale configuration\n\n var suffixes = {\n 0: '-чү',\n 1: '-чи',\n 2: '-чи',\n 3: '-чү',\n 4: '-чү',\n 5: '-чи',\n 6: '-чы',\n 7: '-чи',\n 8: '-чи',\n 9: '-чу',\n 10: '-чу',\n 20: '-чы',\n 30: '-чу',\n 40: '-чы',\n 50: '-чү',\n 60: '-чы',\n 70: '-чи',\n 80: '-чи',\n 90: '-чу',\n 100: '-чү',\n };\n\n var ky = moment.defineLocale('ky', {\n months: 'Ñнварь_февраль_март_апрель_май_июнь_июль_авгуÑÑ‚_ÑентÑбрь_октÑбрь_ноÑбрь_декабрь'.split(\n '_'\n ),\n monthsShort: 'Ñнв_фев_март_апр_май_июнь_июль_авг_Ñен_окт_ноÑ_дек'.split(\n '_'\n ),\n weekdays: 'Жекшемби_Дүйшөмбү_Шейшемби_Шаршемби_Бейшемби_Жума_Ишемби'.split(\n '_'\n ),\n weekdaysShort: 'Жек_Дүй_Шей_Шар_Бей_Жум_Ише'.split('_'),\n weekdaysMin: 'Жк_Дй_Шй_Шр_Бй_Жм_Иш'.split('_'),\n longDateFormat: {\n LT: 'HH:mm',\n LTS: 'HH:mm:ss',\n L: 'DD.MM.YYYY',\n LL: 'D MMMM YYYY',\n LLL: 'D MMMM YYYY HH:mm',\n LLLL: 'dddd, D MMMM YYYY HH:mm',\n },\n calendar: {\n sameDay: '[Бүгүн Ñаат] LT',\n nextDay: '[Ðртең Ñаат] LT',\n nextWeek: 'dddd [Ñаат] LT',\n lastDay: '[КечÑÑ Ñаат] LT',\n lastWeek: '[Өткөн аптанын] dddd [күнү] [Ñаат] LT',\n sameElse: 'L',\n },\n relativeTime: {\n future: '%s ичинде',\n past: '%s мурун',\n s: 'бирнече Ñекунд',\n ss: '%d Ñекунд',\n m: 'бир мүнөт',\n mm: '%d мүнөт',\n h: 'бир Ñаат',\n hh: '%d Ñаат',\n d: 'бир күн',\n dd: '%d күн',\n M: 'бир ай',\n MM: '%d ай',\n y: 'бир жыл',\n yy: '%d жыл',\n },\n dayOfMonthOrdinalParse: /\\d{1,2}-(чи|чы|чү|чу)/,\n ordinal: function (number) {\n var a = number % 10,\n b = number >= 100 ? 100 : null;\n return number + (suffixes[number] || suffixes[a] || suffixes[b]);\n },\n week: {\n dow: 1, // Monday is the first day of the week.\n doy: 7, // The week that contains Jan 7th is the first week of the year.\n },\n });\n\n return ky;\n\n})));\n","//! moment.js locale configuration\n//! locale : Luxembourgish [lb]\n//! author : mweimerskirch : https://github.com/mweimerskirch\n//! author : David Raison : https://github.com/kwisatz\n\n;(function (global, factory) {\n typeof exports === 'object' && typeof module !== 'undefined'\n && typeof require === 'function' ? factory(require('../moment')) :\n typeof define === 'function' && define.amd ? define(['../moment'], factory) :\n factory(global.moment)\n}(this, (function (moment) { 'use strict';\n\n //! moment.js locale configuration\n\n function processRelativeTime(number, withoutSuffix, key, isFuture) {\n var format = {\n m: ['eng Minutt', 'enger Minutt'],\n h: ['eng Stonn', 'enger Stonn'],\n d: ['een Dag', 'engem Dag'],\n M: ['ee Mount', 'engem Mount'],\n y: ['ee Joer', 'engem Joer'],\n };\n return withoutSuffix ? format[key][0] : format[key][1];\n }\n function processFutureTime(string) {\n var number = string.substr(0, string.indexOf(' '));\n if (eifelerRegelAppliesToNumber(number)) {\n return 'a ' + string;\n }\n return 'an ' + string;\n }\n function processPastTime(string) {\n var number = string.substr(0, string.indexOf(' '));\n if (eifelerRegelAppliesToNumber(number)) {\n return 'viru ' + string;\n }\n return 'virun ' + string;\n }\n /**\n * Returns true if the word before the given number loses the '-n' ending.\n * e.g. 'an 10 Deeg' but 'a 5 Deeg'\n *\n * @param number {integer}\n * @returns {boolean}\n */\n function eifelerRegelAppliesToNumber(number) {\n number = parseInt(number, 10);\n if (isNaN(number)) {\n return false;\n }\n if (number < 0) {\n // Negative Number --> always true\n return true;\n } else if (number < 10) {\n // Only 1 digit\n if (4 <= number && number <= 7) {\n return true;\n }\n return false;\n } else if (number < 100) {\n // 2 digits\n var lastDigit = number % 10,\n firstDigit = number / 10;\n if (lastDigit === 0) {\n return eifelerRegelAppliesToNumber(firstDigit);\n }\n return eifelerRegelAppliesToNumber(lastDigit);\n } else if (number < 10000) {\n // 3 or 4 digits --> recursively check first digit\n while (number >= 10) {\n number = number / 10;\n }\n return eifelerRegelAppliesToNumber(number);\n } else {\n // Anything larger than 4 digits: recursively check first n-3 digits\n number = number / 1000;\n return eifelerRegelAppliesToNumber(number);\n }\n }\n\n var lb = moment.defineLocale('lb', {\n months: 'Januar_Februar_Mäerz_Abrëll_Mee_Juni_Juli_August_September_Oktober_November_Dezember'.split(\n '_'\n ),\n monthsShort:\n 'Jan._Febr._Mrz._Abr._Mee_Jun._Jul._Aug._Sept._Okt._Nov._Dez.'.split(\n '_'\n ),\n monthsParseExact: true,\n weekdays:\n 'Sonndeg_Méindeg_Dënschdeg_Mëttwoch_Donneschdeg_Freideg_Samschdeg'.split(\n '_'\n ),\n weekdaysShort: 'So._Mé._Dë._Më._Do._Fr._Sa.'.split('_'),\n weekdaysMin: 'So_Mé_Dë_Më_Do_Fr_Sa'.split('_'),\n weekdaysParseExact: true,\n longDateFormat: {\n LT: 'H:mm [Auer]',\n LTS: 'H:mm:ss [Auer]',\n L: 'DD.MM.YYYY',\n LL: 'D. MMMM YYYY',\n LLL: 'D. MMMM YYYY H:mm [Auer]',\n LLLL: 'dddd, D. MMMM YYYY H:mm [Auer]',\n },\n calendar: {\n sameDay: '[Haut um] LT',\n sameElse: 'L',\n nextDay: '[Muer um] LT',\n nextWeek: 'dddd [um] LT',\n lastDay: '[Gëschter um] LT',\n lastWeek: function () {\n // Different date string for 'Dënschdeg' (Tuesday) and 'Donneschdeg' (Thursday) due to phonological rule\n switch (this.day()) {\n case 2:\n case 4:\n return '[Leschten] dddd [um] LT';\n default:\n return '[Leschte] dddd [um] LT';\n }\n },\n },\n relativeTime: {\n future: processFutureTime,\n past: processPastTime,\n s: 'e puer Sekonnen',\n ss: '%d Sekonnen',\n m: processRelativeTime,\n mm: '%d Minutten',\n h: processRelativeTime,\n hh: '%d Stonnen',\n d: processRelativeTime,\n dd: '%d Deeg',\n M: processRelativeTime,\n MM: '%d Méint',\n y: processRelativeTime,\n yy: '%d Joer',\n },\n dayOfMonthOrdinalParse: /\\d{1,2}\\./,\n ordinal: '%d.',\n week: {\n dow: 1, // Monday is the first day of the week.\n doy: 4, // The week that contains Jan 4th is the first week of the year.\n },\n });\n\n return lb;\n\n})));\n","//! moment.js locale configuration\n//! locale : Lao [lo]\n//! author : Ryan Hart : https://github.com/ryanhart2\n\n;(function (global, factory) {\n typeof exports === 'object' && typeof module !== 'undefined'\n && typeof require === 'function' ? factory(require('../moment')) :\n typeof define === 'function' && define.amd ? define(['../moment'], factory) :\n factory(global.moment)\n}(this, (function (moment) { 'use strict';\n\n //! moment.js locale configuration\n\n var lo = moment.defineLocale('lo', {\n months: 'ມັງàºàºàº™_àºàº¸àº¡àºžàº²_ມີນາ_ເມສາ_ພຶດສະພາ_ມິຖຸນາ_àºà»àº¥àº°àºàº»àº”_ສິງຫາ_àºàº±àº™àºàº²_ຕຸລາ_ພະຈິàº_ທັນວາ'.split(\n '_'\n ),\n monthsShort:\n 'ມັງàºàºàº™_àºàº¸àº¡àºžàº²_ມີນາ_ເມສາ_ພຶດສະພາ_ມິຖຸນາ_àºà»àº¥àº°àºàº»àº”_ສິງຫາ_àºàº±àº™àºàº²_ຕຸລາ_ພະຈິàº_ທັນວາ'.split(\n '_'\n ),\n weekdays: 'àºàº²àº—ິດ_ຈັນ_àºàº±àº‡àº„ານ_ພຸດ_ພະຫັດ_ສຸàº_ເສົາ'.split('_'),\n weekdaysShort: 'ທິດ_ຈັນ_àºàº±àº‡àº„ານ_ພຸດ_ພະຫັດ_ສຸàº_ເສົາ'.split('_'),\n weekdaysMin: 'ທ_ຈ_àºàº„_ພ_ພຫ_ສàº_ສ'.split('_'),\n weekdaysParseExact: true,\n longDateFormat: {\n LT: 'HH:mm',\n LTS: 'HH:mm:ss',\n L: 'DD/MM/YYYY',\n LL: 'D MMMM YYYY',\n LLL: 'D MMMM YYYY HH:mm',\n LLLL: 'ວັນdddd D MMMM YYYY HH:mm',\n },\n meridiemParse: /ຕàºàº™à»€àºŠàº»à»‰àº²|ຕàºàº™à»àº¥àº‡/,\n isPM: function (input) {\n return input === 'ຕàºàº™à»àº¥àº‡';\n },\n meridiem: function (hour, minute, isLower) {\n if (hour < 12) {\n return 'ຕàºàº™à»€àºŠàº»à»‰àº²';\n } else {\n return 'ຕàºàº™à»àº¥àº‡';\n }\n },\n calendar: {\n sameDay: '[ມື້ນີ້ເວລາ] LT',\n nextDay: '[ມື້àºàº·à»ˆàº™à»€àº§àº¥àº²] LT',\n nextWeek: '[ວັນ]dddd[ໜ້າເວລາ] LT',\n lastDay: '[ມື້ວານນີ້ເວລາ] LT',\n lastWeek: '[ວັນ]dddd[à»àº¥à»‰àº§àº™àºµà»‰à»€àº§àº¥àº²] LT',\n sameElse: 'L',\n },\n relativeTime: {\n future: 'àºàºµàº %s',\n past: '%sຜ່ານມາ',\n s: 'ບà»à»ˆà»€àº—ົ່າໃດວິນາທີ',\n ss: '%d ວິນາທີ',\n m: '1 ນາທີ',\n mm: '%d ນາທີ',\n h: '1 ຊົ່ວໂມງ',\n hh: '%d ຊົ່ວໂມງ',\n d: '1 ມື້',\n dd: '%d ມື້',\n M: '1 ເດືàºàº™',\n MM: '%d ເດືàºàº™',\n y: '1 ປີ',\n yy: '%d ປີ',\n },\n dayOfMonthOrdinalParse: /(ທີ່)\\d{1,2}/,\n ordinal: function (number) {\n return 'ທີ່' + number;\n },\n });\n\n return lo;\n\n})));\n","//! moment.js locale configuration\n//! locale : Lithuanian [lt]\n//! author : Mindaugas MozÅ«ras : https://github.com/mmozuras\n\n;(function (global, factory) {\n typeof exports === 'object' && typeof module !== 'undefined'\n && typeof require === 'function' ? factory(require('../moment')) :\n typeof define === 'function' && define.amd ? define(['../moment'], factory) :\n factory(global.moment)\n}(this, (function (moment) { 'use strict';\n\n //! moment.js locale configuration\n\n var units = {\n ss: 'sekundÄ—_sekundžių_sekundes',\n m: 'minutÄ—_minutÄ—s_minutÄ™',\n mm: 'minutÄ—s_minuÄių_minutes',\n h: 'valanda_valandos_valandÄ…',\n hh: 'valandos_valandų_valandas',\n d: 'diena_dienos_dienÄ…',\n dd: 'dienos_dienų_dienas',\n M: 'mÄ—nuo_mÄ—nesio_mÄ—nesį',\n MM: 'mÄ—nesiai_mÄ—nesių_mÄ—nesius',\n y: 'metai_metų_metus',\n yy: 'metai_metų_metus',\n };\n function translateSeconds(number, withoutSuffix, key, isFuture) {\n if (withoutSuffix) {\n return 'kelios sekundÄ—s';\n } else {\n return isFuture ? 'kelių sekundžių' : 'kelias sekundes';\n }\n }\n function translateSingular(number, withoutSuffix, key, isFuture) {\n return withoutSuffix\n ? forms(key)[0]\n : isFuture\n ? forms(key)[1]\n : forms(key)[2];\n }\n function special(number) {\n return number % 10 === 0 || (number > 10 && number < 20);\n }\n function forms(key) {\n return units[key].split('_');\n }\n function translate(number, withoutSuffix, key, isFuture) {\n var result = number + ' ';\n if (number === 1) {\n return (\n result + translateSingular(number, withoutSuffix, key[0], isFuture)\n );\n } else if (withoutSuffix) {\n return result + (special(number) ? forms(key)[1] : forms(key)[0]);\n } else {\n if (isFuture) {\n return result + forms(key)[1];\n } else {\n return result + (special(number) ? forms(key)[1] : forms(key)[2]);\n }\n }\n }\n var lt = moment.defineLocale('lt', {\n months: {\n format: 'sausio_vasario_kovo_balandžio_gegužės_birželio_liepos_rugpjÅ«Äio_rugsÄ—jo_spalio_lapkriÄio_gruodžio'.split(\n '_'\n ),\n standalone:\n 'sausis_vasaris_kovas_balandis_gegužė_birželis_liepa_rugpjÅ«tis_rugsÄ—jis_spalis_lapkritis_gruodis'.split(\n '_'\n ),\n isFormat: /D[oD]?(\\[[^\\[\\]]*\\]|\\s)+MMMM?|MMMM?(\\[[^\\[\\]]*\\]|\\s)+D[oD]?/,\n },\n monthsShort: 'sau_vas_kov_bal_geg_bir_lie_rgp_rgs_spa_lap_grd'.split('_'),\n weekdays: {\n format: 'sekmadienį_pirmadienį_antradienį_treÄiadienį_ketvirtadienį_penktadienį_Å¡eÅ¡tadienį'.split(\n '_'\n ),\n standalone:\n 'sekmadienis_pirmadienis_antradienis_treÄiadienis_ketvirtadienis_penktadienis_Å¡eÅ¡tadienis'.split(\n '_'\n ),\n isFormat: /dddd HH:mm/,\n },\n weekdaysShort: 'Sek_Pir_Ant_Tre_Ket_Pen_Å eÅ¡'.split('_'),\n weekdaysMin: 'S_P_A_T_K_Pn_Å '.split('_'),\n weekdaysParseExact: true,\n longDateFormat: {\n LT: 'HH:mm',\n LTS: 'HH:mm:ss',\n L: 'YYYY-MM-DD',\n LL: 'YYYY [m.] MMMM D [d.]',\n LLL: 'YYYY [m.] MMMM D [d.], HH:mm [val.]',\n LLLL: 'YYYY [m.] MMMM D [d.], dddd, HH:mm [val.]',\n l: 'YYYY-MM-DD',\n ll: 'YYYY [m.] MMMM D [d.]',\n lll: 'YYYY [m.] MMMM D [d.], HH:mm [val.]',\n llll: 'YYYY [m.] MMMM D [d.], ddd, HH:mm [val.]',\n },\n calendar: {\n sameDay: '[Å iandien] LT',\n nextDay: '[Rytoj] LT',\n nextWeek: 'dddd LT',\n lastDay: '[Vakar] LT',\n lastWeek: '[PraÄ—jusį] dddd LT',\n sameElse: 'L',\n },\n relativeTime: {\n future: 'po %s',\n past: 'prieÅ¡ %s',\n s: translateSeconds,\n ss: translate,\n m: translateSingular,\n mm: translate,\n h: translateSingular,\n hh: translate,\n d: translateSingular,\n dd: translate,\n M: translateSingular,\n MM: translate,\n y: translateSingular,\n yy: translate,\n },\n dayOfMonthOrdinalParse: /\\d{1,2}-oji/,\n ordinal: function (number) {\n return number + '-oji';\n },\n week: {\n dow: 1, // Monday is the first day of the week.\n doy: 4, // The week that contains Jan 4th is the first week of the year.\n },\n });\n\n return lt;\n\n})));\n","//! moment.js locale configuration\n//! locale : Latvian [lv]\n//! author : Kristaps Karlsons : https://github.com/skakri\n//! author : JÄnis Elmeris : https://github.com/JanisE\n\n;(function (global, factory) {\n typeof exports === 'object' && typeof module !== 'undefined'\n && typeof require === 'function' ? factory(require('../moment')) :\n typeof define === 'function' && define.amd ? define(['../moment'], factory) :\n factory(global.moment)\n}(this, (function (moment) { 'use strict';\n\n //! moment.js locale configuration\n\n var units = {\n ss: 'sekundes_sekundÄ“m_sekunde_sekundes'.split('_'),\n m: 'minÅ«tes_minÅ«tÄ“m_minÅ«te_minÅ«tes'.split('_'),\n mm: 'minÅ«tes_minÅ«tÄ“m_minÅ«te_minÅ«tes'.split('_'),\n h: 'stundas_stundÄm_stunda_stundas'.split('_'),\n hh: 'stundas_stundÄm_stunda_stundas'.split('_'),\n d: 'dienas_dienÄm_diena_dienas'.split('_'),\n dd: 'dienas_dienÄm_diena_dienas'.split('_'),\n M: 'mÄ“neÅ¡a_mÄ“neÅ¡iem_mÄ“nesis_mÄ“neÅ¡i'.split('_'),\n MM: 'mÄ“neÅ¡a_mÄ“neÅ¡iem_mÄ“nesis_mÄ“neÅ¡i'.split('_'),\n y: 'gada_gadiem_gads_gadi'.split('_'),\n yy: 'gada_gadiem_gads_gadi'.split('_'),\n };\n /**\n * @param withoutSuffix boolean true = a length of time; false = before/after a period of time.\n */\n function format(forms, number, withoutSuffix) {\n if (withoutSuffix) {\n // E.g. \"21 minÅ«te\", \"3 minÅ«tes\".\n return number % 10 === 1 && number % 100 !== 11 ? forms[2] : forms[3];\n } else {\n // E.g. \"21 minÅ«tes\" as in \"pÄ“c 21 minÅ«tes\".\n // E.g. \"3 minÅ«tÄ“m\" as in \"pÄ“c 3 minÅ«tÄ“m\".\n return number % 10 === 1 && number % 100 !== 11 ? forms[0] : forms[1];\n }\n }\n function relativeTimeWithPlural(number, withoutSuffix, key) {\n return number + ' ' + format(units[key], number, withoutSuffix);\n }\n function relativeTimeWithSingular(number, withoutSuffix, key) {\n return format(units[key], number, withoutSuffix);\n }\n function relativeSeconds(number, withoutSuffix) {\n return withoutSuffix ? 'dažas sekundes' : 'dažÄm sekundÄ“m';\n }\n\n var lv = moment.defineLocale('lv', {\n months: 'janvÄris_februÄris_marts_aprÄ«lis_maijs_jÅ«nijs_jÅ«lijs_augusts_septembris_oktobris_novembris_decembris'.split(\n '_'\n ),\n monthsShort: 'jan_feb_mar_apr_mai_jÅ«n_jÅ«l_aug_sep_okt_nov_dec'.split('_'),\n weekdays:\n 'svÄ“tdiena_pirmdiena_otrdiena_treÅ¡diena_ceturtdiena_piektdiena_sestdiena'.split(\n '_'\n ),\n weekdaysShort: 'Sv_P_O_T_C_Pk_S'.split('_'),\n weekdaysMin: 'Sv_P_O_T_C_Pk_S'.split('_'),\n weekdaysParseExact: true,\n longDateFormat: {\n LT: 'HH:mm',\n LTS: 'HH:mm:ss',\n L: 'DD.MM.YYYY.',\n LL: 'YYYY. [gada] D. MMMM',\n LLL: 'YYYY. [gada] D. MMMM, HH:mm',\n LLLL: 'YYYY. [gada] D. MMMM, dddd, HH:mm',\n },\n calendar: {\n sameDay: '[Å odien pulksten] LT',\n nextDay: '[RÄ«t pulksten] LT',\n nextWeek: 'dddd [pulksten] LT',\n lastDay: '[Vakar pulksten] LT',\n lastWeek: '[PagÄjuÅ¡Ä] dddd [pulksten] LT',\n sameElse: 'L',\n },\n relativeTime: {\n future: 'pÄ“c %s',\n past: 'pirms %s',\n s: relativeSeconds,\n ss: relativeTimeWithPlural,\n m: relativeTimeWithSingular,\n mm: relativeTimeWithPlural,\n h: relativeTimeWithSingular,\n hh: relativeTimeWithPlural,\n d: relativeTimeWithSingular,\n dd: relativeTimeWithPlural,\n M: relativeTimeWithSingular,\n MM: relativeTimeWithPlural,\n y: relativeTimeWithSingular,\n yy: relativeTimeWithPlural,\n },\n dayOfMonthOrdinalParse: /\\d{1,2}\\./,\n ordinal: '%d.',\n week: {\n dow: 1, // Monday is the first day of the week.\n doy: 4, // The week that contains Jan 4th is the first week of the year.\n },\n });\n\n return lv;\n\n})));\n","//! moment.js locale configuration\n//! locale : Montenegrin [me]\n//! author : Miodrag NikaÄ <miodrag@restartit.me> : https://github.com/miodragnikac\n\n;(function (global, factory) {\n typeof exports === 'object' && typeof module !== 'undefined'\n && typeof require === 'function' ? factory(require('../moment')) :\n typeof define === 'function' && define.amd ? define(['../moment'], factory) :\n factory(global.moment)\n}(this, (function (moment) { 'use strict';\n\n //! moment.js locale configuration\n\n var translator = {\n words: {\n //Different grammatical cases\n ss: ['sekund', 'sekunda', 'sekundi'],\n m: ['jedan minut', 'jednog minuta'],\n mm: ['minut', 'minuta', 'minuta'],\n h: ['jedan sat', 'jednog sata'],\n hh: ['sat', 'sata', 'sati'],\n dd: ['dan', 'dana', 'dana'],\n MM: ['mjesec', 'mjeseca', 'mjeseci'],\n yy: ['godina', 'godine', 'godina'],\n },\n correctGrammaticalCase: function (number, wordKey) {\n return number === 1\n ? wordKey[0]\n : number >= 2 && number <= 4\n ? wordKey[1]\n : wordKey[2];\n },\n translate: function (number, withoutSuffix, key) {\n var wordKey = translator.words[key];\n if (key.length === 1) {\n return withoutSuffix ? wordKey[0] : wordKey[1];\n } else {\n return (\n number +\n ' ' +\n translator.correctGrammaticalCase(number, wordKey)\n );\n }\n },\n };\n\n var me = moment.defineLocale('me', {\n months: 'januar_februar_mart_april_maj_jun_jul_avgust_septembar_oktobar_novembar_decembar'.split(\n '_'\n ),\n monthsShort:\n 'jan._feb._mar._apr._maj_jun_jul_avg._sep._okt._nov._dec.'.split('_'),\n monthsParseExact: true,\n weekdays: 'nedjelja_ponedjeljak_utorak_srijeda_Äetvrtak_petak_subota'.split(\n '_'\n ),\n weekdaysShort: 'ned._pon._uto._sri._Äet._pet._sub.'.split('_'),\n weekdaysMin: 'ne_po_ut_sr_Äe_pe_su'.split('_'),\n weekdaysParseExact: true,\n longDateFormat: {\n LT: 'H:mm',\n LTS: 'H:mm:ss',\n L: 'DD.MM.YYYY',\n LL: 'D. MMMM YYYY',\n LLL: 'D. MMMM YYYY H:mm',\n LLLL: 'dddd, D. MMMM YYYY H:mm',\n },\n calendar: {\n sameDay: '[danas u] LT',\n nextDay: '[sjutra u] LT',\n\n nextWeek: function () {\n switch (this.day()) {\n case 0:\n return '[u] [nedjelju] [u] LT';\n case 3:\n return '[u] [srijedu] [u] LT';\n case 6:\n return '[u] [subotu] [u] LT';\n case 1:\n case 2:\n case 4:\n case 5:\n return '[u] dddd [u] LT';\n }\n },\n lastDay: '[juÄe u] LT',\n lastWeek: function () {\n var lastWeekDays = [\n '[proÅ¡le] [nedjelje] [u] LT',\n '[proÅ¡log] [ponedjeljka] [u] LT',\n '[proÅ¡log] [utorka] [u] LT',\n '[proÅ¡le] [srijede] [u] LT',\n '[proÅ¡log] [Äetvrtka] [u] LT',\n '[proÅ¡log] [petka] [u] LT',\n '[proÅ¡le] [subote] [u] LT',\n ];\n return lastWeekDays[this.day()];\n },\n sameElse: 'L',\n },\n relativeTime: {\n future: 'za %s',\n past: 'prije %s',\n s: 'nekoliko sekundi',\n ss: translator.translate,\n m: translator.translate,\n mm: translator.translate,\n h: translator.translate,\n hh: translator.translate,\n d: 'dan',\n dd: translator.translate,\n M: 'mjesec',\n MM: translator.translate,\n y: 'godinu',\n yy: translator.translate,\n },\n dayOfMonthOrdinalParse: /\\d{1,2}\\./,\n ordinal: '%d.',\n week: {\n dow: 1, // Monday is the first day of the week.\n doy: 7, // The week that contains Jan 7th is the first week of the year.\n },\n });\n\n return me;\n\n})));\n","//! moment.js locale configuration\n//! locale : Maori [mi]\n//! author : John Corrigan <robbiecloset@gmail.com> : https://github.com/johnideal\n\n;(function (global, factory) {\n typeof exports === 'object' && typeof module !== 'undefined'\n && typeof require === 'function' ? factory(require('../moment')) :\n typeof define === 'function' && define.amd ? define(['../moment'], factory) :\n factory(global.moment)\n}(this, (function (moment) { 'use strict';\n\n //! moment.js locale configuration\n\n var mi = moment.defineLocale('mi', {\n months: 'Kohi-tÄte_Hui-tanguru_PoutÅ«-te-rangi_Paenga-whÄwhÄ_Haratua_Pipiri_HÅngoingoi_Here-turi-kÅkÄ_Mahuru_Whiringa-Ä-nuku_Whiringa-Ä-rangi_Hakihea'.split(\n '_'\n ),\n monthsShort:\n 'Kohi_Hui_Pou_Pae_Hara_Pipi_HÅngoi_Here_Mahu_Whi-nu_Whi-ra_Haki'.split(\n '_'\n ),\n monthsRegex: /(?:['a-z\\u0101\\u014D\\u016B]+\\-?){1,3}/i,\n monthsStrictRegex: /(?:['a-z\\u0101\\u014D\\u016B]+\\-?){1,3}/i,\n monthsShortRegex: /(?:['a-z\\u0101\\u014D\\u016B]+\\-?){1,3}/i,\n monthsShortStrictRegex: /(?:['a-z\\u0101\\u014D\\u016B]+\\-?){1,2}/i,\n weekdays: 'RÄtapu_Mane_TÅ«rei_Wenerei_TÄite_Paraire_HÄtarei'.split('_'),\n weekdaysShort: 'Ta_Ma_TÅ«_We_TÄi_Pa_HÄ'.split('_'),\n weekdaysMin: 'Ta_Ma_TÅ«_We_TÄi_Pa_HÄ'.split('_'),\n longDateFormat: {\n LT: 'HH:mm',\n LTS: 'HH:mm:ss',\n L: 'DD/MM/YYYY',\n LL: 'D MMMM YYYY',\n LLL: 'D MMMM YYYY [i] HH:mm',\n LLLL: 'dddd, D MMMM YYYY [i] HH:mm',\n },\n calendar: {\n sameDay: '[i teie mahana, i] LT',\n nextDay: '[apopo i] LT',\n nextWeek: 'dddd [i] LT',\n lastDay: '[inanahi i] LT',\n lastWeek: 'dddd [whakamutunga i] LT',\n sameElse: 'L',\n },\n relativeTime: {\n future: 'i roto i %s',\n past: '%s i mua',\n s: 'te hÄ“kona ruarua',\n ss: '%d hÄ“kona',\n m: 'he meneti',\n mm: '%d meneti',\n h: 'te haora',\n hh: '%d haora',\n d: 'he ra',\n dd: '%d ra',\n M: 'he marama',\n MM: '%d marama',\n y: 'he tau',\n yy: '%d tau',\n },\n dayOfMonthOrdinalParse: /\\d{1,2}º/,\n ordinal: '%dº',\n week: {\n dow: 1, // Monday is the first day of the week.\n doy: 4, // The week that contains Jan 4th is the first week of the year.\n },\n });\n\n return mi;\n\n})));\n","//! moment.js locale configuration\n//! locale : Macedonian [mk]\n//! author : Borislav Mickov : https://github.com/B0k0\n//! author : Sashko Todorov : https://github.com/bkyceh\n\n;(function (global, factory) {\n typeof exports === 'object' && typeof module !== 'undefined'\n && typeof require === 'function' ? factory(require('../moment')) :\n typeof define === 'function' && define.amd ? define(['../moment'], factory) :\n factory(global.moment)\n}(this, (function (moment) { 'use strict';\n\n //! moment.js locale configuration\n\n var mk = moment.defineLocale('mk', {\n months: 'јануари_февруари_март_април_мај_јуни_јули_авгуÑÑ‚_Ñептември_октомври_ноември_декември'.split(\n '_'\n ),\n monthsShort: 'јан_фев_мар_апр_мај_јун_јул_авг_Ñеп_окт_ное_дек'.split('_'),\n weekdays: 'недела_понеделник_вторник_Ñреда_четврток_петок_Ñабота'.split(\n '_'\n ),\n weekdaysShort: 'нед_пон_вто_Ñре_чет_пет_Ñаб'.split('_'),\n weekdaysMin: 'нe_пo_вт_ÑÑ€_че_пе_Ña'.split('_'),\n longDateFormat: {\n LT: 'H:mm',\n LTS: 'H:mm:ss',\n L: 'D.MM.YYYY',\n LL: 'D MMMM YYYY',\n LLL: 'D MMMM YYYY H:mm',\n LLLL: 'dddd, D MMMM YYYY H:mm',\n },\n calendar: {\n sameDay: '[Ð”ÐµÐ½ÐµÑ Ð²Ð¾] LT',\n nextDay: '[Утре во] LT',\n nextWeek: '[Во] dddd [во] LT',\n lastDay: '[Вчера во] LT',\n lastWeek: function () {\n switch (this.day()) {\n case 0:\n case 3:\n case 6:\n return '[Изминатата] dddd [во] LT';\n case 1:\n case 2:\n case 4:\n case 5:\n return '[Изминатиот] dddd [во] LT';\n }\n },\n sameElse: 'L',\n },\n relativeTime: {\n future: 'за %s',\n past: 'пред %s',\n s: 'неколку Ñекунди',\n ss: '%d Ñекунди',\n m: 'една минута',\n mm: '%d минути',\n h: 'еден чаÑ',\n hh: '%d чаÑа',\n d: 'еден ден',\n dd: '%d дена',\n M: 'еден меÑец',\n MM: '%d меÑеци',\n y: 'една година',\n yy: '%d години',\n },\n dayOfMonthOrdinalParse: /\\d{1,2}-(ев|ен|ти|ви|ри|ми)/,\n ordinal: function (number) {\n var lastDigit = number % 10,\n last2Digits = number % 100;\n if (number === 0) {\n return number + '-ев';\n } else if (last2Digits === 0) {\n return number + '-ен';\n } else if (last2Digits > 10 && last2Digits < 20) {\n return number + '-ти';\n } else if (lastDigit === 1) {\n return number + '-ви';\n } else if (lastDigit === 2) {\n return number + '-ри';\n } else if (lastDigit === 7 || lastDigit === 8) {\n return number + '-ми';\n } else {\n return number + '-ти';\n }\n },\n week: {\n dow: 1, // Monday is the first day of the week.\n doy: 7, // The week that contains Jan 7th is the first week of the year.\n },\n });\n\n return mk;\n\n})));\n","//! moment.js locale configuration\n//! locale : Malayalam [ml]\n//! author : Floyd Pink : https://github.com/floydpink\n\n;(function (global, factory) {\n typeof exports === 'object' && typeof module !== 'undefined'\n && typeof require === 'function' ? factory(require('../moment')) :\n typeof define === 'function' && define.amd ? define(['../moment'], factory) :\n factory(global.moment)\n}(this, (function (moment) { 'use strict';\n\n //! moment.js locale configuration\n\n var ml = moment.defineLocale('ml', {\n months: 'ജനàµà´µà´°à´¿_ഫെബàµà´°àµà´µà´°à´¿_മാർചàµà´šàµ_à´à´ªàµà´°à´¿àµ½_മേയàµ_ജൂൺ_ജൂലൈ_à´“à´—à´¸àµà´±àµà´±àµ_സെപàµà´±àµà´±à´‚ബർ_à´’à´•àµà´Ÿàµ‹à´¬àµ¼_നവംബർ_ഡിസംബർ'.split(\n '_'\n ),\n monthsShort:\n 'ജനàµ._ഫെബàµà´°àµ._മാർ._à´à´ªàµà´°à´¿._മേയàµ_ജൂൺ_ജൂലൈ._à´“à´—._സെപàµà´±àµà´±._à´’à´•àµà´Ÿàµ‹._നവം._ഡിസം.'.split(\n '_'\n ),\n monthsParseExact: true,\n weekdays:\n 'ഞായറാഴàµà´š_തിങàµà´•à´³à´¾à´´àµà´š_ചൊവàµà´µà´¾à´´àµà´š_à´¬àµà´§à´¨à´¾à´´àµà´š_à´µàµà´¯à´¾à´´à´¾à´´àµà´š_വെളàµà´³à´¿à´¯à´¾à´´àµà´š_ശനിയാഴàµà´š'.split(\n '_'\n ),\n weekdaysShort: 'ഞായർ_തിങàµà´•àµ¾_ചൊവàµà´µ_à´¬àµà´§àµ»_à´µàµà´¯à´¾à´´à´‚_വെളàµà´³à´¿_ശനി'.split('_'),\n weekdaysMin: 'à´žà´¾_തി_ചൊ_à´¬àµ_à´µàµà´¯à´¾_വെ_à´¶'.split('_'),\n longDateFormat: {\n LT: 'A h:mm -à´¨àµ',\n LTS: 'A h:mm:ss -à´¨àµ',\n L: 'DD/MM/YYYY',\n LL: 'D MMMM YYYY',\n LLL: 'D MMMM YYYY, A h:mm -à´¨àµ',\n LLLL: 'dddd, D MMMM YYYY, A h:mm -à´¨àµ',\n },\n calendar: {\n sameDay: '[ഇനàµà´¨àµ] LT',\n nextDay: '[നാളെ] LT',\n nextWeek: 'dddd, LT',\n lastDay: '[ഇനàµà´¨à´²àµ†] LT',\n lastWeek: '[à´•à´´à´¿à´žàµà´ž] dddd, LT',\n sameElse: 'L',\n },\n relativeTime: {\n future: '%s à´•à´´à´¿à´žàµà´žàµ',\n past: '%s à´®àµàµ»à´ªàµ',\n s: 'അൽപ നിമിഷങàµà´™àµ¾',\n ss: '%d സെകàµà´•àµ»à´¡àµ',\n m: 'ഒരൠമിനിറàµà´±àµ',\n mm: '%d മിനിറàµà´±àµ',\n h: 'ഒരൠമണികàµà´•àµ‚ർ',\n hh: '%d മണികàµà´•àµ‚ർ',\n d: 'ഒരൠദിവസം',\n dd: '%d ദിവസം',\n M: 'ഒരൠമാസം',\n MM: '%d മാസം',\n y: 'ഒരൠവർഷം',\n yy: '%d വർഷം',\n },\n meridiemParse: /രാതàµà´°à´¿|രാവിലെ|ഉചàµà´š à´•à´´à´¿à´žàµà´žàµ|വൈകàµà´¨àµà´¨àµ‡à´°à´‚|രാതàµà´°à´¿/i,\n meridiemHour: function (hour, meridiem) {\n if (hour === 12) {\n hour = 0;\n }\n if (\n (meridiem === 'രാതàµà´°à´¿' && hour >= 4) ||\n meridiem === 'ഉചàµà´š à´•à´´à´¿à´žàµà´žàµ' ||\n meridiem === 'വൈകàµà´¨àµà´¨àµ‡à´°à´‚'\n ) {\n return hour + 12;\n } else {\n return hour;\n }\n },\n meridiem: function (hour, minute, isLower) {\n if (hour < 4) {\n return 'രാതàµà´°à´¿';\n } else if (hour < 12) {\n return 'രാവിലെ';\n } else if (hour < 17) {\n return 'ഉചàµà´š à´•à´´à´¿à´žàµà´žàµ';\n } else if (hour < 20) {\n return 'വൈകàµà´¨àµà´¨àµ‡à´°à´‚';\n } else {\n return 'രാതàµà´°à´¿';\n }\n },\n });\n\n return ml;\n\n})));\n","//! moment.js locale configuration\n//! locale : Mongolian [mn]\n//! author : Javkhlantugs Nyamdorj : https://github.com/javkhaanj7\n\n;(function (global, factory) {\n typeof exports === 'object' && typeof module !== 'undefined'\n && typeof require === 'function' ? factory(require('../moment')) :\n typeof define === 'function' && define.amd ? define(['../moment'], factory) :\n factory(global.moment)\n}(this, (function (moment) { 'use strict';\n\n //! moment.js locale configuration\n\n function translate(number, withoutSuffix, key, isFuture) {\n switch (key) {\n case 's':\n return withoutSuffix ? 'Ñ…ÑдхÑн Ñекунд' : 'Ñ…ÑдхÑн Ñекундын';\n case 'ss':\n return number + (withoutSuffix ? ' Ñекунд' : ' Ñекундын');\n case 'm':\n case 'mm':\n return number + (withoutSuffix ? ' минут' : ' минутын');\n case 'h':\n case 'hh':\n return number + (withoutSuffix ? ' цаг' : ' цагийн');\n case 'd':\n case 'dd':\n return number + (withoutSuffix ? ' өдөр' : ' өдрийн');\n case 'M':\n case 'MM':\n return number + (withoutSuffix ? ' Ñар' : ' Ñарын');\n case 'y':\n case 'yy':\n return number + (withoutSuffix ? ' жил' : ' жилийн');\n default:\n return number;\n }\n }\n\n var mn = moment.defineLocale('mn', {\n months: 'ÐÑгдүгÑÑÑ€ Ñар_Хоёрдугаар Ñар_Гуравдугаар Ñар_ДөрөвдүгÑÑÑ€ Ñар_Тавдугаар Ñар_Зургадугаар Ñар_Долдугаар Ñар_Ðаймдугаар Ñар_ЕÑдүгÑÑÑ€ Ñар_Ðравдугаар Ñар_Ðрван нÑгдүгÑÑÑ€ Ñар_Ðрван хоёрдугаар Ñар'.split(\n '_'\n ),\n monthsShort:\n '1 Ñар_2 Ñар_3 Ñар_4 Ñар_5 Ñар_6 Ñар_7 Ñар_8 Ñар_9 Ñар_10 Ñар_11 Ñар_12 Ñар'.split(\n '_'\n ),\n monthsParseExact: true,\n weekdays: 'ÐÑм_Даваа_ÐœÑгмар_Лхагва_ПүрÑв_БааÑан_БÑмба'.split('_'),\n weekdaysShort: 'ÐÑм_Дав_ÐœÑг_Лха_Пүр_Баа_БÑм'.split('_'),\n weekdaysMin: 'ÐÑ_Да_ÐœÑ_Лх_Пү_Ба_БÑ'.split('_'),\n weekdaysParseExact: true,\n longDateFormat: {\n LT: 'HH:mm',\n LTS: 'HH:mm:ss',\n L: 'YYYY-MM-DD',\n LL: 'YYYY оны MMMMын D',\n LLL: 'YYYY оны MMMMын D HH:mm',\n LLLL: 'dddd, YYYY оны MMMMын D HH:mm',\n },\n meridiemParse: /Ò®Ó¨|ҮХ/i,\n isPM: function (input) {\n return input === 'ҮХ';\n },\n meridiem: function (hour, minute, isLower) {\n if (hour < 12) {\n return 'Ò®Ó¨';\n } else {\n return 'ҮХ';\n }\n },\n calendar: {\n sameDay: '[Өнөөдөр] LT',\n nextDay: '[Маргааш] LT',\n nextWeek: '[ИрÑÑ…] dddd LT',\n lastDay: '[Өчигдөр] LT',\n lastWeek: '[ӨнгөрÑөн] dddd LT',\n sameElse: 'L',\n },\n relativeTime: {\n future: '%s дараа',\n past: '%s өмнө',\n s: translate,\n ss: translate,\n m: translate,\n mm: translate,\n h: translate,\n hh: translate,\n d: translate,\n dd: translate,\n M: translate,\n MM: translate,\n y: translate,\n yy: translate,\n },\n dayOfMonthOrdinalParse: /\\d{1,2} өдөр/,\n ordinal: function (number, period) {\n switch (period) {\n case 'd':\n case 'D':\n case 'DDD':\n return number + ' өдөр';\n default:\n return number;\n }\n },\n });\n\n return mn;\n\n})));\n","//! moment.js locale configuration\n//! locale : Marathi [mr]\n//! author : Harshad Kale : https://github.com/kalehv\n//! author : Vivek Athalye : https://github.com/vnathalye\n\n;(function (global, factory) {\n typeof exports === 'object' && typeof module !== 'undefined'\n && typeof require === 'function' ? factory(require('../moment')) :\n typeof define === 'function' && define.amd ? define(['../moment'], factory) :\n factory(global.moment)\n}(this, (function (moment) { 'use strict';\n\n //! moment.js locale configuration\n\n var symbolMap = {\n 1: '१',\n 2: '२',\n 3: '३',\n 4: '४',\n 5: '५',\n 6: '६',\n 7: 'à¥',\n 8: '८',\n 9: '९',\n 0: '०',\n },\n numberMap = {\n '१': '1',\n '२': '2',\n '३': '3',\n '४': '4',\n '५': '5',\n '६': '6',\n 'à¥': '7',\n '८': '8',\n '९': '9',\n '०': '0',\n };\n\n function relativeTimeMr(number, withoutSuffix, string, isFuture) {\n var output = '';\n if (withoutSuffix) {\n switch (string) {\n case 's':\n output = 'काही सेकंद';\n break;\n case 'ss':\n output = '%d सेकंद';\n break;\n case 'm':\n output = 'à¤à¤• मिनिट';\n break;\n case 'mm':\n output = '%d मिनिटे';\n break;\n case 'h':\n output = 'à¤à¤• तास';\n break;\n case 'hh':\n output = '%d तास';\n break;\n case 'd':\n output = 'à¤à¤• दिवस';\n break;\n case 'dd':\n output = '%d दिवस';\n break;\n case 'M':\n output = 'à¤à¤• महिना';\n break;\n case 'MM':\n output = '%d महिने';\n break;\n case 'y':\n output = 'à¤à¤• वरà¥à¤·';\n break;\n case 'yy':\n output = '%d वरà¥à¤·à¥‡';\n break;\n }\n } else {\n switch (string) {\n case 's':\n output = 'काही सेकंदां';\n break;\n case 'ss':\n output = '%d सेकंदां';\n break;\n case 'm':\n output = 'à¤à¤•à¤¾ मिनिटा';\n break;\n case 'mm':\n output = '%d मिनिटां';\n break;\n case 'h':\n output = 'à¤à¤•à¤¾ तासा';\n break;\n case 'hh':\n output = '%d तासां';\n break;\n case 'd':\n output = 'à¤à¤•à¤¾ दिवसा';\n break;\n case 'dd':\n output = '%d दिवसां';\n break;\n case 'M':\n output = 'à¤à¤•à¤¾ महिनà¥à¤¯à¤¾';\n break;\n case 'MM':\n output = '%d महिनà¥à¤¯à¤¾à¤‚';\n break;\n case 'y':\n output = 'à¤à¤•à¤¾ वरà¥à¤·à¤¾';\n break;\n case 'yy':\n output = '%d वरà¥à¤·à¤¾à¤‚';\n break;\n }\n }\n return output.replace(/%d/i, number);\n }\n\n var mr = moment.defineLocale('mr', {\n months: 'जानेवारी_फेबà¥à¤°à¥à¤µà¤¾à¤°à¥€_मारà¥à¤š_à¤à¤ªà¥à¤°à¤¿à¤²_मे_जून_जà¥à¤²à¥ˆ_ऑगसà¥à¤Ÿ_सपà¥à¤Ÿà¥‡à¤‚बर_ऑकà¥à¤Ÿà¥‹à¤¬à¤°_नोवà¥à¤¹à¥‡à¤‚बर_डिसेंबर'.split(\n '_'\n ),\n monthsShort:\n 'जाने._फेबà¥à¤°à¥._मारà¥à¤š._à¤à¤ªà¥à¤°à¤¿._मे._जून._जà¥à¤²à¥ˆ._ऑग._सपà¥à¤Ÿà¥‡à¤‚._ऑकà¥à¤Ÿà¥‹._नोवà¥à¤¹à¥‡à¤‚._डिसें.'.split(\n '_'\n ),\n monthsParseExact: true,\n weekdays: 'रविवार_सोमवार_मंगळवार_बà¥à¤§à¤µà¤¾à¤°_गà¥à¤°à¥‚वार_शà¥à¤•à¥à¤°à¤µà¤¾à¤°_शनिवार'.split('_'),\n weekdaysShort: 'रवि_सोम_मंगळ_बà¥à¤§_गà¥à¤°à¥‚_शà¥à¤•à¥à¤°_शनि'.split('_'),\n weekdaysMin: 'र_सो_मं_बà¥_गà¥_शà¥_श'.split('_'),\n longDateFormat: {\n LT: 'A h:mm वाजता',\n LTS: 'A h:mm:ss वाजता',\n L: 'DD/MM/YYYY',\n LL: 'D MMMM YYYY',\n LLL: 'D MMMM YYYY, A h:mm वाजता',\n LLLL: 'dddd, D MMMM YYYY, A h:mm वाजता',\n },\n calendar: {\n sameDay: '[आज] LT',\n nextDay: '[उदà¥à¤¯à¤¾] LT',\n nextWeek: 'dddd, LT',\n lastDay: '[काल] LT',\n lastWeek: '[मागील] dddd, LT',\n sameElse: 'L',\n },\n relativeTime: {\n future: '%sमधà¥à¤¯à¥‡',\n past: '%sपूरà¥à¤µà¥€',\n s: relativeTimeMr,\n ss: relativeTimeMr,\n m: relativeTimeMr,\n mm: relativeTimeMr,\n h: relativeTimeMr,\n hh: relativeTimeMr,\n d: relativeTimeMr,\n dd: relativeTimeMr,\n M: relativeTimeMr,\n MM: relativeTimeMr,\n y: relativeTimeMr,\n yy: relativeTimeMr,\n },\n preparse: function (string) {\n return string.replace(/[१२३४५६à¥à¥®à¥¯à¥¦]/g, function (match) {\n return numberMap[match];\n });\n },\n postformat: function (string) {\n return string.replace(/\\d/g, function (match) {\n return symbolMap[match];\n });\n },\n meridiemParse: /पहाटे|सकाळी|दà¥à¤ªà¤¾à¤°à¥€|सायंकाळी|रातà¥à¤°à¥€/,\n meridiemHour: function (hour, meridiem) {\n if (hour === 12) {\n hour = 0;\n }\n if (meridiem === 'पहाटे' || meridiem === 'सकाळी') {\n return hour;\n } else if (\n meridiem === 'दà¥à¤ªà¤¾à¤°à¥€' ||\n meridiem === 'सायंकाळी' ||\n meridiem === 'रातà¥à¤°à¥€'\n ) {\n return hour >= 12 ? hour : hour + 12;\n }\n },\n meridiem: function (hour, minute, isLower) {\n if (hour >= 0 && hour < 6) {\n return 'पहाटे';\n } else if (hour < 12) {\n return 'सकाळी';\n } else if (hour < 17) {\n return 'दà¥à¤ªà¤¾à¤°à¥€';\n } else if (hour < 20) {\n return 'सायंकाळी';\n } else {\n return 'रातà¥à¤°à¥€';\n }\n },\n week: {\n dow: 0, // Sunday is the first day of the week.\n doy: 6, // The week that contains Jan 6th is the first week of the year.\n },\n });\n\n return mr;\n\n})));\n","//! moment.js locale configuration\n//! locale : Malay [ms]\n//! author : Weldan Jamili : https://github.com/weldan\n\n;(function (global, factory) {\n typeof exports === 'object' && typeof module !== 'undefined'\n && typeof require === 'function' ? factory(require('../moment')) :\n typeof define === 'function' && define.amd ? define(['../moment'], factory) :\n factory(global.moment)\n}(this, (function (moment) { 'use strict';\n\n //! moment.js locale configuration\n\n var ms = moment.defineLocale('ms', {\n months: 'Januari_Februari_Mac_April_Mei_Jun_Julai_Ogos_September_Oktober_November_Disember'.split(\n '_'\n ),\n monthsShort: 'Jan_Feb_Mac_Apr_Mei_Jun_Jul_Ogs_Sep_Okt_Nov_Dis'.split('_'),\n weekdays: 'Ahad_Isnin_Selasa_Rabu_Khamis_Jumaat_Sabtu'.split('_'),\n weekdaysShort: 'Ahd_Isn_Sel_Rab_Kha_Jum_Sab'.split('_'),\n weekdaysMin: 'Ah_Is_Sl_Rb_Km_Jm_Sb'.split('_'),\n longDateFormat: {\n LT: 'HH.mm',\n LTS: 'HH.mm.ss',\n L: 'DD/MM/YYYY',\n LL: 'D MMMM YYYY',\n LLL: 'D MMMM YYYY [pukul] HH.mm',\n LLLL: 'dddd, D MMMM YYYY [pukul] HH.mm',\n },\n meridiemParse: /pagi|tengahari|petang|malam/,\n meridiemHour: function (hour, meridiem) {\n if (hour === 12) {\n hour = 0;\n }\n if (meridiem === 'pagi') {\n return hour;\n } else if (meridiem === 'tengahari') {\n return hour >= 11 ? hour : hour + 12;\n } else if (meridiem === 'petang' || meridiem === 'malam') {\n return hour + 12;\n }\n },\n meridiem: function (hours, minutes, isLower) {\n if (hours < 11) {\n return 'pagi';\n } else if (hours < 15) {\n return 'tengahari';\n } else if (hours < 19) {\n return 'petang';\n } else {\n return 'malam';\n }\n },\n calendar: {\n sameDay: '[Hari ini pukul] LT',\n nextDay: '[Esok pukul] LT',\n nextWeek: 'dddd [pukul] LT',\n lastDay: '[Kelmarin pukul] LT',\n lastWeek: 'dddd [lepas pukul] LT',\n sameElse: 'L',\n },\n relativeTime: {\n future: 'dalam %s',\n past: '%s yang lepas',\n s: 'beberapa saat',\n ss: '%d saat',\n m: 'seminit',\n mm: '%d minit',\n h: 'sejam',\n hh: '%d jam',\n d: 'sehari',\n dd: '%d hari',\n M: 'sebulan',\n MM: '%d bulan',\n y: 'setahun',\n yy: '%d tahun',\n },\n week: {\n dow: 1, // Monday is the first day of the week.\n doy: 7, // The week that contains Jan 7th is the first week of the year.\n },\n });\n\n return ms;\n\n})));\n","//! moment.js locale configuration\n//! locale : Malay [ms-my]\n//! note : DEPRECATED, the correct one is [ms]\n//! author : Weldan Jamili : https://github.com/weldan\n\n;(function (global, factory) {\n typeof exports === 'object' && typeof module !== 'undefined'\n && typeof require === 'function' ? factory(require('../moment')) :\n typeof define === 'function' && define.amd ? define(['../moment'], factory) :\n factory(global.moment)\n}(this, (function (moment) { 'use strict';\n\n //! moment.js locale configuration\n\n var msMy = moment.defineLocale('ms-my', {\n months: 'Januari_Februari_Mac_April_Mei_Jun_Julai_Ogos_September_Oktober_November_Disember'.split(\n '_'\n ),\n monthsShort: 'Jan_Feb_Mac_Apr_Mei_Jun_Jul_Ogs_Sep_Okt_Nov_Dis'.split('_'),\n weekdays: 'Ahad_Isnin_Selasa_Rabu_Khamis_Jumaat_Sabtu'.split('_'),\n weekdaysShort: 'Ahd_Isn_Sel_Rab_Kha_Jum_Sab'.split('_'),\n weekdaysMin: 'Ah_Is_Sl_Rb_Km_Jm_Sb'.split('_'),\n longDateFormat: {\n LT: 'HH.mm',\n LTS: 'HH.mm.ss',\n L: 'DD/MM/YYYY',\n LL: 'D MMMM YYYY',\n LLL: 'D MMMM YYYY [pukul] HH.mm',\n LLLL: 'dddd, D MMMM YYYY [pukul] HH.mm',\n },\n meridiemParse: /pagi|tengahari|petang|malam/,\n meridiemHour: function (hour, meridiem) {\n if (hour === 12) {\n hour = 0;\n }\n if (meridiem === 'pagi') {\n return hour;\n } else if (meridiem === 'tengahari') {\n return hour >= 11 ? hour : hour + 12;\n } else if (meridiem === 'petang' || meridiem === 'malam') {\n return hour + 12;\n }\n },\n meridiem: function (hours, minutes, isLower) {\n if (hours < 11) {\n return 'pagi';\n } else if (hours < 15) {\n return 'tengahari';\n } else if (hours < 19) {\n return 'petang';\n } else {\n return 'malam';\n }\n },\n calendar: {\n sameDay: '[Hari ini pukul] LT',\n nextDay: '[Esok pukul] LT',\n nextWeek: 'dddd [pukul] LT',\n lastDay: '[Kelmarin pukul] LT',\n lastWeek: 'dddd [lepas pukul] LT',\n sameElse: 'L',\n },\n relativeTime: {\n future: 'dalam %s',\n past: '%s yang lepas',\n s: 'beberapa saat',\n ss: '%d saat',\n m: 'seminit',\n mm: '%d minit',\n h: 'sejam',\n hh: '%d jam',\n d: 'sehari',\n dd: '%d hari',\n M: 'sebulan',\n MM: '%d bulan',\n y: 'setahun',\n yy: '%d tahun',\n },\n week: {\n dow: 1, // Monday is the first day of the week.\n doy: 7, // The week that contains Jan 7th is the first week of the year.\n },\n });\n\n return msMy;\n\n})));\n","//! moment.js locale configuration\n//! locale : Maltese (Malta) [mt]\n//! author : Alessandro Maruccia : https://github.com/alesma\n\n;(function (global, factory) {\n typeof exports === 'object' && typeof module !== 'undefined'\n && typeof require === 'function' ? factory(require('../moment')) :\n typeof define === 'function' && define.amd ? define(['../moment'], factory) :\n factory(global.moment)\n}(this, (function (moment) { 'use strict';\n\n //! moment.js locale configuration\n\n var mt = moment.defineLocale('mt', {\n months: 'Jannar_Frar_Marzu_April_Mejju_Ä unju_Lulju_Awwissu_Settembru_Ottubru_Novembru_DiÄ‹embru'.split(\n '_'\n ),\n monthsShort: 'Jan_Fra_Mar_Apr_Mej_Ä un_Lul_Aww_Set_Ott_Nov_DiÄ‹'.split('_'),\n weekdays:\n 'Il-Ħadd_It-Tnejn_It-Tlieta_L-Erbgħa_Il-Ħamis_Il-Ä imgħa_Is-Sibt'.split(\n '_'\n ),\n weekdaysShort: 'Ħad_Tne_Tli_Erb_Ħam_Ä im_Sib'.split('_'),\n weekdaysMin: 'Ħa_Tn_Tl_Er_Ħa_Ä i_Si'.split('_'),\n longDateFormat: {\n LT: 'HH:mm',\n LTS: 'HH:mm:ss',\n L: 'DD/MM/YYYY',\n LL: 'D MMMM YYYY',\n LLL: 'D MMMM YYYY HH:mm',\n LLLL: 'dddd, D MMMM YYYY HH:mm',\n },\n calendar: {\n sameDay: '[Illum fil-]LT',\n nextDay: '[Għada fil-]LT',\n nextWeek: 'dddd [fil-]LT',\n lastDay: '[Il-bieraħ fil-]LT',\n lastWeek: 'dddd [li għadda] [fil-]LT',\n sameElse: 'L',\n },\n relativeTime: {\n future: 'f’ %s',\n past: '%s ilu',\n s: 'ftit sekondi',\n ss: '%d sekondi',\n m: 'minuta',\n mm: '%d minuti',\n h: 'siegħa',\n hh: '%d siegħat',\n d: 'Ä¡urnata',\n dd: '%d Ä¡ranet',\n M: 'xahar',\n MM: '%d xhur',\n y: 'sena',\n yy: '%d sni',\n },\n dayOfMonthOrdinalParse: /\\d{1,2}º/,\n ordinal: '%dº',\n week: {\n dow: 1, // Monday is the first day of the week.\n doy: 4, // The week that contains Jan 4th is the first week of the year.\n },\n });\n\n return mt;\n\n})));\n","//! moment.js locale configuration\n//! locale : Burmese [my]\n//! author : Squar team, mysquar.com\n//! author : David Rossellat : https://github.com/gholadr\n//! author : Tin Aung Lin : https://github.com/thanyawzinmin\n\n;(function (global, factory) {\n typeof exports === 'object' && typeof module !== 'undefined'\n && typeof require === 'function' ? factory(require('../moment')) :\n typeof define === 'function' && define.amd ? define(['../moment'], factory) :\n factory(global.moment)\n}(this, (function (moment) { 'use strict';\n\n //! moment.js locale configuration\n\n var symbolMap = {\n 1: 'á',\n 2: 'á‚',\n 3: 'áƒ',\n 4: 'á„',\n 5: 'á…',\n 6: 'á†',\n 7: 'á‡',\n 8: 'áˆ',\n 9: 'á‰',\n 0: 'á€',\n },\n numberMap = {\n 'á': '1',\n 'á‚': '2',\n 'áƒ': '3',\n 'á„': '4',\n 'á…': '5',\n 'á†': '6',\n 'á‡': '7',\n 'áˆ': '8',\n 'á‰': '9',\n 'á€': '0',\n };\n\n var my = moment.defineLocale('my', {\n months: 'ဇန်နá€á€«á€›á€®_ဖေဖော်á€á€«á€›á€®_မá€á€º_ဧပြီ_မေ_ဇွန်_ဇူလá€á€¯á€„်_သြဂုá€á€º_စက်á€á€„်ဘာ_အောက်á€á€á€¯á€˜á€¬_နá€á€¯á€á€„်ဘာ_ဒီဇင်ဘာ'.split(\n '_'\n ),\n monthsShort: 'ဇန်_ဖေ_မá€á€º_ပြီ_မေ_ဇွန်_လá€á€¯á€„်_သြ_စက်_အောက်_နá€á€¯_ဒီ'.split('_'),\n weekdays: 'á€á€”င်္ဂနွေ_á€á€”င်္လာ_အင်္ဂါ_ဗုဒ္ဓဟူး_ကြာသပá€á€±á€¸_သောကြာ_စနေ'.split(\n '_'\n ),\n weekdaysShort: 'နွေ_လာ_ဂါ_ဟူး_ကြာ_သော_နေ'.split('_'),\n weekdaysMin: 'နွေ_လာ_ဂါ_ဟူး_ကြာ_သော_နေ'.split('_'),\n\n longDateFormat: {\n LT: 'HH:mm',\n LTS: 'HH:mm:ss',\n L: 'DD/MM/YYYY',\n LL: 'D MMMM YYYY',\n LLL: 'D MMMM YYYY HH:mm',\n LLLL: 'dddd D MMMM YYYY HH:mm',\n },\n calendar: {\n sameDay: '[ယနေ.] LT [မှာ]',\n nextDay: '[မနက်ဖြန်] LT [မှာ]',\n nextWeek: 'dddd LT [မှာ]',\n lastDay: '[မနေ.က] LT [မှာ]',\n lastWeek: '[ပြီးá€á€²á€·á€žá€±á€¬] dddd LT [မှာ]',\n sameElse: 'L',\n },\n relativeTime: {\n future: 'လာမည့် %s မှာ',\n past: 'လွန်á€á€²á€·á€žá€±á€¬ %s က',\n s: 'စက္ကန်.အနည်းငယ်',\n ss: '%d စက္ကန့်',\n m: 'á€á€…်မá€á€”စ်',\n mm: '%d မá€á€”စ်',\n h: 'á€á€…်နာရီ',\n hh: '%d နာရီ',\n d: 'á€á€…်ရက်',\n dd: '%d ရက်',\n M: 'á€á€…်လ',\n MM: '%d လ',\n y: 'á€á€…်နှစ်',\n yy: '%d နှစ်',\n },\n preparse: function (string) {\n return string.replace(/[áá‚áƒá„á…á†á‡áˆá‰á€]/g, function (match) {\n return numberMap[match];\n });\n },\n postformat: function (string) {\n return string.replace(/\\d/g, function (match) {\n return symbolMap[match];\n });\n },\n week: {\n dow: 1, // Monday is the first day of the week.\n doy: 4, // The week that contains Jan 4th is the first week of the year.\n },\n });\n\n return my;\n\n})));\n","//! moment.js locale configuration\n//! locale : Norwegian BokmÃ¥l [nb]\n//! authors : Espen Hovlandsdal : https://github.com/rexxars\n//! Sigurd Gartmann : https://github.com/sigurdga\n//! Stephen Ramthun : https://github.com/stephenramthun\n\n;(function (global, factory) {\n typeof exports === 'object' && typeof module !== 'undefined'\n && typeof require === 'function' ? factory(require('../moment')) :\n typeof define === 'function' && define.amd ? define(['../moment'], factory) :\n factory(global.moment)\n}(this, (function (moment) { 'use strict';\n\n //! moment.js locale configuration\n\n var nb = moment.defineLocale('nb', {\n months: 'januar_februar_mars_april_mai_juni_juli_august_september_oktober_november_desember'.split(\n '_'\n ),\n monthsShort:\n 'jan._feb._mars_apr._mai_juni_juli_aug._sep._okt._nov._des.'.split('_'),\n monthsParseExact: true,\n weekdays: 'søndag_mandag_tirsdag_onsdag_torsdag_fredag_lørdag'.split('_'),\n weekdaysShort: 'sø._ma._ti._on._to._fr._lø.'.split('_'),\n weekdaysMin: 'sø_ma_ti_on_to_fr_lø'.split('_'),\n weekdaysParseExact: true,\n longDateFormat: {\n LT: 'HH:mm',\n LTS: 'HH:mm:ss',\n L: 'DD.MM.YYYY',\n LL: 'D. MMMM YYYY',\n LLL: 'D. MMMM YYYY [kl.] HH:mm',\n LLLL: 'dddd D. MMMM YYYY [kl.] HH:mm',\n },\n calendar: {\n sameDay: '[i dag kl.] LT',\n nextDay: '[i morgen kl.] LT',\n nextWeek: 'dddd [kl.] LT',\n lastDay: '[i gÃ¥r kl.] LT',\n lastWeek: '[forrige] dddd [kl.] LT',\n sameElse: 'L',\n },\n relativeTime: {\n future: 'om %s',\n past: '%s siden',\n s: 'noen sekunder',\n ss: '%d sekunder',\n m: 'ett minutt',\n mm: '%d minutter',\n h: 'en time',\n hh: '%d timer',\n d: 'en dag',\n dd: '%d dager',\n w: 'en uke',\n ww: '%d uker',\n M: 'en mÃ¥ned',\n MM: '%d mÃ¥neder',\n y: 'ett Ã¥r',\n yy: '%d Ã¥r',\n },\n dayOfMonthOrdinalParse: /\\d{1,2}\\./,\n ordinal: '%d.',\n week: {\n dow: 1, // Monday is the first day of the week.\n doy: 4, // The week that contains Jan 4th is the first week of the year.\n },\n });\n\n return nb;\n\n})));\n","//! moment.js locale configuration\n//! locale : Nepalese [ne]\n//! author : suvash : https://github.com/suvash\n\n;(function (global, factory) {\n typeof exports === 'object' && typeof module !== 'undefined'\n && typeof require === 'function' ? factory(require('../moment')) :\n typeof define === 'function' && define.amd ? define(['../moment'], factory) :\n factory(global.moment)\n}(this, (function (moment) { 'use strict';\n\n //! moment.js locale configuration\n\n var symbolMap = {\n 1: '१',\n 2: '२',\n 3: '३',\n 4: '४',\n 5: '५',\n 6: '६',\n 7: 'à¥',\n 8: '८',\n 9: '९',\n 0: '०',\n },\n numberMap = {\n '१': '1',\n '२': '2',\n '३': '3',\n '४': '4',\n '५': '5',\n '६': '6',\n 'à¥': '7',\n '८': '8',\n '९': '9',\n '०': '0',\n };\n\n var ne = moment.defineLocale('ne', {\n months: 'जनवरी_फेबà¥à¤°à¥à¤µà¤°à¥€_मारà¥à¤š_अपà¥à¤°à¤¿à¤²_मई_जà¥à¤¨_जà¥à¤²à¤¾à¤ˆ_अगषà¥à¤Ÿ_सेपà¥à¤Ÿà¥‡à¤®à¥à¤¬à¤°_अकà¥à¤Ÿà¥‹à¤¬à¤°_नोà¤à¥‡à¤®à¥à¤¬à¤°_डिसेमà¥à¤¬à¤°'.split(\n '_'\n ),\n monthsShort:\n 'जन._फेबà¥à¤°à¥._मारà¥à¤š_अपà¥à¤°à¤¿._मई_जà¥à¤¨_जà¥à¤²à¤¾à¤ˆ._अग._सेपà¥à¤Ÿ._अकà¥à¤Ÿà¥‹._नोà¤à¥‡._डिसे.'.split(\n '_'\n ),\n monthsParseExact: true,\n weekdays: 'आइतबार_सोमबार_मङà¥à¤—लबार_बà¥à¤§à¤¬à¤¾à¤°_बिहिबार_शà¥à¤•à¥à¤°à¤¬à¤¾à¤°_शनिबार'.split(\n '_'\n ),\n weekdaysShort: 'आइत._सोम._मङà¥à¤—ल._बà¥à¤§._बिहि._शà¥à¤•à¥à¤°._शनि.'.split('_'),\n weekdaysMin: 'आ._सो._मं._बà¥._बि._शà¥._श.'.split('_'),\n weekdaysParseExact: true,\n longDateFormat: {\n LT: 'Aको h:mm बजे',\n LTS: 'Aको h:mm:ss बजे',\n L: 'DD/MM/YYYY',\n LL: 'D MMMM YYYY',\n LLL: 'D MMMM YYYY, Aको h:mm बजे',\n LLLL: 'dddd, D MMMM YYYY, Aको h:mm बजे',\n },\n preparse: function (string) {\n return string.replace(/[१२३४५६à¥à¥®à¥¯à¥¦]/g, function (match) {\n return numberMap[match];\n });\n },\n postformat: function (string) {\n return string.replace(/\\d/g, function (match) {\n return symbolMap[match];\n });\n },\n meridiemParse: /राति|बिहान|दिउà¤à¤¸à¥‹|साà¤à¤/,\n meridiemHour: function (hour, meridiem) {\n if (hour === 12) {\n hour = 0;\n }\n if (meridiem === 'राति') {\n return hour < 4 ? hour : hour + 12;\n } else if (meridiem === 'बिहान') {\n return hour;\n } else if (meridiem === 'दिउà¤à¤¸à¥‹') {\n return hour >= 10 ? hour : hour + 12;\n } else if (meridiem === 'साà¤à¤') {\n return hour + 12;\n }\n },\n meridiem: function (hour, minute, isLower) {\n if (hour < 3) {\n return 'राति';\n } else if (hour < 12) {\n return 'बिहान';\n } else if (hour < 16) {\n return 'दिउà¤à¤¸à¥‹';\n } else if (hour < 20) {\n return 'साà¤à¤';\n } else {\n return 'राति';\n }\n },\n calendar: {\n sameDay: '[आज] LT',\n nextDay: '[à¤à¥‹à¤²à¤¿] LT',\n nextWeek: '[आउà¤à¤¦à¥‹] dddd[,] LT',\n lastDay: '[हिजो] LT',\n lastWeek: '[गà¤à¤•à¥‹] dddd[,] LT',\n sameElse: 'L',\n },\n relativeTime: {\n future: '%sमा',\n past: '%s अगाडि',\n s: 'केही कà¥à¤·à¤£',\n ss: '%d सेकेणà¥à¤¡',\n m: 'à¤à¤• मिनेट',\n mm: '%d मिनेट',\n h: 'à¤à¤• घणà¥à¤Ÿà¤¾',\n hh: '%d घणà¥à¤Ÿà¤¾',\n d: 'à¤à¤• दिन',\n dd: '%d दिन',\n M: 'à¤à¤• महिना',\n MM: '%d महिना',\n y: 'à¤à¤• बरà¥à¤·',\n yy: '%d बरà¥à¤·',\n },\n week: {\n dow: 0, // Sunday is the first day of the week.\n doy: 6, // The week that contains Jan 6th is the first week of the year.\n },\n });\n\n return ne;\n\n})));\n","//! moment.js locale configuration\n//! locale : Dutch [nl]\n//! author : Joris Röling : https://github.com/jorisroling\n//! author : Jacob Middag : https://github.com/middagj\n\n;(function (global, factory) {\n typeof exports === 'object' && typeof module !== 'undefined'\n && typeof require === 'function' ? factory(require('../moment')) :\n typeof define === 'function' && define.amd ? define(['../moment'], factory) :\n factory(global.moment)\n}(this, (function (moment) { 'use strict';\n\n //! moment.js locale configuration\n\n var monthsShortWithDots =\n 'jan._feb._mrt._apr._mei_jun._jul._aug._sep._okt._nov._dec.'.split('_'),\n monthsShortWithoutDots =\n 'jan_feb_mrt_apr_mei_jun_jul_aug_sep_okt_nov_dec'.split('_'),\n monthsParse = [\n /^jan/i,\n /^feb/i,\n /^maart|mrt.?$/i,\n /^apr/i,\n /^mei$/i,\n /^jun[i.]?$/i,\n /^jul[i.]?$/i,\n /^aug/i,\n /^sep/i,\n /^okt/i,\n /^nov/i,\n /^dec/i,\n ],\n monthsRegex =\n /^(januari|februari|maart|april|mei|ju[nl]i|augustus|september|oktober|november|december|jan\\.?|feb\\.?|mrt\\.?|apr\\.?|ju[nl]\\.?|aug\\.?|sep\\.?|okt\\.?|nov\\.?|dec\\.?)/i;\n\n var nl = moment.defineLocale('nl', {\n months: 'januari_februari_maart_april_mei_juni_juli_augustus_september_oktober_november_december'.split(\n '_'\n ),\n monthsShort: function (m, format) {\n if (!m) {\n return monthsShortWithDots;\n } else if (/-MMM-/.test(format)) {\n return monthsShortWithoutDots[m.month()];\n } else {\n return monthsShortWithDots[m.month()];\n }\n },\n\n monthsRegex: monthsRegex,\n monthsShortRegex: monthsRegex,\n monthsStrictRegex:\n /^(januari|februari|maart|april|mei|ju[nl]i|augustus|september|oktober|november|december)/i,\n monthsShortStrictRegex:\n /^(jan\\.?|feb\\.?|mrt\\.?|apr\\.?|mei|ju[nl]\\.?|aug\\.?|sep\\.?|okt\\.?|nov\\.?|dec\\.?)/i,\n\n monthsParse: monthsParse,\n longMonthsParse: monthsParse,\n shortMonthsParse: monthsParse,\n\n weekdays:\n 'zondag_maandag_dinsdag_woensdag_donderdag_vrijdag_zaterdag'.split('_'),\n weekdaysShort: 'zo._ma._di._wo._do._vr._za.'.split('_'),\n weekdaysMin: 'zo_ma_di_wo_do_vr_za'.split('_'),\n weekdaysParseExact: true,\n longDateFormat: {\n LT: 'HH:mm',\n LTS: 'HH:mm:ss',\n L: 'DD-MM-YYYY',\n LL: 'D MMMM YYYY',\n LLL: 'D MMMM YYYY HH:mm',\n LLLL: 'dddd D MMMM YYYY HH:mm',\n },\n calendar: {\n sameDay: '[vandaag om] LT',\n nextDay: '[morgen om] LT',\n nextWeek: 'dddd [om] LT',\n lastDay: '[gisteren om] LT',\n lastWeek: '[afgelopen] dddd [om] LT',\n sameElse: 'L',\n },\n relativeTime: {\n future: 'over %s',\n past: '%s geleden',\n s: 'een paar seconden',\n ss: '%d seconden',\n m: 'één minuut',\n mm: '%d minuten',\n h: 'één uur',\n hh: '%d uur',\n d: 'één dag',\n dd: '%d dagen',\n w: 'één week',\n ww: '%d weken',\n M: 'één maand',\n MM: '%d maanden',\n y: 'één jaar',\n yy: '%d jaar',\n },\n dayOfMonthOrdinalParse: /\\d{1,2}(ste|de)/,\n ordinal: function (number) {\n return (\n number +\n (number === 1 || number === 8 || number >= 20 ? 'ste' : 'de')\n );\n },\n week: {\n dow: 1, // Monday is the first day of the week.\n doy: 4, // The week that contains Jan 4th is the first week of the year.\n },\n });\n\n return nl;\n\n})));\n","//! moment.js locale configuration\n//! locale : Dutch (Belgium) [nl-be]\n//! author : Joris Röling : https://github.com/jorisroling\n//! author : Jacob Middag : https://github.com/middagj\n\n;(function (global, factory) {\n typeof exports === 'object' && typeof module !== 'undefined'\n && typeof require === 'function' ? factory(require('../moment')) :\n typeof define === 'function' && define.amd ? define(['../moment'], factory) :\n factory(global.moment)\n}(this, (function (moment) { 'use strict';\n\n //! moment.js locale configuration\n\n var monthsShortWithDots =\n 'jan._feb._mrt._apr._mei_jun._jul._aug._sep._okt._nov._dec.'.split('_'),\n monthsShortWithoutDots =\n 'jan_feb_mrt_apr_mei_jun_jul_aug_sep_okt_nov_dec'.split('_'),\n monthsParse = [\n /^jan/i,\n /^feb/i,\n /^maart|mrt.?$/i,\n /^apr/i,\n /^mei$/i,\n /^jun[i.]?$/i,\n /^jul[i.]?$/i,\n /^aug/i,\n /^sep/i,\n /^okt/i,\n /^nov/i,\n /^dec/i,\n ],\n monthsRegex =\n /^(januari|februari|maart|april|mei|ju[nl]i|augustus|september|oktober|november|december|jan\\.?|feb\\.?|mrt\\.?|apr\\.?|ju[nl]\\.?|aug\\.?|sep\\.?|okt\\.?|nov\\.?|dec\\.?)/i;\n\n var nlBe = moment.defineLocale('nl-be', {\n months: 'januari_februari_maart_april_mei_juni_juli_augustus_september_oktober_november_december'.split(\n '_'\n ),\n monthsShort: function (m, format) {\n if (!m) {\n return monthsShortWithDots;\n } else if (/-MMM-/.test(format)) {\n return monthsShortWithoutDots[m.month()];\n } else {\n return monthsShortWithDots[m.month()];\n }\n },\n\n monthsRegex: monthsRegex,\n monthsShortRegex: monthsRegex,\n monthsStrictRegex:\n /^(januari|februari|maart|april|mei|ju[nl]i|augustus|september|oktober|november|december)/i,\n monthsShortStrictRegex:\n /^(jan\\.?|feb\\.?|mrt\\.?|apr\\.?|mei|ju[nl]\\.?|aug\\.?|sep\\.?|okt\\.?|nov\\.?|dec\\.?)/i,\n\n monthsParse: monthsParse,\n longMonthsParse: monthsParse,\n shortMonthsParse: monthsParse,\n\n weekdays:\n 'zondag_maandag_dinsdag_woensdag_donderdag_vrijdag_zaterdag'.split('_'),\n weekdaysShort: 'zo._ma._di._wo._do._vr._za.'.split('_'),\n weekdaysMin: 'zo_ma_di_wo_do_vr_za'.split('_'),\n weekdaysParseExact: true,\n longDateFormat: {\n LT: 'HH:mm',\n LTS: 'HH:mm:ss',\n L: 'DD/MM/YYYY',\n LL: 'D MMMM YYYY',\n LLL: 'D MMMM YYYY HH:mm',\n LLLL: 'dddd D MMMM YYYY HH:mm',\n },\n calendar: {\n sameDay: '[vandaag om] LT',\n nextDay: '[morgen om] LT',\n nextWeek: 'dddd [om] LT',\n lastDay: '[gisteren om] LT',\n lastWeek: '[afgelopen] dddd [om] LT',\n sameElse: 'L',\n },\n relativeTime: {\n future: 'over %s',\n past: '%s geleden',\n s: 'een paar seconden',\n ss: '%d seconden',\n m: 'één minuut',\n mm: '%d minuten',\n h: 'één uur',\n hh: '%d uur',\n d: 'één dag',\n dd: '%d dagen',\n M: 'één maand',\n MM: '%d maanden',\n y: 'één jaar',\n yy: '%d jaar',\n },\n dayOfMonthOrdinalParse: /\\d{1,2}(ste|de)/,\n ordinal: function (number) {\n return (\n number +\n (number === 1 || number === 8 || number >= 20 ? 'ste' : 'de')\n );\n },\n week: {\n dow: 1, // Monday is the first day of the week.\n doy: 4, // The week that contains Jan 4th is the first week of the year.\n },\n });\n\n return nlBe;\n\n})));\n","//! moment.js locale configuration\n//! locale : Nynorsk [nn]\n//! authors : https://github.com/mechuwind\n//! Stephen Ramthun : https://github.com/stephenramthun\n\n;(function (global, factory) {\n typeof exports === 'object' && typeof module !== 'undefined'\n && typeof require === 'function' ? factory(require('../moment')) :\n typeof define === 'function' && define.amd ? define(['../moment'], factory) :\n factory(global.moment)\n}(this, (function (moment) { 'use strict';\n\n //! moment.js locale configuration\n\n var nn = moment.defineLocale('nn', {\n months: 'januar_februar_mars_april_mai_juni_juli_august_september_oktober_november_desember'.split(\n '_'\n ),\n monthsShort:\n 'jan._feb._mars_apr._mai_juni_juli_aug._sep._okt._nov._des.'.split('_'),\n monthsParseExact: true,\n weekdays: 'sundag_mÃ¥ndag_tysdag_onsdag_torsdag_fredag_laurdag'.split('_'),\n weekdaysShort: 'su._mÃ¥._ty._on._to._fr._lau.'.split('_'),\n weekdaysMin: 'su_mÃ¥_ty_on_to_fr_la'.split('_'),\n weekdaysParseExact: true,\n longDateFormat: {\n LT: 'HH:mm',\n LTS: 'HH:mm:ss',\n L: 'DD.MM.YYYY',\n LL: 'D. MMMM YYYY',\n LLL: 'D. MMMM YYYY [kl.] H:mm',\n LLLL: 'dddd D. MMMM YYYY [kl.] HH:mm',\n },\n calendar: {\n sameDay: '[I dag klokka] LT',\n nextDay: '[I morgon klokka] LT',\n nextWeek: 'dddd [klokka] LT',\n lastDay: '[I gÃ¥r klokka] LT',\n lastWeek: '[FøregÃ¥ande] dddd [klokka] LT',\n sameElse: 'L',\n },\n relativeTime: {\n future: 'om %s',\n past: '%s sidan',\n s: 'nokre sekund',\n ss: '%d sekund',\n m: 'eit minutt',\n mm: '%d minutt',\n h: 'ein time',\n hh: '%d timar',\n d: 'ein dag',\n dd: '%d dagar',\n w: 'ei veke',\n ww: '%d veker',\n M: 'ein mÃ¥nad',\n MM: '%d mÃ¥nader',\n y: 'eit Ã¥r',\n yy: '%d Ã¥r',\n },\n dayOfMonthOrdinalParse: /\\d{1,2}\\./,\n ordinal: '%d.',\n week: {\n dow: 1, // Monday is the first day of the week.\n doy: 4, // The week that contains Jan 4th is the first week of the year.\n },\n });\n\n return nn;\n\n})));\n","//! moment.js locale configuration\n//! locale : Occitan, lengadocian dialecte [oc-lnc]\n//! author : Quentin PAGÈS : https://github.com/Quenty31\n\n;(function (global, factory) {\n typeof exports === 'object' && typeof module !== 'undefined'\n && typeof require === 'function' ? factory(require('../moment')) :\n typeof define === 'function' && define.amd ? define(['../moment'], factory) :\n factory(global.moment)\n}(this, (function (moment) { 'use strict';\n\n //! moment.js locale configuration\n\n var ocLnc = moment.defineLocale('oc-lnc', {\n months: {\n standalone:\n 'genièr_febrièr_març_abril_mai_junh_julhet_agost_setembre_octòbre_novembre_decembre'.split(\n '_'\n ),\n format: \"de genièr_de febrièr_de març_d'abril_de mai_de junh_de julhet_d'agost_de setembre_d'octòbre_de novembre_de decembre\".split(\n '_'\n ),\n isFormat: /D[oD]?(\\s)+MMMM/,\n },\n monthsShort:\n 'gen._febr._març_abr._mai_junh_julh._ago._set._oct._nov._dec.'.split(\n '_'\n ),\n monthsParseExact: true,\n weekdays: 'dimenge_diluns_dimars_dimècres_dijòus_divendres_dissabte'.split(\n '_'\n ),\n weekdaysShort: 'dg._dl._dm._dc._dj._dv._ds.'.split('_'),\n weekdaysMin: 'dg_dl_dm_dc_dj_dv_ds'.split('_'),\n weekdaysParseExact: true,\n longDateFormat: {\n LT: 'H:mm',\n LTS: 'H:mm:ss',\n L: 'DD/MM/YYYY',\n LL: 'D MMMM [de] YYYY',\n ll: 'D MMM YYYY',\n LLL: 'D MMMM [de] YYYY [a] H:mm',\n lll: 'D MMM YYYY, H:mm',\n LLLL: 'dddd D MMMM [de] YYYY [a] H:mm',\n llll: 'ddd D MMM YYYY, H:mm',\n },\n calendar: {\n sameDay: '[uèi a] LT',\n nextDay: '[deman a] LT',\n nextWeek: 'dddd [a] LT',\n lastDay: '[ièr a] LT',\n lastWeek: 'dddd [passat a] LT',\n sameElse: 'L',\n },\n relativeTime: {\n future: \"d'aquà %s\",\n past: 'fa %s',\n s: 'unas segondas',\n ss: '%d segondas',\n m: 'una minuta',\n mm: '%d minutas',\n h: 'una ora',\n hh: '%d oras',\n d: 'un jorn',\n dd: '%d jorns',\n M: 'un mes',\n MM: '%d meses',\n y: 'un an',\n yy: '%d ans',\n },\n dayOfMonthOrdinalParse: /\\d{1,2}(r|n|t|è|a)/,\n ordinal: function (number, period) {\n var output =\n number === 1\n ? 'r'\n : number === 2\n ? 'n'\n : number === 3\n ? 'r'\n : number === 4\n ? 't'\n : 'è';\n if (period === 'w' || period === 'W') {\n output = 'a';\n }\n return number + output;\n },\n week: {\n dow: 1, // Monday is the first day of the week.\n doy: 4,\n },\n });\n\n return ocLnc;\n\n})));\n","//! moment.js locale configuration\n//! locale : Punjabi (India) [pa-in]\n//! author : Harpreet Singh : https://github.com/harpreetkhalsagtbit\n\n;(function (global, factory) {\n typeof exports === 'object' && typeof module !== 'undefined'\n && typeof require === 'function' ? factory(require('../moment')) :\n typeof define === 'function' && define.amd ? define(['../moment'], factory) :\n factory(global.moment)\n}(this, (function (moment) { 'use strict';\n\n //! moment.js locale configuration\n\n var symbolMap = {\n 1: '੧',\n 2: '੨',\n 3: 'à©©',\n 4: '੪',\n 5: 'à©«',\n 6: '੬',\n 7: 'à©',\n 8: 'à©®',\n 9: '੯',\n 0: '੦',\n },\n numberMap = {\n '੧': '1',\n '੨': '2',\n 'à©©': '3',\n '੪': '4',\n 'à©«': '5',\n '੬': '6',\n 'à©': '7',\n 'à©®': '8',\n '੯': '9',\n '੦': '0',\n };\n\n var paIn = moment.defineLocale('pa-in', {\n // There are months name as per Nanakshahi Calendar but they are not used as rigidly in modern Punjabi.\n months: 'ਜਨਵਰੀ_ਫ਼ਰਵਰੀ_ਮਾਰਚ_ਅਪà©à¨°à©ˆà¨²_ਮਈ_ਜੂਨ_ਜà©à¨²à¨¾à¨ˆ_ਅਗਸਤ_ਸਤੰਬਰ_ਅਕਤੂਬਰ_ਨਵੰਬਰ_ਦਸੰਬਰ'.split(\n '_'\n ),\n monthsShort:\n 'ਜਨਵਰੀ_ਫ਼ਰਵਰੀ_ਮਾਰਚ_ਅਪà©à¨°à©ˆà¨²_ਮਈ_ਜੂਨ_ਜà©à¨²à¨¾à¨ˆ_ਅਗਸਤ_ਸਤੰਬਰ_ਅਕਤੂਬਰ_ਨਵੰਬਰ_ਦਸੰਬਰ'.split(\n '_'\n ),\n weekdays: 'à¨à¨¤à¨µà¨¾à¨°_ਸੋਮਵਾਰ_ਮੰਗਲਵਾਰ_ਬà©à¨§à¨µà¨¾à¨°_ਵੀਰਵਾਰ_ਸ਼à©à©±à¨•à¨°à¨µà¨¾à¨°_ਸ਼ਨੀਚਰਵਾਰ'.split(\n '_'\n ),\n weekdaysShort: 'à¨à¨¤_ਸੋਮ_ਮੰਗਲ_ਬà©à¨§_ਵੀਰ_ਸ਼à©à¨•à¨°_ਸ਼ਨੀ'.split('_'),\n weekdaysMin: 'à¨à¨¤_ਸੋਮ_ਮੰਗਲ_ਬà©à¨§_ਵੀਰ_ਸ਼à©à¨•à¨°_ਸ਼ਨੀ'.split('_'),\n longDateFormat: {\n LT: 'A h:mm ਵਜੇ',\n LTS: 'A h:mm:ss ਵਜੇ',\n L: 'DD/MM/YYYY',\n LL: 'D MMMM YYYY',\n LLL: 'D MMMM YYYY, A h:mm ਵਜੇ',\n LLLL: 'dddd, D MMMM YYYY, A h:mm ਵਜੇ',\n },\n calendar: {\n sameDay: '[ਅਜ] LT',\n nextDay: '[ਕਲ] LT',\n nextWeek: '[ਅਗਲਾ] dddd, LT',\n lastDay: '[ਕਲ] LT',\n lastWeek: '[ਪਿਛਲੇ] dddd, LT',\n sameElse: 'L',\n },\n relativeTime: {\n future: '%s ਵਿੱਚ',\n past: '%s ਪਿਛਲੇ',\n s: 'ਕà©à¨ ਸਕਿੰਟ',\n ss: '%d ਸਕਿੰਟ',\n m: 'ਇਕ ਮਿੰਟ',\n mm: '%d ਮਿੰਟ',\n h: 'ਇੱਕ ਘੰਟਾ',\n hh: '%d ਘੰਟੇ',\n d: 'ਇੱਕ ਦਿਨ',\n dd: '%d ਦਿਨ',\n M: 'ਇੱਕ ਮਹੀਨਾ',\n MM: '%d ਮਹੀਨੇ',\n y: 'ਇੱਕ ਸਾਲ',\n yy: '%d ਸਾਲ',\n },\n preparse: function (string) {\n return string.replace(/[੧੨੩੪੫੬à©à©®à©¯à©¦]/g, function (match) {\n return numberMap[match];\n });\n },\n postformat: function (string) {\n return string.replace(/\\d/g, function (match) {\n return symbolMap[match];\n });\n },\n // Punjabi notation for meridiems are quite fuzzy in practice. While there exists\n // a rigid notion of a 'Pahar' it is not used as rigidly in modern Punjabi.\n meridiemParse: /ਰਾਤ|ਸਵੇਰ|ਦà©à¨ªà¨¹à¨¿à¨°|ਸ਼ਾਮ/,\n meridiemHour: function (hour, meridiem) {\n if (hour === 12) {\n hour = 0;\n }\n if (meridiem === 'ਰਾਤ') {\n return hour < 4 ? hour : hour + 12;\n } else if (meridiem === 'ਸਵੇਰ') {\n return hour;\n } else if (meridiem === 'ਦà©à¨ªà¨¹à¨¿à¨°') {\n return hour >= 10 ? hour : hour + 12;\n } else if (meridiem === 'ਸ਼ਾਮ') {\n return hour + 12;\n }\n },\n meridiem: function (hour, minute, isLower) {\n if (hour < 4) {\n return 'ਰਾਤ';\n } else if (hour < 10) {\n return 'ਸਵੇਰ';\n } else if (hour < 17) {\n return 'ਦà©à¨ªà¨¹à¨¿à¨°';\n } else if (hour < 20) {\n return 'ਸ਼ਾਮ';\n } else {\n return 'ਰਾਤ';\n }\n },\n week: {\n dow: 0, // Sunday is the first day of the week.\n doy: 6, // The week that contains Jan 6th is the first week of the year.\n },\n });\n\n return paIn;\n\n})));\n","//! moment.js locale configuration\n//! locale : Polish [pl]\n//! author : Rafal Hirsz : https://github.com/evoL\n\n;(function (global, factory) {\n typeof exports === 'object' && typeof module !== 'undefined'\n && typeof require === 'function' ? factory(require('../moment')) :\n typeof define === 'function' && define.amd ? define(['../moment'], factory) :\n factory(global.moment)\n}(this, (function (moment) { 'use strict';\n\n //! moment.js locale configuration\n\n var monthsNominative =\n 'styczeÅ„_luty_marzec_kwiecieÅ„_maj_czerwiec_lipiec_sierpieÅ„_wrzesieÅ„_październik_listopad_grudzieÅ„'.split(\n '_'\n ),\n monthsSubjective =\n 'stycznia_lutego_marca_kwietnia_maja_czerwca_lipca_sierpnia_wrzeÅ›nia_października_listopada_grudnia'.split(\n '_'\n ),\n monthsParse = [\n /^sty/i,\n /^lut/i,\n /^mar/i,\n /^kwi/i,\n /^maj/i,\n /^cze/i,\n /^lip/i,\n /^sie/i,\n /^wrz/i,\n /^paź/i,\n /^lis/i,\n /^gru/i,\n ];\n function plural(n) {\n return n % 10 < 5 && n % 10 > 1 && ~~(n / 10) % 10 !== 1;\n }\n function translate(number, withoutSuffix, key) {\n var result = number + ' ';\n switch (key) {\n case 'ss':\n return result + (plural(number) ? 'sekundy' : 'sekund');\n case 'm':\n return withoutSuffix ? 'minuta' : 'minutÄ™';\n case 'mm':\n return result + (plural(number) ? 'minuty' : 'minut');\n case 'h':\n return withoutSuffix ? 'godzina' : 'godzinÄ™';\n case 'hh':\n return result + (plural(number) ? 'godziny' : 'godzin');\n case 'ww':\n return result + (plural(number) ? 'tygodnie' : 'tygodni');\n case 'MM':\n return result + (plural(number) ? 'miesiÄ…ce' : 'miesiÄ™cy');\n case 'yy':\n return result + (plural(number) ? 'lata' : 'lat');\n }\n }\n\n var pl = moment.defineLocale('pl', {\n months: function (momentToFormat, format) {\n if (!momentToFormat) {\n return monthsNominative;\n } else if (/D MMMM/.test(format)) {\n return monthsSubjective[momentToFormat.month()];\n } else {\n return monthsNominative[momentToFormat.month()];\n }\n },\n monthsShort: 'sty_lut_mar_kwi_maj_cze_lip_sie_wrz_paź_lis_gru'.split('_'),\n monthsParse: monthsParse,\n longMonthsParse: monthsParse,\n shortMonthsParse: monthsParse,\n weekdays:\n 'niedziela_poniedziaÅ‚ek_wtorek_Å›roda_czwartek_piÄ…tek_sobota'.split('_'),\n weekdaysShort: 'ndz_pon_wt_Å›r_czw_pt_sob'.split('_'),\n weekdaysMin: 'Nd_Pn_Wt_Åšr_Cz_Pt_So'.split('_'),\n longDateFormat: {\n LT: 'HH:mm',\n LTS: 'HH:mm:ss',\n L: 'DD.MM.YYYY',\n LL: 'D MMMM YYYY',\n LLL: 'D MMMM YYYY HH:mm',\n LLLL: 'dddd, D MMMM YYYY HH:mm',\n },\n calendar: {\n sameDay: '[DziÅ› o] LT',\n nextDay: '[Jutro o] LT',\n nextWeek: function () {\n switch (this.day()) {\n case 0:\n return '[W niedzielÄ™ o] LT';\n\n case 2:\n return '[We wtorek o] LT';\n\n case 3:\n return '[W Å›rodÄ™ o] LT';\n\n case 6:\n return '[W sobotÄ™ o] LT';\n\n default:\n return '[W] dddd [o] LT';\n }\n },\n lastDay: '[Wczoraj o] LT',\n lastWeek: function () {\n switch (this.day()) {\n case 0:\n return '[W zeszÅ‚Ä… niedzielÄ™ o] LT';\n case 3:\n return '[W zeszÅ‚Ä… Å›rodÄ™ o] LT';\n case 6:\n return '[W zeszÅ‚Ä… sobotÄ™ o] LT';\n default:\n return '[W zeszÅ‚y] dddd [o] LT';\n }\n },\n sameElse: 'L',\n },\n relativeTime: {\n future: 'za %s',\n past: '%s temu',\n s: 'kilka sekund',\n ss: translate,\n m: translate,\n mm: translate,\n h: translate,\n hh: translate,\n d: '1 dzieÅ„',\n dd: '%d dni',\n w: 'tydzieÅ„',\n ww: translate,\n M: 'miesiÄ…c',\n MM: translate,\n y: 'rok',\n yy: translate,\n },\n dayOfMonthOrdinalParse: /\\d{1,2}\\./,\n ordinal: '%d.',\n week: {\n dow: 1, // Monday is the first day of the week.\n doy: 4, // The week that contains Jan 4th is the first week of the year.\n },\n });\n\n return pl;\n\n})));\n","//! moment.js locale configuration\n//! locale : Portuguese [pt]\n//! author : Jefferson : https://github.com/jalex79\n\n;(function (global, factory) {\n typeof exports === 'object' && typeof module !== 'undefined'\n && typeof require === 'function' ? factory(require('../moment')) :\n typeof define === 'function' && define.amd ? define(['../moment'], factory) :\n factory(global.moment)\n}(this, (function (moment) { 'use strict';\n\n //! moment.js locale configuration\n\n var pt = moment.defineLocale('pt', {\n months: 'janeiro_fevereiro_março_abril_maio_junho_julho_agosto_setembro_outubro_novembro_dezembro'.split(\n '_'\n ),\n monthsShort: 'jan_fev_mar_abr_mai_jun_jul_ago_set_out_nov_dez'.split('_'),\n weekdays:\n 'Domingo_Segunda-feira_Terça-feira_Quarta-feira_Quinta-feira_Sexta-feira_Sábado'.split(\n '_'\n ),\n weekdaysShort: 'Dom_Seg_Ter_Qua_Qui_Sex_Sáb'.split('_'),\n weekdaysMin: 'Do_2ª_3ª_4ª_5ª_6ª_Sá'.split('_'),\n weekdaysParseExact: true,\n longDateFormat: {\n LT: 'HH:mm',\n LTS: 'HH:mm:ss',\n L: 'DD/MM/YYYY',\n LL: 'D [de] MMMM [de] YYYY',\n LLL: 'D [de] MMMM [de] YYYY HH:mm',\n LLLL: 'dddd, D [de] MMMM [de] YYYY HH:mm',\n },\n calendar: {\n sameDay: '[Hoje à s] LT',\n nextDay: '[Amanhã à s] LT',\n nextWeek: 'dddd [à s] LT',\n lastDay: '[Ontem à s] LT',\n lastWeek: function () {\n return this.day() === 0 || this.day() === 6\n ? '[Último] dddd [à s] LT' // Saturday + Sunday\n : '[Última] dddd [à s] LT'; // Monday - Friday\n },\n sameElse: 'L',\n },\n relativeTime: {\n future: 'em %s',\n past: 'há %s',\n s: 'segundos',\n ss: '%d segundos',\n m: 'um minuto',\n mm: '%d minutos',\n h: 'uma hora',\n hh: '%d horas',\n d: 'um dia',\n dd: '%d dias',\n w: 'uma semana',\n ww: '%d semanas',\n M: 'um mês',\n MM: '%d meses',\n y: 'um ano',\n yy: '%d anos',\n },\n dayOfMonthOrdinalParse: /\\d{1,2}º/,\n ordinal: '%dº',\n week: {\n dow: 1, // Monday is the first day of the week.\n doy: 4, // The week that contains Jan 4th is the first week of the year.\n },\n });\n\n return pt;\n\n})));\n","//! moment.js locale configuration\n//! locale : Portuguese (Brazil) [pt-br]\n//! author : Caio Ribeiro Pereira : https://github.com/caio-ribeiro-pereira\n\n;(function (global, factory) {\n typeof exports === 'object' && typeof module !== 'undefined'\n && typeof require === 'function' ? factory(require('../moment')) :\n typeof define === 'function' && define.amd ? define(['../moment'], factory) :\n factory(global.moment)\n}(this, (function (moment) { 'use strict';\n\n //! moment.js locale configuration\n\n var ptBr = moment.defineLocale('pt-br', {\n months: 'janeiro_fevereiro_março_abril_maio_junho_julho_agosto_setembro_outubro_novembro_dezembro'.split(\n '_'\n ),\n monthsShort: 'jan_fev_mar_abr_mai_jun_jul_ago_set_out_nov_dez'.split('_'),\n weekdays:\n 'domingo_segunda-feira_terça-feira_quarta-feira_quinta-feira_sexta-feira_sábado'.split(\n '_'\n ),\n weekdaysShort: 'dom_seg_ter_qua_qui_sex_sáb'.split('_'),\n weekdaysMin: 'do_2ª_3ª_4ª_5ª_6ª_sá'.split('_'),\n weekdaysParseExact: true,\n longDateFormat: {\n LT: 'HH:mm',\n LTS: 'HH:mm:ss',\n L: 'DD/MM/YYYY',\n LL: 'D [de] MMMM [de] YYYY',\n LLL: 'D [de] MMMM [de] YYYY [à s] HH:mm',\n LLLL: 'dddd, D [de] MMMM [de] YYYY [à s] HH:mm',\n },\n calendar: {\n sameDay: '[Hoje à s] LT',\n nextDay: '[Amanhã à s] LT',\n nextWeek: 'dddd [à s] LT',\n lastDay: '[Ontem à s] LT',\n lastWeek: function () {\n return this.day() === 0 || this.day() === 6\n ? '[Último] dddd [à s] LT' // Saturday + Sunday\n : '[Última] dddd [à s] LT'; // Monday - Friday\n },\n sameElse: 'L',\n },\n relativeTime: {\n future: 'em %s',\n past: 'há %s',\n s: 'poucos segundos',\n ss: '%d segundos',\n m: 'um minuto',\n mm: '%d minutos',\n h: 'uma hora',\n hh: '%d horas',\n d: 'um dia',\n dd: '%d dias',\n M: 'um mês',\n MM: '%d meses',\n y: 'um ano',\n yy: '%d anos',\n },\n dayOfMonthOrdinalParse: /\\d{1,2}º/,\n ordinal: '%dº',\n invalidDate: 'Data inválida',\n });\n\n return ptBr;\n\n})));\n","//! moment.js locale configuration\n//! locale : Romanian [ro]\n//! author : Vlad Gurdiga : https://github.com/gurdiga\n//! author : Valentin Agachi : https://github.com/avaly\n//! author : Emanuel Cepoi : https://github.com/cepem\n\n;(function (global, factory) {\n typeof exports === 'object' && typeof module !== 'undefined'\n && typeof require === 'function' ? factory(require('../moment')) :\n typeof define === 'function' && define.amd ? define(['../moment'], factory) :\n factory(global.moment)\n}(this, (function (moment) { 'use strict';\n\n //! moment.js locale configuration\n\n function relativeTimeWithPlural(number, withoutSuffix, key) {\n var format = {\n ss: 'secunde',\n mm: 'minute',\n hh: 'ore',\n dd: 'zile',\n ww: 'săptămâni',\n MM: 'luni',\n yy: 'ani',\n },\n separator = ' ';\n if (number % 100 >= 20 || (number >= 100 && number % 100 === 0)) {\n separator = ' de ';\n }\n return number + separator + format[key];\n }\n\n var ro = moment.defineLocale('ro', {\n months: 'ianuarie_februarie_martie_aprilie_mai_iunie_iulie_august_septembrie_octombrie_noiembrie_decembrie'.split(\n '_'\n ),\n monthsShort:\n 'ian._feb._mart._apr._mai_iun._iul._aug._sept._oct._nov._dec.'.split(\n '_'\n ),\n monthsParseExact: true,\n weekdays: 'duminică_luni_marÈ›i_miercuri_joi_vineri_sâmbătă'.split('_'),\n weekdaysShort: 'Dum_Lun_Mar_Mie_Joi_Vin_Sâm'.split('_'),\n weekdaysMin: 'Du_Lu_Ma_Mi_Jo_Vi_Sâ'.split('_'),\n longDateFormat: {\n LT: 'H:mm',\n LTS: 'H:mm:ss',\n L: 'DD.MM.YYYY',\n LL: 'D MMMM YYYY',\n LLL: 'D MMMM YYYY H:mm',\n LLLL: 'dddd, D MMMM YYYY H:mm',\n },\n calendar: {\n sameDay: '[azi la] LT',\n nextDay: '[mâine la] LT',\n nextWeek: 'dddd [la] LT',\n lastDay: '[ieri la] LT',\n lastWeek: '[fosta] dddd [la] LT',\n sameElse: 'L',\n },\n relativeTime: {\n future: 'peste %s',\n past: '%s în urmă',\n s: 'câteva secunde',\n ss: relativeTimeWithPlural,\n m: 'un minut',\n mm: relativeTimeWithPlural,\n h: 'o oră',\n hh: relativeTimeWithPlural,\n d: 'o zi',\n dd: relativeTimeWithPlural,\n w: 'o săptămână',\n ww: relativeTimeWithPlural,\n M: 'o lună',\n MM: relativeTimeWithPlural,\n y: 'un an',\n yy: relativeTimeWithPlural,\n },\n week: {\n dow: 1, // Monday is the first day of the week.\n doy: 7, // The week that contains Jan 7th is the first week of the year.\n },\n });\n\n return ro;\n\n})));\n","//! moment.js locale configuration\n//! locale : Russian [ru]\n//! author : Viktorminator : https://github.com/Viktorminator\n//! author : Menelion Elensúle : https://github.com/Oire\n//! author : Коренберг Марк : https://github.com/socketpair\n\n;(function (global, factory) {\n typeof exports === 'object' && typeof module !== 'undefined'\n && typeof require === 'function' ? factory(require('../moment')) :\n typeof define === 'function' && define.amd ? define(['../moment'], factory) :\n factory(global.moment)\n}(this, (function (moment) { 'use strict';\n\n //! moment.js locale configuration\n\n function plural(word, num) {\n var forms = word.split('_');\n return num % 10 === 1 && num % 100 !== 11\n ? forms[0]\n : num % 10 >= 2 && num % 10 <= 4 && (num % 100 < 10 || num % 100 >= 20)\n ? forms[1]\n : forms[2];\n }\n function relativeTimeWithPlural(number, withoutSuffix, key) {\n var format = {\n ss: withoutSuffix ? 'Ñекунда_Ñекунды_Ñекунд' : 'Ñекунду_Ñекунды_Ñекунд',\n mm: withoutSuffix ? 'минута_минуты_минут' : 'минуту_минуты_минут',\n hh: 'чаÑ_чаÑа_чаÑов',\n dd: 'день_днÑ_дней',\n ww: 'неделÑ_недели_недель',\n MM: 'меÑÑц_меÑÑца_меÑÑцев',\n yy: 'год_года_лет',\n };\n if (key === 'm') {\n return withoutSuffix ? 'минута' : 'минуту';\n } else {\n return number + ' ' + plural(format[key], +number);\n }\n }\n var monthsParse = [\n /^Ñнв/i,\n /^фев/i,\n /^мар/i,\n /^апр/i,\n /^ма[йÑ]/i,\n /^июн/i,\n /^июл/i,\n /^авг/i,\n /^Ñен/i,\n /^окт/i,\n /^ноÑ/i,\n /^дек/i,\n ];\n\n // http://new.gramota.ru/spravka/rules/139-prop : § 103\n // Ð¡Ð¾ÐºÑ€Ð°Ñ‰ÐµÐ½Ð¸Ñ Ð¼ÐµÑÑцев: http://new.gramota.ru/spravka/buro/search-answer?s=242637\n // CLDR data: http://www.unicode.org/cldr/charts/28/summary/ru.html#1753\n var ru = moment.defineLocale('ru', {\n months: {\n format: 'ÑнварÑ_февралÑ_марта_апрелÑ_маÑ_июнÑ_июлÑ_авгуÑта_ÑентÑбрÑ_октÑбрÑ_ноÑбрÑ_декабрÑ'.split(\n '_'\n ),\n standalone:\n 'Ñнварь_февраль_март_апрель_май_июнь_июль_авгуÑÑ‚_ÑентÑбрь_октÑбрь_ноÑбрь_декабрь'.split(\n '_'\n ),\n },\n monthsShort: {\n // по CLDR именно \"июл.\" и \"июн.\", но какой ÑмыÑл менÑÑ‚ÑŒ букву на точку?\n format: 'Ñнв._февр._мар._апр._маÑ_июнÑ_июлÑ_авг._Ñент._окт._ноÑб._дек.'.split(\n '_'\n ),\n standalone:\n 'Ñнв._февр._март_апр._май_июнь_июль_авг._Ñент._окт._ноÑб._дек.'.split(\n '_'\n ),\n },\n weekdays: {\n standalone:\n 'воÑкреÑенье_понедельник_вторник_Ñреда_четверг_пÑтница_Ñуббота'.split(\n '_'\n ),\n format: 'воÑкреÑенье_понедельник_вторник_Ñреду_четверг_пÑтницу_Ñубботу'.split(\n '_'\n ),\n isFormat: /\\[ ?[Вв] ?(?:прошлую|Ñледующую|Ñту)? ?] ?dddd/,\n },\n weekdaysShort: 'вÑ_пн_вт_ÑÑ€_чт_пт_Ñб'.split('_'),\n weekdaysMin: 'вÑ_пн_вт_ÑÑ€_чт_пт_Ñб'.split('_'),\n monthsParse: monthsParse,\n longMonthsParse: monthsParse,\n shortMonthsParse: monthsParse,\n\n // полные Ð½Ð°Ð·Ð²Ð°Ð½Ð¸Ñ Ñ Ð¿Ð°Ð´ÐµÐ¶Ð°Ð¼Ð¸, по три буквы, Ð´Ð»Ñ Ð½ÐµÐºÐ¾Ñ‚Ð¾Ñ€Ñ‹Ñ…, по 4 буквы, ÑÐ¾ÐºÑ€Ð°Ñ‰ÐµÐ½Ð¸Ñ Ñ Ñ‚Ð¾Ñ‡ÐºÐ¾Ð¹ и без точки\n monthsRegex:\n /^(Ñнвар[ÑŒÑ]|Ñнв\\.?|феврал[ÑŒÑ]|февр?\\.?|марта?|мар\\.?|апрел[ÑŒÑ]|апр\\.?|ма[йÑ]|июн[ÑŒÑ]|июн\\.?|июл[ÑŒÑ]|июл\\.?|авгуÑта?|авг\\.?|ÑентÑбр[ÑŒÑ]|Ñент?\\.?|октÑбр[ÑŒÑ]|окт\\.?|ноÑбр[ÑŒÑ]|ноÑб?\\.?|декабр[ÑŒÑ]|дек\\.?)/i,\n\n // ÐºÐ¾Ð¿Ð¸Ñ Ð¿Ñ€ÐµÐ´Ñ‹Ð´ÑƒÑ‰ÐµÐ³Ð¾\n monthsShortRegex:\n /^(Ñнвар[ÑŒÑ]|Ñнв\\.?|феврал[ÑŒÑ]|февр?\\.?|марта?|мар\\.?|апрел[ÑŒÑ]|апр\\.?|ма[йÑ]|июн[ÑŒÑ]|июн\\.?|июл[ÑŒÑ]|июл\\.?|авгуÑта?|авг\\.?|ÑентÑбр[ÑŒÑ]|Ñент?\\.?|октÑбр[ÑŒÑ]|окт\\.?|ноÑбр[ÑŒÑ]|ноÑб?\\.?|декабр[ÑŒÑ]|дек\\.?)/i,\n\n // полные Ð½Ð°Ð·Ð²Ð°Ð½Ð¸Ñ Ñ Ð¿Ð°Ð´ÐµÐ¶Ð°Ð¼Ð¸\n monthsStrictRegex:\n /^(Ñнвар[ÑÑŒ]|феврал[ÑÑŒ]|марта?|апрел[ÑÑŒ]|ма[Ñй]|июн[ÑÑŒ]|июл[ÑÑŒ]|авгуÑта?|ÑентÑбр[ÑÑŒ]|октÑбр[ÑÑŒ]|ноÑбр[ÑÑŒ]|декабр[ÑÑŒ])/i,\n\n // Выражение, которое ÑоответÑтвует только Ñокращённым формам\n monthsShortStrictRegex:\n /^(Ñнв\\.|февр?\\.|мар[Ñ‚.]|апр\\.|ма[Ñй]|июн[ÑŒÑ.]|июл[ÑŒÑ.]|авг\\.|Ñент?\\.|окт\\.|ноÑб?\\.|дек\\.)/i,\n longDateFormat: {\n LT: 'H:mm',\n LTS: 'H:mm:ss',\n L: 'DD.MM.YYYY',\n LL: 'D MMMM YYYY г.',\n LLL: 'D MMMM YYYY г., H:mm',\n LLLL: 'dddd, D MMMM YYYY г., H:mm',\n },\n calendar: {\n sameDay: '[СегоднÑ, в] LT',\n nextDay: '[Завтра, в] LT',\n lastDay: '[Вчера, в] LT',\n nextWeek: function (now) {\n if (now.week() !== this.week()) {\n switch (this.day()) {\n case 0:\n return '[Ð’ Ñледующее] dddd, [в] LT';\n case 1:\n case 2:\n case 4:\n return '[Ð’ Ñледующий] dddd, [в] LT';\n case 3:\n case 5:\n case 6:\n return '[Ð’ Ñледующую] dddd, [в] LT';\n }\n } else {\n if (this.day() === 2) {\n return '[Во] dddd, [в] LT';\n } else {\n return '[Ð’] dddd, [в] LT';\n }\n }\n },\n lastWeek: function (now) {\n if (now.week() !== this.week()) {\n switch (this.day()) {\n case 0:\n return '[Ð’ прошлое] dddd, [в] LT';\n case 1:\n case 2:\n case 4:\n return '[Ð’ прошлый] dddd, [в] LT';\n case 3:\n case 5:\n case 6:\n return '[Ð’ прошлую] dddd, [в] LT';\n }\n } else {\n if (this.day() === 2) {\n return '[Во] dddd, [в] LT';\n } else {\n return '[Ð’] dddd, [в] LT';\n }\n }\n },\n sameElse: 'L',\n },\n relativeTime: {\n future: 'через %s',\n past: '%s назад',\n s: 'неÑколько Ñекунд',\n ss: relativeTimeWithPlural,\n m: relativeTimeWithPlural,\n mm: relativeTimeWithPlural,\n h: 'чаÑ',\n hh: relativeTimeWithPlural,\n d: 'день',\n dd: relativeTimeWithPlural,\n w: 'неделÑ',\n ww: relativeTimeWithPlural,\n M: 'меÑÑц',\n MM: relativeTimeWithPlural,\n y: 'год',\n yy: relativeTimeWithPlural,\n },\n meridiemParse: /ночи|утра|днÑ|вечера/i,\n isPM: function (input) {\n return /^(днÑ|вечера)$/.test(input);\n },\n meridiem: function (hour, minute, isLower) {\n if (hour < 4) {\n return 'ночи';\n } else if (hour < 12) {\n return 'утра';\n } else if (hour < 17) {\n return 'днÑ';\n } else {\n return 'вечера';\n }\n },\n dayOfMonthOrdinalParse: /\\d{1,2}-(й|го|Ñ)/,\n ordinal: function (number, period) {\n switch (period) {\n case 'M':\n case 'd':\n case 'DDD':\n return number + '-й';\n case 'D':\n return number + '-го';\n case 'w':\n case 'W':\n return number + '-Ñ';\n default:\n return number;\n }\n },\n week: {\n dow: 1, // Monday is the first day of the week.\n doy: 4, // The week that contains Jan 4th is the first week of the year.\n },\n });\n\n return ru;\n\n})));\n","//! moment.js locale configuration\n//! locale : Sindhi [sd]\n//! author : Narain Sagar : https://github.com/narainsagar\n\n;(function (global, factory) {\n typeof exports === 'object' && typeof module !== 'undefined'\n && typeof require === 'function' ? factory(require('../moment')) :\n typeof define === 'function' && define.amd ? define(['../moment'], factory) :\n factory(global.moment)\n}(this, (function (moment) { 'use strict';\n\n //! moment.js locale configuration\n\n var months = [\n 'جنوري',\n 'Ùيبروري',\n 'مارچ',\n 'اپريل',\n 'مئي',\n 'جون',\n 'جولاءÙ',\n 'آگسٽ',\n 'سيپٽمبر',\n 'آڪٽوبر',\n 'نومبر',\n 'ڊسمبر',\n ],\n days = ['آچر', 'سومر', 'اڱارو', 'اربع', 'خميس', 'جمع', 'ڇنڇر'];\n\n var sd = moment.defineLocale('sd', {\n months: months,\n monthsShort: months,\n weekdays: days,\n weekdaysShort: days,\n weekdaysMin: days,\n longDateFormat: {\n LT: 'HH:mm',\n LTS: 'HH:mm:ss',\n L: 'DD/MM/YYYY',\n LL: 'D MMMM YYYY',\n LLL: 'D MMMM YYYY HH:mm',\n LLLL: 'ddddØŒ D MMMM YYYY HH:mm',\n },\n meridiemParse: /صبØ|شام/,\n isPM: function (input) {\n return 'شام' === input;\n },\n meridiem: function (hour, minute, isLower) {\n if (hour < 12) {\n return 'صبØ';\n }\n return 'شام';\n },\n calendar: {\n sameDay: '[اڄ] LT',\n nextDay: '[سڀاڻي] LT',\n nextWeek: 'dddd [اڳين Ù‡Ùتي تي] LT',\n lastDay: '[ڪالهه] LT',\n lastWeek: '[گزريل Ù‡Ùتي] dddd [تي] LT',\n sameElse: 'L',\n },\n relativeTime: {\n future: '%s پوء',\n past: '%s اڳ',\n s: 'چند سيڪنڊ',\n ss: '%d سيڪنڊ',\n m: 'Ù‡Úª منٽ',\n mm: '%d منٽ',\n h: 'Ù‡Úª ڪلاڪ',\n hh: '%d ڪلاڪ',\n d: 'Ù‡Úª Úينهن',\n dd: '%d Úينهن',\n M: 'Ù‡Úª مهينو',\n MM: '%d مهينا',\n y: 'Ù‡Úª سال',\n yy: '%d سال',\n },\n preparse: function (string) {\n return string.replace(/ØŒ/g, ',');\n },\n postformat: function (string) {\n return string.replace(/,/g, 'ØŒ');\n },\n week: {\n dow: 1, // Monday is the first day of the week.\n doy: 4, // The week that contains Jan 4th is the first week of the year.\n },\n });\n\n return sd;\n\n})));\n","//! moment.js locale configuration\n//! locale : Northern Sami [se]\n//! authors : BÃ¥rd Rolstad Henriksen : https://github.com/karamell\n\n;(function (global, factory) {\n typeof exports === 'object' && typeof module !== 'undefined'\n && typeof require === 'function' ? factory(require('../moment')) :\n typeof define === 'function' && define.amd ? define(['../moment'], factory) :\n factory(global.moment)\n}(this, (function (moment) { 'use strict';\n\n //! moment.js locale configuration\n\n var se = moment.defineLocale('se', {\n months: 'oÄ‘Ä‘ajagemánnu_guovvamánnu_njukÄamánnu_cuoÅ‹ománnu_miessemánnu_geassemánnu_suoidnemánnu_borgemánnu_ÄakÄamánnu_golggotmánnu_skábmamánnu_juovlamánnu'.split(\n '_'\n ),\n monthsShort:\n 'oÄ‘Ä‘j_guov_njuk_cuo_mies_geas_suoi_borg_ÄakÄ_golg_skáb_juov'.split('_'),\n weekdays:\n 'sotnabeaivi_vuossárga_maÅ‹Å‹ebárga_gaskavahkku_duorastat_bearjadat_lávvardat'.split(\n '_'\n ),\n weekdaysShort: 'sotn_vuos_maÅ‹_gask_duor_bear_láv'.split('_'),\n weekdaysMin: 's_v_m_g_d_b_L'.split('_'),\n longDateFormat: {\n LT: 'HH:mm',\n LTS: 'HH:mm:ss',\n L: 'DD.MM.YYYY',\n LL: 'MMMM D. [b.] YYYY',\n LLL: 'MMMM D. [b.] YYYY [ti.] HH:mm',\n LLLL: 'dddd, MMMM D. [b.] YYYY [ti.] HH:mm',\n },\n calendar: {\n sameDay: '[otne ti] LT',\n nextDay: '[ihttin ti] LT',\n nextWeek: 'dddd [ti] LT',\n lastDay: '[ikte ti] LT',\n lastWeek: '[ovddit] dddd [ti] LT',\n sameElse: 'L',\n },\n relativeTime: {\n future: '%s geažes',\n past: 'maÅ‹it %s',\n s: 'moadde sekunddat',\n ss: '%d sekunddat',\n m: 'okta minuhta',\n mm: '%d minuhtat',\n h: 'okta diimmu',\n hh: '%d diimmut',\n d: 'okta beaivi',\n dd: '%d beaivvit',\n M: 'okta mánnu',\n MM: '%d mánut',\n y: 'okta jahki',\n yy: '%d jagit',\n },\n dayOfMonthOrdinalParse: /\\d{1,2}\\./,\n ordinal: '%d.',\n week: {\n dow: 1, // Monday is the first day of the week.\n doy: 4, // The week that contains Jan 4th is the first week of the year.\n },\n });\n\n return se;\n\n})));\n","//! moment.js locale configuration\n//! locale : Sinhalese [si]\n//! author : Sampath Sitinamaluwa : https://github.com/sampathsris\n\n;(function (global, factory) {\n typeof exports === 'object' && typeof module !== 'undefined'\n && typeof require === 'function' ? factory(require('../moment')) :\n typeof define === 'function' && define.amd ? define(['../moment'], factory) :\n factory(global.moment)\n}(this, (function (moment) { 'use strict';\n\n //! moment.js locale configuration\n\n /*jshint -W100*/\n var si = moment.defineLocale('si', {\n months: 'ජනවà·à¶»à·’_පෙබරවà·à¶»à·’_මà·à¶»à·Šà¶à·”_අප්â€à¶»à·šà¶½à·Š_මà·à¶ºà·’_ජූනි_ජූලි_අගà·à·ƒà·Šà¶à·”_à·ƒà·à¶´à·Šà¶à·à¶¸à·Šà¶¶à¶»à·Š_ඔක්à¶à·à¶¶à¶»à·Š_නොවà·à¶¸à·Šà¶¶à¶»à·Š_දෙසà·à¶¸à·Šà¶¶à¶»à·Š'.split(\n '_'\n ),\n monthsShort: 'ජන_පෙබ_මà·à¶»à·Š_අප්_මà·à¶ºà·’_ජූනි_ජූලි_අගà·_à·ƒà·à¶´à·Š_ඔක්_නොවà·_දෙසà·'.split(\n '_'\n ),\n weekdays:\n 'ඉරිදà·_සඳුදà·_අඟහරුවà·à¶¯à·_බදà·à¶¯à·_බ්â€à¶»à·„ස්පà¶à·’න්දà·_සිකුරà·à¶¯à·_සෙනසුරà·à¶¯à·'.split(\n '_'\n ),\n weekdaysShort: 'ඉරි_සඳු_අඟ_බදà·_බ්â€à¶»à·„_සිකු_සෙන'.split('_'),\n weekdaysMin: 'ඉ_à·ƒ_අ_බ_බ්â€à¶»_සි_සෙ'.split('_'),\n weekdaysParseExact: true,\n longDateFormat: {\n LT: 'a h:mm',\n LTS: 'a h:mm:ss',\n L: 'YYYY/MM/DD',\n LL: 'YYYY MMMM D',\n LLL: 'YYYY MMMM D, a h:mm',\n LLLL: 'YYYY MMMM D [à·€à·à¶±à·’] dddd, a h:mm:ss',\n },\n calendar: {\n sameDay: '[අද] LT[ට]',\n nextDay: '[හෙට] LT[ට]',\n nextWeek: 'dddd LT[ට]',\n lastDay: '[ඊයේ] LT[ට]',\n lastWeek: '[පසුගිය] dddd LT[ට]',\n sameElse: 'L',\n },\n relativeTime: {\n future: '%sකින්',\n past: '%sකට පෙර',\n s: 'à¶à¶à·Šà¶´à¶» කිහිපය',\n ss: 'à¶à¶à·Šà¶´à¶» %d',\n m: 'මිනිà¶à·Šà¶à·”à·€',\n mm: 'මිනිà¶à·Šà¶à·” %d',\n h: 'පà·à¶º',\n hh: 'පà·à¶º %d',\n d: 'දිනය',\n dd: 'දින %d',\n M: 'මà·à·ƒà¶º',\n MM: 'මà·à·ƒ %d',\n y: 'වසර',\n yy: 'වසර %d',\n },\n dayOfMonthOrdinalParse: /\\d{1,2} à·€à·à¶±à·’/,\n ordinal: function (number) {\n return number + ' à·€à·à¶±à·’';\n },\n meridiemParse: /පෙර වරු|පස් වරු|පෙ.à·€|ප.à·€./,\n isPM: function (input) {\n return input === 'ප.à·€.' || input === 'පස් වරු';\n },\n meridiem: function (hours, minutes, isLower) {\n if (hours > 11) {\n return isLower ? 'ප.à·€.' : 'පස් වරු';\n } else {\n return isLower ? 'පෙ.à·€.' : 'පෙර වරු';\n }\n },\n });\n\n return si;\n\n})));\n","//! moment.js locale configuration\n//! locale : Slovak [sk]\n//! author : Martin Minka : https://github.com/k2s\n//! based on work of petrbela : https://github.com/petrbela\n\n;(function (global, factory) {\n typeof exports === 'object' && typeof module !== 'undefined'\n && typeof require === 'function' ? factory(require('../moment')) :\n typeof define === 'function' && define.amd ? define(['../moment'], factory) :\n factory(global.moment)\n}(this, (function (moment) { 'use strict';\n\n //! moment.js locale configuration\n\n var months =\n 'január_február_marec_aprÃl_máj_jún_júl_august_september_október_november_december'.split(\n '_'\n ),\n monthsShort = 'jan_feb_mar_apr_máj_jún_júl_aug_sep_okt_nov_dec'.split('_');\n function plural(n) {\n return n > 1 && n < 5;\n }\n function translate(number, withoutSuffix, key, isFuture) {\n var result = number + ' ';\n switch (key) {\n case 's': // a few seconds / in a few seconds / a few seconds ago\n return withoutSuffix || isFuture ? 'pár sekúnd' : 'pár sekundami';\n case 'ss': // 9 seconds / in 9 seconds / 9 seconds ago\n if (withoutSuffix || isFuture) {\n return result + (plural(number) ? 'sekundy' : 'sekúnd');\n } else {\n return result + 'sekundami';\n }\n case 'm': // a minute / in a minute / a minute ago\n return withoutSuffix ? 'minúta' : isFuture ? 'minútu' : 'minútou';\n case 'mm': // 9 minutes / in 9 minutes / 9 minutes ago\n if (withoutSuffix || isFuture) {\n return result + (plural(number) ? 'minúty' : 'minút');\n } else {\n return result + 'minútami';\n }\n case 'h': // an hour / in an hour / an hour ago\n return withoutSuffix ? 'hodina' : isFuture ? 'hodinu' : 'hodinou';\n case 'hh': // 9 hours / in 9 hours / 9 hours ago\n if (withoutSuffix || isFuture) {\n return result + (plural(number) ? 'hodiny' : 'hodÃn');\n } else {\n return result + 'hodinami';\n }\n case 'd': // a day / in a day / a day ago\n return withoutSuffix || isFuture ? 'deň' : 'dňom';\n case 'dd': // 9 days / in 9 days / 9 days ago\n if (withoutSuffix || isFuture) {\n return result + (plural(number) ? 'dni' : 'dnÃ');\n } else {\n return result + 'dňami';\n }\n case 'M': // a month / in a month / a month ago\n return withoutSuffix || isFuture ? 'mesiac' : 'mesiacom';\n case 'MM': // 9 months / in 9 months / 9 months ago\n if (withoutSuffix || isFuture) {\n return result + (plural(number) ? 'mesiace' : 'mesiacov');\n } else {\n return result + 'mesiacmi';\n }\n case 'y': // a year / in a year / a year ago\n return withoutSuffix || isFuture ? 'rok' : 'rokom';\n case 'yy': // 9 years / in 9 years / 9 years ago\n if (withoutSuffix || isFuture) {\n return result + (plural(number) ? 'roky' : 'rokov');\n } else {\n return result + 'rokmi';\n }\n }\n }\n\n var sk = moment.defineLocale('sk', {\n months: months,\n monthsShort: monthsShort,\n weekdays: 'nedeľa_pondelok_utorok_streda_Å¡tvrtok_piatok_sobota'.split('_'),\n weekdaysShort: 'ne_po_ut_st_Å¡t_pi_so'.split('_'),\n weekdaysMin: 'ne_po_ut_st_Å¡t_pi_so'.split('_'),\n longDateFormat: {\n LT: 'H:mm',\n LTS: 'H:mm:ss',\n L: 'DD.MM.YYYY',\n LL: 'D. MMMM YYYY',\n LLL: 'D. MMMM YYYY H:mm',\n LLLL: 'dddd D. MMMM YYYY H:mm',\n },\n calendar: {\n sameDay: '[dnes o] LT',\n nextDay: '[zajtra o] LT',\n nextWeek: function () {\n switch (this.day()) {\n case 0:\n return '[v nedeľu o] LT';\n case 1:\n case 2:\n return '[v] dddd [o] LT';\n case 3:\n return '[v stredu o] LT';\n case 4:\n return '[vo Å¡tvrtok o] LT';\n case 5:\n return '[v piatok o] LT';\n case 6:\n return '[v sobotu o] LT';\n }\n },\n lastDay: '[vÄera o] LT',\n lastWeek: function () {\n switch (this.day()) {\n case 0:\n return '[minulú nedeľu o] LT';\n case 1:\n case 2:\n return '[minulý] dddd [o] LT';\n case 3:\n return '[minulú stredu o] LT';\n case 4:\n case 5:\n return '[minulý] dddd [o] LT';\n case 6:\n return '[minulú sobotu o] LT';\n }\n },\n sameElse: 'L',\n },\n relativeTime: {\n future: 'za %s',\n past: 'pred %s',\n s: translate,\n ss: translate,\n m: translate,\n mm: translate,\n h: translate,\n hh: translate,\n d: translate,\n dd: translate,\n M: translate,\n MM: translate,\n y: translate,\n yy: translate,\n },\n dayOfMonthOrdinalParse: /\\d{1,2}\\./,\n ordinal: '%d.',\n week: {\n dow: 1, // Monday is the first day of the week.\n doy: 4, // The week that contains Jan 4th is the first week of the year.\n },\n });\n\n return sk;\n\n})));\n","//! moment.js locale configuration\n//! locale : Slovenian [sl]\n//! author : Robert SedovÅ¡ek : https://github.com/sedovsek\n\n;(function (global, factory) {\n typeof exports === 'object' && typeof module !== 'undefined'\n && typeof require === 'function' ? factory(require('../moment')) :\n typeof define === 'function' && define.amd ? define(['../moment'], factory) :\n factory(global.moment)\n}(this, (function (moment) { 'use strict';\n\n //! moment.js locale configuration\n\n function processRelativeTime(number, withoutSuffix, key, isFuture) {\n var result = number + ' ';\n switch (key) {\n case 's':\n return withoutSuffix || isFuture\n ? 'nekaj sekund'\n : 'nekaj sekundami';\n case 'ss':\n if (number === 1) {\n result += withoutSuffix ? 'sekundo' : 'sekundi';\n } else if (number === 2) {\n result += withoutSuffix || isFuture ? 'sekundi' : 'sekundah';\n } else if (number < 5) {\n result += withoutSuffix || isFuture ? 'sekunde' : 'sekundah';\n } else {\n result += 'sekund';\n }\n return result;\n case 'm':\n return withoutSuffix ? 'ena minuta' : 'eno minuto';\n case 'mm':\n if (number === 1) {\n result += withoutSuffix ? 'minuta' : 'minuto';\n } else if (number === 2) {\n result += withoutSuffix || isFuture ? 'minuti' : 'minutama';\n } else if (number < 5) {\n result += withoutSuffix || isFuture ? 'minute' : 'minutami';\n } else {\n result += withoutSuffix || isFuture ? 'minut' : 'minutami';\n }\n return result;\n case 'h':\n return withoutSuffix ? 'ena ura' : 'eno uro';\n case 'hh':\n if (number === 1) {\n result += withoutSuffix ? 'ura' : 'uro';\n } else if (number === 2) {\n result += withoutSuffix || isFuture ? 'uri' : 'urama';\n } else if (number < 5) {\n result += withoutSuffix || isFuture ? 'ure' : 'urami';\n } else {\n result += withoutSuffix || isFuture ? 'ur' : 'urami';\n }\n return result;\n case 'd':\n return withoutSuffix || isFuture ? 'en dan' : 'enim dnem';\n case 'dd':\n if (number === 1) {\n result += withoutSuffix || isFuture ? 'dan' : 'dnem';\n } else if (number === 2) {\n result += withoutSuffix || isFuture ? 'dni' : 'dnevoma';\n } else {\n result += withoutSuffix || isFuture ? 'dni' : 'dnevi';\n }\n return result;\n case 'M':\n return withoutSuffix || isFuture ? 'en mesec' : 'enim mesecem';\n case 'MM':\n if (number === 1) {\n result += withoutSuffix || isFuture ? 'mesec' : 'mesecem';\n } else if (number === 2) {\n result += withoutSuffix || isFuture ? 'meseca' : 'mesecema';\n } else if (number < 5) {\n result += withoutSuffix || isFuture ? 'mesece' : 'meseci';\n } else {\n result += withoutSuffix || isFuture ? 'mesecev' : 'meseci';\n }\n return result;\n case 'y':\n return withoutSuffix || isFuture ? 'eno leto' : 'enim letom';\n case 'yy':\n if (number === 1) {\n result += withoutSuffix || isFuture ? 'leto' : 'letom';\n } else if (number === 2) {\n result += withoutSuffix || isFuture ? 'leti' : 'letoma';\n } else if (number < 5) {\n result += withoutSuffix || isFuture ? 'leta' : 'leti';\n } else {\n result += withoutSuffix || isFuture ? 'let' : 'leti';\n }\n return result;\n }\n }\n\n var sl = moment.defineLocale('sl', {\n months: 'januar_februar_marec_april_maj_junij_julij_avgust_september_oktober_november_december'.split(\n '_'\n ),\n monthsShort:\n 'jan._feb._mar._apr._maj._jun._jul._avg._sep._okt._nov._dec.'.split(\n '_'\n ),\n monthsParseExact: true,\n weekdays: 'nedelja_ponedeljek_torek_sreda_Äetrtek_petek_sobota'.split('_'),\n weekdaysShort: 'ned._pon._tor._sre._Äet._pet._sob.'.split('_'),\n weekdaysMin: 'ne_po_to_sr_Äe_pe_so'.split('_'),\n weekdaysParseExact: true,\n longDateFormat: {\n LT: 'H:mm',\n LTS: 'H:mm:ss',\n L: 'DD. MM. YYYY',\n LL: 'D. MMMM YYYY',\n LLL: 'D. MMMM YYYY H:mm',\n LLLL: 'dddd, D. MMMM YYYY H:mm',\n },\n calendar: {\n sameDay: '[danes ob] LT',\n nextDay: '[jutri ob] LT',\n\n nextWeek: function () {\n switch (this.day()) {\n case 0:\n return '[v] [nedeljo] [ob] LT';\n case 3:\n return '[v] [sredo] [ob] LT';\n case 6:\n return '[v] [soboto] [ob] LT';\n case 1:\n case 2:\n case 4:\n case 5:\n return '[v] dddd [ob] LT';\n }\n },\n lastDay: '[vÄeraj ob] LT',\n lastWeek: function () {\n switch (this.day()) {\n case 0:\n return '[prejÅ¡njo] [nedeljo] [ob] LT';\n case 3:\n return '[prejÅ¡njo] [sredo] [ob] LT';\n case 6:\n return '[prejÅ¡njo] [soboto] [ob] LT';\n case 1:\n case 2:\n case 4:\n case 5:\n return '[prejÅ¡nji] dddd [ob] LT';\n }\n },\n sameElse: 'L',\n },\n relativeTime: {\n future: 'Äez %s',\n past: 'pred %s',\n s: processRelativeTime,\n ss: processRelativeTime,\n m: processRelativeTime,\n mm: processRelativeTime,\n h: processRelativeTime,\n hh: processRelativeTime,\n d: processRelativeTime,\n dd: processRelativeTime,\n M: processRelativeTime,\n MM: processRelativeTime,\n y: processRelativeTime,\n yy: processRelativeTime,\n },\n dayOfMonthOrdinalParse: /\\d{1,2}\\./,\n ordinal: '%d.',\n week: {\n dow: 1, // Monday is the first day of the week.\n doy: 7, // The week that contains Jan 7th is the first week of the year.\n },\n });\n\n return sl;\n\n})));\n","//! moment.js locale configuration\n//! locale : Albanian [sq]\n//! author : Flakërim Ismani : https://github.com/flakerimi\n//! author : Menelion Elensúle : https://github.com/Oire\n//! author : Oerd Cukalla : https://github.com/oerd\n\n;(function (global, factory) {\n typeof exports === 'object' && typeof module !== 'undefined'\n && typeof require === 'function' ? factory(require('../moment')) :\n typeof define === 'function' && define.amd ? define(['../moment'], factory) :\n factory(global.moment)\n}(this, (function (moment) { 'use strict';\n\n //! moment.js locale configuration\n\n var sq = moment.defineLocale('sq', {\n months: 'Janar_Shkurt_Mars_Prill_Maj_Qershor_Korrik_Gusht_Shtator_Tetor_Nëntor_Dhjetor'.split(\n '_'\n ),\n monthsShort: 'Jan_Shk_Mar_Pri_Maj_Qer_Kor_Gus_Sht_Tet_Nën_Dhj'.split('_'),\n weekdays: 'E Diel_E Hënë_E Martë_E Mërkurë_E Enjte_E Premte_E Shtunë'.split(\n '_'\n ),\n weekdaysShort: 'Die_Hën_Mar_Mër_Enj_Pre_Sht'.split('_'),\n weekdaysMin: 'D_H_Ma_Më_E_P_Sh'.split('_'),\n weekdaysParseExact: true,\n meridiemParse: /PD|MD/,\n isPM: function (input) {\n return input.charAt(0) === 'M';\n },\n meridiem: function (hours, minutes, isLower) {\n return hours < 12 ? 'PD' : 'MD';\n },\n longDateFormat: {\n LT: 'HH:mm',\n LTS: 'HH:mm:ss',\n L: 'DD/MM/YYYY',\n LL: 'D MMMM YYYY',\n LLL: 'D MMMM YYYY HH:mm',\n LLLL: 'dddd, D MMMM YYYY HH:mm',\n },\n calendar: {\n sameDay: '[Sot në] LT',\n nextDay: '[Nesër në] LT',\n nextWeek: 'dddd [në] LT',\n lastDay: '[Dje në] LT',\n lastWeek: 'dddd [e kaluar në] LT',\n sameElse: 'L',\n },\n relativeTime: {\n future: 'në %s',\n past: '%s më parë',\n s: 'disa sekonda',\n ss: '%d sekonda',\n m: 'një minutë',\n mm: '%d minuta',\n h: 'një orë',\n hh: '%d orë',\n d: 'një ditë',\n dd: '%d ditë',\n M: 'një muaj',\n MM: '%d muaj',\n y: 'një vit',\n yy: '%d vite',\n },\n dayOfMonthOrdinalParse: /\\d{1,2}\\./,\n ordinal: '%d.',\n week: {\n dow: 1, // Monday is the first day of the week.\n doy: 4, // The week that contains Jan 4th is the first week of the year.\n },\n });\n\n return sq;\n\n})));\n","//! moment.js locale configuration\n//! locale : Serbian [sr]\n//! author : Milan JanaÄković<milanjanackovic@gmail.com> : https://github.com/milan-j\n//! author : Stefan Crnjaković <stefan@hotmail.rs> : https://github.com/crnjakovic\n\n;(function (global, factory) {\n typeof exports === 'object' && typeof module !== 'undefined'\n && typeof require === 'function' ? factory(require('../moment')) :\n typeof define === 'function' && define.amd ? define(['../moment'], factory) :\n factory(global.moment)\n}(this, (function (moment) { 'use strict';\n\n //! moment.js locale configuration\n\n var translator = {\n words: {\n //Different grammatical cases\n ss: ['sekunda', 'sekunde', 'sekundi'],\n m: ['jedan minut', 'jednog minuta'],\n mm: ['minut', 'minuta', 'minuta'],\n h: ['jedan sat', 'jednog sata'],\n hh: ['sat', 'sata', 'sati'],\n d: ['jedan dan', 'jednog dana'],\n dd: ['dan', 'dana', 'dana'],\n M: ['jedan mesec', 'jednog meseca'],\n MM: ['mesec', 'meseca', 'meseci'],\n y: ['jednu godinu', 'jedne godine'],\n yy: ['godinu', 'godine', 'godina'],\n },\n correctGrammaticalCase: function (number, wordKey) {\n if (\n number % 10 >= 1 &&\n number % 10 <= 4 &&\n (number % 100 < 10 || number % 100 >= 20)\n ) {\n return number % 10 === 1 ? wordKey[0] : wordKey[1];\n }\n return wordKey[2];\n },\n translate: function (number, withoutSuffix, key, isFuture) {\n var wordKey = translator.words[key],\n word;\n\n if (key.length === 1) {\n // Nominativ\n if (key === 'y' && withoutSuffix) return 'jedna godina';\n return isFuture || withoutSuffix ? wordKey[0] : wordKey[1];\n }\n\n word = translator.correctGrammaticalCase(number, wordKey);\n // Nominativ\n if (key === 'yy' && withoutSuffix && word === 'godinu') {\n return number + ' godina';\n }\n\n return number + ' ' + word;\n },\n };\n\n var sr = moment.defineLocale('sr', {\n months: 'januar_februar_mart_april_maj_jun_jul_avgust_septembar_oktobar_novembar_decembar'.split(\n '_'\n ),\n monthsShort:\n 'jan._feb._mar._apr._maj_jun_jul_avg._sep._okt._nov._dec.'.split('_'),\n monthsParseExact: true,\n weekdays: 'nedelja_ponedeljak_utorak_sreda_Äetvrtak_petak_subota'.split(\n '_'\n ),\n weekdaysShort: 'ned._pon._uto._sre._Äet._pet._sub.'.split('_'),\n weekdaysMin: 'ne_po_ut_sr_Äe_pe_su'.split('_'),\n weekdaysParseExact: true,\n longDateFormat: {\n LT: 'H:mm',\n LTS: 'H:mm:ss',\n L: 'D. M. YYYY.',\n LL: 'D. MMMM YYYY.',\n LLL: 'D. MMMM YYYY. H:mm',\n LLLL: 'dddd, D. MMMM YYYY. H:mm',\n },\n calendar: {\n sameDay: '[danas u] LT',\n nextDay: '[sutra u] LT',\n nextWeek: function () {\n switch (this.day()) {\n case 0:\n return '[u] [nedelju] [u] LT';\n case 3:\n return '[u] [sredu] [u] LT';\n case 6:\n return '[u] [subotu] [u] LT';\n case 1:\n case 2:\n case 4:\n case 5:\n return '[u] dddd [u] LT';\n }\n },\n lastDay: '[juÄe u] LT',\n lastWeek: function () {\n var lastWeekDays = [\n '[proÅ¡le] [nedelje] [u] LT',\n '[proÅ¡log] [ponedeljka] [u] LT',\n '[proÅ¡log] [utorka] [u] LT',\n '[proÅ¡le] [srede] [u] LT',\n '[proÅ¡log] [Äetvrtka] [u] LT',\n '[proÅ¡log] [petka] [u] LT',\n '[proÅ¡le] [subote] [u] LT',\n ];\n return lastWeekDays[this.day()];\n },\n sameElse: 'L',\n },\n relativeTime: {\n future: 'za %s',\n past: 'pre %s',\n s: 'nekoliko sekundi',\n ss: translator.translate,\n m: translator.translate,\n mm: translator.translate,\n h: translator.translate,\n hh: translator.translate,\n d: translator.translate,\n dd: translator.translate,\n M: translator.translate,\n MM: translator.translate,\n y: translator.translate,\n yy: translator.translate,\n },\n dayOfMonthOrdinalParse: /\\d{1,2}\\./,\n ordinal: '%d.',\n week: {\n dow: 1, // Monday is the first day of the week.\n doy: 7, // The week that contains Jan 7th is the first week of the year.\n },\n });\n\n return sr;\n\n})));\n","//! moment.js locale configuration\n//! locale : Serbian Cyrillic [sr-cyrl]\n//! author : Milan JanaÄković<milanjanackovic@gmail.com> : https://github.com/milan-j\n//! author : Stefan Crnjaković <stefan@hotmail.rs> : https://github.com/crnjakovic\n\n;(function (global, factory) {\n typeof exports === 'object' && typeof module !== 'undefined'\n && typeof require === 'function' ? factory(require('../moment')) :\n typeof define === 'function' && define.amd ? define(['../moment'], factory) :\n factory(global.moment)\n}(this, (function (moment) { 'use strict';\n\n //! moment.js locale configuration\n\n var translator = {\n words: {\n //Different grammatical cases\n ss: ['Ñекунда', 'Ñекунде', 'Ñекунди'],\n m: ['један минут', 'једног минута'],\n mm: ['минут', 'минута', 'минута'],\n h: ['један Ñат', 'једног Ñата'],\n hh: ['Ñат', 'Ñата', 'Ñати'],\n d: ['један дан', 'једног дана'],\n dd: ['дан', 'дана', 'дана'],\n M: ['један меÑец', 'једног меÑеца'],\n MM: ['меÑец', 'меÑеца', 'меÑеци'],\n y: ['једну годину', 'једне године'],\n yy: ['годину', 'године', 'година'],\n },\n correctGrammaticalCase: function (number, wordKey) {\n if (\n number % 10 >= 1 &&\n number % 10 <= 4 &&\n (number % 100 < 10 || number % 100 >= 20)\n ) {\n return number % 10 === 1 ? wordKey[0] : wordKey[1];\n }\n return wordKey[2];\n },\n translate: function (number, withoutSuffix, key, isFuture) {\n var wordKey = translator.words[key],\n word;\n\n if (key.length === 1) {\n // Nominativ\n if (key === 'y' && withoutSuffix) return 'једна година';\n return isFuture || withoutSuffix ? wordKey[0] : wordKey[1];\n }\n\n word = translator.correctGrammaticalCase(number, wordKey);\n // Nominativ\n if (key === 'yy' && withoutSuffix && word === 'годину') {\n return number + ' година';\n }\n\n return number + ' ' + word;\n },\n };\n\n var srCyrl = moment.defineLocale('sr-cyrl', {\n months: 'јануар_фебруар_март_април_мај_јун_јул_авгуÑÑ‚_Ñептембар_октобар_новембар_децембар'.split(\n '_'\n ),\n monthsShort:\n 'јан._феб._мар._апр._мај_јун_јул_авг._Ñеп._окт._нов._дец.'.split('_'),\n monthsParseExact: true,\n weekdays: 'недеља_понедељак_уторак_Ñреда_четвртак_петак_Ñубота'.split('_'),\n weekdaysShort: 'нед._пон._уто._Ñре._чет._пет._Ñуб.'.split('_'),\n weekdaysMin: 'не_по_ут_ÑÑ€_че_пе_Ñу'.split('_'),\n weekdaysParseExact: true,\n longDateFormat: {\n LT: 'H:mm',\n LTS: 'H:mm:ss',\n L: 'D. M. YYYY.',\n LL: 'D. MMMM YYYY.',\n LLL: 'D. MMMM YYYY. H:mm',\n LLLL: 'dddd, D. MMMM YYYY. H:mm',\n },\n calendar: {\n sameDay: '[Ð´Ð°Ð½Ð°Ñ Ñƒ] LT',\n nextDay: '[Ñутра у] LT',\n nextWeek: function () {\n switch (this.day()) {\n case 0:\n return '[у] [недељу] [у] LT';\n case 3:\n return '[у] [Ñреду] [у] LT';\n case 6:\n return '[у] [Ñуботу] [у] LT';\n case 1:\n case 2:\n case 4:\n case 5:\n return '[у] dddd [у] LT';\n }\n },\n lastDay: '[јуче у] LT',\n lastWeek: function () {\n var lastWeekDays = [\n '[прошле] [недеље] [у] LT',\n '[прошлог] [понедељка] [у] LT',\n '[прошлог] [уторка] [у] LT',\n '[прошле] [Ñреде] [у] LT',\n '[прошлог] [четвртка] [у] LT',\n '[прошлог] [петка] [у] LT',\n '[прошле] [Ñуботе] [у] LT',\n ];\n return lastWeekDays[this.day()];\n },\n sameElse: 'L',\n },\n relativeTime: {\n future: 'за %s',\n past: 'пре %s',\n s: 'неколико Ñекунди',\n ss: translator.translate,\n m: translator.translate,\n mm: translator.translate,\n h: translator.translate,\n hh: translator.translate,\n d: translator.translate,\n dd: translator.translate,\n M: translator.translate,\n MM: translator.translate,\n y: translator.translate,\n yy: translator.translate,\n },\n dayOfMonthOrdinalParse: /\\d{1,2}\\./,\n ordinal: '%d.',\n week: {\n dow: 1, // Monday is the first day of the week.\n doy: 7, // The week that contains Jan 1st is the first week of the year.\n },\n });\n\n return srCyrl;\n\n})));\n","//! moment.js locale configuration\n//! locale : siSwati [ss]\n//! author : Nicolai Davies<mail@nicolai.io> : https://github.com/nicolaidavies\n\n;(function (global, factory) {\n typeof exports === 'object' && typeof module !== 'undefined'\n && typeof require === 'function' ? factory(require('../moment')) :\n typeof define === 'function' && define.amd ? define(['../moment'], factory) :\n factory(global.moment)\n}(this, (function (moment) { 'use strict';\n\n //! moment.js locale configuration\n\n var ss = moment.defineLocale('ss', {\n months: \"Bhimbidvwane_Indlovana_Indlov'lenkhulu_Mabasa_Inkhwekhweti_Inhlaba_Kholwane_Ingci_Inyoni_Imphala_Lweti_Ingongoni\".split(\n '_'\n ),\n monthsShort: 'Bhi_Ina_Inu_Mab_Ink_Inh_Kho_Igc_Iny_Imp_Lwe_Igo'.split('_'),\n weekdays:\n 'Lisontfo_Umsombuluko_Lesibili_Lesitsatfu_Lesine_Lesihlanu_Umgcibelo'.split(\n '_'\n ),\n weekdaysShort: 'Lis_Umb_Lsb_Les_Lsi_Lsh_Umg'.split('_'),\n weekdaysMin: 'Li_Us_Lb_Lt_Ls_Lh_Ug'.split('_'),\n weekdaysParseExact: true,\n longDateFormat: {\n LT: 'h:mm A',\n LTS: 'h:mm:ss A',\n L: 'DD/MM/YYYY',\n LL: 'D MMMM YYYY',\n LLL: 'D MMMM YYYY h:mm A',\n LLLL: 'dddd, D MMMM YYYY h:mm A',\n },\n calendar: {\n sameDay: '[Namuhla nga] LT',\n nextDay: '[Kusasa nga] LT',\n nextWeek: 'dddd [nga] LT',\n lastDay: '[Itolo nga] LT',\n lastWeek: 'dddd [leliphelile] [nga] LT',\n sameElse: 'L',\n },\n relativeTime: {\n future: 'nga %s',\n past: 'wenteka nga %s',\n s: 'emizuzwana lomcane',\n ss: '%d mzuzwana',\n m: 'umzuzu',\n mm: '%d emizuzu',\n h: 'lihora',\n hh: '%d emahora',\n d: 'lilanga',\n dd: '%d emalanga',\n M: 'inyanga',\n MM: '%d tinyanga',\n y: 'umnyaka',\n yy: '%d iminyaka',\n },\n meridiemParse: /ekuseni|emini|entsambama|ebusuku/,\n meridiem: function (hours, minutes, isLower) {\n if (hours < 11) {\n return 'ekuseni';\n } else if (hours < 15) {\n return 'emini';\n } else if (hours < 19) {\n return 'entsambama';\n } else {\n return 'ebusuku';\n }\n },\n meridiemHour: function (hour, meridiem) {\n if (hour === 12) {\n hour = 0;\n }\n if (meridiem === 'ekuseni') {\n return hour;\n } else if (meridiem === 'emini') {\n return hour >= 11 ? hour : hour + 12;\n } else if (meridiem === 'entsambama' || meridiem === 'ebusuku') {\n if (hour === 0) {\n return 0;\n }\n return hour + 12;\n }\n },\n dayOfMonthOrdinalParse: /\\d{1,2}/,\n ordinal: '%d',\n week: {\n dow: 1, // Monday is the first day of the week.\n doy: 4, // The week that contains Jan 4th is the first week of the year.\n },\n });\n\n return ss;\n\n})));\n","//! moment.js locale configuration\n//! locale : Swedish [sv]\n//! author : Jens Alm : https://github.com/ulmus\n\n;(function (global, factory) {\n typeof exports === 'object' && typeof module !== 'undefined'\n && typeof require === 'function' ? factory(require('../moment')) :\n typeof define === 'function' && define.amd ? define(['../moment'], factory) :\n factory(global.moment)\n}(this, (function (moment) { 'use strict';\n\n //! moment.js locale configuration\n\n var sv = moment.defineLocale('sv', {\n months: 'januari_februari_mars_april_maj_juni_juli_augusti_september_oktober_november_december'.split(\n '_'\n ),\n monthsShort: 'jan_feb_mar_apr_maj_jun_jul_aug_sep_okt_nov_dec'.split('_'),\n weekdays: 'söndag_mÃ¥ndag_tisdag_onsdag_torsdag_fredag_lördag'.split('_'),\n weekdaysShort: 'sön_mÃ¥n_tis_ons_tor_fre_lör'.split('_'),\n weekdaysMin: 'sö_mÃ¥_ti_on_to_fr_lö'.split('_'),\n longDateFormat: {\n LT: 'HH:mm',\n LTS: 'HH:mm:ss',\n L: 'YYYY-MM-DD',\n LL: 'D MMMM YYYY',\n LLL: 'D MMMM YYYY [kl.] HH:mm',\n LLLL: 'dddd D MMMM YYYY [kl.] HH:mm',\n lll: 'D MMM YYYY HH:mm',\n llll: 'ddd D MMM YYYY HH:mm',\n },\n calendar: {\n sameDay: '[Idag] LT',\n nextDay: '[Imorgon] LT',\n lastDay: '[IgÃ¥r] LT',\n nextWeek: '[PÃ¥] dddd LT',\n lastWeek: '[I] dddd[s] LT',\n sameElse: 'L',\n },\n relativeTime: {\n future: 'om %s',\n past: 'för %s sedan',\n s: 'nÃ¥gra sekunder',\n ss: '%d sekunder',\n m: 'en minut',\n mm: '%d minuter',\n h: 'en timme',\n hh: '%d timmar',\n d: 'en dag',\n dd: '%d dagar',\n M: 'en mÃ¥nad',\n MM: '%d mÃ¥nader',\n y: 'ett Ã¥r',\n yy: '%d Ã¥r',\n },\n dayOfMonthOrdinalParse: /\\d{1,2}(\\:e|\\:a)/,\n ordinal: function (number) {\n var b = number % 10,\n output =\n ~~((number % 100) / 10) === 1\n ? ':e'\n : b === 1\n ? ':a'\n : b === 2\n ? ':a'\n : b === 3\n ? ':e'\n : ':e';\n return number + output;\n },\n week: {\n dow: 1, // Monday is the first day of the week.\n doy: 4, // The week that contains Jan 4th is the first week of the year.\n },\n });\n\n return sv;\n\n})));\n","//! moment.js locale configuration\n//! locale : Swahili [sw]\n//! author : Fahad Kassim : https://github.com/fadsel\n\n;(function (global, factory) {\n typeof exports === 'object' && typeof module !== 'undefined'\n && typeof require === 'function' ? factory(require('../moment')) :\n typeof define === 'function' && define.amd ? define(['../moment'], factory) :\n factory(global.moment)\n}(this, (function (moment) { 'use strict';\n\n //! moment.js locale configuration\n\n var sw = moment.defineLocale('sw', {\n months: 'Januari_Februari_Machi_Aprili_Mei_Juni_Julai_Agosti_Septemba_Oktoba_Novemba_Desemba'.split(\n '_'\n ),\n monthsShort: 'Jan_Feb_Mac_Apr_Mei_Jun_Jul_Ago_Sep_Okt_Nov_Des'.split('_'),\n weekdays:\n 'Jumapili_Jumatatu_Jumanne_Jumatano_Alhamisi_Ijumaa_Jumamosi'.split(\n '_'\n ),\n weekdaysShort: 'Jpl_Jtat_Jnne_Jtan_Alh_Ijm_Jmos'.split('_'),\n weekdaysMin: 'J2_J3_J4_J5_Al_Ij_J1'.split('_'),\n weekdaysParseExact: true,\n longDateFormat: {\n LT: 'hh:mm A',\n LTS: 'HH:mm:ss',\n L: 'DD.MM.YYYY',\n LL: 'D MMMM YYYY',\n LLL: 'D MMMM YYYY HH:mm',\n LLLL: 'dddd, D MMMM YYYY HH:mm',\n },\n calendar: {\n sameDay: '[leo saa] LT',\n nextDay: '[kesho saa] LT',\n nextWeek: '[wiki ijayo] dddd [saat] LT',\n lastDay: '[jana] LT',\n lastWeek: '[wiki iliyopita] dddd [saat] LT',\n sameElse: 'L',\n },\n relativeTime: {\n future: '%s baadaye',\n past: 'tokea %s',\n s: 'hivi punde',\n ss: 'sekunde %d',\n m: 'dakika moja',\n mm: 'dakika %d',\n h: 'saa limoja',\n hh: 'masaa %d',\n d: 'siku moja',\n dd: 'siku %d',\n M: 'mwezi mmoja',\n MM: 'miezi %d',\n y: 'mwaka mmoja',\n yy: 'miaka %d',\n },\n week: {\n dow: 1, // Monday is the first day of the week.\n doy: 7, // The week that contains Jan 7th is the first week of the year.\n },\n });\n\n return sw;\n\n})));\n","//! moment.js locale configuration\n//! locale : Tamil [ta]\n//! author : Arjunkumar Krishnamoorthy : https://github.com/tk120404\n\n;(function (global, factory) {\n typeof exports === 'object' && typeof module !== 'undefined'\n && typeof require === 'function' ? factory(require('../moment')) :\n typeof define === 'function' && define.amd ? define(['../moment'], factory) :\n factory(global.moment)\n}(this, (function (moment) { 'use strict';\n\n //! moment.js locale configuration\n\n var symbolMap = {\n 1: '௧',\n 2: '௨',\n 3: '௩',\n 4: '௪',\n 5: '௫',\n 6: '௬',\n 7: 'à¯',\n 8: '௮',\n 9: '௯',\n 0: '௦',\n },\n numberMap = {\n '௧': '1',\n '௨': '2',\n '௩': '3',\n '௪': '4',\n '௫': '5',\n '௬': '6',\n 'à¯': '7',\n '௮': '8',\n '௯': '9',\n '௦': '0',\n };\n\n var ta = moment.defineLocale('ta', {\n months: 'ஜனவரி_பிபà¯à®°à®µà®°à®¿_மாரà¯à®šà¯_à®à®ªà¯à®°à®²à¯_மே_ஜூனà¯_ஜூலை_ஆகஸà¯à®Ÿà¯_செபà¯à®Ÿà¯†à®®à¯à®ªà®°à¯_அகà¯à®Ÿà¯‡à®¾à®ªà®°à¯_நவமà¯à®ªà®°à¯_டிசமà¯à®ªà®°à¯'.split(\n '_'\n ),\n monthsShort:\n 'ஜனவரி_பிபà¯à®°à®µà®°à®¿_மாரà¯à®šà¯_à®à®ªà¯à®°à®²à¯_மே_ஜூனà¯_ஜூலை_ஆகஸà¯à®Ÿà¯_செபà¯à®Ÿà¯†à®®à¯à®ªà®°à¯_அகà¯à®Ÿà¯‡à®¾à®ªà®°à¯_நவமà¯à®ªà®°à¯_டிசமà¯à®ªà®°à¯'.split(\n '_'\n ),\n weekdays:\n 'ஞாயிறà¯à®±à¯à®•à¯à®•à®¿à®´à®®à¯ˆ_திஙà¯à®•à®Ÿà¯à®•à®¿à®´à®®à¯ˆ_செவà¯à®µà®¾à®¯à¯à®•à®¿à®´à®®à¯ˆ_பà¯à®¤à®©à¯à®•à®¿à®´à®®à¯ˆ_வியாழகà¯à®•à®¿à®´à®®à¯ˆ_வெளà¯à®³à®¿à®•à¯à®•à®¿à®´à®®à¯ˆ_சனிகà¯à®•à®¿à®´à®®à¯ˆ'.split(\n '_'\n ),\n weekdaysShort: 'ஞாயிறà¯_திஙà¯à®•à®³à¯_செவà¯à®µà®¾à®¯à¯_பà¯à®¤à®©à¯_வியாழனà¯_வெளà¯à®³à®¿_சனி'.split(\n '_'\n ),\n weekdaysMin: 'ஞா_தி_செ_பà¯_வி_வெ_ச'.split('_'),\n longDateFormat: {\n LT: 'HH:mm',\n LTS: 'HH:mm:ss',\n L: 'DD/MM/YYYY',\n LL: 'D MMMM YYYY',\n LLL: 'D MMMM YYYY, HH:mm',\n LLLL: 'dddd, D MMMM YYYY, HH:mm',\n },\n calendar: {\n sameDay: '[இனà¯à®±à¯] LT',\n nextDay: '[நாளை] LT',\n nextWeek: 'dddd, LT',\n lastDay: '[நேறà¯à®±à¯] LT',\n lastWeek: '[கடநà¯à®¤ வாரமà¯] dddd, LT',\n sameElse: 'L',\n },\n relativeTime: {\n future: '%s இலà¯',\n past: '%s à®®à¯à®©à¯',\n s: 'ஒர௠சில விநாடிகளà¯',\n ss: '%d விநாடிகளà¯',\n m: 'ஒர௠நிமிடமà¯',\n mm: '%d நிமிடஙà¯à®•à®³à¯',\n h: 'ஒர௠மணி நேரமà¯',\n hh: '%d மணி நேரமà¯',\n d: 'ஒர௠நாளà¯',\n dd: '%d நாடà¯à®•à®³à¯',\n M: 'ஒர௠மாதமà¯',\n MM: '%d மாதஙà¯à®•à®³à¯',\n y: 'ஒர௠வரà¯à®Ÿà®®à¯',\n yy: '%d ஆணà¯à®Ÿà¯à®•à®³à¯',\n },\n dayOfMonthOrdinalParse: /\\d{1,2}வதà¯/,\n ordinal: function (number) {\n return number + 'வதà¯';\n },\n preparse: function (string) {\n return string.replace(/[௧௨௩௪௫௬à¯à¯®à¯¯à¯¦]/g, function (match) {\n return numberMap[match];\n });\n },\n postformat: function (string) {\n return string.replace(/\\d/g, function (match) {\n return symbolMap[match];\n });\n },\n // refer http://ta.wikipedia.org/s/1er1\n meridiemParse: /யாமமà¯|வைகறை|காலை|நணà¯à®ªà®•à®²à¯|எறà¯à®ªà®¾à®Ÿà¯|மாலை/,\n meridiem: function (hour, minute, isLower) {\n if (hour < 2) {\n return ' யாமமà¯';\n } else if (hour < 6) {\n return ' வைகறை'; // வைகறை\n } else if (hour < 10) {\n return ' காலை'; // காலை\n } else if (hour < 14) {\n return ' நணà¯à®ªà®•à®²à¯'; // நணà¯à®ªà®•à®²à¯\n } else if (hour < 18) {\n return ' எறà¯à®ªà®¾à®Ÿà¯'; // எறà¯à®ªà®¾à®Ÿà¯\n } else if (hour < 22) {\n return ' மாலை'; // மாலை\n } else {\n return ' யாமமà¯';\n }\n },\n meridiemHour: function (hour, meridiem) {\n if (hour === 12) {\n hour = 0;\n }\n if (meridiem === 'யாமமà¯') {\n return hour < 2 ? hour : hour + 12;\n } else if (meridiem === 'வைகறை' || meridiem === 'காலை') {\n return hour;\n } else if (meridiem === 'நணà¯à®ªà®•à®²à¯') {\n return hour >= 10 ? hour : hour + 12;\n } else {\n return hour + 12;\n }\n },\n week: {\n dow: 0, // Sunday is the first day of the week.\n doy: 6, // The week that contains Jan 6th is the first week of the year.\n },\n });\n\n return ta;\n\n})));\n","//! moment.js locale configuration\n//! locale : Telugu [te]\n//! author : Krishna Chaitanya Thota : https://github.com/kcthota\n\n;(function (global, factory) {\n typeof exports === 'object' && typeof module !== 'undefined'\n && typeof require === 'function' ? factory(require('../moment')) :\n typeof define === 'function' && define.amd ? define(['../moment'], factory) :\n factory(global.moment)\n}(this, (function (moment) { 'use strict';\n\n //! moment.js locale configuration\n\n var te = moment.defineLocale('te', {\n months: 'జనవరి_à°«à°¿à°¬à±à°°à°µà°°à°¿_మారà±à°šà°¿_à°à°ªà±à°°à°¿à°²à±_మే_జూనà±_à°œà±à°²à±ˆ_ఆగసà±à°Ÿà±_సెపà±à°Ÿà±†à°‚బరà±_à°…à°•à±à°Ÿà±‹à°¬à°°à±_నవంబరà±_డిసెంబరà±'.split(\n '_'\n ),\n monthsShort:\n 'జన._à°«à°¿à°¬à±à°°._మారà±à°šà°¿_à°à°ªà±à°°à°¿._మే_జూనà±_à°œà±à°²à±ˆ_ఆగ._సెపà±._à°…à°•à±à°Ÿà±‹._నవ._డిసె.'.split(\n '_'\n ),\n monthsParseExact: true,\n weekdays:\n 'ఆదివారం_సోమవారం_మంగళవారం_à°¬à±à°§à°µà°¾à°°à°‚_à°—à±à°°à±à°µà°¾à°°à°‚_à°¶à±à°•à±à°°à°µà°¾à°°à°‚_శనివారం'.split(\n '_'\n ),\n weekdaysShort: 'ఆది_సోమ_మంగళ_à°¬à±à°§_à°—à±à°°à±_à°¶à±à°•à±à°°_శని'.split('_'),\n weekdaysMin: 'à°†_సో_మం_à°¬à±_à°—à±_à°¶à±_à°¶'.split('_'),\n longDateFormat: {\n LT: 'A h:mm',\n LTS: 'A h:mm:ss',\n L: 'DD/MM/YYYY',\n LL: 'D MMMM YYYY',\n LLL: 'D MMMM YYYY, A h:mm',\n LLLL: 'dddd, D MMMM YYYY, A h:mm',\n },\n calendar: {\n sameDay: '[నేడà±] LT',\n nextDay: '[రేపà±] LT',\n nextWeek: 'dddd, LT',\n lastDay: '[నినà±à°¨] LT',\n lastWeek: '[à°—à°¤] dddd, LT',\n sameElse: 'L',\n },\n relativeTime: {\n future: '%s లో',\n past: '%s à°•à±à°°à°¿à°¤à°‚',\n s: 'కొనà±à°¨à°¿ à°•à±à°·à°£à°¾à°²à±',\n ss: '%d సెకనà±à°²à±',\n m: 'à°’à°• నిమిషం',\n mm: '%d నిమిషాలà±',\n h: 'à°’à°• à°—à°‚à°Ÿ',\n hh: '%d à°—à°‚à°Ÿà°²à±',\n d: 'à°’à°• రోజà±',\n dd: '%d రోజà±à°²à±',\n M: 'à°’à°• నెల',\n MM: '%d నెలలà±',\n y: 'à°’à°• సంవతà±à°¸à°°à°‚',\n yy: '%d సంవతà±à°¸à°°à°¾à°²à±',\n },\n dayOfMonthOrdinalParse: /\\d{1,2}à°µ/,\n ordinal: '%dà°µ',\n meridiemParse: /రాతà±à°°à°¿|ఉదయం|మధà±à°¯à°¾à°¹à±à°¨à°‚|సాయంతà±à°°à°‚/,\n meridiemHour: function (hour, meridiem) {\n if (hour === 12) {\n hour = 0;\n }\n if (meridiem === 'రాతà±à°°à°¿') {\n return hour < 4 ? hour : hour + 12;\n } else if (meridiem === 'ఉదయం') {\n return hour;\n } else if (meridiem === 'మధà±à°¯à°¾à°¹à±à°¨à°‚') {\n return hour >= 10 ? hour : hour + 12;\n } else if (meridiem === 'సాయంతà±à°°à°‚') {\n return hour + 12;\n }\n },\n meridiem: function (hour, minute, isLower) {\n if (hour < 4) {\n return 'రాతà±à°°à°¿';\n } else if (hour < 10) {\n return 'ఉదయం';\n } else if (hour < 17) {\n return 'మధà±à°¯à°¾à°¹à±à°¨à°‚';\n } else if (hour < 20) {\n return 'సాయంతà±à°°à°‚';\n } else {\n return 'రాతà±à°°à°¿';\n }\n },\n week: {\n dow: 0, // Sunday is the first day of the week.\n doy: 6, // The week that contains Jan 6th is the first week of the year.\n },\n });\n\n return te;\n\n})));\n","//! moment.js locale configuration\n//! locale : Tetun Dili (East Timor) [tet]\n//! author : Joshua Brooks : https://github.com/joshbrooks\n//! author : Onorio De J. Afonso : https://github.com/marobo\n//! author : Sonia Simoes : https://github.com/soniasimoes\n\n;(function (global, factory) {\n typeof exports === 'object' && typeof module !== 'undefined'\n && typeof require === 'function' ? factory(require('../moment')) :\n typeof define === 'function' && define.amd ? define(['../moment'], factory) :\n factory(global.moment)\n}(this, (function (moment) { 'use strict';\n\n //! moment.js locale configuration\n\n var tet = moment.defineLocale('tet', {\n months: 'Janeiru_Fevereiru_Marsu_Abril_Maiu_Juñu_Jullu_Agustu_Setembru_Outubru_Novembru_Dezembru'.split(\n '_'\n ),\n monthsShort: 'Jan_Fev_Mar_Abr_Mai_Jun_Jul_Ago_Set_Out_Nov_Dez'.split('_'),\n weekdays: 'Domingu_Segunda_Tersa_Kuarta_Kinta_Sesta_Sabadu'.split('_'),\n weekdaysShort: 'Dom_Seg_Ters_Kua_Kint_Sest_Sab'.split('_'),\n weekdaysMin: 'Do_Seg_Te_Ku_Ki_Ses_Sa'.split('_'),\n longDateFormat: {\n LT: 'HH:mm',\n LTS: 'HH:mm:ss',\n L: 'DD/MM/YYYY',\n LL: 'D MMMM YYYY',\n LLL: 'D MMMM YYYY HH:mm',\n LLLL: 'dddd, D MMMM YYYY HH:mm',\n },\n calendar: {\n sameDay: '[Ohin iha] LT',\n nextDay: '[Aban iha] LT',\n nextWeek: 'dddd [iha] LT',\n lastDay: '[Horiseik iha] LT',\n lastWeek: 'dddd [semana kotuk] [iha] LT',\n sameElse: 'L',\n },\n relativeTime: {\n future: 'iha %s',\n past: '%s liuba',\n s: 'segundu balun',\n ss: 'segundu %d',\n m: 'minutu ida',\n mm: 'minutu %d',\n h: 'oras ida',\n hh: 'oras %d',\n d: 'loron ida',\n dd: 'loron %d',\n M: 'fulan ida',\n MM: 'fulan %d',\n y: 'tinan ida',\n yy: 'tinan %d',\n },\n dayOfMonthOrdinalParse: /\\d{1,2}(st|nd|rd|th)/,\n ordinal: function (number) {\n var b = number % 10,\n output =\n ~~((number % 100) / 10) === 1\n ? 'th'\n : b === 1\n ? 'st'\n : b === 2\n ? 'nd'\n : b === 3\n ? 'rd'\n : 'th';\n return number + output;\n },\n week: {\n dow: 1, // Monday is the first day of the week.\n doy: 4, // The week that contains Jan 4th is the first week of the year.\n },\n });\n\n return tet;\n\n})));\n","//! moment.js locale configuration\n//! locale : Tajik [tg]\n//! author : Orif N. Jr. : https://github.com/orif-jr\n\n;(function (global, factory) {\n typeof exports === 'object' && typeof module !== 'undefined'\n && typeof require === 'function' ? factory(require('../moment')) :\n typeof define === 'function' && define.amd ? define(['../moment'], factory) :\n factory(global.moment)\n}(this, (function (moment) { 'use strict';\n\n //! moment.js locale configuration\n\n var suffixes = {\n 0: '-ум',\n 1: '-ум',\n 2: '-юм',\n 3: '-юм',\n 4: '-ум',\n 5: '-ум',\n 6: '-ум',\n 7: '-ум',\n 8: '-ум',\n 9: '-ум',\n 10: '-ум',\n 12: '-ум',\n 13: '-ум',\n 20: '-ум',\n 30: '-юм',\n 40: '-ум',\n 50: '-ум',\n 60: '-ум',\n 70: '-ум',\n 80: '-ум',\n 90: '-ум',\n 100: '-ум',\n };\n\n var tg = moment.defineLocale('tg', {\n months: {\n format: 'Ñнвари_феврали_марти_апрели_майи_июни_июли_авгуÑти_ÑентÑбри_октÑбри_ноÑбри_декабри'.split(\n '_'\n ),\n standalone:\n 'Ñнвар_феврал_март_апрел_май_июн_июл_авгуÑÑ‚_ÑентÑбр_октÑбр_ноÑбр_декабр'.split(\n '_'\n ),\n },\n monthsShort: 'Ñнв_фев_мар_апр_май_июн_июл_авг_Ñен_окт_ноÑ_дек'.split('_'),\n weekdays: 'Ñкшанбе_душанбе_Ñешанбе_чоршанбе_панҷшанбе_ҷумъа_шанбе'.split(\n '_'\n ),\n weekdaysShort: 'Ñшб_дшб_Ñшб_чшб_пшб_ҷум_шнб'.split('_'),\n weekdaysMin: 'Ñш_дш_Ñш_чш_пш_ҷм_шб'.split('_'),\n longDateFormat: {\n LT: 'HH:mm',\n LTS: 'HH:mm:ss',\n L: 'DD.MM.YYYY',\n LL: 'D MMMM YYYY',\n LLL: 'D MMMM YYYY HH:mm',\n LLLL: 'dddd, D MMMM YYYY HH:mm',\n },\n calendar: {\n sameDay: '[Имрӯз Ñоати] LT',\n nextDay: '[Фардо Ñоати] LT',\n lastDay: '[Дирӯз Ñоати] LT',\n nextWeek: 'dddd[и] [ҳафтаи оÑнда Ñоати] LT',\n lastWeek: 'dddd[и] [ҳафтаи гузашта Ñоати] LT',\n sameElse: 'L',\n },\n relativeTime: {\n future: 'баъди %s',\n past: '%s пеш',\n s: 'Ñкчанд ÑониÑ',\n m: 'Ñк дақиқа',\n mm: '%d дақиқа',\n h: 'Ñк Ñоат',\n hh: '%d Ñоат',\n d: 'Ñк рӯз',\n dd: '%d рӯз',\n M: 'Ñк моҳ',\n MM: '%d моҳ',\n y: 'Ñк Ñол',\n yy: '%d Ñол',\n },\n meridiemParse: /шаб|Ñубҳ|рӯз|бегоҳ/,\n meridiemHour: function (hour, meridiem) {\n if (hour === 12) {\n hour = 0;\n }\n if (meridiem === 'шаб') {\n return hour < 4 ? hour : hour + 12;\n } else if (meridiem === 'Ñубҳ') {\n return hour;\n } else if (meridiem === 'рӯз') {\n return hour >= 11 ? hour : hour + 12;\n } else if (meridiem === 'бегоҳ') {\n return hour + 12;\n }\n },\n meridiem: function (hour, minute, isLower) {\n if (hour < 4) {\n return 'шаб';\n } else if (hour < 11) {\n return 'Ñубҳ';\n } else if (hour < 16) {\n return 'рӯз';\n } else if (hour < 19) {\n return 'бегоҳ';\n } else {\n return 'шаб';\n }\n },\n dayOfMonthOrdinalParse: /\\d{1,2}-(ум|юм)/,\n ordinal: function (number) {\n var a = number % 10,\n b = number >= 100 ? 100 : null;\n return number + (suffixes[number] || suffixes[a] || suffixes[b]);\n },\n week: {\n dow: 1, // Monday is the first day of the week.\n doy: 7, // The week that contains Jan 1th is the first week of the year.\n },\n });\n\n return tg;\n\n})));\n","//! moment.js locale configuration\n//! locale : Thai [th]\n//! author : Kridsada Thanabulpong : https://github.com/sirn\n\n;(function (global, factory) {\n typeof exports === 'object' && typeof module !== 'undefined'\n && typeof require === 'function' ? factory(require('../moment')) :\n typeof define === 'function' && define.amd ? define(['../moment'], factory) :\n factory(global.moment)\n}(this, (function (moment) { 'use strict';\n\n //! moment.js locale configuration\n\n var th = moment.defineLocale('th', {\n months: 'มà¸à¸£à¸²à¸„ม_à¸à¸¸à¸¡à¸ าพันธ์_มีนาคม_เมษายน_พฤษภาคม_มิถุนายน_à¸à¸£à¸à¸Žà¸²à¸„ม_สิงหาคม_à¸à¸±à¸™à¸¢à¸²à¸¢à¸™_ตุลาคม_พฤศจิà¸à¸²à¸¢à¸™_ธันวาคม'.split(\n '_'\n ),\n monthsShort:\n 'ม.ค._à¸.พ._มี.ค._เม.ย._พ.ค._มิ.ย._à¸.ค._ส.ค._à¸.ย._ต.ค._พ.ย._ธ.ค.'.split(\n '_'\n ),\n monthsParseExact: true,\n weekdays: 'à¸à¸²à¸—ิตย์_จันทร์_à¸à¸±à¸‡à¸„าร_พุธ_พฤหัสบดี_ศุà¸à¸£à¹Œ_เสาร์'.split('_'),\n weekdaysShort: 'à¸à¸²à¸—ิตย์_จันทร์_à¸à¸±à¸‡à¸„าร_พุธ_พฤหัส_ศุà¸à¸£à¹Œ_เสาร์'.split('_'), // yes, three characters difference\n weekdaysMin: 'à¸à¸²._จ._à¸._พ._พฤ._ศ._ส.'.split('_'),\n weekdaysParseExact: true,\n longDateFormat: {\n LT: 'H:mm',\n LTS: 'H:mm:ss',\n L: 'DD/MM/YYYY',\n LL: 'D MMMM YYYY',\n LLL: 'D MMMM YYYY เวลา H:mm',\n LLLL: 'วันddddที่ D MMMM YYYY เวลา H:mm',\n },\n meridiemParse: /à¸à¹ˆà¸à¸™à¹€à¸—ี่ยง|หลังเที่ยง/,\n isPM: function (input) {\n return input === 'หลังเที่ยง';\n },\n meridiem: function (hour, minute, isLower) {\n if (hour < 12) {\n return 'à¸à¹ˆà¸à¸™à¹€à¸—ี่ยง';\n } else {\n return 'หลังเที่ยง';\n }\n },\n calendar: {\n sameDay: '[วันนี้ เวลา] LT',\n nextDay: '[พรุ่งนี้ เวลา] LT',\n nextWeek: 'dddd[หน้า เวลา] LT',\n lastDay: '[เมื่à¸à¸§à¸²à¸™à¸™à¸µà¹‰ เวลา] LT',\n lastWeek: '[วัน]dddd[ที่à¹à¸¥à¹‰à¸§ เวลา] LT',\n sameElse: 'L',\n },\n relativeTime: {\n future: 'à¸à¸µà¸ %s',\n past: '%sที่à¹à¸¥à¹‰à¸§',\n s: 'ไม่à¸à¸µà¹ˆà¸§à¸´à¸™à¸²à¸—ี',\n ss: '%d วินาที',\n m: '1 นาที',\n mm: '%d นาที',\n h: '1 ชั่วโมง',\n hh: '%d ชั่วโมง',\n d: '1 วัน',\n dd: '%d วัน',\n w: '1 สัปดาห์',\n ww: '%d สัปดาห์',\n M: '1 เดืà¸à¸™',\n MM: '%d เดืà¸à¸™',\n y: '1 ปี',\n yy: '%d ปี',\n },\n });\n\n return th;\n\n})));\n","//! moment.js locale configuration\n//! locale : Turkmen [tk]\n//! author : Atamyrat Abdyrahmanov : https://github.com/atamyratabdy\n\n;(function (global, factory) {\n typeof exports === 'object' && typeof module !== 'undefined'\n && typeof require === 'function' ? factory(require('../moment')) :\n typeof define === 'function' && define.amd ? define(['../moment'], factory) :\n factory(global.moment)\n}(this, (function (moment) { 'use strict';\n\n //! moment.js locale configuration\n\n var suffixes = {\n 1: \"'inji\",\n 5: \"'inji\",\n 8: \"'inji\",\n 70: \"'inji\",\n 80: \"'inji\",\n 2: \"'nji\",\n 7: \"'nji\",\n 20: \"'nji\",\n 50: \"'nji\",\n 3: \"'ünji\",\n 4: \"'ünji\",\n 100: \"'ünji\",\n 6: \"'njy\",\n 9: \"'unjy\",\n 10: \"'unjy\",\n 30: \"'unjy\",\n 60: \"'ynjy\",\n 90: \"'ynjy\",\n };\n\n var tk = moment.defineLocale('tk', {\n months: 'Ãanwar_Fewral_Mart_Aprel_Maý_Iýun_Iýul_Awgust_Sentýabr_Oktýabr_Noýabr_Dekabr'.split(\n '_'\n ),\n monthsShort: 'Ãan_Few_Mar_Apr_Maý_Iýn_Iýl_Awg_Sen_Okt_Noý_Dek'.split('_'),\n weekdays: 'ÃekÅŸenbe_DuÅŸenbe_SiÅŸenbe_ÇarÅŸenbe_PenÅŸenbe_Anna_Åženbe'.split(\n '_'\n ),\n weekdaysShort: 'Ãek_DuÅŸ_SiÅŸ_Çar_Pen_Ann_Åžen'.split('_'),\n weekdaysMin: 'Ãk_DÅŸ_SÅŸ_Çr_Pn_An_Åžn'.split('_'),\n longDateFormat: {\n LT: 'HH:mm',\n LTS: 'HH:mm:ss',\n L: 'DD.MM.YYYY',\n LL: 'D MMMM YYYY',\n LLL: 'D MMMM YYYY HH:mm',\n LLLL: 'dddd, D MMMM YYYY HH:mm',\n },\n calendar: {\n sameDay: '[bugün sagat] LT',\n nextDay: '[ertir sagat] LT',\n nextWeek: '[indiki] dddd [sagat] LT',\n lastDay: '[düýn] LT',\n lastWeek: '[geçen] dddd [sagat] LT',\n sameElse: 'L',\n },\n relativeTime: {\n future: '%s soň',\n past: '%s öň',\n s: 'birnäçe sekunt',\n m: 'bir minut',\n mm: '%d minut',\n h: 'bir sagat',\n hh: '%d sagat',\n d: 'bir gün',\n dd: '%d gün',\n M: 'bir aý',\n MM: '%d aý',\n y: 'bir ýyl',\n yy: '%d ýyl',\n },\n ordinal: function (number, period) {\n switch (period) {\n case 'd':\n case 'D':\n case 'Do':\n case 'DD':\n return number;\n default:\n if (number === 0) {\n // special case for zero\n return number + \"'unjy\";\n }\n var a = number % 10,\n b = (number % 100) - a,\n c = number >= 100 ? 100 : null;\n return number + (suffixes[a] || suffixes[b] || suffixes[c]);\n }\n },\n week: {\n dow: 1, // Monday is the first day of the week.\n doy: 7, // The week that contains Jan 7th is the first week of the year.\n },\n });\n\n return tk;\n\n})));\n","//! moment.js locale configuration\n//! locale : Tagalog (Philippines) [tl-ph]\n//! author : Dan Hagman : https://github.com/hagmandan\n\n;(function (global, factory) {\n typeof exports === 'object' && typeof module !== 'undefined'\n && typeof require === 'function' ? factory(require('../moment')) :\n typeof define === 'function' && define.amd ? define(['../moment'], factory) :\n factory(global.moment)\n}(this, (function (moment) { 'use strict';\n\n //! moment.js locale configuration\n\n var tlPh = moment.defineLocale('tl-ph', {\n months: 'Enero_Pebrero_Marso_Abril_Mayo_Hunyo_Hulyo_Agosto_Setyembre_Oktubre_Nobyembre_Disyembre'.split(\n '_'\n ),\n monthsShort: 'Ene_Peb_Mar_Abr_May_Hun_Hul_Ago_Set_Okt_Nob_Dis'.split('_'),\n weekdays: 'Linggo_Lunes_Martes_Miyerkules_Huwebes_Biyernes_Sabado'.split(\n '_'\n ),\n weekdaysShort: 'Lin_Lun_Mar_Miy_Huw_Biy_Sab'.split('_'),\n weekdaysMin: 'Li_Lu_Ma_Mi_Hu_Bi_Sab'.split('_'),\n longDateFormat: {\n LT: 'HH:mm',\n LTS: 'HH:mm:ss',\n L: 'MM/D/YYYY',\n LL: 'MMMM D, YYYY',\n LLL: 'MMMM D, YYYY HH:mm',\n LLLL: 'dddd, MMMM DD, YYYY HH:mm',\n },\n calendar: {\n sameDay: 'LT [ngayong araw]',\n nextDay: '[Bukas ng] LT',\n nextWeek: 'LT [sa susunod na] dddd',\n lastDay: 'LT [kahapon]',\n lastWeek: 'LT [noong nakaraang] dddd',\n sameElse: 'L',\n },\n relativeTime: {\n future: 'sa loob ng %s',\n past: '%s ang nakalipas',\n s: 'ilang segundo',\n ss: '%d segundo',\n m: 'isang minuto',\n mm: '%d minuto',\n h: 'isang oras',\n hh: '%d oras',\n d: 'isang araw',\n dd: '%d araw',\n M: 'isang buwan',\n MM: '%d buwan',\n y: 'isang taon',\n yy: '%d taon',\n },\n dayOfMonthOrdinalParse: /\\d{1,2}/,\n ordinal: function (number) {\n return number;\n },\n week: {\n dow: 1, // Monday is the first day of the week.\n doy: 4, // The week that contains Jan 4th is the first week of the year.\n },\n });\n\n return tlPh;\n\n})));\n","//! moment.js locale configuration\n//! locale : Klingon [tlh]\n//! author : Dominika Kruk : https://github.com/amaranthrose\n\n;(function (global, factory) {\n typeof exports === 'object' && typeof module !== 'undefined'\n && typeof require === 'function' ? factory(require('../moment')) :\n typeof define === 'function' && define.amd ? define(['../moment'], factory) :\n factory(global.moment)\n}(this, (function (moment) { 'use strict';\n\n //! moment.js locale configuration\n\n var numbersNouns = 'pagh_wa’_cha’_wej_loS_vagh_jav_Soch_chorgh_Hut'.split('_');\n\n function translateFuture(output) {\n var time = output;\n time =\n output.indexOf('jaj') !== -1\n ? time.slice(0, -3) + 'leS'\n : output.indexOf('jar') !== -1\n ? time.slice(0, -3) + 'waQ'\n : output.indexOf('DIS') !== -1\n ? time.slice(0, -3) + 'nem'\n : time + ' pIq';\n return time;\n }\n\n function translatePast(output) {\n var time = output;\n time =\n output.indexOf('jaj') !== -1\n ? time.slice(0, -3) + 'Hu’'\n : output.indexOf('jar') !== -1\n ? time.slice(0, -3) + 'wen'\n : output.indexOf('DIS') !== -1\n ? time.slice(0, -3) + 'ben'\n : time + ' ret';\n return time;\n }\n\n function translate(number, withoutSuffix, string, isFuture) {\n var numberNoun = numberAsNoun(number);\n switch (string) {\n case 'ss':\n return numberNoun + ' lup';\n case 'mm':\n return numberNoun + ' tup';\n case 'hh':\n return numberNoun + ' rep';\n case 'dd':\n return numberNoun + ' jaj';\n case 'MM':\n return numberNoun + ' jar';\n case 'yy':\n return numberNoun + ' DIS';\n }\n }\n\n function numberAsNoun(number) {\n var hundred = Math.floor((number % 1000) / 100),\n ten = Math.floor((number % 100) / 10),\n one = number % 10,\n word = '';\n if (hundred > 0) {\n word += numbersNouns[hundred] + 'vatlh';\n }\n if (ten > 0) {\n word += (word !== '' ? ' ' : '') + numbersNouns[ten] + 'maH';\n }\n if (one > 0) {\n word += (word !== '' ? ' ' : '') + numbersNouns[one];\n }\n return word === '' ? 'pagh' : word;\n }\n\n var tlh = moment.defineLocale('tlh', {\n months: 'tera’ jar wa’_tera’ jar cha’_tera’ jar wej_tera’ jar loS_tera’ jar vagh_tera’ jar jav_tera’ jar Soch_tera’ jar chorgh_tera’ jar Hut_tera’ jar wa’maH_tera’ jar wa’maH wa’_tera’ jar wa’maH cha’'.split(\n '_'\n ),\n monthsShort:\n 'jar wa’_jar cha’_jar wej_jar loS_jar vagh_jar jav_jar Soch_jar chorgh_jar Hut_jar wa’maH_jar wa’maH wa’_jar wa’maH cha’'.split(\n '_'\n ),\n monthsParseExact: true,\n weekdays: 'lojmItjaj_DaSjaj_povjaj_ghItlhjaj_loghjaj_buqjaj_ghInjaj'.split(\n '_'\n ),\n weekdaysShort:\n 'lojmItjaj_DaSjaj_povjaj_ghItlhjaj_loghjaj_buqjaj_ghInjaj'.split('_'),\n weekdaysMin:\n 'lojmItjaj_DaSjaj_povjaj_ghItlhjaj_loghjaj_buqjaj_ghInjaj'.split('_'),\n longDateFormat: {\n LT: 'HH:mm',\n LTS: 'HH:mm:ss',\n L: 'DD.MM.YYYY',\n LL: 'D MMMM YYYY',\n LLL: 'D MMMM YYYY HH:mm',\n LLLL: 'dddd, D MMMM YYYY HH:mm',\n },\n calendar: {\n sameDay: '[DaHjaj] LT',\n nextDay: '[wa’leS] LT',\n nextWeek: 'LLL',\n lastDay: '[wa’Hu’] LT',\n lastWeek: 'LLL',\n sameElse: 'L',\n },\n relativeTime: {\n future: translateFuture,\n past: translatePast,\n s: 'puS lup',\n ss: translate,\n m: 'wa’ tup',\n mm: translate,\n h: 'wa’ rep',\n hh: translate,\n d: 'wa’ jaj',\n dd: translate,\n M: 'wa’ jar',\n MM: translate,\n y: 'wa’ DIS',\n yy: translate,\n },\n dayOfMonthOrdinalParse: /\\d{1,2}\\./,\n ordinal: '%d.',\n week: {\n dow: 1, // Monday is the first day of the week.\n doy: 4, // The week that contains Jan 4th is the first week of the year.\n },\n });\n\n return tlh;\n\n})));\n","//! moment.js locale configuration\n//! locale : Turkish [tr]\n//! authors : Erhan Gundogan : https://github.com/erhangundogan,\n//! Burak YiÄŸit Kaya: https://github.com/BYK\n\n;(function (global, factory) {\n typeof exports === 'object' && typeof module !== 'undefined'\n && typeof require === 'function' ? factory(require('../moment')) :\n typeof define === 'function' && define.amd ? define(['../moment'], factory) :\n factory(global.moment)\n}(this, (function (moment) { 'use strict';\n\n //! moment.js locale configuration\n\n var suffixes = {\n 1: \"'inci\",\n 5: \"'inci\",\n 8: \"'inci\",\n 70: \"'inci\",\n 80: \"'inci\",\n 2: \"'nci\",\n 7: \"'nci\",\n 20: \"'nci\",\n 50: \"'nci\",\n 3: \"'üncü\",\n 4: \"'üncü\",\n 100: \"'üncü\",\n 6: \"'ncı\",\n 9: \"'uncu\",\n 10: \"'uncu\",\n 30: \"'uncu\",\n 60: \"'ıncı\",\n 90: \"'ıncı\",\n };\n\n var tr = moment.defineLocale('tr', {\n months: 'Ocak_Åžubat_Mart_Nisan_Mayıs_Haziran_Temmuz_AÄŸustos_Eylül_Ekim_Kasım_Aralık'.split(\n '_'\n ),\n monthsShort: 'Oca_Åžub_Mar_Nis_May_Haz_Tem_AÄŸu_Eyl_Eki_Kas_Ara'.split('_'),\n weekdays: 'Pazar_Pazartesi_Salı_ÇarÅŸamba_PerÅŸembe_Cuma_Cumartesi'.split(\n '_'\n ),\n weekdaysShort: 'Paz_Pzt_Sal_Çar_Per_Cum_Cmt'.split('_'),\n weekdaysMin: 'Pz_Pt_Sa_Ça_Pe_Cu_Ct'.split('_'),\n meridiem: function (hours, minutes, isLower) {\n if (hours < 12) {\n return isLower ? 'öö' : 'ÖÖ';\n } else {\n return isLower ? 'ös' : 'ÖS';\n }\n },\n meridiemParse: /öö|ÖÖ|ös|ÖS/,\n isPM: function (input) {\n return input === 'ös' || input === 'ÖS';\n },\n longDateFormat: {\n LT: 'HH:mm',\n LTS: 'HH:mm:ss',\n L: 'DD.MM.YYYY',\n LL: 'D MMMM YYYY',\n LLL: 'D MMMM YYYY HH:mm',\n LLLL: 'dddd, D MMMM YYYY HH:mm',\n },\n calendar: {\n sameDay: '[bugün saat] LT',\n nextDay: '[yarın saat] LT',\n nextWeek: '[gelecek] dddd [saat] LT',\n lastDay: '[dün] LT',\n lastWeek: '[geçen] dddd [saat] LT',\n sameElse: 'L',\n },\n relativeTime: {\n future: '%s sonra',\n past: '%s önce',\n s: 'birkaç saniye',\n ss: '%d saniye',\n m: 'bir dakika',\n mm: '%d dakika',\n h: 'bir saat',\n hh: '%d saat',\n d: 'bir gün',\n dd: '%d gün',\n w: 'bir hafta',\n ww: '%d hafta',\n M: 'bir ay',\n MM: '%d ay',\n y: 'bir yıl',\n yy: '%d yıl',\n },\n ordinal: function (number, period) {\n switch (period) {\n case 'd':\n case 'D':\n case 'Do':\n case 'DD':\n return number;\n default:\n if (number === 0) {\n // special case for zero\n return number + \"'ıncı\";\n }\n var a = number % 10,\n b = (number % 100) - a,\n c = number >= 100 ? 100 : null;\n return number + (suffixes[a] || suffixes[b] || suffixes[c]);\n }\n },\n week: {\n dow: 1, // Monday is the first day of the week.\n doy: 7, // The week that contains Jan 7th is the first week of the year.\n },\n });\n\n return tr;\n\n})));\n","//! moment.js locale configuration\n//! locale : Talossan [tzl]\n//! author : Robin van der Vliet : https://github.com/robin0van0der0v\n//! author : Iustì Canun\n\n;(function (global, factory) {\n typeof exports === 'object' && typeof module !== 'undefined'\n && typeof require === 'function' ? factory(require('../moment')) :\n typeof define === 'function' && define.amd ? define(['../moment'], factory) :\n factory(global.moment)\n}(this, (function (moment) { 'use strict';\n\n //! moment.js locale configuration\n\n // After the year there should be a slash and the amount of years since December 26, 1979 in Roman numerals.\n // This is currently too difficult (maybe even impossible) to add.\n var tzl = moment.defineLocale('tzl', {\n months: 'Januar_Fevraglh_Març_Avrïu_Mai_Gün_Julia_Guscht_Setemvar_Listopäts_Noemvar_Zecemvar'.split(\n '_'\n ),\n monthsShort: 'Jan_Fev_Mar_Avr_Mai_Gün_Jul_Gus_Set_Lis_Noe_Zec'.split('_'),\n weekdays: 'Súladi_Lúneçi_Maitzi_Márcuri_Xhúadi_Viénerçi_Sáturi'.split('_'),\n weekdaysShort: 'Súl_Lún_Mai_Már_Xhú_Vié_Sát'.split('_'),\n weekdaysMin: 'Sú_Lú_Ma_Má_Xh_Vi_Sá'.split('_'),\n longDateFormat: {\n LT: 'HH.mm',\n LTS: 'HH.mm.ss',\n L: 'DD.MM.YYYY',\n LL: 'D. MMMM [dallas] YYYY',\n LLL: 'D. MMMM [dallas] YYYY HH.mm',\n LLLL: 'dddd, [li] D. MMMM [dallas] YYYY HH.mm',\n },\n meridiemParse: /d\\'o|d\\'a/i,\n isPM: function (input) {\n return \"d'o\" === input.toLowerCase();\n },\n meridiem: function (hours, minutes, isLower) {\n if (hours > 11) {\n return isLower ? \"d'o\" : \"D'O\";\n } else {\n return isLower ? \"d'a\" : \"D'A\";\n }\n },\n calendar: {\n sameDay: '[oxhi à ] LT',\n nextDay: '[demà à ] LT',\n nextWeek: 'dddd [à ] LT',\n lastDay: '[ieiri à ] LT',\n lastWeek: '[sür el] dddd [lasteu à ] LT',\n sameElse: 'L',\n },\n relativeTime: {\n future: 'osprei %s',\n past: 'ja%s',\n s: processRelativeTime,\n ss: processRelativeTime,\n m: processRelativeTime,\n mm: processRelativeTime,\n h: processRelativeTime,\n hh: processRelativeTime,\n d: processRelativeTime,\n dd: processRelativeTime,\n M: processRelativeTime,\n MM: processRelativeTime,\n y: processRelativeTime,\n yy: processRelativeTime,\n },\n dayOfMonthOrdinalParse: /\\d{1,2}\\./,\n ordinal: '%d.',\n week: {\n dow: 1, // Monday is the first day of the week.\n doy: 4, // The week that contains Jan 4th is the first week of the year.\n },\n });\n\n function processRelativeTime(number, withoutSuffix, key, isFuture) {\n var format = {\n s: ['viensas secunds', \"'iensas secunds\"],\n ss: [number + ' secunds', '' + number + ' secunds'],\n m: [\"'n mÃut\", \"'iens mÃut\"],\n mm: [number + ' mÃuts', '' + number + ' mÃuts'],\n h: [\"'n þora\", \"'iensa þora\"],\n hh: [number + ' þoras', '' + number + ' þoras'],\n d: [\"'n ziua\", \"'iensa ziua\"],\n dd: [number + ' ziuas', '' + number + ' ziuas'],\n M: [\"'n mes\", \"'iens mes\"],\n MM: [number + ' mesen', '' + number + ' mesen'],\n y: [\"'n ar\", \"'iens ar\"],\n yy: [number + ' ars', '' + number + ' ars'],\n };\n return isFuture\n ? format[key][0]\n : withoutSuffix\n ? format[key][0]\n : format[key][1];\n }\n\n return tzl;\n\n})));\n","//! moment.js locale configuration\n//! locale : Central Atlas Tamazight [tzm]\n//! author : Abdel Said : https://github.com/abdelsaid\n\n;(function (global, factory) {\n typeof exports === 'object' && typeof module !== 'undefined'\n && typeof require === 'function' ? factory(require('../moment')) :\n typeof define === 'function' && define.amd ? define(['../moment'], factory) :\n factory(global.moment)\n}(this, (function (moment) { 'use strict';\n\n //! moment.js locale configuration\n\n var tzm = moment.defineLocale('tzm', {\n months: 'ⵉâµâµâ´°âµ¢âµ”_ⴱⵕⴰⵢⵕ_ⵎⴰⵕⵚ_ⵉⴱⵔⵉⵔ_ⵎⴰⵢⵢⵓ_ⵢⵓâµâµ¢âµ“_ⵢⵓâµâµ¢âµ“âµ£_ⵖⵓⵛⵜ_ⵛⵓⵜⴰâµâ´±âµ‰âµ”_ⴽⵟⵓⴱⵕ_âµâµ“ⵡⴰâµâ´±âµ‰âµ”_ⴷⵓⵊâµâ´±âµ‰âµ”'.split(\n '_'\n ),\n monthsShort:\n 'ⵉâµâµâ´°âµ¢âµ”_ⴱⵕⴰⵢⵕ_ⵎⴰⵕⵚ_ⵉⴱⵔⵉⵔ_ⵎⴰⵢⵢⵓ_ⵢⵓâµâµ¢âµ“_ⵢⵓâµâµ¢âµ“âµ£_ⵖⵓⵛⵜ_ⵛⵓⵜⴰâµâ´±âµ‰âµ”_ⴽⵟⵓⴱⵕ_âµâµ“ⵡⴰâµâ´±âµ‰âµ”_ⴷⵓⵊâµâ´±âµ‰âµ”'.split(\n '_'\n ),\n weekdays: 'ⴰⵙⴰⵎⴰⵙ_â´°âµ¢âµâ´°âµ™_ⴰⵙⵉâµâ´°âµ™_ⴰⴽⵔⴰⵙ_ⴰⴽⵡⴰⵙ_ⴰⵙⵉⵎⵡⴰⵙ_ⴰⵙⵉⴹⵢⴰⵙ'.split('_'),\n weekdaysShort: 'ⴰⵙⴰⵎⴰⵙ_â´°âµ¢âµâ´°âµ™_ⴰⵙⵉâµâ´°âµ™_ⴰⴽⵔⴰⵙ_ⴰⴽⵡⴰⵙ_ⴰⵙⵉⵎⵡⴰⵙ_ⴰⵙⵉⴹⵢⴰⵙ'.split('_'),\n weekdaysMin: 'ⴰⵙⴰⵎⴰⵙ_â´°âµ¢âµâ´°âµ™_ⴰⵙⵉâµâ´°âµ™_ⴰⴽⵔⴰⵙ_ⴰⴽⵡⴰⵙ_ⴰⵙⵉⵎⵡⴰⵙ_ⴰⵙⵉⴹⵢⴰⵙ'.split('_'),\n longDateFormat: {\n LT: 'HH:mm',\n LTS: 'HH:mm:ss',\n L: 'DD/MM/YYYY',\n LL: 'D MMMM YYYY',\n LLL: 'D MMMM YYYY HH:mm',\n LLLL: 'dddd D MMMM YYYY HH:mm',\n },\n calendar: {\n sameDay: '[ⴰⵙⴷⵅ â´´] LT',\n nextDay: '[ⴰⵙⴽⴰ â´´] LT',\n nextWeek: 'dddd [â´´] LT',\n lastDay: '[ⴰⵚⴰâµâµœ â´´] LT',\n lastWeek: 'dddd [â´´] LT',\n sameElse: 'L',\n },\n relativeTime: {\n future: 'â´·â´°â´·âµ… âµ™ ⵢⴰⵠ%s',\n past: 'ⵢⴰⵠ%s',\n s: 'ⵉⵎⵉⴽ',\n ss: '%d ⵉⵎⵉⴽ',\n m: 'ⵎⵉâµâµ“â´º',\n mm: '%d ⵎⵉâµâµ“â´º',\n h: 'ⵙⴰⵄⴰ',\n hh: '%d ⵜⴰⵙⵙⴰⵄⵉâµ',\n d: 'ⴰⵙⵙ',\n dd: '%d oⵙⵙⴰâµ',\n M: 'â´°âµ¢oⵓⵔ',\n MM: '%d ⵉⵢⵢⵉⵔâµ',\n y: 'ⴰⵙⴳⴰⵙ',\n yy: '%d ⵉⵙⴳⴰⵙâµ',\n },\n week: {\n dow: 6, // Saturday is the first day of the week.\n doy: 12, // The week that contains Jan 12th is the first week of the year.\n },\n });\n\n return tzm;\n\n})));\n","//! moment.js locale configuration\n//! locale : Central Atlas Tamazight Latin [tzm-latn]\n//! author : Abdel Said : https://github.com/abdelsaid\n\n;(function (global, factory) {\n typeof exports === 'object' && typeof module !== 'undefined'\n && typeof require === 'function' ? factory(require('../moment')) :\n typeof define === 'function' && define.amd ? define(['../moment'], factory) :\n factory(global.moment)\n}(this, (function (moment) { 'use strict';\n\n //! moment.js locale configuration\n\n var tzmLatn = moment.defineLocale('tzm-latn', {\n months: 'innayr_brˤayrˤ_marˤsˤ_ibrir_mayyw_ywnyw_ywlywz_É£wÅ¡t_Å¡wtanbir_ktˤwbrˤ_nwwanbir_dwjnbir'.split(\n '_'\n ),\n monthsShort:\n 'innayr_brˤayrˤ_marˤsˤ_ibrir_mayyw_ywnyw_ywlywz_É£wÅ¡t_Å¡wtanbir_ktˤwbrˤ_nwwanbir_dwjnbir'.split(\n '_'\n ),\n weekdays: 'asamas_aynas_asinas_akras_akwas_asimwas_asiá¸yas'.split('_'),\n weekdaysShort: 'asamas_aynas_asinas_akras_akwas_asimwas_asiá¸yas'.split('_'),\n weekdaysMin: 'asamas_aynas_asinas_akras_akwas_asimwas_asiá¸yas'.split('_'),\n longDateFormat: {\n LT: 'HH:mm',\n LTS: 'HH:mm:ss',\n L: 'DD/MM/YYYY',\n LL: 'D MMMM YYYY',\n LLL: 'D MMMM YYYY HH:mm',\n LLLL: 'dddd D MMMM YYYY HH:mm',\n },\n calendar: {\n sameDay: '[asdkh g] LT',\n nextDay: '[aska g] LT',\n nextWeek: 'dddd [g] LT',\n lastDay: '[assant g] LT',\n lastWeek: 'dddd [g] LT',\n sameElse: 'L',\n },\n relativeTime: {\n future: 'dadkh s yan %s',\n past: 'yan %s',\n s: 'imik',\n ss: '%d imik',\n m: 'minuá¸',\n mm: '%d minuá¸',\n h: 'saÉ›a',\n hh: '%d tassaÉ›in',\n d: 'ass',\n dd: '%d ossan',\n M: 'ayowr',\n MM: '%d iyyirn',\n y: 'asgas',\n yy: '%d isgasn',\n },\n week: {\n dow: 6, // Saturday is the first day of the week.\n doy: 12, // The week that contains Jan 12th is the first week of the year.\n },\n });\n\n return tzmLatn;\n\n})));\n","//! moment.js locale configuration\n//! locale : Uyghur (China) [ug-cn]\n//! author: boyaq : https://github.com/boyaq\n\n;(function (global, factory) {\n typeof exports === 'object' && typeof module !== 'undefined'\n && typeof require === 'function' ? factory(require('../moment')) :\n typeof define === 'function' && define.amd ? define(['../moment'], factory) :\n factory(global.moment)\n}(this, (function (moment) { 'use strict';\n\n //! moment.js locale configuration\n\n var ugCn = moment.defineLocale('ug-cn', {\n months: 'يانۋار_ÙÛۋرال_مارت_ئاپرÛÙ„_ماي_ئىيۇن_ئىيۇل_ئاۋغۇست_سÛنتەبىر_ئۆكتەبىر_نويابىر_دÛكابىر'.split(\n '_'\n ),\n monthsShort:\n 'يانۋار_ÙÛۋرال_مارت_ئاپرÛÙ„_ماي_ئىيۇن_ئىيۇل_ئاۋغۇست_سÛنتەبىر_ئۆكتەبىر_نويابىر_دÛكابىر'.split(\n '_'\n ),\n weekdays: 'يەكشەنبە_دۈشەنبە_سەيشەنبە_چارشەنبە_پەيشەنبە_جۈمە_شەنبە'.split(\n '_'\n ),\n weekdaysShort: 'ÙŠÛ•_دۈ_سە_چا_Ù¾Û•_جۈ_Ø´Û•'.split('_'),\n weekdaysMin: 'ÙŠÛ•_دۈ_سە_چا_Ù¾Û•_جۈ_Ø´Û•'.split('_'),\n longDateFormat: {\n LT: 'HH:mm',\n LTS: 'HH:mm:ss',\n L: 'YYYY-MM-DD',\n LL: 'YYYY-يىلىM-ئاينىÚD-كۈنى',\n LLL: 'YYYY-يىلىM-ئاينىÚD-كۈنى، HH:mm',\n LLLL: 'ddddØŒ YYYY-يىلىM-ئاينىÚD-كۈنى، HH:mm',\n },\n meridiemParse: /ÙŠÛرىم ÙƒÛÚ†Û•|سەھەر|چۈشتىن بۇرۇن|چۈش|چۈشتىن ÙƒÛيىن|ÙƒÛ•Ú†/,\n meridiemHour: function (hour, meridiem) {\n if (hour === 12) {\n hour = 0;\n }\n if (\n meridiem === 'ÙŠÛرىم ÙƒÛÚ†Û•' ||\n meridiem === 'سەھەر' ||\n meridiem === 'چۈشتىن بۇرۇن'\n ) {\n return hour;\n } else if (meridiem === 'چۈشتىن ÙƒÛيىن' || meridiem === 'ÙƒÛ•Ú†') {\n return hour + 12;\n } else {\n return hour >= 11 ? hour : hour + 12;\n }\n },\n meridiem: function (hour, minute, isLower) {\n var hm = hour * 100 + minute;\n if (hm < 600) {\n return 'ÙŠÛرىم ÙƒÛÚ†Û•';\n } else if (hm < 900) {\n return 'سەھەر';\n } else if (hm < 1130) {\n return 'چۈشتىن بۇرۇن';\n } else if (hm < 1230) {\n return 'چۈش';\n } else if (hm < 1800) {\n return 'چۈشتىن ÙƒÛيىن';\n } else {\n return 'ÙƒÛ•Ú†';\n }\n },\n calendar: {\n sameDay: '[بۈگۈن سائەت] LT',\n nextDay: '[ئەتە سائەت] LT',\n nextWeek: '[ÙƒÛلەركى] dddd [سائەت] LT',\n lastDay: '[تۆنۈگۈن] LT',\n lastWeek: '[ئالدىنقى] dddd [سائەت] LT',\n sameElse: 'L',\n },\n relativeTime: {\n future: '%s ÙƒÛيىن',\n past: '%s بۇرۇن',\n s: 'Ù†Û•Ú†Ú†Û• سÛكونت',\n ss: '%d سÛكونت',\n m: 'بىر مىنۇت',\n mm: '%d مىنۇت',\n h: 'بىر سائەت',\n hh: '%d سائەت',\n d: 'بىر ÙƒÛˆÙ†',\n dd: '%d ÙƒÛˆÙ†',\n M: 'بىر ئاي',\n MM: '%d ئاي',\n y: 'بىر يىل',\n yy: '%d يىل',\n },\n\n dayOfMonthOrdinalParse: /\\d{1,2}(-كۈنى|-ئاي|-ھەپتە)/,\n ordinal: function (number, period) {\n switch (period) {\n case 'd':\n case 'D':\n case 'DDD':\n return number + '-كۈنى';\n case 'w':\n case 'W':\n return number + '-ھەپتە';\n default:\n return number;\n }\n },\n preparse: function (string) {\n return string.replace(/ØŒ/g, ',');\n },\n postformat: function (string) {\n return string.replace(/,/g, 'ØŒ');\n },\n week: {\n // GB/T 7408-1994《数æ®å…ƒå’Œäº¤æ¢æ ¼å¼Â·ä¿¡æ¯äº¤æ¢Â·æ—¥æœŸå’Œæ—¶é—´è¡¨ç¤ºæ³•ã€‹ä¸ŽISO 8601:1988ç‰æ•ˆ\n dow: 1, // Monday is the first day of the week.\n doy: 7, // The week that contains Jan 1st is the first week of the year.\n },\n });\n\n return ugCn;\n\n})));\n","//! moment.js locale configuration\n//! locale : Ukrainian [uk]\n//! author : zemlanin : https://github.com/zemlanin\n//! Author : Menelion Elensúle : https://github.com/Oire\n\n;(function (global, factory) {\n typeof exports === 'object' && typeof module !== 'undefined'\n && typeof require === 'function' ? factory(require('../moment')) :\n typeof define === 'function' && define.amd ? define(['../moment'], factory) :\n factory(global.moment)\n}(this, (function (moment) { 'use strict';\n\n //! moment.js locale configuration\n\n function plural(word, num) {\n var forms = word.split('_');\n return num % 10 === 1 && num % 100 !== 11\n ? forms[0]\n : num % 10 >= 2 && num % 10 <= 4 && (num % 100 < 10 || num % 100 >= 20)\n ? forms[1]\n : forms[2];\n }\n function relativeTimeWithPlural(number, withoutSuffix, key) {\n var format = {\n ss: withoutSuffix ? 'Ñекунда_Ñекунди_Ñекунд' : 'Ñекунду_Ñекунди_Ñекунд',\n mm: withoutSuffix ? 'хвилина_хвилини_хвилин' : 'хвилину_хвилини_хвилин',\n hh: withoutSuffix ? 'година_години_годин' : 'годину_години_годин',\n dd: 'день_дні_днів',\n MM: 'міÑÑць_міÑÑці_міÑÑців',\n yy: 'рік_роки_років',\n };\n if (key === 'm') {\n return withoutSuffix ? 'хвилина' : 'хвилину';\n } else if (key === 'h') {\n return withoutSuffix ? 'година' : 'годину';\n } else {\n return number + ' ' + plural(format[key], +number);\n }\n }\n function weekdaysCaseReplace(m, format) {\n var weekdays = {\n nominative:\n 'неділÑ_понеділок_вівторок_Ñереда_четвер_п’ÑтницÑ_Ñубота'.split(\n '_'\n ),\n accusative:\n 'неділю_понеділок_вівторок_Ñереду_четвер_п’Ñтницю_Ñуботу'.split(\n '_'\n ),\n genitive:\n 'неділі_понеділка_вівторка_Ñереди_четверга_п’Ñтниці_Ñуботи'.split(\n '_'\n ),\n },\n nounCase;\n\n if (m === true) {\n return weekdays['nominative']\n .slice(1, 7)\n .concat(weekdays['nominative'].slice(0, 1));\n }\n if (!m) {\n return weekdays['nominative'];\n }\n\n nounCase = /(\\[[ВвУу]\\]) ?dddd/.test(format)\n ? 'accusative'\n : /\\[?(?:минулої|наÑтупної)? ?\\] ?dddd/.test(format)\n ? 'genitive'\n : 'nominative';\n return weekdays[nounCase][m.day()];\n }\n function processHoursFunction(str) {\n return function () {\n return str + 'о' + (this.hours() === 11 ? 'б' : '') + '] LT';\n };\n }\n\n var uk = moment.defineLocale('uk', {\n months: {\n format: 'ÑічнÑ_лютого_березнÑ_квітнÑ_травнÑ_червнÑ_липнÑ_ÑерпнÑ_вереÑнÑ_жовтнÑ_лиÑтопада_груднÑ'.split(\n '_'\n ),\n standalone:\n 'Ñічень_лютий_березень_квітень_травень_червень_липень_Ñерпень_вереÑень_жовтень_лиÑтопад_грудень'.split(\n '_'\n ),\n },\n monthsShort: 'Ñіч_лют_бер_квіт_трав_черв_лип_Ñерп_вер_жовт_лиÑÑ‚_груд'.split(\n '_'\n ),\n weekdays: weekdaysCaseReplace,\n weekdaysShort: 'нд_пн_вт_ÑÑ€_чт_пт_Ñб'.split('_'),\n weekdaysMin: 'нд_пн_вт_ÑÑ€_чт_пт_Ñб'.split('_'),\n longDateFormat: {\n LT: 'HH:mm',\n LTS: 'HH:mm:ss',\n L: 'DD.MM.YYYY',\n LL: 'D MMMM YYYY Ñ€.',\n LLL: 'D MMMM YYYY Ñ€., HH:mm',\n LLLL: 'dddd, D MMMM YYYY Ñ€., HH:mm',\n },\n calendar: {\n sameDay: processHoursFunction('[Сьогодні '),\n nextDay: processHoursFunction('[Завтра '),\n lastDay: processHoursFunction('[Вчора '),\n nextWeek: processHoursFunction('[У] dddd ['),\n lastWeek: function () {\n switch (this.day()) {\n case 0:\n case 3:\n case 5:\n case 6:\n return processHoursFunction('[Минулої] dddd [').call(this);\n case 1:\n case 2:\n case 4:\n return processHoursFunction('[Минулого] dddd [').call(this);\n }\n },\n sameElse: 'L',\n },\n relativeTime: {\n future: 'за %s',\n past: '%s тому',\n s: 'декілька Ñекунд',\n ss: relativeTimeWithPlural,\n m: relativeTimeWithPlural,\n mm: relativeTimeWithPlural,\n h: 'годину',\n hh: relativeTimeWithPlural,\n d: 'день',\n dd: relativeTimeWithPlural,\n M: 'міÑÑць',\n MM: relativeTimeWithPlural,\n y: 'рік',\n yy: relativeTimeWithPlural,\n },\n // M. E.: those two are virtually unused but a user might want to implement them for his/her website for some reason\n meridiemParse: /ночі|ранку|днÑ|вечора/,\n isPM: function (input) {\n return /^(днÑ|вечора)$/.test(input);\n },\n meridiem: function (hour, minute, isLower) {\n if (hour < 4) {\n return 'ночі';\n } else if (hour < 12) {\n return 'ранку';\n } else if (hour < 17) {\n return 'днÑ';\n } else {\n return 'вечора';\n }\n },\n dayOfMonthOrdinalParse: /\\d{1,2}-(й|го)/,\n ordinal: function (number, period) {\n switch (period) {\n case 'M':\n case 'd':\n case 'DDD':\n case 'w':\n case 'W':\n return number + '-й';\n case 'D':\n return number + '-го';\n default:\n return number;\n }\n },\n week: {\n dow: 1, // Monday is the first day of the week.\n doy: 7, // The week that contains Jan 7th is the first week of the year.\n },\n });\n\n return uk;\n\n})));\n","//! moment.js locale configuration\n//! locale : Urdu [ur]\n//! author : Sawood Alam : https://github.com/ibnesayeed\n//! author : Zack : https://github.com/ZackVision\n\n;(function (global, factory) {\n typeof exports === 'object' && typeof module !== 'undefined'\n && typeof require === 'function' ? factory(require('../moment')) :\n typeof define === 'function' && define.amd ? define(['../moment'], factory) :\n factory(global.moment)\n}(this, (function (moment) { 'use strict';\n\n //! moment.js locale configuration\n\n var months = [\n 'جنوری',\n 'Ùروری',\n 'مارچ',\n 'اپریل',\n 'مئی',\n 'جون',\n 'جولائی',\n 'اگست',\n 'ستمبر',\n 'اکتوبر',\n 'نومبر',\n 'دسمبر',\n ],\n days = ['اتوار', 'پیر', 'منگل', 'بدھ', 'جمعرات', 'جمعÛ', 'ÛÙتÛ'];\n\n var ur = moment.defineLocale('ur', {\n months: months,\n monthsShort: months,\n weekdays: days,\n weekdaysShort: days,\n weekdaysMin: days,\n longDateFormat: {\n LT: 'HH:mm',\n LTS: 'HH:mm:ss',\n L: 'DD/MM/YYYY',\n LL: 'D MMMM YYYY',\n LLL: 'D MMMM YYYY HH:mm',\n LLLL: 'ddddØŒ D MMMM YYYY HH:mm',\n },\n meridiemParse: /صبØ|شام/,\n isPM: function (input) {\n return 'شام' === input;\n },\n meridiem: function (hour, minute, isLower) {\n if (hour < 12) {\n return 'صبØ';\n }\n return 'شام';\n },\n calendar: {\n sameDay: '[آج بوقت] LT',\n nextDay: '[Ú©Ù„ بوقت] LT',\n nextWeek: 'dddd [بوقت] LT',\n lastDay: '[Ú¯Ø°Ø´ØªÛ Ø±ÙˆØ² بوقت] LT',\n lastWeek: '[گذشتÛ] dddd [بوقت] LT',\n sameElse: 'L',\n },\n relativeTime: {\n future: '%s بعد',\n past: '%s قبل',\n s: 'چند سیکنڈ',\n ss: '%d سیکنڈ',\n m: 'ایک منٹ',\n mm: '%d منٹ',\n h: 'ایک گھنٹÛ',\n hh: '%d گھنٹے',\n d: 'ایک دن',\n dd: '%d دن',\n M: 'ایک ماÛ',\n MM: '%d ماÛ',\n y: 'ایک سال',\n yy: '%d سال',\n },\n preparse: function (string) {\n return string.replace(/ØŒ/g, ',');\n },\n postformat: function (string) {\n return string.replace(/,/g, 'ØŒ');\n },\n week: {\n dow: 1, // Monday is the first day of the week.\n doy: 4, // The week that contains Jan 4th is the first week of the year.\n },\n });\n\n return ur;\n\n})));\n","//! moment.js locale configuration\n//! locale : Uzbek [uz]\n//! author : Sardor Muminov : https://github.com/muminoff\n\n;(function (global, factory) {\n typeof exports === 'object' && typeof module !== 'undefined'\n && typeof require === 'function' ? factory(require('../moment')) :\n typeof define === 'function' && define.amd ? define(['../moment'], factory) :\n factory(global.moment)\n}(this, (function (moment) { 'use strict';\n\n //! moment.js locale configuration\n\n var uz = moment.defineLocale('uz', {\n months: 'Ñнвар_феврал_март_апрел_май_июн_июл_авгуÑÑ‚_ÑентÑбр_октÑбр_ноÑбр_декабр'.split(\n '_'\n ),\n monthsShort: 'Ñнв_фев_мар_апр_май_июн_июл_авг_Ñен_окт_ноÑ_дек'.split('_'),\n weekdays: 'Якшанба_Душанба_Сешанба_Чоршанба_Пайшанба_Жума_Шанба'.split('_'),\n weekdaysShort: 'Якш_Душ_Сеш_Чор_Пай_Жум_Шан'.split('_'),\n weekdaysMin: 'Як_Ду_Се_Чо_Па_Жу_Ша'.split('_'),\n longDateFormat: {\n LT: 'HH:mm',\n LTS: 'HH:mm:ss',\n L: 'DD/MM/YYYY',\n LL: 'D MMMM YYYY',\n LLL: 'D MMMM YYYY HH:mm',\n LLLL: 'D MMMM YYYY, dddd HH:mm',\n },\n calendar: {\n sameDay: '[Бугун Ñоат] LT [да]',\n nextDay: '[Ðртага] LT [да]',\n nextWeek: 'dddd [куни Ñоат] LT [да]',\n lastDay: '[Кеча Ñоат] LT [да]',\n lastWeek: '[Утган] dddd [куни Ñоат] LT [да]',\n sameElse: 'L',\n },\n relativeTime: {\n future: 'Якин %s ичида',\n past: 'Бир неча %s олдин',\n s: 'фурÑат',\n ss: '%d фурÑат',\n m: 'бир дакика',\n mm: '%d дакика',\n h: 'бир Ñоат',\n hh: '%d Ñоат',\n d: 'бир кун',\n dd: '%d кун',\n M: 'бир ой',\n MM: '%d ой',\n y: 'бир йил',\n yy: '%d йил',\n },\n week: {\n dow: 1, // Monday is the first day of the week.\n doy: 7, // The week that contains Jan 4th is the first week of the year.\n },\n });\n\n return uz;\n\n})));\n","//! moment.js locale configuration\n//! locale : Uzbek Latin [uz-latn]\n//! author : Rasulbek Mirzayev : github.com/Rasulbeeek\n\n;(function (global, factory) {\n typeof exports === 'object' && typeof module !== 'undefined'\n && typeof require === 'function' ? factory(require('../moment')) :\n typeof define === 'function' && define.amd ? define(['../moment'], factory) :\n factory(global.moment)\n}(this, (function (moment) { 'use strict';\n\n //! moment.js locale configuration\n\n var uzLatn = moment.defineLocale('uz-latn', {\n months: 'Yanvar_Fevral_Mart_Aprel_May_Iyun_Iyul_Avgust_Sentabr_Oktabr_Noyabr_Dekabr'.split(\n '_'\n ),\n monthsShort: 'Yan_Fev_Mar_Apr_May_Iyun_Iyul_Avg_Sen_Okt_Noy_Dek'.split('_'),\n weekdays:\n 'Yakshanba_Dushanba_Seshanba_Chorshanba_Payshanba_Juma_Shanba'.split(\n '_'\n ),\n weekdaysShort: 'Yak_Dush_Sesh_Chor_Pay_Jum_Shan'.split('_'),\n weekdaysMin: 'Ya_Du_Se_Cho_Pa_Ju_Sha'.split('_'),\n longDateFormat: {\n LT: 'HH:mm',\n LTS: 'HH:mm:ss',\n L: 'DD/MM/YYYY',\n LL: 'D MMMM YYYY',\n LLL: 'D MMMM YYYY HH:mm',\n LLLL: 'D MMMM YYYY, dddd HH:mm',\n },\n calendar: {\n sameDay: '[Bugun soat] LT [da]',\n nextDay: '[Ertaga] LT [da]',\n nextWeek: 'dddd [kuni soat] LT [da]',\n lastDay: '[Kecha soat] LT [da]',\n lastWeek: \"[O'tgan] dddd [kuni soat] LT [da]\",\n sameElse: 'L',\n },\n relativeTime: {\n future: 'Yaqin %s ichida',\n past: 'Bir necha %s oldin',\n s: 'soniya',\n ss: '%d soniya',\n m: 'bir daqiqa',\n mm: '%d daqiqa',\n h: 'bir soat',\n hh: '%d soat',\n d: 'bir kun',\n dd: '%d kun',\n M: 'bir oy',\n MM: '%d oy',\n y: 'bir yil',\n yy: '%d yil',\n },\n week: {\n dow: 1, // Monday is the first day of the week.\n doy: 7, // The week that contains Jan 7th is the first week of the year.\n },\n });\n\n return uzLatn;\n\n})));\n","//! moment.js locale configuration\n//! locale : Vietnamese [vi]\n//! author : Bang Nguyen : https://github.com/bangnk\n//! author : Chien Kira : https://github.com/chienkira\n\n;(function (global, factory) {\n typeof exports === 'object' && typeof module !== 'undefined'\n && typeof require === 'function' ? factory(require('../moment')) :\n typeof define === 'function' && define.amd ? define(['../moment'], factory) :\n factory(global.moment)\n}(this, (function (moment) { 'use strict';\n\n //! moment.js locale configuration\n\n var vi = moment.defineLocale('vi', {\n months: 'tháng 1_tháng 2_tháng 3_tháng 4_tháng 5_tháng 6_tháng 7_tháng 8_tháng 9_tháng 10_tháng 11_tháng 12'.split(\n '_'\n ),\n monthsShort:\n 'Thg 01_Thg 02_Thg 03_Thg 04_Thg 05_Thg 06_Thg 07_Thg 08_Thg 09_Thg 10_Thg 11_Thg 12'.split(\n '_'\n ),\n monthsParseExact: true,\n weekdays: 'chủ nháºt_thứ hai_thứ ba_thứ tÆ°_thứ năm_thứ sáu_thứ bảy'.split(\n '_'\n ),\n weekdaysShort: 'CN_T2_T3_T4_T5_T6_T7'.split('_'),\n weekdaysMin: 'CN_T2_T3_T4_T5_T6_T7'.split('_'),\n weekdaysParseExact: true,\n meridiemParse: /sa|ch/i,\n isPM: function (input) {\n return /^ch$/i.test(input);\n },\n meridiem: function (hours, minutes, isLower) {\n if (hours < 12) {\n return isLower ? 'sa' : 'SA';\n } else {\n return isLower ? 'ch' : 'CH';\n }\n },\n longDateFormat: {\n LT: 'HH:mm',\n LTS: 'HH:mm:ss',\n L: 'DD/MM/YYYY',\n LL: 'D MMMM [năm] YYYY',\n LLL: 'D MMMM [năm] YYYY HH:mm',\n LLLL: 'dddd, D MMMM [năm] YYYY HH:mm',\n l: 'DD/M/YYYY',\n ll: 'D MMM YYYY',\n lll: 'D MMM YYYY HH:mm',\n llll: 'ddd, D MMM YYYY HH:mm',\n },\n calendar: {\n sameDay: '[Hôm nay lúc] LT',\n nextDay: '[Ngà y mai lúc] LT',\n nextWeek: 'dddd [tuần tá»›i lúc] LT',\n lastDay: '[Hôm qua lúc] LT',\n lastWeek: 'dddd [tuần trÆ°á»›c lúc] LT',\n sameElse: 'L',\n },\n relativeTime: {\n future: '%s tá»›i',\n past: '%s trÆ°á»›c',\n s: 'và i giây',\n ss: '%d giây',\n m: 'má»™t phút',\n mm: '%d phút',\n h: 'má»™t giá»',\n hh: '%d giá»',\n d: 'má»™t ngà y',\n dd: '%d ngà y',\n w: 'má»™t tuần',\n ww: '%d tuần',\n M: 'má»™t tháng',\n MM: '%d tháng',\n y: 'má»™t năm',\n yy: '%d năm',\n },\n dayOfMonthOrdinalParse: /\\d{1,2}/,\n ordinal: function (number) {\n return number;\n },\n week: {\n dow: 1, // Monday is the first day of the week.\n doy: 4, // The week that contains Jan 4th is the first week of the year.\n },\n });\n\n return vi;\n\n})));\n","//! moment.js locale configuration\n//! locale : Pseudo [x-pseudo]\n//! author : Andrew Hood : https://github.com/andrewhood125\n\n;(function (global, factory) {\n typeof exports === 'object' && typeof module !== 'undefined'\n && typeof require === 'function' ? factory(require('../moment')) :\n typeof define === 'function' && define.amd ? define(['../moment'], factory) :\n factory(global.moment)\n}(this, (function (moment) { 'use strict';\n\n //! moment.js locale configuration\n\n var xPseudo = moment.defineLocale('x-pseudo', {\n months: 'J~áñúá~rý_F~ébrú~árý_~Márc~h_Ãp~rÃl_~Máý_~Júñé~_Júl~ý_Ãú~gúst~_Sép~témb~ér_Ó~ctób~ér_Ñ~óvém~bér_~Décé~mbér'.split(\n '_'\n ),\n monthsShort:\n 'J~áñ_~Féb_~Már_~Ãpr_~Máý_~Júñ_~Júl_~Ãúg_~Sép_~Óct_~Ñóv_~Déc'.split(\n '_'\n ),\n monthsParseExact: true,\n weekdays:\n 'S~úñdá~ý_Mó~ñdáý~_Túé~sdáý~_Wéd~ñésd~áý_T~húrs~dáý_~FrÃd~áý_S~átúr~dáý'.split(\n '_'\n ),\n weekdaysShort: 'S~úñ_~Móñ_~Túé_~Wéd_~Thú_~FrÃ_~Sát'.split('_'),\n weekdaysMin: 'S~ú_Mó~_Tú_~Wé_T~h_Fr~_Sá'.split('_'),\n weekdaysParseExact: true,\n longDateFormat: {\n LT: 'HH:mm',\n L: 'DD/MM/YYYY',\n LL: 'D MMMM YYYY',\n LLL: 'D MMMM YYYY HH:mm',\n LLLL: 'dddd, D MMMM YYYY HH:mm',\n },\n calendar: {\n sameDay: '[T~ódá~ý át] LT',\n nextDay: '[T~ómó~rró~w át] LT',\n nextWeek: 'dddd [át] LT',\n lastDay: '[Ã~ést~érdá~ý át] LT',\n lastWeek: '[L~ást] dddd [át] LT',\n sameElse: 'L',\n },\n relativeTime: {\n future: 'Ã~ñ %s',\n past: '%s á~gó',\n s: 'á ~féw ~sécó~ñds',\n ss: '%d s~écóñ~ds',\n m: 'á ~mÃñ~úté',\n mm: '%d m~Ãñú~tés',\n h: 'á~ñ hó~úr',\n hh: '%d h~óúrs',\n d: 'á ~dáý',\n dd: '%d d~áýs',\n M: 'á ~móñ~th',\n MM: '%d m~óñt~hs',\n y: 'á ~ýéár',\n yy: '%d ý~éárs',\n },\n dayOfMonthOrdinalParse: /\\d{1,2}(th|st|nd|rd)/,\n ordinal: function (number) {\n var b = number % 10,\n output =\n ~~((number % 100) / 10) === 1\n ? 'th'\n : b === 1\n ? 'st'\n : b === 2\n ? 'nd'\n : b === 3\n ? 'rd'\n : 'th';\n return number + output;\n },\n week: {\n dow: 1, // Monday is the first day of the week.\n doy: 4, // The week that contains Jan 4th is the first week of the year.\n },\n });\n\n return xPseudo;\n\n})));\n","//! moment.js locale configuration\n//! locale : Yoruba Nigeria [yo]\n//! author : Atolagbe Abisoye : https://github.com/andela-batolagbe\n\n;(function (global, factory) {\n typeof exports === 'object' && typeof module !== 'undefined'\n && typeof require === 'function' ? factory(require('../moment')) :\n typeof define === 'function' && define.amd ? define(['../moment'], factory) :\n factory(global.moment)\n}(this, (function (moment) { 'use strict';\n\n //! moment.js locale configuration\n\n var yo = moment.defineLocale('yo', {\n months: 'SẹÌrẹÌ_EÌ€reÌ€leÌ€_Ẹrẹ̀naÌ€_IÌ€gbeÌ_EÌ€bibi_OÌ€kuÌ€du_Agẹmo_OÌ€guÌn_Owewe_Ọ̀waÌ€raÌ€_BeÌluÌ_Ọ̀pẹ̀̀'.split(\n '_'\n ),\n monthsShort: 'SẹÌr_EÌ€rl_Ẹrn_IÌ€gb_EÌ€bi_OÌ€kuÌ€_Agẹ_OÌ€guÌ_Owe_Ọ̀waÌ€_BeÌl_Ọ̀pẹ̀̀'.split('_'),\n weekdays: 'AÌ€iÌ€kuÌ_AjeÌ_IÌ€sẹÌgun_Ọjá»ÌruÌ_Ọjá»Ìbá»_ẸtiÌ€_AÌ€baÌmẹÌta'.split('_'),\n weekdaysShort: 'AÌ€iÌ€k_AjeÌ_IÌ€sẹÌ_Ọjr_Ọjb_ẸtiÌ€_AÌ€baÌ'.split('_'),\n weekdaysMin: 'AÌ€iÌ€_Aj_IÌ€s_Ọr_Ọb_Ẹt_AÌ€b'.split('_'),\n longDateFormat: {\n LT: 'h:mm A',\n LTS: 'h:mm:ss A',\n L: 'DD/MM/YYYY',\n LL: 'D MMMM YYYY',\n LLL: 'D MMMM YYYY h:mm A',\n LLLL: 'dddd, D MMMM YYYY h:mm A',\n },\n calendar: {\n sameDay: '[OÌ€niÌ€ ni] LT',\n nextDay: '[Ọ̀la ni] LT',\n nextWeek: \"dddd [Ọsẹ̀ toÌn'bá»] [ni] LT\",\n lastDay: '[AÌ€na ni] LT',\n lastWeek: 'dddd [Ọsẹ̀ toÌlá»Ì] [ni] LT',\n sameElse: 'L',\n },\n relativeTime: {\n future: 'niÌ %s',\n past: '%s ká»jaÌ',\n s: 'iÌ€sẹjuÌ aayaÌ die',\n ss: 'aayaÌ %d',\n m: 'iÌ€sẹjuÌ kan',\n mm: 'iÌ€sẹjuÌ %d',\n h: 'waÌkati kan',\n hh: 'waÌkati %d',\n d: 'á»já»Ì kan',\n dd: 'á»já»Ì %d',\n M: 'osuÌ€ kan',\n MM: 'osuÌ€ %d',\n y: 'á»duÌn kan',\n yy: 'á»duÌn %d',\n },\n dayOfMonthOrdinalParse: /á»já»Ì\\s\\d{1,2}/,\n ordinal: 'á»já»Ì %d',\n week: {\n dow: 1, // Monday is the first day of the week.\n doy: 4, // The week that contains Jan 4th is the first week of the year.\n },\n });\n\n return yo;\n\n})));\n","//! moment.js locale configuration\n//! locale : Chinese (China) [zh-cn]\n//! author : suupic : https://github.com/suupic\n//! author : Zeno Zeng : https://github.com/zenozeng\n//! author : uu109 : https://github.com/uu109\n\n;(function (global, factory) {\n typeof exports === 'object' && typeof module !== 'undefined'\n && typeof require === 'function' ? factory(require('../moment')) :\n typeof define === 'function' && define.amd ? define(['../moment'], factory) :\n factory(global.moment)\n}(this, (function (moment) { 'use strict';\n\n //! moment.js locale configuration\n\n var zhCn = moment.defineLocale('zh-cn', {\n months: '一月_二月_三月_四月_五月_å…月_七月_八月_ä¹æœˆ_å月_å一月_å二月'.split(\n '_'\n ),\n monthsShort: '1月_2月_3月_4月_5月_6月_7月_8月_9月_10月_11月_12月'.split(\n '_'\n ),\n weekdays: '星期日_星期一_星期二_星期三_星期四_星期五_星期å…'.split('_'),\n weekdaysShort: '周日_周一_周二_周三_周四_周五_周å…'.split('_'),\n weekdaysMin: 'æ—¥_一_二_三_å››_五_å…'.split('_'),\n longDateFormat: {\n LT: 'HH:mm',\n LTS: 'HH:mm:ss',\n L: 'YYYY/MM/DD',\n LL: 'YYYYå¹´M月Dæ—¥',\n LLL: 'YYYYå¹´M月Dæ—¥Ah点mm分',\n LLLL: 'YYYYå¹´M月Dæ—¥ddddAh点mm分',\n l: 'YYYY/M/D',\n ll: 'YYYYå¹´M月Dæ—¥',\n lll: 'YYYYå¹´M月Dæ—¥ HH:mm',\n llll: 'YYYYå¹´M月Dæ—¥dddd HH:mm',\n },\n meridiemParse: /凌晨|早上|上åˆ|ä¸åˆ|下åˆ|晚上/,\n meridiemHour: function (hour, meridiem) {\n if (hour === 12) {\n hour = 0;\n }\n if (meridiem === '凌晨' || meridiem === '早上' || meridiem === '上åˆ') {\n return hour;\n } else if (meridiem === '下åˆ' || meridiem === '晚上') {\n return hour + 12;\n } else {\n // 'ä¸åˆ'\n return hour >= 11 ? hour : hour + 12;\n }\n },\n meridiem: function (hour, minute, isLower) {\n var hm = hour * 100 + minute;\n if (hm < 600) {\n return '凌晨';\n } else if (hm < 900) {\n return '早上';\n } else if (hm < 1130) {\n return '上åˆ';\n } else if (hm < 1230) {\n return 'ä¸åˆ';\n } else if (hm < 1800) {\n return '下åˆ';\n } else {\n return '晚上';\n }\n },\n calendar: {\n sameDay: '[今天]LT',\n nextDay: '[明天]LT',\n nextWeek: function (now) {\n if (now.week() !== this.week()) {\n return '[下]dddLT';\n } else {\n return '[本]dddLT';\n }\n },\n lastDay: '[昨天]LT',\n lastWeek: function (now) {\n if (this.week() !== now.week()) {\n return '[上]dddLT';\n } else {\n return '[本]dddLT';\n }\n },\n sameElse: 'L',\n },\n dayOfMonthOrdinalParse: /\\d{1,2}(æ—¥|月|周)/,\n ordinal: function (number, period) {\n switch (period) {\n case 'd':\n case 'D':\n case 'DDD':\n return number + 'æ—¥';\n case 'M':\n return number + '月';\n case 'w':\n case 'W':\n return number + '周';\n default:\n return number;\n }\n },\n relativeTime: {\n future: '%såŽ',\n past: '%så‰',\n s: 'å‡ ç§’',\n ss: '%d 秒',\n m: '1 分钟',\n mm: '%d 分钟',\n h: '1 å°æ—¶',\n hh: '%d å°æ—¶',\n d: '1 天',\n dd: '%d 天',\n w: '1 周',\n ww: '%d 周',\n M: '1 个月',\n MM: '%d 个月',\n y: '1 å¹´',\n yy: '%d å¹´',\n },\n week: {\n // GB/T 7408-1994《数æ®å…ƒå’Œäº¤æ¢æ ¼å¼Â·ä¿¡æ¯äº¤æ¢Â·æ—¥æœŸå’Œæ—¶é—´è¡¨ç¤ºæ³•ã€‹ä¸ŽISO 8601:1988ç‰æ•ˆ\n dow: 1, // Monday is the first day of the week.\n doy: 4, // The week that contains Jan 4th is the first week of the year.\n },\n });\n\n return zhCn;\n\n})));\n","//! moment.js locale configuration\n//! locale : Chinese (Hong Kong) [zh-hk]\n//! author : Ben : https://github.com/ben-lin\n//! author : Chris Lam : https://github.com/hehachris\n//! author : Konstantin : https://github.com/skfd\n//! author : Anthony : https://github.com/anthonylau\n\n;(function (global, factory) {\n typeof exports === 'object' && typeof module !== 'undefined'\n && typeof require === 'function' ? factory(require('../moment')) :\n typeof define === 'function' && define.amd ? define(['../moment'], factory) :\n factory(global.moment)\n}(this, (function (moment) { 'use strict';\n\n //! moment.js locale configuration\n\n var zhHk = moment.defineLocale('zh-hk', {\n months: '一月_二月_三月_四月_五月_å…月_七月_八月_ä¹æœˆ_å月_å一月_å二月'.split(\n '_'\n ),\n monthsShort: '1月_2月_3月_4月_5月_6月_7月_8月_9月_10月_11月_12月'.split(\n '_'\n ),\n weekdays: '星期日_星期一_星期二_星期三_星期四_星期五_星期å…'.split('_'),\n weekdaysShort: '週日_週一_週二_週三_週四_週五_週å…'.split('_'),\n weekdaysMin: 'æ—¥_一_二_三_å››_五_å…'.split('_'),\n longDateFormat: {\n LT: 'HH:mm',\n LTS: 'HH:mm:ss',\n L: 'YYYY/MM/DD',\n LL: 'YYYYå¹´M月Dæ—¥',\n LLL: 'YYYYå¹´M月Dæ—¥ HH:mm',\n LLLL: 'YYYYå¹´M月Dæ—¥dddd HH:mm',\n l: 'YYYY/M/D',\n ll: 'YYYYå¹´M月Dæ—¥',\n lll: 'YYYYå¹´M月Dæ—¥ HH:mm',\n llll: 'YYYYå¹´M月Dæ—¥dddd HH:mm',\n },\n meridiemParse: /凌晨|早上|上åˆ|ä¸åˆ|下åˆ|晚上/,\n meridiemHour: function (hour, meridiem) {\n if (hour === 12) {\n hour = 0;\n }\n if (meridiem === '凌晨' || meridiem === '早上' || meridiem === '上åˆ') {\n return hour;\n } else if (meridiem === 'ä¸åˆ') {\n return hour >= 11 ? hour : hour + 12;\n } else if (meridiem === '下åˆ' || meridiem === '晚上') {\n return hour + 12;\n }\n },\n meridiem: function (hour, minute, isLower) {\n var hm = hour * 100 + minute;\n if (hm < 600) {\n return '凌晨';\n } else if (hm < 900) {\n return '早上';\n } else if (hm < 1200) {\n return '上åˆ';\n } else if (hm === 1200) {\n return 'ä¸åˆ';\n } else if (hm < 1800) {\n return '下åˆ';\n } else {\n return '晚上';\n }\n },\n calendar: {\n sameDay: '[今天]LT',\n nextDay: '[明天]LT',\n nextWeek: '[下]ddddLT',\n lastDay: '[昨天]LT',\n lastWeek: '[上]ddddLT',\n sameElse: 'L',\n },\n dayOfMonthOrdinalParse: /\\d{1,2}(æ—¥|月|週)/,\n ordinal: function (number, period) {\n switch (period) {\n case 'd':\n case 'D':\n case 'DDD':\n return number + 'æ—¥';\n case 'M':\n return number + '月';\n case 'w':\n case 'W':\n return number + '週';\n default:\n return number;\n }\n },\n relativeTime: {\n future: '%s後',\n past: '%så‰',\n s: '幾秒',\n ss: '%d 秒',\n m: '1 分é˜',\n mm: '%d 分é˜',\n h: '1 å°æ™‚',\n hh: '%d å°æ™‚',\n d: '1 天',\n dd: '%d 天',\n M: '1 個月',\n MM: '%d 個月',\n y: '1 å¹´',\n yy: '%d å¹´',\n },\n });\n\n return zhHk;\n\n})));\n","//! moment.js locale configuration\n//! locale : Chinese (Macau) [zh-mo]\n//! author : Ben : https://github.com/ben-lin\n//! author : Chris Lam : https://github.com/hehachris\n//! author : Tan Yuanhong : https://github.com/le0tan\n\n;(function (global, factory) {\n typeof exports === 'object' && typeof module !== 'undefined'\n && typeof require === 'function' ? factory(require('../moment')) :\n typeof define === 'function' && define.amd ? define(['../moment'], factory) :\n factory(global.moment)\n}(this, (function (moment) { 'use strict';\n\n //! moment.js locale configuration\n\n var zhMo = moment.defineLocale('zh-mo', {\n months: '一月_二月_三月_四月_五月_å…月_七月_八月_ä¹æœˆ_å月_å一月_å二月'.split(\n '_'\n ),\n monthsShort: '1月_2月_3月_4月_5月_6月_7月_8月_9月_10月_11月_12月'.split(\n '_'\n ),\n weekdays: '星期日_星期一_星期二_星期三_星期四_星期五_星期å…'.split('_'),\n weekdaysShort: '週日_週一_週二_週三_週四_週五_週å…'.split('_'),\n weekdaysMin: 'æ—¥_一_二_三_å››_五_å…'.split('_'),\n longDateFormat: {\n LT: 'HH:mm',\n LTS: 'HH:mm:ss',\n L: 'DD/MM/YYYY',\n LL: 'YYYYå¹´M月Dæ—¥',\n LLL: 'YYYYå¹´M月Dæ—¥ HH:mm',\n LLLL: 'YYYYå¹´M月Dæ—¥dddd HH:mm',\n l: 'D/M/YYYY',\n ll: 'YYYYå¹´M月Dæ—¥',\n lll: 'YYYYå¹´M月Dæ—¥ HH:mm',\n llll: 'YYYYå¹´M月Dæ—¥dddd HH:mm',\n },\n meridiemParse: /凌晨|早上|上åˆ|ä¸åˆ|下åˆ|晚上/,\n meridiemHour: function (hour, meridiem) {\n if (hour === 12) {\n hour = 0;\n }\n if (meridiem === '凌晨' || meridiem === '早上' || meridiem === '上åˆ') {\n return hour;\n } else if (meridiem === 'ä¸åˆ') {\n return hour >= 11 ? hour : hour + 12;\n } else if (meridiem === '下åˆ' || meridiem === '晚上') {\n return hour + 12;\n }\n },\n meridiem: function (hour, minute, isLower) {\n var hm = hour * 100 + minute;\n if (hm < 600) {\n return '凌晨';\n } else if (hm < 900) {\n return '早上';\n } else if (hm < 1130) {\n return '上åˆ';\n } else if (hm < 1230) {\n return 'ä¸åˆ';\n } else if (hm < 1800) {\n return '下åˆ';\n } else {\n return '晚上';\n }\n },\n calendar: {\n sameDay: '[今天] LT',\n nextDay: '[明天] LT',\n nextWeek: '[下]dddd LT',\n lastDay: '[昨天] LT',\n lastWeek: '[上]dddd LT',\n sameElse: 'L',\n },\n dayOfMonthOrdinalParse: /\\d{1,2}(æ—¥|月|週)/,\n ordinal: function (number, period) {\n switch (period) {\n case 'd':\n case 'D':\n case 'DDD':\n return number + 'æ—¥';\n case 'M':\n return number + '月';\n case 'w':\n case 'W':\n return number + '週';\n default:\n return number;\n }\n },\n relativeTime: {\n future: '%så…§',\n past: '%så‰',\n s: '幾秒',\n ss: '%d 秒',\n m: '1 分é˜',\n mm: '%d 分é˜',\n h: '1 å°æ™‚',\n hh: '%d å°æ™‚',\n d: '1 天',\n dd: '%d 天',\n M: '1 個月',\n MM: '%d 個月',\n y: '1 å¹´',\n yy: '%d å¹´',\n },\n });\n\n return zhMo;\n\n})));\n","//! moment.js locale configuration\n//! locale : Chinese (Taiwan) [zh-tw]\n//! author : Ben : https://github.com/ben-lin\n//! author : Chris Lam : https://github.com/hehachris\n\n;(function (global, factory) {\n typeof exports === 'object' && typeof module !== 'undefined'\n && typeof require === 'function' ? factory(require('../moment')) :\n typeof define === 'function' && define.amd ? define(['../moment'], factory) :\n factory(global.moment)\n}(this, (function (moment) { 'use strict';\n\n //! moment.js locale configuration\n\n var zhTw = moment.defineLocale('zh-tw', {\n months: '一月_二月_三月_四月_五月_å…月_七月_八月_ä¹æœˆ_å月_å一月_å二月'.split(\n '_'\n ),\n monthsShort: '1月_2月_3月_4月_5月_6月_7月_8月_9月_10月_11月_12月'.split(\n '_'\n ),\n weekdays: '星期日_星期一_星期二_星期三_星期四_星期五_星期å…'.split('_'),\n weekdaysShort: '週日_週一_週二_週三_週四_週五_週å…'.split('_'),\n weekdaysMin: 'æ—¥_一_二_三_å››_五_å…'.split('_'),\n longDateFormat: {\n LT: 'HH:mm',\n LTS: 'HH:mm:ss',\n L: 'YYYY/MM/DD',\n LL: 'YYYYå¹´M月Dæ—¥',\n LLL: 'YYYYå¹´M月Dæ—¥ HH:mm',\n LLLL: 'YYYYå¹´M月Dæ—¥dddd HH:mm',\n l: 'YYYY/M/D',\n ll: 'YYYYå¹´M月Dæ—¥',\n lll: 'YYYYå¹´M月Dæ—¥ HH:mm',\n llll: 'YYYYå¹´M月Dæ—¥dddd HH:mm',\n },\n meridiemParse: /凌晨|早上|上åˆ|ä¸åˆ|下åˆ|晚上/,\n meridiemHour: function (hour, meridiem) {\n if (hour === 12) {\n hour = 0;\n }\n if (meridiem === '凌晨' || meridiem === '早上' || meridiem === '上åˆ') {\n return hour;\n } else if (meridiem === 'ä¸åˆ') {\n return hour >= 11 ? hour : hour + 12;\n } else if (meridiem === '下åˆ' || meridiem === '晚上') {\n return hour + 12;\n }\n },\n meridiem: function (hour, minute, isLower) {\n var hm = hour * 100 + minute;\n if (hm < 600) {\n return '凌晨';\n } else if (hm < 900) {\n return '早上';\n } else if (hm < 1130) {\n return '上åˆ';\n } else if (hm < 1230) {\n return 'ä¸åˆ';\n } else if (hm < 1800) {\n return '下åˆ';\n } else {\n return '晚上';\n }\n },\n calendar: {\n sameDay: '[今天] LT',\n nextDay: '[明天] LT',\n nextWeek: '[下]dddd LT',\n lastDay: '[昨天] LT',\n lastWeek: '[上]dddd LT',\n sameElse: 'L',\n },\n dayOfMonthOrdinalParse: /\\d{1,2}(æ—¥|月|週)/,\n ordinal: function (number, period) {\n switch (period) {\n case 'd':\n case 'D':\n case 'DDD':\n return number + 'æ—¥';\n case 'M':\n return number + '月';\n case 'w':\n case 'W':\n return number + '週';\n default:\n return number;\n }\n },\n relativeTime: {\n future: '%s後',\n past: '%så‰',\n s: '幾秒',\n ss: '%d 秒',\n m: '1 分é˜',\n mm: '%d 分é˜',\n h: '1 å°æ™‚',\n hh: '%d å°æ™‚',\n d: '1 天',\n dd: '%d 天',\n M: '1 個月',\n MM: '%d 個月',\n y: '1 å¹´',\n yy: '%d å¹´',\n },\n });\n\n return zhTw;\n\n})));\n","'use strict';\n\nrequire('core/main');","'use strict';\n\n// eslint-disable-next-line no-multi-assign\nwindow.jQuery = window.$ = require('jquery');\n\nvar processInclude = require('base:util');\n\n$(document).ready(function () {\n processInclude(require('base:components/cookie'));\n processInclude(require('./components/carousel'));\n processInclude(require('./components/consentTracking'));\n processInclude(require('./components/menu'));\n processInclude(require('./components/geoRedirectionBanner'));\n processInclude(require('./components/footer'));\n processInclude(require('./components/miniCart'));\n processInclude(require('./components/search'));\n processInclude(require('./components/dateTime'));\n processInclude(require('./components/tooltip'));\n processInclude(require('./components/clientSideValidation'));\n processInclude(require('./components/countrySelector'));\n processInclude(require('./experience/assets/einsteinCarousel'));\n processInclude(require('./experience/assets/pdwidget'));\n processInclude(require('./experience/layouts/carouselBanner'));\n processInclude(require('./product/quickView'));\n require('lazysizes');\n processInclude(require('./components/lazysizes'));\n try {\n processInclude(require('gtm:analytics/analytics'));\n } catch (err) {\n // plugin not in use\n }\n require('./search/search').swatchHover();\n});\n\nrequire('./components/spinner');\n\nrequire('popper.js');\nrequire('bootstrap/js/src/util');\nrequire('bootstrap/js/src/collapse');\nrequire('bootstrap/js/src/dropdown');\nrequire('bootstrap/js/src/modal');\nrequire('bootstrap/js/src/tab');\nrequire('bootstrap/js/src/tooltip');\n\nrequire('slick/slick');\n","'use strict';\n\n/**\n * Get cookie value by cookie name from browser\n * @param {string} cookieName - name of the cookie\n * @returns {string} cookie value of the found cookie name\n */\nfunction getCookie(cookieName) {\n var name = cookieName + '=';\n var decodedCookie = decodeURIComponent(document.cookie);\n var cookieArray = decodedCookie.split(';');\n for (var i = 0; i < cookieArray.length; i++) {\n var cookieItem = cookieArray[i];\n while (cookieItem.charAt(0) === ' ') {\n cookieItem = cookieItem.substring(1);\n }\n if (cookieItem.indexOf(name) === 0) {\n return cookieItem.substring(name.length, cookieItem.length);\n }\n }\n return '';\n}\n\nmodule.exports = function () {\n if ($('.valid-cookie-warning').length > 0) {\n var previousSessionID = window.localStorage.getItem('previousSid');\n var currentSessionID = getCookie('sid');\n if (!previousSessionID && currentSessionID) {\n // When a user first time visit the home page,\n // set the previousSessionID to currentSessionID\n // and Show the cookie alert\n previousSessionID = currentSessionID;\n window.localStorage.setItem('previousSid', previousSessionID);\n $('.cookie-warning-messaging').show();\n } else if (previousSessionID && previousSessionID === currentSessionID) {\n // Hide the cookie alert if user is in the same session\n $('.cookie-warning-messaging').hide();\n } else {\n // Clear the previousSessionID from localStorage\n // when user session is changed or expired\n window.localStorage.removeItem('previousSid');\n }\n }\n};\n","module.exports = function () {\n const $consentTracker = $('.tracking-consent');\n if ($consentTracker.length) {\n // Initialize toggle depending on whether or not the user has consented\n $('#functional-cookies-toggle').attr('checked', !$consentTracker.hasClass('declined'));\n\n\n $('.consent-tracking_close').on('click', function () {\n $.ajax({\n url: $(this).data('url'),\n type: 'get',\n dataType: 'json',\n success: function () {\n $('.consent-tracking').remove();\n },\n error: function () {\n $('.consent-tracking').remove();\n }\n });\n });\n\n $('#functional-cookies-toggle').on('change', function () {\n $('.modal').spinner().start();\n\n $.ajax({\n url: this.checked ? $consentTracker.data('accept') : $consentTracker.data('reject'),\n type: 'get',\n dataType: 'json',\n success: function () {\n $('.consent-tracking').remove();\n $.spinner().stop();\n },\n error: function () {\n $.spinner().stop();\n }\n });\n });\n }\n};\n","'use strict';\n\nconst toggleMobileNavigation = function () {\n $('body').toggleClass('mobile-nav-open');\n $('.modal-background').toggleClass('open');\n};\n\n// calculate the top padding for the main section\nvar calculateMainSectionPadding = function () {\n if ($('.site-header_slim .navbar > div').length <= 0) { \n var preheaderHeight = $('.preheader').height() || 0;\n var storeSwitcherHeight = $('.store-switcher-wrapper').outerHeight() || 0;\n var nonStickyHeaderHeight = $('.non-sticky-header').height() || 0;\n var stickyHeaderHeight = $('.sticky-header').height() || 0;\n var permanentBannerHeight = $('.permanent-header-banner').outerHeight() || 0;\n $('.main-content').css('padding-top', preheaderHeight + storeSwitcherHeight + nonStickyHeaderHeight + stickyHeaderHeight + permanentBannerHeight);\n }\n};\n\nmodule.exports = function () {\n $(window).resize(function () {\n calculateMainSectionPadding();\n });\n\n var headerBannerStatus = window.sessionStorage.getItem('hide_header_banner');\n $('.preheader .promo-banner_close').on('click', function () {\n $('.preheader').addClass('d-none').parents('body').removeClass('banner-promo_active');\n window.sessionStorage.setItem('hide_header_banner', '1');\n // calculate the top padding for the main section\n calculateMainSectionPadding();\n });\n\n $(window).on('load', function () {\n if (!headerBannerStatus || headerBannerStatus < 0) {\n $('.preheader').removeClass('d-none').parents('body').addClass('banner-promo_active');\n // calculate the top padding for the main section\n calculateMainSectionPadding();\n }\n });\n\n $('.dropdown a.active').each(function () {\n const $parent = $(this).parents('.dropdown');\n $parent.find('.dropdown-toggle').text($(this).text());\n });\n\n $('.mega-menu__item')\n .on('mouseenter', function () {\n $(this).addClass('mega-menu_open');\n $(this)\n .find('.mega-menu__sub')\n .attr('aria-expanded', true);\n })\n .on('mouseleave', function () {\n $(this).removeClass('mega-menu_open');\n $(this)\n .find('.mega-menu__sub')\n .attr('aria-expanded', false);\n });\n\n $('body').on('click', '.modal-background', function () {\n if ($('body').hasClass('mobile-nav-open')) {\n toggleMobileNavigation();\n }\n });\n\n $('[data-toggle=\"slide-collapse\"]').on('click', function () {\n if (!$('body').hasClass('mobile-nav-open')) {\n $(window).scrollTop(0);\n }\n\n toggleMobileNavigation();\n });\n\n $('.mobile-nav-forward').on('click', function () {\n $(this)\n .siblings('.level-2, .level-3')\n .addClass('active');\n });\n\n $('.mobile-nav-previous').on('click', function () {\n $(this)\n .closest('.level-2, .level-3')\n .removeClass('active');\n });\n\n $('body').on('calculatemainsection', calculateMainSectionPadding);\n};\n\nconst siteHeaderHeight = $('.site-header').height();\nconst $body = $('body');\nif ($body.hasClass('permanent-sticky')) {\n $(window).on('load', function () {\n calculateMainSectionPadding();\n });\n} else {\n $(window).on('load', function () {\n calculateMainSectionPadding();\n\n $(window).on('scroll', function () {\n if ($(this).scrollTop() > siteHeaderHeight) {\n $body.addClass('minify-header');\n } else {\n $body.removeClass('minify-header');\n }\n calculateMainSectionPadding();\n });\n });\n}\n$(window).trigger('scroll');\n","/**\n * Display the selected country from the dropdown\n * @param {element} storeSwitcherDropdown - dropdown from where we need to fetch selected item\n * @returns {void}\n */\nfunction displaySelectedCountry(storeSwitcherDropdown) {\n const selectedCountry = $(storeSwitcherDropdown).find('li.selected');\n $(selectedCountry).addClass('d-none');\n $(storeSwitcherDropdown).find('.country-selector_button .current-country').html($(selectedCountry).find('a').html());\n}\n\nmodule.exports = function () {\n $(window).on('load', function () {\n // calculate the top padding for the main section\n $('body').trigger('calculatemainsection');\n });\n if ($('.store-switcher-wrapper').length) {\n\n const storeSwitcherDropdown = $('.store-switcher-storeswitcher .dropdown');\n var isStoreSwitcherOkBtnClicked = false;\n\n // dropdown expand/collapse\n var countrySelectorBtn = $(storeSwitcherDropdown).find('.country-selector_button');\n $(countrySelectorBtn).find('.far').on('click', function (e) {\n $(countrySelectorBtn).trigger('click'); \n });\n $(countrySelectorBtn).on('click', function (e) {\n if (e.target !== this) {\n return;\n }\n\n if ($(this).hasClass('collapsed')) {\n $(this).next('.dropdown-menu').addClass('show');\n $(this).removeClass('collapsed').addClass('expanded');\n } else {\n $(this).next('.dropdown-menu').removeClass('show');\n $(this).removeClass('expanded').addClass('collapsed');\n }\n });\n\n // Dropdown item click\n $(storeSwitcherDropdown).find('a').on('click', function (e) {\n e.preventDefault();\n if (isStoreSwitcherOkBtnClicked) {\n window.isDropDownItemClicked = false;\n } else {\n $(storeSwitcherDropdown).find('li.selected').removeClass('selected d-none');\n $(storeSwitcherDropdown).find('.country-selector_button').removeClass('expanded').addClass('collapsed');\n $(storeSwitcherDropdown).find('.dropdown-menu').removeClass('show');\n $(this).parent('li').addClass('selected');\n displaySelectedCountry(storeSwitcherDropdown);\n window.isDropDownItemClicked = true;\n }\n });\n\n // Bind Ok button\n $('.store-switcher-ok-btn').on('click', function () {\n const selectedCountryAnchor = $(storeSwitcherDropdown).find('li.selected a');\n isStoreSwitcherOkBtnClicked = true;\n sessionStorage.setItem('hideRedirectionBanner', true);\n $(selectedCountryAnchor).trigger('click');\n });\n\n // Bind close\n $('.store-switcher-close').on('click', function () {\n sessionStorage.setItem('hideRedirectionBanner', true);\n $('.store-switcher-wrapper').addClass('d-none');\n $('body').trigger('calculatemainsection');\n });\n\n if (!sessionStorage.getItem('hideRedirectionBanner')) {\n $('.store-switcher-wrapper').removeClass('d-none');\n $('body').trigger('calculatemainsection');\n }\n }\n};\n","'use strict';\n\nvar base = require('base:components/footer');\nvar clientSideValidation = require('./clientSideValidation');\n\n/**\n * Toggle the back to top button\n */\nfunction toggleScrollToTop() {\n var currentPosition = $(window).scrollTop();\n if (currentPosition > 110) {\n $('.back-to-top').addClass('show').attr('aria-hidden', false).prop('disabled', false);\n } else {\n $('.back-to-top').removeClass('show').attr('aria-hidden', true).prop('disabled', true);\n }\n}\n\nfunction validateForm(event) {\n var valid = true;\n if (this.checkValidity && !this.checkValidity()) {\n // safari\n valid = false;\n if (event) {\n event.preventDefault();\n event.stopPropagation();\n event.stopImmediatePropagation();\n }\n $(this).find('input, select').each(function () {\n if (!this.validity.valid) {\n $(this).trigger('invalid', this.validity);\n }\n });\n }\n return valid;\n}\n\nmodule.exports = {\n base: base,\n backToTop: function () {\n if ($('.back-to-top').length) {\n $(window).on('scroll', toggleScrollToTop);\n toggleScrollToTop();\n }\n },\n newsletterfooter: function () {\n $('#validate-privacypolicy').on('change', function (e) {\n if ($(this).is(':checked')) {\n $(this).parent().find('.validate-custom-checkbox').html('');\n }\n });\n\n $('.subscribe-email-footer').on('click', function (e) {\n e.preventDefault();\n\n var isvalid = validateForm.call($(this).parents('.email-signup')[0], e);\n if (isvalid) {\n var $button = $('.subscribe-email-footer.btn');\n var url = $button.data('href');\n var emailId = $('input[name=hpEmailSignUp]').val();\n $.spinner().start();\n $button.attr('disabled', true);\n\n if (grecaptcha) {\n grecaptcha.ready(function() {\n grecaptcha.execute(window.app.preferences.reCaptchaSiteKey, { action: 'submit' }).then(function(token) {\n $.ajax({\n url: url,\n type: 'post',\n dataType: 'json',\n data: {\n emailId: emailId,\n reCaptchaToken: token\n },\n success: function (data) {\n if (data.success) {\n $('.email-signup .warn').html(data.msg).removeClass('warn-danger warn-success d-none').addClass('warn-success');\n $button.attr('disabled', true);\n dataLayer = dataLayer || [];\n dataLayer.push({\n event: 'clickFooterNewsletter',\n result: 1\n });\n } else {\n $('.email-signup .warn').html(data.msg).removeClass('warn-danger warn-success d-none').addClass('warn-danger');\n $button.removeAttr('disabled');\n dataLayer = dataLayer || [];\n dataLayer.push({\n event: 'clickFooterNewsletter',\n result: 0\n });\n }\n $.spinner().stop();\n return false;\n },\n error: function (err) {\n $('.email-signup .warn').html(err.msg).removeClass('warn-danger warn-success d-none').addClass('warn-danger');\n $button.removeAttr('disabled');\n dataLayer = dataLayer || [];\n dataLayer.push({\n event: 'clickFooterNewsletter',\n result: 0\n });\n $.spinner().stop();\n return false;\n }\n });\n });\n });\n }\n $button.removeAttr('disabled');\n return false;\n }\n });\n }\n};\n","'use strict';\n\nvar scrollAnimate = require('./scrollAnimate');\n\n/**\n * appends params to a url\n * @param {string} data - data returned from the server's ajax call\n * @param {Object} button - button that was clicked for email sign-up\n */\nfunction displayMessage(data, button) {\n $.spinner().stop();\n var status;\n if (data.success) {\n status = 'alert-success';\n } else {\n status = 'alert-danger';\n }\n\n if ($('.email-signup-message').length === 0) {\n $('body').append(\n '<div class=\"email-signup-message\"></div>'\n );\n }\n $('.email-signup-message')\n .append('<div class=\"email-signup-alert text-center ' + status + '\">' + data.msg + '</div>');\n\n setTimeout(function () {\n $('.email-signup-message').remove();\n button.removeAttr('disabled');\n }, 3000);\n}\n\nmodule.exports = function () {\n $('.back-to-top').click(function () {\n scrollAnimate();\n });\n\n $('.subscribe-email').on('click', function (e) {\n e.preventDefault();\n var url = $(this).data('href');\n var button = $(this);\n var emailId = $('input[name=hpEmailSignUp]').val();\n $.spinner().start();\n $(this).attr('disabled', true);\n $.ajax({\n url: url,\n type: 'post',\n dataType: 'json',\n data: {\n emailId: emailId\n },\n success: function (data) {\n displayMessage(data, button);\n },\n error: function (err) {\n displayMessage(err, button);\n }\n });\n });\n};\n","'use strict';\n\n/**\n * Validate whole form. Requires `this` to be set to form object\n * @param {jQuery.event} event - Event to be canceled if form is invalid.\n * @returns {boolean} - Flag to indicate if form is valid\n */\nfunction validateForm(event) {\n var valid = true;\n if (this.checkValidity && !this.checkValidity()) {\n // safari\n valid = false;\n if (event) {\n event.preventDefault();\n event.stopPropagation();\n event.stopImmediatePropagation();\n }\n $(this).find('input, select').each(function () {\n if (!this.validity.valid) {\n $(this).trigger('invalid', this.validity);\n }\n });\n }\n return valid;\n}\n\n/**\n * Remove all validation. Should be called every time before revalidating form\n * @param {element} form - Form to be cleared\n * @returns {void}\n */\nfunction clearForm(form) {\n $(form).find('.form-control.is-invalid').removeClass('is-invalid');\n}\n\nmodule.exports = {\n invalid: function () {\n $('form input, form select').on('invalid', function (e) {\n e.preventDefault();\n this.setCustomValidity('');\n if (!this.validity.valid) {\n var validationMessage = this.validationMessage;\n $(this).addClass('is-invalid');\n if (this.validity.patternMismatch && $(this).data('pattern-mismatch')) {\n validationMessage = $(this).data('pattern-mismatch');\n }\n if ((this.validity.rangeOverflow || this.validity.rangeUnderflow)\n && $(this).data('range-error')) {\n validationMessage = $(this).data('range-error');\n }\n if ((this.validity.tooLong || this.validity.tooShort)\n && $(this).data('range-error')) {\n validationMessage = $(this).data('range-error');\n }\n if (this.validity.valueMissing && $(this).data('missing-error')) {\n validationMessage = $(this).data('missing-error');\n }\n $(this).parents('.form-group').find('.invalid-feedback')\n .text(validationMessage);\n }\n });\n },\n\n submit: function () {\n $('form').on('submit', function (e) {\n return validateForm.call(this, e);\n });\n },\n\n buttonClick: function () {\n $('form button[type=\"submit\"], form input[type=\"submit\"]').on('click', function () {\n // clear all errors when trying to submit the form\n clearForm($(this).parents('form'));\n });\n },\n\n functions: {\n validateForm: function (form, event) {\n validateForm.call($(form), event || null);\n },\n clearForm: clearForm\n }\n};\n","'use strict';\n\nlet cart = require('~/cart/cart');\n\nlet updateMiniCart = true;\nlet addedToCart = false;\n\n/**\n * appends params to a url\n * @param {string} data - data returned from the server's ajax call\n */\nfunction displayMessageAndRemoveFromCart(data) {\n $.spinner().stop();\n var status = data.success ? 'alert-success' : 'alert-danger';\n\n if ($('.add-to-wishlist-messages').length === 0) {\n $('body').append('<div class=\"add-to-wishlist-messages \"></div>');\n }\n $('.add-to-wishlist-messages')\n .append('<div class=\"add-to-wishlist-alert text-center ' + status + '\">' + data.msg + '</div>');\n\n setTimeout(function () {\n $('.add-to-wishlist-messages').remove();\n }, 1500);\n var $targetElement = $('a[data-pid=\"' + data.pid + '\"]').closest('.product-info').find('.remove-product');\n var itemToMove = {\n actionUrl: $targetElement.data('action'),\n productID: $targetElement.data('pid'),\n productName: $targetElement.data('name'),\n uuid: $targetElement.data('uuid')\n };\n $('body').trigger('afterRemoveFromCart', itemToMove);\n}\n\nmodule.exports = function () {\n cart();\n\n $('body').on('click', '.product-move .move', function (e) {\n e.preventDefault();\n var url = $(this).attr('href');\n var pid = $(this).data('pid');\n var optionId = $(this).closest('.product-info').find('.lineItem-options-values').data('option-id');\n var optionVal = $(this).closest('.product-info').find('.lineItem-options-values').data('value-id');\n optionId = optionId || null;\n optionVal = optionVal || null;\n if (!url || !pid) {\n return;\n }\n\n $.spinner().start();\n $.ajax({\n url: url,\n type: 'post',\n dataType: 'json',\n data: {\n pid: pid,\n optionId: optionId,\n optionVal: optionVal\n },\n success: function (data) {\n displayMessageAndRemoveFromCart(data);\n },\n error: function (err) {\n displayMessageAndRemoveFromCart(err);\n }\n });\n });\n\n $('.minicart').on('count:update', function (event, count) {\n if (count && !Number.isNaN(count.quantityTotal)) {\n $('.minicart .minicart-quantity').text(count.quantityTotal);\n $('.minicart .minicart-link').attr({\n 'aria-label': count.minicartCountOfItems,\n title: count.minicartCountOfItems\n });\n }\n });\n\n $('.minicart').on('touchstart click', function (e, shouldOpen = true) {\n var url = $('.minicart').data('action-url');\n\n if (shouldOpen) {\n e.preventDefault();\n $('.minicart-container').addClass('open');\n }\n\n if (!updateMiniCart) return;\n\n $('.minicart-container')\n .spinner()\n .start();\n\n $.get(url, function (data) {\n $('.minicart-container').empty();\n $('.minicart-container').append(data);\n\n updateMiniCart = false;\n\n $.spinner().stop();\n });\n\n if (addedToCart) {\n setTimeout(function () {\n $('.minicart-container').removeClass('open');\n addedToCart = false;\n }, 3000);\n }\n });\n\n $('body').on('touchstart click', function (e) {\n var $button = $('.minicart');\n var $container = $('.minicart-container');\n var $miniCartErrorContainer = $('.minicart-error');\n if (\n !$button.is(e.target)\n && $button.has(e.target).length === 0\n && !$container.is(e.target)\n && $container.has(e.target).length === 0\n && $miniCartErrorContainer.has(e.target).length === 0\n ) {\n $container.removeClass('open');\n }\n });\n\n $('body').on('touchstart click', '.btn-close', function () {\n $('.minicart-container').removeClass('open');\n });\n\n $('body').on('change', '.minicart .quantity', function () {\n if ($(this).parents('.bonus-product-line-item').length && $('.cart-page').length) {\n window.location.reload();\n }\n });\n $('body').on('product:afterAddToCart', function () {\n updateMiniCart = true;\n addedToCart = true;\n\n $('.minicart').trigger('click');\n });\n $('body').on('cart:update', function () {\n var params = [];\n if ($('.cart-page').length > 0) {\n params.push(false);\n } else {\n params.push(true);\n }\n\n updateMiniCart = true;\n $('.minicart').trigger('click', params);\n });\n $('body').on('click', '#danger-label-close', function () {\n $(this).closest('.alert-dismissible').removeClass('show').addClass('d-none');\n });\n};\n","'use strict';\n\nconst base = require('~/product/base');\nconst focusHelper = require('base:components/focus');\n\n/**\n * appends params to a url\n * @param {string} url - Original url\n * @param {Object} params - Parameters to append\n * @returns {string} result url with appended parameters\n */\nfunction appendToUrl(url, params) {\n var newUrl = url;\n newUrl\n += (newUrl.indexOf('?') !== -1 ? '&' : '?')\n + Object.keys(params)\n .map(function (key) {\n return key + '=' + encodeURIComponent(params[key]);\n })\n .join('&');\n\n return newUrl;\n}\n\n/**\n * Checks whether the basket is valid. if invalid displays error message and disables\n * checkout button\n * @param {Object} data - AJAX response from the server\n */\nfunction validateBasket(data) {\n if (data.valid.error) {\n if (data.valid.message) {\n var errorHtml = '<div class=\"alert alert-danger alert-dismissible valid-cart-error '\n + 'fade show\" role=\"alert\">'\n + '<button type=\"button\" class=\"close\" data-dismiss=\"alert\" aria-label=\"Close\">'\n + '<span aria-hidden=\"true\">×</span>'\n + '</button>'\n + data.valid.message\n + '</div>';\n\n $('.cart-error').append(errorHtml);\n } else {\n $('.cart')\n .empty()\n .append(\n '<div class=\"row\"> '\n + '<div class=\"col-12 text-center\"> '\n + '<h1>'\n + data.resources.emptyCartMsg\n + '</h1> '\n + '</div> '\n + '</div>'\n );\n $('.number-of-items')\n .empty()\n .append(data.resources.numberOfItems);\n $('.minicart-quantity')\n .empty()\n .append(data.numItems);\n $('.minicart-link').attr({\n 'aria-label': data.resources.minicartCountOfItems,\n title: data.resources.minicartCountOfItems\n });\n $('.minicart .popover').empty();\n $('.minicart .popover').removeClass('show');\n }\n\n $('.checkout-btn').addClass('disabled');\n } else {\n $('.checkout-btn').removeClass('disabled');\n }\n}\n\n/**\n * re-renders the order totals and the number of items in the cart\n * @param {Object} data - AJAX response from the server\n */\nfunction updateCartTotals(data) {\n $('.number-of-items')\n .empty()\n .append(data.resources.numberOfItems);\n $('.shipping-cost')\n .empty()\n .append(data.totals.totalShippingCost);\n $('.tax-total')\n .empty()\n .append(data.totals.totalTax);\n $('.grand-total')\n .empty()\n .append(data.totals.grandTotal);\n $('.sub-total')\n .empty()\n .append(data.totals.subTotal);\n $('.minicart-quantity')\n .empty()\n .append(data.numItems);\n $('.minicart-link').attr({\n 'aria-label': data.resources.minicartCountOfItems,\n title: data.resources.minicartCountOfItems\n });\n if (data.totals.orderLevelDiscountTotal.value > 0) {\n $('.order-discount').removeClass('d-none');\n $('.order-discount-total')\n .empty()\n .append('- ' + data.totals.orderLevelDiscountTotal.formatted);\n } else {\n $('.order-discount').addClass('d-none');\n }\n\n if (data.totals.shippingLevelDiscountTotal.value > 0) {\n $('.shipping-discount').removeClass('d-none');\n $('.shipping-discount-total')\n .empty()\n .append('- ' + data.totals.shippingLevelDiscountTotal.formatted);\n } else {\n $('.shipping-discount').addClass('d-none');\n }\n\n data.items.forEach(function (item) {\n $('.item-' + item.UUID)\n .empty()\n .append(item.renderedPromotions);\n $('.item-total-' + item.UUID)\n .empty()\n .append(item.priceTotal.renderedPrice);\n });\n}\n\n/**\n * re-renders the order totals and the number of items in the cart\n * @param {Object} message - Error message to display\n */\nfunction createErrorNotification(message) {\n var errorHtml = '<div class=\"alert alert-danger alert-dismissible valid-cart-error '\n + 'fade show\" role=\"alert\">'\n + '<button type=\"button\" class=\"close\" data-dismiss=\"alert\" aria-label=\"Close\">'\n + '<span aria-hidden=\"true\">×</span>'\n + '</button>'\n + message\n + '</div>';\n\n $('.cart-error').append(errorHtml);\n}\n\n/**\n * re-renders the approaching discount messages\n * @param {Object} approachingDiscounts - updated approaching discounts for the cart\n */\nfunction updateApproachingDiscounts(approachingDiscounts) {\n var html = '';\n $('.approaching-discounts').empty();\n if (approachingDiscounts.length > 0) {\n approachingDiscounts.forEach(function (item) {\n html += '<div class=\"single-approaching-discount text-center\">' + item.discountMsg + '</div>';\n });\n }\n $('.approaching-discounts').append(html);\n}\n\n/**\n * Updates the availability of a product line item\n * @param {Object} data - AJAX response from the server\n * @param {string} uuid - The uuid of the product line item to update\n */\nfunction updateAvailability(data, uuid) {\n var lineItem;\n var messages = '';\n\n for (var i = 0; i < data.items.length; i++) {\n if (data.items[i].UUID === uuid) {\n lineItem = data.items[i];\n break;\n }\n }\n\n $('.availability-' + lineItem.UUID).empty();\n\n if (lineItem.availability) {\n if (lineItem.availability.messages) {\n lineItem.availability.messages.forEach(function (message) {\n var className = message.replace(/\\s/g, '-').toLowerCase();\n if (message === window.app.preferences.inStockLabel) {\n className += ' in-stock';\n }\n messages += '<div class=\"line-item-availability-status ' + className + '\">' + message + '</div>';\n });\n }\n\n if (lineItem.availability.inStockDate) {\n messages\n += '<div class=\"line-item-availability-status line-item-instock-date\">' + lineItem.availability.inStockDate + '</div>';\n }\n }\n\n $('.availability-' + lineItem.UUID).html(messages);\n}\n\n/**\n * Updates details of a product line item\n * @param {Object} data - AJAX response from the server\n * @param {string} uuid - The uuid of the product line item to update\n */\nfunction updateProductDetails(data, uuid) {\n var lineItem = data.cartModel.items.find(function (item) {\n return item.UUID === uuid;\n });\n\n if (lineItem.variationAttributes) {\n var colorAttr = lineItem.variationAttributes.find(function (attr) {\n return attr.attributeId === 'color';\n });\n\n if (colorAttr) {\n var colorSelector = '.Color-' + uuid + ' .line-item-attribute-value';\n $(colorSelector).text(colorAttr.displayValue);\n }\n\n var sizeAttr = lineItem.variationAttributes.find(function (attr) {\n return attr.attributeId === 'size';\n });\n\n if (sizeAttr) {\n var sizeSelector = '.Size-' + uuid + ' .line-item-attribute-value';\n $(sizeSelector).text(sizeAttr.displayValue);\n }\n\n var imageSelector = '.product-info.uuid-' + uuid + ' .item-image img';\n $(imageSelector).attr('src', lineItem.images.small[0].url);\n $(imageSelector).attr('alt', lineItem.images.small[0].alt);\n $(imageSelector).attr('title', lineItem.images.small[0].title);\n }\n\n if (lineItem.options && lineItem.options.length) {\n var option = lineItem.options[0];\n var optSelector = '.lineItem-options-values[data-option-id=\"' + option.optionId + '\"]';\n $(optSelector).data('value-id', option.selectedValueId);\n $(optSelector + ' .line-item-attributes').text(option.displayName);\n }\n\n var qtySelector = '.quantity[data-uuid=\"' + uuid + '\"]';\n $(qtySelector).find('.qty-card-quantity-count').text(lineItem.quantity);\n $(qtySelector).data('pid', data.newProductId);\n\n $('.remove-product[data-uuid=\"' + uuid + '\"]').data('pid', data.newProductId);\n\n var priceSelector = '.line-item-price-' + uuid + ' .sales .value';\n $(priceSelector).text(lineItem.price.sales.formatted);\n $(priceSelector).attr('content', lineItem.price.sales.decimalPrice);\n\n if (lineItem.price.list) {\n var listPriceSelector = '.line-item-price-' + uuid + ' .list .value';\n $(listPriceSelector).text(lineItem.price.list.formatted);\n $(listPriceSelector).attr('content', lineItem.price.list.decimalPrice);\n }\n}\n\n/**\n * Generates the modal window on the first call.\n *\n */\nfunction getModalHtmlElement() {\n if ($('#editProductModal').length !== 0) {\n $('#editProductModal').remove();\n }\n var htmlString = '<!-- Modal -->'\n + '<div class=\"modal fade\" id=\"editProductModal\" tabindex=\"-1\" role=\"dialog\">'\n + '<span class=\"enter-message sr-only\"></span>'\n + '<div class=\"modal-dialog quick-view-dialog modal-xl\">'\n + '<!-- Modal content-->'\n + '<div class=\"modal-content\">'\n + '<div class=\"modal-header\">'\n + ' <button type=\"button\" class=\"close pull-right\" data-dismiss=\"modal\">'\n + ' <span aria-hidden=\"true\">×</span>'\n + ' <span class=\"sr-only\"> </span>'\n + ' </button>'\n + '</div>'\n + '<div class=\"modal-body\"></div>'\n + '<div class=\"modal-footer\"></div>'\n + '</div>'\n + '</div>'\n + '</div>';\n $('body').append(htmlString);\n}\n\n/**\n * Parses the html for a modal window\n * @param {string} html - representing the body and footer of the modal window\n *\n * @return {Object} - Object with properties body and footer.\n */\nfunction parseHtml(html) {\n var $html = $('<div>').append($.parseHTML(html));\n\n var body = $html.find('.product-quickview');\n var footer = $html.find('.modal-footer').children();\n\n return { body: body, footer: footer };\n}\n\n/**\n * replaces the content in the modal window for product variation to be edited.\n * @param {string} editProductUrl - url to be used to retrieve a new product model\n */\nfunction fillModalElement(editProductUrl) {\n $('.modal-body')\n .spinner()\n .start();\n $.ajax({\n url: editProductUrl,\n method: 'GET',\n dataType: 'json',\n success: function (data) {\n var parsedHtml = parseHtml(data.renderedTemplate);\n\n $('#editProductModal .modal-body').empty();\n $('#editProductModal .modal-body').html(parsedHtml.body);\n $('#editProductModal .modal-footer').html(parsedHtml.footer);\n $('#editProductModal .modal-header .close .sr-only').text(data.closeButtonText);\n $('#editProductModal .enter-message').text(data.enterDialogMessage);\n $('#editProductModal').modal('show');\n\n $('body').trigger('editproductmodal:ready');\n $.spinner().stop();\n },\n error: function () {\n $.spinner().stop();\n }\n });\n}\n\n/**\n * Removes a product\n * @param {string} actionUrl - url to be used to remove product\n * @param {string} productID - pid\n * @param {string} uuid - uuid\n */\nfunction removeProduct(actionUrl, productID, uuid) {\n var url = actionUrl;\n var urlParams = {\n pid: productID,\n uuid: uuid\n };\n\n url = appendToUrl(url, urlParams);\n\n $.spinner().start();\n $.ajax({\n url: url,\n type: 'get',\n dataType: 'json',\n success: function (data) {\n if (data.basket.items.length === 0) {\n $('.cart')\n .empty()\n .append(\n '<div class=\"row\"> '\n + '<div class=\"col-12 text-center\"> '\n + '<h1>'\n + data.basket.resources.emptyCartMsg\n + '</h1> '\n + '</div> '\n + '</div>'\n );\n $('.number-of-items')\n .empty()\n .append(data.basket.resources.numberOfItems);\n $('.minicart-quantity')\n .empty()\n .append(data.basket.numItems);\n $('.minicart-link').attr({\n 'aria-label': data.basket.resources.minicartCountOfItems,\n title: data.basket.resources.minicartCountOfItems\n });\n } else {\n if (data.toBeDeletedUUIDs && data.toBeDeletedUUIDs.length > 0) {\n for (var i = 0; i < data.toBeDeletedUUIDs.length; i++) {\n $('.uuid-' + data.toBeDeletedUUIDs[i]).remove();\n }\n }\n $('.uuid-' + uuid).remove();\n if (!data.basket.hasBonusProduct) {\n $('.bonus-product').remove();\n }\n $('.coupons-and-promos')\n .empty()\n .append(data.basket.totals.discountsHtml);\n updateCartTotals(data.basket);\n updateApproachingDiscounts(data.basket.approachingDiscounts);\n $('body').trigger('setShippingMethodSelection', data.basket);\n validateBasket(data.basket);\n }\n\n $('body').trigger('cart:update');\n\n $.spinner().stop();\n },\n error: function (err) {\n if (err.responseJSON.redirectUrl) {\n window.location.href = err.responseJSON.redirectUrl;\n } else {\n createErrorNotification(err.responseJSON.errorMessage);\n $.spinner().stop();\n }\n }\n });\n}\n\nmodule.exports = function () {\n $('body').on('click', '.remove-product', function (e) {\n e.preventDefault();\n\n var actionUrl = $(this).data('action');\n var productID = $(this).data('pid');\n var uuid = $(this).data('uuid');\n removeProduct(actionUrl, productID, uuid);\n });\n\n $('body').on('afterRemoveFromCart', function (e, data) {\n e.preventDefault();\n removeProduct(data.actionUrl, data.productID, data.uuid);\n });\n\n $('.optional-promo').click(function (e) {\n e.preventDefault();\n $(this).toggleClass('collapsed');\n $('.promo-code-form').toggle();\n });\n\n /**\n * Generate HTML for a bonus product line item.\n * @param {Object} item - Bonus product item data\n * @returns {string} - Generated HTML string for the bonus product\n */\n function generateBonusProductHtml(item) {\n return `\n <div class=\"product-info bonus-product-line-item uuid-${item.UUID} p-2 p-md-4\">\n <div class=\"row \">\n <div class=\"col-12 col-md-7 product-card-header\">\n <div class=\"d-flex flex-row\">\n <div class=\"item-image\">\n <a href=\"${item.url}\">\n <img class=\"product-image\" src=\"${item.images.small[0].url}\" alt=\"${item.images.small[0].alt}\" title=\"${item.images.small[0].title}\">\n </a>\n </div>\n <div class=\"product-details\">\n <div>Bonus Product</div>\n\n <div class=\"line-item-header\">\n <div class=\"line-item-name\">\n <a href=\"${item.url}\" class=\"d-inline-block text-reset text-truncate\">${item.productName}</a>\n </div>\n </div>\n\n <div class=\"item-attributes d-flex flex-column\">\n <div class=\"line-item-attributes Color-${item.UUID}\">\n <span class=\"font-weight-bold\">Color</span>:\n <span class=\"line-item-attribute-value\">${item.variationAttributes[0].displayValue}</span>\n </div>\n\n <div class=\"line-item-quanity-info quantity\" data-uuid=\"${item.UUID}\" data-pid=\"${item.id}\">\n <span class=\"qty-card-quantity-label\">Quantity</span>:\n <span class=\"qty-card-quantity-count\">${item.quantity}</span>\n </div>\n\n <div class=\"line-item-availability availability-${item.UUID}\">\n <div class=\"line-item-availability-status in-stock in-stock\">In Stock</div>\n </div>\n </div>\n </div>\n </div>\n </div>\n\n <div class=\"col-12 col-md-2 d-flex flex-column justify-content-between align-items-end product-card-footer\">\n <div class=\"d-md-block\"></div>\n <div class=\"w-50 w-md-75 mb-2 quantity-form\"></div>\n </div>\n <div class=\"col-12 col-md-3 d-flex flex-column justify-content-between align-items-end product-card-footer\">\n <div class=\"d-none d-md-block\"></div>\n <div></div>\n <div class=\"d-block d-md-none\"></div>\n </div>\n </div>\n </div>`;\n }\n /**\n * Updates bonus products in the cart based on AJAX response.\n * @param {Object} data - AJAX response from the server\n */\n function updateBonusProducts(data) {\n const currentBonusProducts = $('.cart-products .bonus-product-line-item');\n const updatedBonusUUIDs = [];\n \n if (data.hasBonusProduct) {\n // Loop through the items and check for bonus products\n data.items.forEach(function (item) {\n if (item.isBonusProductLineItem) {\n const bonusProductHtml = generateBonusProductHtml(item);\n const $bonusProduct = $('.uuid-' + item.UUID);\n \n // Track the UUIDs of the bonus products in the updated data\n updatedBonusUUIDs.push(item.UUID);\n \n if ($bonusProduct.length > 0) {\n // If bonus product already exists, update it\n $bonusProduct.replaceWith(bonusProductHtml);\n } else {\n // If it's a new bonus product, append it to the cart\n $('.cart-products').append(bonusProductHtml);\n }\n }\n });\n \n // Remove any bonus products that are not in the updated data\n currentBonusProducts.each(function () {\n const uuid = $(this).data('uuid');\n if (!updatedBonusUUIDs.includes(uuid)) {\n $(this).remove();\n }\n });\n } else {\n // If there are no bonus products, remove all existing bonus products\n currentBonusProducts.remove();\n }\n }\n\n $('body').on('change', '.quantity-form > .quantity', function () {\n var preSelectQty = $(this).data('pre-select-qty');\n var quantity = $(this).val();\n var productID = $(this).data('pid');\n var url = $(this).data('action');\n var uuid = $(this).data('uuid');\n\n var urlParams = {\n pid: productID,\n quantity: quantity,\n uuid: uuid\n };\n url = appendToUrl(url, urlParams);\n\n $(this)\n .parents('.product-info')\n .spinner()\n .start();\n\n $.ajax({\n url: url,\n type: 'get',\n context: this,\n dataType: 'json',\n success: function (data) {\n $('.quantity[data-uuid=\"' + uuid + '\"]').val(quantity);\n $('.coupons-and-promos')\n .empty()\n .append(data.totals.discountsHtml);\n updateCartTotals(data);\n updateBonusProducts(data);\n updateApproachingDiscounts(data.approachingDiscounts);\n updateAvailability(data, uuid);\n validateBasket(data);\n $(this).data('pre-select-qty', quantity);\n var $productDetailsSection = $(this).parents('.product-info').find('.product-details');\n $productDetailsSection.find('.qty-card-quantity-count').html(quantity);\n $('body').trigger('cart:update');\n\n $.spinner().stop();\n if (\n $(this)\n .parents('.product-info')\n .hasClass('bonus-product-line-item')\n && $('.cart-page').length\n ) {\n location.reload();\n }\n },\n error: function (err) {\n if (err.responseJSON.redirectUrl) {\n window.location.href = err.responseJSON.redirectUrl;\n } else {\n createErrorNotification(err.responseJSON.errorMessage);\n $(this).val(parseInt(preSelectQty, 10));\n $.spinner().stop();\n }\n }\n });\n });\n\n $('.shippingMethods').change(function () {\n var url = $(this).attr('data-actionUrl');\n var urlParams = {\n methodID: $(this)\n .find(':selected')\n .attr('data-shipping-id')\n };\n // url = appendToUrl(url, urlParams);\n\n $('.totals')\n .spinner()\n .start();\n $.ajax({\n url: url,\n type: 'post',\n dataType: 'json',\n data: urlParams,\n success: function (data) {\n if (data.error) {\n window.location.href = data.redirectUrl;\n } else {\n $('.coupons-and-promos')\n .empty()\n .append(data.totals.discountsHtml);\n updateCartTotals(data);\n updateApproachingDiscounts(data.approachingDiscounts);\n validateBasket(data);\n }\n $.spinner().stop();\n },\n error: function (err) {\n if (err.redirectUrl) {\n window.location.href = err.redirectUrl;\n } else {\n createErrorNotification(err.responseJSON.errorMessage);\n $.spinner().stop();\n }\n }\n });\n });\n\n $('.promo-code-form').submit(function (e) {\n e.preventDefault();\n $.spinner().start();\n $('.coupon-missing-error').hide();\n $('.coupon-error-message').empty();\n if (!$('.coupon-code-field').val()) {\n $('.promo-code-form .form-control').addClass('is-invalid');\n $('.promo-code-form .form-control').attr('aria-describedby', 'missingCouponCode');\n $('.coupon-missing-error').show();\n $.spinner().stop();\n return false;\n }\n var $form = $('.promo-code-form');\n $('.promo-code-form .form-control').removeClass('is-invalid');\n $('.coupon-error-message').empty();\n\n $.ajax({\n url: $form.attr('action'),\n type: 'GET',\n dataType: 'json',\n data: $form.serialize(),\n success: function (data) {\n if (data.error) {\n $('.promo-code-form .form-control').addClass('is-invalid');\n $('.promo-code-form .form-control').attr('aria-describedby', 'invalidCouponCode');\n $('.coupon-error-message')\n .empty()\n .append(data.errorMessage);\n $('body').trigger('promotion:error', data);\n } else {\n $('.coupons-and-promos')\n .empty()\n .append(data.totals.discountsHtml);\n updateCartTotals(data);\n updateApproachingDiscounts(data.approachingDiscounts);\n validateBasket(data);\n $('body').trigger('promotion:success', data);\n }\n $('.coupon-code-field').val('');\n $.spinner().stop();\n },\n error: function (err) {\n $('body').trigger('promotion:error', err);\n if (err.responseJSON.redirectUrl) {\n window.location.href = err.responseJSON.redirectUrl;\n } else {\n createErrorNotification(err.errorMessage);\n $.spinner().stop();\n }\n }\n });\n return false;\n });\n\n $('body').on('click', '.remove-coupon', function (e) {\n e.preventDefault();\n\n var url = $('.coupons-and-promos').data('action');\n var couponCode = $(this).data('code');\n var uuid = $(this).data('uuid');\n var urlParams = {\n code: couponCode,\n uuid: uuid\n };\n\n url = appendToUrl(url, urlParams);\n\n $.spinner().start();\n $.ajax({\n url: url,\n type: 'get',\n dataType: 'json',\n success: function (data) {\n $('.coupon-uuid-' + uuid).remove();\n updateCartTotals(data);\n updateApproachingDiscounts(data.approachingDiscounts);\n validateBasket(data);\n $.spinner().stop();\n $('body').trigger('promotion:success', data);\n },\n error: function (err) {\n $('body').trigger('promotion:error', err);\n if (err.responseJSON.redirectUrl) {\n window.location.href = err.responseJSON.redirectUrl;\n } else {\n createErrorNotification(err.responseJSON.errorMessage);\n $.spinner().stop();\n }\n }\n });\n });\n\n $('body').on('click', '.cart-page .bonus-product-button', function () {\n $.spinner().start();\n $(this).addClass('launched-modal');\n $.ajax({\n url: $(this).data('url'),\n method: 'GET',\n dataType: 'json',\n success: function (data) {\n base.methods.editBonusProducts(data);\n $.spinner().stop();\n },\n error: function () {\n $.spinner().stop();\n }\n });\n });\n\n $('body').on('hidden.bs.modal', '#chooseBonusProductModal', function () {\n $('#chooseBonusProductModal').remove();\n $('.modal-backdrop').remove();\n $('body').removeClass('modal-open');\n\n if ($('.cart-page').length) {\n $('.launched-modal .btn-outline-primary').trigger('focus');\n $('.launched-modal').removeClass('launched-modal');\n } else {\n $('.product-detail .add-to-cart').focus();\n }\n });\n\n $('body').on('click', '.cart-page .product-edit .edit, .cart-page .bundle-edit .edit', function (e) {\n e.preventDefault();\n\n var editProductUrl = $(this).attr('href');\n getModalHtmlElement();\n fillModalElement(editProductUrl);\n });\n\n $('body').on('shown.bs.modal', '#editProductModal', function () {\n $('#editProductModal')\n .siblings()\n .attr('aria-hidden', 'true');\n $('#editProductModal .close').focus();\n });\n\n $('body').on('hidden.bs.modal', '#editProductModal', function () {\n $('#editProductModal')\n .siblings()\n .attr('aria-hidden', 'false');\n });\n\n $('body').on('keydown', '#editProductModal', function (e) {\n var focusParams = {\n event: e,\n containerSelector: '#editProductModal',\n firstElementSelector: '.close',\n lastElementSelector: '.update-cart-product-global',\n nextToLastElementSelector: '.modal-footer .quantity-select'\n };\n focusHelper.setTabNextFocus(focusParams);\n });\n\n $('body').on('product:updateAddToCart', function (e, response) {\n // update global add to cart (single products, bundles)\n var dialog = $(response.$productContainer).closest('.quick-view-dialog');\n\n $('.update-cart-product-global', dialog).attr(\n 'disabled',\n !$('.global-availability', dialog).data('ready-to-order') || !$('.global-availability', dialog).data('available')\n );\n });\n\n $('body').on('product:updateAvailability', function (e, response) {\n // bundle individual products\n $('.product-availability', response.$productContainer)\n .data('ready-to-order', response.product.readyToOrder)\n .data('available', response.product.available)\n .find('.availability-msg')\n .empty()\n .html(response.message);\n\n var dialog = $(response.$productContainer).closest('.quick-view-dialog');\n\n if ($('.product-availability', dialog).length) {\n // bundle all products\n var allAvailable = $('.product-availability', dialog)\n .toArray()\n .every(function (item) {\n return $(item).data('available');\n });\n\n var allReady = $('.product-availability', dialog)\n .toArray()\n .every(function (item) {\n return $(item).data('ready-to-order');\n });\n\n $('.global-availability', dialog)\n .data('ready-to-order', allReady)\n .data('available', allAvailable);\n\n $('.global-availability .availability-msg', dialog)\n .empty()\n .html(allReady ? response.message : response.resources.info_selectforstock);\n } else {\n // single product\n $('.global-availability', dialog)\n .data('ready-to-order', response.product.readyToOrder)\n .data('available', response.product.available)\n .find('.availability-msg')\n .empty()\n .html(response.message);\n }\n });\n\n $('body').on('product:afterAttributeSelect', function (e, response) {\n if ($('.modal.show .product-quickview .bundle-items').length) {\n $('.modal.show')\n .find(response.container)\n .data('pid', response.data.product.id);\n $('.modal.show')\n .find(response.container)\n .find('.product-id')\n .text(response.data.product.id);\n } else {\n $('.modal.show .product-quickview').data('pid', response.data.product.id);\n }\n });\n\n $('body').on('change', '.quantity-select', function () {\n var selectedQuantity = $(this).val();\n $('.modal.show .update-cart-url').data('selected-quantity', selectedQuantity);\n });\n\n $('body').on('change', '.options-select', function () {\n var selectedOptionValueId = $(this).children('option:selected').data('value-id');\n $('.modal.show .update-cart-url').data('selected-option', selectedOptionValueId);\n });\n\n $('body').on('click', '.update-cart-product-global', function (e) {\n e.preventDefault();\n\n var updateProductUrl = $(this)\n .closest('.cart-and-ipay')\n .find('.update-cart-url')\n .val();\n var selectedQuantity = $(this)\n .closest('.cart-and-ipay')\n .find('.update-cart-url')\n .data('selected-quantity');\n var selectedOptionValueId = $(this).closest('.cart-and-ipay').find('.update-cart-url').data('selected-option');\n var uuid = $(this)\n .closest('.cart-and-ipay')\n .find('.update-cart-url')\n .data('uuid');\n\n var form = {\n uuid: uuid,\n pid: base.getPidValue($(this)),\n quantity: selectedQuantity,\n selectedOptionValueId: selectedOptionValueId\n };\n\n $(this)\n .parents('.card')\n .spinner()\n .start();\n if (updateProductUrl) {\n $.ajax({\n url: updateProductUrl,\n type: 'post',\n context: this,\n data: form,\n dataType: 'json',\n success: function (data) {\n $('#editProductModal').modal('hide');\n\n $('.coupons-and-promos')\n .empty()\n .append(data.cartModel.totals.discountsHtml);\n updateCartTotals(data.cartModel);\n updateApproachingDiscounts(data.cartModel.approachingDiscounts);\n updateAvailability(data.cartModel, uuid);\n updateProductDetails(data, uuid);\n\n if (data.uuidToBeDeleted) {\n $('.uuid-' + data.uuidToBeDeleted).remove();\n }\n\n validateBasket(data.cartModel);\n\n $('body').trigger('cart:update');\n\n $.spinner().stop();\n },\n error: function (err) {\n if (err.responseJSON.redirectUrl) {\n window.location.href = err.responseJSON.redirectUrl;\n } else {\n createErrorNotification(err.responseJSON.errorMessage);\n $.spinner().stop();\n }\n }\n });\n }\n });\n\n base.selectAttribute();\n base.buttonAttribute();\n base.removeBonusProduct();\n base.selectBonusProduct();\n base.enableBonusProductSelection();\n base.showMoreBonusProducts();\n base.addBonusProductsToCart();\n base.focusChooseBonusProductModal();\n base.trapChooseBonusProductModalFocus();\n base.onClosingChooseBonusProductModal();\n};\n","'use strict';\n\nvar debounce = require('lodash/debounce');\nvar endpoint = $('.suggestions-wrapper').data('url');\nvar minChars = 3;\n\n/**\n * Retrieves Suggestions element relative to scope\n *\n * @param {Object} scope - Search input field DOM element\n * @return {JQuery} - .suggestions-wrapper element\n */\nfunction getSuggestionsWrapper(scope) {\n return $(scope)\n .parents('form')\n .children('.suggestions-wrapper');\n}\n\n/**\n * Tear down Suggestions panel\n */\nfunction tearDownSuggestions() {\n $('input.search-field').val('');\n $('.search-mobile .suggestions').unbind('scroll');\n $('.suggestions-wrapper').empty();\n $('body').removeClass('site-search-active');\n}\n\n/**\n * Toggle search field icon from search to close and vice-versa\n *\n * @param {string} action - Action to toggle to\n */\nfunction toggleSuggestionsIcon(action) {\n var mobileSearchIcon = '.search-mobile span.';\n var iconSearch = 'fa-search';\n var iconSearchClose = 'fa-close';\n\n if (action === 'close') {\n $(mobileSearchIcon + iconSearch)\n .removeClass(iconSearch)\n .addClass(iconSearchClose);\n } else {\n $(mobileSearchIcon + iconSearchClose)\n .removeClass(iconSearchClose)\n .addClass(iconSearch);\n }\n}\n\n/**\n * Process Ajax response for SearchServices-GetSuggestions\n *\n * @param {Object|string} response - Empty object literal if null response or string with rendered\n * suggestions template contents\n */\nfunction processResponse(response) {\n var $suggestionsWrapper = getSuggestionsWrapper(this).empty();\n\n $.spinner().stop();\n\n if (!(typeof response === 'object')) {\n $suggestionsWrapper.append(response).show();\n $('body').addClass('site-search-active');\n } else {\n $suggestionsWrapper.hide();\n $('body').removeClass('site-search-active');\n }\n}\n\n/**\n * Retrieve suggestions\n *\n * @param {Object} scope - Search field DOM element\n */\nfunction getSuggestions(scope) {\n if ($(scope).val().length >= minChars) {\n $.spinner().start();\n $.ajax({\n context: scope,\n url: endpoint + encodeURIComponent($(scope).val()),\n method: 'GET',\n success: processResponse,\n error: function () {\n $.spinner().stop();\n }\n });\n } else {\n toggleSuggestionsIcon('search');\n getSuggestionsWrapper(scope).empty();\n }\n}\n\nmodule.exports = function () {\n $('input.search-field').each(function () {\n /**\n * Use debounce to avoid making an Ajax call on every single key press by waiting a few\n * hundred milliseconds before making the request. Without debounce, the user sees the\n * browser blink with every key press.\n */\n var debounceSuggestions = debounce(getSuggestions, 300);\n\n $(this).on('keyup click', function (e) {\n debounceSuggestions(this, e);\n });\n });\n\n $('body').on('click', function (e) {\n if (!$('.suggestions').has(e.target).length && !$(e.target).hasClass('search-field')) {\n $('.suggestions').hide();\n }\n });\n\n $('body').on('click touchend', '.search-mobile span.fa-close', function () {\n $('.suggestions').hide();\n $('body').removeClass('site-search-active');\n toggleSuggestionsIcon('search');\n tearDownSuggestions();\n });\n\n $('.mobile-search_btn').on('click', function (e) {\n e.preventDefault();\n $('body').toggleClass('site-search-active');\n $('.search-field').focus();\n });\n\n $('.site-search div.site-search-close').on('click', function () {\n $('body').toggleClass('site-search-active');\n });\n};\n","var isObject = require('./isObject'),\n now = require('./now'),\n toNumber = require('./toNumber');\n\n/** Error message constants. */\nvar FUNC_ERROR_TEXT = 'Expected a function';\n\n/* Built-in method references for those with the same name as other `lodash` methods. */\nvar nativeMax = Math.max,\n nativeMin = Math.min;\n\n/**\n * Creates a debounced function that delays invoking `func` until after `wait`\n * milliseconds have elapsed since the last time the debounced function was\n * invoked. The debounced function comes with a `cancel` method to cancel\n * delayed `func` invocations and a `flush` method to immediately invoke them.\n * Provide `options` to indicate whether `func` should be invoked on the\n * leading and/or trailing edge of the `wait` timeout. The `func` is invoked\n * with the last arguments provided to the debounced function. Subsequent\n * calls to the debounced function return the result of the last `func`\n * invocation.\n *\n * **Note:** If `leading` and `trailing` options are `true`, `func` is\n * invoked on the trailing edge of the timeout only if the debounced function\n * is invoked more than once during the `wait` timeout.\n *\n * If `wait` is `0` and `leading` is `false`, `func` invocation is deferred\n * until to the next tick, similar to `setTimeout` with a timeout of `0`.\n *\n * See [David Corbacho's article](https://css-tricks.com/debouncing-throttling-explained-examples/)\n * for details over the differences between `_.debounce` and `_.throttle`.\n *\n * @static\n * @memberOf _\n * @since 0.1.0\n * @category Function\n * @param {Function} func The function to debounce.\n * @param {number} [wait=0] The number of milliseconds to delay.\n * @param {Object} [options={}] The options object.\n * @param {boolean} [options.leading=false]\n * Specify invoking on the leading edge of the timeout.\n * @param {number} [options.maxWait]\n * The maximum time `func` is allowed to be delayed before it's invoked.\n * @param {boolean} [options.trailing=true]\n * Specify invoking on the trailing edge of the timeout.\n * @returns {Function} Returns the new debounced function.\n * @example\n *\n * // Avoid costly calculations while the window size is in flux.\n * jQuery(window).on('resize', _.debounce(calculateLayout, 150));\n *\n * // Invoke `sendMail` when clicked, debouncing subsequent calls.\n * jQuery(element).on('click', _.debounce(sendMail, 300, {\n * 'leading': true,\n * 'trailing': false\n * }));\n *\n * // Ensure `batchLog` is invoked once after 1 second of debounced calls.\n * var debounced = _.debounce(batchLog, 250, { 'maxWait': 1000 });\n * var source = new EventSource('/stream');\n * jQuery(source).on('message', debounced);\n *\n * // Cancel the trailing debounced invocation.\n * jQuery(window).on('popstate', debounced.cancel);\n */\nfunction debounce(func, wait, options) {\n var lastArgs,\n lastThis,\n maxWait,\n result,\n timerId,\n lastCallTime,\n lastInvokeTime = 0,\n leading = false,\n maxing = false,\n trailing = true;\n\n if (typeof func != 'function') {\n throw new TypeError(FUNC_ERROR_TEXT);\n }\n wait = toNumber(wait) || 0;\n if (isObject(options)) {\n leading = !!options.leading;\n maxing = 'maxWait' in options;\n maxWait = maxing ? nativeMax(toNumber(options.maxWait) || 0, wait) : maxWait;\n trailing = 'trailing' in options ? !!options.trailing : trailing;\n }\n\n function invokeFunc(time) {\n var args = lastArgs,\n thisArg = lastThis;\n\n lastArgs = lastThis = undefined;\n lastInvokeTime = time;\n result = func.apply(thisArg, args);\n return result;\n }\n\n function leadingEdge(time) {\n // Reset any `maxWait` timer.\n lastInvokeTime = time;\n // Start the timer for the trailing edge.\n timerId = setTimeout(timerExpired, wait);\n // Invoke the leading edge.\n return leading ? invokeFunc(time) : result;\n }\n\n function remainingWait(time) {\n var timeSinceLastCall = time - lastCallTime,\n timeSinceLastInvoke = time - lastInvokeTime,\n timeWaiting = wait - timeSinceLastCall;\n\n return maxing\n ? nativeMin(timeWaiting, maxWait - timeSinceLastInvoke)\n : timeWaiting;\n }\n\n function shouldInvoke(time) {\n var timeSinceLastCall = time - lastCallTime,\n timeSinceLastInvoke = time - lastInvokeTime;\n\n // Either this is the first call, activity has stopped and we're at the\n // trailing edge, the system time has gone backwards and we're treating\n // it as the trailing edge, or we've hit the `maxWait` limit.\n return (lastCallTime === undefined || (timeSinceLastCall >= wait) ||\n (timeSinceLastCall < 0) || (maxing && timeSinceLastInvoke >= maxWait));\n }\n\n function timerExpired() {\n var time = now();\n if (shouldInvoke(time)) {\n return trailingEdge(time);\n }\n // Restart the timer.\n timerId = setTimeout(timerExpired, remainingWait(time));\n }\n\n function trailingEdge(time) {\n timerId = undefined;\n\n // Only invoke if we have `lastArgs` which means `func` has been\n // debounced at least once.\n if (trailing && lastArgs) {\n return invokeFunc(time);\n }\n lastArgs = lastThis = undefined;\n return result;\n }\n\n function cancel() {\n if (timerId !== undefined) {\n clearTimeout(timerId);\n }\n lastInvokeTime = 0;\n lastArgs = lastCallTime = lastThis = timerId = undefined;\n }\n\n function flush() {\n return timerId === undefined ? result : trailingEdge(now());\n }\n\n function debounced() {\n var time = now(),\n isInvoking = shouldInvoke(time);\n\n lastArgs = arguments;\n lastThis = this;\n lastCallTime = time;\n\n if (isInvoking) {\n if (timerId === undefined) {\n return leadingEdge(lastCallTime);\n }\n if (maxing) {\n // Handle invocations in a tight loop.\n clearTimeout(timerId);\n timerId = setTimeout(timerExpired, wait);\n return invokeFunc(lastCallTime);\n }\n }\n if (timerId === undefined) {\n timerId = setTimeout(timerExpired, wait);\n }\n return result;\n }\n debounced.cancel = cancel;\n debounced.flush = flush;\n return debounced;\n}\n\nmodule.exports = debounce;\n","var root = require('./_root');\n\n/**\n * Gets the timestamp of the number of milliseconds that have elapsed since\n * the Unix epoch (1 January 1970 00:00:00 UTC).\n *\n * @static\n * @memberOf _\n * @since 2.4.0\n * @category Date\n * @returns {number} Returns the timestamp.\n * @example\n *\n * _.defer(function(stamp) {\n * console.log(_.now() - stamp);\n * }, _.now());\n * // => Logs the number of milliseconds it took for the deferred invocation.\n */\nvar now = function() {\n return root.Date.now();\n};\n\nmodule.exports = now;\n","/** Detect free variable `global` from Node.js. */\nvar freeGlobal = typeof global == 'object' && global && global.Object === Object && global;\n\nmodule.exports = freeGlobal;\n","var baseTrim = require('./_baseTrim'),\n isObject = require('./isObject'),\n isSymbol = require('./isSymbol');\n\n/** Used as references for various `Number` constants. */\nvar NAN = 0 / 0;\n\n/** Used to detect bad signed hexadecimal string values. */\nvar reIsBadHex = /^[-+]0x[0-9a-f]+$/i;\n\n/** Used to detect binary string values. */\nvar reIsBinary = /^0b[01]+$/i;\n\n/** Used to detect octal string values. */\nvar reIsOctal = /^0o[0-7]+$/i;\n\n/** Built-in method references without a dependency on `root`. */\nvar freeParseInt = parseInt;\n\n/**\n * Converts `value` to a number.\n *\n * @static\n * @memberOf _\n * @since 4.0.0\n * @category Lang\n * @param {*} value The value to process.\n * @returns {number} Returns the number.\n * @example\n *\n * _.toNumber(3.2);\n * // => 3.2\n *\n * _.toNumber(Number.MIN_VALUE);\n * // => 5e-324\n *\n * _.toNumber(Infinity);\n * // => Infinity\n *\n * _.toNumber('3.2');\n * // => 3.2\n */\nfunction toNumber(value) {\n if (typeof value == 'number') {\n return value;\n }\n if (isSymbol(value)) {\n return NAN;\n }\n if (isObject(value)) {\n var other = typeof value.valueOf == 'function' ? value.valueOf() : value;\n value = isObject(other) ? (other + '') : other;\n }\n if (typeof value != 'string') {\n return value === 0 ? value : +value;\n }\n value = baseTrim(value);\n var isBinary = reIsBinary.test(value);\n return (isBinary || reIsOctal.test(value))\n ? freeParseInt(value.slice(2), isBinary ? 2 : 8)\n : (reIsBadHex.test(value) ? NAN : +value);\n}\n\nmodule.exports = toNumber;\n","var trimmedEndIndex = require('./_trimmedEndIndex');\n\n/** Used to match leading whitespace. */\nvar reTrimStart = /^\\s+/;\n\n/**\n * The base implementation of `_.trim`.\n *\n * @private\n * @param {string} string The string to trim.\n * @returns {string} Returns the trimmed string.\n */\nfunction baseTrim(string) {\n return string\n ? string.slice(0, trimmedEndIndex(string) + 1).replace(reTrimStart, '')\n : string;\n}\n\nmodule.exports = baseTrim;\n","/** Used to match a single whitespace character. */\nvar reWhitespace = /\\s/;\n\n/**\n * Used by `_.trim` and `_.trimEnd` to get the index of the last non-whitespace\n * character of `string`.\n *\n * @private\n * @param {string} string The string to inspect.\n * @returns {number} Returns the index of the last non-whitespace character.\n */\nfunction trimmedEndIndex(string) {\n var index = string.length;\n\n while (index-- && reWhitespace.test(string.charAt(index))) {}\n return index;\n}\n\nmodule.exports = trimmedEndIndex;\n","var baseGetTag = require('./_baseGetTag'),\n isObjectLike = require('./isObjectLike');\n\n/** `Object#toString` result references. */\nvar symbolTag = '[object Symbol]';\n\n/**\n * Checks if `value` is classified as a `Symbol` primitive or object.\n *\n * @static\n * @memberOf _\n * @since 4.0.0\n * @category Lang\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is a symbol, else `false`.\n * @example\n *\n * _.isSymbol(Symbol.iterator);\n * // => true\n *\n * _.isSymbol('abc');\n * // => false\n */\nfunction isSymbol(value) {\n return typeof value == 'symbol' ||\n (isObjectLike(value) && baseGetTag(value) == symbolTag);\n}\n\nmodule.exports = isSymbol;\n","var Symbol = require('./_Symbol'),\n getRawTag = require('./_getRawTag'),\n objectToString = require('./_objectToString');\n\n/** `Object#toString` result references. */\nvar nullTag = '[object Null]',\n undefinedTag = '[object Undefined]';\n\n/** Built-in value references. */\nvar symToStringTag = Symbol ? Symbol.toStringTag : undefined;\n\n/**\n * The base implementation of `getTag` without fallbacks for buggy environments.\n *\n * @private\n * @param {*} value The value to query.\n * @returns {string} Returns the `toStringTag`.\n */\nfunction baseGetTag(value) {\n if (value == null) {\n return value === undefined ? undefinedTag : nullTag;\n }\n return (symToStringTag && symToStringTag in Object(value))\n ? getRawTag(value)\n : objectToString(value);\n}\n\nmodule.exports = baseGetTag;\n","var Symbol = require('./_Symbol');\n\n/** Used for built-in method references. */\nvar objectProto = Object.prototype;\n\n/** Used to check objects for own properties. */\nvar hasOwnProperty = objectProto.hasOwnProperty;\n\n/**\n * Used to resolve the\n * [`toStringTag`](http://ecma-international.org/ecma-262/7.0/#sec-object.prototype.tostring)\n * of values.\n */\nvar nativeObjectToString = objectProto.toString;\n\n/** Built-in value references. */\nvar symToStringTag = Symbol ? Symbol.toStringTag : undefined;\n\n/**\n * A specialized version of `baseGetTag` which ignores `Symbol.toStringTag` values.\n *\n * @private\n * @param {*} value The value to query.\n * @returns {string} Returns the raw `toStringTag`.\n */\nfunction getRawTag(value) {\n var isOwn = hasOwnProperty.call(value, symToStringTag),\n tag = value[symToStringTag];\n\n try {\n value[symToStringTag] = undefined;\n var unmasked = true;\n } catch (e) {}\n\n var result = nativeObjectToString.call(value);\n if (unmasked) {\n if (isOwn) {\n value[symToStringTag] = tag;\n } else {\n delete value[symToStringTag];\n }\n }\n return result;\n}\n\nmodule.exports = getRawTag;\n","/** Used for built-in method references. */\nvar objectProto = Object.prototype;\n\n/**\n * Used to resolve the\n * [`toStringTag`](http://ecma-international.org/ecma-262/7.0/#sec-object.prototype.tostring)\n * of values.\n */\nvar nativeObjectToString = objectProto.toString;\n\n/**\n * Converts `value` to a string using `Object.prototype.toString`.\n *\n * @private\n * @param {*} value The value to convert.\n * @returns {string} Returns the converted string.\n */\nfunction objectToString(value) {\n return nativeObjectToString.call(value);\n}\n\nmodule.exports = objectToString;\n","/**\n * Checks if `value` is object-like. A value is object-like if it's not `null`\n * and has a `typeof` result of \"object\".\n *\n * @static\n * @memberOf _\n * @since 4.0.0\n * @category Lang\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is object-like, else `false`.\n * @example\n *\n * _.isObjectLike({});\n * // => true\n *\n * _.isObjectLike([1, 2, 3]);\n * // => true\n *\n * _.isObjectLike(_.noop);\n * // => false\n *\n * _.isObjectLike(null);\n * // => false\n */\nfunction isObjectLike(value) {\n return value != null && typeof value == 'object';\n}\n\nmodule.exports = isObjectLike;\n","'use strict';\n\nconst jstz = require('jstz');\nconst moment = require('moment-timezone');\n\nmodule.exports = function () {\n const tz = jstz.determine() || 'UTC';\n\n $('[data-parse-date]').each(function () {\n const useCustomDate = $(this).data('use-custom-date') === true;\n\n if (useCustomDate) {\n const countryCode = $(this).data('countrycode') ? $(this).data('countrycode').toLowerCase() : 'en';\n const parseDateFormat = $(this).data('parse-date') || 'DD-MM-YYYY';\n const dateValue = $(this).text().trim();\n\n const localTimestamp = moment(dateValue, parseDateFormat)\n .locale(countryCode)\n .format(parseDateFormat);\n\n $(this).text(localTimestamp);\n } else {\n const localTimestamp = moment()\n .tz(tz.name())\n .locale($(this).data('countrycode').toLowerCase() || 'en')\n .format($(this).data('parse-date') || 'MMMM Do YYYY, h:mm a');\n\n $(this).text(localTimestamp);\n }\n });\n};\n","module.exports = require('./dist/jstz.js');\n","(function (root) {/*global exports, Intl*/\n/**\n * This script gives you the zone info key representing your device's time zone setting.\n *\n * @name jsTimezoneDetect\n * @version 1.0.6\n * @author Jon Nylander\n * @license MIT License - https://bitbucket.org/pellepim/jstimezonedetect/src/default/LICENCE.txt\n *\n * For usage and examples, visit:\n * http://pellepim.bitbucket.org/jstz/\n *\n * Copyright (c) Jon Nylander\n */\n\n\n/**\n * Namespace to hold all the code for timezone detection.\n */\nvar jstz = (function () {\n 'use strict';\n var HEMISPHERE_SOUTH = 's',\n\n consts = {\n DAY: 86400000,\n HOUR: 3600000,\n MINUTE: 60000,\n SECOND: 1000,\n BASELINE_YEAR: 2014,\n MAX_SCORE: 864000000, // 10 days\n AMBIGUITIES: {\n 'America/Denver': ['America/Mazatlan'],\n 'Europe/London': ['Africa/Casablanca'],\n 'America/Chicago': ['America/Mexico_City'],\n 'America/Asuncion': ['America/Campo_Grande', 'America/Santiago'],\n 'America/Montevideo': ['America/Sao_Paulo', 'America/Santiago'],\n // Europe/Minsk should not be in this list... but Windows.\n 'Asia/Beirut': ['Asia/Amman', 'Asia/Jerusalem', 'Europe/Helsinki', 'Asia/Damascus', 'Africa/Cairo', 'Asia/Gaza', 'Europe/Minsk'],\n 'Pacific/Auckland': ['Pacific/Fiji'],\n 'America/Los_Angeles': ['America/Santa_Isabel'],\n 'America/New_York': ['America/Havana'],\n 'America/Halifax': ['America/Goose_Bay'],\n 'America/Godthab': ['America/Miquelon'],\n 'Asia/Dubai': ['Asia/Yerevan'],\n 'Asia/Jakarta': ['Asia/Krasnoyarsk'],\n 'Asia/Shanghai': ['Asia/Irkutsk', 'Australia/Perth'],\n 'Australia/Sydney': ['Australia/Lord_Howe'],\n 'Asia/Tokyo': ['Asia/Yakutsk'],\n 'Asia/Dhaka': ['Asia/Omsk'],\n // In the real world Yerevan is not ambigous for Baku... but Windows.\n 'Asia/Baku': ['Asia/Yerevan'],\n 'Australia/Brisbane': ['Asia/Vladivostok'],\n 'Pacific/Noumea': ['Asia/Vladivostok'],\n 'Pacific/Majuro': ['Asia/Kamchatka', 'Pacific/Fiji'],\n 'Pacific/Tongatapu': ['Pacific/Apia'],\n 'Asia/Baghdad': ['Europe/Minsk', 'Europe/Moscow'],\n 'Asia/Karachi': ['Asia/Yekaterinburg'],\n 'Africa/Johannesburg': ['Asia/Gaza', 'Africa/Cairo']\n }\n },\n\n /**\n * Gets the offset in minutes from UTC for a certain date.\n * @param {Date} date\n * @returns {Number}\n */\n get_date_offset = function get_date_offset(date) {\n var offset = -date.getTimezoneOffset();\n return (offset !== null ? offset : 0);\n },\n\n /**\n * This function does some basic calculations to create information about\n * the user's timezone. It uses REFERENCE_YEAR as a solid year for which\n * the script has been tested rather than depend on the year set by the\n * client device.\n *\n * Returns a key that can be used to do lookups in jstz.olson.timezones.\n * eg: \"720,1,2\".\n *\n * @returns {String}\n */\n lookup_key = function lookup_key() {\n var january_offset = get_date_offset(new Date(consts.BASELINE_YEAR, 0, 2)),\n june_offset = get_date_offset(new Date(consts.BASELINE_YEAR, 5, 2)),\n diff = january_offset - june_offset;\n\n if (diff < 0) {\n return january_offset + \",1\";\n } else if (diff > 0) {\n return june_offset + \",1,\" + HEMISPHERE_SOUTH;\n }\n\n return january_offset + \",0\";\n },\n\n\n /**\n * Tries to get the time zone key directly from the operating system for those\n * environments that support the ECMAScript Internationalization API.\n */\n get_from_internationalization_api = function get_from_internationalization_api() {\n var format, timezone;\n if (typeof Intl === \"undefined\" || typeof Intl.DateTimeFormat === \"undefined\") {\n return;\n }\n format = Intl.DateTimeFormat();\n if (typeof format === \"undefined\" || typeof format.resolvedOptions === \"undefined\") {\n return;\n }\n timezone = format.resolvedOptions().timeZone;\n if (timezone && (timezone.indexOf(\"/\") > -1 || timezone === 'UTC') && timezone.indexOf(\"Etc\") != 0) {\n return timezone;\n }\n },\n\n /**\n * Starting point for getting all the DST rules for a specific year\n * for the current timezone (as described by the client system).\n *\n * Returns an object with start and end attributes, or false if no\n * DST rules were found for the year.\n *\n * @param year\n * @returns {Object} || {Boolean}\n */\n dst_dates = function dst_dates(year) {\n var yearstart = new Date(year, 0, 1, 0, 0, 1, 0).getTime();\n var yearend = new Date(year, 12, 31, 23, 59, 59).getTime();\n var current = yearstart;\n var offset = (new Date(current)).getTimezoneOffset();\n var dst_start = null;\n var dst_end = null;\n\n while (current < yearend - 86400000) {\n var dateToCheck = new Date(current);\n var dateToCheckOffset = dateToCheck.getTimezoneOffset();\n\n if (dateToCheckOffset !== offset) {\n if (dateToCheckOffset < offset) {\n dst_start = dateToCheck;\n }\n if (dateToCheckOffset > offset) {\n dst_end = dateToCheck;\n }\n offset = dateToCheckOffset;\n }\n\n current += 86400000;\n }\n\n if (dst_start && dst_end) {\n return {\n s: find_dst_fold(dst_start).getTime(),\n e: find_dst_fold(dst_end).getTime()\n };\n }\n\n return false;\n },\n\n /**\n * Probably completely unnecessary function that recursively finds the\n * exact (to the second) time when a DST rule was changed.\n *\n * @param a_date - The candidate Date.\n * @param padding - integer specifying the padding to allow around the candidate\n * date for finding the fold.\n * @param iterator - integer specifying how many milliseconds to iterate while\n * searching for the fold.\n *\n * @returns {Date}\n */\n find_dst_fold = function find_dst_fold(a_date, padding, iterator) {\n if (typeof padding === 'undefined') {\n padding = consts.DAY;\n iterator = consts.HOUR;\n }\n\n var date_start = new Date(a_date.getTime() - padding).getTime();\n var date_end = a_date.getTime() + padding;\n var offset = new Date(date_start).getTimezoneOffset();\n\n var current = date_start;\n\n var dst_change = null;\n while (current < date_end - iterator) {\n var dateToCheck = new Date(current);\n var dateToCheckOffset = dateToCheck.getTimezoneOffset();\n\n if (dateToCheckOffset !== offset) {\n dst_change = dateToCheck;\n break;\n }\n current += iterator;\n }\n\n if (padding === consts.DAY) {\n return find_dst_fold(dst_change, consts.HOUR, consts.MINUTE);\n }\n\n if (padding === consts.HOUR) {\n return find_dst_fold(dst_change, consts.MINUTE, consts.SECOND);\n }\n\n return dst_change;\n },\n\n windows7_adaptations = function windows7_adaptions(rule_list, preliminary_timezone, score, sample) {\n if (score !== 'N/A') {\n return score;\n }\n if (preliminary_timezone === 'Asia/Beirut') {\n if (sample.name === 'Africa/Cairo') {\n if (rule_list[6].s === 1398376800000 && rule_list[6].e === 1411678800000) {\n return 0;\n }\n }\n if (sample.name === 'Asia/Jerusalem') {\n if (rule_list[6].s === 1395964800000 && rule_list[6].e === 1411858800000) {\n return 0;\n }\n }\n } else if (preliminary_timezone === 'America/Santiago') {\n if (sample.name === 'America/Asuncion') {\n if (rule_list[6].s === 1412481600000 && rule_list[6].e === 1397358000000) {\n return 0;\n }\n }\n if (sample.name === 'America/Campo_Grande') {\n if (rule_list[6].s === 1413691200000 && rule_list[6].e === 1392519600000) {\n return 0;\n }\n }\n } else if (preliminary_timezone === 'America/Montevideo') {\n if (sample.name === 'America/Sao_Paulo') {\n if (rule_list[6].s === 1413687600000 && rule_list[6].e === 1392516000000) {\n return 0;\n }\n }\n } else if (preliminary_timezone === 'Pacific/Auckland') {\n if (sample.name === 'Pacific/Fiji') {\n if (rule_list[6].s === 1414245600000 && rule_list[6].e === 1396101600000) {\n return 0;\n }\n }\n }\n\n return score;\n },\n\n /**\n * Takes the DST rules for the current timezone, and proceeds to find matches\n * in the jstz.olson.dst_rules.zones array.\n *\n * Compares samples to the current timezone on a scoring basis.\n *\n * Candidates are ruled immediately if either the candidate or the current zone\n * has a DST rule where the other does not.\n *\n * Candidates are ruled out immediately if the current zone has a rule that is\n * outside the DST scope of the candidate.\n *\n * Candidates are included for scoring if the current zones rules fall within the\n * span of the samples rules.\n *\n * Low score is best, the score is calculated by summing up the differences in DST\n * rules and if the consts.MAX_SCORE is overreached the candidate is ruled out.\n *\n * Yah follow? :)\n *\n * @param rule_list\n * @param preliminary_timezone\n * @returns {*}\n */\n best_dst_match = function best_dst_match(rule_list, preliminary_timezone) {\n var score_sample = function score_sample(sample) {\n var score = 0;\n\n for (var j = 0; j < rule_list.length; j++) {\n\n // Both sample and current time zone report DST during the year.\n if (!!sample.rules[j] && !!rule_list[j]) {\n\n // The current time zone's DST rules are inside the sample's. Include.\n if (rule_list[j].s >= sample.rules[j].s && rule_list[j].e <= sample.rules[j].e) {\n score = 0;\n score += Math.abs(rule_list[j].s - sample.rules[j].s);\n score += Math.abs(sample.rules[j].e - rule_list[j].e);\n\n // The current time zone's DST rules are outside the sample's. Discard.\n } else {\n score = 'N/A';\n break;\n }\n\n // The max score has been reached. Discard.\n if (score > consts.MAX_SCORE) {\n score = 'N/A';\n break;\n }\n }\n }\n\n score = windows7_adaptations(rule_list, preliminary_timezone, score, sample);\n\n return score;\n };\n var scoreboard = {};\n var dst_zones = jstz.olson.dst_rules.zones;\n var dst_zones_length = dst_zones.length;\n var ambiguities = consts.AMBIGUITIES[preliminary_timezone];\n\n for (var i = 0; i < dst_zones_length; i++) {\n var sample = dst_zones[i];\n var score = score_sample(dst_zones[i]);\n\n if (score !== 'N/A') {\n scoreboard[sample.name] = score;\n }\n }\n\n for (var tz in scoreboard) {\n if (scoreboard.hasOwnProperty(tz)) {\n for (var j = 0; j < ambiguities.length; j++) {\n if (ambiguities[j] === tz) {\n return tz;\n }\n }\n }\n }\n\n return preliminary_timezone;\n },\n\n /**\n * Takes the preliminary_timezone as detected by lookup_key().\n *\n * Builds up the current timezones DST rules for the years defined\n * in the jstz.olson.dst_rules.years array.\n *\n * If there are no DST occurences for those years, immediately returns\n * the preliminary timezone. Otherwise proceeds and tries to solve\n * ambiguities.\n *\n * @param preliminary_timezone\n * @returns {String} timezone_name\n */\n get_by_dst = function get_by_dst(preliminary_timezone) {\n var get_rules = function get_rules() {\n var rule_list = [];\n for (var i = 0; i < jstz.olson.dst_rules.years.length; i++) {\n var year_rules = dst_dates(jstz.olson.dst_rules.years[i]);\n rule_list.push(year_rules);\n }\n return rule_list;\n };\n var check_has_dst = function check_has_dst(rules) {\n for (var i = 0; i < rules.length; i++) {\n if (rules[i] !== false) {\n return true;\n }\n }\n return false;\n };\n var rules = get_rules();\n var has_dst = check_has_dst(rules);\n\n if (has_dst) {\n return best_dst_match(rules, preliminary_timezone);\n }\n\n return preliminary_timezone;\n },\n\n /**\n * Uses get_timezone_info() to formulate a key to use in the olson.timezones dictionary.\n *\n * Returns an object with one function \".name()\"\n *\n * @returns Object\n */\n determine = function determine() {\n var preliminary_tz = get_from_internationalization_api();\n\n if (!preliminary_tz) {\n preliminary_tz = jstz.olson.timezones[lookup_key()];\n\n if (typeof consts.AMBIGUITIES[preliminary_tz] !== 'undefined') {\n preliminary_tz = get_by_dst(preliminary_tz);\n }\n }\n\n return {\n name: function () {\n return preliminary_tz;\n },\n stdTimezoneOffset : function () {\n // negative to match what (new Date).getTimezoneOffset() will return\n return -lookup_key().split(',')[0];\n },\n timezoneOffset : function () {\n // negative to match what (new Date).getTimezoneOffset() will return\n return -get_date_offset(new Date())\n }\n };\n };\n\n return {\n determine: determine\n };\n}());\n\n\njstz.olson = jstz.olson || {};\n\n/**\n * The keys in this dictionary are comma separated as such:\n *\n * First the offset compared to UTC time in minutes.\n *\n * Then a flag which is 0 if the timezone does not take daylight savings into account and 1 if it\n * does.\n *\n * Thirdly an optional 's' signifies that the timezone is in the southern hemisphere,\n * only interesting for timezones with DST.\n *\n * The mapped arrays is used for constructing the jstz.TimeZone object from within\n * jstz.determine();\n */\njstz.olson.timezones = {\n '-720,0': 'Etc/GMT+12',\n '-660,0': 'Pacific/Pago_Pago',\n '-660,1,s': 'Pacific/Apia', // Why? Because windows... cry!\n '-600,1': 'America/Adak',\n '-600,0': 'Pacific/Honolulu',\n '-570,0': 'Pacific/Marquesas',\n '-540,0': 'Pacific/Gambier',\n '-540,1': 'America/Anchorage',\n '-480,1': 'America/Los_Angeles',\n '-480,0': 'Pacific/Pitcairn',\n '-420,0': 'America/Phoenix',\n '-420,1': 'America/Denver',\n '-360,0': 'America/Guatemala',\n '-360,1': 'America/Chicago',\n '-360,1,s': 'Pacific/Easter',\n '-300,0': 'America/Bogota',\n '-300,1': 'America/New_York',\n '-270,0': 'America/Caracas',\n '-240,1': 'America/Halifax',\n '-240,0': 'America/Santo_Domingo',\n '-240,1,s': 'America/Asuncion',\n '-210,1': 'America/St_Johns',\n '-180,1': 'America/Godthab',\n '-180,0': 'America/Argentina/Buenos_Aires',\n '-180,1,s': 'America/Montevideo',\n '-120,0': 'America/Noronha',\n '-120,1': 'America/Noronha',\n '-60,1': 'Atlantic/Azores',\n '-60,0': 'Atlantic/Cape_Verde',\n '0,0': 'UTC',\n '0,1': 'Europe/London',\n '60,1': 'Europe/Berlin',\n '60,0': 'Africa/Lagos',\n '60,1,s': 'Africa/Windhoek',\n '120,1': 'Asia/Beirut',\n '120,0': 'Africa/Johannesburg',\n '180,0': 'Asia/Baghdad',\n '180,1': 'Europe/Moscow',\n '210,1': 'Asia/Tehran',\n '240,0': 'Asia/Dubai',\n '240,1': 'Asia/Baku',\n '270,0': 'Asia/Kabul',\n '300,1': 'Asia/Yekaterinburg',\n '300,0': 'Asia/Karachi',\n '330,0': 'Asia/Kolkata',\n '345,0': 'Asia/Kathmandu',\n '360,0': 'Asia/Dhaka',\n '360,1': 'Asia/Omsk',\n '390,0': 'Asia/Rangoon',\n '420,1': 'Asia/Krasnoyarsk',\n '420,0': 'Asia/Jakarta',\n '480,0': 'Asia/Shanghai',\n '480,1': 'Asia/Irkutsk',\n '525,0': 'Australia/Eucla',\n '525,1,s': 'Australia/Eucla',\n '540,1': 'Asia/Yakutsk',\n '540,0': 'Asia/Tokyo',\n '570,0': 'Australia/Darwin',\n '570,1,s': 'Australia/Adelaide',\n '600,0': 'Australia/Brisbane',\n '600,1': 'Asia/Vladivostok',\n '600,1,s': 'Australia/Sydney',\n '630,1,s': 'Australia/Lord_Howe',\n '660,1': 'Asia/Kamchatka',\n '660,0': 'Pacific/Noumea',\n '690,0': 'Pacific/Norfolk',\n '720,1,s': 'Pacific/Auckland',\n '720,0': 'Pacific/Majuro',\n '765,1,s': 'Pacific/Chatham',\n '780,0': 'Pacific/Tongatapu',\n '780,1,s': 'Pacific/Apia',\n '840,0': 'Pacific/Kiritimati'\n};\n\n/* Build time: 2015-11-02 13:01:00Z Build by invoking python utilities/dst.py generate */\njstz.olson.dst_rules = {\n \"years\": [\n 2008,\n 2009,\n 2010,\n 2011,\n 2012,\n 2013,\n 2014\n ],\n \"zones\": [\n {\n \"name\": \"Africa/Cairo\",\n \"rules\": [\n {\n \"e\": 1219957200000,\n \"s\": 1209074400000\n },\n {\n \"e\": 1250802000000,\n \"s\": 1240524000000\n },\n {\n \"e\": 1285880400000,\n \"s\": 1284069600000\n },\n false,\n false,\n false,\n {\n \"e\": 1411678800000,\n \"s\": 1406844000000\n }\n ]\n },\n {\n \"name\": \"Africa/Casablanca\",\n \"rules\": [\n {\n \"e\": 1220223600000,\n \"s\": 1212278400000\n },\n {\n \"e\": 1250809200000,\n \"s\": 1243814400000\n },\n {\n \"e\": 1281222000000,\n \"s\": 1272758400000\n },\n {\n \"e\": 1312066800000,\n \"s\": 1301788800000\n },\n {\n \"e\": 1348970400000,\n \"s\": 1345428000000\n },\n {\n \"e\": 1382839200000,\n \"s\": 1376100000000\n },\n {\n \"e\": 1414288800000,\n \"s\": 1406944800000\n }\n ]\n },\n {\n \"name\": \"America/Asuncion\",\n \"rules\": [\n {\n \"e\": 1205031600000,\n \"s\": 1224388800000\n },\n {\n \"e\": 1236481200000,\n \"s\": 1255838400000\n },\n {\n \"e\": 1270954800000,\n \"s\": 1286078400000\n },\n {\n \"e\": 1302404400000,\n \"s\": 1317528000000\n },\n {\n \"e\": 1333854000000,\n \"s\": 1349582400000\n },\n {\n \"e\": 1364094000000,\n \"s\": 1381032000000\n },\n {\n \"e\": 1395543600000,\n \"s\": 1412481600000\n }\n ]\n },\n {\n \"name\": \"America/Campo_Grande\",\n \"rules\": [\n {\n \"e\": 1203217200000,\n \"s\": 1224388800000\n },\n {\n \"e\": 1234666800000,\n \"s\": 1255838400000\n },\n {\n \"e\": 1266721200000,\n \"s\": 1287288000000\n },\n {\n \"e\": 1298170800000,\n \"s\": 1318737600000\n },\n {\n \"e\": 1330225200000,\n \"s\": 1350792000000\n },\n {\n \"e\": 1361070000000,\n \"s\": 1382241600000\n },\n {\n \"e\": 1392519600000,\n \"s\": 1413691200000\n }\n ]\n },\n {\n \"name\": \"America/Goose_Bay\",\n \"rules\": [\n {\n \"e\": 1225594860000,\n \"s\": 1205035260000\n },\n {\n \"e\": 1257044460000,\n \"s\": 1236484860000\n },\n {\n \"e\": 1289098860000,\n \"s\": 1268539260000\n },\n {\n \"e\": 1320555600000,\n \"s\": 1299988860000\n },\n {\n \"e\": 1352005200000,\n \"s\": 1331445600000\n },\n {\n \"e\": 1383454800000,\n \"s\": 1362895200000\n },\n {\n \"e\": 1414904400000,\n \"s\": 1394344800000\n }\n ]\n },\n {\n \"name\": \"America/Havana\",\n \"rules\": [\n {\n \"e\": 1224997200000,\n \"s\": 1205643600000\n },\n {\n \"e\": 1256446800000,\n \"s\": 1236488400000\n },\n {\n \"e\": 1288501200000,\n \"s\": 1268542800000\n },\n {\n \"e\": 1321160400000,\n \"s\": 1300597200000\n },\n {\n \"e\": 1352005200000,\n \"s\": 1333256400000\n },\n {\n \"e\": 1383454800000,\n \"s\": 1362891600000\n },\n {\n \"e\": 1414904400000,\n \"s\": 1394341200000\n }\n ]\n },\n {\n \"name\": \"America/Mazatlan\",\n \"rules\": [\n {\n \"e\": 1225008000000,\n \"s\": 1207472400000\n },\n {\n \"e\": 1256457600000,\n \"s\": 1238922000000\n },\n {\n \"e\": 1288512000000,\n \"s\": 1270371600000\n },\n {\n \"e\": 1319961600000,\n \"s\": 1301821200000\n },\n {\n \"e\": 1351411200000,\n \"s\": 1333270800000\n },\n {\n \"e\": 1382860800000,\n \"s\": 1365325200000\n },\n {\n \"e\": 1414310400000,\n \"s\": 1396774800000\n }\n ]\n },\n {\n \"name\": \"America/Mexico_City\",\n \"rules\": [\n {\n \"e\": 1225004400000,\n \"s\": 1207468800000\n },\n {\n \"e\": 1256454000000,\n \"s\": 1238918400000\n },\n {\n \"e\": 1288508400000,\n \"s\": 1270368000000\n },\n {\n \"e\": 1319958000000,\n \"s\": 1301817600000\n },\n {\n \"e\": 1351407600000,\n \"s\": 1333267200000\n },\n {\n \"e\": 1382857200000,\n \"s\": 1365321600000\n },\n {\n \"e\": 1414306800000,\n \"s\": 1396771200000\n }\n ]\n },\n {\n \"name\": \"America/Miquelon\",\n \"rules\": [\n {\n \"e\": 1225598400000,\n \"s\": 1205038800000\n },\n {\n \"e\": 1257048000000,\n \"s\": 1236488400000\n },\n {\n \"e\": 1289102400000,\n \"s\": 1268542800000\n },\n {\n \"e\": 1320552000000,\n \"s\": 1299992400000\n },\n {\n \"e\": 1352001600000,\n \"s\": 1331442000000\n },\n {\n \"e\": 1383451200000,\n \"s\": 1362891600000\n },\n {\n \"e\": 1414900800000,\n \"s\": 1394341200000\n }\n ]\n },\n {\n \"name\": \"America/Santa_Isabel\",\n \"rules\": [\n {\n \"e\": 1225011600000,\n \"s\": 1207476000000\n },\n {\n \"e\": 1256461200000,\n \"s\": 1238925600000\n },\n {\n \"e\": 1288515600000,\n \"s\": 1270375200000\n },\n {\n \"e\": 1319965200000,\n \"s\": 1301824800000\n },\n {\n \"e\": 1351414800000,\n \"s\": 1333274400000\n },\n {\n \"e\": 1382864400000,\n \"s\": 1365328800000\n },\n {\n \"e\": 1414314000000,\n \"s\": 1396778400000\n }\n ]\n },\n {\n \"name\": \"America/Santiago\",\n \"rules\": [\n {\n \"e\": 1206846000000,\n \"s\": 1223784000000\n },\n {\n \"e\": 1237086000000,\n \"s\": 1255233600000\n },\n {\n \"e\": 1270350000000,\n \"s\": 1286683200000\n },\n {\n \"e\": 1304823600000,\n \"s\": 1313899200000\n },\n {\n \"e\": 1335668400000,\n \"s\": 1346558400000\n },\n {\n \"e\": 1367118000000,\n \"s\": 1378612800000\n },\n {\n \"e\": 1398567600000,\n \"s\": 1410062400000\n }\n ]\n },\n {\n \"name\": \"America/Sao_Paulo\",\n \"rules\": [\n {\n \"e\": 1203213600000,\n \"s\": 1224385200000\n },\n {\n \"e\": 1234663200000,\n \"s\": 1255834800000\n },\n {\n \"e\": 1266717600000,\n \"s\": 1287284400000\n },\n {\n \"e\": 1298167200000,\n \"s\": 1318734000000\n },\n {\n \"e\": 1330221600000,\n \"s\": 1350788400000\n },\n {\n \"e\": 1361066400000,\n \"s\": 1382238000000\n },\n {\n \"e\": 1392516000000,\n \"s\": 1413687600000\n }\n ]\n },\n {\n \"name\": \"Asia/Amman\",\n \"rules\": [\n {\n \"e\": 1225404000000,\n \"s\": 1206655200000\n },\n {\n \"e\": 1256853600000,\n \"s\": 1238104800000\n },\n {\n \"e\": 1288303200000,\n \"s\": 1269554400000\n },\n {\n \"e\": 1319752800000,\n \"s\": 1301608800000\n },\n false,\n false,\n {\n \"e\": 1414706400000,\n \"s\": 1395957600000\n }\n ]\n },\n {\n \"name\": \"Asia/Damascus\",\n \"rules\": [\n {\n \"e\": 1225486800000,\n \"s\": 1207260000000\n },\n {\n \"e\": 1256850000000,\n \"s\": 1238104800000\n },\n {\n \"e\": 1288299600000,\n \"s\": 1270159200000\n },\n {\n \"e\": 1319749200000,\n \"s\": 1301608800000\n },\n {\n \"e\": 1351198800000,\n \"s\": 1333058400000\n },\n {\n \"e\": 1382648400000,\n \"s\": 1364508000000\n },\n {\n \"e\": 1414702800000,\n \"s\": 1395957600000\n }\n ]\n },\n {\n \"name\": \"Asia/Dubai\",\n \"rules\": [\n false,\n false,\n false,\n false,\n false,\n false,\n false\n ]\n },\n {\n \"name\": \"Asia/Gaza\",\n \"rules\": [\n {\n \"e\": 1219957200000,\n \"s\": 1206655200000\n },\n {\n \"e\": 1252015200000,\n \"s\": 1238104800000\n },\n {\n \"e\": 1281474000000,\n \"s\": 1269640860000\n },\n {\n \"e\": 1312146000000,\n \"s\": 1301608860000\n },\n {\n \"e\": 1348178400000,\n \"s\": 1333058400000\n },\n {\n \"e\": 1380229200000,\n \"s\": 1364508000000\n },\n {\n \"e\": 1414098000000,\n \"s\": 1395957600000\n }\n ]\n },\n {\n \"name\": \"Asia/Irkutsk\",\n \"rules\": [\n {\n \"e\": 1224957600000,\n \"s\": 1206813600000\n },\n {\n \"e\": 1256407200000,\n \"s\": 1238263200000\n },\n {\n \"e\": 1288461600000,\n \"s\": 1269712800000\n },\n false,\n false,\n false,\n false\n ]\n },\n {\n \"name\": \"Asia/Jerusalem\",\n \"rules\": [\n {\n \"e\": 1223161200000,\n \"s\": 1206662400000\n },\n {\n \"e\": 1254006000000,\n \"s\": 1238112000000\n },\n {\n \"e\": 1284246000000,\n \"s\": 1269561600000\n },\n {\n \"e\": 1317510000000,\n \"s\": 1301616000000\n },\n {\n \"e\": 1348354800000,\n \"s\": 1333065600000\n },\n {\n \"e\": 1382828400000,\n \"s\": 1364515200000\n },\n {\n \"e\": 1414278000000,\n \"s\": 1395964800000\n }\n ]\n },\n {\n \"name\": \"Asia/Kamchatka\",\n \"rules\": [\n {\n \"e\": 1224943200000,\n \"s\": 1206799200000\n },\n {\n \"e\": 1256392800000,\n \"s\": 1238248800000\n },\n {\n \"e\": 1288450800000,\n \"s\": 1269698400000\n },\n false,\n false,\n false,\n false\n ]\n },\n {\n \"name\": \"Asia/Krasnoyarsk\",\n \"rules\": [\n {\n \"e\": 1224961200000,\n \"s\": 1206817200000\n },\n {\n \"e\": 1256410800000,\n \"s\": 1238266800000\n },\n {\n \"e\": 1288465200000,\n \"s\": 1269716400000\n },\n false,\n false,\n false,\n false\n ]\n },\n {\n \"name\": \"Asia/Omsk\",\n \"rules\": [\n {\n \"e\": 1224964800000,\n \"s\": 1206820800000\n },\n {\n \"e\": 1256414400000,\n \"s\": 1238270400000\n },\n {\n \"e\": 1288468800000,\n \"s\": 1269720000000\n },\n false,\n false,\n false,\n false\n ]\n },\n {\n \"name\": \"Asia/Vladivostok\",\n \"rules\": [\n {\n \"e\": 1224950400000,\n \"s\": 1206806400000\n },\n {\n \"e\": 1256400000000,\n \"s\": 1238256000000\n },\n {\n \"e\": 1288454400000,\n \"s\": 1269705600000\n },\n false,\n false,\n false,\n false\n ]\n },\n {\n \"name\": \"Asia/Yakutsk\",\n \"rules\": [\n {\n \"e\": 1224954000000,\n \"s\": 1206810000000\n },\n {\n \"e\": 1256403600000,\n \"s\": 1238259600000\n },\n {\n \"e\": 1288458000000,\n \"s\": 1269709200000\n },\n false,\n false,\n false,\n false\n ]\n },\n {\n \"name\": \"Asia/Yekaterinburg\",\n \"rules\": [\n {\n \"e\": 1224968400000,\n \"s\": 1206824400000\n },\n {\n \"e\": 1256418000000,\n \"s\": 1238274000000\n },\n {\n \"e\": 1288472400000,\n \"s\": 1269723600000\n },\n false,\n false,\n false,\n false\n ]\n },\n {\n \"name\": \"Asia/Yerevan\",\n \"rules\": [\n {\n \"e\": 1224972000000,\n \"s\": 1206828000000\n },\n {\n \"e\": 1256421600000,\n \"s\": 1238277600000\n },\n {\n \"e\": 1288476000000,\n \"s\": 1269727200000\n },\n {\n \"e\": 1319925600000,\n \"s\": 1301176800000\n },\n false,\n false,\n false\n ]\n },\n {\n \"name\": \"Australia/Lord_Howe\",\n \"rules\": [\n {\n \"e\": 1207407600000,\n \"s\": 1223134200000\n },\n {\n \"e\": 1238857200000,\n \"s\": 1254583800000\n },\n {\n \"e\": 1270306800000,\n \"s\": 1286033400000\n },\n {\n \"e\": 1301756400000,\n \"s\": 1317483000000\n },\n {\n \"e\": 1333206000000,\n \"s\": 1349537400000\n },\n {\n \"e\": 1365260400000,\n \"s\": 1380987000000\n },\n {\n \"e\": 1396710000000,\n \"s\": 1412436600000\n }\n ]\n },\n {\n \"name\": \"Australia/Perth\",\n \"rules\": [\n {\n \"e\": 1206813600000,\n \"s\": 1224957600000\n },\n false,\n false,\n false,\n false,\n false,\n false\n ]\n },\n {\n \"name\": \"Europe/Helsinki\",\n \"rules\": [\n {\n \"e\": 1224982800000,\n \"s\": 1206838800000\n },\n {\n \"e\": 1256432400000,\n \"s\": 1238288400000\n },\n {\n \"e\": 1288486800000,\n \"s\": 1269738000000\n },\n {\n \"e\": 1319936400000,\n \"s\": 1301187600000\n },\n {\n \"e\": 1351386000000,\n \"s\": 1332637200000\n },\n {\n \"e\": 1382835600000,\n \"s\": 1364691600000\n },\n {\n \"e\": 1414285200000,\n \"s\": 1396141200000\n }\n ]\n },\n {\n \"name\": \"Europe/Minsk\",\n \"rules\": [\n {\n \"e\": 1224979200000,\n \"s\": 1206835200000\n },\n {\n \"e\": 1256428800000,\n \"s\": 1238284800000\n },\n {\n \"e\": 1288483200000,\n \"s\": 1269734400000\n },\n false,\n false,\n false,\n false\n ]\n },\n {\n \"name\": \"Europe/Moscow\",\n \"rules\": [\n {\n \"e\": 1224975600000,\n \"s\": 1206831600000\n },\n {\n \"e\": 1256425200000,\n \"s\": 1238281200000\n },\n {\n \"e\": 1288479600000,\n \"s\": 1269730800000\n },\n false,\n false,\n false,\n false\n ]\n },\n {\n \"name\": \"Pacific/Apia\",\n \"rules\": [\n false,\n false,\n false,\n {\n \"e\": 1301752800000,\n \"s\": 1316872800000\n },\n {\n \"e\": 1333202400000,\n \"s\": 1348927200000\n },\n {\n \"e\": 1365256800000,\n \"s\": 1380376800000\n },\n {\n \"e\": 1396706400000,\n \"s\": 1411826400000\n }\n ]\n },\n {\n \"name\": \"Pacific/Fiji\",\n \"rules\": [\n false,\n false,\n {\n \"e\": 1269698400000,\n \"s\": 1287842400000\n },\n {\n \"e\": 1327154400000,\n \"s\": 1319292000000\n },\n {\n \"e\": 1358604000000,\n \"s\": 1350741600000\n },\n {\n \"e\": 1390050000000,\n \"s\": 1382796000000\n },\n {\n \"e\": 1421503200000,\n \"s\": 1414850400000\n }\n ]\n },\n {\n \"name\": \"Europe/London\",\n \"rules\": [\n {\n \"e\": 1224982800000,\n \"s\": 1206838800000\n },\n {\n \"e\": 1256432400000,\n \"s\": 1238288400000\n },\n {\n \"e\": 1288486800000,\n \"s\": 1269738000000\n },\n {\n \"e\": 1319936400000,\n \"s\": 1301187600000\n },\n {\n \"e\": 1351386000000,\n \"s\": 1332637200000\n },\n {\n \"e\": 1382835600000,\n \"s\": 1364691600000\n },\n {\n \"e\": 1414285200000,\n \"s\": 1396141200000\n }\n ]\n }\n ]\n};\nif (typeof module !== 'undefined' && typeof module.exports !== 'undefined') {\n module.exports = jstz;\n} else if ((typeof define !== 'undefined' && define !== null) && (define.amd != null)) {\n define([], function() {\n return jstz;\n });\n} else {\n if (typeof root === 'undefined') {\n window.jstz = jstz;\n } else {\n root.jstz = jstz;\n }\n}\n}());\n","module.exports = function() {\n\tthrow new Error(\"define cannot be used indirect\");\n};\n","/* globals __webpack_amd_options__ */\nmodule.exports = __webpack_amd_options__;\n","var moment = module.exports = require(\"./moment-timezone\");\nmoment.tz.load(require('./data/packed/latest.json'));\n","//! moment-timezone.js\n//! version : 0.5.37\n//! Copyright (c) JS Foundation and other contributors\n//! license : MIT\n//! github.com/moment/moment-timezone\n\n(function (root, factory) {\n\t\"use strict\";\n\n\t/*global define*/\n\tif (typeof module === 'object' && module.exports) {\n\t\tmodule.exports = factory(require('moment')); // Node\n\t} else if (typeof define === 'function' && define.amd) {\n\t\tdefine(['moment'], factory); // AMD\n\t} else {\n\t\tfactory(root.moment); // Browser\n\t}\n}(this, function (moment) {\n\t\"use strict\";\n\n\t// Resolves es6 module loading issue\n\tif (moment.version === undefined && moment.default) {\n\t\tmoment = moment.default;\n\t}\n\n\t// Do not load moment-timezone a second time.\n\t// if (moment.tz !== undefined) {\n\t// \tlogError('Moment Timezone ' + moment.tz.version + ' was already loaded ' + (moment.tz.dataVersion ? 'with data from ' : 'without any data') + moment.tz.dataVersion);\n\t// \treturn moment;\n\t// }\n\n\tvar VERSION = \"0.5.37\",\n\t\tzones = {},\n\t\tlinks = {},\n\t\tcountries = {},\n\t\tnames = {},\n\t\tguesses = {},\n\t\tcachedGuess;\n\n\tif (!moment || typeof moment.version !== 'string') {\n\t\tlogError('Moment Timezone requires Moment.js. See https://momentjs.com/timezone/docs/#/use-it/browser/');\n\t}\n\n\tvar momentVersion = moment.version.split('.'),\n\t\tmajor = +momentVersion[0],\n\t\tminor = +momentVersion[1];\n\n\t// Moment.js version check\n\tif (major < 2 || (major === 2 && minor < 6)) {\n\t\tlogError('Moment Timezone requires Moment.js >= 2.6.0. You are using Moment.js ' + moment.version + '. See momentjs.com');\n\t}\n\n\t/************************************\n\t\tUnpacking\n\t************************************/\n\n\tfunction charCodeToInt(charCode) {\n\t\tif (charCode > 96) {\n\t\t\treturn charCode - 87;\n\t\t} else if (charCode > 64) {\n\t\t\treturn charCode - 29;\n\t\t}\n\t\treturn charCode - 48;\n\t}\n\n\tfunction unpackBase60(string) {\n\t\tvar i = 0,\n\t\t\tparts = string.split('.'),\n\t\t\twhole = parts[0],\n\t\t\tfractional = parts[1] || '',\n\t\t\tmultiplier = 1,\n\t\t\tnum,\n\t\t\tout = 0,\n\t\t\tsign = 1;\n\n\t\t// handle negative numbers\n\t\tif (string.charCodeAt(0) === 45) {\n\t\t\ti = 1;\n\t\t\tsign = -1;\n\t\t}\n\n\t\t// handle digits before the decimal\n\t\tfor (i; i < whole.length; i++) {\n\t\t\tnum = charCodeToInt(whole.charCodeAt(i));\n\t\t\tout = 60 * out + num;\n\t\t}\n\n\t\t// handle digits after the decimal\n\t\tfor (i = 0; i < fractional.length; i++) {\n\t\t\tmultiplier = multiplier / 60;\n\t\t\tnum = charCodeToInt(fractional.charCodeAt(i));\n\t\t\tout += num * multiplier;\n\t\t}\n\n\t\treturn out * sign;\n\t}\n\n\tfunction arrayToInt (array) {\n\t\tfor (var i = 0; i < array.length; i++) {\n\t\t\tarray[i] = unpackBase60(array[i]);\n\t\t}\n\t}\n\n\tfunction intToUntil (array, length) {\n\t\tfor (var i = 0; i < length; i++) {\n\t\t\tarray[i] = Math.round((array[i - 1] || 0) + (array[i] * 60000)); // minutes to milliseconds\n\t\t}\n\n\t\tarray[length - 1] = Infinity;\n\t}\n\n\tfunction mapIndices (source, indices) {\n\t\tvar out = [], i;\n\n\t\tfor (i = 0; i < indices.length; i++) {\n\t\t\tout[i] = source[indices[i]];\n\t\t}\n\n\t\treturn out;\n\t}\n\n\tfunction unpack (string) {\n\t\tvar data = string.split('|'),\n\t\t\toffsets = data[2].split(' '),\n\t\t\tindices = data[3].split(''),\n\t\t\tuntils = data[4].split(' ');\n\n\t\tarrayToInt(offsets);\n\t\tarrayToInt(indices);\n\t\tarrayToInt(untils);\n\n\t\tintToUntil(untils, indices.length);\n\n\t\treturn {\n\t\t\tname : data[0],\n\t\t\tabbrs : mapIndices(data[1].split(' '), indices),\n\t\t\toffsets : mapIndices(offsets, indices),\n\t\t\tuntils : untils,\n\t\t\tpopulation : data[5] | 0\n\t\t};\n\t}\n\n\t/************************************\n\t\tZone object\n\t************************************/\n\n\tfunction Zone (packedString) {\n\t\tif (packedString) {\n\t\t\tthis._set(unpack(packedString));\n\t\t}\n\t}\n\n\tZone.prototype = {\n\t\t_set : function (unpacked) {\n\t\t\tthis.name = unpacked.name;\n\t\t\tthis.abbrs = unpacked.abbrs;\n\t\t\tthis.untils = unpacked.untils;\n\t\t\tthis.offsets = unpacked.offsets;\n\t\t\tthis.population = unpacked.population;\n\t\t},\n\n\t\t_index : function (timestamp) {\n\t\t\tvar target = +timestamp,\n\t\t\t\tuntils = this.untils,\n\t\t\t\ti;\n\n\t\t\tfor (i = 0; i < untils.length; i++) {\n\t\t\t\tif (target < untils[i]) {\n\t\t\t\t\treturn i;\n\t\t\t\t}\n\t\t\t}\n\t\t},\n\n\t\tcountries : function () {\n\t\t\tvar zone_name = this.name;\n\t\t\treturn Object.keys(countries).filter(function (country_code) {\n\t\t\t\treturn countries[country_code].zones.indexOf(zone_name) !== -1;\n\t\t\t});\n\t\t},\n\n\t\tparse : function (timestamp) {\n\t\t\tvar target = +timestamp,\n\t\t\t\toffsets = this.offsets,\n\t\t\t\tuntils = this.untils,\n\t\t\t\tmax = untils.length - 1,\n\t\t\t\toffset, offsetNext, offsetPrev, i;\n\n\t\t\tfor (i = 0; i < max; i++) {\n\t\t\t\toffset = offsets[i];\n\t\t\t\toffsetNext = offsets[i + 1];\n\t\t\t\toffsetPrev = offsets[i ? i - 1 : i];\n\n\t\t\t\tif (offset < offsetNext && tz.moveAmbiguousForward) {\n\t\t\t\t\toffset = offsetNext;\n\t\t\t\t} else if (offset > offsetPrev && tz.moveInvalidForward) {\n\t\t\t\t\toffset = offsetPrev;\n\t\t\t\t}\n\n\t\t\t\tif (target < untils[i] - (offset * 60000)) {\n\t\t\t\t\treturn offsets[i];\n\t\t\t\t}\n\t\t\t}\n\n\t\t\treturn offsets[max];\n\t\t},\n\n\t\tabbr : function (mom) {\n\t\t\treturn this.abbrs[this._index(mom)];\n\t\t},\n\n\t\toffset : function (mom) {\n\t\t\tlogError(\"zone.offset has been deprecated in favor of zone.utcOffset\");\n\t\t\treturn this.offsets[this._index(mom)];\n\t\t},\n\n\t\tutcOffset : function (mom) {\n\t\t\treturn this.offsets[this._index(mom)];\n\t\t}\n\t};\n\n\t/************************************\n\t\tCountry object\n\t************************************/\n\n\tfunction Country (country_name, zone_names) {\n\t\tthis.name = country_name;\n\t\tthis.zones = zone_names;\n\t}\n\n\t/************************************\n\t\tCurrent Timezone\n\t************************************/\n\n\tfunction OffsetAt(at) {\n\t\tvar timeString = at.toTimeString();\n\t\tvar abbr = timeString.match(/\\([a-z ]+\\)/i);\n\t\tif (abbr && abbr[0]) {\n\t\t\t// 17:56:31 GMT-0600 (CST)\n\t\t\t// 17:56:31 GMT-0600 (Central Standard Time)\n\t\t\tabbr = abbr[0].match(/[A-Z]/g);\n\t\t\tabbr = abbr ? abbr.join('') : undefined;\n\t\t} else {\n\t\t\t// 17:56:31 CST\n\t\t\t// 17:56:31 GMT+0800 (å°åŒ—標準時間)\n\t\t\tabbr = timeString.match(/[A-Z]{3,5}/g);\n\t\t\tabbr = abbr ? abbr[0] : undefined;\n\t\t}\n\n\t\tif (abbr === 'GMT') {\n\t\t\tabbr = undefined;\n\t\t}\n\n\t\tthis.at = +at;\n\t\tthis.abbr = abbr;\n\t\tthis.offset = at.getTimezoneOffset();\n\t}\n\n\tfunction ZoneScore(zone) {\n\t\tthis.zone = zone;\n\t\tthis.offsetScore = 0;\n\t\tthis.abbrScore = 0;\n\t}\n\n\tZoneScore.prototype.scoreOffsetAt = function (offsetAt) {\n\t\tthis.offsetScore += Math.abs(this.zone.utcOffset(offsetAt.at) - offsetAt.offset);\n\t\tif (this.zone.abbr(offsetAt.at).replace(/[^A-Z]/g, '') !== offsetAt.abbr) {\n\t\t\tthis.abbrScore++;\n\t\t}\n\t};\n\n\tfunction findChange(low, high) {\n\t\tvar mid, diff;\n\n\t\twhile ((diff = ((high.at - low.at) / 12e4 | 0) * 6e4)) {\n\t\t\tmid = new OffsetAt(new Date(low.at + diff));\n\t\t\tif (mid.offset === low.offset) {\n\t\t\t\tlow = mid;\n\t\t\t} else {\n\t\t\t\thigh = mid;\n\t\t\t}\n\t\t}\n\n\t\treturn low;\n\t}\n\n\tfunction userOffsets() {\n\t\tvar startYear = new Date().getFullYear() - 2,\n\t\t\tlast = new OffsetAt(new Date(startYear, 0, 1)),\n\t\t\toffsets = [last],\n\t\t\tchange, next, i;\n\n\t\tfor (i = 1; i < 48; i++) {\n\t\t\tnext = new OffsetAt(new Date(startYear, i, 1));\n\t\t\tif (next.offset !== last.offset) {\n\t\t\t\tchange = findChange(last, next);\n\t\t\t\toffsets.push(change);\n\t\t\t\toffsets.push(new OffsetAt(new Date(change.at + 6e4)));\n\t\t\t}\n\t\t\tlast = next;\n\t\t}\n\n\t\tfor (i = 0; i < 4; i++) {\n\t\t\toffsets.push(new OffsetAt(new Date(startYear + i, 0, 1)));\n\t\t\toffsets.push(new OffsetAt(new Date(startYear + i, 6, 1)));\n\t\t}\n\n\t\treturn offsets;\n\t}\n\n\tfunction sortZoneScores (a, b) {\n\t\tif (a.offsetScore !== b.offsetScore) {\n\t\t\treturn a.offsetScore - b.offsetScore;\n\t\t}\n\t\tif (a.abbrScore !== b.abbrScore) {\n\t\t\treturn a.abbrScore - b.abbrScore;\n\t\t}\n\t\tif (a.zone.population !== b.zone.population) {\n\t\t\treturn b.zone.population - a.zone.population;\n\t\t}\n\t\treturn b.zone.name.localeCompare(a.zone.name);\n\t}\n\n\tfunction addToGuesses (name, offsets) {\n\t\tvar i, offset;\n\t\tarrayToInt(offsets);\n\t\tfor (i = 0; i < offsets.length; i++) {\n\t\t\toffset = offsets[i];\n\t\t\tguesses[offset] = guesses[offset] || {};\n\t\t\tguesses[offset][name] = true;\n\t\t}\n\t}\n\n\tfunction guessesForUserOffsets (offsets) {\n\t\tvar offsetsLength = offsets.length,\n\t\t\tfilteredGuesses = {},\n\t\t\tout = [],\n\t\t\ti, j, guessesOffset;\n\n\t\tfor (i = 0; i < offsetsLength; i++) {\n\t\t\tguessesOffset = guesses[offsets[i].offset] || {};\n\t\t\tfor (j in guessesOffset) {\n\t\t\t\tif (guessesOffset.hasOwnProperty(j)) {\n\t\t\t\t\tfilteredGuesses[j] = true;\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\n\t\tfor (i in filteredGuesses) {\n\t\t\tif (filteredGuesses.hasOwnProperty(i)) {\n\t\t\t\tout.push(names[i]);\n\t\t\t}\n\t\t}\n\n\t\treturn out;\n\t}\n\n\tfunction rebuildGuess () {\n\n\t\t// use Intl API when available and returning valid time zone\n\t\ttry {\n\t\t\tvar intlName = Intl.DateTimeFormat().resolvedOptions().timeZone;\n\t\t\tif (intlName && intlName.length > 3) {\n\t\t\t\tvar name = names[normalizeName(intlName)];\n\t\t\t\tif (name) {\n\t\t\t\t\treturn name;\n\t\t\t\t}\n\t\t\t\tlogError(\"Moment Timezone found \" + intlName + \" from the Intl api, but did not have that data loaded.\");\n\t\t\t}\n\t\t} catch (e) {\n\t\t\t// Intl unavailable, fall back to manual guessing.\n\t\t}\n\n\t\tvar offsets = userOffsets(),\n\t\t\toffsetsLength = offsets.length,\n\t\t\tguesses = guessesForUserOffsets(offsets),\n\t\t\tzoneScores = [],\n\t\t\tzoneScore, i, j;\n\n\t\tfor (i = 0; i < guesses.length; i++) {\n\t\t\tzoneScore = new ZoneScore(getZone(guesses[i]), offsetsLength);\n\t\t\tfor (j = 0; j < offsetsLength; j++) {\n\t\t\t\tzoneScore.scoreOffsetAt(offsets[j]);\n\t\t\t}\n\t\t\tzoneScores.push(zoneScore);\n\t\t}\n\n\t\tzoneScores.sort(sortZoneScores);\n\n\t\treturn zoneScores.length > 0 ? zoneScores[0].zone.name : undefined;\n\t}\n\n\tfunction guess (ignoreCache) {\n\t\tif (!cachedGuess || ignoreCache) {\n\t\t\tcachedGuess = rebuildGuess();\n\t\t}\n\t\treturn cachedGuess;\n\t}\n\n\t/************************************\n\t\tGlobal Methods\n\t************************************/\n\n\tfunction normalizeName (name) {\n\t\treturn (name || '').toLowerCase().replace(/\\//g, '_');\n\t}\n\n\tfunction addZone (packed) {\n\t\tvar i, name, split, normalized;\n\n\t\tif (typeof packed === \"string\") {\n\t\t\tpacked = [packed];\n\t\t}\n\n\t\tfor (i = 0; i < packed.length; i++) {\n\t\t\tsplit = packed[i].split('|');\n\t\t\tname = split[0];\n\t\t\tnormalized = normalizeName(name);\n\t\t\tzones[normalized] = packed[i];\n\t\t\tnames[normalized] = name;\n\t\t\taddToGuesses(normalized, split[2].split(' '));\n\t\t}\n\t}\n\n\tfunction getZone (name, caller) {\n\n\t\tname = normalizeName(name);\n\n\t\tvar zone = zones[name];\n\t\tvar link;\n\n\t\tif (zone instanceof Zone) {\n\t\t\treturn zone;\n\t\t}\n\n\t\tif (typeof zone === 'string') {\n\t\t\tzone = new Zone(zone);\n\t\t\tzones[name] = zone;\n\t\t\treturn zone;\n\t\t}\n\n\t\t// Pass getZone to prevent recursion more than 1 level deep\n\t\tif (links[name] && caller !== getZone && (link = getZone(links[name], getZone))) {\n\t\t\tzone = zones[name] = new Zone();\n\t\t\tzone._set(link);\n\t\t\tzone.name = names[name];\n\t\t\treturn zone;\n\t\t}\n\n\t\treturn null;\n\t}\n\n\tfunction getNames () {\n\t\tvar i, out = [];\n\n\t\tfor (i in names) {\n\t\t\tif (names.hasOwnProperty(i) && (zones[i] || zones[links[i]]) && names[i]) {\n\t\t\t\tout.push(names[i]);\n\t\t\t}\n\t\t}\n\n\t\treturn out.sort();\n\t}\n\n\tfunction getCountryNames () {\n\t\treturn Object.keys(countries);\n\t}\n\n\tfunction addLink (aliases) {\n\t\tvar i, alias, normal0, normal1;\n\n\t\tif (typeof aliases === \"string\") {\n\t\t\taliases = [aliases];\n\t\t}\n\n\t\tfor (i = 0; i < aliases.length; i++) {\n\t\t\talias = aliases[i].split('|');\n\n\t\t\tnormal0 = normalizeName(alias[0]);\n\t\t\tnormal1 = normalizeName(alias[1]);\n\n\t\t\tlinks[normal0] = normal1;\n\t\t\tnames[normal0] = alias[0];\n\n\t\t\tlinks[normal1] = normal0;\n\t\t\tnames[normal1] = alias[1];\n\t\t}\n\t}\n\n\tfunction addCountries (data) {\n\t\tvar i, country_code, country_zones, split;\n\t\tif (!data || !data.length) return;\n\t\tfor (i = 0; i < data.length; i++) {\n\t\t\tsplit = data[i].split('|');\n\t\t\tcountry_code = split[0].toUpperCase();\n\t\t\tcountry_zones = split[1].split(' ');\n\t\t\tcountries[country_code] = new Country(\n\t\t\t\tcountry_code,\n\t\t\t\tcountry_zones\n\t\t\t);\n\t\t}\n\t}\n\n\tfunction getCountry (name) {\n\t\tname = name.toUpperCase();\n\t\treturn countries[name] || null;\n\t}\n\n\tfunction zonesForCountry(country, with_offset) {\n\t\tcountry = getCountry(country);\n\n\t\tif (!country) return null;\n\n\t\tvar zones = country.zones.sort();\n\n\t\tif (with_offset) {\n\t\t\treturn zones.map(function (zone_name) {\n\t\t\t\tvar zone = getZone(zone_name);\n\t\t\t\treturn {\n\t\t\t\t\tname: zone_name,\n\t\t\t\t\toffset: zone.utcOffset(new Date())\n\t\t\t\t};\n\t\t\t});\n\t\t}\n\n\t\treturn zones;\n\t}\n\n\tfunction loadData (data) {\n\t\taddZone(data.zones);\n\t\taddLink(data.links);\n\t\taddCountries(data.countries);\n\t\ttz.dataVersion = data.version;\n\t}\n\n\tfunction zoneExists (name) {\n\t\tif (!zoneExists.didShowError) {\n\t\t\tzoneExists.didShowError = true;\n\t\t\t\tlogError(\"moment.tz.zoneExists('\" + name + \"') has been deprecated in favor of !moment.tz.zone('\" + name + \"')\");\n\t\t}\n\t\treturn !!getZone(name);\n\t}\n\n\tfunction needsOffset (m) {\n\t\tvar isUnixTimestamp = (m._f === 'X' || m._f === 'x');\n\t\treturn !!(m._a && (m._tzm === undefined) && !isUnixTimestamp);\n\t}\n\n\tfunction logError (message) {\n\t\tif (typeof console !== 'undefined' && typeof console.error === 'function') {\n\t\t\tconsole.error(message);\n\t\t}\n\t}\n\n\t/************************************\n\t\tmoment.tz namespace\n\t************************************/\n\n\tfunction tz (input) {\n\t\tvar args = Array.prototype.slice.call(arguments, 0, -1),\n\t\t\tname = arguments[arguments.length - 1],\n\t\t\tzone = getZone(name),\n\t\t\tout = moment.utc.apply(null, args);\n\n\t\tif (zone && !moment.isMoment(input) && needsOffset(out)) {\n\t\t\tout.add(zone.parse(out), 'minutes');\n\t\t}\n\n\t\tout.tz(name);\n\n\t\treturn out;\n\t}\n\n\ttz.version = VERSION;\n\ttz.dataVersion = '';\n\ttz._zones = zones;\n\ttz._links = links;\n\ttz._names = names;\n\ttz._countries\t= countries;\n\ttz.add = addZone;\n\ttz.link = addLink;\n\ttz.load = loadData;\n\ttz.zone = getZone;\n\ttz.zoneExists = zoneExists; // deprecated in 0.1.0\n\ttz.guess = guess;\n\ttz.names = getNames;\n\ttz.Zone = Zone;\n\ttz.unpack = unpack;\n\ttz.unpackBase60 = unpackBase60;\n\ttz.needsOffset = needsOffset;\n\ttz.moveInvalidForward = true;\n\ttz.moveAmbiguousForward = false;\n\ttz.countries = getCountryNames;\n\ttz.zonesForCountry = zonesForCountry;\n\n\t/************************************\n\t\tInterface with Moment.js\n\t************************************/\n\n\tvar fn = moment.fn;\n\n\tmoment.tz = tz;\n\n\tmoment.defaultZone = null;\n\n\tmoment.updateOffset = function (mom, keepTime) {\n\t\tvar zone = moment.defaultZone,\n\t\t\toffset;\n\n\t\tif (mom._z === undefined) {\n\t\t\tif (zone && needsOffset(mom) && !mom._isUTC) {\n\t\t\t\tmom._d = moment.utc(mom._a)._d;\n\t\t\t\tmom.utc().add(zone.parse(mom), 'minutes');\n\t\t\t}\n\t\t\tmom._z = zone;\n\t\t}\n\t\tif (mom._z) {\n\t\t\toffset = mom._z.utcOffset(mom);\n\t\t\tif (Math.abs(offset) < 16) {\n\t\t\t\toffset = offset / 60;\n\t\t\t}\n\t\t\tif (mom.utcOffset !== undefined) {\n\t\t\t\tvar z = mom._z;\n\t\t\t\tmom.utcOffset(-offset, keepTime);\n\t\t\t\tmom._z = z;\n\t\t\t} else {\n\t\t\t\tmom.zone(offset, keepTime);\n\t\t\t}\n\t\t}\n\t};\n\n\tfn.tz = function (name, keepTime) {\n\t\tif (name) {\n\t\t\tif (typeof name !== 'string') {\n\t\t\t\tthrow new Error('Time zone name must be a string, got ' + name + ' [' + typeof name + ']');\n\t\t\t}\n\t\t\tthis._z = getZone(name);\n\t\t\tif (this._z) {\n\t\t\t\tmoment.updateOffset(this, keepTime);\n\t\t\t} else {\n\t\t\t\tlogError(\"Moment Timezone has no data for \" + name + \". See http://momentjs.com/timezone/docs/#/data-loading/.\");\n\t\t\t}\n\t\t\treturn this;\n\t\t}\n\t\tif (this._z) { return this._z.name; }\n\t};\n\n\tfunction abbrWrap (old) {\n\t\treturn function () {\n\t\t\tif (this._z) { return this._z.abbr(this); }\n\t\t\treturn old.call(this);\n\t\t};\n\t}\n\n\tfunction resetZoneWrap (old) {\n\t\treturn function () {\n\t\t\tthis._z = null;\n\t\t\treturn old.apply(this, arguments);\n\t\t};\n\t}\n\n\tfunction resetZoneWrap2 (old) {\n\t\treturn function () {\n\t\t\tif (arguments.length > 0) this._z = null;\n\t\t\treturn old.apply(this, arguments);\n\t\t};\n\t}\n\n\tfn.zoneName = abbrWrap(fn.zoneName);\n\tfn.zoneAbbr = abbrWrap(fn.zoneAbbr);\n\tfn.utc = resetZoneWrap(fn.utc);\n\tfn.local = resetZoneWrap(fn.local);\n\tfn.utcOffset = resetZoneWrap2(fn.utcOffset);\n\n\tmoment.tz.setDefault = function(name) {\n\t\tif (major < 2 || (major === 2 && minor < 9)) {\n\t\t\tlogError('Moment Timezone setDefault() requires Moment.js >= 2.9.0. You are using Moment.js ' + moment.version + '.');\n\t\t}\n\t\tmoment.defaultZone = name ? getZone(name) : null;\n\t\treturn moment;\n\t};\n\n\t// Cloning a moment should include the _z property.\n\tvar momentProperties = moment.momentProperties;\n\tif (Object.prototype.toString.call(momentProperties) === '[object Array]') {\n\t\t// moment 2.8.1+\n\t\tmomentProperties.push('_z');\n\t\tmomentProperties.push('_a');\n\t} else if (momentProperties) {\n\t\t// moment 2.7.0\n\t\tmomentProperties._z = null;\n\t}\n\n\t// INJECT DATA\n\n\treturn moment;\n}));\n","module.exports = function(module) {\n\tif (!module.webpackPolyfill) {\n\t\tmodule.deprecate = function() {};\n\t\tmodule.paths = [];\n\t\t// module.parent = undefined by default\n\t\tif (!module.children) module.children = [];\n\t\tObject.defineProperty(module, \"loaded\", {\n\t\t\tenumerable: true,\n\t\t\tget: function() {\n\t\t\t\treturn module.l;\n\t\t\t}\n\t\t});\n\t\tObject.defineProperty(module, \"id\", {\n\t\t\tenumerable: true,\n\t\t\tget: function() {\n\t\t\t\treturn module.i;\n\t\t\t}\n\t\t});\n\t\tmodule.webpackPolyfill = 1;\n\t}\n\treturn module;\n};\n","var map = {\n\t\"./af\": 34,\n\t\"./af.js\": 34,\n\t\"./ar\": 35,\n\t\"./ar-dz\": 36,\n\t\"./ar-dz.js\": 36,\n\t\"./ar-kw\": 37,\n\t\"./ar-kw.js\": 37,\n\t\"./ar-ly\": 38,\n\t\"./ar-ly.js\": 38,\n\t\"./ar-ma\": 39,\n\t\"./ar-ma.js\": 39,\n\t\"./ar-sa\": 40,\n\t\"./ar-sa.js\": 40,\n\t\"./ar-tn\": 41,\n\t\"./ar-tn.js\": 41,\n\t\"./ar.js\": 35,\n\t\"./az\": 42,\n\t\"./az.js\": 42,\n\t\"./be\": 43,\n\t\"./be.js\": 43,\n\t\"./bg\": 44,\n\t\"./bg.js\": 44,\n\t\"./bm\": 45,\n\t\"./bm.js\": 45,\n\t\"./bn\": 46,\n\t\"./bn-bd\": 47,\n\t\"./bn-bd.js\": 47,\n\t\"./bn.js\": 46,\n\t\"./bo\": 48,\n\t\"./bo.js\": 48,\n\t\"./br\": 49,\n\t\"./br.js\": 49,\n\t\"./bs\": 50,\n\t\"./bs.js\": 50,\n\t\"./ca\": 51,\n\t\"./ca.js\": 51,\n\t\"./cs\": 52,\n\t\"./cs.js\": 52,\n\t\"./cv\": 53,\n\t\"./cv.js\": 53,\n\t\"./cy\": 54,\n\t\"./cy.js\": 54,\n\t\"./da\": 55,\n\t\"./da.js\": 55,\n\t\"./de\": 56,\n\t\"./de-at\": 57,\n\t\"./de-at.js\": 57,\n\t\"./de-ch\": 58,\n\t\"./de-ch.js\": 58,\n\t\"./de.js\": 56,\n\t\"./dv\": 59,\n\t\"./dv.js\": 59,\n\t\"./el\": 60,\n\t\"./el.js\": 60,\n\t\"./en-au\": 61,\n\t\"./en-au.js\": 61,\n\t\"./en-ca\": 62,\n\t\"./en-ca.js\": 62,\n\t\"./en-gb\": 63,\n\t\"./en-gb.js\": 63,\n\t\"./en-ie\": 64,\n\t\"./en-ie.js\": 64,\n\t\"./en-il\": 65,\n\t\"./en-il.js\": 65,\n\t\"./en-in\": 66,\n\t\"./en-in.js\": 66,\n\t\"./en-nz\": 67,\n\t\"./en-nz.js\": 67,\n\t\"./en-sg\": 68,\n\t\"./en-sg.js\": 68,\n\t\"./eo\": 69,\n\t\"./eo.js\": 69,\n\t\"./es\": 70,\n\t\"./es-do\": 71,\n\t\"./es-do.js\": 71,\n\t\"./es-mx\": 72,\n\t\"./es-mx.js\": 72,\n\t\"./es-us\": 73,\n\t\"./es-us.js\": 73,\n\t\"./es.js\": 70,\n\t\"./et\": 74,\n\t\"./et.js\": 74,\n\t\"./eu\": 75,\n\t\"./eu.js\": 75,\n\t\"./fa\": 76,\n\t\"./fa.js\": 76,\n\t\"./fi\": 77,\n\t\"./fi.js\": 77,\n\t\"./fil\": 78,\n\t\"./fil.js\": 78,\n\t\"./fo\": 79,\n\t\"./fo.js\": 79,\n\t\"./fr\": 80,\n\t\"./fr-ca\": 81,\n\t\"./fr-ca.js\": 81,\n\t\"./fr-ch\": 82,\n\t\"./fr-ch.js\": 82,\n\t\"./fr.js\": 80,\n\t\"./fy\": 83,\n\t\"./fy.js\": 83,\n\t\"./ga\": 84,\n\t\"./ga.js\": 84,\n\t\"./gd\": 85,\n\t\"./gd.js\": 85,\n\t\"./gl\": 86,\n\t\"./gl.js\": 86,\n\t\"./gom-deva\": 87,\n\t\"./gom-deva.js\": 87,\n\t\"./gom-latn\": 88,\n\t\"./gom-latn.js\": 88,\n\t\"./gu\": 89,\n\t\"./gu.js\": 89,\n\t\"./he\": 90,\n\t\"./he.js\": 90,\n\t\"./hi\": 91,\n\t\"./hi.js\": 91,\n\t\"./hr\": 92,\n\t\"./hr.js\": 92,\n\t\"./hu\": 93,\n\t\"./hu.js\": 93,\n\t\"./hy-am\": 94,\n\t\"./hy-am.js\": 94,\n\t\"./id\": 95,\n\t\"./id.js\": 95,\n\t\"./is\": 96,\n\t\"./is.js\": 96,\n\t\"./it\": 97,\n\t\"./it-ch\": 98,\n\t\"./it-ch.js\": 98,\n\t\"./it.js\": 97,\n\t\"./ja\": 99,\n\t\"./ja.js\": 99,\n\t\"./jv\": 100,\n\t\"./jv.js\": 100,\n\t\"./ka\": 101,\n\t\"./ka.js\": 101,\n\t\"./kk\": 102,\n\t\"./kk.js\": 102,\n\t\"./km\": 103,\n\t\"./km.js\": 103,\n\t\"./kn\": 104,\n\t\"./kn.js\": 104,\n\t\"./ko\": 105,\n\t\"./ko.js\": 105,\n\t\"./ku\": 106,\n\t\"./ku.js\": 106,\n\t\"./ky\": 107,\n\t\"./ky.js\": 107,\n\t\"./lb\": 108,\n\t\"./lb.js\": 108,\n\t\"./lo\": 109,\n\t\"./lo.js\": 109,\n\t\"./lt\": 110,\n\t\"./lt.js\": 110,\n\t\"./lv\": 111,\n\t\"./lv.js\": 111,\n\t\"./me\": 112,\n\t\"./me.js\": 112,\n\t\"./mi\": 113,\n\t\"./mi.js\": 113,\n\t\"./mk\": 114,\n\t\"./mk.js\": 114,\n\t\"./ml\": 115,\n\t\"./ml.js\": 115,\n\t\"./mn\": 116,\n\t\"./mn.js\": 116,\n\t\"./mr\": 117,\n\t\"./mr.js\": 117,\n\t\"./ms\": 118,\n\t\"./ms-my\": 119,\n\t\"./ms-my.js\": 119,\n\t\"./ms.js\": 118,\n\t\"./mt\": 120,\n\t\"./mt.js\": 120,\n\t\"./my\": 121,\n\t\"./my.js\": 121,\n\t\"./nb\": 122,\n\t\"./nb.js\": 122,\n\t\"./ne\": 123,\n\t\"./ne.js\": 123,\n\t\"./nl\": 124,\n\t\"./nl-be\": 125,\n\t\"./nl-be.js\": 125,\n\t\"./nl.js\": 124,\n\t\"./nn\": 126,\n\t\"./nn.js\": 126,\n\t\"./oc-lnc\": 127,\n\t\"./oc-lnc.js\": 127,\n\t\"./pa-in\": 128,\n\t\"./pa-in.js\": 128,\n\t\"./pl\": 129,\n\t\"./pl.js\": 129,\n\t\"./pt\": 130,\n\t\"./pt-br\": 131,\n\t\"./pt-br.js\": 131,\n\t\"./pt.js\": 130,\n\t\"./ro\": 132,\n\t\"./ro.js\": 132,\n\t\"./ru\": 133,\n\t\"./ru.js\": 133,\n\t\"./sd\": 134,\n\t\"./sd.js\": 134,\n\t\"./se\": 135,\n\t\"./se.js\": 135,\n\t\"./si\": 136,\n\t\"./si.js\": 136,\n\t\"./sk\": 137,\n\t\"./sk.js\": 137,\n\t\"./sl\": 138,\n\t\"./sl.js\": 138,\n\t\"./sq\": 139,\n\t\"./sq.js\": 139,\n\t\"./sr\": 140,\n\t\"./sr-cyrl\": 141,\n\t\"./sr-cyrl.js\": 141,\n\t\"./sr.js\": 140,\n\t\"./ss\": 142,\n\t\"./ss.js\": 142,\n\t\"./sv\": 143,\n\t\"./sv.js\": 143,\n\t\"./sw\": 144,\n\t\"./sw.js\": 144,\n\t\"./ta\": 145,\n\t\"./ta.js\": 145,\n\t\"./te\": 146,\n\t\"./te.js\": 146,\n\t\"./tet\": 147,\n\t\"./tet.js\": 147,\n\t\"./tg\": 148,\n\t\"./tg.js\": 148,\n\t\"./th\": 149,\n\t\"./th.js\": 149,\n\t\"./tk\": 150,\n\t\"./tk.js\": 150,\n\t\"./tl-ph\": 151,\n\t\"./tl-ph.js\": 151,\n\t\"./tlh\": 152,\n\t\"./tlh.js\": 152,\n\t\"./tr\": 153,\n\t\"./tr.js\": 153,\n\t\"./tzl\": 154,\n\t\"./tzl.js\": 154,\n\t\"./tzm\": 155,\n\t\"./tzm-latn\": 156,\n\t\"./tzm-latn.js\": 156,\n\t\"./tzm.js\": 155,\n\t\"./ug-cn\": 157,\n\t\"./ug-cn.js\": 157,\n\t\"./uk\": 158,\n\t\"./uk.js\": 158,\n\t\"./ur\": 159,\n\t\"./ur.js\": 159,\n\t\"./uz\": 160,\n\t\"./uz-latn\": 161,\n\t\"./uz-latn.js\": 161,\n\t\"./uz.js\": 160,\n\t\"./vi\": 162,\n\t\"./vi.js\": 162,\n\t\"./x-pseudo\": 163,\n\t\"./x-pseudo.js\": 163,\n\t\"./yo\": 164,\n\t\"./yo.js\": 164,\n\t\"./zh-cn\": 165,\n\t\"./zh-cn.js\": 165,\n\t\"./zh-hk\": 166,\n\t\"./zh-hk.js\": 166,\n\t\"./zh-mo\": 167,\n\t\"./zh-mo.js\": 167,\n\t\"./zh-tw\": 168,\n\t\"./zh-tw.js\": 168\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 = 225;","module.exports = function () {\n if ($('[data-toggle=\"tooltip\"]').length > 0) {\n $('[data-toggle=\"tooltip\"]').tooltip();\n }\n};\n","module.exports = function () {\n $('.country-selector a').click(function (e) {\n e.preventDefault();\n // to prevent header country selector item list click & to prevent other country selector regression\n if (!window.isDropDownItemClicked || !$(this).parents('.store-switcher-storeswitcher').length) {\n const action = $('.page').data('action');\n const localeCode = $(this).data('locale');\n const localeCurrencyCode = $(this).data('currencycode');\n const queryString = $('.page').data('querystring');\n const url = $('.country-selector').data('url');\n\n $.ajax({\n url: url,\n type: 'get',\n dataType: 'json',\n data: {\n code: localeCode,\n queryString: queryString,\n CurrencyCode: localeCurrencyCode,\n action: action\n },\n success: function (response) {\n $.spinner().stop();\n if (response && response.redirectUrl) {\n window.location.href = response.redirectUrl;\n }\n },\n error: function () {\n $.spinner().stop();\n }\n });\n }\n });\n};\n","const processRecommendations = async (response, element) => {\n const { recommender, loadurl } = element.dataset;\n const recommendedProducts = response[recommender].recs;\n\n if (recommendedProducts && recommendedProducts.length > 0) {\n const recommendations = recommendedProducts.map(({ id }) => {\n return {\n pid: id,\n swatches: true,\n ratings: true,\n showQuickView: false\n };\n });\n\n const url = new URL(loadurl)\n url.searchParams.append('recommendations', JSON.stringify(recommendations));\n\n const fetchResponse = await fetch(url.href);\n const content = await fetchResponse.text();\n\n const carousel = element.querySelector('.einstein-carousel');\n carousel.innerHTML = content;\n\n $(carousel).slick();\n\n if (window.dw && dw.ac) {\n recommendedProducts.forEach(product => {\n dw.ac.capture({ id: product.id, type: dw.ac.EV_PRD_RECOMMENDATION });\n });\n }\n }\n};\n\nmodule.exports = () => {\n if (!window.CQuotient) return;\n\n const EinsteinUtils = window.CQuotient;\n\n const carousels = document.querySelectorAll('.einstein-carousel-global, .einstein-carousel-category, .einstein-carousel-product');\n carousels.forEach(carousel => {\n const { recommender } = carousel.dataset;\n const anchor = carousel.getAttribute('data-anchor');\n\n var params = {\n userId: EinsteinUtils.getCQUserId(),\n cookieId: EinsteinUtils.getCQCookieId(),\n ccver: '1.01'\n };\n\n if (anchor) {\n params.anchors = JSON.parse(anchor);\n }\n\n if (EinsteinUtils.getRecs) {\n EinsteinUtils.getRecs(EinsteinUtils.clientId, recommender, params, (response) => {\n processRecommendations(response, carousel);\n });\n } else {\n EinsteinUtils.widgets = EinsteinUtils.widgets || [];\n EinsteinUtils.widgets.push({\n recommenderName: recommender,\n parameters: params,\n callback: (response) => processRecommendations(response, carousel)\n });\n }\n });\n};\n","'use strict';\n\nlet $cache = {\n pdWidgetWrapper: $('.msrt-wrapper'),\n pdWidget: $('#msrt-container')\n};\n\n/**\n * Launch Pupillary Distance Widget\n */\nfunction launchMsrt() {\n $cache.pdWidgetWrapper.show();\n const params = {\n apiKey: $cache.pdWidget.attr('data-api-key'),\n ...(JSON.parse($cache.pdWidget.attr('data-theme-config') || {})),\n };\n const $resultWrapper = $('.js-pd-result-wrapper');\n const $launchPDBtn = $('.js-launch-pd');\n \n $resultWrapper.addClass('d-none');\n $('body').addClass('modal-open');\n\n window.closeMsrt = function () {\n let scrollTop = 0;\n $cache.pdWidgetWrapper.hide();\n $cache.pdWidget.html('');\n $('body').removeClass('modal-open');\n if ($('.js-customer-pd').html()) {\n $resultWrapper.removeClass('d-none');\n $launchPDBtn.addClass('d-none');\n } else {\n $resultWrapper.addClass('d-none');\n $launchPDBtn.removeClass('d-none');\n }\n };\n\n Msrt.createWidget(\"msrt-container\", {\n ...params,\n onGetResultPd: (result) => {\n let pdValue = result.pd;\n if (result.left && result.right) {\n pdValue += '|' + result.left + '|' + result.right;\n }\n $('body').trigger('rxForm:PDResultReceived', [pdValue]);\n },\n onTooManyErrors: () => { console.log('Errors PD widget'); closeMsrt(); },\n onClose: () => {\n window.closeMsrt();\n }\n });\n};\n\nmodule.exports = {\n init: async function init() {\n $('.js-launch-pd').off('click').on('click', function () {\n launchMsrt();\n });\n $('body').on('rxForm:PDResultReceived', function (e, pdValue) {\n $('.js-customer-pd').html(pdValue);\n if (typeof window.closeMsrt === 'function') {\n window.closeMsrt();\n }\n });\n }\n};\n","'use strict';\n\nmodule.exports = function () {\n if ($('.banner-carousel').length > 0) {\n $('.banner-carousel').slick();\n }\n\n /**\n * Load Vimeo Video on banner\n */\n function loadVideo() {\n $('.experience-component .banner-image').each(function () {\n var $videoContainer = $(this);\n var desktopVideoURL = $videoContainer.data('desktop-video-url');\n var mobileVideoURL = $videoContainer.data('mobile-video-url');\n var videoURL = window.innerWidth >= 992 ? desktopVideoURL : mobileVideoURL;\n\n if (window.innerWidth < 992 && !mobileVideoURL) {\n return; // Don't load the video on mobile if mobile video is not available\n }\n\n // Clear previous video content\n $videoContainer.empty();\n\n // Create new Vimeo div\n var $vimeoDiv = $('<div>', {\n 'data-vimeo-url': videoURL,\n 'data-vimeo-autoplay': 'true',\n 'data-vimeo-loop': 'true',\n 'data-vimeo-controls': 'false',\n 'data-vimeo-muted': 'true',\n 'data-vimeo-playsinline': 'true',\n 'data-vimeo-responsive': 'true'\n });\n\n // Append the Vimeo div to the container\n $videoContainer.append($vimeoDiv);\n\n // Initialize Vimeo player\n new Vimeo.Player($vimeoDiv[0]);\n });\n }\n\n // Check if there are any videos on the page\n var $videoElements = $('.experience-component .banner-image').filter(function () {\n return $(this).data('desktop-video-url') || $(this).data('mobile-video-url');\n });\n\n if ($videoElements.length > 0) {\n // Track the current mode (mobile or desktop)\n var currentMode = window.innerWidth >= 992 ? 'desktop' : 'mobile';\n\n // Load video on page load\n $(document).ready(function () {\n loadVideo();\n });\n\n // Register resize event listener only if there is at least one video\n $(window).resize(function () {\n var newMode = window.innerWidth >= 992 ? 'desktop' : 'mobile';\n\n // Only reload video if the mode has changed\n if (newMode !== currentMode) {\n currentMode = newMode;\n loadVideo();\n }\n });\n }\n};\n","var base = require('./base');\nvar focusHelper = require('base:components/focus');\nvar loadVideo = require('../components/loadVideo');\nvar load3dModel = require('../components/load3dModel');\n/**\n * Generates the modal window on the first call.\n *\n */\nfunction getModalHtmlElement() {\n if ($('#quickViewModal').length !== 0) {\n $('#quickViewModal').remove();\n }\n var htmlString = '<!-- Modal -->'\n + '<div class=\"modal fade\" id=\"quickViewModal\" role=\"dialog\">'\n + '<span class=\"enter-message sr-only\"></span>'\n + '<div class=\"modal-dialog quick-view-dialog modal-xl modal-dialog-centered\">'\n + '<!-- Modal content-->'\n + '<div class=\"modal-content\">'\n + '<div class=\"modal-header\">'\n + ' <a class=\"full-pdp-link\" href=\"\"></a>'\n + ' <button type=\"button\" class=\"close pull-right\" data-dismiss=\"modal\">'\n + ' <span aria-hidden=\"true\">×</span>'\n + ' <span class=\"sr-only\"> </span>'\n + ' </button>'\n + '</div>'\n + '<div class=\"modal-body\"></div>'\n + '<div class=\"modal-footer\"></div>'\n + '</div>'\n + '</div>'\n + '</div>';\n $('body').append(htmlString);\n}\n\n/**\n * @typedef {Object} QuickViewHtml\n * @property {string} body - Main Quick View body\n * @property {string} footer - Quick View footer content\n */\n\n/**\n * Parse HTML code in Ajax response\n *\n * @param {string} html - Rendered HTML from quickview template\n * @return {QuickViewHtml} - QuickView content components\n */\nfunction parseHtml(html) {\n var $html = $('<div>').append($.parseHTML(html));\n\n var body = $html.find('.product-quickview');\n var footer = $html.find('.modal-footer').children();\n\n return { body: body, footer: footer };\n}\n\n/**\n * replaces the content in the modal window on for the selected product variation.\n * @param {string} selectedValueUrl - url to be used to retrieve a new product model\n */\nfunction fillModalElement(selectedValueUrl) {\n $('.modal-body').spinner().start();\n $.ajax({\n url: selectedValueUrl,\n method: 'GET',\n dataType: 'json',\n success: function (data) {\n var parsedHtml = parseHtml(data.renderedTemplate);\n\n $('.modal-body').empty();\n $('.modal-body').html(parsedHtml.body);\n $('.modal-footer').html(parsedHtml.footer);\n $('.full-pdp-link').text(data.quickViewFullDetailMsg);\n $('#quickViewModal .full-pdp-link').attr('href', data.productUrl);\n $('#quickViewModal .size-chart').attr('href', data.productUrl);\n $('#quickViewModal .modal-header .close .sr-only').text(data.closeButtonText);\n $('#quickViewModal .enter-message').text(data.enterDialogMessage);\n $('#quickViewModal').modal('show');\n $('#quickViewModal').trigger('quickview:afterShow'); // for OrderGroove\n $('body').trigger('quickview:ready');\n\n\n $.spinner().stop();\n },\n error: function () {\n $.spinner().stop();\n }\n });\n}\n\nmodule.exports = {\n showQuickview: function () {\n $('body').on('click', '.quickview', function (e) {\n e.preventDefault();\n var selectedValueUrl = $(this).closest('a.quickview').attr('href');\n $(e.target).trigger('quickview:show');\n getModalHtmlElement();\n fillModalElement(selectedValueUrl);\n });\n $('body').on('quickview:ready', function() {\n load3dModel.bind3dModel();\n loadVideo();\n });\n },\n focusQuickview: function () {\n $('body').on('shown.bs.modal', '#quickViewModal', function () {\n $('#quickViewModal .close').focus();\n });\n },\n trapQuickviewFocus: function () {\n $('body').on('keydown', '#quickViewModal', function (e) {\n var focusParams = {\n event: e,\n containerSelector: '#quickViewModal',\n firstElementSelector: '.full-pdp-link',\n lastElementSelector: '.add-to-cart-global',\n nextToLastElementSelector: '.modal-footer .quantity-select'\n };\n focusHelper.setTabNextFocus(focusParams);\n });\n },\n availability: base.availability,\n addToCart: function () {\n //If the current page is a PDP then add to cart event is already created\n if ($('.page[data-action=Product-Show').length === 0) {\n base.addToCart();\n }\n },\n showSpinner: function () {\n $('body').on('product:beforeAddToCart', function (e, data) {\n $(data).closest('.modal-content').spinner().start();\n });\n },\n hideDialog: function () {\n $('body').on('product:afterAddToCart', function () {\n $('#quickViewModal').modal('hide');\n });\n },\n beforeUpdateAttribute: function () {\n $('body').on('product:beforeAttributeSelect', function () {\n $('.modal.show .modal-content').spinner().start();\n });\n },\n updateAttribute: function () {\n $('body').on('product:afterAttributeSelect', function (e, response) {\n if ($('.modal.show .product-quickview>.bundle-items').length) {\n $('.modal.show').find(response.container).data('pid', response.data.product.id);\n $('.modal.show').find(response.container)\n .find('.product-id').text(response.data.product.id);\n } else if ($('.set-items').length) {\n response.container.find('.product-id').text(response.data.product.id);\n } else {\n $('.modal.show .product-quickview').data('pid', response.data.product.id);\n $('.modal.show .full-pdp-link')\n .attr('href', response.data.product.selectedProductUrl);\n if ($('.product-quickview .frame-color-value').length > 0 && response.data.product.frameColor && response.data.product.frameColor.length > 0) {\n $('.product-quickview .lens-attributes').removeClass('d-none');\n $('.product-quickview .frame-color-value').html(response.data.product.frameColor);\n }\n if ($('.product-quickview .lens-name-value').length > 0 && response.data.product.lensName && response.data.product.lensName.length > 0) {\n $('.product-quickview .lens-attributes').removeClass('d-none');\n $('.product-quickview .lens-name-value').html(response.data.product.lensName);\n }\n }\n });\n },\n updateAddToCart: function () {\n $('body').on('product:updateAddToCart', function (e, response) {\n // update local add to cart (for sets)\n $('button.add-to-cart', response.$productContainer).attr('disabled',\n (!response.product.readyToOrder || !response.product.available));\n\n // update global add to cart (single products, bundles)\n var dialog = $(response.$productContainer)\n .closest('.quick-view-dialog');\n\n $('.add-to-cart-global', dialog).attr('disabled',\n !$('.global-availability', dialog).data('ready-to-order')\n || !$('.global-availability', dialog).data('available'));\n });\n },\n updateAvailability: function () {\n $('body').on('product:updateAvailability', function (e, response) {\n // bundle individual products\n $('.product-availability', response.$productContainer)\n .data('ready-to-order', response.product.readyToOrder)\n .data('available', response.product.available)\n .find('.availability-msg')\n .empty()\n .html(response.message);\n\n\n var dialog = $(response.$productContainer)\n .closest('.quick-view-dialog');\n\n if ($('.product-availability', dialog).length) {\n // bundle all products\n var allAvailable = $('.product-availability', dialog).toArray()\n .every(function (item) { return $(item).data('available'); });\n\n var allReady = $('.product-availability', dialog).toArray()\n .every(function (item) { return $(item).data('ready-to-order'); });\n\n $('.global-availability', dialog)\n .data('ready-to-order', allReady)\n .data('available', allAvailable);\n\n $('.global-availability .availability-msg', dialog).empty()\n .html(allReady ? response.message : response.resources.info_selectforstock);\n } else {\n // single product\n $('.global-availability', dialog)\n .data('ready-to-order', response.product.readyToOrder)\n .data('available', response.product.available)\n .find('.availability-msg')\n .empty()\n .html(response.message);\n }\n });\n }\n};\n","(function(window, factory) {\n\tvar lazySizes = factory(window, window.document, Date);\n\twindow.lazySizes = lazySizes;\n\tif(typeof module == 'object' && module.exports){\n\t\tmodule.exports = lazySizes;\n\t}\n}(typeof window != 'undefined' ?\n window : {}, \n/**\n * import(\"./types/global\")\n * @typedef { import(\"./types/lazysizes-config\").LazySizesConfigPartial } LazySizesConfigPartial\n */\nfunction l(window, document, Date) { // Pass in the window Date function also for SSR because the Date class can be lost\n\t'use strict';\n\t/*jshint eqnull:true */\n\n\tvar lazysizes,\n\t\t/**\n\t\t * @type { LazySizesConfigPartial }\n\t\t */\n\t\tlazySizesCfg;\n\n\t(function(){\n\t\tvar prop;\n\n\t\tvar lazySizesDefaults = {\n\t\t\tlazyClass: 'lazyload',\n\t\t\tloadedClass: 'lazyloaded',\n\t\t\tloadingClass: 'lazyloading',\n\t\t\tpreloadClass: 'lazypreload',\n\t\t\terrorClass: 'lazyerror',\n\t\t\t//strictClass: 'lazystrict',\n\t\t\tautosizesClass: 'lazyautosizes',\n\t\t\tfastLoadedClass: 'ls-is-cached',\n\t\t\tiframeLoadMode: 0,\n\t\t\tsrcAttr: 'data-src',\n\t\t\tsrcsetAttr: 'data-srcset',\n\t\t\tsizesAttr: 'data-sizes',\n\t\t\t//preloadAfterLoad: false,\n\t\t\tminSize: 40,\n\t\t\tcustomMedia: {},\n\t\t\tinit: true,\n\t\t\texpFactor: 1.5,\n\t\t\thFac: 0.8,\n\t\t\tloadMode: 2,\n\t\t\tloadHidden: true,\n\t\t\tricTimeout: 0,\n\t\t\tthrottleDelay: 125,\n\t\t};\n\n\t\tlazySizesCfg = window.lazySizesConfig || window.lazysizesConfig || {};\n\n\t\tfor(prop in lazySizesDefaults){\n\t\t\tif(!(prop in lazySizesCfg)){\n\t\t\t\tlazySizesCfg[prop] = lazySizesDefaults[prop];\n\t\t\t}\n\t\t}\n\t})();\n\n\tif (!document || !document.getElementsByClassName) {\n\t\treturn {\n\t\t\tinit: function () {},\n\t\t\t/**\n\t\t\t * @type { LazySizesConfigPartial }\n\t\t\t */\n\t\t\tcfg: lazySizesCfg,\n\t\t\t/**\n\t\t\t * @type { true }\n\t\t\t */\n\t\t\tnoSupport: true,\n\t\t};\n\t}\n\n\tvar docElem = document.documentElement;\n\n\tvar supportPicture = window.HTMLPictureElement;\n\n\tvar _addEventListener = 'addEventListener';\n\n\tvar _getAttribute = 'getAttribute';\n\n\t/**\n\t * Update to bind to window because 'this' becomes null during SSR\n\t * builds.\n\t */\n\tvar addEventListener = window[_addEventListener].bind(window);\n\n\tvar setTimeout = window.setTimeout;\n\n\tvar requestAnimationFrame = window.requestAnimationFrame || setTimeout;\n\n\tvar requestIdleCallback = window.requestIdleCallback;\n\n\tvar regPicture = /^picture$/i;\n\n\tvar loadEvents = ['load', 'error', 'lazyincluded', '_lazyloaded'];\n\n\tvar regClassCache = {};\n\n\tvar forEach = Array.prototype.forEach;\n\n\t/**\n\t * @param ele {Element}\n\t * @param cls {string}\n\t */\n\tvar hasClass = function(ele, cls) {\n\t\tif(!regClassCache[cls]){\n\t\t\tregClassCache[cls] = new RegExp('(\\\\s|^)'+cls+'(\\\\s|$)');\n\t\t}\n\t\treturn regClassCache[cls].test(ele[_getAttribute]('class') || '') && regClassCache[cls];\n\t};\n\n\t/**\n\t * @param ele {Element}\n\t * @param cls {string}\n\t */\n\tvar addClass = function(ele, cls) {\n\t\tif (!hasClass(ele, cls)){\n\t\t\tele.setAttribute('class', (ele[_getAttribute]('class') || '').trim() + ' ' + cls);\n\t\t}\n\t};\n\n\t/**\n\t * @param ele {Element}\n\t * @param cls {string}\n\t */\n\tvar removeClass = function(ele, cls) {\n\t\tvar reg;\n\t\tif ((reg = hasClass(ele,cls))) {\n\t\t\tele.setAttribute('class', (ele[_getAttribute]('class') || '').replace(reg, ' '));\n\t\t}\n\t};\n\n\tvar addRemoveLoadEvents = function(dom, fn, add){\n\t\tvar action = add ? _addEventListener : 'removeEventListener';\n\t\tif(add){\n\t\t\taddRemoveLoadEvents(dom, fn);\n\t\t}\n\t\tloadEvents.forEach(function(evt){\n\t\t\tdom[action](evt, fn);\n\t\t});\n\t};\n\n\t/**\n\t * @param elem { Element }\n\t * @param name { string }\n\t * @param detail { any }\n\t * @param noBubbles { boolean }\n\t * @param noCancelable { boolean }\n\t * @returns { CustomEvent }\n\t */\n\tvar triggerEvent = function(elem, name, detail, noBubbles, noCancelable){\n\t\tvar event = document.createEvent('Event');\n\n\t\tif(!detail){\n\t\t\tdetail = {};\n\t\t}\n\n\t\tdetail.instance = lazysizes;\n\n\t\tevent.initEvent(name, !noBubbles, !noCancelable);\n\n\t\tevent.detail = detail;\n\n\t\telem.dispatchEvent(event);\n\t\treturn event;\n\t};\n\n\tvar updatePolyfill = function (el, full){\n\t\tvar polyfill;\n\t\tif( !supportPicture && ( polyfill = (window.picturefill || lazySizesCfg.pf) ) ){\n\t\t\tif(full && full.src && !el[_getAttribute]('srcset')){\n\t\t\t\tel.setAttribute('srcset', full.src);\n\t\t\t}\n\t\t\tpolyfill({reevaluate: true, elements: [el]});\n\t\t} else if(full && full.src){\n\t\t\tel.src = full.src;\n\t\t}\n\t};\n\n\tvar getCSS = function (elem, style){\n\t\treturn (getComputedStyle(elem, null) || {})[style];\n\t};\n\n\t/**\n\t *\n\t * @param elem { Element }\n\t * @param parent { Element }\n\t * @param [width] {number}\n\t * @returns {number}\n\t */\n\tvar getWidth = function(elem, parent, width){\n\t\twidth = width || elem.offsetWidth;\n\n\t\twhile(width < lazySizesCfg.minSize && parent && !elem._lazysizesWidth){\n\t\t\twidth = parent.offsetWidth;\n\t\t\tparent = parent.parentNode;\n\t\t}\n\n\t\treturn width;\n\t};\n\n\tvar rAF = (function(){\n\t\tvar running, waiting;\n\t\tvar firstFns = [];\n\t\tvar secondFns = [];\n\t\tvar fns = firstFns;\n\n\t\tvar run = function(){\n\t\t\tvar runFns = fns;\n\n\t\t\tfns = firstFns.length ? secondFns : firstFns;\n\n\t\t\trunning = true;\n\t\t\twaiting = false;\n\n\t\t\twhile(runFns.length){\n\t\t\t\trunFns.shift()();\n\t\t\t}\n\n\t\t\trunning = false;\n\t\t};\n\n\t\tvar rafBatch = function(fn, queue){\n\t\t\tif(running && !queue){\n\t\t\t\tfn.apply(this, arguments);\n\t\t\t} else {\n\t\t\t\tfns.push(fn);\n\n\t\t\t\tif(!waiting){\n\t\t\t\t\twaiting = true;\n\t\t\t\t\t(document.hidden ? setTimeout : requestAnimationFrame)(run);\n\t\t\t\t}\n\t\t\t}\n\t\t};\n\n\t\trafBatch._lsFlush = run;\n\n\t\treturn rafBatch;\n\t})();\n\n\tvar rAFIt = function(fn, simple){\n\t\treturn simple ?\n\t\t\tfunction() {\n\t\t\t\trAF(fn);\n\t\t\t} :\n\t\t\tfunction(){\n\t\t\t\tvar that = this;\n\t\t\t\tvar args = arguments;\n\t\t\t\trAF(function(){\n\t\t\t\t\tfn.apply(that, args);\n\t\t\t\t});\n\t\t\t}\n\t\t;\n\t};\n\n\tvar throttle = function(fn){\n\t\tvar running;\n\t\tvar lastTime = 0;\n\t\tvar gDelay = lazySizesCfg.throttleDelay;\n\t\tvar rICTimeout = lazySizesCfg.ricTimeout;\n\t\tvar run = function(){\n\t\t\trunning = false;\n\t\t\tlastTime = Date.now();\n\t\t\tfn();\n\t\t};\n\t\tvar idleCallback = requestIdleCallback && rICTimeout > 49 ?\n\t\t\tfunction(){\n\t\t\t\trequestIdleCallback(run, {timeout: rICTimeout});\n\n\t\t\t\tif(rICTimeout !== lazySizesCfg.ricTimeout){\n\t\t\t\t\trICTimeout = lazySizesCfg.ricTimeout;\n\t\t\t\t}\n\t\t\t} :\n\t\t\trAFIt(function(){\n\t\t\t\tsetTimeout(run);\n\t\t\t}, true)\n\t\t;\n\n\t\treturn function(isPriority){\n\t\t\tvar delay;\n\n\t\t\tif((isPriority = isPriority === true)){\n\t\t\t\trICTimeout = 33;\n\t\t\t}\n\n\t\t\tif(running){\n\t\t\t\treturn;\n\t\t\t}\n\n\t\t\trunning = true;\n\n\t\t\tdelay = gDelay - (Date.now() - lastTime);\n\n\t\t\tif(delay < 0){\n\t\t\t\tdelay = 0;\n\t\t\t}\n\n\t\t\tif(isPriority || delay < 9){\n\t\t\t\tidleCallback();\n\t\t\t} else {\n\t\t\t\tsetTimeout(idleCallback, delay);\n\t\t\t}\n\t\t};\n\t};\n\n\t//based on http://modernjavascript.blogspot.de/2013/08/building-better-debounce.html\n\tvar debounce = function(func) {\n\t\tvar timeout, timestamp;\n\t\tvar wait = 99;\n\t\tvar run = function(){\n\t\t\ttimeout = null;\n\t\t\tfunc();\n\t\t};\n\t\tvar later = function() {\n\t\t\tvar last = Date.now() - timestamp;\n\n\t\t\tif (last < wait) {\n\t\t\t\tsetTimeout(later, wait - last);\n\t\t\t} else {\n\t\t\t\t(requestIdleCallback || run)(run);\n\t\t\t}\n\t\t};\n\n\t\treturn function() {\n\t\t\ttimestamp = Date.now();\n\n\t\t\tif (!timeout) {\n\t\t\t\ttimeout = setTimeout(later, wait);\n\t\t\t}\n\t\t};\n\t};\n\n\tvar loader = (function(){\n\t\tvar preloadElems, isCompleted, resetPreloadingTimer, loadMode, started;\n\n\t\tvar eLvW, elvH, eLtop, eLleft, eLright, eLbottom, isBodyHidden;\n\n\t\tvar regImg = /^img$/i;\n\t\tvar regIframe = /^iframe$/i;\n\n\t\tvar supportScroll = ('onscroll' in window) && !(/(gle|ing)bot/.test(navigator.userAgent));\n\n\t\tvar shrinkExpand = 0;\n\t\tvar currentExpand = 0;\n\n\t\tvar isLoading = 0;\n\t\tvar lowRuns = -1;\n\n\t\tvar resetPreloading = function(e){\n\t\t\tisLoading--;\n\t\t\tif(!e || isLoading < 0 || !e.target){\n\t\t\t\tisLoading = 0;\n\t\t\t}\n\t\t};\n\n\t\tvar isVisible = function (elem) {\n\t\t\tif (isBodyHidden == null) {\n\t\t\t\tisBodyHidden = getCSS(document.body, 'visibility') == 'hidden';\n\t\t\t}\n\n\t\t\treturn isBodyHidden || !(getCSS(elem.parentNode, 'visibility') == 'hidden' && getCSS(elem, 'visibility') == 'hidden');\n\t\t};\n\n\t\tvar isNestedVisible = function(elem, elemExpand){\n\t\t\tvar outerRect;\n\t\t\tvar parent = elem;\n\t\t\tvar visible = isVisible(elem);\n\n\t\t\teLtop -= elemExpand;\n\t\t\teLbottom += elemExpand;\n\t\t\teLleft -= elemExpand;\n\t\t\teLright += elemExpand;\n\n\t\t\twhile(visible && (parent = parent.offsetParent) && parent != document.body && parent != docElem){\n\t\t\t\tvisible = ((getCSS(parent, 'opacity') || 1) > 0);\n\n\t\t\t\tif(visible && getCSS(parent, 'overflow') != 'visible'){\n\t\t\t\t\touterRect = parent.getBoundingClientRect();\n\t\t\t\t\tvisible = eLright > outerRect.left &&\n\t\t\t\t\t\teLleft < outerRect.right &&\n\t\t\t\t\t\teLbottom > outerRect.top - 1 &&\n\t\t\t\t\t\teLtop < outerRect.bottom + 1\n\t\t\t\t\t;\n\t\t\t\t}\n\t\t\t}\n\n\t\t\treturn visible;\n\t\t};\n\n\t\tvar checkElements = function() {\n\t\t\tvar eLlen, i, rect, autoLoadElem, loadedSomething, elemExpand, elemNegativeExpand, elemExpandVal,\n\t\t\t\tbeforeExpandVal, defaultExpand, preloadExpand, hFac;\n\t\t\tvar lazyloadElems = lazysizes.elements;\n\n\t\t\tif((loadMode = lazySizesCfg.loadMode) && isLoading < 8 && (eLlen = lazyloadElems.length)){\n\n\t\t\t\ti = 0;\n\n\t\t\t\tlowRuns++;\n\n\t\t\t\tfor(; i < eLlen; i++){\n\n\t\t\t\t\tif(!lazyloadElems[i] || lazyloadElems[i]._lazyRace){continue;}\n\n\t\t\t\t\tif(!supportScroll || (lazysizes.prematureUnveil && lazysizes.prematureUnveil(lazyloadElems[i]))){unveilElement(lazyloadElems[i]);continue;}\n\n\t\t\t\t\tif(!(elemExpandVal = lazyloadElems[i][_getAttribute]('data-expand')) || !(elemExpand = elemExpandVal * 1)){\n\t\t\t\t\t\telemExpand = currentExpand;\n\t\t\t\t\t}\n\n\t\t\t\t\tif (!defaultExpand) {\n\t\t\t\t\t\tdefaultExpand = (!lazySizesCfg.expand || lazySizesCfg.expand < 1) ?\n\t\t\t\t\t\t\tdocElem.clientHeight > 500 && docElem.clientWidth > 500 ? 500 : 370 :\n\t\t\t\t\t\t\tlazySizesCfg.expand;\n\n\t\t\t\t\t\tlazysizes._defEx = defaultExpand;\n\n\t\t\t\t\t\tpreloadExpand = defaultExpand * lazySizesCfg.expFactor;\n\t\t\t\t\t\thFac = lazySizesCfg.hFac;\n\t\t\t\t\t\tisBodyHidden = null;\n\n\t\t\t\t\t\tif(currentExpand < preloadExpand && isLoading < 1 && lowRuns > 2 && loadMode > 2 && !document.hidden){\n\t\t\t\t\t\t\tcurrentExpand = preloadExpand;\n\t\t\t\t\t\t\tlowRuns = 0;\n\t\t\t\t\t\t} else if(loadMode > 1 && lowRuns > 1 && isLoading < 6){\n\t\t\t\t\t\t\tcurrentExpand = defaultExpand;\n\t\t\t\t\t\t} else {\n\t\t\t\t\t\t\tcurrentExpand = shrinkExpand;\n\t\t\t\t\t\t}\n\t\t\t\t\t}\n\n\t\t\t\t\tif(beforeExpandVal !== elemExpand){\n\t\t\t\t\t\teLvW = innerWidth + (elemExpand * hFac);\n\t\t\t\t\t\telvH = innerHeight + elemExpand;\n\t\t\t\t\t\telemNegativeExpand = elemExpand * -1;\n\t\t\t\t\t\tbeforeExpandVal = elemExpand;\n\t\t\t\t\t}\n\n\t\t\t\t\trect = lazyloadElems[i].getBoundingClientRect();\n\n\t\t\t\t\tif ((eLbottom = rect.bottom) >= elemNegativeExpand &&\n\t\t\t\t\t\t(eLtop = rect.top) <= elvH &&\n\t\t\t\t\t\t(eLright = rect.right) >= elemNegativeExpand * hFac &&\n\t\t\t\t\t\t(eLleft = rect.left) <= eLvW &&\n\t\t\t\t\t\t(eLbottom || eLright || eLleft || eLtop) &&\n\t\t\t\t\t\t(lazySizesCfg.loadHidden || isVisible(lazyloadElems[i])) &&\n\t\t\t\t\t\t((isCompleted && isLoading < 3 && !elemExpandVal && (loadMode < 3 || lowRuns < 4)) || isNestedVisible(lazyloadElems[i], elemExpand))){\n\t\t\t\t\t\tunveilElement(lazyloadElems[i]);\n\t\t\t\t\t\tloadedSomething = true;\n\t\t\t\t\t\tif(isLoading > 9){break;}\n\t\t\t\t\t} else if(!loadedSomething && isCompleted && !autoLoadElem &&\n\t\t\t\t\t\tisLoading < 4 && lowRuns < 4 && loadMode > 2 &&\n\t\t\t\t\t\t(preloadElems[0] || lazySizesCfg.preloadAfterLoad) &&\n\t\t\t\t\t\t(preloadElems[0] || (!elemExpandVal && ((eLbottom || eLright || eLleft || eLtop) || lazyloadElems[i][_getAttribute](lazySizesCfg.sizesAttr) != 'auto')))){\n\t\t\t\t\t\tautoLoadElem = preloadElems[0] || lazyloadElems[i];\n\t\t\t\t\t}\n\t\t\t\t}\n\n\t\t\t\tif(autoLoadElem && !loadedSomething){\n\t\t\t\t\tunveilElement(autoLoadElem);\n\t\t\t\t}\n\t\t\t}\n\t\t};\n\n\t\tvar throttledCheckElements = throttle(checkElements);\n\n\t\tvar switchLoadingClass = function(e){\n\t\t\tvar elem = e.target;\n\n\t\t\tif (elem._lazyCache) {\n\t\t\t\tdelete elem._lazyCache;\n\t\t\t\treturn;\n\t\t\t}\n\n\t\t\tresetPreloading(e);\n\t\t\taddClass(elem, lazySizesCfg.loadedClass);\n\t\t\tremoveClass(elem, lazySizesCfg.loadingClass);\n\t\t\taddRemoveLoadEvents(elem, rafSwitchLoadingClass);\n\t\t\ttriggerEvent(elem, 'lazyloaded');\n\t\t};\n\t\tvar rafedSwitchLoadingClass = rAFIt(switchLoadingClass);\n\t\tvar rafSwitchLoadingClass = function(e){\n\t\t\trafedSwitchLoadingClass({target: e.target});\n\t\t};\n\n\t\tvar changeIframeSrc = function(elem, src){\n\t\t\tvar loadMode = elem.getAttribute('data-load-mode') || lazySizesCfg.iframeLoadMode;\n\n\t\t\t// loadMode can be also a string!\n\t\t\tif (loadMode == 0) {\n\t\t\t\telem.contentWindow.location.replace(src);\n\t\t\t} else if (loadMode == 1) {\n\t\t\t\telem.src = src;\n\t\t\t}\n\t\t};\n\n\t\tvar handleSources = function(source){\n\t\t\tvar customMedia;\n\n\t\t\tvar sourceSrcset = source[_getAttribute](lazySizesCfg.srcsetAttr);\n\n\t\t\tif( (customMedia = lazySizesCfg.customMedia[source[_getAttribute]('data-media') || source[_getAttribute]('media')]) ){\n\t\t\t\tsource.setAttribute('media', customMedia);\n\t\t\t}\n\n\t\t\tif(sourceSrcset){\n\t\t\t\tsource.setAttribute('srcset', sourceSrcset);\n\t\t\t}\n\t\t};\n\n\t\tvar lazyUnveil = rAFIt(function (elem, detail, isAuto, sizes, isImg){\n\t\t\tvar src, srcset, parent, isPicture, event, firesLoad;\n\n\t\t\tif(!(event = triggerEvent(elem, 'lazybeforeunveil', detail)).defaultPrevented){\n\n\t\t\t\tif(sizes){\n\t\t\t\t\tif(isAuto){\n\t\t\t\t\t\taddClass(elem, lazySizesCfg.autosizesClass);\n\t\t\t\t\t} else {\n\t\t\t\t\t\telem.setAttribute('sizes', sizes);\n\t\t\t\t\t}\n\t\t\t\t}\n\n\t\t\t\tsrcset = elem[_getAttribute](lazySizesCfg.srcsetAttr);\n\t\t\t\tsrc = elem[_getAttribute](lazySizesCfg.srcAttr);\n\n\t\t\t\tif(isImg) {\n\t\t\t\t\tparent = elem.parentNode;\n\t\t\t\t\tisPicture = parent && regPicture.test(parent.nodeName || '');\n\t\t\t\t}\n\n\t\t\t\tfiresLoad = detail.firesLoad || (('src' in elem) && (srcset || src || isPicture));\n\n\t\t\t\tevent = {target: elem};\n\n\t\t\t\taddClass(elem, lazySizesCfg.loadingClass);\n\n\t\t\t\tif(firesLoad){\n\t\t\t\t\tclearTimeout(resetPreloadingTimer);\n\t\t\t\t\tresetPreloadingTimer = setTimeout(resetPreloading, 2500);\n\t\t\t\t\taddRemoveLoadEvents(elem, rafSwitchLoadingClass, true);\n\t\t\t\t}\n\n\t\t\t\tif(isPicture){\n\t\t\t\t\tforEach.call(parent.getElementsByTagName('source'), handleSources);\n\t\t\t\t}\n\n\t\t\t\tif(srcset){\n\t\t\t\t\telem.setAttribute('srcset', srcset);\n\t\t\t\t} else if(src && !isPicture){\n\t\t\t\t\tif(regIframe.test(elem.nodeName)){\n\t\t\t\t\t\tchangeIframeSrc(elem, src);\n\t\t\t\t\t} else {\n\t\t\t\t\t\telem.src = src;\n\t\t\t\t\t}\n\t\t\t\t}\n\n\t\t\t\tif(isImg && (srcset || isPicture)){\n\t\t\t\t\tupdatePolyfill(elem, {src: src});\n\t\t\t\t}\n\t\t\t}\n\n\t\t\tif(elem._lazyRace){\n\t\t\t\tdelete elem._lazyRace;\n\t\t\t}\n\t\t\tremoveClass(elem, lazySizesCfg.lazyClass);\n\n\t\t\trAF(function(){\n\t\t\t\t// Part of this can be removed as soon as this fix is older: https://bugs.chromium.org/p/chromium/issues/detail?id=7731 (2015)\n\t\t\t\tvar isLoaded = elem.complete && elem.naturalWidth > 1;\n\n\t\t\t\tif( !firesLoad || isLoaded){\n\t\t\t\t\tif (isLoaded) {\n\t\t\t\t\t\taddClass(elem, lazySizesCfg.fastLoadedClass);\n\t\t\t\t\t}\n\t\t\t\t\tswitchLoadingClass(event);\n\t\t\t\t\telem._lazyCache = true;\n\t\t\t\t\tsetTimeout(function(){\n\t\t\t\t\t\tif ('_lazyCache' in elem) {\n\t\t\t\t\t\t\tdelete elem._lazyCache;\n\t\t\t\t\t\t}\n\t\t\t\t\t}, 9);\n\t\t\t\t}\n\t\t\t\tif (elem.loading == 'lazy') {\n\t\t\t\t\tisLoading--;\n\t\t\t\t}\n\t\t\t}, true);\n\t\t});\n\n\t\t/**\n\t\t *\n\t\t * @param elem { Element }\n\t\t */\n\t\tvar unveilElement = function (elem){\n\t\t\tif (elem._lazyRace) {return;}\n\t\t\tvar detail;\n\n\t\t\tvar isImg = regImg.test(elem.nodeName);\n\n\t\t\t//allow using sizes=\"auto\", but don't use. it's invalid. Use data-sizes=\"auto\" or a valid value for sizes instead (i.e.: sizes=\"80vw\")\n\t\t\tvar sizes = isImg && (elem[_getAttribute](lazySizesCfg.sizesAttr) || elem[_getAttribute]('sizes'));\n\t\t\tvar isAuto = sizes == 'auto';\n\n\t\t\tif( (isAuto || !isCompleted) && isImg && (elem[_getAttribute]('src') || elem.srcset) && !elem.complete && !hasClass(elem, lazySizesCfg.errorClass) && hasClass(elem, lazySizesCfg.lazyClass)){return;}\n\n\t\t\tdetail = triggerEvent(elem, 'lazyunveilread').detail;\n\n\t\t\tif(isAuto){\n\t\t\t\t autoSizer.updateElem(elem, true, elem.offsetWidth);\n\t\t\t}\n\n\t\t\telem._lazyRace = true;\n\t\t\tisLoading++;\n\n\t\t\tlazyUnveil(elem, detail, isAuto, sizes, isImg);\n\t\t};\n\n\t\tvar afterScroll = debounce(function(){\n\t\t\tlazySizesCfg.loadMode = 3;\n\t\t\tthrottledCheckElements();\n\t\t});\n\n\t\tvar altLoadmodeScrollListner = function(){\n\t\t\tif(lazySizesCfg.loadMode == 3){\n\t\t\t\tlazySizesCfg.loadMode = 2;\n\t\t\t}\n\t\t\tafterScroll();\n\t\t};\n\n\t\tvar onload = function(){\n\t\t\tif(isCompleted){return;}\n\t\t\tif(Date.now() - started < 999){\n\t\t\t\tsetTimeout(onload, 999);\n\t\t\t\treturn;\n\t\t\t}\n\n\n\t\t\tisCompleted = true;\n\n\t\t\tlazySizesCfg.loadMode = 3;\n\n\t\t\tthrottledCheckElements();\n\n\t\t\taddEventListener('scroll', altLoadmodeScrollListner, true);\n\t\t};\n\n\t\treturn {\n\t\t\t_: function(){\n\t\t\t\tstarted = Date.now();\n\n\t\t\t\tlazysizes.elements = document.getElementsByClassName(lazySizesCfg.lazyClass);\n\t\t\t\tpreloadElems = document.getElementsByClassName(lazySizesCfg.lazyClass + ' ' + lazySizesCfg.preloadClass);\n\n\t\t\t\taddEventListener('scroll', throttledCheckElements, true);\n\n\t\t\t\taddEventListener('resize', throttledCheckElements, true);\n\n\t\t\t\taddEventListener('pageshow', function (e) {\n\t\t\t\t\tif (e.persisted) {\n\t\t\t\t\t\tvar loadingElements = document.querySelectorAll('.' + lazySizesCfg.loadingClass);\n\n\t\t\t\t\t\tif (loadingElements.length && loadingElements.forEach) {\n\t\t\t\t\t\t\trequestAnimationFrame(function () {\n\t\t\t\t\t\t\t\tloadingElements.forEach( function (img) {\n\t\t\t\t\t\t\t\t\tif (img.complete) {\n\t\t\t\t\t\t\t\t\t\tunveilElement(img);\n\t\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t\t});\n\t\t\t\t\t\t\t});\n\t\t\t\t\t\t}\n\t\t\t\t\t}\n\t\t\t\t});\n\n\t\t\t\tif(window.MutationObserver){\n\t\t\t\t\tnew MutationObserver( throttledCheckElements ).observe( docElem, {childList: true, subtree: true, attributes: true} );\n\t\t\t\t} else {\n\t\t\t\t\tdocElem[_addEventListener]('DOMNodeInserted', throttledCheckElements, true);\n\t\t\t\t\tdocElem[_addEventListener]('DOMAttrModified', throttledCheckElements, true);\n\t\t\t\t\tsetInterval(throttledCheckElements, 999);\n\t\t\t\t}\n\n\t\t\t\taddEventListener('hashchange', throttledCheckElements, true);\n\n\t\t\t\t//, 'fullscreenchange'\n\t\t\t\t['focus', 'mouseover', 'click', 'load', 'transitionend', 'animationend'].forEach(function(name){\n\t\t\t\t\tdocument[_addEventListener](name, throttledCheckElements, true);\n\t\t\t\t});\n\n\t\t\t\tif((/d$|^c/.test(document.readyState))){\n\t\t\t\t\tonload();\n\t\t\t\t} else {\n\t\t\t\t\taddEventListener('load', onload);\n\t\t\t\t\tdocument[_addEventListener]('DOMContentLoaded', throttledCheckElements);\n\t\t\t\t\tsetTimeout(onload, 20000);\n\t\t\t\t}\n\n\t\t\t\tif(lazysizes.elements.length){\n\t\t\t\t\tcheckElements();\n\t\t\t\t\trAF._lsFlush();\n\t\t\t\t} else {\n\t\t\t\t\tthrottledCheckElements();\n\t\t\t\t}\n\t\t\t},\n\t\t\tcheckElems: throttledCheckElements,\n\t\t\tunveil: unveilElement,\n\t\t\t_aLSL: altLoadmodeScrollListner,\n\t\t};\n\t})();\n\n\n\tvar autoSizer = (function(){\n\t\tvar autosizesElems;\n\n\t\tvar sizeElement = rAFIt(function(elem, parent, event, width){\n\t\t\tvar sources, i, len;\n\t\t\telem._lazysizesWidth = width;\n\t\t\twidth += 'px';\n\n\t\t\telem.setAttribute('sizes', width);\n\n\t\t\tif(regPicture.test(parent.nodeName || '')){\n\t\t\t\tsources = parent.getElementsByTagName('source');\n\t\t\t\tfor(i = 0, len = sources.length; i < len; i++){\n\t\t\t\t\tsources[i].setAttribute('sizes', width);\n\t\t\t\t}\n\t\t\t}\n\n\t\t\tif(!event.detail.dataAttr){\n\t\t\t\tupdatePolyfill(elem, event.detail);\n\t\t\t}\n\t\t});\n\t\t/**\n\t\t *\n\t\t * @param elem {Element}\n\t\t * @param dataAttr\n\t\t * @param [width] { number }\n\t\t */\n\t\tvar getSizeElement = function (elem, dataAttr, width){\n\t\t\tvar event;\n\t\t\tvar parent = elem.parentNode;\n\n\t\t\tif(parent){\n\t\t\t\twidth = getWidth(elem, parent, width);\n\t\t\t\tevent = triggerEvent(elem, 'lazybeforesizes', {width: width, dataAttr: !!dataAttr});\n\n\t\t\t\tif(!event.defaultPrevented){\n\t\t\t\t\twidth = event.detail.width;\n\n\t\t\t\t\tif(width && width !== elem._lazysizesWidth){\n\t\t\t\t\t\tsizeElement(elem, parent, event, width);\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t}\n\t\t};\n\n\t\tvar updateElementsSizes = function(){\n\t\t\tvar i;\n\t\t\tvar len = autosizesElems.length;\n\t\t\tif(len){\n\t\t\t\ti = 0;\n\n\t\t\t\tfor(; i < len; i++){\n\t\t\t\t\tgetSizeElement(autosizesElems[i]);\n\t\t\t\t}\n\t\t\t}\n\t\t};\n\n\t\tvar debouncedUpdateElementsSizes = debounce(updateElementsSizes);\n\n\t\treturn {\n\t\t\t_: function(){\n\t\t\t\tautosizesElems = document.getElementsByClassName(lazySizesCfg.autosizesClass);\n\t\t\t\taddEventListener('resize', debouncedUpdateElementsSizes);\n\t\t\t},\n\t\t\tcheckElems: debouncedUpdateElementsSizes,\n\t\t\tupdateElem: getSizeElement\n\t\t};\n\t})();\n\n\tvar init = function(){\n\t\tif(!init.i && document.getElementsByClassName){\n\t\t\tinit.i = true;\n\t\t\tautoSizer._();\n\t\t\tloader._();\n\t\t}\n\t};\n\n\tsetTimeout(function(){\n\t\tif(lazySizesCfg.init){\n\t\t\tinit();\n\t\t}\n\t});\n\n\tlazysizes = {\n\t\t/**\n\t\t * @type { LazySizesConfigPartial }\n\t\t */\n\t\tcfg: lazySizesCfg,\n\t\tautoSizer: autoSizer,\n\t\tloader: loader,\n\t\tinit: init,\n\t\tuP: updatePolyfill,\n\t\taC: addClass,\n\t\trC: removeClass,\n\t\thC: hasClass,\n\t\tfire: triggerEvent,\n\t\tgW: getWidth,\n\t\trAF: rAF,\n\t};\n\n\treturn lazysizes;\n}\n));\n","'use strict';\n\nmodule.exports = function () {\n document.addEventListener('lazybeforeunveil', function (e) {\n var bg = e.target.getAttribute('data-bg');\n if (bg) {\n // eslint-disable-next-line no-param-reassign\n e.target.style.backgroundImage = 'url(\\'' + bg + '\\')';\n }\n });\n};\n","'use strict';\n\ndataLayer = dataLayer || [];\n\nconst productImpressions = [];\nlet scrollTimeout;\n\nconst isVisible = function ($el) {\n const elementTop = $el.offset().top;\n const elementBottom = elementTop + $el.outerHeight();\n const viewportTop = $(window).scrollTop();\n const viewportBottom = viewportTop + $(window).height();\n return elementBottom > viewportTop && elementTop < viewportBottom;\n};\n\nvar index = 0;\nconst trackImpressions = function () {\n const impressions = [];\n const items = [];\n $('.product').each(function () {\n const pid = $(this).data('pid');\n var dataLayerInfo = $(this).attr('data-datalayer');\n if (pid && isVisible($(this)) && !productImpressions.includes(pid)) {\n productImpressions.push(pid);\n impressions.push({\n id: pid\n });\n var dataLayerInfoObj = JSON.parse(dataLayerInfo);\n dataLayerInfoObj.index = index;\n items.push(dataLayerInfoObj);\n index += 1;\n }\n });\n\n if (app.preferences.GA4Enabled) {\n if (impressions.length) {\n dataLayer.push({ ecommerce: null });\n dataLayer.push({\n event: 'view_item_list',\n ecommerce: {\n items\n }\n });\n }\n }\n if (app.preferences.GA3Enabled) {\n if (impressions.length) {\n dataLayer.push({\n ecommerce: {\n impressions\n }\n });\n }\n }\n};\n\nconst onScrollFinished = function () {\n clearTimeout(scrollTimeout);\n trackImpressions();\n};\n\nmodule.exports = function () {\n $(document).on('scroll', function () {\n scrollTimeout = setTimeout(onScrollFinished, 500);\n });\n\n $('body .quote-link').on('click', function (e) {\n var productInfoCtr = $(this).parents('.pdp-primary-info').find('.pdp-quote-button');\n if (productInfoCtr.length > 0) {\n var productInfo = productInfoCtr.attr('data-product-info');\n if (productInfo.length > 0) {\n var productInfoObj = JSON.parse(productInfo);\n dataLayer.push({\n event: 'quoteClick',\n productId: productInfoObj.item_id,\n productName: productInfoObj.item_name,\n category1: productInfoObj.item_category,\n category2: productInfoObj.item_category2,\n category3: productInfoObj.item_category3\n });\n }\n }\n });\n\n $('body .pdp-quote-button').on('click', 'a', function (e) {\n var productInfo = $(this).parent().attr('data-product-info');\n if (productInfo.length > 0) {\n var productInfoObj = JSON.parse(productInfo);\n dataLayer.push({\n event: 'quoteClick',\n productId: productInfoObj.item_id,\n productName: productInfoObj.item_name,\n category1: productInfoObj.item_category,\n category2: productInfoObj.item_category2,\n category3: productInfoObj.item_category3\n });\n }\n });\n\n $('form.quote').on('submit', function (e) {\n var productInfo = $(this).attr('data-product-info');\n if (productInfo.length > 0) {\n var productInfoObj = JSON.parse(productInfo);\n dataLayer.push({\n event: 'quoteConfirmed',\n productId: productInfoObj.item_id,\n productName: productInfoObj.item_name,\n category1: productInfoObj.item_category,\n category2: productInfoObj.item_category2,\n category3: productInfoObj.item_category3\n });\n }\n });\n $('body').on('click', '.product a', function (e) {\n const items = [];\n const id = $(this).parents('.product').data('pid');\n\n if (app.preferences.GA4Enabled) {\n var dataLayerInfo = $(this).parents('.product').attr('data-datalayer');\n var dataLayerInfoObj = JSON.parse(dataLayerInfo);\n dataLayerInfoObj.index = Math.ceil($(this).parents('.product').index() / 2) - 1;\n items.push(dataLayerInfoObj);\n dataLayer.push({ ecommerce: null });\n dataLayer.push({\n event: 'select_item',\n ecommerce: {\n items\n }\n });\n }\n if (app.preferences.GA3Enabled) {\n dataLayer.push({\n event: 'productClick',\n ecommerce: {\n click: {\n products: [{\n id: id\n }]\n }\n }\n });\n }\n });\n\n $('body').on('click', '.add-to-cart:not(.redirect-to-quote)', function (e) {\n const id = $(this).data('pid');\n if (app.preferences.GA4Enabled) {\n var dataLayerInfo = $(this).attr('data-datalayer');\n const items = [];\n var dataLayerInfoObj = JSON.parse(dataLayerInfo);\n dataLayerInfoObj.index = 0;\n dataLayerInfoObj.quantity = 1;\n items.push(dataLayerInfoObj);\n dataLayer.push({ ecommerce: null });\n dataLayer.push({\n event: 'add_to_cart',\n ecommerce: {\n items\n }\n });\n }\n if (app.preferences.GA3Enabled) {\n dataLayer.push({\n event: 'productClick',\n ecommerce: {\n add: {\n products: [{\n id: id\n }]\n }\n }\n });\n }\n });\n\n $('body').on('click', '.nav-item > a', function (e) {\n var isMobileView = !!$('.navbar-brand .navbar-toggler:visible').length;\n if (isMobileView) {\n if ($(this).parent().hasClass('mobile-view')) {\n if (typeof $(this).parent().attr('data-level') !== 'undefined') {\n dataLayer.push({\n event: 'clickNavigation',\n level: $(this).parent().attr('data-level'),\n elementName: $(this).parent().attr('data-label').trim()\n .toLowerCase()\n });\n }\n }\n } else if (typeof $(this).parent().attr('data-level') !== 'undefined') {\n dataLayer.push({\n event: 'clickNavigation',\n level: $(this).parent().attr('data-level') || 'level 1',\n elementName: $(this).parent().attr('data-label').trim()\n .toLowerCase()\n });\n }\n });\n\n $('body').on('click', '.flyout-menu-slot > div', function (e) {\n dataLayer.push({\n merchantName: $(this).attr('class')\n });\n });\n\n $('body').on('click', '.experience-assets-banner', function (e) {\n dataLayer.push({\n event: 'clickBanner',\n bannerName: $(this).find('.banner-heading').text().trim()\n });\n });\n\n $('body').on('search:filter', '.refinement-link', function (e) {\n dataLayer.push({\n event: 'clickLPfilter',\n pageType: $('.search-result-count').length > 0 ? 'search page' : 'list page',\n filterName: $(this).parents('.refinement-body').attr('id').replace('refinement-', ''),\n filterValue: $(this).parents('[data-value]').attr('data-value')\n });\n });\n $('body').on('click', '.price-attribute', function (e) {\n dataLayer.push({\n event: 'clickLPfilter',\n pageType: $('.search-result-count').length > 0 ? 'search page' : 'list page',\n filterName: 'price',\n filterValue: $(this).attr('data-value')\n });\n });\n\n $('.search-results').on('change', '[name=sort-order]', function (e) {\n var optionSelected = $('option:selected', this);\n dataLayer.push({\n event: 'clickSort',\n sortLabel: optionSelected.attr('data-id')\n });\n });\n\n $('body').on('click', '.category-promo > div', function (e) {\n dataLayer.push({\n event: 'clickMerchantTile',\n tileName: $(this).attr('class')\n });\n });\n\n trackImpressions();\n\n if ($('#rx-container').length > 0 && $('#rx-container').attr('data-current-step') === '5') {\n dataLayer.push({\n event: 'Etape5'\n });\n }\n};\n","'use strict';\n\n/**\n * Show a spinner inside a given element\n * @param {element} $target - Element to block by the veil and spinner.\n * Pass body to block the whole page.\n */\nfunction addSpinner($target) {\n var $veil = $('<div class=\"veil\"><div class=\"underlay\"></div></div>');\n $veil.append('<div class=\"spinner\"><div></div><div></div><div></div><div></div></div>');\n if ($target.get(0).tagName === 'IMG') {\n $target.after($veil);\n $veil.css({ width: $target.width(), height: $target.height() });\n if ($target.parent().css('position') === 'static') {\n $target.parent().css('position', 'relative');\n }\n } else {\n $target.append($veil);\n if ($target.css('position') === 'static') {\n $target.parent().css('position', 'relative');\n $target.parent().addClass('veiled');\n }\n if ($target.get(0).tagName === 'BODY') {\n $veil.find('.spinner').css('position', 'fixed');\n }\n }\n $veil.click(function (e) {\n e.stopPropagation();\n });\n}\n\n/**\n * Remove existing spinner\n * @param {element} $veil - jQuery pointer to the veil element\n */\nfunction removeSpinner($veil) {\n if ($veil.parent().hasClass('veiled')) {\n $veil.parent().css('position', '');\n $veil.parent().removeClass('veiled');\n }\n $veil.off('click');\n $veil.remove();\n}\n\n// element level spinner:\n$.fn.spinner = function () {\n var $element = $(this);\n var Fn = function () {\n this.start = function () {\n if ($element.length) {\n addSpinner($element);\n }\n };\n this.stop = function () {\n if ($element.length) {\n var $veil = $('.veil');\n removeSpinner($veil);\n }\n };\n };\n return new Fn();\n};\n\n// page-level spinner:\n$.spinner = function () {\n var Fn = function () {\n this.start = function () {\n addSpinner($('body'));\n };\n this.stop = function () {\n removeSpinner($('.veil'));\n };\n };\n return new Fn();\n};\n","/**!\n * @fileOverview Kickass library to create and place poppers near their reference elements.\n * @version 1.16.1\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' && typeof navigator !== 'undefined';\n\nvar timeoutDuration = function () {\n var longerTimeoutBrowsers = ['Edge', 'Trident', 'Firefox'];\n for (var i = 0; i < longerTimeoutBrowsers.length; i += 1) {\n if (isBrowser && navigator.userAgent.indexOf(longerTimeoutBrowsers[i]) >= 0) {\n return 1;\n }\n }\n return 0;\n}();\n\nfunction microtaskDebounce(fn) {\n var called = false;\n return function () {\n if (called) {\n return;\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/**\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*/\nvar debounce = supportsMicroTasks ? microtaskDebounce : taskDebounce;\n\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 */\nfunction isFunction(functionToCheck) {\n var getType = {};\n return functionToCheck && getType.toString.call(functionToCheck) === '[object Function]';\n}\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 */\nfunction getStyleComputedProperty(element, property) {\n if (element.nodeType !== 1) {\n return [];\n }\n // NOTE: 1 DOM access here\n var window = element.ownerDocument.defaultView;\n var css = window.getComputedStyle(element, null);\n return property ? css[property] : css;\n}\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 */\nfunction getParentNode(element) {\n if (element.nodeName === 'HTML') {\n return element;\n }\n return element.parentNode || element.host;\n}\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 */\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 case '#document':\n return element.body;\n }\n\n // Firefox want us to check `-x` and `-y` variations as well\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\n/**\n * Returns the reference node of the reference object, or the reference object itself.\n * @method\n * @memberof Popper.Utils\n * @param {Element|Object} reference - the reference element (the popper will be relative to this)\n * @returns {Element} parent\n */\nfunction getReferenceNode(reference) {\n return reference && reference.referenceNode ? reference.referenceNode : reference;\n}\n\nvar isIE11 = isBrowser && !!(window.MSInputMethodContext && document.documentMode);\nvar isIE10 = isBrowser && /MSIE 10/.test(navigator.userAgent);\n\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 */\nfunction isIE(version) {\n if (version === 11) {\n return isIE11;\n }\n if (version === 10) {\n return isIE10;\n }\n return isIE11 || isIE10;\n}\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 */\nfunction getOffsetParent(element) {\n if (!element) {\n return document.documentElement;\n }\n\n var noOffsetParent = isIE(10) ? document.body : null;\n\n // NOTE: 1 DOM access here\n var offsetParent = element.offsetParent || null;\n // Skip hidden elements which don't have an offsetParent\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 }\n\n // .offsetParent will return the closest TH, TD or TABLE in case\n // no offsetParent is present, I hate this job...\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 return nodeName === 'HTML' || getOffsetParent(element.firstElementChild) === element;\n}\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 */\nfunction getRoot(node) {\n if (node.parentNode !== null) {\n return getRoot(node.parentNode);\n }\n\n return node;\n}\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 */\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 }\n\n // Here we make sure to give as \"start\" the element that comes first in the DOM\n var order = element1.compareDocumentPosition(element2) & Node.DOCUMENT_POSITION_FOLLOWING;\n var start = order ? element1 : element2;\n var end = order ? element2 : element1;\n\n // Get common ancestor container\n var range = document.createRange();\n range.setStart(start, 0);\n range.setEnd(end, 0);\n var commonAncestorContainer = range.commonAncestorContainer;\n\n // 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 }\n\n // one of the nodes is inside shadowDOM, find which one\n var element1root = getRoot(element1);\n if (element1root.host) {\n return findCommonOffsetParent(element1root.host, element2);\n } else {\n return findCommonOffsetParent(element1, getRoot(element2).host);\n }\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 */\nfunction getScroll(element) {\n var side = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : 'top';\n\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/*\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 */\nfunction includeScroll(rect, element) {\n var subtract = arguments.length > 2 && arguments[2] !== undefined ? arguments[2] : false;\n\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/*\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\nfunction getBordersSize(styles, axis) {\n var sideA = axis === 'x' ? 'Left' : 'Top';\n var sideB = sideA === 'Left' ? 'Right' : 'Bottom';\n\n return parseFloat(styles['border' + sideA + 'Width']) + parseFloat(styles['border' + sideB + 'Width']);\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\n return {\n height: getSize('Height', body, html, computedStyle),\n width: getSize('Width', body, html, computedStyle)\n };\n}\n\nvar classCallCheck = function (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\n\n\n\n\nvar defineProperty = function (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/**\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 */\nfunction getClientRect(offsets) {\n return _extends({}, offsets, {\n right: offsets.left + offsets.width,\n bottom: offsets.top + offsets.height\n });\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 */\nfunction getBoundingClientRect(element) {\n var rect = {};\n\n // 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 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 };\n\n // subtract scrollbar size from sizes\n var sizes = element.nodeName === 'HTML' ? getWindowSizes(element.ownerDocument) : {};\n var width = sizes.width || element.clientWidth || result.width;\n var height = sizes.height || element.clientHeight || result.height;\n\n var horizScrollbar = element.offsetWidth - width;\n var vertScrollbar = element.offsetHeight - height;\n\n // 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 if (horizScrollbar || vertScrollbar) {\n var styles = getStyleComputedProperty(element);\n horizScrollbar -= getBordersSize(styles, 'x');\n vertScrollbar -= getBordersSize(styles, 'y');\n\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\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\n var styles = getStyleComputedProperty(parent);\n var borderTopWidth = parseFloat(styles.borderTopWidth);\n var borderLeftWidth = parseFloat(styles.borderLeftWidth);\n\n // In cases where the parent is fixed, we must ignore negative scroll in offset calc\n if (fixedPosition && isHTML) {\n parentRect.top = Math.max(parentRect.top, 0);\n parentRect.left = Math.max(parentRect.left, 0);\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;\n\n // 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 if (!isIE10 && isHTML) {\n var marginTop = parseFloat(styles.marginTop);\n var marginLeft = parseFloat(styles.marginLeft);\n\n offsets.top -= borderTopWidth - marginTop;\n offsets.bottom -= borderTopWidth - marginTop;\n offsets.left -= borderLeftWidth - marginLeft;\n offsets.right -= borderLeftWidth - marginLeft;\n\n // Attach marginTop and marginLeft because in some circumstances we may need them\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\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\n var scrollTop = !excludeScroll ? getScroll(html) : 0;\n var scrollLeft = !excludeScroll ? getScroll(html, 'left') : 0;\n\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\n return getClientRect(offset);\n}\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 */\nfunction isFixed(element) {\n var nodeName = element.nodeName;\n if (nodeName === 'BODY' || nodeName === 'HTML') {\n return false;\n }\n if (getStyleComputedProperty(element, 'position') === 'fixed') {\n return true;\n }\n var parentNode = getParentNode(element);\n if (!parentNode) {\n return false;\n }\n return isFixed(parentNode);\n}\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\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 var el = element.parentElement;\n while (el && getStyleComputedProperty(el, 'transform') === 'none') {\n el = el.parentElement;\n }\n return el || document.documentElement;\n}\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 */\nfunction getBoundaries(popper, reference, padding, boundariesElement) {\n var fixedPosition = arguments.length > 4 && arguments[4] !== undefined ? arguments[4] : false;\n\n // NOTE: 1 DOM access here\n\n var boundaries = { top: 0, left: 0 };\n var offsetParent = fixedPosition ? getFixedPositionOffsetParent(popper) : findCommonOffsetParent(popper, getReferenceNode(reference));\n\n // Handle viewport case\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 if (boundariesElement === 'scrollParent') {\n boundariesNode = getScrollParent(getParentNode(reference));\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);\n\n // In case of HTML, we need a different computation\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 }\n\n // Add paddings\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\n return boundaries;\n}\n\nfunction getArea(_ref) {\n var width = _ref.width,\n height = _ref.height;\n\n return width * height;\n}\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 */\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\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\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\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\n var computedPlacement = filteredAreas.length > 0 ? filteredAreas[0].key : sortedAreas[0].key;\n\n var variation = placement.split('-')[1];\n\n return computedPlacement + (variation ? '-' + variation : '');\n}\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 */\nfunction getReferenceOffsets(state, popper, reference) {\n var fixedPosition = arguments.length > 3 && arguments[3] !== undefined ? arguments[3] : null;\n\n var commonOffsetParent = fixedPosition ? getFixedPositionOffsetParent(popper) : findCommonOffsetParent(popper, getReferenceNode(reference));\n return getOffsetRectRelativeToArbitraryNode(reference, commonOffsetParent, fixedPosition);\n}\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 */\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/**\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 */\nfunction getOppositePlacement(placement) {\n var hash = { left: 'right', right: 'left', bottom: 'top', top: 'bottom' };\n return placement.replace(/left|right|bottom|top/g, function (matched) {\n return hash[matched];\n });\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 */\nfunction getPopperOffsets(popper, referenceOffsets, placement) {\n placement = placement.split('-')[0];\n\n // Get popper node sizes\n var popperRect = getOuterSizes(popper);\n\n // Add position, width and height to our offsets object\n var popperOffsets = {\n width: popperRect.width,\n height: popperRect.height\n };\n\n // depending by the popper placement we have to compute its offsets slightly differently\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\n popperOffsets[mainSide] = referenceOffsets[mainSide] + referenceOffsets[measurement] / 2 - popperRect[measurement] / 2;\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/**\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 */\nfunction find(arr, check) {\n // use native find if supported\n if (Array.prototype.find) {\n return arr.find(check);\n }\n\n // use `filter` to obtain the same behavior of `find`\n return arr.filter(check)[0];\n}\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 */\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 }\n\n // use `find` + `indexOf` if `findIndex` isn't supported\n var match = find(arr, function (obj) {\n return obj[prop] === value;\n });\n return arr.indexOf(match);\n}\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 */\nfunction runModifiers(modifiers, data, ends) {\n var modifiersToRun = ends === undefined ? modifiers : modifiers.slice(0, findIndex(modifiers, 'name', ends));\n\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 var fn = modifier['function'] || modifier.fn; // eslint-disable-line dot-notation\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\n data = fn(data, modifier);\n }\n });\n\n return data;\n}\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 */\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 };\n\n // compute reference element offsets\n data.offsets.reference = getReferenceOffsets(this.state, this.popper, this.reference, this.options.positionFixed);\n\n // 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 data.placement = computeAutoPlacement(this.options.placement, data.offsets.reference, this.popper, this.reference, this.options.modifiers.flip.boundariesElement, this.options.modifiers.flip.padding);\n\n // store the computed placement inside `originalPlacement`\n data.originalPlacement = data.placement;\n\n data.positionFixed = this.options.positionFixed;\n\n // compute the popper offsets\n data.offsets.popper = getPopperOffsets(this.popper, data.offsets.reference, data.placement);\n\n data.offsets.popper.position = this.options.positionFixed ? 'fixed' : 'absolute';\n\n // run the modifiers\n data = runModifiers(this.modifiers, data);\n\n // the first `update` will call `onCreate` callback\n // the other ones will call `onUpdate` callback\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/**\n * Helper used to know if the given modifier is enabled.\n * @method\n * @memberof Popper.Utils\n * @returns {Boolean}\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/**\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 */\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 if (typeof document.body.style[toCheck] !== 'undefined') {\n return toCheck;\n }\n }\n return null;\n}\n\n/**\n * Destroys the popper.\n * @method\n * @memberof Popper\n */\nfunction destroy() {\n this.state.isDestroyed = true;\n\n // touch DOM only if `applyStyle` modifier is enabled\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();\n\n // remove the popper if user explicitly asked for the deletion on destroy\n // do not use `remove` because IE11 doesn't support it\n if (this.options.removeOnDestroy) {\n this.popper.parentNode.removeChild(this.popper);\n }\n return this;\n}\n\n/**\n * Get the window associated with the element\n * @argument {Element} element\n * @returns {Window}\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, { passive: true });\n\n if (!isBody) {\n attachToScrollParents(getScrollParent(target.parentNode), event, callback, scrollParents);\n }\n scrollParents.push(target);\n}\n\n/**\n * Setup needed event listeners used to update the popper position\n * @method\n * @memberof Popper.Utils\n * @private\n */\nfunction setupEventListeners(reference, options, state, updateBound) {\n // Resize event listener on window\n state.updateBound = updateBound;\n getWindow(reference).addEventListener('resize', state.updateBound, { passive: true });\n\n // Scroll event listener on scroll parents\n var scrollElement = getScrollParent(reference);\n attachToScrollParents(scrollElement, 'scroll', state.updateBound, state.scrollParents);\n state.scrollElement = scrollElement;\n state.eventsEnabled = true;\n\n return state;\n}\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 */\nfunction enableEventListeners() {\n if (!this.state.eventsEnabled) {\n this.state = setupEventListeners(this.reference, this.options, this.state, this.scheduleUpdate);\n }\n}\n\n/**\n * Remove event listeners used to update the popper position\n * @method\n * @memberof Popper.Utils\n * @private\n */\nfunction removeEventListeners(reference, state) {\n // Remove resize event listener on window\n getWindow(reference).removeEventListener('resize', state.updateBound);\n\n // Remove scroll event listener on scroll parents\n state.scrollParents.forEach(function (target) {\n target.removeEventListener('scroll', state.updateBound);\n });\n\n // Reset state\n state.updateBound = null;\n state.scrollParents = [];\n state.scrollElement = null;\n state.eventsEnabled = false;\n return state;\n}\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 */\nfunction disableEventListeners() {\n if (this.state.eventsEnabled) {\n cancelAnimationFrame(this.scheduleUpdate);\n this.state = removeEventListeners(this.reference, this.state);\n }\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 */\nfunction isNumeric(n) {\n return n !== '' && !isNaN(parseFloat(n)) && isFinite(n);\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 */\nfunction setStyles(element, styles) {\n Object.keys(styles).forEach(function (prop) {\n var unit = '';\n // add unit if the value is numeric and is one of the following\n if (['width', 'height', 'top', 'right', 'bottom', 'left'].indexOf(prop) !== -1 && isNumeric(styles[prop])) {\n unit = 'px';\n }\n element.style[prop] = styles[prop] + unit;\n });\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 */\nfunction setAttributes(element, attributes) {\n Object.keys(attributes).forEach(function (prop) {\n var value = attributes[prop];\n if (value !== false) {\n element.setAttribute(prop, attributes[prop]);\n } else {\n element.removeAttribute(prop);\n }\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 */\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);\n\n // any property present in `data.attributes` will be applied to the popper,\n // they will be set as HTML attributes of the element\n setAttributes(data.instance.popper, data.attributes);\n\n // if arrowElement is defined and arrowStyles has some properties\n if (data.arrowElement && Object.keys(data.arrowStyles).length) {\n setStyles(data.arrowElement, data.arrowStyles);\n }\n\n return data;\n}\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 */\nfunction applyStyleOnLoad(reference, popper, options, modifierOptions, state) {\n // compute reference element offsets\n var referenceOffsets = getReferenceOffsets(state, popper, reference, options.positionFixed);\n\n // 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 var placement = computeAutoPlacement(options.placement, referenceOffsets, popper, reference, options.modifiers.flip.boundariesElement, options.modifiers.flip.padding);\n\n popper.setAttribute('x-placement', placement);\n\n // Apply `position` to popper before anything else because\n // without the position applied we can't guarantee correct computations\n setStyles(popper, { position: options.positionFixed ? 'fixed' : 'absolute' });\n\n return options;\n}\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 */\nfunction getRoundedOffsets(data, shouldRound) {\n var _data$offsets = data.offsets,\n popper = _data$offsets.popper,\n reference = _data$offsets.reference;\n var round = Math.round,\n floor = Math.floor;\n\n var noRound = function noRound(v) {\n return v;\n };\n\n var referenceWidth = round(reference.width);\n var popperWidth = round(popper.width);\n\n var isVertical = ['left', 'right'].indexOf(data.placement) !== -1;\n var isVariation = data.placement.indexOf('-') !== -1;\n var sameWidthParity = referenceWidth % 2 === popperWidth % 2;\n var bothOddWidth = referenceWidth % 2 === 1 && popperWidth % 2 === 1;\n\n var horizontalToInteger = !shouldRound ? noRound : isVertical || isVariation || sameWidthParity ? round : floor;\n var verticalToInteger = !shouldRound ? noRound : round;\n\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/**\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 */\nfunction computeStyle(data, options) {\n var x = options.x,\n y = options.y;\n var popper = data.offsets.popper;\n\n // 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 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 var gpuAcceleration = legacyGpuAccelerationOption !== undefined ? legacyGpuAccelerationOption : options.gpuAcceleration;\n\n var offsetParent = getOffsetParent(data.instance.popper);\n var offsetParentRect = getBoundingClientRect(offsetParent);\n\n // Styles\n var styles = {\n position: popper.position\n };\n\n var offsets = getRoundedOffsets(data, window.devicePixelRatio < 2 || !isFirefox);\n\n var sideA = x === 'bottom' ? 'top' : 'bottom';\n var sideB = y === 'right' ? 'left' : 'right';\n\n // 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 var prefixedProperty = getSupportedPropertyName('transform');\n\n // 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 var left = void 0,\n top = void 0;\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 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 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 }\n\n // Attributes\n var attributes = {\n 'x-placement': data.placement\n };\n\n // Update `data` attributes, styles and arrowStyles\n data.attributes = _extends({}, attributes, data.attributes);\n data.styles = _extends({}, styles, data.styles);\n data.arrowStyles = _extends({}, data.offsets.arrow, data.arrowStyles);\n\n return data;\n}\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 */\nfunction isModifierRequired(modifiers, requestingName, requestedName) {\n var requesting = find(modifiers, function (_ref) {\n var name = _ref.name;\n return name === requestingName;\n });\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 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 return isRequired;\n}\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 */\nfunction arrow(data, options) {\n var _data$offsets$arrow;\n\n // arrow depends on keepTogether in order to work\n if (!isModifierRequired(data.instance.modifiers, 'arrow', 'keepTogether')) {\n return data;\n }\n\n var arrowElement = options.element;\n\n // if arrowElement is a string, suppose it's a CSS selector\n if (typeof arrowElement === 'string') {\n arrowElement = data.instance.popper.querySelector(arrowElement);\n\n // if arrowElement is not found, don't run the modifier\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\n var isVertical = ['left', 'right'].indexOf(placement) !== -1;\n\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\n //\n // extends keepTogether behavior making sure the popper and its\n // reference have enough pixels in conjunction\n //\n\n // top/left side\n if (reference[opSide] - arrowElementSize < popper[side]) {\n data.offsets.popper[side] -= popper[side] - (reference[opSide] - arrowElementSize);\n }\n // bottom/right side\n if (reference[side] + arrowElementSize > popper[opSide]) {\n data.offsets.popper[side] += reference[side] + arrowElementSize - popper[opSide];\n }\n data.offsets.popper = getClientRect(data.offsets.popper);\n\n // compute center of the popper\n var center = reference[side] + reference[len] / 2 - arrowElementSize / 2;\n\n // Compute the sideValue using the updated popper offsets\n // take popper margin in account because we don't have this info available\n var css = getStyleComputedProperty(data.instance.popper);\n var popperMarginSide = parseFloat(css['margin' + sideCapitalized]);\n var popperBorderSide = parseFloat(css['border' + sideCapitalized + 'Width']);\n var sideValue = center - data.offsets.popper[side] - popperMarginSide - popperBorderSide;\n\n // prevent arrowElement from being placed not contiguously to its popper\n sideValue = Math.max(Math.min(popper[len] - arrowElementSize, sideValue), 0);\n\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\n return data;\n}\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 */\nfunction getOppositeVariation(variation) {\n if (variation === 'end') {\n return 'start';\n } else if (variation === 'start') {\n return 'end';\n }\n return variation;\n}\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 */\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'];\n\n// Get rid of `auto` `auto-start` and `auto-end`\nvar validPlacements = placements.slice(3);\n\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 */\nfunction clockwise(placement) {\n var counter = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : false;\n\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/**\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 */\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\n var placement = data.placement.split('-')[0];\n var placementOpposite = getOppositePlacement(placement);\n var variation = data.placement.split('-')[1] || '';\n\n var flipOrder = [];\n\n switch (options.behavior) {\n case BEHAVIORS.FLIP:\n flipOrder = [placement, placementOpposite];\n break;\n case BEHAVIORS.CLOCKWISE:\n flipOrder = clockwise(placement);\n break;\n case BEHAVIORS.COUNTERCLOCKWISE:\n flipOrder = clockwise(placement, true);\n break;\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\n var popperOffsets = data.offsets.popper;\n var refOffsets = data.offsets.reference;\n\n // using floor because the reference offsets may contain decimals we are not going to consider here\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\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\n var overflowsBoundaries = placement === 'left' && overflowsLeft || placement === 'right' && overflowsRight || placement === 'top' && overflowsTop || placement === 'bottom' && overflowsBottom;\n\n // flip the variation if required\n var isVertical = ['top', 'bottom'].indexOf(placement) !== -1;\n\n // flips variation if reference element overflows boundaries\n var flippedVariationByRef = !!options.flipVariations && (isVertical && variation === 'start' && overflowsLeft || isVertical && variation === 'end' && overflowsRight || !isVertical && variation === 'start' && overflowsTop || !isVertical && variation === 'end' && overflowsBottom);\n\n // flips variation if popper content overflows boundaries\n var flippedVariationByContent = !!options.flipVariationsByContent && (isVertical && variation === 'start' && overflowsRight || isVertical && variation === 'end' && overflowsLeft || !isVertical && variation === 'start' && overflowsBottom || !isVertical && variation === 'end' && overflowsTop);\n\n var flippedVariation = flippedVariationByRef || flippedVariationByContent;\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 : '');\n\n // this object contains `position`, we want to preserve it along with\n // any additional property we may add in the future\n data.offsets.popper = _extends({}, data.offsets.popper, getPopperOffsets(data.instance.popper, data.offsets.reference, data.placement));\n\n data = runModifiers(data.instance.modifiers, data, 'flip');\n }\n });\n return data;\n}\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 */\nfunction keepTogether(data) {\n var _data$offsets = data.offsets,\n popper = _data$offsets.popper,\n reference = _data$offsets.reference;\n\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 if (popper[opSide] > floor(reference[side])) {\n data.offsets.popper[opSide] = floor(reference[side]);\n }\n\n return data;\n}\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 */\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];\n\n // If it's not a number it's an operator, I guess\n if (!value) {\n return str;\n }\n\n if (unit.indexOf('%') === 0) {\n var element = void 0;\n switch (unit) {\n case '%p':\n element = popperOffsets;\n break;\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 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 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/**\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 */\nfunction parseOffset(offset, popperOffsets, referenceOffsets, basePlacement) {\n var offsets = [0, 0];\n\n // 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 var useHeight = ['right', 'left'].indexOf(basePlacement) !== -1;\n\n // 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 var fragments = offset.split(/(\\+|\\-)/).map(function (frag) {\n return frag.trim();\n });\n\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 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 }\n\n // If divider is found, we divide the list of values and operands to divide\n // them by ofset X and Y.\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];\n\n // Convert the values with units to absolute pixels to allow our computations\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\n // 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 }, [])\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 });\n\n // Loop trough the offsets arrays and execute the operations\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/**\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 */\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\n var basePlacement = placement.split('-')[0];\n\n var offsets = void 0;\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/**\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 */\nfunction preventOverflow(data, options) {\n var boundariesElement = options.boundariesElement || getOffsetParent(data.instance.popper);\n\n // 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 if (data.instance.reference === boundariesElement) {\n boundariesElement = getOffsetParent(boundariesElement);\n }\n\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 var transformProp = getSupportedPropertyName('transform');\n var popperStyles = data.instance.popper.style; // assignment to help minification\n var top = popperStyles.top,\n left = popperStyles.left,\n transform = popperStyles[transformProp];\n\n popperStyles.top = '';\n popperStyles.left = '';\n popperStyles[transformProp] = '';\n\n var boundaries = getBoundaries(data.instance.popper, data.instance.reference, options.padding, boundariesElement, data.positionFixed);\n\n // NOTE: DOM access here\n // restores the original style properties after the offsets have been computed\n popperStyles.top = top;\n popperStyles.left = left;\n popperStyles[transformProp] = transform;\n\n options.boundaries = boundaries;\n\n var order = options.priority;\n var popper = data.offsets.popper;\n\n var check = {\n primary: function primary(placement) {\n var value = popper[placement];\n if (popper[placement] < boundaries[placement] && !options.escapeWithReference) {\n value = Math.max(popper[placement], boundaries[placement]);\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 if (popper[placement] > boundaries[placement] && !options.escapeWithReference) {\n value = Math.min(popper[mainSide], boundaries[placement] - (placement === 'right' ? popper.width : popper.height));\n }\n return defineProperty({}, mainSide, value);\n }\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\n data.offsets.popper = popper;\n\n return data;\n}\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 */\nfunction shift(data) {\n var placement = data.placement;\n var basePlacement = placement.split('-')[0];\n var shiftvariation = placement.split('-')[1];\n\n // if shift shiftvariation is specified, run the modifier\n if (shiftvariation) {\n var _data$offsets = data.offsets,\n reference = _data$offsets.reference,\n popper = _data$offsets.popper;\n\n var isVertical = ['bottom', 'top'].indexOf(basePlacement) !== -1;\n var side = isVertical ? 'left' : 'top';\n var measurement = isVertical ? 'width' : 'height';\n\n var shiftOffsets = {\n start: defineProperty({}, side, reference[side]),\n end: defineProperty({}, side, reference[side] + reference[measurement] - popper[measurement])\n };\n\n data.offsets.popper = _extends({}, popper, shiftOffsets[shiftvariation]);\n }\n\n return data;\n}\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 */\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/**\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 */\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\n var isHoriz = ['left', 'right'].indexOf(basePlacement) !== -1;\n\n var subtractLength = ['top', 'left'].indexOf(basePlacement) === -1;\n\n popper[isHoriz ? 'left' : 'top'] = reference[basePlacement] - (subtractLength ? popper[isHoriz ? 'width' : 'height'] : 0);\n\n data.placement = getOppositePlacement(placement);\n data.offsets.popper = getClientRect(popper);\n\n return data;\n}\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 */\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 /** @prop {Boolean} enabled=true - Whether the modifier is enabled or not */\n enabled: true,\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 /** @prop {Boolean} enabled=true - Whether the modifier is enabled or not */\n enabled: true,\n /** @prop {ModifierFn} */\n fn: offset,\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 /** @prop {Boolean} enabled=true - Whether the modifier is enabled or not */\n enabled: true,\n /** @prop {ModifierFn} */\n fn: preventOverflow,\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 * @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 * @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 /** @prop {Boolean} enabled=true - Whether the modifier is enabled or not */\n enabled: true,\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 /** @prop {Boolean} enabled=true - Whether the modifier is enabled or not */\n enabled: true,\n /** @prop {ModifierFn} */\n fn: arrow,\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 /** @prop {Boolean} enabled=true - Whether the modifier is enabled or not */\n enabled: true,\n /** @prop {ModifierFn} */\n fn: flip,\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 * @prop {number} padding=5\n * The popper will flip if it hits the edges of the `boundariesElement`\n */\n padding: 5,\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 * @prop {Boolean} flipVariations=false\n * The popper will switch placement variation between `-start` and `-end` when\n * the reference element overlaps its boundaries.\n *\n * The original placement should have a set variation.\n */\n flipVariations: false,\n /**\n * @prop {Boolean} flipVariationsByContent=false\n * The popper will switch placement variation between `-start` and `-end` when\n * the popper element overlaps its reference boundaries.\n *\n * The original placement should have a set variation.\n */\n flipVariationsByContent: false\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 /** @prop {Boolean} enabled=false - Whether the modifier is enabled or not */\n enabled: false,\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 /** @prop {Boolean} enabled=true - Whether the modifier is enabled or not */\n enabled: true,\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 /** @prop {Boolean} enabled=true - Whether the modifier is enabled or not */\n enabled: true,\n /** @prop {ModifierFn} */\n fn: computeStyle,\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 * @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 * @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 /** @prop {Boolean} enabled=true - Whether the modifier is enabled or not */\n enabled: true,\n /** @prop {ModifierFn} */\n fn: applyStyle,\n /** @prop {Function} */\n onLoad: applyStyleOnLoad,\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/**\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 */\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/**\n * @callback onCreate\n * @param {dataObject} data\n */\n\n/**\n * @callback onUpdate\n * @param {dataObject} data\n */\n\n// Utils\n// Methods\nvar Popper = function () {\n /**\n * Creates a new Popper.js instance.\n * @class Popper\n * @param {Element|referenceObject} reference - The reference element used to position the popper\n * @param {Element} popper - The HTML / XML 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 };\n\n // make update() debounced, so that it only runs at most once-per-tick\n this.update = debounce(this.update.bind(this));\n\n // with {} we create a new object with the options inside it\n this.options = _extends({}, Popper.Defaults, options);\n\n // init state\n this.state = {\n isDestroyed: false,\n isCreated: false,\n scrollParents: []\n };\n\n // get reference and popper elements (allow jQuery wrappers)\n this.reference = reference && reference.jquery ? reference[0] : reference;\n this.popper = popper && popper.jquery ? popper[0] : popper;\n\n // Deep merge modifiers options\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 });\n\n // Refactoring modifiers' list (Object => Array)\n this.modifiers = Object.keys(this.options.modifiers).map(function (name) {\n return _extends({\n name: name\n }, _this.options.modifiers[name]);\n })\n // sort the modifiers by order\n .sort(function (a, b) {\n return a.order - b.order;\n });\n\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 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 });\n\n // fire the first update to position the popper in the right place\n this.update();\n\n var eventsEnabled = this.options.eventsEnabled;\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 }\n\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 /**\n * Schedules an update. It will run on the next UI update available.\n * @method scheduleUpdate\n * @memberof Popper\n */\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/**\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;\n\nexport default Popper;\n//# sourceMappingURL=popper.js.map\n","/**\n * --------------------------------------------------------------------------\n * Bootstrap (v4.6.2): collapse.js\n * Licensed under MIT (https://github.com/twbs/bootstrap/blob/main/LICENSE)\n * --------------------------------------------------------------------------\n */\n\nimport $ from 'jquery'\nimport Util from './util'\n\n/**\n * Constants\n */\n\nconst NAME = 'collapse'\nconst VERSION = '4.6.2'\nconst DATA_KEY = 'bs.collapse'\nconst EVENT_KEY = `.${DATA_KEY}`\nconst DATA_API_KEY = '.data-api'\nconst JQUERY_NO_CONFLICT = $.fn[NAME]\n\nconst CLASS_NAME_SHOW = 'show'\nconst CLASS_NAME_COLLAPSE = 'collapse'\nconst CLASS_NAME_COLLAPSING = 'collapsing'\nconst CLASS_NAME_COLLAPSED = 'collapsed'\n\nconst DIMENSION_WIDTH = 'width'\nconst DIMENSION_HEIGHT = 'height'\n\nconst EVENT_SHOW = `show${EVENT_KEY}`\nconst EVENT_SHOWN = `shown${EVENT_KEY}`\nconst EVENT_HIDE = `hide${EVENT_KEY}`\nconst EVENT_HIDDEN = `hidden${EVENT_KEY}`\nconst EVENT_CLICK_DATA_API = `click${EVENT_KEY}${DATA_API_KEY}`\n\nconst SELECTOR_ACTIVES = '.show, .collapsing'\nconst SELECTOR_DATA_TOGGLE = '[data-toggle=\"collapse\"]'\n\nconst Default = {\n toggle: true,\n parent: ''\n}\n\nconst DefaultType = {\n toggle: 'boolean',\n parent: '(string|element)'\n}\n\n/**\n * Class definition\n */\n\nclass Collapse {\n constructor(element, config) {\n this._isTransitioning = false\n this._element = element\n this._config = this._getConfig(config)\n this._triggerArray = [].slice.call(document.querySelectorAll(\n `[data-toggle=\"collapse\"][href=\"#${element.id}\"],` +\n `[data-toggle=\"collapse\"][data-target=\"#${element.id}\"]`\n ))\n\n const toggleList = [].slice.call(document.querySelectorAll(SELECTOR_DATA_TOGGLE))\n for (let i = 0, len = toggleList.length; i < len; i++) {\n const elem = toggleList[i]\n const selector = Util.getSelectorFromElement(elem)\n const filterElement = [].slice.call(document.querySelectorAll(selector))\n .filter(foundElem => foundElem === element)\n\n if (selector !== null && filterElement.length > 0) {\n this._selector = selector\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 }\n\n // Getters\n static get VERSION() {\n return VERSION\n }\n\n static get Default() {\n return Default\n }\n\n // Public\n toggle() {\n if ($(this._element).hasClass(CLASS_NAME_SHOW)) {\n this.hide()\n } else {\n this.show()\n }\n }\n\n show() {\n if (this._isTransitioning ||\n $(this._element).hasClass(CLASS_NAME_SHOW)) {\n return\n }\n\n let actives\n let activesData\n\n if (this._parent) {\n actives = [].slice.call(this._parent.querySelectorAll(SELECTOR_ACTIVES))\n .filter(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 = $(actives).not(this._selector).data(DATA_KEY)\n if (activesData && activesData._isTransitioning) {\n return\n }\n }\n\n const startEvent = $.Event(EVENT_SHOW)\n $(this._element).trigger(startEvent)\n if (startEvent.isDefaultPrevented()) {\n return\n }\n\n if (actives) {\n Collapse._jQueryInterface.call($(actives).not(this._selector), 'hide')\n if (!activesData) {\n $(actives).data(DATA_KEY, null)\n }\n }\n\n const dimension = this._getDimension()\n\n $(this._element)\n .removeClass(CLASS_NAME_COLLAPSE)\n .addClass(CLASS_NAME_COLLAPSING)\n\n this._element.style[dimension] = 0\n\n if (this._triggerArray.length) {\n $(this._triggerArray)\n .removeClass(CLASS_NAME_COLLAPSED)\n .attr('aria-expanded', true)\n }\n\n this.setTransitioning(true)\n\n const complete = () => {\n $(this._element)\n .removeClass(CLASS_NAME_COLLAPSING)\n .addClass(`${CLASS_NAME_COLLAPSE} ${CLASS_NAME_SHOW}`)\n\n this._element.style[dimension] = ''\n\n this.setTransitioning(false)\n\n $(this._element).trigger(EVENT_SHOWN)\n }\n\n const capitalizedDimension = dimension[0].toUpperCase() + dimension.slice(1)\n const scrollSize = `scroll${capitalizedDimension}`\n const transitionDuration = Util.getTransitionDurationFromElement(this._element)\n\n $(this._element)\n .one(Util.TRANSITION_END, complete)\n .emulateTransitionEnd(transitionDuration)\n\n this._element.style[dimension] = `${this._element[scrollSize]}px`\n }\n\n hide() {\n if (this._isTransitioning ||\n !$(this._element).hasClass(CLASS_NAME_SHOW)) {\n return\n }\n\n const startEvent = $.Event(EVENT_HIDE)\n $(this._element).trigger(startEvent)\n if (startEvent.isDefaultPrevented()) {\n return\n }\n\n const dimension = this._getDimension()\n\n this._element.style[dimension] = `${this._element.getBoundingClientRect()[dimension]}px`\n\n Util.reflow(this._element)\n\n $(this._element)\n .addClass(CLASS_NAME_COLLAPSING)\n .removeClass(`${CLASS_NAME_COLLAPSE} ${CLASS_NAME_SHOW}`)\n\n const triggerArrayLength = this._triggerArray.length\n if (triggerArrayLength > 0) {\n for (let i = 0; i < triggerArrayLength; i++) {\n const trigger = this._triggerArray[i]\n const selector = Util.getSelectorFromElement(trigger)\n\n if (selector !== null) {\n const $elem = $([].slice.call(document.querySelectorAll(selector)))\n if (!$elem.hasClass(CLASS_NAME_SHOW)) {\n $(trigger).addClass(CLASS_NAME_COLLAPSED)\n .attr('aria-expanded', false)\n }\n }\n }\n }\n\n this.setTransitioning(true)\n\n const complete = () => {\n this.setTransitioning(false)\n $(this._element)\n .removeClass(CLASS_NAME_COLLAPSING)\n .addClass(CLASS_NAME_COLLAPSE)\n .trigger(EVENT_HIDDEN)\n }\n\n this._element.style[dimension] = ''\n const transitionDuration = Util.getTransitionDurationFromElement(this._element)\n\n $(this._element)\n .one(Util.TRANSITION_END, complete)\n .emulateTransitionEnd(transitionDuration)\n }\n\n setTransitioning(isTransitioning) {\n this._isTransitioning = isTransitioning\n }\n\n dispose() {\n $.removeData(this._element, DATA_KEY)\n\n this._config = null\n this._parent = null\n this._element = null\n this._triggerArray = null\n this._isTransitioning = null\n }\n\n // Private\n _getConfig(config) {\n config = {\n ...Default,\n ...config\n }\n config.toggle = Boolean(config.toggle) // Coerce string values\n Util.typeCheckConfig(NAME, config, DefaultType)\n return config\n }\n\n _getDimension() {\n const hasWidth = $(this._element).hasClass(DIMENSION_WIDTH)\n return hasWidth ? DIMENSION_WIDTH : DIMENSION_HEIGHT\n }\n\n _getParent() {\n let parent\n\n if (Util.isElement(this._config.parent)) {\n parent = this._config.parent\n\n // It's a jQuery object\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 const selector = `[data-toggle=\"collapse\"][data-parent=\"${this._config.parent}\"]`\n const children = [].slice.call(parent.querySelectorAll(selector))\n\n $(children).each((i, element) => {\n this._addAriaAndCollapsedClass(\n Collapse._getTargetFromElement(element),\n [element]\n )\n })\n\n return parent\n }\n\n _addAriaAndCollapsedClass(element, triggerArray) {\n const isOpen = $(element).hasClass(CLASS_NAME_SHOW)\n\n if (triggerArray.length) {\n $(triggerArray)\n .toggleClass(CLASS_NAME_COLLAPSED, !isOpen)\n .attr('aria-expanded', isOpen)\n }\n }\n\n // Static\n static _getTargetFromElement(element) {\n const selector = Util.getSelectorFromElement(element)\n return selector ? document.querySelector(selector) : null\n }\n\n static _jQueryInterface(config) {\n return this.each(function () {\n const $element = $(this)\n let data = $element.data(DATA_KEY)\n const _config = {\n ...Default,\n ...$element.data(),\n ...(typeof config === 'object' && config ? config : {})\n }\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, 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\n/**\n * Data API implementation\n */\n\n$(document).on(EVENT_CLICK_DATA_API, SELECTOR_DATA_TOGGLE, 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 const $trigger = $(this)\n const selector = Util.getSelectorFromElement(this)\n const selectors = [].slice.call(document.querySelectorAll(selector))\n\n $(selectors).each(function () {\n const $target = $(this)\n const data = $target.data(DATA_KEY)\n const config = data ? 'toggle' : $trigger.data()\n Collapse._jQueryInterface.call($target, config)\n })\n})\n\n/**\n * jQuery\n */\n\n$.fn[NAME] = Collapse._jQueryInterface\n$.fn[NAME].Constructor = Collapse\n$.fn[NAME].noConflict = () => {\n $.fn[NAME] = JQUERY_NO_CONFLICT\n return Collapse._jQueryInterface\n}\n\nexport default Collapse\n","/**\n * --------------------------------------------------------------------------\n * Bootstrap (v4.6.2): dropdown.js\n * Licensed under MIT (https://github.com/twbs/bootstrap/blob/main/LICENSE)\n * --------------------------------------------------------------------------\n */\n\nimport $ from 'jquery'\nimport Popper from 'popper.js'\nimport Util from './util'\n\n/**\n * Constants\n */\n\nconst NAME = 'dropdown'\nconst VERSION = '4.6.2'\nconst DATA_KEY = 'bs.dropdown'\nconst EVENT_KEY = `.${DATA_KEY}`\nconst DATA_API_KEY = '.data-api'\nconst JQUERY_NO_CONFLICT = $.fn[NAME]\nconst ESCAPE_KEYCODE = 27 // KeyboardEvent.which value for Escape (Esc) key\nconst SPACE_KEYCODE = 32 // KeyboardEvent.which value for space key\nconst TAB_KEYCODE = 9 // KeyboardEvent.which value for tab key\nconst ARROW_UP_KEYCODE = 38 // KeyboardEvent.which value for up arrow key\nconst ARROW_DOWN_KEYCODE = 40 // KeyboardEvent.which value for down arrow key\nconst RIGHT_MOUSE_BUTTON_WHICH = 3 // MouseEvent.which value for the right button (assuming a right-handed mouse)\nconst REGEXP_KEYDOWN = new RegExp(`${ARROW_UP_KEYCODE}|${ARROW_DOWN_KEYCODE}|${ESCAPE_KEYCODE}`)\n\nconst CLASS_NAME_DISABLED = 'disabled'\nconst CLASS_NAME_SHOW = 'show'\nconst CLASS_NAME_DROPUP = 'dropup'\nconst CLASS_NAME_DROPRIGHT = 'dropright'\nconst CLASS_NAME_DROPLEFT = 'dropleft'\nconst CLASS_NAME_MENURIGHT = 'dropdown-menu-right'\nconst CLASS_NAME_POSITION_STATIC = 'position-static'\n\nconst EVENT_HIDE = `hide${EVENT_KEY}`\nconst EVENT_HIDDEN = `hidden${EVENT_KEY}`\nconst EVENT_SHOW = `show${EVENT_KEY}`\nconst EVENT_SHOWN = `shown${EVENT_KEY}`\nconst EVENT_CLICK = `click${EVENT_KEY}`\nconst EVENT_CLICK_DATA_API = `click${EVENT_KEY}${DATA_API_KEY}`\nconst EVENT_KEYDOWN_DATA_API = `keydown${EVENT_KEY}${DATA_API_KEY}`\nconst EVENT_KEYUP_DATA_API = `keyup${EVENT_KEY}${DATA_API_KEY}`\n\nconst SELECTOR_DATA_TOGGLE = '[data-toggle=\"dropdown\"]'\nconst SELECTOR_FORM_CHILD = '.dropdown form'\nconst SELECTOR_MENU = '.dropdown-menu'\nconst SELECTOR_NAVBAR_NAV = '.navbar-nav'\nconst SELECTOR_VISIBLE_ITEMS = '.dropdown-menu .dropdown-item:not(.disabled):not(:disabled)'\n\nconst PLACEMENT_TOP = 'top-start'\nconst PLACEMENT_TOPEND = 'top-end'\nconst PLACEMENT_BOTTOM = 'bottom-start'\nconst PLACEMENT_BOTTOMEND = 'bottom-end'\nconst PLACEMENT_RIGHT = 'right-start'\nconst PLACEMENT_LEFT = 'left-start'\n\nconst Default = {\n offset: 0,\n flip: true,\n boundary: 'scrollParent',\n reference: 'toggle',\n display: 'dynamic',\n popperConfig: null\n}\n\nconst DefaultType = {\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/**\n * Class definition\n */\n\nclass Dropdown {\n constructor(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 }\n\n // Getters\n static get VERSION() {\n return VERSION\n }\n\n static get Default() {\n return Default\n }\n\n static get DefaultType() {\n return DefaultType\n }\n\n // Public\n toggle() {\n if (this._element.disabled || $(this._element).hasClass(CLASS_NAME_DISABLED)) {\n return\n }\n\n const isActive = $(this._menu).hasClass(CLASS_NAME_SHOW)\n\n Dropdown._clearMenus()\n\n if (isActive) {\n return\n }\n\n this.show(true)\n }\n\n show(usePopper = false) {\n if (this._element.disabled || $(this._element).hasClass(CLASS_NAME_DISABLED) || $(this._menu).hasClass(CLASS_NAME_SHOW)) {\n return\n }\n\n const relatedTarget = {\n relatedTarget: this._element\n }\n const showEvent = $.Event(EVENT_SHOW, relatedTarget)\n const parent = Dropdown._getParentFromElement(this._element)\n\n $(parent).trigger(showEvent)\n\n if (showEvent.isDefaultPrevented()) {\n return\n }\n\n // Totally disable Popper for Dropdowns in Navbar\n if (!this._inNavbar && usePopper) {\n // Check for Popper dependency\n if (typeof Popper === 'undefined') {\n throw new TypeError('Bootstrap\\'s dropdowns require Popper (https://popper.js.org)')\n }\n\n let 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\n\n // Check if it's jQuery element\n if (typeof this._config.reference.jquery !== 'undefined') {\n referenceElement = this._config.reference[0]\n }\n }\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 if (this._config.boundary !== 'scrollParent') {\n $(parent).addClass(CLASS_NAME_POSITION_STATIC)\n }\n\n this._popper = new Popper(referenceElement, this._menu, this._getPopperConfig())\n }\n\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 if ('ontouchstart' in document.documentElement &&\n $(parent).closest(SELECTOR_NAVBAR_NAV).length === 0) {\n $(document.body).children().on('mouseover', null, $.noop)\n }\n\n this._element.focus()\n this._element.setAttribute('aria-expanded', true)\n\n $(this._menu).toggleClass(CLASS_NAME_SHOW)\n $(parent)\n .toggleClass(CLASS_NAME_SHOW)\n .trigger($.Event(EVENT_SHOWN, relatedTarget))\n }\n\n hide() {\n if (this._element.disabled || $(this._element).hasClass(CLASS_NAME_DISABLED) || !$(this._menu).hasClass(CLASS_NAME_SHOW)) {\n return\n }\n\n const relatedTarget = {\n relatedTarget: this._element\n }\n const hideEvent = $.Event(EVENT_HIDE, relatedTarget)\n const parent = Dropdown._getParentFromElement(this._element)\n\n $(parent).trigger(hideEvent)\n\n if (hideEvent.isDefaultPrevented()) {\n return\n }\n\n if (this._popper) {\n this._popper.destroy()\n }\n\n $(this._menu).toggleClass(CLASS_NAME_SHOW)\n $(parent)\n .toggleClass(CLASS_NAME_SHOW)\n .trigger($.Event(EVENT_HIDDEN, relatedTarget))\n }\n\n dispose() {\n $.removeData(this._element, DATA_KEY)\n $(this._element).off(EVENT_KEY)\n this._element = null\n this._menu = null\n if (this._popper !== null) {\n this._popper.destroy()\n this._popper = null\n }\n }\n\n update() {\n this._inNavbar = this._detectNavbar()\n if (this._popper !== null) {\n this._popper.scheduleUpdate()\n }\n }\n\n // Private\n _addEventListeners() {\n $(this._element).on(EVENT_CLICK, event => {\n event.preventDefault()\n event.stopPropagation()\n this.toggle()\n })\n }\n\n _getConfig(config) {\n config = {\n ...this.constructor.Default,\n ...$(this._element).data(),\n ...config\n }\n\n Util.typeCheckConfig(\n NAME,\n config,\n this.constructor.DefaultType\n )\n\n return config\n }\n\n _getMenuElement() {\n if (!this._menu) {\n const 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 _getPlacement() {\n const $parentDropdown = $(this._element.parentNode)\n let placement = PLACEMENT_BOTTOM\n\n // Handle dropup\n if ($parentDropdown.hasClass(CLASS_NAME_DROPUP)) {\n placement = $(this._menu).hasClass(CLASS_NAME_MENURIGHT) ?\n PLACEMENT_TOPEND :\n 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 ($(this._menu).hasClass(CLASS_NAME_MENURIGHT)) {\n placement = PLACEMENT_BOTTOMEND\n }\n\n return placement\n }\n\n _detectNavbar() {\n return $(this._element).closest('.navbar').length > 0\n }\n\n _getOffset() {\n const offset = {}\n\n if (typeof this._config.offset === 'function') {\n offset.fn = data => {\n data.offsets = {\n ...data.offsets,\n ...this._config.offset(data.offsets, this._element)\n }\n\n return data\n }\n } else {\n offset.offset = this._config.offset\n }\n\n return offset\n }\n\n _getPopperConfig() {\n const 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 }\n\n // Disable Popper if we have a static display\n if (this._config.display === 'static') {\n popperConfig.modifiers.applyStyle = {\n enabled: false\n }\n }\n\n return {\n ...popperConfig,\n ...this._config.popperConfig\n }\n }\n\n // Static\n static _jQueryInterface(config) {\n return this.each(function () {\n let data = $(this).data(DATA_KEY)\n const _config = typeof config === 'object' ? config : null\n\n if (!data) {\n data = new Dropdown(this, _config)\n $(this).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]()\n }\n })\n }\n\n static _clearMenus(event) {\n if (event && (event.which === RIGHT_MOUSE_BUTTON_WHICH ||\n event.type === 'keyup' && event.which !== TAB_KEYCODE)) {\n return\n }\n\n const toggles = [].slice.call(document.querySelectorAll(SELECTOR_DATA_TOGGLE))\n\n for (let i = 0, len = toggles.length; i < len; i++) {\n const parent = Dropdown._getParentFromElement(toggles[i])\n const context = $(toggles[i]).data(DATA_KEY)\n const 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 const dropdownMenu = context._menu\n if (!$(parent).hasClass(CLASS_NAME_SHOW)) {\n continue\n }\n\n if (event && (event.type === 'click' &&\n /input|textarea/i.test(event.target.tagName) || event.type === 'keyup' && event.which === TAB_KEYCODE) &&\n $.contains(parent, event.target)) {\n continue\n }\n\n const hideEvent = $.Event(EVENT_HIDE, relatedTarget)\n $(parent).trigger(hideEvent)\n if (hideEvent.isDefaultPrevented()) {\n continue\n }\n\n // If this is a touch-enabled device we remove the extra\n // empty mouseover listeners we added for iOS support\n if ('ontouchstart' in document.documentElement) {\n $(document.body).children().off('mouseover', null, $.noop)\n }\n\n toggles[i].setAttribute('aria-expanded', 'false')\n\n if (context._popper) {\n context._popper.destroy()\n }\n\n $(dropdownMenu).removeClass(CLASS_NAME_SHOW)\n $(parent)\n .removeClass(CLASS_NAME_SHOW)\n .trigger($.Event(EVENT_HIDDEN, relatedTarget))\n }\n }\n\n static _getParentFromElement(element) {\n let parent\n const selector = Util.getSelectorFromElement(element)\n\n if (selector) {\n parent = document.querySelector(selector)\n }\n\n return parent || element.parentNode\n }\n\n // eslint-disable-next-line complexity\n static _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) ?\n event.which === SPACE_KEYCODE || event.which !== ESCAPE_KEYCODE &&\n (event.which !== ARROW_DOWN_KEYCODE && event.which !== ARROW_UP_KEYCODE ||\n $(event.target).closest(SELECTOR_MENU).length) : !REGEXP_KEYDOWN.test(event.which)) {\n return\n }\n\n if (this.disabled || $(this).hasClass(CLASS_NAME_DISABLED)) {\n return\n }\n\n const parent = Dropdown._getParentFromElement(this)\n const isActive = $(parent).hasClass(CLASS_NAME_SHOW)\n\n if (!isActive && event.which === ESCAPE_KEYCODE) {\n return\n }\n\n event.preventDefault()\n event.stopPropagation()\n\n if (!isActive || (event.which === ESCAPE_KEYCODE || event.which === SPACE_KEYCODE)) {\n if (event.which === ESCAPE_KEYCODE) {\n $(parent.querySelector(SELECTOR_DATA_TOGGLE)).trigger('focus')\n }\n\n $(this).trigger('click')\n return\n }\n\n const items = [].slice.call(parent.querySelectorAll(SELECTOR_VISIBLE_ITEMS))\n .filter(item => $(item).is(':visible'))\n\n if (items.length === 0) {\n return\n }\n\n let index = items.indexOf(event.target)\n\n if (event.which === ARROW_UP_KEYCODE && index > 0) { // Up\n index--\n }\n\n if (event.which === ARROW_DOWN_KEYCODE && index < items.length - 1) { // Down\n index++\n }\n\n if (index < 0) {\n index = 0\n }\n\n items[index].focus()\n }\n}\n\n/**\n * Data API implementation\n */\n\n$(document)\n .on(EVENT_KEYDOWN_DATA_API, SELECTOR_DATA_TOGGLE, Dropdown._dataApiKeydownHandler)\n .on(EVENT_KEYDOWN_DATA_API, SELECTOR_MENU, Dropdown._dataApiKeydownHandler)\n .on(`${EVENT_CLICK_DATA_API} ${EVENT_KEYUP_DATA_API}`, Dropdown._clearMenus)\n .on(EVENT_CLICK_DATA_API, SELECTOR_DATA_TOGGLE, function (event) {\n event.preventDefault()\n event.stopPropagation()\n Dropdown._jQueryInterface.call($(this), 'toggle')\n })\n .on(EVENT_CLICK_DATA_API, SELECTOR_FORM_CHILD, e => {\n e.stopPropagation()\n })\n\n/**\n * jQuery\n */\n\n$.fn[NAME] = Dropdown._jQueryInterface\n$.fn[NAME].Constructor = Dropdown\n$.fn[NAME].noConflict = () => {\n $.fn[NAME] = JQUERY_NO_CONFLICT\n return Dropdown._jQueryInterface\n}\n\nexport default Dropdown\n","/**\n * --------------------------------------------------------------------------\n * Bootstrap (v4.6.2): modal.js\n * Licensed under MIT (https://github.com/twbs/bootstrap/blob/main/LICENSE)\n * --------------------------------------------------------------------------\n */\n\nimport $ from 'jquery'\nimport Util from './util'\n\n/**\n * Constants\n */\n\nconst NAME = 'modal'\nconst VERSION = '4.6.2'\nconst DATA_KEY = 'bs.modal'\nconst EVENT_KEY = `.${DATA_KEY}`\nconst DATA_API_KEY = '.data-api'\nconst JQUERY_NO_CONFLICT = $.fn[NAME]\nconst ESCAPE_KEYCODE = 27 // KeyboardEvent.which value for Escape (Esc) key\n\nconst CLASS_NAME_SCROLLABLE = 'modal-dialog-scrollable'\nconst CLASS_NAME_SCROLLBAR_MEASURER = 'modal-scrollbar-measure'\nconst CLASS_NAME_BACKDROP = 'modal-backdrop'\nconst CLASS_NAME_OPEN = 'modal-open'\nconst CLASS_NAME_FADE = 'fade'\nconst CLASS_NAME_SHOW = 'show'\nconst CLASS_NAME_STATIC = 'modal-static'\n\nconst EVENT_HIDE = `hide${EVENT_KEY}`\nconst EVENT_HIDE_PREVENTED = `hidePrevented${EVENT_KEY}`\nconst EVENT_HIDDEN = `hidden${EVENT_KEY}`\nconst EVENT_SHOW = `show${EVENT_KEY}`\nconst EVENT_SHOWN = `shown${EVENT_KEY}`\nconst EVENT_FOCUSIN = `focusin${EVENT_KEY}`\nconst EVENT_RESIZE = `resize${EVENT_KEY}`\nconst EVENT_CLICK_DISMISS = `click.dismiss${EVENT_KEY}`\nconst EVENT_KEYDOWN_DISMISS = `keydown.dismiss${EVENT_KEY}`\nconst EVENT_MOUSEUP_DISMISS = `mouseup.dismiss${EVENT_KEY}`\nconst EVENT_MOUSEDOWN_DISMISS = `mousedown.dismiss${EVENT_KEY}`\nconst EVENT_CLICK_DATA_API = `click${EVENT_KEY}${DATA_API_KEY}`\n\nconst SELECTOR_DIALOG = '.modal-dialog'\nconst SELECTOR_MODAL_BODY = '.modal-body'\nconst SELECTOR_DATA_TOGGLE = '[data-toggle=\"modal\"]'\nconst SELECTOR_DATA_DISMISS = '[data-dismiss=\"modal\"]'\nconst SELECTOR_FIXED_CONTENT = '.fixed-top, .fixed-bottom, .is-fixed, .sticky-top'\nconst SELECTOR_STICKY_CONTENT = '.sticky-top'\n\nconst Default = {\n backdrop: true,\n keyboard: true,\n focus: true,\n show: true\n}\n\nconst DefaultType = {\n backdrop: '(boolean|string)',\n keyboard: 'boolean',\n focus: 'boolean',\n show: 'boolean'\n}\n\n/**\n * Class definition\n */\n\nclass Modal {\n constructor(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 }\n\n // Getters\n static get VERSION() {\n return VERSION\n }\n\n static get Default() {\n return Default\n }\n\n // Public\n toggle(relatedTarget) {\n return this._isShown ? this.hide() : this.show(relatedTarget)\n }\n\n show(relatedTarget) {\n if (this._isShown || this._isTransitioning) {\n return\n }\n\n const showEvent = $.Event(EVENT_SHOW, {\n relatedTarget\n })\n\n $(this._element).trigger(showEvent)\n\n if (showEvent.isDefaultPrevented()) {\n return\n }\n\n this._isShown = true\n\n if ($(this._element).hasClass(CLASS_NAME_FADE)) {\n this._isTransitioning = true\n }\n\n this._checkScrollbar()\n this._setScrollbar()\n\n this._adjustDialog()\n\n this._setEscapeEvent()\n this._setResizeEvent()\n\n $(this._element).on(\n EVENT_CLICK_DISMISS,\n SELECTOR_DATA_DISMISS,\n event => this.hide(event)\n )\n\n $(this._dialog).on(EVENT_MOUSEDOWN_DISMISS, () => {\n $(this._element).one(EVENT_MOUSEUP_DISMISS, event => {\n if ($(event.target).is(this._element)) {\n this._ignoreBackdropClick = true\n }\n })\n })\n\n this._showBackdrop(() => this._showElement(relatedTarget))\n }\n\n hide(event) {\n if (event) {\n event.preventDefault()\n }\n\n if (!this._isShown || this._isTransitioning) {\n return\n }\n\n const hideEvent = $.Event(EVENT_HIDE)\n\n $(this._element).trigger(hideEvent)\n\n if (!this._isShown || hideEvent.isDefaultPrevented()) {\n return\n }\n\n this._isShown = false\n const transition = $(this._element).hasClass(CLASS_NAME_FADE)\n\n if (transition) {\n this._isTransitioning = true\n }\n\n this._setEscapeEvent()\n this._setResizeEvent()\n\n $(document).off(EVENT_FOCUSIN)\n\n $(this._element).removeClass(CLASS_NAME_SHOW)\n\n $(this._element).off(EVENT_CLICK_DISMISS)\n $(this._dialog).off(EVENT_MOUSEDOWN_DISMISS)\n\n if (transition) {\n const transitionDuration = Util.getTransitionDurationFromElement(this._element)\n\n $(this._element)\n .one(Util.TRANSITION_END, event => this._hideModal(event))\n .emulateTransitionEnd(transitionDuration)\n } else {\n this._hideModal()\n }\n }\n\n dispose() {\n [window, this._element, this._dialog]\n .forEach(htmlElement => $(htmlElement).off(EVENT_KEY))\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 $(document).off(EVENT_FOCUSIN)\n\n $.removeData(this._element, DATA_KEY)\n\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 handleUpdate() {\n this._adjustDialog()\n }\n\n // Private\n _getConfig(config) {\n config = {\n ...Default,\n ...config\n }\n Util.typeCheckConfig(NAME, config, DefaultType)\n return config\n }\n\n _triggerBackdropTransition() {\n const hideEventPrevented = $.Event(EVENT_HIDE_PREVENTED)\n\n $(this._element).trigger(hideEventPrevented)\n if (hideEventPrevented.isDefaultPrevented()) {\n return\n }\n\n const 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 const modalTransitionDuration = Util.getTransitionDurationFromElement(this._dialog)\n $(this._element).off(Util.TRANSITION_END)\n\n $(this._element).one(Util.TRANSITION_END, () => {\n this._element.classList.remove(CLASS_NAME_STATIC)\n if (!isModalOverflowing) {\n $(this._element).one(Util.TRANSITION_END, () => {\n this._element.style.overflowY = ''\n })\n .emulateTransitionEnd(this._element, modalTransitionDuration)\n }\n })\n .emulateTransitionEnd(modalTransitionDuration)\n this._element.focus()\n }\n\n _showElement(relatedTarget) {\n const transition = $(this._element).hasClass(CLASS_NAME_FADE)\n const modalBody = this._dialog ? this._dialog.querySelector(SELECTOR_MODAL_BODY) : null\n\n if (!this._element.parentNode ||\n 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 this._element.removeAttribute('aria-hidden')\n this._element.setAttribute('aria-modal', true)\n this._element.setAttribute('role', 'dialog')\n\n if ($(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 $(this._element).addClass(CLASS_NAME_SHOW)\n\n if (this._config.focus) {\n this._enforceFocus()\n }\n\n const shownEvent = $.Event(EVENT_SHOWN, {\n relatedTarget\n })\n\n const transitionComplete = () => {\n if (this._config.focus) {\n this._element.focus()\n }\n\n this._isTransitioning = false\n $(this._element).trigger(shownEvent)\n }\n\n if (transition) {\n const transitionDuration = Util.getTransitionDurationFromElement(this._dialog)\n\n $(this._dialog)\n .one(Util.TRANSITION_END, transitionComplete)\n .emulateTransitionEnd(transitionDuration)\n } else {\n transitionComplete()\n }\n }\n\n _enforceFocus() {\n $(document)\n .off(EVENT_FOCUSIN) // Guard against infinite focus loop\n .on(EVENT_FOCUSIN, event => {\n if (document !== event.target &&\n this._element !== event.target &&\n $(this._element).has(event.target).length === 0) {\n this._element.focus()\n }\n })\n }\n\n _setEscapeEvent() {\n if (this._isShown) {\n $(this._element).on(EVENT_KEYDOWN_DISMISS, event => {\n if (this._config.keyboard && event.which === ESCAPE_KEYCODE) {\n event.preventDefault()\n this.hide()\n } else if (!this._config.keyboard && event.which === ESCAPE_KEYCODE) {\n this._triggerBackdropTransition()\n }\n })\n } else if (!this._isShown) {\n $(this._element).off(EVENT_KEYDOWN_DISMISS)\n }\n }\n\n _setResizeEvent() {\n if (this._isShown) {\n $(window).on(EVENT_RESIZE, event => this.handleUpdate(event))\n } else {\n $(window).off(EVENT_RESIZE)\n }\n }\n\n _hideModal() {\n this._element.style.display = 'none'\n this._element.setAttribute('aria-hidden', true)\n this._element.removeAttribute('aria-modal')\n this._element.removeAttribute('role')\n this._isTransitioning = false\n this._showBackdrop(() => {\n $(document.body).removeClass(CLASS_NAME_OPEN)\n this._resetAdjustments()\n this._resetScrollbar()\n $(this._element).trigger(EVENT_HIDDEN)\n })\n }\n\n _removeBackdrop() {\n if (this._backdrop) {\n $(this._backdrop).remove()\n this._backdrop = null\n }\n }\n\n _showBackdrop(callback) {\n const animate = $(this._element).hasClass(CLASS_NAME_FADE) ?\n CLASS_NAME_FADE : ''\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 $(this._backdrop).appendTo(document.body)\n\n $(this._element).on(EVENT_CLICK_DISMISS, event => {\n if (this._ignoreBackdropClick) {\n this._ignoreBackdropClick = false\n return\n }\n\n if (event.target !== event.currentTarget) {\n return\n }\n\n if (this._config.backdrop === 'static') {\n this._triggerBackdropTransition()\n } else {\n this.hide()\n }\n })\n\n if (animate) {\n Util.reflow(this._backdrop)\n }\n\n $(this._backdrop).addClass(CLASS_NAME_SHOW)\n\n if (!callback) {\n return\n }\n\n if (!animate) {\n callback()\n return\n }\n\n const backdropTransitionDuration = Util.getTransitionDurationFromElement(this._backdrop)\n\n $(this._backdrop)\n .one(Util.TRANSITION_END, callback)\n .emulateTransitionEnd(backdropTransitionDuration)\n } else if (!this._isShown && this._backdrop) {\n $(this._backdrop).removeClass(CLASS_NAME_SHOW)\n\n const callbackRemove = () => {\n this._removeBackdrop()\n if (callback) {\n callback()\n }\n }\n\n if ($(this._element).hasClass(CLASS_NAME_FADE)) {\n const backdropTransitionDuration = Util.getTransitionDurationFromElement(this._backdrop)\n\n $(this._backdrop)\n .one(Util.TRANSITION_END, callbackRemove)\n .emulateTransitionEnd(backdropTransitionDuration)\n } else {\n callbackRemove()\n }\n } else if (callback) {\n callback()\n }\n }\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 _adjustDialog() {\n const 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 _resetAdjustments() {\n this._element.style.paddingLeft = ''\n this._element.style.paddingRight = ''\n }\n\n _checkScrollbar() {\n const rect = document.body.getBoundingClientRect()\n this._isBodyOverflowing = Math.round(rect.left + rect.right) < window.innerWidth\n this._scrollbarWidth = this._getScrollbarWidth()\n }\n\n _setScrollbar() {\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 const fixedContent = [].slice.call(document.querySelectorAll(SELECTOR_FIXED_CONTENT))\n const stickyContent = [].slice.call(document.querySelectorAll(SELECTOR_STICKY_CONTENT))\n\n // Adjust fixed content padding\n $(fixedContent).each((index, element) => {\n const actualPadding = element.style.paddingRight\n const calculatedPadding = $(element).css('padding-right')\n $(element)\n .data('padding-right', actualPadding)\n .css('padding-right', `${parseFloat(calculatedPadding) + this._scrollbarWidth}px`)\n })\n\n // Adjust sticky content margin\n $(stickyContent).each((index, element) => {\n const actualMargin = element.style.marginRight\n const calculatedMargin = $(element).css('margin-right')\n $(element)\n .data('margin-right', actualMargin)\n .css('margin-right', `${parseFloat(calculatedMargin) - this._scrollbarWidth}px`)\n })\n\n // Adjust body padding\n const actualPadding = document.body.style.paddingRight\n const calculatedPadding = $(document.body).css('padding-right')\n $(document.body)\n .data('padding-right', actualPadding)\n .css('padding-right', `${parseFloat(calculatedPadding) + this._scrollbarWidth}px`)\n }\n\n $(document.body).addClass(CLASS_NAME_OPEN)\n }\n\n _resetScrollbar() {\n // Restore fixed content padding\n const fixedContent = [].slice.call(document.querySelectorAll(SELECTOR_FIXED_CONTENT))\n $(fixedContent).each((index, element) => {\n const padding = $(element).data('padding-right')\n $(element).removeData('padding-right')\n element.style.paddingRight = padding ? padding : ''\n })\n\n // Restore sticky content\n const elements = [].slice.call(document.querySelectorAll(`${SELECTOR_STICKY_CONTENT}`))\n $(elements).each((index, element) => {\n const margin = $(element).data('margin-right')\n if (typeof margin !== 'undefined') {\n $(element).css('margin-right', margin).removeData('margin-right')\n }\n })\n\n // Restore body padding\n const padding = $(document.body).data('padding-right')\n $(document.body).removeData('padding-right')\n document.body.style.paddingRight = padding ? padding : ''\n }\n\n _getScrollbarWidth() { // thx d.walsh\n const scrollDiv = document.createElement('div')\n scrollDiv.className = CLASS_NAME_SCROLLBAR_MEASURER\n document.body.appendChild(scrollDiv)\n const scrollbarWidth = scrollDiv.getBoundingClientRect().width - scrollDiv.clientWidth\n document.body.removeChild(scrollDiv)\n return scrollbarWidth\n }\n\n // Static\n static _jQueryInterface(config, relatedTarget) {\n return this.each(function () {\n let data = $(this).data(DATA_KEY)\n const _config = {\n ...Default,\n ...$(this).data(),\n ...(typeof config === 'object' && config ? config : {})\n }\n\n if (!data) {\n data = new Modal(this, _config)\n $(this).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](relatedTarget)\n } else if (_config.show) {\n data.show(relatedTarget)\n }\n })\n }\n}\n\n/**\n * Data API implementation\n */\n\n$(document).on(EVENT_CLICK_DATA_API, SELECTOR_DATA_TOGGLE, function (event) {\n let target\n const selector = Util.getSelectorFromElement(this)\n\n if (selector) {\n target = document.querySelector(selector)\n }\n\n const config = $(target).data(DATA_KEY) ?\n 'toggle' : {\n ...$(target).data(),\n ...$(this).data()\n }\n\n if (this.tagName === 'A' || this.tagName === 'AREA') {\n event.preventDefault()\n }\n\n const $target = $(target).one(EVENT_SHOW, 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, () => {\n if ($(this).is(':visible')) {\n this.focus()\n }\n })\n })\n\n Modal._jQueryInterface.call($(target), config, this)\n})\n\n/**\n * jQuery\n */\n\n$.fn[NAME] = Modal._jQueryInterface\n$.fn[NAME].Constructor = Modal\n$.fn[NAME].noConflict = () => {\n $.fn[NAME] = JQUERY_NO_CONFLICT\n return Modal._jQueryInterface\n}\n\nexport default Modal\n","/**\n * --------------------------------------------------------------------------\n * Bootstrap (v4.6.2): tab.js\n * Licensed under MIT (https://github.com/twbs/bootstrap/blob/main/LICENSE)\n * --------------------------------------------------------------------------\n */\n\nimport $ from 'jquery'\nimport Util from './util'\n\n/**\n * Constants\n */\n\nconst NAME = 'tab'\nconst VERSION = '4.6.2'\nconst DATA_KEY = 'bs.tab'\nconst EVENT_KEY = `.${DATA_KEY}`\nconst DATA_API_KEY = '.data-api'\nconst JQUERY_NO_CONFLICT = $.fn[NAME]\n\nconst CLASS_NAME_DROPDOWN_MENU = 'dropdown-menu'\nconst CLASS_NAME_ACTIVE = 'active'\nconst CLASS_NAME_DISABLED = 'disabled'\nconst CLASS_NAME_FADE = 'fade'\nconst CLASS_NAME_SHOW = 'show'\n\nconst EVENT_HIDE = `hide${EVENT_KEY}`\nconst EVENT_HIDDEN = `hidden${EVENT_KEY}`\nconst EVENT_SHOW = `show${EVENT_KEY}`\nconst EVENT_SHOWN = `shown${EVENT_KEY}`\nconst EVENT_CLICK_DATA_API = `click${EVENT_KEY}${DATA_API_KEY}`\n\nconst SELECTOR_DROPDOWN = '.dropdown'\nconst SELECTOR_NAV_LIST_GROUP = '.nav, .list-group'\nconst SELECTOR_ACTIVE = '.active'\nconst SELECTOR_ACTIVE_UL = '> li > .active'\nconst SELECTOR_DATA_TOGGLE = '[data-toggle=\"tab\"], [data-toggle=\"pill\"], [data-toggle=\"list\"]'\nconst SELECTOR_DROPDOWN_TOGGLE = '.dropdown-toggle'\nconst SELECTOR_DROPDOWN_ACTIVE_CHILD = '> .dropdown-menu .active'\n\n/**\n * Class definition\n */\n\nclass Tab {\n constructor(element) {\n this._element = element\n }\n\n // Getters\n static get VERSION() {\n return VERSION\n }\n\n // Public\n show() {\n if (this._element.parentNode &&\n this._element.parentNode.nodeType === Node.ELEMENT_NODE &&\n $(this._element).hasClass(CLASS_NAME_ACTIVE) ||\n $(this._element).hasClass(CLASS_NAME_DISABLED) ||\n this._element.hasAttribute('disabled')) {\n return\n }\n\n let target\n let previous\n const listElement = $(this._element).closest(SELECTOR_NAV_LIST_GROUP)[0]\n const selector = Util.getSelectorFromElement(this._element)\n\n if (listElement) {\n const itemSelector = listElement.nodeName === 'UL' || listElement.nodeName === 'OL' ? SELECTOR_ACTIVE_UL : SELECTOR_ACTIVE\n previous = $.makeArray($(listElement).find(itemSelector))\n previous = previous[previous.length - 1]\n }\n\n const hideEvent = $.Event(EVENT_HIDE, {\n relatedTarget: this._element\n })\n\n const showEvent = $.Event(EVENT_SHOW, {\n relatedTarget: previous\n })\n\n if (previous) {\n $(previous).trigger(hideEvent)\n }\n\n $(this._element).trigger(showEvent)\n\n if (showEvent.isDefaultPrevented() ||\n hideEvent.isDefaultPrevented()) {\n return\n }\n\n if (selector) {\n target = document.querySelector(selector)\n }\n\n this._activate(\n this._element,\n listElement\n )\n\n const complete = () => {\n const hiddenEvent = $.Event(EVENT_HIDDEN, {\n relatedTarget: this._element\n })\n\n const shownEvent = $.Event(EVENT_SHOWN, {\n relatedTarget: previous\n })\n\n $(previous).trigger(hiddenEvent)\n $(this._element).trigger(shownEvent)\n }\n\n if (target) {\n this._activate(target, target.parentNode, complete)\n } else {\n complete()\n }\n }\n\n dispose() {\n $.removeData(this._element, DATA_KEY)\n this._element = null\n }\n\n // Private\n _activate(element, container, callback) {\n const activeElements = container && (container.nodeName === 'UL' || container.nodeName === 'OL') ?\n $(container).find(SELECTOR_ACTIVE_UL) :\n $(container).children(SELECTOR_ACTIVE)\n\n const active = activeElements[0]\n const isTransitioning = callback && (active && $(active).hasClass(CLASS_NAME_FADE))\n const complete = () => this._transitionComplete(\n element,\n active,\n callback\n )\n\n if (active && isTransitioning) {\n const transitionDuration = Util.getTransitionDurationFromElement(active)\n\n $(active)\n .removeClass(CLASS_NAME_SHOW)\n .one(Util.TRANSITION_END, complete)\n .emulateTransitionEnd(transitionDuration)\n } else {\n complete()\n }\n }\n\n _transitionComplete(element, active, callback) {\n if (active) {\n $(active).removeClass(CLASS_NAME_ACTIVE)\n\n const dropdownChild = $(active.parentNode).find(\n SELECTOR_DROPDOWN_ACTIVE_CHILD\n )[0]\n\n if (dropdownChild) {\n $(dropdownChild).removeClass(CLASS_NAME_ACTIVE)\n }\n\n if (active.getAttribute('role') === 'tab') {\n active.setAttribute('aria-selected', false)\n }\n }\n\n $(element).addClass(CLASS_NAME_ACTIVE)\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)) {\n element.classList.add(CLASS_NAME_SHOW)\n }\n\n let parent = element.parentNode\n if (parent && parent.nodeName === 'LI') {\n parent = parent.parentNode\n }\n\n if (parent && $(parent).hasClass(CLASS_NAME_DROPDOWN_MENU)) {\n const dropdownElement = $(element).closest(SELECTOR_DROPDOWN)[0]\n\n if (dropdownElement) {\n const dropdownToggleList = [].slice.call(dropdownElement.querySelectorAll(SELECTOR_DROPDOWN_TOGGLE))\n\n $(dropdownToggleList).addClass(CLASS_NAME_ACTIVE)\n }\n\n element.setAttribute('aria-expanded', true)\n }\n\n if (callback) {\n callback()\n }\n }\n\n // Static\n static _jQueryInterface(config) {\n return this.each(function () {\n const $this = $(this)\n let data = $this.data(DATA_KEY)\n\n if (!data) {\n data = new Tab(this)\n $this.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]()\n }\n })\n }\n}\n\n/**\n * Data API implementation\n */\n\n$(document)\n .on(EVENT_CLICK_DATA_API, SELECTOR_DATA_TOGGLE, function (event) {\n event.preventDefault()\n Tab._jQueryInterface.call($(this), 'show')\n })\n\n/**\n * jQuery\n */\n\n$.fn[NAME] = Tab._jQueryInterface\n$.fn[NAME].Constructor = Tab\n$.fn[NAME].noConflict = () => {\n $.fn[NAME] = JQUERY_NO_CONFLICT\n return Tab._jQueryInterface\n}\n\nexport default Tab\n","/*\n _ _ _ _\n ___| (_) ___| | __ (_)___\n/ __| | |/ __| |/ / | / __|\n\\__ \\ | | (__| < _ | \\__ \\\n|___/_|_|\\___|_|\\_(_)/ |___/\n |__/\n\n Version: 1.8.1\n Author: Ken Wheeler\n Website: http://kenwheeler.github.io\n Docs: http://kenwheeler.github.io/slick\n Repo: http://github.com/kenwheeler/slick\n Issues: http://github.com/kenwheeler/slick/issues\n\n */\n/* global window, document, define, jQuery, setInterval, clearInterval */\n;(function(factory) {\n 'use strict';\n if (typeof define === 'function' && define.amd) {\n define(['jquery'], factory);\n } else if (typeof exports !== 'undefined') {\n module.exports = factory(require('jquery'));\n } else {\n factory(jQuery);\n }\n\n}(function($) {\n 'use strict';\n var Slick = window.Slick || {};\n\n Slick = (function() {\n\n var instanceUid = 0;\n\n function Slick(element, settings) {\n\n var _ = this, dataSettings;\n\n _.defaults = {\n accessibility: true,\n adaptiveHeight: false,\n appendArrows: $(element),\n appendDots: $(element),\n arrows: true,\n asNavFor: null,\n prevArrow: '<button class=\"slick-prev\" aria-label=\"Previous\" type=\"button\">Previous</button>',\n nextArrow: '<button class=\"slick-next\" aria-label=\"Next\" type=\"button\">Next</button>',\n autoplay: false,\n autoplaySpeed: 3000,\n centerMode: false,\n centerPadding: '50px',\n cssEase: 'ease',\n customPaging: function(slider, i) {\n return $('<button type=\"button\" />').text(i + 1);\n },\n dots: false,\n dotsClass: 'slick-dots',\n draggable: true,\n easing: 'linear',\n edgeFriction: 0.35,\n fade: false,\n focusOnSelect: false,\n focusOnChange: false,\n infinite: true,\n initialSlide: 0,\n lazyLoad: 'ondemand',\n mobileFirst: false,\n pauseOnHover: true,\n pauseOnFocus: true,\n pauseOnDotsHover: false,\n respondTo: 'window',\n responsive: null,\n rows: 1,\n rtl: false,\n slide: '',\n slidesPerRow: 1,\n slidesToShow: 1,\n slidesToScroll: 1,\n speed: 500,\n swipe: true,\n swipeToSlide: false,\n touchMove: true,\n touchThreshold: 5,\n useCSS: true,\n useTransform: true,\n variableWidth: false,\n vertical: false,\n verticalSwiping: false,\n waitForAnimate: true,\n zIndex: 1000\n };\n\n _.initials = {\n animating: false,\n dragging: false,\n autoPlayTimer: null,\n currentDirection: 0,\n currentLeft: null,\n currentSlide: 0,\n direction: 1,\n $dots: null,\n listWidth: null,\n listHeight: null,\n loadIndex: 0,\n $nextArrow: null,\n $prevArrow: null,\n scrolling: false,\n slideCount: null,\n slideWidth: null,\n $slideTrack: null,\n $slides: null,\n sliding: false,\n slideOffset: 0,\n swipeLeft: null,\n swiping: false,\n $list: null,\n touchObject: {},\n transformsEnabled: false,\n unslicked: false\n };\n\n $.extend(_, _.initials);\n\n _.activeBreakpoint = null;\n _.animType = null;\n _.animProp = null;\n _.breakpoints = [];\n _.breakpointSettings = [];\n _.cssTransitions = false;\n _.focussed = false;\n _.interrupted = false;\n _.hidden = 'hidden';\n _.paused = true;\n _.positionProp = null;\n _.respondTo = null;\n _.rowCount = 1;\n _.shouldClick = true;\n _.$slider = $(element);\n _.$slidesCache = null;\n _.transformType = null;\n _.transitionType = null;\n _.visibilityChange = 'visibilitychange';\n _.windowWidth = 0;\n _.windowTimer = null;\n\n dataSettings = $(element).data('slick') || {};\n\n _.options = $.extend({}, _.defaults, settings, dataSettings);\n\n _.currentSlide = _.options.initialSlide;\n\n _.originalSettings = _.options;\n\n if (typeof document.mozHidden !== 'undefined') {\n _.hidden = 'mozHidden';\n _.visibilityChange = 'mozvisibilitychange';\n } else if (typeof document.webkitHidden !== 'undefined') {\n _.hidden = 'webkitHidden';\n _.visibilityChange = 'webkitvisibilitychange';\n }\n\n _.autoPlay = $.proxy(_.autoPlay, _);\n _.autoPlayClear = $.proxy(_.autoPlayClear, _);\n _.autoPlayIterator = $.proxy(_.autoPlayIterator, _);\n _.changeSlide = $.proxy(_.changeSlide, _);\n _.clickHandler = $.proxy(_.clickHandler, _);\n _.selectHandler = $.proxy(_.selectHandler, _);\n _.setPosition = $.proxy(_.setPosition, _);\n _.swipeHandler = $.proxy(_.swipeHandler, _);\n _.dragHandler = $.proxy(_.dragHandler, _);\n _.keyHandler = $.proxy(_.keyHandler, _);\n\n _.instanceUid = instanceUid++;\n\n // A simple way to check for HTML strings\n // Strict HTML recognition (must start with <)\n // Extracted from jQuery v1.11 source\n _.htmlExpr = /^(?:\\s*(<[\\w\\W]+>)[^>]*)$/;\n\n\n _.registerBreakpoints();\n _.init(true);\n\n }\n\n return Slick;\n\n }());\n\n Slick.prototype.activateADA = function() {\n var _ = this;\n\n _.$slideTrack.find('.slick-active').attr({\n 'aria-hidden': 'false'\n }).find('a, input, button, select').attr({\n 'tabindex': '0'\n });\n\n };\n\n Slick.prototype.addSlide = Slick.prototype.slickAdd = function(markup, index, addBefore) {\n\n var _ = this;\n\n if (typeof(index) === 'boolean') {\n addBefore = index;\n index = null;\n } else if (index < 0 || (index >= _.slideCount)) {\n return false;\n }\n\n _.unload();\n\n if (typeof(index) === 'number') {\n if (index === 0 && _.$slides.length === 0) {\n $(markup).appendTo(_.$slideTrack);\n } else if (addBefore) {\n $(markup).insertBefore(_.$slides.eq(index));\n } else {\n $(markup).insertAfter(_.$slides.eq(index));\n }\n } else {\n if (addBefore === true) {\n $(markup).prependTo(_.$slideTrack);\n } else {\n $(markup).appendTo(_.$slideTrack);\n }\n }\n\n _.$slides = _.$slideTrack.children(this.options.slide);\n\n _.$slideTrack.children(this.options.slide).detach();\n\n _.$slideTrack.append(_.$slides);\n\n _.$slides.each(function(index, element) {\n $(element).attr('data-slick-index', index);\n });\n\n _.$slidesCache = _.$slides;\n\n _.reinit();\n\n };\n\n Slick.prototype.animateHeight = function() {\n var _ = this;\n if (_.options.slidesToShow === 1 && _.options.adaptiveHeight === true && _.options.vertical === false) {\n var targetHeight = _.$slides.eq(_.currentSlide).outerHeight(true);\n _.$list.animate({\n height: targetHeight\n }, _.options.speed);\n }\n };\n\n Slick.prototype.animateSlide = function(targetLeft, callback) {\n\n var animProps = {},\n _ = this;\n\n _.animateHeight();\n\n if (_.options.rtl === true && _.options.vertical === false) {\n targetLeft = -targetLeft;\n }\n if (_.transformsEnabled === false) {\n if (_.options.vertical === false) {\n _.$slideTrack.animate({\n left: targetLeft\n }, _.options.speed, _.options.easing, callback);\n } else {\n _.$slideTrack.animate({\n top: targetLeft\n }, _.options.speed, _.options.easing, callback);\n }\n\n } else {\n\n if (_.cssTransitions === false) {\n if (_.options.rtl === true) {\n _.currentLeft = -(_.currentLeft);\n }\n $({\n animStart: _.currentLeft\n }).animate({\n animStart: targetLeft\n }, {\n duration: _.options.speed,\n easing: _.options.easing,\n step: function(now) {\n now = Math.ceil(now);\n if (_.options.vertical === false) {\n animProps[_.animType] = 'translate(' +\n now + 'px, 0px)';\n _.$slideTrack.css(animProps);\n } else {\n animProps[_.animType] = 'translate(0px,' +\n now + 'px)';\n _.$slideTrack.css(animProps);\n }\n },\n complete: function() {\n if (callback) {\n callback.call();\n }\n }\n });\n\n } else {\n\n _.applyTransition();\n targetLeft = Math.ceil(targetLeft);\n\n if (_.options.vertical === false) {\n animProps[_.animType] = 'translate3d(' + targetLeft + 'px, 0px, 0px)';\n } else {\n animProps[_.animType] = 'translate3d(0px,' + targetLeft + 'px, 0px)';\n }\n _.$slideTrack.css(animProps);\n\n if (callback) {\n setTimeout(function() {\n\n _.disableTransition();\n\n callback.call();\n }, _.options.speed);\n }\n\n }\n\n }\n\n };\n\n Slick.prototype.getNavTarget = function() {\n\n var _ = this,\n asNavFor = _.options.asNavFor;\n\n if ( asNavFor && asNavFor !== null ) {\n asNavFor = $(asNavFor).not(_.$slider);\n }\n\n return asNavFor;\n\n };\n\n Slick.prototype.asNavFor = function(index) {\n\n var _ = this,\n asNavFor = _.getNavTarget();\n\n if ( asNavFor !== null && typeof asNavFor === 'object' ) {\n asNavFor.each(function() {\n var target = $(this).slick('getSlick');\n if(!target.unslicked) {\n target.slideHandler(index, true);\n }\n });\n }\n\n };\n\n Slick.prototype.applyTransition = function(slide) {\n\n var _ = this,\n transition = {};\n\n if (_.options.fade === false) {\n transition[_.transitionType] = _.transformType + ' ' + _.options.speed + 'ms ' + _.options.cssEase;\n } else {\n transition[_.transitionType] = 'opacity ' + _.options.speed + 'ms ' + _.options.cssEase;\n }\n\n if (_.options.fade === false) {\n _.$slideTrack.css(transition);\n } else {\n _.$slides.eq(slide).css(transition);\n }\n\n };\n\n Slick.prototype.autoPlay = function() {\n\n var _ = this;\n\n _.autoPlayClear();\n\n if ( _.slideCount > _.options.slidesToShow ) {\n _.autoPlayTimer = setInterval( _.autoPlayIterator, _.options.autoplaySpeed );\n }\n\n };\n\n Slick.prototype.autoPlayClear = function() {\n\n var _ = this;\n\n if (_.autoPlayTimer) {\n clearInterval(_.autoPlayTimer);\n }\n\n };\n\n Slick.prototype.autoPlayIterator = function() {\n\n var _ = this,\n slideTo = _.currentSlide + _.options.slidesToScroll;\n\n if ( !_.paused && !_.interrupted && !_.focussed ) {\n\n if ( _.options.infinite === false ) {\n\n if ( _.direction === 1 && ( _.currentSlide + 1 ) === ( _.slideCount - 1 )) {\n _.direction = 0;\n }\n\n else if ( _.direction === 0 ) {\n\n slideTo = _.currentSlide - _.options.slidesToScroll;\n\n if ( _.currentSlide - 1 === 0 ) {\n _.direction = 1;\n }\n\n }\n\n }\n\n _.slideHandler( slideTo );\n\n }\n\n };\n\n Slick.prototype.buildArrows = function() {\n\n var _ = this;\n\n if (_.options.arrows === true ) {\n\n _.$prevArrow = $(_.options.prevArrow).addClass('slick-arrow');\n _.$nextArrow = $(_.options.nextArrow).addClass('slick-arrow');\n\n if( _.slideCount > _.options.slidesToShow ) {\n\n _.$prevArrow.removeClass('slick-hidden').removeAttr('aria-hidden tabindex');\n _.$nextArrow.removeClass('slick-hidden').removeAttr('aria-hidden tabindex');\n\n if (_.htmlExpr.test(_.options.prevArrow)) {\n _.$prevArrow.prependTo(_.options.appendArrows);\n }\n\n if (_.htmlExpr.test(_.options.nextArrow)) {\n _.$nextArrow.appendTo(_.options.appendArrows);\n }\n\n if (_.options.infinite !== true) {\n _.$prevArrow\n .addClass('slick-disabled')\n .attr('aria-disabled', 'true');\n }\n\n } else {\n\n _.$prevArrow.add( _.$nextArrow )\n\n .addClass('slick-hidden')\n .attr({\n 'aria-disabled': 'true',\n 'tabindex': '-1'\n });\n\n }\n\n }\n\n };\n\n Slick.prototype.buildDots = function() {\n\n var _ = this,\n i, dot;\n\n if (_.options.dots === true && _.slideCount > _.options.slidesToShow) {\n\n _.$slider.addClass('slick-dotted');\n\n dot = $('<ul />').addClass(_.options.dotsClass);\n\n for (i = 0; i <= _.getDotCount(); i += 1) {\n dot.append($('<li />').append(_.options.customPaging.call(this, _, i)));\n }\n\n _.$dots = dot.appendTo(_.options.appendDots);\n\n _.$dots.find('li').first().addClass('slick-active');\n\n }\n\n };\n\n Slick.prototype.buildOut = function() {\n\n var _ = this;\n\n _.$slides =\n _.$slider\n .children( _.options.slide + ':not(.slick-cloned)')\n .addClass('slick-slide');\n\n _.slideCount = _.$slides.length;\n\n _.$slides.each(function(index, element) {\n $(element)\n .attr('data-slick-index', index)\n .data('originalStyling', $(element).attr('style') || '');\n });\n\n _.$slider.addClass('slick-slider');\n\n _.$slideTrack = (_.slideCount === 0) ?\n $('<div class=\"slick-track\"/>').appendTo(_.$slider) :\n _.$slides.wrapAll('<div class=\"slick-track\"/>').parent();\n\n _.$list = _.$slideTrack.wrap(\n '<div class=\"slick-list\"/>').parent();\n _.$slideTrack.css('opacity', 0);\n\n if (_.options.centerMode === true || _.options.swipeToSlide === true) {\n _.options.slidesToScroll = 1;\n }\n\n $('img[data-lazy]', _.$slider).not('[src]').addClass('slick-loading');\n\n _.setupInfinite();\n\n _.buildArrows();\n\n _.buildDots();\n\n _.updateDots();\n\n\n _.setSlideClasses(typeof _.currentSlide === 'number' ? _.currentSlide : 0);\n\n if (_.options.draggable === true) {\n _.$list.addClass('draggable');\n }\n\n };\n\n Slick.prototype.buildRows = function() {\n\n var _ = this, a, b, c, newSlides, numOfSlides, originalSlides,slidesPerSection;\n\n newSlides = document.createDocumentFragment();\n originalSlides = _.$slider.children();\n\n if(_.options.rows > 0) {\n\n slidesPerSection = _.options.slidesPerRow * _.options.rows;\n numOfSlides = Math.ceil(\n originalSlides.length / slidesPerSection\n );\n\n for(a = 0; a < numOfSlides; a++){\n var slide = document.createElement('div');\n for(b = 0; b < _.options.rows; b++) {\n var row = document.createElement('div');\n for(c = 0; c < _.options.slidesPerRow; c++) {\n var target = (a * slidesPerSection + ((b * _.options.slidesPerRow) + c));\n if (originalSlides.get(target)) {\n row.appendChild(originalSlides.get(target));\n }\n }\n slide.appendChild(row);\n }\n newSlides.appendChild(slide);\n }\n\n _.$slider.empty().append(newSlides);\n _.$slider.children().children().children()\n .css({\n 'width':(100 / _.options.slidesPerRow) + '%',\n 'display': 'inline-block'\n });\n\n }\n\n };\n\n Slick.prototype.checkResponsive = function(initial, forceUpdate) {\n\n var _ = this,\n breakpoint, targetBreakpoint, respondToWidth, triggerBreakpoint = false;\n var sliderWidth = _.$slider.width();\n var windowWidth = window.innerWidth || $(window).width();\n\n if (_.respondTo === 'window') {\n respondToWidth = windowWidth;\n } else if (_.respondTo === 'slider') {\n respondToWidth = sliderWidth;\n } else if (_.respondTo === 'min') {\n respondToWidth = Math.min(windowWidth, sliderWidth);\n }\n\n if ( _.options.responsive &&\n _.options.responsive.length &&\n _.options.responsive !== null) {\n\n targetBreakpoint = null;\n\n for (breakpoint in _.breakpoints) {\n if (_.breakpoints.hasOwnProperty(breakpoint)) {\n if (_.originalSettings.mobileFirst === false) {\n if (respondToWidth < _.breakpoints[breakpoint]) {\n targetBreakpoint = _.breakpoints[breakpoint];\n }\n } else {\n if (respondToWidth > _.breakpoints[breakpoint]) {\n targetBreakpoint = _.breakpoints[breakpoint];\n }\n }\n }\n }\n\n if (targetBreakpoint !== null) {\n if (_.activeBreakpoint !== null) {\n if (targetBreakpoint !== _.activeBreakpoint || forceUpdate) {\n _.activeBreakpoint =\n targetBreakpoint;\n if (_.breakpointSettings[targetBreakpoint] === 'unslick') {\n _.unslick(targetBreakpoint);\n } else {\n _.options = $.extend({}, _.originalSettings,\n _.breakpointSettings[\n targetBreakpoint]);\n if (initial === true) {\n _.currentSlide = _.options.initialSlide;\n }\n _.refresh(initial);\n }\n triggerBreakpoint = targetBreakpoint;\n }\n } else {\n _.activeBreakpoint = targetBreakpoint;\n if (_.breakpointSettings[targetBreakpoint] === 'unslick') {\n _.unslick(targetBreakpoint);\n } else {\n _.options = $.extend({}, _.originalSettings,\n _.breakpointSettings[\n targetBreakpoint]);\n if (initial === true) {\n _.currentSlide = _.options.initialSlide;\n }\n _.refresh(initial);\n }\n triggerBreakpoint = targetBreakpoint;\n }\n } else {\n if (_.activeBreakpoint !== null) {\n _.activeBreakpoint = null;\n _.options = _.originalSettings;\n if (initial === true) {\n _.currentSlide = _.options.initialSlide;\n }\n _.refresh(initial);\n triggerBreakpoint = targetBreakpoint;\n }\n }\n\n // only trigger breakpoints during an actual break. not on initialize.\n if( !initial && triggerBreakpoint !== false ) {\n _.$slider.trigger('breakpoint', [_, triggerBreakpoint]);\n }\n }\n\n };\n\n Slick.prototype.changeSlide = function(event, dontAnimate) {\n\n var _ = this,\n $target = $(event.currentTarget),\n indexOffset, slideOffset, unevenOffset;\n\n // If target is a link, prevent default action.\n if($target.is('a')) {\n event.preventDefault();\n }\n\n // If target is not the <li> element (ie: a child), find the <li>.\n if(!$target.is('li')) {\n $target = $target.closest('li');\n }\n\n unevenOffset = (_.slideCount % _.options.slidesToScroll !== 0);\n indexOffset = unevenOffset ? 0 : (_.slideCount - _.currentSlide) % _.options.slidesToScroll;\n\n switch (event.data.message) {\n\n case 'previous':\n slideOffset = indexOffset === 0 ? _.options.slidesToScroll : _.options.slidesToShow - indexOffset;\n if (_.slideCount > _.options.slidesToShow) {\n _.slideHandler(_.currentSlide - slideOffset, false, dontAnimate);\n }\n break;\n\n case 'next':\n slideOffset = indexOffset === 0 ? _.options.slidesToScroll : indexOffset;\n if (_.slideCount > _.options.slidesToShow) {\n _.slideHandler(_.currentSlide + slideOffset, false, dontAnimate);\n }\n break;\n\n case 'index':\n var index = event.data.index === 0 ? 0 :\n event.data.index || $target.index() * _.options.slidesToScroll;\n\n _.slideHandler(_.checkNavigable(index), false, dontAnimate);\n $target.children().trigger('focus');\n break;\n\n default:\n return;\n }\n\n };\n\n Slick.prototype.checkNavigable = function(index) {\n\n var _ = this,\n navigables, prevNavigable;\n\n navigables = _.getNavigableIndexes();\n prevNavigable = 0;\n if (index > navigables[navigables.length - 1]) {\n index = navigables[navigables.length - 1];\n } else {\n for (var n in navigables) {\n if (index < navigables[n]) {\n index = prevNavigable;\n break;\n }\n prevNavigable = navigables[n];\n }\n }\n\n return index;\n };\n\n Slick.prototype.cleanUpEvents = function() {\n\n var _ = this;\n\n if (_.options.dots && _.$dots !== null) {\n\n $('li', _.$dots)\n .off('click.slick', _.changeSlide)\n .off('mouseenter.slick', $.proxy(_.interrupt, _, true))\n .off('mouseleave.slick', $.proxy(_.interrupt, _, false));\n\n if (_.options.accessibility === true) {\n _.$dots.off('keydown.slick', _.keyHandler);\n }\n }\n\n _.$slider.off('focus.slick blur.slick');\n\n if (_.options.arrows === true && _.slideCount > _.options.slidesToShow) {\n _.$prevArrow && _.$prevArrow.off('click.slick', _.changeSlide);\n _.$nextArrow && _.$nextArrow.off('click.slick', _.changeSlide);\n\n if (_.options.accessibility === true) {\n _.$prevArrow && _.$prevArrow.off('keydown.slick', _.keyHandler);\n _.$nextArrow && _.$nextArrow.off('keydown.slick', _.keyHandler);\n }\n }\n\n _.$list.off('touchstart.slick mousedown.slick', _.swipeHandler);\n _.$list.off('touchmove.slick mousemove.slick', _.swipeHandler);\n _.$list.off('touchend.slick mouseup.slick', _.swipeHandler);\n _.$list.off('touchcancel.slick mouseleave.slick', _.swipeHandler);\n\n _.$list.off('click.slick', _.clickHandler);\n\n $(document).off(_.visibilityChange, _.visibility);\n\n _.cleanUpSlideEvents();\n\n if (_.options.accessibility === true) {\n _.$list.off('keydown.slick', _.keyHandler);\n }\n\n if (_.options.focusOnSelect === true) {\n $(_.$slideTrack).children().off('click.slick', _.selectHandler);\n }\n\n $(window).off('orientationchange.slick.slick-' + _.instanceUid, _.orientationChange);\n\n $(window).off('resize.slick.slick-' + _.instanceUid, _.resize);\n\n $('[draggable!=true]', _.$slideTrack).off('dragstart', _.preventDefault);\n\n $(window).off('load.slick.slick-' + _.instanceUid, _.setPosition);\n\n };\n\n Slick.prototype.cleanUpSlideEvents = function() {\n\n var _ = this;\n\n _.$list.off('mouseenter.slick', $.proxy(_.interrupt, _, true));\n _.$list.off('mouseleave.slick', $.proxy(_.interrupt, _, false));\n\n };\n\n Slick.prototype.cleanUpRows = function() {\n\n var _ = this, originalSlides;\n\n if(_.options.rows > 0) {\n originalSlides = _.$slides.children().children();\n originalSlides.removeAttr('style');\n _.$slider.empty().append(originalSlides);\n }\n\n };\n\n Slick.prototype.clickHandler = function(event) {\n\n var _ = this;\n\n if (_.shouldClick === false) {\n event.stopImmediatePropagation();\n event.stopPropagation();\n event.preventDefault();\n }\n\n };\n\n Slick.prototype.destroy = function(refresh) {\n\n var _ = this;\n\n _.autoPlayClear();\n\n _.touchObject = {};\n\n _.cleanUpEvents();\n\n $('.slick-cloned', _.$slider).detach();\n\n if (_.$dots) {\n _.$dots.remove();\n }\n\n if ( _.$prevArrow && _.$prevArrow.length ) {\n\n _.$prevArrow\n .removeClass('slick-disabled slick-arrow slick-hidden')\n .removeAttr('aria-hidden aria-disabled tabindex')\n .css('display','');\n\n if ( _.htmlExpr.test( _.options.prevArrow )) {\n _.$prevArrow.remove();\n }\n }\n\n if ( _.$nextArrow && _.$nextArrow.length ) {\n\n _.$nextArrow\n .removeClass('slick-disabled slick-arrow slick-hidden')\n .removeAttr('aria-hidden aria-disabled tabindex')\n .css('display','');\n\n if ( _.htmlExpr.test( _.options.nextArrow )) {\n _.$nextArrow.remove();\n }\n }\n\n\n if (_.$slides) {\n\n _.$slides\n .removeClass('slick-slide slick-active slick-center slick-visible slick-current')\n .removeAttr('aria-hidden')\n .removeAttr('data-slick-index')\n .each(function(){\n $(this).attr('style', $(this).data('originalStyling'));\n });\n\n _.$slideTrack.children(this.options.slide).detach();\n\n _.$slideTrack.detach();\n\n _.$list.detach();\n\n _.$slider.append(_.$slides);\n }\n\n _.cleanUpRows();\n\n _.$slider.removeClass('slick-slider');\n _.$slider.removeClass('slick-initialized');\n _.$slider.removeClass('slick-dotted');\n\n _.unslicked = true;\n\n if(!refresh) {\n _.$slider.trigger('destroy', [_]);\n }\n\n };\n\n Slick.prototype.disableTransition = function(slide) {\n\n var _ = this,\n transition = {};\n\n transition[_.transitionType] = '';\n\n if (_.options.fade === false) {\n _.$slideTrack.css(transition);\n } else {\n _.$slides.eq(slide).css(transition);\n }\n\n };\n\n Slick.prototype.fadeSlide = function(slideIndex, callback) {\n\n var _ = this;\n\n if (_.cssTransitions === false) {\n\n _.$slides.eq(slideIndex).css({\n zIndex: _.options.zIndex\n });\n\n _.$slides.eq(slideIndex).animate({\n opacity: 1\n }, _.options.speed, _.options.easing, callback);\n\n } else {\n\n _.applyTransition(slideIndex);\n\n _.$slides.eq(slideIndex).css({\n opacity: 1,\n zIndex: _.options.zIndex\n });\n\n if (callback) {\n setTimeout(function() {\n\n _.disableTransition(slideIndex);\n\n callback.call();\n }, _.options.speed);\n }\n\n }\n\n };\n\n Slick.prototype.fadeSlideOut = function(slideIndex) {\n\n var _ = this;\n\n if (_.cssTransitions === false) {\n\n _.$slides.eq(slideIndex).animate({\n opacity: 0,\n zIndex: _.options.zIndex - 2\n }, _.options.speed, _.options.easing);\n\n } else {\n\n _.applyTransition(slideIndex);\n\n _.$slides.eq(slideIndex).css({\n opacity: 0,\n zIndex: _.options.zIndex - 2\n });\n\n }\n\n };\n\n Slick.prototype.filterSlides = Slick.prototype.slickFilter = function(filter) {\n\n var _ = this;\n\n if (filter !== null) {\n\n _.$slidesCache = _.$slides;\n\n _.unload();\n\n _.$slideTrack.children(this.options.slide).detach();\n\n _.$slidesCache.filter(filter).appendTo(_.$slideTrack);\n\n _.reinit();\n\n }\n\n };\n\n Slick.prototype.focusHandler = function() {\n\n var _ = this;\n\n _.$slider\n .off('focus.slick blur.slick')\n .on('focus.slick blur.slick', '*', function(event) {\n\n event.stopImmediatePropagation();\n var $sf = $(this);\n\n setTimeout(function() {\n\n if( _.options.pauseOnFocus ) {\n _.focussed = $sf.is(':focus');\n _.autoPlay();\n }\n\n }, 0);\n\n });\n };\n\n Slick.prototype.getCurrent = Slick.prototype.slickCurrentSlide = function() {\n\n var _ = this;\n return _.currentSlide;\n\n };\n\n Slick.prototype.getDotCount = function() {\n\n var _ = this;\n\n var breakPoint = 0;\n var counter = 0;\n var pagerQty = 0;\n\n if (_.options.infinite === true) {\n if (_.slideCount <= _.options.slidesToShow) {\n ++pagerQty;\n } else {\n while (breakPoint < _.slideCount) {\n ++pagerQty;\n breakPoint = counter + _.options.slidesToScroll;\n counter += _.options.slidesToScroll <= _.options.slidesToShow ? _.options.slidesToScroll : _.options.slidesToShow;\n }\n }\n } else if (_.options.centerMode === true) {\n pagerQty = _.slideCount;\n } else if(!_.options.asNavFor) {\n pagerQty = 1 + Math.ceil((_.slideCount - _.options.slidesToShow) / _.options.slidesToScroll);\n }else {\n while (breakPoint < _.slideCount) {\n ++pagerQty;\n breakPoint = counter + _.options.slidesToScroll;\n counter += _.options.slidesToScroll <= _.options.slidesToShow ? _.options.slidesToScroll : _.options.slidesToShow;\n }\n }\n\n return pagerQty - 1;\n\n };\n\n Slick.prototype.getLeft = function(slideIndex) {\n\n var _ = this,\n targetLeft,\n verticalHeight,\n verticalOffset = 0,\n targetSlide,\n coef;\n\n _.slideOffset = 0;\n verticalHeight = _.$slides.first().outerHeight(true);\n\n if (_.options.infinite === true) {\n if (_.slideCount > _.options.slidesToShow) {\n _.slideOffset = (_.slideWidth * _.options.slidesToShow) * -1;\n coef = -1\n\n if (_.options.vertical === true && _.options.centerMode === true) {\n if (_.options.slidesToShow === 2) {\n coef = -1.5;\n } else if (_.options.slidesToShow === 1) {\n coef = -2\n }\n }\n verticalOffset = (verticalHeight * _.options.slidesToShow) * coef;\n }\n if (_.slideCount % _.options.slidesToScroll !== 0) {\n if (slideIndex + _.options.slidesToScroll > _.slideCount && _.slideCount > _.options.slidesToShow) {\n if (slideIndex > _.slideCount) {\n _.slideOffset = ((_.options.slidesToShow - (slideIndex - _.slideCount)) * _.slideWidth) * -1;\n verticalOffset = ((_.options.slidesToShow - (slideIndex - _.slideCount)) * verticalHeight) * -1;\n } else {\n _.slideOffset = ((_.slideCount % _.options.slidesToScroll) * _.slideWidth) * -1;\n verticalOffset = ((_.slideCount % _.options.slidesToScroll) * verticalHeight) * -1;\n }\n }\n }\n } else {\n if (slideIndex + _.options.slidesToShow > _.slideCount) {\n _.slideOffset = ((slideIndex + _.options.slidesToShow) - _.slideCount) * _.slideWidth;\n verticalOffset = ((slideIndex + _.options.slidesToShow) - _.slideCount) * verticalHeight;\n }\n }\n\n if (_.slideCount <= _.options.slidesToShow) {\n _.slideOffset = 0;\n verticalOffset = 0;\n }\n\n if (_.options.centerMode === true && _.slideCount <= _.options.slidesToShow) {\n _.slideOffset = ((_.slideWidth * Math.floor(_.options.slidesToShow)) / 2) - ((_.slideWidth * _.slideCount) / 2);\n } else if (_.options.centerMode === true && _.options.infinite === true) {\n _.slideOffset += _.slideWidth * Math.floor(_.options.slidesToShow / 2) - _.slideWidth;\n } else if (_.options.centerMode === true) {\n _.slideOffset = 0;\n _.slideOffset += _.slideWidth * Math.floor(_.options.slidesToShow / 2);\n }\n\n if (_.options.vertical === false) {\n targetLeft = ((slideIndex * _.slideWidth) * -1) + _.slideOffset;\n } else {\n targetLeft = ((slideIndex * verticalHeight) * -1) + verticalOffset;\n }\n\n if (_.options.variableWidth === true) {\n\n if (_.slideCount <= _.options.slidesToShow || _.options.infinite === false) {\n targetSlide = _.$slideTrack.children('.slick-slide').eq(slideIndex);\n } else {\n targetSlide = _.$slideTrack.children('.slick-slide').eq(slideIndex + _.options.slidesToShow);\n }\n\n if (_.options.rtl === true) {\n if (targetSlide[0]) {\n targetLeft = (_.$slideTrack.width() - targetSlide[0].offsetLeft - targetSlide.width()) * -1;\n } else {\n targetLeft = 0;\n }\n } else {\n targetLeft = targetSlide[0] ? targetSlide[0].offsetLeft * -1 : 0;\n }\n\n if (_.options.centerMode === true) {\n if (_.slideCount <= _.options.slidesToShow || _.options.infinite === false) {\n targetSlide = _.$slideTrack.children('.slick-slide').eq(slideIndex);\n } else {\n targetSlide = _.$slideTrack.children('.slick-slide').eq(slideIndex + _.options.slidesToShow + 1);\n }\n\n if (_.options.rtl === true) {\n if (targetSlide[0]) {\n targetLeft = (_.$slideTrack.width() - targetSlide[0].offsetLeft - targetSlide.width()) * -1;\n } else {\n targetLeft = 0;\n }\n } else {\n targetLeft = targetSlide[0] ? targetSlide[0].offsetLeft * -1 : 0;\n }\n\n targetLeft += (_.$list.width() - targetSlide.outerWidth()) / 2;\n }\n }\n\n return targetLeft;\n\n };\n\n Slick.prototype.getOption = Slick.prototype.slickGetOption = function(option) {\n\n var _ = this;\n\n return _.options[option];\n\n };\n\n Slick.prototype.getNavigableIndexes = function() {\n\n var _ = this,\n breakPoint = 0,\n counter = 0,\n indexes = [],\n max;\n\n if (_.options.infinite === false) {\n max = _.slideCount;\n } else {\n breakPoint = _.options.slidesToScroll * -1;\n counter = _.options.slidesToScroll * -1;\n max = _.slideCount * 2;\n }\n\n while (breakPoint < max) {\n indexes.push(breakPoint);\n breakPoint = counter + _.options.slidesToScroll;\n counter += _.options.slidesToScroll <= _.options.slidesToShow ? _.options.slidesToScroll : _.options.slidesToShow;\n }\n\n return indexes;\n\n };\n\n Slick.prototype.getSlick = function() {\n\n return this;\n\n };\n\n Slick.prototype.getSlideCount = function() {\n\n var _ = this,\n slidesTraversed, swipedSlide, centerOffset;\n\n centerOffset = _.options.centerMode === true ? _.slideWidth * Math.floor(_.options.slidesToShow / 2) : 0;\n\n if (_.options.swipeToSlide === true) {\n _.$slideTrack.find('.slick-slide').each(function(index, slide) {\n if (slide.offsetLeft - centerOffset + ($(slide).outerWidth() / 2) > (_.swipeLeft * -1)) {\n swipedSlide = slide;\n return false;\n }\n });\n\n slidesTraversed = Math.abs($(swipedSlide).attr('data-slick-index') - _.currentSlide) || 1;\n\n return slidesTraversed;\n\n } else {\n return _.options.slidesToScroll;\n }\n\n };\n\n Slick.prototype.goTo = Slick.prototype.slickGoTo = function(slide, dontAnimate) {\n\n var _ = this;\n\n _.changeSlide({\n data: {\n message: 'index',\n index: parseInt(slide)\n }\n }, dontAnimate);\n\n };\n\n Slick.prototype.init = function(creation) {\n\n var _ = this;\n\n if (!$(_.$slider).hasClass('slick-initialized')) {\n\n $(_.$slider).addClass('slick-initialized');\n\n _.buildRows();\n _.buildOut();\n _.setProps();\n _.startLoad();\n _.loadSlider();\n _.initializeEvents();\n _.updateArrows();\n _.updateDots();\n _.checkResponsive(true);\n _.focusHandler();\n\n }\n\n if (creation) {\n _.$slider.trigger('init', [_]);\n }\n\n if (_.options.accessibility === true) {\n _.initADA();\n }\n\n if ( _.options.autoplay ) {\n\n _.paused = false;\n _.autoPlay();\n\n }\n\n };\n\n Slick.prototype.initADA = function() {\n var _ = this,\n numDotGroups = Math.ceil(_.slideCount / _.options.slidesToShow),\n tabControlIndexes = _.getNavigableIndexes().filter(function(val) {\n return (val >= 0) && (val < _.slideCount);\n });\n\n _.$slides.add(_.$slideTrack.find('.slick-cloned')).attr({\n 'aria-hidden': 'true',\n 'tabindex': '-1'\n }).find('a, input, button, select').attr({\n 'tabindex': '-1'\n });\n\n if (_.$dots !== null) {\n _.$slides.not(_.$slideTrack.find('.slick-cloned')).each(function(i) {\n var slideControlIndex = tabControlIndexes.indexOf(i);\n\n $(this).attr({\n 'role': 'tabpanel',\n 'id': 'slick-slide' + _.instanceUid + i,\n 'tabindex': -1\n });\n\n if (slideControlIndex !== -1) {\n var ariaButtonControl = 'slick-slide-control' + _.instanceUid + slideControlIndex\n if ($('#' + ariaButtonControl).length) {\n $(this).attr({\n 'aria-describedby': ariaButtonControl\n });\n }\n }\n });\n\n _.$dots.attr('role', 'tablist').find('li').each(function(i) {\n var mappedSlideIndex = tabControlIndexes[i];\n\n $(this).attr({\n 'role': 'presentation'\n });\n\n $(this).find('button').first().attr({\n 'role': 'tab',\n 'id': 'slick-slide-control' + _.instanceUid + i,\n 'aria-controls': 'slick-slide' + _.instanceUid + mappedSlideIndex,\n 'aria-label': (i + 1) + ' of ' + numDotGroups,\n 'aria-selected': null,\n 'tabindex': '-1'\n });\n\n }).eq(_.currentSlide).find('button').attr({\n 'aria-selected': 'true',\n 'tabindex': '0'\n }).end();\n }\n\n for (var i=_.currentSlide, max=i+_.options.slidesToShow; i < max; i++) {\n if (_.options.focusOnChange) {\n _.$slides.eq(i).attr({'tabindex': '0'});\n } else {\n _.$slides.eq(i).removeAttr('tabindex');\n }\n }\n\n _.activateADA();\n\n };\n\n Slick.prototype.initArrowEvents = function() {\n\n var _ = this;\n\n if (_.options.arrows === true && _.slideCount > _.options.slidesToShow) {\n _.$prevArrow\n .off('click.slick')\n .on('click.slick', {\n message: 'previous'\n }, _.changeSlide);\n _.$nextArrow\n .off('click.slick')\n .on('click.slick', {\n message: 'next'\n }, _.changeSlide);\n\n if (_.options.accessibility === true) {\n _.$prevArrow.on('keydown.slick', _.keyHandler);\n _.$nextArrow.on('keydown.slick', _.keyHandler);\n }\n }\n\n };\n\n Slick.prototype.initDotEvents = function() {\n\n var _ = this;\n\n if (_.options.dots === true && _.slideCount > _.options.slidesToShow) {\n $('li', _.$dots).on('click.slick', {\n message: 'index'\n }, _.changeSlide);\n\n if (_.options.accessibility === true) {\n _.$dots.on('keydown.slick', _.keyHandler);\n }\n }\n\n if (_.options.dots === true && _.options.pauseOnDotsHover === true && _.slideCount > _.options.slidesToShow) {\n\n $('li', _.$dots)\n .on('mouseenter.slick', $.proxy(_.interrupt, _, true))\n .on('mouseleave.slick', $.proxy(_.interrupt, _, false));\n\n }\n\n };\n\n Slick.prototype.initSlideEvents = function() {\n\n var _ = this;\n\n if ( _.options.pauseOnHover ) {\n\n _.$list.on('mouseenter.slick', $.proxy(_.interrupt, _, true));\n _.$list.on('mouseleave.slick', $.proxy(_.interrupt, _, false));\n\n }\n\n };\n\n Slick.prototype.initializeEvents = function() {\n\n var _ = this;\n\n _.initArrowEvents();\n\n _.initDotEvents();\n _.initSlideEvents();\n\n _.$list.on('touchstart.slick mousedown.slick', {\n action: 'start'\n }, _.swipeHandler);\n _.$list.on('touchmove.slick mousemove.slick', {\n action: 'move'\n }, _.swipeHandler);\n _.$list.on('touchend.slick mouseup.slick', {\n action: 'end'\n }, _.swipeHandler);\n _.$list.on('touchcancel.slick mouseleave.slick', {\n action: 'end'\n }, _.swipeHandler);\n\n _.$list.on('click.slick', _.clickHandler);\n\n $(document).on(_.visibilityChange, $.proxy(_.visibility, _));\n\n if (_.options.accessibility === true) {\n _.$list.on('keydown.slick', _.keyHandler);\n }\n\n if (_.options.focusOnSelect === true) {\n $(_.$slideTrack).children().on('click.slick', _.selectHandler);\n }\n\n $(window).on('orientationchange.slick.slick-' + _.instanceUid, $.proxy(_.orientationChange, _));\n\n $(window).on('resize.slick.slick-' + _.instanceUid, $.proxy(_.resize, _));\n\n $('[draggable!=true]', _.$slideTrack).on('dragstart', _.preventDefault);\n\n $(window).on('load.slick.slick-' + _.instanceUid, _.setPosition);\n $(_.setPosition);\n\n };\n\n Slick.prototype.initUI = function() {\n\n var _ = this;\n\n if (_.options.arrows === true && _.slideCount > _.options.slidesToShow) {\n\n _.$prevArrow.show();\n _.$nextArrow.show();\n\n }\n\n if (_.options.dots === true && _.slideCount > _.options.slidesToShow) {\n\n _.$dots.show();\n\n }\n\n };\n\n Slick.prototype.keyHandler = function(event) {\n\n var _ = this;\n //Dont slide if the cursor is inside the form fields and arrow keys are pressed\n if(!event.target.tagName.match('TEXTAREA|INPUT|SELECT')) {\n if (event.keyCode === 37 && _.options.accessibility === true) {\n _.changeSlide({\n data: {\n message: _.options.rtl === true ? 'next' : 'previous'\n }\n });\n } else if (event.keyCode === 39 && _.options.accessibility === true) {\n _.changeSlide({\n data: {\n message: _.options.rtl === true ? 'previous' : 'next'\n }\n });\n }\n }\n\n };\n\n Slick.prototype.lazyLoad = function() {\n\n var _ = this,\n loadRange, cloneRange, rangeStart, rangeEnd;\n\n function loadImages(imagesScope) {\n\n $('img[data-lazy]', imagesScope).each(function() {\n\n var image = $(this),\n imageSource = $(this).attr('data-lazy'),\n imageSrcSet = $(this).attr('data-srcset'),\n imageSizes = $(this).attr('data-sizes') || _.$slider.attr('data-sizes'),\n imageToLoad = document.createElement('img');\n\n imageToLoad.onload = function() {\n\n image\n .animate({ opacity: 0 }, 100, function() {\n\n if (imageSrcSet) {\n image\n .attr('srcset', imageSrcSet );\n\n if (imageSizes) {\n image\n .attr('sizes', imageSizes );\n }\n }\n\n image\n .attr('src', imageSource)\n .animate({ opacity: 1 }, 200, function() {\n image\n .removeAttr('data-lazy data-srcset data-sizes')\n .removeClass('slick-loading');\n });\n _.$slider.trigger('lazyLoaded', [_, image, imageSource]);\n });\n\n };\n\n imageToLoad.onerror = function() {\n\n image\n .removeAttr( 'data-lazy' )\n .removeClass( 'slick-loading' )\n .addClass( 'slick-lazyload-error' );\n\n _.$slider.trigger('lazyLoadError', [ _, image, imageSource ]);\n\n };\n\n imageToLoad.src = imageSource;\n\n });\n\n }\n\n if (_.options.centerMode === true) {\n if (_.options.infinite === true) {\n rangeStart = _.currentSlide + (_.options.slidesToShow / 2 + 1);\n rangeEnd = rangeStart + _.options.slidesToShow + 2;\n } else {\n rangeStart = Math.max(0, _.currentSlide - (_.options.slidesToShow / 2 + 1));\n rangeEnd = 2 + (_.options.slidesToShow / 2 + 1) + _.currentSlide;\n }\n } else {\n rangeStart = _.options.infinite ? _.options.slidesToShow + _.currentSlide : _.currentSlide;\n rangeEnd = Math.ceil(rangeStart + _.options.slidesToShow);\n if (_.options.fade === true) {\n if (rangeStart > 0) rangeStart--;\n if (rangeEnd <= _.slideCount) rangeEnd++;\n }\n }\n\n loadRange = _.$slider.find('.slick-slide').slice(rangeStart, rangeEnd);\n\n if (_.options.lazyLoad === 'anticipated') {\n var prevSlide = rangeStart - 1,\n nextSlide = rangeEnd,\n $slides = _.$slider.find('.slick-slide');\n\n for (var i = 0; i < _.options.slidesToScroll; i++) {\n if (prevSlide < 0) prevSlide = _.slideCount - 1;\n loadRange = loadRange.add($slides.eq(prevSlide));\n loadRange = loadRange.add($slides.eq(nextSlide));\n prevSlide--;\n nextSlide++;\n }\n }\n\n loadImages(loadRange);\n\n if (_.slideCount <= _.options.slidesToShow) {\n cloneRange = _.$slider.find('.slick-slide');\n loadImages(cloneRange);\n } else\n if (_.currentSlide >= _.slideCount - _.options.slidesToShow) {\n cloneRange = _.$slider.find('.slick-cloned').slice(0, _.options.slidesToShow);\n loadImages(cloneRange);\n } else if (_.currentSlide === 0) {\n cloneRange = _.$slider.find('.slick-cloned').slice(_.options.slidesToShow * -1);\n loadImages(cloneRange);\n }\n\n };\n\n Slick.prototype.loadSlider = function() {\n\n var _ = this;\n\n _.setPosition();\n\n _.$slideTrack.css({\n opacity: 1\n });\n\n _.$slider.removeClass('slick-loading');\n\n _.initUI();\n\n if (_.options.lazyLoad === 'progressive') {\n _.progressiveLazyLoad();\n }\n\n };\n\n Slick.prototype.next = Slick.prototype.slickNext = function() {\n\n var _ = this;\n\n _.changeSlide({\n data: {\n message: 'next'\n }\n });\n\n };\n\n Slick.prototype.orientationChange = function() {\n\n var _ = this;\n\n _.checkResponsive();\n _.setPosition();\n\n };\n\n Slick.prototype.pause = Slick.prototype.slickPause = function() {\n\n var _ = this;\n\n _.autoPlayClear();\n _.paused = true;\n\n };\n\n Slick.prototype.play = Slick.prototype.slickPlay = function() {\n\n var _ = this;\n\n _.autoPlay();\n _.options.autoplay = true;\n _.paused = false;\n _.focussed = false;\n _.interrupted = false;\n\n };\n\n Slick.prototype.postSlide = function(index) {\n\n var _ = this;\n\n if( !_.unslicked ) {\n\n _.$slider.trigger('afterChange', [_, index]);\n\n _.animating = false;\n\n if (_.slideCount > _.options.slidesToShow) {\n _.setPosition();\n }\n\n _.swipeLeft = null;\n\n if ( _.options.autoplay ) {\n _.autoPlay();\n }\n\n if (_.options.accessibility === true) {\n _.initADA();\n\n if (_.options.focusOnChange) {\n var $currentSlide = $(_.$slides.get(_.currentSlide));\n $currentSlide.attr('tabindex', 0).focus();\n }\n }\n\n }\n\n };\n\n Slick.prototype.prev = Slick.prototype.slickPrev = function() {\n\n var _ = this;\n\n _.changeSlide({\n data: {\n message: 'previous'\n }\n });\n\n };\n\n Slick.prototype.preventDefault = function(event) {\n\n event.preventDefault();\n\n };\n\n Slick.prototype.progressiveLazyLoad = function( tryCount ) {\n\n tryCount = tryCount || 1;\n\n var _ = this,\n $imgsToLoad = $( 'img[data-lazy]', _.$slider ),\n image,\n imageSource,\n imageSrcSet,\n imageSizes,\n imageToLoad;\n\n if ( $imgsToLoad.length ) {\n\n image = $imgsToLoad.first();\n imageSource = image.attr('data-lazy');\n imageSrcSet = image.attr('data-srcset');\n imageSizes = image.attr('data-sizes') || _.$slider.attr('data-sizes');\n imageToLoad = document.createElement('img');\n\n imageToLoad.onload = function() {\n\n if (imageSrcSet) {\n image\n .attr('srcset', imageSrcSet );\n\n if (imageSizes) {\n image\n .attr('sizes', imageSizes );\n }\n }\n\n image\n .attr( 'src', imageSource )\n .removeAttr('data-lazy data-srcset data-sizes')\n .removeClass('slick-loading');\n\n if ( _.options.adaptiveHeight === true ) {\n _.setPosition();\n }\n\n _.$slider.trigger('lazyLoaded', [ _, image, imageSource ]);\n _.progressiveLazyLoad();\n\n };\n\n imageToLoad.onerror = function() {\n\n if ( tryCount < 3 ) {\n\n /**\n * try to load the image 3 times,\n * leave a slight delay so we don't get\n * servers blocking the request.\n */\n setTimeout( function() {\n _.progressiveLazyLoad( tryCount + 1 );\n }, 500 );\n\n } else {\n\n image\n .removeAttr( 'data-lazy' )\n .removeClass( 'slick-loading' )\n .addClass( 'slick-lazyload-error' );\n\n _.$slider.trigger('lazyLoadError', [ _, image, imageSource ]);\n\n _.progressiveLazyLoad();\n\n }\n\n };\n\n imageToLoad.src = imageSource;\n\n } else {\n\n _.$slider.trigger('allImagesLoaded', [ _ ]);\n\n }\n\n };\n\n Slick.prototype.refresh = function( initializing ) {\n\n var _ = this, currentSlide, lastVisibleIndex;\n\n lastVisibleIndex = _.slideCount - _.options.slidesToShow;\n\n // in non-infinite sliders, we don't want to go past the\n // last visible index.\n if( !_.options.infinite && ( _.currentSlide > lastVisibleIndex )) {\n _.currentSlide = lastVisibleIndex;\n }\n\n // if less slides than to show, go to start.\n if ( _.slideCount <= _.options.slidesToShow ) {\n _.currentSlide = 0;\n\n }\n\n currentSlide = _.currentSlide;\n\n _.destroy(true);\n\n $.extend(_, _.initials, { currentSlide: currentSlide });\n\n _.init();\n\n if( !initializing ) {\n\n _.changeSlide({\n data: {\n message: 'index',\n index: currentSlide\n }\n }, false);\n\n }\n\n };\n\n Slick.prototype.registerBreakpoints = function() {\n\n var _ = this, breakpoint, currentBreakpoint, l,\n responsiveSettings = _.options.responsive || null;\n\n if ( $.type(responsiveSettings) === 'array' && responsiveSettings.length ) {\n\n _.respondTo = _.options.respondTo || 'window';\n\n for ( breakpoint in responsiveSettings ) {\n\n l = _.breakpoints.length-1;\n\n if (responsiveSettings.hasOwnProperty(breakpoint)) {\n currentBreakpoint = responsiveSettings[breakpoint].breakpoint;\n\n // loop through the breakpoints and cut out any existing\n // ones with the same breakpoint number, we don't want dupes.\n while( l >= 0 ) {\n if( _.breakpoints[l] && _.breakpoints[l] === currentBreakpoint ) {\n _.breakpoints.splice(l,1);\n }\n l--;\n }\n\n _.breakpoints.push(currentBreakpoint);\n _.breakpointSettings[currentBreakpoint] = responsiveSettings[breakpoint].settings;\n\n }\n\n }\n\n _.breakpoints.sort(function(a, b) {\n return ( _.options.mobileFirst ) ? a-b : b-a;\n });\n\n }\n\n };\n\n Slick.prototype.reinit = function() {\n\n var _ = this;\n\n _.$slides =\n _.$slideTrack\n .children(_.options.slide)\n .addClass('slick-slide');\n\n _.slideCount = _.$slides.length;\n\n if (_.currentSlide >= _.slideCount && _.currentSlide !== 0) {\n _.currentSlide = _.currentSlide - _.options.slidesToScroll;\n }\n\n if (_.slideCount <= _.options.slidesToShow) {\n _.currentSlide = 0;\n }\n\n _.registerBreakpoints();\n\n _.setProps();\n _.setupInfinite();\n _.buildArrows();\n _.updateArrows();\n _.initArrowEvents();\n _.buildDots();\n _.updateDots();\n _.initDotEvents();\n _.cleanUpSlideEvents();\n _.initSlideEvents();\n\n _.checkResponsive(false, true);\n\n if (_.options.focusOnSelect === true) {\n $(_.$slideTrack).children().on('click.slick', _.selectHandler);\n }\n\n _.setSlideClasses(typeof _.currentSlide === 'number' ? _.currentSlide : 0);\n\n _.setPosition();\n _.focusHandler();\n\n _.paused = !_.options.autoplay;\n _.autoPlay();\n\n _.$slider.trigger('reInit', [_]);\n\n };\n\n Slick.prototype.resize = function() {\n\n var _ = this;\n\n if ($(window).width() !== _.windowWidth) {\n clearTimeout(_.windowDelay);\n _.windowDelay = window.setTimeout(function() {\n _.windowWidth = $(window).width();\n _.checkResponsive();\n if( !_.unslicked ) { _.setPosition(); }\n }, 50);\n }\n };\n\n Slick.prototype.removeSlide = Slick.prototype.slickRemove = function(index, removeBefore, removeAll) {\n\n var _ = this;\n\n if (typeof(index) === 'boolean') {\n removeBefore = index;\n index = removeBefore === true ? 0 : _.slideCount - 1;\n } else {\n index = removeBefore === true ? --index : index;\n }\n\n if (_.slideCount < 1 || index < 0 || index > _.slideCount - 1) {\n return false;\n }\n\n _.unload();\n\n if (removeAll === true) {\n _.$slideTrack.children().remove();\n } else {\n _.$slideTrack.children(this.options.slide).eq(index).remove();\n }\n\n _.$slides = _.$slideTrack.children(this.options.slide);\n\n _.$slideTrack.children(this.options.slide).detach();\n\n _.$slideTrack.append(_.$slides);\n\n _.$slidesCache = _.$slides;\n\n _.reinit();\n\n };\n\n Slick.prototype.setCSS = function(position) {\n\n var _ = this,\n positionProps = {},\n x, y;\n\n if (_.options.rtl === true) {\n position = -position;\n }\n x = _.positionProp == 'left' ? Math.ceil(position) + 'px' : '0px';\n y = _.positionProp == 'top' ? Math.ceil(position) + 'px' : '0px';\n\n positionProps[_.positionProp] = position;\n\n if (_.transformsEnabled === false) {\n _.$slideTrack.css(positionProps);\n } else {\n positionProps = {};\n if (_.cssTransitions === false) {\n positionProps[_.animType] = 'translate(' + x + ', ' + y + ')';\n _.$slideTrack.css(positionProps);\n } else {\n positionProps[_.animType] = 'translate3d(' + x + ', ' + y + ', 0px)';\n _.$slideTrack.css(positionProps);\n }\n }\n\n };\n\n Slick.prototype.setDimensions = function() {\n\n var _ = this;\n\n if (_.options.vertical === false) {\n if (_.options.centerMode === true) {\n _.$list.css({\n padding: ('0px ' + _.options.centerPadding)\n });\n }\n } else {\n _.$list.height(_.$slides.first().outerHeight(true) * _.options.slidesToShow);\n if (_.options.centerMode === true) {\n _.$list.css({\n padding: (_.options.centerPadding + ' 0px')\n });\n }\n }\n\n _.listWidth = _.$list.width();\n _.listHeight = _.$list.height();\n\n\n if (_.options.vertical === false && _.options.variableWidth === false) {\n _.slideWidth = Math.ceil(_.listWidth / _.options.slidesToShow);\n _.$slideTrack.width(Math.ceil((_.slideWidth * _.$slideTrack.children('.slick-slide').length)));\n\n } else if (_.options.variableWidth === true) {\n _.$slideTrack.width(5000 * _.slideCount);\n } else {\n _.slideWidth = Math.ceil(_.listWidth);\n _.$slideTrack.height(Math.ceil((_.$slides.first().outerHeight(true) * _.$slideTrack.children('.slick-slide').length)));\n }\n\n var offset = _.$slides.first().outerWidth(true) - _.$slides.first().width();\n if (_.options.variableWidth === false) _.$slideTrack.children('.slick-slide').width(_.slideWidth - offset);\n\n };\n\n Slick.prototype.setFade = function() {\n\n var _ = this,\n targetLeft;\n\n _.$slides.each(function(index, element) {\n targetLeft = (_.slideWidth * index) * -1;\n if (_.options.rtl === true) {\n $(element).css({\n position: 'relative',\n right: targetLeft,\n top: 0,\n zIndex: _.options.zIndex - 2,\n opacity: 0\n });\n } else {\n $(element).css({\n position: 'relative',\n left: targetLeft,\n top: 0,\n zIndex: _.options.zIndex - 2,\n opacity: 0\n });\n }\n });\n\n _.$slides.eq(_.currentSlide).css({\n zIndex: _.options.zIndex - 1,\n opacity: 1\n });\n\n };\n\n Slick.prototype.setHeight = function() {\n\n var _ = this;\n\n if (_.options.slidesToShow === 1 && _.options.adaptiveHeight === true && _.options.vertical === false) {\n var targetHeight = _.$slides.eq(_.currentSlide).outerHeight(true);\n _.$list.css('height', targetHeight);\n }\n\n };\n\n Slick.prototype.setOption =\n Slick.prototype.slickSetOption = function() {\n\n /**\n * accepts arguments in format of:\n *\n * - for changing a single option's value:\n * .slick(\"setOption\", option, value, refresh )\n *\n * - for changing a set of responsive options:\n * .slick(\"setOption\", 'responsive', [{}, ...], refresh )\n *\n * - for updating multiple values at once (not responsive)\n * .slick(\"setOption\", { 'option': value, ... }, refresh )\n */\n\n var _ = this, l, item, option, value, refresh = false, type;\n\n if( $.type( arguments[0] ) === 'object' ) {\n\n option = arguments[0];\n refresh = arguments[1];\n type = 'multiple';\n\n } else if ( $.type( arguments[0] ) === 'string' ) {\n\n option = arguments[0];\n value = arguments[1];\n refresh = arguments[2];\n\n if ( arguments[0] === 'responsive' && $.type( arguments[1] ) === 'array' ) {\n\n type = 'responsive';\n\n } else if ( typeof arguments[1] !== 'undefined' ) {\n\n type = 'single';\n\n }\n\n }\n\n if ( type === 'single' ) {\n\n _.options[option] = value;\n\n\n } else if ( type === 'multiple' ) {\n\n $.each( option , function( opt, val ) {\n\n _.options[opt] = val;\n\n });\n\n\n } else if ( type === 'responsive' ) {\n\n for ( item in value ) {\n\n if( $.type( _.options.responsive ) !== 'array' ) {\n\n _.options.responsive = [ value[item] ];\n\n } else {\n\n l = _.options.responsive.length-1;\n\n // loop through the responsive object and splice out duplicates.\n while( l >= 0 ) {\n\n if( _.options.responsive[l].breakpoint === value[item].breakpoint ) {\n\n _.options.responsive.splice(l,1);\n\n }\n\n l--;\n\n }\n\n _.options.responsive.push( value[item] );\n\n }\n\n }\n\n }\n\n if ( refresh ) {\n\n _.unload();\n _.reinit();\n\n }\n\n };\n\n Slick.prototype.setPosition = function() {\n\n var _ = this;\n\n _.setDimensions();\n\n _.setHeight();\n\n if (_.options.fade === false) {\n _.setCSS(_.getLeft(_.currentSlide));\n } else {\n _.setFade();\n }\n\n _.$slider.trigger('setPosition', [_]);\n\n };\n\n Slick.prototype.setProps = function() {\n\n var _ = this,\n bodyStyle = document.body.style;\n\n _.positionProp = _.options.vertical === true ? 'top' : 'left';\n\n if (_.positionProp === 'top') {\n _.$slider.addClass('slick-vertical');\n } else {\n _.$slider.removeClass('slick-vertical');\n }\n\n if (bodyStyle.WebkitTransition !== undefined ||\n bodyStyle.MozTransition !== undefined ||\n bodyStyle.msTransition !== undefined) {\n if (_.options.useCSS === true) {\n _.cssTransitions = true;\n }\n }\n\n if ( _.options.fade ) {\n if ( typeof _.options.zIndex === 'number' ) {\n if( _.options.zIndex < 3 ) {\n _.options.zIndex = 3;\n }\n } else {\n _.options.zIndex = _.defaults.zIndex;\n }\n }\n\n if (bodyStyle.OTransform !== undefined) {\n _.animType = 'OTransform';\n _.transformType = '-o-transform';\n _.transitionType = 'OTransition';\n if (bodyStyle.perspectiveProperty === undefined && bodyStyle.webkitPerspective === undefined) _.animType = false;\n }\n if (bodyStyle.MozTransform !== undefined) {\n _.animType = 'MozTransform';\n _.transformType = '-moz-transform';\n _.transitionType = 'MozTransition';\n if (bodyStyle.perspectiveProperty === undefined && bodyStyle.MozPerspective === undefined) _.animType = false;\n }\n if (bodyStyle.webkitTransform !== undefined) {\n _.animType = 'webkitTransform';\n _.transformType = '-webkit-transform';\n _.transitionType = 'webkitTransition';\n if (bodyStyle.perspectiveProperty === undefined && bodyStyle.webkitPerspective === undefined) _.animType = false;\n }\n if (bodyStyle.msTransform !== undefined) {\n _.animType = 'msTransform';\n _.transformType = '-ms-transform';\n _.transitionType = 'msTransition';\n if (bodyStyle.msTransform === undefined) _.animType = false;\n }\n if (bodyStyle.transform !== undefined && _.animType !== false) {\n _.animType = 'transform';\n _.transformType = 'transform';\n _.transitionType = 'transition';\n }\n _.transformsEnabled = _.options.useTransform && (_.animType !== null && _.animType !== false);\n };\n\n\n Slick.prototype.setSlideClasses = function(index) {\n\n var _ = this,\n centerOffset, allSlides, indexOffset, remainder;\n\n allSlides = _.$slider\n .find('.slick-slide')\n .removeClass('slick-active slick-center slick-current')\n .attr('aria-hidden', 'true');\n\n _.$slides\n .eq(index)\n .addClass('slick-current');\n\n if (_.options.centerMode === true) {\n\n var evenCoef = _.options.slidesToShow % 2 === 0 ? 1 : 0;\n\n centerOffset = Math.floor(_.options.slidesToShow / 2);\n\n if (_.options.infinite === true) {\n\n if (index >= centerOffset && index <= (_.slideCount - 1) - centerOffset) {\n _.$slides\n .slice(index - centerOffset + evenCoef, index + centerOffset + 1)\n .addClass('slick-active')\n .attr('aria-hidden', 'false');\n\n } else {\n\n indexOffset = _.options.slidesToShow + index;\n allSlides\n .slice(indexOffset - centerOffset + 1 + evenCoef, indexOffset + centerOffset + 2)\n .addClass('slick-active')\n .attr('aria-hidden', 'false');\n\n }\n\n if (index === 0) {\n\n allSlides\n .eq(allSlides.length - 1 - _.options.slidesToShow)\n .addClass('slick-center');\n\n } else if (index === _.slideCount - 1) {\n\n allSlides\n .eq(_.options.slidesToShow)\n .addClass('slick-center');\n\n }\n\n }\n\n _.$slides\n .eq(index)\n .addClass('slick-center');\n\n } else {\n\n if (index >= 0 && index <= (_.slideCount - _.options.slidesToShow)) {\n\n _.$slides\n .slice(index, index + _.options.slidesToShow)\n .addClass('slick-active')\n .attr('aria-hidden', 'false');\n\n } else if (allSlides.length <= _.options.slidesToShow) {\n\n allSlides\n .addClass('slick-active')\n .attr('aria-hidden', 'false');\n\n } else {\n\n remainder = _.slideCount % _.options.slidesToShow;\n indexOffset = _.options.infinite === true ? _.options.slidesToShow + index : index;\n\n if (_.options.slidesToShow == _.options.slidesToScroll && (_.slideCount - index) < _.options.slidesToShow) {\n\n allSlides\n .slice(indexOffset - (_.options.slidesToShow - remainder), indexOffset + remainder)\n .addClass('slick-active')\n .attr('aria-hidden', 'false');\n\n } else {\n\n allSlides\n .slice(indexOffset, indexOffset + _.options.slidesToShow)\n .addClass('slick-active')\n .attr('aria-hidden', 'false');\n\n }\n\n }\n\n }\n\n if (_.options.lazyLoad === 'ondemand' || _.options.lazyLoad === 'anticipated') {\n _.lazyLoad();\n }\n };\n\n Slick.prototype.setupInfinite = function() {\n\n var _ = this,\n i, slideIndex, infiniteCount;\n\n if (_.options.fade === true) {\n _.options.centerMode = false;\n }\n\n if (_.options.infinite === true && _.options.fade === false) {\n\n slideIndex = null;\n\n if (_.slideCount > _.options.slidesToShow) {\n\n if (_.options.centerMode === true) {\n infiniteCount = _.options.slidesToShow + 1;\n } else {\n infiniteCount = _.options.slidesToShow;\n }\n\n for (i = _.slideCount; i > (_.slideCount -\n infiniteCount); i -= 1) {\n slideIndex = i - 1;\n $(_.$slides[slideIndex]).clone(true).attr('id', '')\n .attr('data-slick-index', slideIndex - _.slideCount)\n .prependTo(_.$slideTrack).addClass('slick-cloned');\n }\n for (i = 0; i < infiniteCount + _.slideCount; i += 1) {\n slideIndex = i;\n $(_.$slides[slideIndex]).clone(true).attr('id', '')\n .attr('data-slick-index', slideIndex + _.slideCount)\n .appendTo(_.$slideTrack).addClass('slick-cloned');\n }\n _.$slideTrack.find('.slick-cloned').find('[id]').each(function() {\n $(this).attr('id', '');\n });\n\n }\n\n }\n\n };\n\n Slick.prototype.interrupt = function( toggle ) {\n\n var _ = this;\n\n if( !toggle ) {\n _.autoPlay();\n }\n _.interrupted = toggle;\n\n };\n\n Slick.prototype.selectHandler = function(event) {\n\n var _ = this;\n\n var targetElement =\n $(event.target).is('.slick-slide') ?\n $(event.target) :\n $(event.target).parents('.slick-slide');\n\n var index = parseInt(targetElement.attr('data-slick-index'));\n\n if (!index) index = 0;\n\n if (_.slideCount <= _.options.slidesToShow) {\n\n _.slideHandler(index, false, true);\n return;\n\n }\n\n _.slideHandler(index);\n\n };\n\n Slick.prototype.slideHandler = function(index, sync, dontAnimate) {\n\n var targetSlide, animSlide, oldSlide, slideLeft, targetLeft = null,\n _ = this, navTarget;\n\n sync = sync || false;\n\n if (_.animating === true && _.options.waitForAnimate === true) {\n return;\n }\n\n if (_.options.fade === true && _.currentSlide === index) {\n return;\n }\n\n if (sync === false) {\n _.asNavFor(index);\n }\n\n targetSlide = index;\n targetLeft = _.getLeft(targetSlide);\n slideLeft = _.getLeft(_.currentSlide);\n\n _.currentLeft = _.swipeLeft === null ? slideLeft : _.swipeLeft;\n\n if (_.options.infinite === false && _.options.centerMode === false && (index < 0 || index > _.getDotCount() * _.options.slidesToScroll)) {\n if (_.options.fade === false) {\n targetSlide = _.currentSlide;\n if (dontAnimate !== true && _.slideCount > _.options.slidesToShow) {\n _.animateSlide(slideLeft, function() {\n _.postSlide(targetSlide);\n });\n } else {\n _.postSlide(targetSlide);\n }\n }\n return;\n } else if (_.options.infinite === false && _.options.centerMode === true && (index < 0 || index > (_.slideCount - _.options.slidesToScroll))) {\n if (_.options.fade === false) {\n targetSlide = _.currentSlide;\n if (dontAnimate !== true && _.slideCount > _.options.slidesToShow) {\n _.animateSlide(slideLeft, function() {\n _.postSlide(targetSlide);\n });\n } else {\n _.postSlide(targetSlide);\n }\n }\n return;\n }\n\n if ( _.options.autoplay ) {\n clearInterval(_.autoPlayTimer);\n }\n\n if (targetSlide < 0) {\n if (_.slideCount % _.options.slidesToScroll !== 0) {\n animSlide = _.slideCount - (_.slideCount % _.options.slidesToScroll);\n } else {\n animSlide = _.slideCount + targetSlide;\n }\n } else if (targetSlide >= _.slideCount) {\n if (_.slideCount % _.options.slidesToScroll !== 0) {\n animSlide = 0;\n } else {\n animSlide = targetSlide - _.slideCount;\n }\n } else {\n animSlide = targetSlide;\n }\n\n _.animating = true;\n\n _.$slider.trigger('beforeChange', [_, _.currentSlide, animSlide]);\n\n oldSlide = _.currentSlide;\n _.currentSlide = animSlide;\n\n _.setSlideClasses(_.currentSlide);\n\n if ( _.options.asNavFor ) {\n\n navTarget = _.getNavTarget();\n navTarget = navTarget.slick('getSlick');\n\n if ( navTarget.slideCount <= navTarget.options.slidesToShow ) {\n navTarget.setSlideClasses(_.currentSlide);\n }\n\n }\n\n _.updateDots();\n _.updateArrows();\n\n if (_.options.fade === true) {\n if (dontAnimate !== true) {\n\n _.fadeSlideOut(oldSlide);\n\n _.fadeSlide(animSlide, function() {\n _.postSlide(animSlide);\n });\n\n } else {\n _.postSlide(animSlide);\n }\n _.animateHeight();\n return;\n }\n\n if (dontAnimate !== true && _.slideCount > _.options.slidesToShow) {\n _.animateSlide(targetLeft, function() {\n _.postSlide(animSlide);\n });\n } else {\n _.postSlide(animSlide);\n }\n\n };\n\n Slick.prototype.startLoad = function() {\n\n var _ = this;\n\n if (_.options.arrows === true && _.slideCount > _.options.slidesToShow) {\n\n _.$prevArrow.hide();\n _.$nextArrow.hide();\n\n }\n\n if (_.options.dots === true && _.slideCount > _.options.slidesToShow) {\n\n _.$dots.hide();\n\n }\n\n _.$slider.addClass('slick-loading');\n\n };\n\n Slick.prototype.swipeDirection = function() {\n\n var xDist, yDist, r, swipeAngle, _ = this;\n\n xDist = _.touchObject.startX - _.touchObject.curX;\n yDist = _.touchObject.startY - _.touchObject.curY;\n r = Math.atan2(yDist, xDist);\n\n swipeAngle = Math.round(r * 180 / Math.PI);\n if (swipeAngle < 0) {\n swipeAngle = 360 - Math.abs(swipeAngle);\n }\n\n if ((swipeAngle <= 45) && (swipeAngle >= 0)) {\n return (_.options.rtl === false ? 'left' : 'right');\n }\n if ((swipeAngle <= 360) && (swipeAngle >= 315)) {\n return (_.options.rtl === false ? 'left' : 'right');\n }\n if ((swipeAngle >= 135) && (swipeAngle <= 225)) {\n return (_.options.rtl === false ? 'right' : 'left');\n }\n if (_.options.verticalSwiping === true) {\n if ((swipeAngle >= 35) && (swipeAngle <= 135)) {\n return 'down';\n } else {\n return 'up';\n }\n }\n\n return 'vertical';\n\n };\n\n Slick.prototype.swipeEnd = function(event) {\n\n var _ = this,\n slideCount,\n direction;\n\n _.dragging = false;\n _.swiping = false;\n\n if (_.scrolling) {\n _.scrolling = false;\n return false;\n }\n\n _.interrupted = false;\n _.shouldClick = ( _.touchObject.swipeLength > 10 ) ? false : true;\n\n if ( _.touchObject.curX === undefined ) {\n return false;\n }\n\n if ( _.touchObject.edgeHit === true ) {\n _.$slider.trigger('edge', [_, _.swipeDirection() ]);\n }\n\n if ( _.touchObject.swipeLength >= _.touchObject.minSwipe ) {\n\n direction = _.swipeDirection();\n\n switch ( direction ) {\n\n case 'left':\n case 'down':\n\n slideCount =\n _.options.swipeToSlide ?\n _.checkNavigable( _.currentSlide + _.getSlideCount() ) :\n _.currentSlide + _.getSlideCount();\n\n _.currentDirection = 0;\n\n break;\n\n case 'right':\n case 'up':\n\n slideCount =\n _.options.swipeToSlide ?\n _.checkNavigable( _.currentSlide - _.getSlideCount() ) :\n _.currentSlide - _.getSlideCount();\n\n _.currentDirection = 1;\n\n break;\n\n default:\n\n\n }\n\n if( direction != 'vertical' ) {\n\n _.slideHandler( slideCount );\n _.touchObject = {};\n _.$slider.trigger('swipe', [_, direction ]);\n\n }\n\n } else {\n\n if ( _.touchObject.startX !== _.touchObject.curX ) {\n\n _.slideHandler( _.currentSlide );\n _.touchObject = {};\n\n }\n\n }\n\n };\n\n Slick.prototype.swipeHandler = function(event) {\n\n var _ = this;\n\n if ((_.options.swipe === false) || ('ontouchend' in document && _.options.swipe === false)) {\n return;\n } else if (_.options.draggable === false && event.type.indexOf('mouse') !== -1) {\n return;\n }\n\n _.touchObject.fingerCount = event.originalEvent && event.originalEvent.touches !== undefined ?\n event.originalEvent.touches.length : 1;\n\n _.touchObject.minSwipe = _.listWidth / _.options\n .touchThreshold;\n\n if (_.options.verticalSwiping === true) {\n _.touchObject.minSwipe = _.listHeight / _.options\n .touchThreshold;\n }\n\n switch (event.data.action) {\n\n case 'start':\n _.swipeStart(event);\n break;\n\n case 'move':\n _.swipeMove(event);\n break;\n\n case 'end':\n _.swipeEnd(event);\n break;\n\n }\n\n };\n\n Slick.prototype.swipeMove = function(event) {\n\n var _ = this,\n edgeWasHit = false,\n curLeft, swipeDirection, swipeLength, positionOffset, touches, verticalSwipeLength;\n\n touches = event.originalEvent !== undefined ? event.originalEvent.touches : null;\n\n if (!_.dragging || _.scrolling || touches && touches.length !== 1) {\n return false;\n }\n\n curLeft = _.getLeft(_.currentSlide);\n\n _.touchObject.curX = touches !== undefined ? touches[0].pageX : event.clientX;\n _.touchObject.curY = touches !== undefined ? touches[0].pageY : event.clientY;\n\n _.touchObject.swipeLength = Math.round(Math.sqrt(\n Math.pow(_.touchObject.curX - _.touchObject.startX, 2)));\n\n verticalSwipeLength = Math.round(Math.sqrt(\n Math.pow(_.touchObject.curY - _.touchObject.startY, 2)));\n\n if (!_.options.verticalSwiping && !_.swiping && verticalSwipeLength > 4) {\n _.scrolling = true;\n return false;\n }\n\n if (_.options.verticalSwiping === true) {\n _.touchObject.swipeLength = verticalSwipeLength;\n }\n\n swipeDirection = _.swipeDirection();\n\n if (event.originalEvent !== undefined && _.touchObject.swipeLength > 4) {\n _.swiping = true;\n event.preventDefault();\n }\n\n positionOffset = (_.options.rtl === false ? 1 : -1) * (_.touchObject.curX > _.touchObject.startX ? 1 : -1);\n if (_.options.verticalSwiping === true) {\n positionOffset = _.touchObject.curY > _.touchObject.startY ? 1 : -1;\n }\n\n\n swipeLength = _.touchObject.swipeLength;\n\n _.touchObject.edgeHit = false;\n\n if (_.options.infinite === false) {\n if ((_.currentSlide === 0 && swipeDirection === 'right') || (_.currentSlide >= _.getDotCount() && swipeDirection === 'left')) {\n swipeLength = _.touchObject.swipeLength * _.options.edgeFriction;\n _.touchObject.edgeHit = true;\n }\n }\n\n if (_.options.vertical === false) {\n _.swipeLeft = curLeft + swipeLength * positionOffset;\n } else {\n _.swipeLeft = curLeft + (swipeLength * (_.$list.height() / _.listWidth)) * positionOffset;\n }\n if (_.options.verticalSwiping === true) {\n _.swipeLeft = curLeft + swipeLength * positionOffset;\n }\n\n if (_.options.fade === true || _.options.touchMove === false) {\n return false;\n }\n\n if (_.animating === true) {\n _.swipeLeft = null;\n return false;\n }\n\n _.setCSS(_.swipeLeft);\n\n };\n\n Slick.prototype.swipeStart = function(event) {\n\n var _ = this,\n touches;\n\n _.interrupted = true;\n\n if (_.touchObject.fingerCount !== 1 || _.slideCount <= _.options.slidesToShow) {\n _.touchObject = {};\n return false;\n }\n\n if (event.originalEvent !== undefined && event.originalEvent.touches !== undefined) {\n touches = event.originalEvent.touches[0];\n }\n\n _.touchObject.startX = _.touchObject.curX = touches !== undefined ? touches.pageX : event.clientX;\n _.touchObject.startY = _.touchObject.curY = touches !== undefined ? touches.pageY : event.clientY;\n\n _.dragging = true;\n\n };\n\n Slick.prototype.unfilterSlides = Slick.prototype.slickUnfilter = function() {\n\n var _ = this;\n\n if (_.$slidesCache !== null) {\n\n _.unload();\n\n _.$slideTrack.children(this.options.slide).detach();\n\n _.$slidesCache.appendTo(_.$slideTrack);\n\n _.reinit();\n\n }\n\n };\n\n Slick.prototype.unload = function() {\n\n var _ = this;\n\n $('.slick-cloned', _.$slider).remove();\n\n if (_.$dots) {\n _.$dots.remove();\n }\n\n if (_.$prevArrow && _.htmlExpr.test(_.options.prevArrow)) {\n _.$prevArrow.remove();\n }\n\n if (_.$nextArrow && _.htmlExpr.test(_.options.nextArrow)) {\n _.$nextArrow.remove();\n }\n\n _.$slides\n .removeClass('slick-slide slick-active slick-visible slick-current')\n .attr('aria-hidden', 'true')\n .css('width', '');\n\n };\n\n Slick.prototype.unslick = function(fromBreakpoint) {\n\n var _ = this;\n _.$slider.trigger('unslick', [_, fromBreakpoint]);\n _.destroy();\n\n };\n\n Slick.prototype.updateArrows = function() {\n\n var _ = this,\n centerOffset;\n\n centerOffset = Math.floor(_.options.slidesToShow / 2);\n\n if ( _.options.arrows === true &&\n _.slideCount > _.options.slidesToShow &&\n !_.options.infinite ) {\n\n _.$prevArrow.removeClass('slick-disabled').attr('aria-disabled', 'false');\n _.$nextArrow.removeClass('slick-disabled').attr('aria-disabled', 'false');\n\n if (_.currentSlide === 0) {\n\n _.$prevArrow.addClass('slick-disabled').attr('aria-disabled', 'true');\n _.$nextArrow.removeClass('slick-disabled').attr('aria-disabled', 'false');\n\n } else if (_.currentSlide >= _.slideCount - _.options.slidesToShow && _.options.centerMode === false) {\n\n _.$nextArrow.addClass('slick-disabled').attr('aria-disabled', 'true');\n _.$prevArrow.removeClass('slick-disabled').attr('aria-disabled', 'false');\n\n } else if (_.currentSlide >= _.slideCount - 1 && _.options.centerMode === true) {\n\n _.$nextArrow.addClass('slick-disabled').attr('aria-disabled', 'true');\n _.$prevArrow.removeClass('slick-disabled').attr('aria-disabled', 'false');\n\n }\n\n }\n\n };\n\n Slick.prototype.updateDots = function() {\n\n var _ = this;\n\n if (_.$dots !== null) {\n\n _.$dots\n .find('li')\n .removeClass('slick-active')\n .end();\n\n _.$dots\n .find('li')\n .eq(Math.floor(_.currentSlide / _.options.slidesToScroll))\n .addClass('slick-active');\n\n }\n\n };\n\n Slick.prototype.visibility = function() {\n\n var _ = this;\n\n if ( _.options.autoplay ) {\n\n if ( document[_.hidden] ) {\n\n _.interrupted = true;\n\n } else {\n\n _.interrupted = false;\n\n }\n\n }\n\n };\n\n $.fn.slick = function() {\n var _ = this,\n opt = arguments[0],\n args = Array.prototype.slice.call(arguments, 1),\n l = _.length,\n i,\n ret;\n for (i = 0; i < l; i++) {\n if (typeof opt == 'object' || typeof opt == 'undefined')\n _[i].slick = new Slick(_[i], opt);\n else\n ret = _[i].slick[opt].apply(_[i].slick, args);\n if (typeof ret != 'undefined') return ret;\n }\n return _;\n };\n\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\nconst uriAttrs = [\n 'background',\n 'cite',\n 'href',\n 'itemtype',\n 'longdesc',\n 'poster',\n 'src',\n 'xlink:href'\n]\n\nconst ARIA_ATTRIBUTE_PATTERN = /^aria-[\\w-]*$/i\n\nexport const 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/**\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 */\nconst SAFE_URL_PATTERN = /^(?:(?:https?|mailto|ftp|tel|file|sms):|[^#&/:?]*(?:[#/?]|$))/i\n\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 */\nconst 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\nfunction allowedAttribute(attr, allowedAttributeList) {\n const 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 const regExp = allowedAttributeList.filter(attrRegex => attrRegex instanceof RegExp)\n\n // Check if a regular expression validates the attribute.\n for (let 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\nexport 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 const domParser = new window.DOMParser()\n const createdDocument = domParser.parseFromString(unsafeHtml, 'text/html')\n const whitelistKeys = Object.keys(whiteList)\n const elements = [].slice.call(createdDocument.body.querySelectorAll('*'))\n\n for (let i = 0, len = elements.length; i < len; i++) {\n const el = elements[i]\n const elName = el.nodeName.toLowerCase()\n\n if (whitelistKeys.indexOf(el.nodeName.toLowerCase()) === -1) {\n el.parentNode.removeChild(el)\n\n continue\n }\n\n const attributeList = [].slice.call(el.attributes)\n // eslint-disable-next-line unicorn/prefer-spread\n const whitelistedAttributes = [].concat(whiteList['*'] || [], whiteList[elName] || [])\n\n attributeList.forEach(attr => {\n if (!allowedAttribute(attr, whitelistedAttributes)) {\n el.removeAttribute(attr.nodeName)\n }\n })\n }\n\n return createdDocument.body.innerHTML\n}\n","/**\n * --------------------------------------------------------------------------\n * Bootstrap (v4.6.2): tooltip.js\n * Licensed under MIT (https://github.com/twbs/bootstrap/blob/main/LICENSE)\n * --------------------------------------------------------------------------\n */\n\nimport { DefaultWhitelist, sanitizeHtml } from './tools/sanitizer'\nimport $ from 'jquery'\nimport Popper from 'popper.js'\nimport Util from './util'\n\n/**\n * Constants\n */\n\nconst NAME = 'tooltip'\nconst VERSION = '4.6.2'\nconst DATA_KEY = 'bs.tooltip'\nconst EVENT_KEY = `.${DATA_KEY}`\nconst JQUERY_NO_CONFLICT = $.fn[NAME]\nconst CLASS_PREFIX = 'bs-tooltip'\nconst BSCLS_PREFIX_REGEX = new RegExp(`(^|\\\\s)${CLASS_PREFIX}\\\\S+`, 'g')\nconst DISALLOWED_ATTRIBUTES = ['sanitize', 'whiteList', 'sanitizeFn']\n\nconst CLASS_NAME_FADE = 'fade'\nconst CLASS_NAME_SHOW = 'show'\n\nconst HOVER_STATE_SHOW = 'show'\nconst HOVER_STATE_OUT = 'out'\n\nconst SELECTOR_TOOLTIP_INNER = '.tooltip-inner'\nconst SELECTOR_ARROW = '.arrow'\n\nconst TRIGGER_HOVER = 'hover'\nconst TRIGGER_FOCUS = 'focus'\nconst TRIGGER_CLICK = 'click'\nconst TRIGGER_MANUAL = 'manual'\n\nconst AttachmentMap = {\n AUTO: 'auto',\n TOP: 'top',\n RIGHT: 'right',\n BOTTOM: 'bottom',\n LEFT: 'left'\n}\n\nconst Default = {\n animation: true,\n template: '<div class=\"tooltip\" role=\"tooltip\">' +\n '<div class=\"arrow\"></div>' +\n '<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\nconst DefaultType = {\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\nconst Event = {\n HIDE: `hide${EVENT_KEY}`,\n HIDDEN: `hidden${EVENT_KEY}`,\n SHOW: `show${EVENT_KEY}`,\n SHOWN: `shown${EVENT_KEY}`,\n INSERTED: `inserted${EVENT_KEY}`,\n CLICK: `click${EVENT_KEY}`,\n FOCUSIN: `focusin${EVENT_KEY}`,\n FOCUSOUT: `focusout${EVENT_KEY}`,\n MOUSEENTER: `mouseenter${EVENT_KEY}`,\n MOUSELEAVE: `mouseleave${EVENT_KEY}`\n}\n\n/**\n * Class definition\n */\n\nclass Tooltip {\n constructor(element, config) {\n if (typeof Popper === 'undefined') {\n throw new TypeError('Bootstrap\\'s tooltips require Popper (https://popper.js.org)')\n }\n\n // Private\n this._isEnabled = true\n this._timeout = 0\n this._hoverState = ''\n this._activeTrigger = {}\n this._popper = null\n\n // Protected\n this.element = element\n this.config = this._getConfig(config)\n this.tip = null\n\n this._setListeners()\n }\n\n // Getters\n static get VERSION() {\n return VERSION\n }\n\n static get Default() {\n return Default\n }\n\n static get NAME() {\n return NAME\n }\n\n static get DATA_KEY() {\n return DATA_KEY\n }\n\n static get Event() {\n return Event\n }\n\n static get EVENT_KEY() {\n return EVENT_KEY\n }\n\n static get DefaultType() {\n return DefaultType\n }\n\n // Public\n enable() {\n this._isEnabled = true\n }\n\n disable() {\n this._isEnabled = false\n }\n\n toggleEnabled() {\n this._isEnabled = !this._isEnabled\n }\n\n toggle(event) {\n if (!this._isEnabled) {\n return\n }\n\n if (event) {\n const dataKey = this.constructor.DATA_KEY\n let context = $(event.currentTarget).data(dataKey)\n\n if (!context) {\n context = new this.constructor(\n event.currentTarget,\n this._getDelegateConfig()\n )\n $(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 ($(this.getTipElement()).hasClass(CLASS_NAME_SHOW)) {\n this._leave(null, this)\n return\n }\n\n this._enter(null, this)\n }\n }\n\n dispose() {\n clearTimeout(this._timeout)\n\n $.removeData(this.element, this.constructor.DATA_KEY)\n\n $(this.element).off(this.constructor.EVENT_KEY)\n $(this.element).closest('.modal').off('hide.bs.modal', this._hideModalHandler)\n\n if (this.tip) {\n $(this.tip).remove()\n }\n\n this._isEnabled = null\n this._timeout = null\n this._hoverState = null\n this._activeTrigger = null\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 show() {\n if ($(this.element).css('display') === 'none') {\n throw new Error('Please use show on visible elements')\n }\n\n const showEvent = $.Event(this.constructor.Event.SHOW)\n if (this.isWithContent() && this._isEnabled) {\n $(this.element).trigger(showEvent)\n\n const shadowRoot = Util.findShadowRoot(this.element)\n const isInTheDom = $.contains(\n shadowRoot !== null ? shadowRoot : this.element.ownerDocument.documentElement,\n this.element\n )\n\n if (showEvent.isDefaultPrevented() || !isInTheDom) {\n return\n }\n\n const tip = this.getTipElement()\n const tipId = Util.getUID(this.constructor.NAME)\n\n tip.setAttribute('id', tipId)\n this.element.setAttribute('aria-describedby', tipId)\n\n this.setContent()\n\n if (this.config.animation) {\n $(tip).addClass(CLASS_NAME_FADE)\n }\n\n const placement = typeof this.config.placement === 'function' ?\n this.config.placement.call(this, tip, this.element) :\n this.config.placement\n\n const attachment = this._getAttachment(placement)\n this.addAttachmentClass(attachment)\n\n const container = this._getContainer()\n $(tip).data(this.constructor.DATA_KEY, this)\n\n if (!$.contains(this.element.ownerDocument.documentElement, this.tip)) {\n $(tip).appendTo(container)\n }\n\n $(this.element).trigger(this.constructor.Event.INSERTED)\n\n this._popper = new Popper(this.element, tip, this._getPopperConfig(attachment))\n\n $(tip).addClass(CLASS_NAME_SHOW)\n $(tip).addClass(this.config.customClass)\n\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 if ('ontouchstart' in document.documentElement) {\n $(document.body).children().on('mouseover', null, $.noop)\n }\n\n const complete = () => {\n if (this.config.animation) {\n this._fixTransition()\n }\n\n const prevHoverState = this._hoverState\n this._hoverState = null\n\n $(this.element).trigger(this.constructor.Event.SHOWN)\n\n if (prevHoverState === HOVER_STATE_OUT) {\n this._leave(null, this)\n }\n }\n\n if ($(this.tip).hasClass(CLASS_NAME_FADE)) {\n const transitionDuration = Util.getTransitionDurationFromElement(this.tip)\n\n $(this.tip)\n .one(Util.TRANSITION_END, complete)\n .emulateTransitionEnd(transitionDuration)\n } else {\n complete()\n }\n }\n }\n\n hide(callback) {\n const tip = this.getTipElement()\n const hideEvent = $.Event(this.constructor.Event.HIDE)\n const complete = () => {\n if (this._hoverState !== HOVER_STATE_SHOW && tip.parentNode) {\n tip.parentNode.removeChild(tip)\n }\n\n this._cleanTipClass()\n this.element.removeAttribute('aria-describedby')\n $(this.element).trigger(this.constructor.Event.HIDDEN)\n if (this._popper !== null) {\n this._popper.destroy()\n }\n\n if (callback) {\n callback()\n }\n }\n\n $(this.element).trigger(hideEvent)\n\n if (hideEvent.isDefaultPrevented()) {\n return\n }\n\n $(tip).removeClass(CLASS_NAME_SHOW)\n\n // If this is a touch-enabled device we remove the extra\n // empty mouseover listeners we added for iOS support\n if ('ontouchstart' in document.documentElement) {\n $(document.body).children().off('mouseover', null, $.noop)\n }\n\n this._activeTrigger[TRIGGER_CLICK] = false\n this._activeTrigger[TRIGGER_FOCUS] = false\n this._activeTrigger[TRIGGER_HOVER] = false\n\n if ($(this.tip).hasClass(CLASS_NAME_FADE)) {\n const transitionDuration = Util.getTransitionDurationFromElement(tip)\n\n $(tip)\n .one(Util.TRANSITION_END, complete)\n .emulateTransitionEnd(transitionDuration)\n } else {\n complete()\n }\n\n this._hoverState = ''\n }\n\n update() {\n if (this._popper !== null) {\n this._popper.scheduleUpdate()\n }\n }\n\n // Protected\n isWithContent() {\n return Boolean(this.getTitle())\n }\n\n addAttachmentClass(attachment) {\n $(this.getTipElement()).addClass(`${CLASS_PREFIX}-${attachment}`)\n }\n\n getTipElement() {\n this.tip = this.tip || $(this.config.template)[0]\n return this.tip\n }\n\n setContent() {\n const tip = this.getTipElement()\n this.setElementContent($(tip.querySelectorAll(SELECTOR_TOOLTIP_INNER)), this.getTitle())\n $(tip).removeClass(`${CLASS_NAME_FADE} ${CLASS_NAME_SHOW}`)\n }\n\n 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 (!$(content).parent().is($element)) {\n $element.empty().append(content)\n }\n } else {\n $element.text($(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 getTitle() {\n let title = this.element.getAttribute('data-original-title')\n\n if (!title) {\n title = typeof this.config.title === 'function' ?\n this.config.title.call(this.element) :\n this.config.title\n }\n\n return title\n }\n\n // Private\n _getPopperConfig(attachment) {\n const 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: data => {\n if (data.originalPlacement !== data.placement) {\n this._handlePopperPlacementChange(data)\n }\n },\n onUpdate: data => this._handlePopperPlacementChange(data)\n }\n\n return {\n ...defaultBsConfig,\n ...this.config.popperConfig\n }\n }\n\n _getOffset() {\n const offset = {}\n\n if (typeof this.config.offset === 'function') {\n offset.fn = data => {\n data.offsets = {\n ...data.offsets,\n ...this.config.offset(data.offsets, this.element)\n }\n\n return data\n }\n } else {\n offset.offset = this.config.offset\n }\n\n return offset\n }\n\n _getContainer() {\n if (this.config.container === false) {\n return document.body\n }\n\n if (Util.isElement(this.config.container)) {\n return $(this.config.container)\n }\n\n return $(document).find(this.config.container)\n }\n\n _getAttachment(placement) {\n return AttachmentMap[placement.toUpperCase()]\n }\n\n _setListeners() {\n const triggers = this.config.trigger.split(' ')\n\n triggers.forEach(trigger => {\n if (trigger === 'click') {\n $(this.element).on(\n this.constructor.Event.CLICK,\n this.config.selector,\n event => this.toggle(event)\n )\n } else if (trigger !== TRIGGER_MANUAL) {\n const eventIn = trigger === TRIGGER_HOVER ?\n this.constructor.Event.MOUSEENTER :\n this.constructor.Event.FOCUSIN\n const eventOut = trigger === TRIGGER_HOVER ?\n this.constructor.Event.MOUSELEAVE :\n this.constructor.Event.FOCUSOUT\n\n $(this.element)\n .on(eventIn, this.config.selector, event => this._enter(event))\n .on(eventOut, this.config.selector, event => this._leave(event))\n }\n })\n\n this._hideModalHandler = () => {\n if (this.element) {\n this.hide()\n }\n }\n\n $(this.element).closest('.modal').on('hide.bs.modal', this._hideModalHandler)\n\n if (this.config.selector) {\n this.config = {\n ...this.config,\n trigger: 'manual',\n selector: ''\n }\n } else {\n this._fixTitle()\n }\n }\n\n _fixTitle() {\n const titleType = typeof this.element.getAttribute('data-original-title')\n\n if (this.element.getAttribute('title') || titleType !== 'string') {\n this.element.setAttribute(\n 'data-original-title',\n this.element.getAttribute('title') || ''\n )\n\n this.element.setAttribute('title', '')\n }\n }\n\n _enter(event, context) {\n const dataKey = this.constructor.DATA_KEY\n context = context || $(event.currentTarget).data(dataKey)\n\n if (!context) {\n context = new this.constructor(\n event.currentTarget,\n this._getDelegateConfig()\n )\n $(event.currentTarget).data(dataKey, context)\n }\n\n if (event) {\n context._activeTrigger[\n event.type === 'focusin' ? TRIGGER_FOCUS : TRIGGER_HOVER\n ] = true\n }\n\n if ($(context.getTipElement()).hasClass(CLASS_NAME_SHOW) || context._hoverState === HOVER_STATE_SHOW) {\n context._hoverState = HOVER_STATE_SHOW\n return\n }\n\n clearTimeout(context._timeout)\n\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(() => {\n if (context._hoverState === HOVER_STATE_SHOW) {\n context.show()\n }\n }, context.config.delay.show)\n }\n\n _leave(event, context) {\n const dataKey = this.constructor.DATA_KEY\n context = context || $(event.currentTarget).data(dataKey)\n\n if (!context) {\n context = new this.constructor(\n event.currentTarget,\n this._getDelegateConfig()\n )\n $(event.currentTarget).data(dataKey, context)\n }\n\n if (event) {\n context._activeTrigger[\n event.type === 'focusout' ? TRIGGER_FOCUS : TRIGGER_HOVER\n ] = false\n }\n\n if (context._isWithActiveTrigger()) {\n return\n }\n\n clearTimeout(context._timeout)\n\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(() => {\n if (context._hoverState === HOVER_STATE_OUT) {\n context.hide()\n }\n }, context.config.delay.hide)\n }\n\n _isWithActiveTrigger() {\n for (const trigger in this._activeTrigger) {\n if (this._activeTrigger[trigger]) {\n return true\n }\n }\n\n return false\n }\n\n _getConfig(config) {\n const dataAttributes = $(this.element).data()\n\n Object.keys(dataAttributes)\n .forEach(dataAttr => {\n if (DISALLOWED_ATTRIBUTES.indexOf(dataAttr) !== -1) {\n delete dataAttributes[dataAttr]\n }\n })\n\n config = {\n ...this.constructor.Default,\n ...dataAttributes,\n ...(typeof config === 'object' && config ? config : {})\n }\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(\n NAME,\n config,\n this.constructor.DefaultType\n )\n\n if (config.sanitize) {\n config.template = sanitizeHtml(config.template, config.whiteList, config.sanitizeFn)\n }\n\n return config\n }\n\n _getDelegateConfig() {\n const config = {}\n\n if (this.config) {\n for (const 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 _cleanTipClass() {\n const $tip = $(this.getTipElement())\n const tabClass = $tip.attr('class').match(BSCLS_PREFIX_REGEX)\n if (tabClass !== null && tabClass.length) {\n $tip.removeClass(tabClass.join(''))\n }\n }\n\n _handlePopperPlacementChange(popperData) {\n this.tip = popperData.instance.popper\n this._cleanTipClass()\n this.addAttachmentClass(this._getAttachment(popperData.placement))\n }\n\n _fixTransition() {\n const tip = this.getTipElement()\n const initConfigAnimation = this.config.animation\n\n if (tip.getAttribute('x-placement') !== null) {\n return\n }\n\n $(tip).removeClass(CLASS_NAME_FADE)\n this.config.animation = false\n this.hide()\n this.show()\n this.config.animation = initConfigAnimation\n }\n\n // Static\n static _jQueryInterface(config) {\n return this.each(function () {\n const $element = $(this)\n let data = $element.data(DATA_KEY)\n const _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, 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\n/**\n * jQuery\n */\n\n$.fn[NAME] = Tooltip._jQueryInterface\n$.fn[NAME].Constructor = Tooltip\n$.fn[NAME].noConflict = () => {\n $.fn[NAME] = JQUERY_NO_CONFLICT\n return Tooltip._jQueryInterface\n}\n\nexport default Tooltip\n"],"sourceRoot":""}