{"version":3,"sources":["webpack:///webpack/bootstrap","webpack:///./node_modules/jquery/src/core.js","webpack:///./node_modules/jquery/src/var/isFunction.js","webpack:///./node_modules/jquery/src/var/document.js","webpack:///./node_modules/jquery/src/selector.js","webpack:///./node_modules/moment/moment.js","webpack:///./node_modules/jquery/src/core/init.js","webpack:///./node_modules/jquery/src/var/arr.js","webpack:///./node_modules/jquery/src/core/nodeName.js","webpack:///./node_modules/jquery/src/data/var/dataPriv.js","webpack:///./node_modules/jquery/src/var/rnothtmlwhite.js","webpack:///./node_modules/jquery/src/var/support.js","webpack:///./node_modules/jquery/src/core/access.js","webpack:///./node_modules/jquery/src/ajax.js","webpack:///./node_modules/jquery/src/core/toType.js","webpack:///./node_modules/jquery/src/traversing.js","webpack:///./node_modules/jquery/src/deferred.js","webpack:///./node_modules/jquery/src/var/slice.js","webpack:///./node_modules/jquery/src/var/isWindow.js","webpack:///./node_modules/jquery/src/core/camelCase.js","webpack:///./node_modules/jquery/src/event.js","webpack:///./node_modules/jquery/src/css.js","webpack:///./node_modules/jquery/src/var/indexOf.js","webpack:///./node_modules/jquery/src/var/class2type.js","webpack:///./node_modules/jquery/src/var/hasOwn.js","webpack:///./node_modules/jquery/src/data/var/acceptData.js","webpack:///./node_modules/jquery/src/core/isAttached.js","webpack:///./node_modules/jquery/src/var/documentElement.js","webpack:///./node_modules/jquery/src/manipulation.js","webpack:///./node_modules/jquery/src/var/push.js","webpack:///./node_modules/jquery/src/callbacks.js","webpack:///./node_modules/jquery/src/queue.js","webpack:///./node_modules/jquery/src/effects.js","webpack:///./node_modules/jquery/src/var/rcssNum.js","webpack:///./node_modules/jquery/src/css/var/cssExpand.js","webpack:///./node_modules/jquery/src/var/rcheckableType.js","webpack:///./node_modules/jquery/src/css/var/rnumnonpx.js","webpack:///./node_modules/jquery/src/css/support.js","webpack:///./node_modules/jquery/src/attributes/support.js","webpack:///./node_modules/jquery/src/core/stripAndCollapse.js","webpack:///./node_modules/jquery/src/jquery.js","webpack:///./node_modules/@rails/ujs/lib/assets/compiled/rails-ujs.js","webpack:///./node_modules/jquery/src/var/getProto.js","webpack:///./node_modules/jquery/src/var/flat.js","webpack:///./node_modules/jquery/src/var/toString.js","webpack:///./node_modules/jquery/src/var/fnToString.js","webpack:///./node_modules/jquery/src/core/DOMEval.js","webpack:///./node_modules/jquery/src/var/whitespace.js","webpack:///./node_modules/jquery/src/var/rtrimCSS.js","webpack:///./node_modules/jquery/src/selector/contains.js","webpack:///./node_modules/jquery/src/traversing/var/rneedsContext.js","webpack:///./node_modules/jquery/src/core/var/rsingleTag.js","webpack:///./node_modules/jquery/src/traversing/findFilter.js","webpack:///./node_modules/jquery/src/core/ready.js","webpack:///./node_modules/jquery/src/data/Data.js","webpack:///./node_modules/jquery/src/data/var/dataUser.js","webpack:///./node_modules/jquery/src/var/pnum.js","webpack:///./node_modules/jquery/src/css/var/isHiddenWithinTree.js","webpack:///./node_modules/jquery/src/css/adjustCSS.js","webpack:///./node_modules/jquery/src/manipulation/var/rtagName.js","webpack:///./node_modules/jquery/src/manipulation/var/rscriptType.js","webpack:///./node_modules/jquery/src/manipulation/wrapMap.js","webpack:///./node_modules/jquery/src/manipulation/support.js","webpack:///./node_modules/jquery/src/manipulation/getAll.js","webpack:///./node_modules/jquery/src/manipulation/setGlobalEval.js","webpack:///./node_modules/jquery/src/manipulation/buildFragment.js","webpack:///./node_modules/jquery/src/css/var/rcustomProp.js","webpack:///./node_modules/jquery/src/css/var/getStyles.js","webpack:///./node_modules/jquery/src/css/curCSS.js","webpack:///./node_modules/jquery/src/css/addGetHookIf.js","webpack:///./node_modules/jquery/src/css/finalPropName.js","webpack:///./node_modules/jquery/src/attributes/prop.js","webpack:///./node_modules/jquery/src/ajax/var/nonce.js","webpack:///./node_modules/jquery/src/ajax/var/rquery.js","webpack:///./node_modules/jquery/src/core/parseXML.js","webpack:///./node_modules/jquery/src/event/trigger.js","webpack:///./node_modules/jquery/src/serialize.js","webpack:///./node_modules/jquery/src/core/parseHTML.js","webpack:///./node_modules/jquery/src/var/ObjectFunctionString.js","webpack:///./node_modules/jquery/src/var/pop.js","webpack:///./node_modules/jquery/src/var/sort.js","webpack:///./node_modules/jquery/src/var/splice.js","webpack:///./node_modules/jquery/src/selector/escapeSelector.js","webpack:///./node_modules/jquery/src/traversing/var/dir.js","webpack:///./node_modules/jquery/src/traversing/var/siblings.js","webpack:///./node_modules/jquery/src/deferred/exceptionHook.js","webpack:///./node_modules/jquery/src/core/readyException.js","webpack:///./node_modules/jquery/src/data.js","webpack:///./node_modules/jquery/src/queue/delay.js","webpack:///./node_modules/jquery/src/css/showHide.js","webpack:///./node_modules/jquery/src/css/var/swap.js","webpack:///./node_modules/jquery/src/css/var/rboxStyle.js","webpack:///./node_modules/jquery/src/effects/Tween.js","webpack:///./node_modules/jquery/src/attributes.js","webpack:///./node_modules/jquery/src/attributes/attr.js","webpack:///./node_modules/jquery/src/attributes/classes.js","webpack:///./node_modules/jquery/src/attributes/val.js","webpack:///./node_modules/jquery/src/manipulation/_evalUrl.js","webpack:///./node_modules/jquery/src/ajax/var/location.js","webpack:///./node_modules/jquery/src/wrap.js","webpack:///./node_modules/jquery/src/css/hiddenVisibleSelectors.js","webpack:///./node_modules/jquery/src/ajax/xhr.js","webpack:///./node_modules/jquery/src/ajax/script.js","webpack:///./node_modules/jquery/src/ajax/jsonp.js","webpack:///./node_modules/jquery/src/ajax/load.js","webpack:///./node_modules/jquery/src/core/support.js","webpack:///./node_modules/jquery/src/effects/animatedSelector.js","webpack:///./node_modules/jquery/src/offset.js","webpack:///./node_modules/jquery/src/dimensions.js","webpack:///./node_modules/jquery/src/deprecated.js","webpack:///./node_modules/jquery/src/deprecated/ajax-event-alias.js","webpack:///./node_modules/jquery/src/deprecated/event.js","webpack:///./node_modules/jquery/src/exports/amd.js","webpack:///./node_modules/jquery/src/exports/global.js","webpack:///./vendor/bundle/ruby/3.3.0/gems/store_connect-18.0.30/app/assets/javascripts/theme/loader.js","webpack:///./vendor/bundle/ruby/3.3.0/gems/store_connect-18.0.30/app/assets/javascripts/theme/store-path-url.js","webpack:///./vendor/bundle/ruby/3.3.0/gems/store_connect-18.0.30/app/assets/javascripts/theme/viewport.js","webpack:///(webpack)/buildin/module.js","webpack:///./node_modules/moment/locale/af.js","webpack:///./node_modules/moment/locale/ar.js","webpack:///./node_modules/moment/locale/ar-dz.js","webpack:///./node_modules/moment/locale/ar-kw.js","webpack:///./node_modules/moment/locale/ar-ly.js","webpack:///./node_modules/moment/locale/ar-ma.js","webpack:///./node_modules/moment/locale/ar-ps.js","webpack:///./node_modules/moment/locale/ar-sa.js","webpack:///./node_modules/moment/locale/ar-tn.js","webpack:///./node_modules/moment/locale/az.js","webpack:///./node_modules/moment/locale/be.js","webpack:///./node_modules/moment/locale/bg.js","webpack:///./node_modules/moment/locale/bm.js","webpack:///./node_modules/moment/locale/bn.js","webpack:///./node_modules/moment/locale/bn-bd.js","webpack:///./node_modules/moment/locale/bo.js","webpack:///./node_modules/moment/locale/br.js","webpack:///./node_modules/moment/locale/bs.js","webpack:///./node_modules/moment/locale/ca.js","webpack:///./node_modules/moment/locale/cs.js","webpack:///./node_modules/moment/locale/cv.js","webpack:///./node_modules/moment/locale/cy.js","webpack:///./node_modules/moment/locale/da.js","webpack:///./node_modules/moment/locale/de.js","webpack:///./node_modules/moment/locale/de-at.js","webpack:///./node_modules/moment/locale/de-ch.js","webpack:///./node_modules/moment/locale/dv.js","webpack:///./node_modules/moment/locale/el.js","webpack:///./node_modules/moment/locale/en-au.js","webpack:///./node_modules/moment/locale/en-ca.js","webpack:///./node_modules/moment/locale/en-gb.js","webpack:///./node_modules/moment/locale/en-ie.js","webpack:///./node_modules/moment/locale/en-il.js","webpack:///./node_modules/moment/locale/en-in.js","webpack:///./node_modules/moment/locale/en-nz.js","webpack:///./node_modules/moment/locale/en-sg.js","webpack:///./node_modules/moment/locale/eo.js","webpack:///./node_modules/moment/locale/es.js","webpack:///./node_modules/moment/locale/es-do.js","webpack:///./node_modules/moment/locale/es-mx.js","webpack:///./node_modules/moment/locale/es-us.js","webpack:///./node_modules/moment/locale/et.js","webpack:///./node_modules/moment/locale/eu.js","webpack:///./node_modules/moment/locale/fa.js","webpack:///./node_modules/moment/locale/fi.js","webpack:///./node_modules/moment/locale/fil.js","webpack:///./node_modules/moment/locale/fo.js","webpack:///./node_modules/moment/locale/fr.js","webpack:///./node_modules/moment/locale/fr-ca.js","webpack:///./node_modules/moment/locale/fr-ch.js","webpack:///./node_modules/moment/locale/fy.js","webpack:///./node_modules/moment/locale/ga.js","webpack:///./node_modules/moment/locale/gd.js","webpack:///./node_modules/moment/locale/gl.js","webpack:///./node_modules/moment/locale/gom-deva.js","webpack:///./node_modules/moment/locale/gom-latn.js","webpack:///./node_modules/moment/locale/gu.js","webpack:///./node_modules/moment/locale/he.js","webpack:///./node_modules/moment/locale/hi.js","webpack:///./node_modules/moment/locale/hr.js","webpack:///./node_modules/moment/locale/hu.js","webpack:///./node_modules/moment/locale/hy-am.js","webpack:///./node_modules/moment/locale/id.js","webpack:///./node_modules/moment/locale/is.js","webpack:///./node_modules/moment/locale/it.js","webpack:///./node_modules/moment/locale/it-ch.js","webpack:///./node_modules/moment/locale/ja.js","webpack:///./node_modules/moment/locale/jv.js","webpack:///./node_modules/moment/locale/ka.js","webpack:///./node_modules/moment/locale/kk.js","webpack:///./node_modules/moment/locale/km.js","webpack:///./node_modules/moment/locale/kn.js","webpack:///./node_modules/moment/locale/ko.js","webpack:///./node_modules/moment/locale/ku.js","webpack:///./node_modules/moment/locale/ku-kmr.js","webpack:///./node_modules/moment/locale/ky.js","webpack:///./node_modules/moment/locale/lb.js","webpack:///./node_modules/moment/locale/lo.js","webpack:///./node_modules/moment/locale/lt.js","webpack:///./node_modules/moment/locale/lv.js","webpack:///./node_modules/moment/locale/me.js","webpack:///./node_modules/moment/locale/mi.js","webpack:///./node_modules/moment/locale/mk.js","webpack:///./node_modules/moment/locale/ml.js","webpack:///./node_modules/moment/locale/mn.js","webpack:///./node_modules/moment/locale/mr.js","webpack:///./node_modules/moment/locale/ms.js","webpack:///./node_modules/moment/locale/ms-my.js","webpack:///./node_modules/moment/locale/mt.js","webpack:///./node_modules/moment/locale/my.js","webpack:///./node_modules/moment/locale/nb.js","webpack:///./node_modules/moment/locale/ne.js","webpack:///./node_modules/moment/locale/nl.js","webpack:///./node_modules/moment/locale/nl-be.js","webpack:///./node_modules/moment/locale/nn.js","webpack:///./node_modules/moment/locale/oc-lnc.js","webpack:///./node_modules/moment/locale/pa-in.js","webpack:///./node_modules/moment/locale/pl.js","webpack:///./node_modules/moment/locale/pt.js","webpack:///./node_modules/moment/locale/pt-br.js","webpack:///./node_modules/moment/locale/ro.js","webpack:///./node_modules/moment/locale/ru.js","webpack:///./node_modules/moment/locale/sd.js","webpack:///./node_modules/moment/locale/se.js","webpack:///./node_modules/moment/locale/si.js","webpack:///./node_modules/moment/locale/sk.js","webpack:///./node_modules/moment/locale/sl.js","webpack:///./node_modules/moment/locale/sq.js","webpack:///./node_modules/moment/locale/sr.js","webpack:///./node_modules/moment/locale/sr-cyrl.js","webpack:///./node_modules/moment/locale/ss.js","webpack:///./node_modules/moment/locale/sv.js","webpack:///./node_modules/moment/locale/sw.js","webpack:///./node_modules/moment/locale/ta.js","webpack:///./node_modules/moment/locale/te.js","webpack:///./node_modules/moment/locale/tet.js","webpack:///./node_modules/moment/locale/tg.js","webpack:///./node_modules/moment/locale/th.js","webpack:///./node_modules/moment/locale/tk.js","webpack:///./node_modules/moment/locale/tl-ph.js","webpack:///./node_modules/moment/locale/tlh.js","webpack:///./node_modules/moment/locale/tr.js","webpack:///./node_modules/moment/locale/tzl.js","webpack:///./node_modules/moment/locale/tzm.js","webpack:///./node_modules/moment/locale/tzm-latn.js","webpack:///./node_modules/moment/locale/ug-cn.js","webpack:///./node_modules/moment/locale/uk.js","webpack:///./node_modules/moment/locale/ur.js","webpack:///./node_modules/moment/locale/uz.js","webpack:///./node_modules/moment/locale/uz-latn.js","webpack:///./node_modules/moment/locale/vi.js","webpack:///./node_modules/moment/locale/x-pseudo.js","webpack:///./node_modules/moment/locale/yo.js","webpack:///./node_modules/moment/locale/zh-cn.js","webpack:///./node_modules/moment/locale/zh-hk.js","webpack:///./node_modules/moment/locale/zh-mo.js","webpack:///./node_modules/moment/locale/zh-tw.js","webpack:///./vendor/bundle/ruby/3.3.0/gems/store_connect-18.0.30/app/assets/javascripts/theme/dropdown.js","webpack:///./node_modules/litepicker/dist/litepicker.umd.js","webpack:///./node_modules/hoverintent/dist/hoverintent.min.js","webpack:///./node_modules/moment/locale sync ^\\.\\/.*$","webpack:///./vendor/bundle/ruby/3.3.0/gems/store_connect-18.0.30/vendor/assets/javascripts/pikaday.js","webpack:///./vendor/bundle/ruby/3.3.0/gems/store_connect-18.0.30/app/assets/javascripts/theme/booking-attendee.js","webpack:///./vendor/bundle/ruby/3.3.0/gems/store_connect-18.0.30/app/assets/javascripts/theme/cart-timer.js","webpack:///./vendor/bundle/ruby/3.3.0/gems/store_connect-18.0.30/app/assets/javascripts/theme/date.js","webpack:///./vendor/bundle/ruby/3.3.0/gems/store_connect-18.0.30/app/assets/javascripts/theme/fulfilment.js","webpack:///./vendor/bundle/ruby/3.3.0/gems/store_connect-18.0.30/app/assets/javascripts/theme/price-slider.js","webpack:///./node_modules/ion-rangeslider/js/ion.rangeSlider.js","webpack:///(webpack)/buildin/amd-options.js","webpack:///./vendor/bundle/ruby/3.3.0/gems/store_connect-18.0.30/app/assets/javascripts/theme/product-comparison.js","webpack:///./node_modules/hammerjs/hammer.js","webpack:///./vendor/bundle/ruby/3.3.0/gems/store_connect-18.0.30/app/assets/javascripts/theme/search-show-more-pagination.js","webpack:///./vendor/bundle/ruby/3.3.0/gems/store_connect-18.0.30/app/assets/javascripts/theme/search-nav-source.js","webpack:///./vendor/bundle/ruby/3.3.0/gems/store_connect-18.0.30/app/assets/javascripts/theme/sort.js","webpack:///./vendor/bundle/ruby/3.3.0/gems/store_connect-18.0.30/app/assets/javascripts/theme/toggle-active.js","webpack:///./vendor/bundle/ruby/3.3.0/gems/store_connect-18.0.30/app/assets/javascripts/theme/toggle-visibility.js","webpack:///./vendor/bundle/ruby/3.3.0/gems/store_connect-18.0.30/app/assets/javascripts/theme/cart.js","webpack:///./vendor/bundle/ruby/3.3.0/gems/store_connect-18.0.30/app/assets/javascripts/theme/price-picker.js","webpack:///./vendor/bundle/ruby/3.3.0/gems/store_connect-18.0.30/app/assets/javascripts/theme/accordion.js","webpack:///./vendor/bundle/ruby/3.3.0/gems/store_connect-18.0.30/app/assets/javascripts/theme/utils/date.js","webpack:///./vendor/bundle/ruby/3.3.0/gems/store_connect-18.0.30/app/assets/javascripts/theme/modal.js","webpack:///./vendor/bundle/ruby/3.3.0/gems/store_connect-18.0.30/app/assets/javascripts/theme/quantity-picker.js","webpack:///./vendor/bundle/ruby/3.3.0/gems/store_connect-18.0.30/app/assets/javascripts/theme/booking.js","webpack:///./vendor/bundle/ruby/3.3.0/gems/store_connect-18.0.30/app/assets/javascripts/theme/custom-form-answers.js","webpack:///./vendor/bundle/ruby/3.3.0/gems/store_connect-18.0.30/app/assets/javascripts/theme/date-picker.js","webpack:///./vendor/bundle/ruby/3.3.0/gems/store_connect-18.0.30/app/assets/javascripts/theme/delivery-options.js","webpack:///./vendor/bundle/ruby/3.3.0/gems/store_connect-18.0.30/app/assets/javascripts/theme/filters.js","webpack:///./vendor/bundle/ruby/3.3.0/gems/store_connect-18.0.30/app/assets/javascripts/theme/points-toggle.js","webpack:///./vendor/bundle/ruby/3.3.0/gems/store_connect-18.0.30/app/assets/javascripts/theme/live-cart-update.js","webpack:///./vendor/bundle/ruby/3.3.0/gems/store_connect-18.0.30/app/assets/javascripts/theme/menu.js","webpack:///./vendor/bundle/ruby/3.3.0/gems/store_connect-18.0.30/app/assets/javascripts/theme/nav.js","webpack:///./vendor/bundle/ruby/3.3.0/gems/store_connect-18.0.30/app/assets/javascripts/theme/privacy.js","webpack:///./vendor/bundle/ruby/3.3.0/gems/store_connect-18.0.30/app/assets/javascripts/theme/product-gallery.js","webpack:///./vendor/bundle/ruby/3.3.0/gems/store_connect-18.0.30/app/assets/javascripts/theme/product-images.js","webpack:///./vendor/bundle/ruby/3.3.0/gems/store_connect-18.0.30/app/assets/javascripts/theme/product-variants.js","webpack:///./node_modules/tiny-slider/src/helpers/raf.js","webpack:///./node_modules/tiny-slider/src/helpers/caf.js","webpack:///./node_modules/tiny-slider/src/helpers/extend.js","webpack:///./node_modules/tiny-slider/src/helpers/checkStorageValue.js","webpack:///./node_modules/tiny-slider/src/helpers/setLocalStorage.js","webpack:///./node_modules/tiny-slider/src/helpers/getBody.js","webpack:///./node_modules/tiny-slider/src/helpers/docElement.js","webpack:///./node_modules/tiny-slider/src/helpers/setFakeBody.js","webpack:///./node_modules/tiny-slider/src/helpers/resetFakeBody.js","webpack:///./node_modules/tiny-slider/src/helpers/addCSSRule.js","webpack:///./node_modules/tiny-slider/src/helpers/getCssRulesLength.js","webpack:///./node_modules/tiny-slider/src/helpers/forEach.js","webpack:///./node_modules/tiny-slider/src/helpers/classListSupport.js","webpack:///./node_modules/tiny-slider/src/helpers/hasClass.js","webpack:///./node_modules/tiny-slider/src/helpers/addClass.js","webpack:///./node_modules/tiny-slider/src/helpers/removeClass.js","webpack:///./node_modules/tiny-slider/src/helpers/hasAttr.js","webpack:///./node_modules/tiny-slider/src/helpers/getAttr.js","webpack:///./node_modules/tiny-slider/src/helpers/isNodeList.js","webpack:///./node_modules/tiny-slider/src/helpers/setAttrs.js","webpack:///./node_modules/tiny-slider/src/helpers/removeAttrs.js","webpack:///./node_modules/tiny-slider/src/helpers/arrayFromNodeList.js","webpack:///./node_modules/tiny-slider/src/helpers/hideElement.js","webpack:///./node_modules/tiny-slider/src/helpers/showElement.js","webpack:///./node_modules/tiny-slider/src/helpers/isVisible.js","webpack:///./node_modules/tiny-slider/src/helpers/whichProperty.js","webpack:///./node_modules/tiny-slider/src/helpers/getEndProperty.js","webpack:///./node_modules/tiny-slider/src/helpers/passiveOption.js","webpack:///./node_modules/tiny-slider/src/helpers/addEvents.js","webpack:///./node_modules/tiny-slider/src/helpers/removeEvents.js","webpack:///./node_modules/tiny-slider/src/helpers/events.js","webpack:///./node_modules/tiny-slider/src/tiny-slider.js","webpack:///./node_modules/tiny-slider/src/helpers/calc.js","webpack:///./node_modules/tiny-slider/src/helpers/percentageLayout.js","webpack:///./node_modules/tiny-slider/src/helpers/mediaquerySupport.js","webpack:///./node_modules/tiny-slider/src/helpers/has3DTransforms.js","webpack:///./node_modules/tiny-slider/src/helpers/createStyleSheet.js","webpack:///./node_modules/tiny-slider/src/helpers/getSlideId.js","webpack:///./node_modules/tiny-slider/src/helpers/jsTransform.js","webpack:///./node_modules/tiny-slider/src/helpers/removeCSSRule.js","webpack:///./node_modules/tiny-slider/src/helpers/toDegree.js","webpack:///./node_modules/tiny-slider/src/helpers/getTouchDirection.js","webpack:///./vendor/bundle/ruby/3.3.0/gems/store_connect-18.0.30/app/assets/javascripts/theme/slider.js","webpack:///./vendor/bundle/ruby/3.3.0/gems/store_connect-18.0.30/app/assets/javascripts/theme/bundle-filters.js","webpack:///./vendor/bundle/ruby/3.3.0/gems/store_connect-18.0.30/app/assets/javascripts/theme/tabs.js","webpack:///./vendor/bundle/ruby/3.3.0/gems/store_connect-18.0.30/app/assets/javascripts/theme/option-card.js","webpack:///./vendor/bundle/ruby/3.3.0/gems/store_connect-18.0.30/app/assets/javascripts/theme/bundle.js","webpack:///./vendor/bundle/ruby/3.3.0/gems/store_connect-18.0.30/app/assets/javascripts/theme/customer-metadata.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","arr","getProto","slice","flat","push","indexOf","class2type","toString","hasOwn","fnToString","ObjectFunctionString","support","isFunction","isWindow","DOMEval","toType","version","rhtmlSuffix","jQuery","selector","context","fn","init","isArrayLike","obj","length","type","jquery","constructor","toArray","this","num","pushStack","elems","ret","merge","prevObject","each","callback","map","elem","apply","arguments","first","eq","last","even","grep","_elem","odd","len","j","end","sort","splice","extend","options","src","copy","copyIsArray","clone","target","deep","isPlainObject","Array","isArray","undefined","expando","Math","random","replace","isReady","error","msg","Error","noop","proto","Ctor","isEmptyObject","globalEval","code","doc","nonce","text","node","nodeType","textContent","documentElement","nodeValue","makeArray","results","inArray","isXMLDoc","namespace","namespaceURI","docElem","ownerDocument","test","nodeName","second","invert","matches","callbackExpect","arg","guid","iterator","split","_i","toLowerCase","item","window","document","pop","whitespace","rtrimCSS","preferredDoc","pushNative","Expr","outermostContext","sortInput","hasDuplicate","documentIsHTML","rbuggyQSA","dirruns","done","classCache","createCache","tokenCache","compilerCache","nonnativeSelectorCache","sortOrder","a","b","booleans","identifier","attributes","pseudos","rwhitespace","RegExp","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","contains","getElementsByTagName","getElementsByClassName","testContext","parentNode","scope","getAttribute","escapeSelector","setAttribute","tokenize","toSelector","join","querySelectorAll","qsaError","removeAttribute","select","keys","cache","cacheLength","shift","markFunction","assert","el","createElement","removeChild","createInputPseudo","createButtonPseudo","createDisabledPseudo","isDisabled","createPositionalPseudo","argument","matchIndexes","subWindow","webkitMatchesSelector","msMatchesSelector","defaultView","top","addEventListener","getById","appendChild","getElementsByName","disconnectedMatch","cssHas","querySelector","filter","attrId","getAttributeNode","tag","className","input","innerHTML","compare","compareDocumentPosition","sortDetached","expr","elements","matchesSelector","attr","attrHandle","val","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","concat","setMatchers","elementMatchers","bySet","byElement","superMatcher","outermost","matchedCount","setMatched","contextBackup","dirrunsUnique","matcherFromGroupMatchers","token","compiled","filters","unique","getText","isXML","selectors","hookCallback","some","hooks","setHookCallback","isObject","hasOwnProp","isObjectEmpty","getOwnPropertyNames","k","isUndefined","isNumber","isDate","Date","res","arrLen","valueOf","createUTC","format","locale","strict","createLocalOrUTC","utc","defaultParsingFlags","unusedTokens","unusedInput","overflow","charsLeftOver","nullInput","invalidEra","invalidMonth","invalidFormat","userInvalidated","iso","parsedDateParts","era","meridiem","rfc2822","weekdayMismatch","getParsingFlags","_pf","isValid","flags","parsedParts","isNowValid","_d","isNaN","getTime","invalidWeekday","_strict","bigHour","isFrozen","_isValid","createInvalid","NaN","fun","momentProperties","updateInProgress","copyConfig","to","from","prop","momentPropertiesLen","_isAMomentObject","_f","_l","_tzm","_isUTC","_offset","_locale","Moment","config","updateOffset","isMoment","warn","suppressDeprecationWarnings","console","deprecate","firstTime","deprecationHandler","argLen","stack","deprecations","deprecateSimple","Function","set","_config","_dayOfMonthOrdinalParseLenient","_dayOfMonthOrdinalParse","source","_ordinalParse","mergeConfigs","parentConfig","childConfig","Locale","defaultCalendar","sameDay","nextDay","nextWeek","lastDay","lastWeek","sameElse","calendar","mom","now","output","_calendar","zeroFill","number","targetLength","forceSign","absNumber","abs","zerosToFill","pow","max","substr","formattingTokens","localFormattingTokens","formatFunctions","formatTokenFunctions","addFormatToken","padded","ordinal","func","localeData","removeFormattingTokens","makeFormatFunction","array","formatMoment","expandFormat","invalidDate","replaceLongDateFormatTokens","longDateFormat","lastIndex","defaultLongDateFormat","LTS","LT","L","LL","LLL","LLLL","_longDateFormat","formatUpper","toUpperCase","tok","defaultInvalidDate","_invalidDate","defaultOrdinal","defaultDayOfMonthOrdinalParse","_ordinal","defaultRelativeTime","future","past","ss","mm","h","hh","dd","w","ww","M","MM","y","yy","relativeTime","withoutSuffix","string","isFuture","_relativeTime","pastFuture","aliases","D","dates","date","days","day","weekdays","weekday","E","isoweekdays","isoweekday","DDD","dayofyears","dayofyear","hours","hour","ms","milliseconds","millisecond","minutes","minute","months","month","Q","quarters","quarter","seconds","gg","weekyears","weekyear","GG","isoweekyears","isoweekyear","weeks","week","W","isoweeks","isoweek","years","year","normalizeUnits","units","normalizeObjectUnits","inputObject","normalizedProp","normalizedInput","priorities","isoWeekday","dayOfYear","weekYear","isoWeekYear","isoWeek","getPrioritizedUnits","unitsObj","u","unit","priority","regexes","match1","match2","match3","match4","match6","match1to2","match3to4","match5to6","match1to3","match1to4","match1to6","matchUnsigned","matchSigned","matchOffset","matchShortOffset","matchTimestamp","matchWord","match1to2NoLeadingZero","match1to2HasZero","addRegexToken","regex","strictRegex","isStrict","getParseRegexForToken","unescapeFormat","regexEscape","p1","p2","p3","p4","absFloor","ceil","floor","toInt","argumentForCoercion","coercedNumber","isFinite","addParseToken","tokenLen","addWeekParseToken","_w","addTimeToArrayFromToken","_a","isLeapYear","YEAR","MONTH","DATE","HOUR","MINUTE","SECOND","MILLISECOND","WEEK","WEEKDAY","daysInYear","parseTwoDigitYear","parseInt","getSetYear","makeGetSet","getIsLeapYear","keepTime","set$1","isUTC","getUTCMilliseconds","getMilliseconds","getUTCSeconds","getSeconds","getUTCMinutes","getMinutes","getUTCHours","getHours","getUTCDate","getDate","getUTCDay","getDay","getUTCMonth","getMonth","getUTCFullYear","getFullYear","setUTCMilliseconds","setMilliseconds","setUTCSeconds","setSeconds","setUTCMinutes","setMinutes","setUTCHours","setHours","setUTCDate","setDate","setUTCFullYear","setFullYear","stringGet","stringSet","prioritized","prioritizedLen","mod","x","daysInMonth","modMonth","monthsShort","monthsShortRegex","monthsRegex","monthsParse","defaultLocaleMonths","defaultLocaleMonthsShort","MONTHS_IN_FORMAT","defaultMonthsShortRegex","defaultMonthsRegex","localeMonths","_months","isFormat","localeMonthsShort","_monthsShort","handleStrictParse","monthName","ii","llc","toLocaleLowerCase","_monthsParse","_longMonthsParse","_shortMonthsParse","localeMonthsParse","_monthsParseExact","setMonth","min","setUTCMonth","getSetMonth","getDaysInMonth","computeMonthsParse","_monthsShortStrictRegex","_monthsShortRegex","_monthsStrictRegex","_monthsRegex","cmpLenRev","shortP","longP","shortPieces","longPieces","mixedPieces","createDate","createUTCDate","UTC","firstWeekOffset","dow","doy","fwd","dayOfYearFromWeeks","resYear","resDayOfYear","weekOfYear","resWeek","weekOffset","weeksInYear","weekOffsetNext","localeWeek","_week","defaultLocaleWeek","localeFirstDayOfWeek","localeFirstDayOfYear","getSetWeek","add","getSetISOWeek","parseWeekday","weekdaysParse","parseIsoWeekday","shiftWeekdays","ws","weekdaysMin","weekdaysShort","weekdaysMinRegex","weekdaysShortRegex","weekdaysRegex","defaultLocaleWeekdays","defaultLocaleWeekdaysShort","defaultLocaleWeekdaysMin","defaultWeekdaysRegex","defaultWeekdaysShortRegex","defaultWeekdaysMinRegex","localeWeekdays","_weekdays","localeWeekdaysShort","_weekdaysShort","localeWeekdaysMin","_weekdaysMin","handleStrictParse$1","weekdayName","_weekdaysParse","_shortWeekdaysParse","_minWeekdaysParse","localeWeekdaysParse","_weekdaysParseExact","_fullWeekdaysParse","getSetDayOfWeek","getSetLocaleDayOfWeek","getSetISODayOfWeek","computeWeekdaysParse","_weekdaysStrictRegex","_weekdaysRegex","_weekdaysShortStrictRegex","_weekdaysShortRegex","_weekdaysMinStrictRegex","_weekdaysMinRegex","minp","shortp","longp","minPieces","hFormat","kFormat","lowercase","matchMeridiem","_meridiemParse","localeIsPM","charAt","kInput","_isPm","isPM","_meridiem","pos","pos1","pos2","defaultLocaleMeridiemParse","getSetHour","localeMeridiem","isLower","globalLocale","baseConfig","dayOfMonthOrdinalParse","meridiemParse","locales","localeFamilies","commonPrefix","arr1","arr2","minl","normalizeLocale","chooseLocale","names","loadLocale","isLocaleNameSane","oldLocale","_abbr","getSetGlobalLocale","values","data","getLocale","defineLocale","abbr","parentLocale","forEach","updateLocale","tmpLocale","listLocales","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","extractFromRFC2822Strings","yearStr","monthStr","dayStr","hourStr","minuteStr","secondStr","untruncateYear","preprocessRFC2822","checkWeekday","weekdayStr","parsedInput","calculateOffset","obsOffset","militaryOffset","numOffset","hm","configFromRFC2822","parsedArray","configFromString","createFromInputFallback","defaults","currentDateArray","nowValue","_useUTC","configFromArray","currentDate","expectedWeekday","yearToUse","dayOfYearFromWeekInfo","_dayOfYear","_nextDay","weekdayOverflow","curWeek","createLocal","ISO_8601","RFC_2822","skipped","stringLength","totalParsedInputLength","meridiemFixWrap","erasConvertYear","isPm","meridiemHour","configFromStringAndArray","tempConfig","bestMoment","scoreToBeat","currentScore","validFormatFound","bestFormatIsValid","configfLen","score","configFromObject","dayOrDate","createFromConfig","prepareConfig","preparse","configFromInput","prototypeMin","other","prototypeMax","pickBy","moments","ordering","isDurationValid","unitHasDecimal","orderLen","parseFloat","isValid$1","createInvalid$1","createDuration","Duration","duration","_milliseconds","_days","_data","_bubble","isDuration","absRound","round","compareArrays","array1","array2","dontConvert","lengthDiff","diffs","offset","separator","utcOffset","sign","offsetFromString","chunkOffset","parts","cloneWithOffset","model","setTime","local","getDateOffset","getTimezoneOffset","getSetOffset","keepLocalTime","keepMinutes","localAdjust","_changeInProgress","addSubtract","getSetZone","setOffsetToUTC","setOffsetToLocal","subtract","setOffsetToParsedOffset","tZone","hasAlignedHourOffset","isDaylightSavingTime","isDaylightSavingTimeShifted","_isDSTShifted","isLocal","isUtcOffset","isUtc","aspNetRegex","isoRegex","diffRes","parseIso","momentsDifference","inp","positiveMomentsDifference","isAfter","isBefore","createAdder","direction","period","tmp","isAdding","invalid","isString","isMomentInput","isNumberOrStringArray","isMomentInputObject","objectTest","propertyTest","properties","propertyLen","arrayTest","dataTypeTest","isCalendarSpec","getCalendarFormat","myMoment","calendar$1","time","formats","sod","startOf","calendarFormat","localInput","endOf","isBetween","inclusivity","localFrom","localTo","isSame","inputMs","isSameOrAfter","isSameOrBefore","asFloat","that","zoneDelta","monthDiff","wholeMonthDiff","anchor","toISOString","keepOffset","toDate","inspect","prefix","datetime","suffix","zone","inputString","defaultFormatUtc","defaultFormat","postformat","humanize","fromNow","toNow","newLocaleData","MS_PER_SECOND","MS_PER_MINUTE","MS_PER_HOUR","MS_PER_400_YEARS","mod$1","dividend","divisor","localStartOfDate","utcStartOfDate","startOfDate","unix","toObject","toJSON","isValid$2","parsingFlags","invalidAt","creationData","localeEras","eras","_eras","since","until","localeErasParse","eraName","narrow","localeErasConvertYear","getEraName","getEraNarrow","getEraAbbr","getEraYear","erasNameRegex","computeErasParse","_erasNameRegex","_erasRegex","erasAbbrRegex","_erasAbbrRegex","erasNarrowRegex","_erasNarrowRegex","matchEraAbbr","matchEraName","matchEraNarrow","matchEraYearOrdinal","_eraYearOrdinalRegex","erasName","erasAbbr","erasNarrow","abbrPieces","namePieces","narrowPieces","addWeekYearFormatToken","getSetWeekYear","getSetWeekYearHelper","getSetISOWeekYear","getISOWeeksInYear","getISOWeeksInISOWeekYear","getWeeksInYear","weekInfo","getWeeksInWeekYear","weeksTarget","setWeekAll","dayOfYearData","getSetQuarter","erasParse","eraYearOrdinalParse","getSetDayOfMonth","getSetDayOfYear","getSetMinute","getSetMillisecond","getSetSecond","parseMs","getZoneAbbr","getZoneName","createUnix","createInZone","parseZone","preParsePostFormat","for","eraNarrow","eraAbbr","eraYear","isoWeeks","weeksInWeekYear","isoWeeksInYear","isoWeeksInISOWeekYear","isDST","zoneAbbr","zoneName","isDSTShifted","proto$1","get$1","index","field","setter","listMonthsImpl","out","listWeekdaysImpl","localeSorted","listMonths","listMonthsShort","listWeekdays","listWeekdaysShort","listWeekdaysMin","firstDayOfYear","firstDayOfWeek","langData","mathAbs","addSubtract$1","add$1","subtract$1","absCeil","bubble","monthsFromDays","monthsToDays","daysToMonths","as","makeAs","alias","asMilliseconds","asSeconds","asMinutes","asHours","asDays","asWeeks","asMonths","asQuarters","asYears","valueOf$1","clone$1","get$2","makeGetter","thresholds","substituteTimeAgo","relativeTime$1","posNegDuration","getSetRelativeTimeRounding","roundingFunction","getSetRelativeTimeThreshold","threshold","limit","argWithSuffix","argThresholds","withSuffix","th","assign","abs$1","toISOString$1","totalSign","ymSign","daysSign","hmsSign","total","toFixed","proto$2","toIsoString","relativeTimeRounding","relativeTimeThreshold","HTML5_FMT","DATETIME_LOCAL","DATETIME_LOCAL_SECONDS","DATETIME_LOCAL_MS","TIME","TIME_SECONDS","TIME_MS","factory","rsingleTag","rootjQuery","parseHTML","ready","Data","access","chainable","emptyGet","raw","bulk","_key","rnothtmlwhite","rquery","r20","rhash","rantiCache","rheaders","rnoContent","rprotocol","prefilters","transports","allTypes","originAnchor","addToPrefiltersOrTransports","structure","dataTypeExpression","dataType","dataTypes","unshift","inspectPrefiltersOrTransports","originalOptions","jqXHR","inspected","seekingTransport","_","prefilterOrFactory","dataTypeOrTransport","ajaxExtend","flatOptions","ajaxSettings","active","lastModified","etag","url","protocol","global","processData","async","contentType","accepts","html","json","contents","responseFields","converters","JSON","parse","parseXML","ajaxSetup","settings","ajaxPrefilter","ajaxTransport","ajax","transport","cacheURL","responseHeadersString","responseHeaders","timeoutTimer","urlAnchor","completed","fireGlobals","uncached","callbackContext","globalEventContext","event","deferred","Deferred","completeDeferred","Callbacks","statusCode","requestHeaders","requestHeadersNames","strAbort","readyState","getResponseHeader","getAllResponseHeaders","setRequestHeader","overrideMimeType","mimeType","always","status","abort","statusText","finalText","promise","method","crossDomain","host","param","traditional","trigger","hasContent","ifModified","headers","beforeSend","complete","success","fail","timeout","setTimeout","send","nativeStatusText","responses","isSuccess","response","modified","clearTimeout","ct","finalDataType","firstDataType","ajaxHandleResponses","conv2","current","conv","prev","dataFilter","throws","state","ajaxConvert","resolveWith","rejectWith","fireWith","getJSON","getScript","siblings","rneedsContext","rparentsprev","guaranteedUnique","children","sibling","cur","targets","closest","prevAll","addBack","parents","parentsUntil","nextAll","nextUntil","prevUntil","contentDocument","content","reverse","Identity","v","Thrower","ex","adoptValue","resolve","reject","noValue","then","tuples","pipe","fns","newDefer","tuple","returned","progress","notify","onFulfilled","onRejected","onProgress","maxDepth","depth","handler","special","mightThrow","TypeError","notifyWith","process","exceptionHook","getErrorHook","getStackHook","list","stateString","disable","lock","fire","when","singleValue","remaining","resolveContexts","resolveValues","primary","updateFunc","rmsPrefix","rdashAlpha","fcamelCase","_all","letter","rcheckableType","acceptData","dataPriv","rtypenamespace","returnTrue","returnFalse","on","types","one","origFn","off","leverageNative","isSetup","saved","isTrigger","delegateType","stopPropagation","stopImmediatePropagation","preventDefault","isImmediatePropagationStopped","handleObjIn","eventHandle","events","handleObj","handlers","namespaces","origType","elemData","handle","triggered","dispatch","bindType","delegateCount","setup","remove","mappedTypes","origCount","hasData","teardown","removeEvent","nativeEvent","handlerQueue","fix","delegateTarget","preDispatch","isPropagationStopped","currentTarget","rnamespace","postDispatch","sel","matchedHandlers","matchedSelectors","addProp","hook","Event","configurable","originalEvent","writable","load","noBubble","click","_default","beforeunload","returnValue","removeEventListener","props","isDefaultPrevented","defaultPrevented","relatedTarget","timeStamp","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","camelCase","rcssNum","rnumnonpx","rcustomProp","cssExpand","getStyles","swap","curCSS","adjustCSS","addGetHookIf","finalPropName","rdisplayswap","cssShow","position","visibility","display","cssNormalTransform","letterSpacing","fontWeight","setPositiveNumber","boxModelAdjustment","dimension","box","isBorderBox","styles","computedVal","extra","delta","marginDelta","css","getWidthOrHeight","boxSizingReliable","valueIsBorderBox","offsetProp","reliableTrDimensions","getClientRects","cssHooks","opacity","computed","cssNumber","animationIterationCount","aspectRatio","borderImageSlice","columnCount","flexGrow","flexShrink","gridArea","gridColumn","gridColumnEnd","gridColumnStart","gridRow","gridRowEnd","gridRowStart","lineHeight","order","orphans","scale","widows","zIndex","zoom","fillOpacity","floodOpacity","stopOpacity","strokeMiterlimit","strokeOpacity","cssProps","style","origName","isCustomProp","clearCloneStyle","setProperty","getBoundingClientRect","width","scrollboxSizeBuggy","scrollboxSize","marginLeft","reliableMarginLeft","left","margin","padding","border","expand","expanded","owner","isAttached","composed","getRootNode","rtagName","rscriptType","wrapMap","getAll","setGlobalEval","buildFragment","dataUser","rnoInnerhtml","rchecked","rcleanScript","manipulationTarget","disableScript","restoreScript","cloneCopyEvent","dest","udataOld","udataCur","fixInput","defaultValue","domManip","collection","ignored","fragment","scripts","hasScripts","iNoClone","valueIsFunction","checkClone","self","_evalUrl","noModule","keepData","nodes","cleanData","htmlPrefilter","dataAndEvents","deepDataAndEvents","srcElements","destElements","cloneNode","inPage","noCloneChecked","detach","append","prepend","insertBefore","before","after","replaceWith","replaceChild","appendTo","prependTo","insertAfter","replaceAll","original","insert","flag","createOptions","firing","memory","fired","locked","queue","firingIndex","once","stopOnFalse","dequeue","startLength","_queueHooks","stop","clearQueue","count","defer","isHiddenWithinTree","showHide","fxNow","inProgress","rfxtypes","rrun","schedule","hidden","requestAnimationFrame","fx","interval","tick","createFxNow","genFx","includeWidth","attrs","height","createTween","animation","tween","Animation","tweeners","stopped","currentTime","startTime","percent","tweens","run","opts","specialEasing","easing","originalProperties","Tween","gotoEnd","propFilter","timer","anim","tweener","toggle","oldfire","propTween","restoreDisplay","isBox","dataShow","unqueued","overflowX","overflowY","prefilter","speed","opt","speeds","old","fadeTo","show","animate","optall","doAnimation","finish","stopQueue","timers","cssFn","slideDown","slideUp","slideToggle","fadeIn","fadeOut","fadeToggle","slow","fast","pnum","computeStyleTests","div","container","cssText","divStyle","getComputedStyle","pixelPositionVal","reliableMarginLeftVal","roundPixelMeasures","right","pixelBoxStylesVal","boxSizingReliableVal","scrollboxSizeVal","offsetWidth","measure","reliableTrDimensionsVal","backgroundClip","pixelBoxStyles","pixelPosition","table","tr","trChild","trStyle","borderTopWidth","borderBottomWidth","offsetHeight","checkOn","optSelected","radioValue","Rails","linkClickSelector","buttonClickSelector","exclude","inputChangeSelector","formSubmitSelector","formInputClickSelector","formDisableSelector","formEnableSelector","fileInputSelector","linkDisableSelector","buttonDisableSelector","loadCSPNonce","ref","cspNonce","Element","mozMatchesSelector","oMatchesSelector","element","getData","setData","$","csrfParam","csrfToken","meta","CSRFProtection","xhr","refreshCSRFTokens","CustomEvent","params","evt","createEvent","initCustomEvent","dispatchEvent","stopEverything","delegate","eventType","AcceptHeaders","createXHR","prepareOptions","processResponse","script","responseText","XMLHttpRequest","OPENED","accept","open","withCredentials","onreadystatechange","DONE","parser","head","DOMParser","parseFromString","isCrossDomain","serializeElement","additionalParam","inputs","option","encodeURIComponent","formElements","form","allowAction","handleConfirm","confirm","message","answer","disableFormElement","disableFormElements","disableLinkElement","enableFormElement","enableFormElements","enableLinkElement","isXhrRedirect","handleDisabledElement","enableElement","disableElement","replacement","originalText","handleMethod","formContent","link","action","body","isRemote","handleRemote","enctype","FormData","formSubmitButtonClick","formNoValidate","preventInsignificantClick","insignificantMetaClick","rails","_rails_loaded","getPrototypeOf","preservedScriptAttributes","bup","winnow","qualifier","is","readyList","catch","readyException","readyWait","wait","doScroll","uid","valueParts","adjusted","maxIterations","currentValue","initial","initialInUnit","thead","col","td","tbody","tfoot","colgroup","caption","optgroup","createDocumentFragment","refElements","rhtml","selection","wrap","attached","createTextNode","opener","rboxStyle","minWidth","maxWidth","getPropertyValue","conditionFn","hookFn","cssPrefixes","emptyStyle","vendorProps","final","capName","vendorPropName","rfocusable","rclickable","removeProp","propFix","nType","propHooks","tabindex","parserErrorElem","rfocusMorph","stopPropagationCallback","onlyHandlers","bubbleType","ontype","lastElement","eventPath","parentWindow","triggerHandler","rbracket","rCRLF","rsubmitterTypes","rsubmittable","buildParams","valueOrFunction","serialize","serializeArray","keepScripts","createHTMLDocument","implementation","parsed","rcssescape","fcssescape","ch","asCodePoint","charCodeAt","truncate","rerrorNames","asyncError","rbrace","rmultiDash","dataAttr","removeData","_removeData","delay","defaultDisplayMap","getDefaultDisplay","hide","eased","step","scrollTop","scrollLeft","linear","swing","cos","PI","boolHook","removeAttr","attrHooks","attrNames","lowercaseName","stripAndCollapse","getClass","classesToArray","addClass","classNames","curValue","finalValue","removeClass","toggleClass","stateVal","isValidValue","hasClass","rreturn","valHooks","optionSet","wrapAll","firstElementChild","wrapInner","htmlIsFunction","unwrap","visible","xhrSuccessStatus","xhrSupported","cors","errorCallback","username","xhrFields","onload","onerror","onabort","ontimeout","responseType","binary","scriptAttrs","charset","scriptCharset","oldCallbacks","rjsonp","jsonp","jsonpCallback","originalSettings","callbackName","overwritten","responseContainer","jsonProp","animated","setOffset","curPosition","curLeft","curCSSTop","curTop","curOffset","curCSSLeft","curElem","using","rect","win","pageYOffset","pageXOffset","offsetParent","parentOffset","scrollTo","Height","Width","defaultExtra","funcName","rtrim","proxy","holdReady","hold","parseJSON","isNumeric","trim","unbind","undelegate","hover","fnOver","fnOut","_jQuery","_$","noConflict","noGlobal","startLoader","contextual","loader","getLoader","classList","activate","spinner","svg","createElementNS","circle","createSpinner","destination","createLoader","stopLoader","storePath","storePathContent","BREAKPOINTS","mediumAndUp","returnBreakpoint","largeAndUp","breakpoint","webpackPolyfill","paths","moment","symbolMap","numberMap","pluralForm","plurals","pluralize","f","str","weekdaysParseExact","suffixes","plural","word","forms","relativeTimeWithPlural","standalone","lastDigit","last2Digits","monthsParseExact","relativeTimeWithMutation","mutation","specialMutationForYears","lastNumber","softMutation","mutationTable","substring","monthsStrictRegex","monthsShortStrictRegex","fullWeekdaysParse","shortWeekdaysParse","minWeekdaysParse","longMonthsParse","shortMonthsParse","processRelativeTime","translate","ll","lll","llll","monthsNominativeEl","monthsGenitiveEl","momentToFormat","_monthsGenitiveEl","_monthsNominativeEl","calendarEl","_calendarEl","monthsShortDot","numbersPast","numbersFuture","verbalNumber","monthsShortWithDots","monthsShortWithoutDots","weekEndings","eraYearOrdinalRegex","$0","$1","$2","isUpper","ezafeNumSuffix","includes","processFutureTime","eifelerRegelAppliesToNumber","processPastTime","translateSeconds","translateSingular","relativeTimeWithSingular","relativeSeconds","translator","words","correctGrammaticalCase","wordKey","relativeTimeMr","monthsNominative","monthsSubjective","numbersNouns","translateFuture","translatePast","numberNoun","numberAsNoun","hundred","ten","weekdaysCaseReplace","nominative","accusative","genitive","processHoursFunction","activeDropdown","dropdown","menu","label","close","closeIfClickOutsideMenu","hasAttribute","innerText","dataset","default","triggers","dateInstance","toJSDate","parseDateTime","getDateZeroTime","Number","shortMonth","longMonth","entries","formatPatterns","group","g","shortMonths","longMonths","convertArray","MONTH_JS","toLocaleString","toDateString","getWeek","timestamp","formatTokens","DateTime","__extends","setPrototypeOf","__proto__","__spreadArrays","preventClick","bindEvents","scrollToDate","startDate","endDate","elementEnd","numberOfMonths","calendars","onClick","ui","litepicker","onMouseEnter","onMouseLeave","autoRefresh","HTMLElement","onInput","parentEl","inlineMode","HTMLInputElement","updateInput","render","singleMode","delimiter","isSamePicker","shouldShown","shouldResetDatePicked","datePicked","shouldSwapDatePicked","shouldCheckLockDays","disallowLockDaysInRange","shadowRoot","composedPath","isShowning","emit","dayItem","isLocked","rangeIsLocked","autoApply","setDateRange","buttonPreviousMonth","switchingMonths","splitView","monthItem","findNestedMonthItem","gotoDate","buttonNextMonth","buttonCancel","buttonApply","showTooltip","containerTooltip","hideTooltip","shouldAllowMouseEnter","shouldAllowRepick","allowRepick","isDayItem","triggerElement","renderDay","isInRange","isEndDate","isFlipped","tooltipNumber","pluralSelector","tooltipText","navigator","userAgent","parseInput","startsWith","getStartDate","getEndDate","Calendar","Litepicker","dateIsLocked","lockDays","lockDaysInclusivity","lockDaysFilter","_lastElementInsertedByStyleLoader","disableLitepickerStyles","singleton","locals","containerMain","containerMonths","numberOfColumns","columns2","columns3","columns4","showWeekNumbers","renderMonth","resetButton","buttonText","clearSelection","monthItemHeader","footerHTML","renderFooter","renderTooltip","plugins","dropdowns","monthItemName","minDate","maxDate","monthItemYear","minYear","maxYear","previousMonth","nextMonth","noPreviousMonth","noNextMonth","monthItemWeekdaysRow","T","firstDay","title","containerDays","S","calcSkipDays","renderWeekNumber","I","P","isToday","isStartDate","minDays","maxDays","selectForward","selectBackward","highlightedDays","isHighlighted","containerFooter","previewDateRange","cancel","weekNumber","LPCore","__assign","mobileFriendly","lockDaysFormat","highlightedDaysFormat","tooltipPluralSelector","Intl","PluralRules","findPosition","scrollX","scrollY","bottom","innerHeight","innerWidth","EventEmitter","Reflect","ownKeys","getOwnPropertySymbols","_events","_eventsCount","_maxListeners","defaultMaxListeners","newListener","listener","warned","emitter","removeListener","wrapFn","RangeError","setMaxListeners","getMaxListeners","addListener","prependListener","prependOnceListener","removeAllListeners","listeners","rawListeners","listenerCount","eventNames","btoa","unescape","stringify","sources","sourceRoot","Boolean","all","atob","HTMLIFrameElement","media","sourceMap","refs","nc","styleSheet","setStartDate","setEndDate","setLockDays","setHighlightedDays","setOptions","destroy","sensitivity","handleFocus","webpackContext","req","webpackContextResolve","hasMoment","hasEventListeners","sto","addEvent","capture","attachEvent","detachEvent","cn","isWeekend","setToStartOfDay","compareDates","overwrite","hasProp","fireEvent","eventName","ev","initEvent","createEventObject","adjustCalendar","bound","ariaLabel","reposition","defaultDate","setDefaultDate","firstWeekOfYearMinDays","formatStrict","yearRange","showWeekNumber","pickWholeWeek","minMonth","maxMonth","startRange","endRange","isRTL","yearSuffix","showMonthAfterYear","showDaysInNextAndPreviousMonths","enableSelectionDaysInNextAndPreviousMonths","mainCalendar","blurFieldOnSelect","i18n","theme","onSelect","onOpen","onClose","onDraw","keyboardInput","renderDayName","ariaSelected","isEmpty","isSelected","hasEvent","isStartRange","isEndRange","yearDay","weekDay","dayInFirstWeek","dayShift","daysPerWeek","prevWeekDay","jan4th","msPerDay","daysBetween","renderWeek","renderRow","isRowSelected","renderBody","rows","renderHead","renderTitle","instance","refYear","randId","monthHtml","yearHtml","_o","isMinYear","isMaxYear","renderTable","Pikaday","_onMouseDown","_v","srcElement","prevMonth","_c","_onChange","gotoMonth","gotoYear","_onKeyChange","isVisible","adjustDate","_parseFieldValue","_onInputChange","firedBy","_onInputFocus","_onInputClick","_onInputBlur","pEl","_b","_onClick","onchange","defDate","disableWeekends","disableDayFn","nom","setMinDate","setMaxDate","fallback","getMoment","setMoment","preventOnSelect","draw","clear","newCalendar","firstVisibleDate","lastVisibleDate","visibleDate","adjustCalendars","newDay","difference","gotoToday","setStartRange","setEndRange","force","_y","_m","adjustPosition","viewportWidth","viewportHeight","clientRect","leftAligned","bottomAligned","clientWidth","clientHeight","offsetLeft","offsetTop","row","yearOfPreviousMonth","yearOfNextMonth","daysInPreviousMonth","cells","isWeekSelected","dayNumber","monthNumber","yearNumber","dayConfig","handleAddAttendee","addBtn","handleCancelAdd","handleEditAttendee","attendee","attendeeForm","attendeeCard","card","handleCancelEdit","listenForRadioChange","radios","fields","addAttendeeBtn","addForm","cancelAddBtn","btn","WARNING_TIMESPAN","expiry","countdown","timeRemaining","getTimespan","expire","secs","scExpired","cart","expiryDate","setInterval","dateStyle","timeStyle","formatter","DateTimeFormat","resolvedOptions","outputString","timeZone","localize","StoreConnectUI","Fulfilment","prevSubset","choose","choice","subset","checkValidity","enableSubmitButton","ionRangeSlider","onFinish","jsRangeMin","parentElement","jsRangeMax","setupPriceSlider","plugin_count","is_old_ie","search","F","searchElement","fromIndex","O","Infinity","IonRangeSlider","VERSION","current_plugin","calc_count","update_tm","old_from","old_to","old_min_interval","raf_id","dragging","force_redraw","no_diapason","has_tab_index","is_key","is_update","is_start","is_finish","is_active","is_resize","is_click","$cache","cont","rs","single","bar","line","s_single","s_from","s_to","shad_single","shad_from","shad_to","edge","grid","grid_labels","coords","x_gap","x_pointer","w_rs","w_rs_old","w_handle","p_gap","p_gap_left","p_gap_right","p_step","p_pointer","p_handle","p_single_fake","p_single_real","p_from_fake","p_from_real","p_to_fake","p_to_real","p_bar_x","p_bar_w","grid_gap","big_num","big","big_w","big_p","big_x","labels","w_min","w_max","w_from","w_to","w_single","p_min","p_max","p_from_left","p_to_left","p_single_left","config_from_data","$inp","skin","min_interval","max_interval","drag_interval","p_values","from_fixed","from_min","from_max","from_shadow","to_fixed","to_min","to_max","to_shadow","prettify_enabled","prettify_separator","prettify","force_edges","keyboard","grid_margin","grid_num","grid_snap","hide_min_max","hide_from_to","postfix","max_postfix","decorate_both","values_separator","input_values_separator","block","extra_classes","onStart","onChange","onUpdate","update_check","validate","slider","from_percent","from_value","to_percent","to_value","convertToPercent","toggleInput","setMinMax","calc","callOnUpdate","callOnStart","updateScene","container_html","setTopHandler","appendGrid","appendDisableMask","removeDisableMask","cursor","changeLevel","cancelAnimationFrame","pointerMove","pointerUp","pointerClick","pointerFocus","pointerDown","$handle","restoreOriginalMinInterval","callOnFinish","setTempMinInterval","calcPointerPercent","moveByKey","decorate","min_pretty","_prettify","max_pretty","outerWidth","update","calcHandlePercent","handle_x","getHandleX","chooseHandle","checkDiapason","convertToFakePercent","convertToRealPercent","calcWithStep","checkMinInterval","checkMaxInterval","real_x","full","half","new_from","new_to","convertToValue","from_pretty","to_pretty","calcMinMax","calcLabels","fake","real","checkEdges","drawHandles","drawLabels","calcGridMargin","calcGridLabels","drawShadow","writeToInput","callOnChange","text_single","text_from","text_to","values_num","single_left","to_left","is_from_min","is_from_max","is_to_min","is_to_max","no_min","diapason","one_percent","min_length","max_length","min_decimals","max_decimals","avg_decimals","rounded","p_current","p_next","p_num","vl","decorated","updateFrom","updateTo","updateResult","z","local_small_max","small_p","small_max","cacheGridLabels","$label","calcGridCollision","POSITIVE_INFINITY","next_i","lastTime","vendors","currTime","timeToCall","__webpack_amd_options__","ProductComparison","product","productId","updateSelectedProducts","payload","category","ids","exportName","VENDOR_PREFIXES","TEST_ELEMENT","TYPE_FUNCTION","setTimeoutContext","bindFn","invokeArrayArg","deprecationMessage","log","nextKey","inherit","child","childP","baseP","_super","boolOrFn","ifUndefined","val1","val2","addEventListeners","splitStr","removeEventListeners","hasParent","inStr","findByKey","uniqueArray","prefixed","camelProp","_uniqueId","getWindowForElement","SUPPORT_TOUCH","SUPPORT_POINTER_EVENTS","SUPPORT_ONLY_TOUCH","INPUT_TYPE_TOUCH","INPUT_TYPE_MOUSE","COMPUTE_INTERVAL","INPUT_START","INPUT_END","INPUT_CANCEL","DIRECTION_NONE","DIRECTION_LEFT","DIRECTION_RIGHT","DIRECTION_UP","DIRECTION_DOWN","DIRECTION_HORIZONTAL","DIRECTION_VERTICAL","DIRECTION_ALL","PROPS_XY","PROPS_CLIENT_XY","Input","manager","inputTarget","domHandler","enable","inputHandler","pointersLen","pointers","changedPointersLen","changedPointers","isFirst","isFinal","session","pointersLength","firstInput","simpleCloneInputData","firstMultiple","offsetCenter","center","getCenter","deltaTime","angle","getAngle","distance","getDistance","offsetDelta","prevDelta","prevInput","deltaX","deltaY","computeDeltaXY","offsetDirection","getDirection","overallVelocity","getVelocity","overallVelocityX","overallVelocityY","rotation","getRotation","maxPointers","velocity","velocityX","velocityY","lastInterval","computeIntervalInputData","srcEvent","computeInputData","recognize","sqrt","atan2","evEl","evTarget","evWin","MOUSE_INPUT_MAP","mousedown","mousemove","mouseup","MOUSE_ELEMENT_EVENTS","MOUSE_WINDOW_EVENTS","MouseInput","pressed","POINTER_INPUT_MAP","pointerdown","pointermove","pointerup","pointercancel","pointerout","IE10_POINTER_TYPE_ENUM","POINTER_ELEMENT_EVENTS","POINTER_WINDOW_EVENTS","PointerEventInput","store","pointerEvents","MSPointerEvent","PointerEvent","removePointer","eventTypeNormalized","isTouch","storeIndex","SINGLE_TOUCH_INPUT_MAP","touchstart","touchmove","touchend","touchcancel","SingleTouchInput","started","normalizeSingleTouches","changed","TOUCH_INPUT_MAP","TOUCH_TARGET_EVENTS","TouchInput","targetIds","getTouches","allTouches","changedTargetTouches","touch","DEDUP_TIMEOUT","TouchMouseInput","mouse","primaryTouch","lastTouches","recordTouches","eventData","setLastTouch","lastTouch","lts","isSyntheticEvent","dx","dy","inputEvent","inputData","isMouse","sourceCapabilities","firesTouchEvents","PREFIXED_TOUCH_ACTION","NATIVE_TOUCH_ACTION","TOUCH_ACTION_COMPUTE","TOUCH_ACTION_AUTO","TOUCH_ACTION_MANIPULATION","TOUCH_ACTION_NONE","TOUCH_ACTION_PAN_X","TOUCH_ACTION_PAN_Y","TOUCH_ACTION_MAP","touchMap","cssSupports","CSS","supports","getTouchActionProps","TouchAction","compute","actions","touchAction","recognizers","recognizer","getTouchAction","hasPanX","hasPanY","cleanTouchActions","preventDefaults","prevented","hasNone","isTapPointer","isTapMovement","isTapTouchTime","preventSrc","STATE_POSSIBLE","STATE_FAILED","Recognizer","simultaneous","requireFail","stateStr","directionStr","getRecognizerByNameIfManager","otherRecognizer","AttrRecognizer","PanRecognizer","pX","pY","PinchRecognizer","PressRecognizer","_timer","_input","RotateRecognizer","SwipeRecognizer","TapRecognizer","pTime","pCenter","Hammer","preset","Manager","recognizeWith","dropRecognizeWith","requireFailure","dropRequireFailure","hasRequireFailures","canRecognizeWith","additionalEvent","tryEmit","canEmit","inputDataClone","attrTest","optionPointers","isRecognized","directionTest","hasMoved","inOut","validPointers","validMovement","validTime","taps","posThreshold","validTouchTime","failTimeout","validInterval","validMultiTap","tapCount","domEvents","inputClass","userSelect","touchSelect","touchCallout","contentZooming","userDrag","tapHighlightColor","oldCssProps","toggleCssProps","curRecognizer","existing","gestureEvent","gesture","triggerDomEvent","INPUT_MOVE","STATE_BEGAN","STATE_CHANGED","STATE_ENDED","STATE_RECOGNIZED","STATE_CANCELLED","Tap","Pan","Swipe","Pinch","Rotate","Press","displayLoadMoreButton","loadMoreButton","showMoreTotalPages","showMoreNextPage","gridElement","nextPageNumber","nextPageUrl","URL","pageParam","showMoreParam","searchParams","fetch","ok","htmlContent","insertAdjacentHTML","loadMoreProducts","onClickLoadMoreProducts","linkElement","searchNavSource","linkHref","origin","setupNavLink","Sort","toggleActiveState","change","closeCartIfClicked","Cart","tease","StoreConnect","PricePicker","picker","prevPicker","closeIfClickElsewhere","manualEntry","icons","icon","formatDate","modal","RANGE","MIN_DEFAULT","MANUAL_OPTION","activePicker","initQtyPickers","pickers","resetQtyPicker","initQtyPicker","initBtn","getQtyPickerTrigger","inputElem","getQtyPickerInput","labelElem","getQtyPickerLabel","updateBtn","getQtyPickerUpdateButton","customQtyLabels","getQtyPickerLabels","range","getQtyPickerRange","hideQtyPickerOptions","showQtyPickerOptions","handleOutsideClick","listenForOutsideClick","createRangeOptions","createManualEntryOption","optionListItem","optionBtn","menuElem","getQtyPickerMenu","setDisplayHidden","setDisplayVisible","quantity","customLabel","createOption","hint","listItemElem","optionButton","alignItems","gap","optionHintElem","getMin","getMax","createRange","clickedPicker","selectedItem","getQtyPickers","BookingSelector","createPicker","highlightTimeoutId","lastMonthSelected","autoJump","handleLocationSelection","locations","srtDate","locationId","storeVariables","filterAvailabilities","setHighlightDays","handleTimeslotSelection","locationInput","startDateInput","endDateInput","timeslot","buyNow","addToCart","qtyPickers","available","pckrDate","highlightDays","preload","availabilitiesUrl","bookingAvailabilitiesUrl","getLocationId","fetchAvailabilities","returnEndPoint","highlights","slots","availabilitiesPartial","bookingAvailabilitiesPartial","fetchError","bookingFetchError","endpoint","partial","firstJumpLink","handleClosestLinks","storeDates","URLSearchParams","delete","history","pushState","retrieveVariable","storedLocationId","storedLocation","dateTime","returnRangeAsString","handleDatesSelection","today","disablePastDates","setCalendarWidth","calendarIdx","_calendarIdx","handleMonthChange","CustomFormAnswerSelector","submitForm","answerId","tagName","DeliveryOptionsSelector","pickerNode","dayOptions","lineItemId","availableDeliveryDates","deliveryDateNode","deliveryTimeSlotsNode","submitButton","selectedDate","selectedDay","renderDeliveryOptions","hasSelection","isByDate","isByDay","queryParam","fetchDeliveryOptions","finally","validateForm","every","selectDate","initDatePicker","initDayPicker","Filters","initPtsToggles","requestSubmit","changeToggle","quantityPickers","pointsToggles","menuId","isRoot","prevNav","rootNav","navTrigger","nav","navId","prevNavId","showPrivacySettings","closePrivacySettings","enableOrDisableAllCookies","groupId","cookies","cookieLabels","disableLabel","enabledLabel","enableLabel","disabledLabel","cookie","enableOrDisableCookie","parentInput","parentLabel","PrivacySettings","banner","customTrigger","ProductGallery","hammer","isZoomed","drag","styleProps","exitZoom","toggleZoom","imageStyleProps","enterZoom","imageUrl","closeButton","viewportProps","currentThumbnail","mainImage","mainVideo","thumbnails","thumbnail","alt","transferImageAttributes","thumb","zoomUrl","clearButton","selectionPrompt","configureOptions","variantData","targetType","selectedOptions","getSelectedOptions","products","selectedOption","enabledValuesByType","availableType","Set","enabledType","optElem","selectedProduct","checkForSelectedProduct","path","pathname","pushVariantPathToHistory","variantOptions","selectElem","clearPath","clearSelectedOptions","_event","raf","webkitRequestAnimationFrame","mozRequestAnimationFrame","msRequestAnimationFrame","cb","caf","mozCancelAnimationFrame","checkStorageValue","setLocalStorage","storage","setItem","getBody","docElement","setFakeBody","docOverflow","background","resetFakeBody","addCSSRule","sheet","rules","insertRule","addRule","getCssRulesLength","cssRules","classListSupport","hasAttr","getAttr","isNodeList","setAttrs","removeAttrs","attrLength","arrayFromNodeList","nl","hideElement","forceHide","showElement","whichProperty","Props","getEndProperty","propIn","propOut","endProp","supportsPassive","passiveOption","passive","addEvents","preventScrolling","removeEvents","Events","topics","tns","axis","items","gutter","edgePadding","fixedWidth","autoWidth","viewportMax","slideBy","controls","controlsPosition","controlsText","controlsContainer","prevButton","nextButton","navPosition","navContainer","navAsThumbnails","arrowKeys","autoplay","autoplayPosition","autoplayTimeout","autoplayDirection","autoplayText","autoplayHoverPause","autoplayButton","autoplayButtonOutput","autoplayResetOnVisibility","animateIn","animateOut","animateNormal","animateDelay","loop","rewind","autoHeight","responsive","lazyload","lazyloadSelector","mouseDrag","swipeAngle","nested","preventActionWhenRunning","preventScrollOnTouch","freezable","onInit","useLocalStorage","KEYS","ENTER","SPACE","LEFT","RIGHT","tnsStorage","localStorageAccess","browserInfo","localStorage","getItem","removeItem","CALC","vals","PERCENTAGELAYOUT","supported","wrapper","outer","percentageLayout","CSSMQ","matchMedia","msMatchMedia","rule","currentStyle","mediaquerySupport","TRANSFORM","HAS3DTRANSFORMS","tf","has3d","cssTF","has3DTransforms","TRANSITIONDURATION","TRANSITIONDELAY","ANIMATIONDURATION","ANIMATIONDELAY","TRANSITIONEND","ANIMATIONEND","supportConsoleWarn","tnsList","optionsElements","carousel","responsiveTem","updateOptions","middleWrapper","breakpointZone","horizontal","outerWrapper","innerWrapper","containerParent","containerHTML","outerHTML","slideItems","slideCount","windowWidth","getWindowWidth","isOn","setBreakpointZone","slidePositions","imgsComplete","liveregionCurrent","itemsMax","getOption","viewport","getViewportWidth","fixedWidthViewportWidth","slideItemsOut","cloneCount","bp","tem","getItemsMax","hasOption","slideCountNew","hasRightDeadZone","rightBoundary","getRightBoundary","updateIndexBeforeTransform","transformAttr","transformPrefix","transformPostfix","getIndexMax","getStartIndex","indexCached","indexMin","getCurrentSlide","indexMax","moveDirectionExpected","running","newContainerClasses","slideId","tnsId","getSlideId","freeze","getFreeze","frozen","controlsEvents","onControlsClick","getEvent","keyIndex","navEvents","onTransitionEnd","getTarget","navIndex","navClicked","targetIndexBase","pages","goTo","navCurrentIndex","animating","stopAutoplay","curElement","setFocus","navItems","hoverEvents","stopAutoplayTimer","autoplayHoverPaused","setAutoplayTimer","visibilityEvent","autoplayVisibilityPaused","docmentKeydownEvent","touchEvents","onPanStart","onPanMove","onPanEnd","dragEvents","hasControls","hasNav","hasAutoplay","hasTouch","hasMouseDrag","slideActiveClass","slideClonedClass","imgCompleteClass","imgEvents","imgLoaded","img","imgCompleted","preventScroll","prevIsButton","nextIsButton","controlsContainerHTML","prevButtonHTML","nextButtonHTML","navContainerHTML","getPages","pagesCached","getCurrentNavIndex","navCurrentIndexCached","navActiveClass","navStr","navStrCurrent","autoplayTimer","autoplayUserPaused","autoplayButtonHTML","autoplayHtmlStrings","translateInit","rafIndex","initPosition","lastPosition","panStart","getDist","resetVariblesWhenDisable","fragmentBefore","fragmentAfter","cloneFirst","cloneLast","initStructure","fontSize","slide","getSlideMarginLeft","getTransitionDurationStyle","getInnerWrapperStyles","getContainerWidth","getSlideWidthStyle","getSlideGutterStyle","getAnimationDurationStyle","middleWrapperStr","innerWrapperStr","containerStr","slideStr","itemsBP","fixedWidthBP","speedBP","edgePaddingBP","autoHeightBP","gutterBP","initSheet","initSliderTransform","updateIndex","leftEdge","rightEdge","transformCore","positionTick","resetDuration","doContainerTransform","getContainerTransformValue","moveElement","updateContentWrapperHeight","eve","animateSlide","getInfo","info","play","startAutoplay","pause","updateSliderHeight","updateInnerWrapperHeight","refresh","ownerNode","onResize","toggleAutoplay","clearInterval","htmlList","prevEl","previousElementSibling","nextElementSibling","rebuild","condition","ind","getAbsIndex","absIndex","getInsertPosition","getClientWidth","edgePaddingTem","gutterTem","fixedWidthTem","speedTem","gutterTemUnit","itemsTem","getCSSPrefix","imgs","imgsLoadedCheck","getImageArray","initSliderTransformStyleCheck","doContainerTransformSilent","initTools","initEvents","stylesApplicationCheck","initSliderTransformCore","setSlidePositions","updateSlideStatus","getLiveRegionStr","txt","navHtml","hiddenStr","updateNavVisibility","isButton","updateControlsStatus","disableUI","resizeTasks","doAutoHeight","doLazyLoad","disableSlider","freezeSlider","additionalUpdates","bpChanged","breakpointZoneTem","needContainerTransform","indChanged","itemsChanged","disableTem","freezeTem","arrowKeysTem","controlsTem","navTem","touchTem","mouseDragTem","autoplayTem","autoplayHoverPauseTem","autoplayResetOnVisibilityTem","indexTem","autoHeightTem","controlsTextTem","centerTem","autoplayTextTem","classN","enableUI","enableSlider","unfreezeSlider","updateLiveRegion","updateGallerySlidePositions","deleteRule","removeRule","removeCSSRule","vp","getVisibleSlideRange","rangestart","rangeend","point","cell","srcset","imgSelector","navPrev","navCurrent","updateNavStatus","getMaxSlideHeight","slideStart","slideRange","heights","maxHeight","wp","attr2","getLowerCaseNodeName","isAriaDisabled","disEnableElement","prevDisabled","nextDisabled","disablePrev","disableNext","getCenterGap","denominator","classOut","classIn","isOut","sliderMoved","strTrans","propertyName","targetIndex","indexGap","factor","passEventObject","targetIn","updateAutoplayButton","isTouchEvent","preventDefaultBehavior","getMoveDirectionExpected","panUpdate","dist","indexMoved","moved","rough","displayIndex","DEFAULT_PARAMS","slideshows","slideshowEl","slideshow","resizeId","selectedCategories","selectedBrands","removeFromArray","brand","updateSelectedState","brandId","categoryIds","sets","tabSets","setId","tabsInSet","triggersInSet","activeTabInSet","tab","getActiveTabElem","tabs","tabId","deactivateAllTabs","lastTabInSet","setClassForLastTab","tabInSet","getTabElem","triggerInSet","getTriggerElem","onChangeCallback","qtyInputs","addOrUpdateProductOption","triggerChangeEvent","bundleId","removeBtns","featureOptions","addToBundleBtns","enableAddToBundleButton","returnSelectedVariantOptions","selectorNode","masterId","selectedVariantIds","sessionStorage","selectedIds","selectSelectedIds","restoreSessionSelections","storeSessionSelections","optionInput","selectInput","variantId","selectedVariant","clearSessionSelections","initVariants","updateFeatureOptionCard","selectedInput","isOptional","optional","featureId","featureOptionCard","prevSelectedProductId","chooseFeatureOption","removeBtn","featureOption","updateQuantity","chooseProductVariant","qty","isSingleOption","onSuccessCallback","optionId","generatePayload","headline","subheadline","featureHeadline","featureSubheadline","featureImg","productCard","optionCard","subHeadline","subHeadlineText","returnHeadline","edit","price","priceEl","clearOption","generateVariantPayload","productOptionSfid","allowedOptions","variantAllowedOptions","optionType","groupType","optionsInGroup","disableOrEnableVariantOptions","variants","requiredSelections","returnSelectedVariantAsString","leadProductImage","variant","updateCart","timezone","language","screen_resolution","screen","devicePixelRatio"],"mappings":"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","file":"js/theme-ec86d5b7c0341ce02756.js","sourcesContent":[" \t// The module cache\n \tvar installedModules = {};\n\n \t// The require function\n \tfunction __webpack_require__(moduleId) {\n\n \t\t// Check if module is in cache\n \t\tif(installedModules[moduleId]) {\n \t\t\treturn installedModules[moduleId].exports;\n \t\t}\n \t\t// Create a new module (and put it into the cache)\n \t\tvar module = installedModules[moduleId] = {\n \t\t\ti: moduleId,\n \t\t\tl: false,\n \t\t\texports: {}\n \t\t};\n\n \t\t// Execute the module function\n \t\tmodules[moduleId].call(module.exports, module, module.exports, __webpack_require__);\n\n \t\t// Flag the module as loaded\n \t\tmodule.l = true;\n\n \t\t// Return the exports of the module\n \t\treturn module.exports;\n \t}\n\n\n \t// expose the modules object (__webpack_modules__)\n \t__webpack_require__.m = modules;\n\n \t// expose the module cache\n \t__webpack_require__.c = installedModules;\n\n \t// define getter function for harmony exports\n \t__webpack_require__.d = function(exports, name, getter) {\n \t\tif(!__webpack_require__.o(exports, name)) {\n \t\t\tObject.defineProperty(exports, name, { enumerable: true, get: getter });\n \t\t}\n \t};\n\n \t// define __esModule on exports\n \t__webpack_require__.r = function(exports) {\n \t\tif(typeof Symbol !== 'undefined' && Symbol.toStringTag) {\n \t\t\tObject.defineProperty(exports, Symbol.toStringTag, { value: 'Module' });\n \t\t}\n \t\tObject.defineProperty(exports, '__esModule', { value: true });\n \t};\n\n \t// create a fake namespace object\n \t// mode & 1: value is a module id, require it\n \t// mode & 2: merge all properties of value into the ns\n \t// mode & 4: return value when already ns object\n \t// mode & 8|1: behave like require\n \t__webpack_require__.t = function(value, mode) {\n \t\tif(mode & 1) value = __webpack_require__(value);\n \t\tif(mode & 8) return value;\n \t\tif((mode & 4) && typeof value === 'object' && value && value.__esModule) return value;\n \t\tvar ns = Object.create(null);\n \t\t__webpack_require__.r(ns);\n \t\tObject.defineProperty(ns, 'default', { enumerable: true, value: value });\n \t\tif(mode & 2 && typeof value != 'string') for(var key in value) __webpack_require__.d(ns, key, function(key) { return value[key]; }.bind(null, key));\n \t\treturn ns;\n \t};\n\n \t// getDefaultExport function for compatibility with non-harmony modules\n \t__webpack_require__.n = function(module) {\n \t\tvar getter = module && module.__esModule ?\n \t\t\tfunction getDefault() { return module['default']; } :\n \t\t\tfunction getModuleExports() { return module; };\n \t\t__webpack_require__.d(getter, 'a', getter);\n \t\treturn getter;\n \t};\n\n \t// Object.prototype.hasOwnProperty.call\n \t__webpack_require__.o = function(object, property) { return Object.prototype.hasOwnProperty.call(object, property); };\n\n \t// __webpack_public_path__\n \t__webpack_require__.p = \"/packs/\";\n\n\n \t// Load entry module and return exports\n \treturn __webpack_require__(__webpack_require__.s = 555);\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\ndefine([\"./var/arr\", \"./var/getProto\", \"./var/slice\", \"./var/flat\", \"./var/push\", \"./var/indexOf\", \"./var/class2type\", \"./var/toString\", \"./var/hasOwn\", \"./var/fnToString\", \"./var/ObjectFunctionString\", \"./var/support\", \"./var/isFunction\", \"./var/isWindow\", \"./core/DOMEval\", \"./core/toType\"], function (arr, getProto, slice, flat, push, indexOf, class2type, toString, hasOwn, fnToString, ObjectFunctionString, support, isFunction, isWindow, DOMEval, toType) {\n \"use strict\";\n\n var version = \"3.7.1\",\n rhtmlSuffix = /HTML$/i,\n // Define a local copy of jQuery\n jQuery = function (selector, context) {\n // The jQuery object is actually just the init constructor 'enhanced'\n // Need init if jQuery is called (just allow error to be thrown if not included)\n return new jQuery.fn.init(selector, context);\n };\n jQuery.fn = jQuery.prototype = {\n // The current version of jQuery being used\n jquery: version,\n constructor: jQuery,\n // The default length of a jQuery object is 0\n length: 0,\n toArray: function () {\n return slice.call(this);\n },\n // Get the Nth element in the matched element set OR\n // Get the whole matched element set as a clean array\n get: function (num) {\n // Return all the elements in a clean array\n if (num == null) {\n return slice.call(this);\n }\n\n // Return just the one element from the set\n return num < 0 ? this[num + this.length] : this[num];\n },\n // Take an array of elements and push it onto the stack\n // (returning the new matched element set)\n pushStack: function (elems) {\n // Build a new jQuery matched element set\n var ret = jQuery.merge(this.constructor(), elems);\n\n // Add the old object onto the stack (as a reference)\n ret.prevObject = this;\n\n // Return the newly-formed element set\n return ret;\n },\n // Execute a callback for every element in the matched set.\n each: function (callback) {\n return jQuery.each(this, callback);\n },\n map: function (callback) {\n return this.pushStack(jQuery.map(this, function (elem, i) {\n return callback.call(elem, i, elem);\n }));\n },\n slice: function () {\n return this.pushStack(slice.apply(this, arguments));\n },\n first: function () {\n return this.eq(0);\n },\n last: function () {\n return this.eq(-1);\n },\n even: function () {\n return this.pushStack(jQuery.grep(this, function (_elem, i) {\n return (i + 1) % 2;\n }));\n },\n odd: function () {\n return this.pushStack(jQuery.grep(this, function (_elem, i) {\n return i % 2;\n }));\n },\n eq: function (i) {\n var len = this.length,\n j = +i + (i < 0 ? len : 0);\n return this.pushStack(j >= 0 && j < len ? [this[j]] : []);\n },\n end: function () {\n return this.prevObject || this.constructor();\n },\n // For internal use only.\n // Behaves like an Array's method, not like a jQuery method.\n push: push,\n sort: arr.sort,\n splice: arr.splice\n };\n jQuery.extend = jQuery.fn.extend = function () {\n var options,\n name,\n src,\n copy,\n copyIsArray,\n clone,\n target = arguments[0] || {},\n i = 1,\n length = arguments.length,\n deep = false;\n\n // Handle a deep copy situation\n if (typeof target === \"boolean\") {\n deep = target;\n\n // Skip the boolean and the target\n target = arguments[i] || {};\n i++;\n }\n\n // Handle case when target is a string or something (possible in deep copy)\n if (typeof target !== \"object\" && !isFunction(target)) {\n target = {};\n }\n\n // Extend jQuery itself if only one argument is passed\n if (i === length) {\n target = this;\n i--;\n }\n for (; i < length; i++) {\n // Only deal with non-null/undefined values\n if ((options = arguments[i]) != null) {\n // Extend the base object\n for (name in options) {\n copy = options[name];\n\n // Prevent Object.prototype pollution\n // Prevent never-ending loop\n if (name === \"__proto__\" || target === copy) {\n continue;\n }\n\n // Recurse if we're merging plain objects or arrays\n if (deep && copy && (jQuery.isPlainObject(copy) || (copyIsArray = Array.isArray(copy)))) {\n src = target[name];\n\n // Ensure proper type for the source value\n if (copyIsArray && !Array.isArray(src)) {\n clone = [];\n } else if (!copyIsArray && !jQuery.isPlainObject(src)) {\n clone = {};\n } else {\n clone = src;\n }\n copyIsArray = false;\n\n // Never move original objects, clone them\n target[name] = jQuery.extend(deep, clone, copy);\n\n // Don't bring in undefined values\n } else if (copy !== undefined) {\n target[name] = copy;\n }\n }\n }\n }\n\n // Return the modified object\n return target;\n };\n jQuery.extend({\n // Unique for each copy of jQuery on the page\n expando: \"jQuery\" + (version + Math.random()).replace(/\\D/g, \"\"),\n // Assume jQuery is ready without the ready module\n isReady: true,\n error: function (msg) {\n throw new Error(msg);\n },\n noop: function () {},\n isPlainObject: function (obj) {\n var proto, Ctor;\n\n // Detect obvious negatives\n // Use toString instead of jQuery.type to catch host objects\n if (!obj || toString.call(obj) !== \"[object Object]\") {\n return false;\n }\n proto = getProto(obj);\n\n // Objects with no prototype (e.g., `Object.create( null )`) are plain\n if (!proto) {\n return true;\n }\n\n // Objects with prototype are plain iff they were constructed by a global Object function\n Ctor = hasOwn.call(proto, \"constructor\") && proto.constructor;\n return typeof Ctor === \"function\" && fnToString.call(Ctor) === ObjectFunctionString;\n },\n isEmptyObject: function (obj) {\n var name;\n for (name in obj) {\n return false;\n }\n return true;\n },\n // Evaluates a script in a provided context; falls back to the global one\n // if not specified.\n globalEval: function (code, options, doc) {\n DOMEval(code, {\n nonce: options && options.nonce\n }, doc);\n },\n each: function (obj, callback) {\n var length,\n i = 0;\n if (isArrayLike(obj)) {\n length = obj.length;\n for (; i < length; i++) {\n if (callback.call(obj[i], i, obj[i]) === false) {\n break;\n }\n }\n } else {\n for (i in obj) {\n if (callback.call(obj[i], i, obj[i]) === false) {\n break;\n }\n }\n }\n return obj;\n },\n // Retrieve the text value of an array of DOM nodes\n text: function (elem) {\n var node,\n ret = \"\",\n i = 0,\n nodeType = elem.nodeType;\n if (!nodeType) {\n // If no nodeType, this is expected to be an array\n while (node = elem[i++]) {\n // Do not traverse comment nodes\n ret += jQuery.text(node);\n }\n }\n if (nodeType === 1 || nodeType === 11) {\n return elem.textContent;\n }\n if (nodeType === 9) {\n return elem.documentElement.textContent;\n }\n if (nodeType === 3 || nodeType === 4) {\n return elem.nodeValue;\n }\n\n // Do not include comment or processing instruction nodes\n\n return ret;\n },\n // results is for internal usage only\n makeArray: function (arr, results) {\n var ret = results || [];\n if (arr != null) {\n if (isArrayLike(Object(arr))) {\n jQuery.merge(ret, typeof arr === \"string\" ? [arr] : arr);\n } else {\n push.call(ret, arr);\n }\n }\n return ret;\n },\n inArray: function (elem, arr, i) {\n return arr == null ? -1 : indexOf.call(arr, elem, i);\n },\n isXMLDoc: function (elem) {\n var namespace = elem && elem.namespaceURI,\n docElem = elem && (elem.ownerDocument || elem).documentElement;\n\n // Assume HTML when documentElement doesn't yet exist, such as inside\n // document fragments.\n return !rhtmlSuffix.test(namespace || docElem && docElem.nodeName || \"HTML\");\n },\n // Support: Android <=4.0 only, PhantomJS 1 only\n // push.apply(_, arraylike) throws on ancient WebKit\n merge: function (first, second) {\n var len = +second.length,\n j = 0,\n i = first.length;\n for (; j < len; j++) {\n first[i++] = second[j];\n }\n first.length = i;\n return first;\n },\n grep: function (elems, callback, invert) {\n var callbackInverse,\n matches = [],\n i = 0,\n length = elems.length,\n callbackExpect = !invert;\n\n // Go through the array, only saving the items\n // that pass the validator function\n for (; i < length; i++) {\n callbackInverse = !callback(elems[i], i);\n if (callbackInverse !== callbackExpect) {\n matches.push(elems[i]);\n }\n }\n return matches;\n },\n // arg is for internal usage only\n map: function (elems, callback, arg) {\n var length,\n value,\n i = 0,\n ret = [];\n\n // Go through the array, translating each of the items to their new values\n if (isArrayLike(elems)) {\n length = elems.length;\n for (; i < length; i++) {\n value = callback(elems[i], i, arg);\n if (value != null) {\n ret.push(value);\n }\n }\n\n // Go through every key on the object,\n } else {\n for (i in elems) {\n value = callback(elems[i], i, arg);\n if (value != null) {\n ret.push(value);\n }\n }\n }\n\n // Flatten any nested arrays\n return flat(ret);\n },\n // A global GUID counter for objects\n guid: 1,\n // jQuery.support is not used in Core but other projects attach their\n // properties to it so it needs to exist.\n support: support\n });\n if (typeof Symbol === \"function\") {\n jQuery.fn[Symbol.iterator] = arr[Symbol.iterator];\n }\n\n // Populate the class2type map\n jQuery.each(\"Boolean Number String Function Array Date RegExp Object Error Symbol\".split(\" \"), function (_i, name) {\n class2type[\"[object \" + name + \"]\"] = name.toLowerCase();\n });\n function isArrayLike(obj) {\n // Support: real iOS 8.2 only (not reproducible in simulator)\n // `in` check used to prevent JIT error (gh-2145)\n // hasOwn isn't used here due to false negatives\n // regarding Nodelist length in IE\n var length = !!obj && \"length\" in obj && obj.length,\n type = toType(obj);\n if (isFunction(obj) || isWindow(obj)) {\n return false;\n }\n return type === \"array\" || length === 0 || typeof length === \"number\" && length > 0 && length - 1 in obj;\n }\n return jQuery;\n});","define(function () {\n \"use strict\";\n\n return function isFunction(obj) {\n // Support: Chrome <=57, Firefox <=52\n // In some browsers, typeof returns \"function\" for HTML <object> elements\n // (i.e., `typeof document.createElement( \"object\" ) === \"function\"`).\n // We don't want to classify *any* DOM node as a function.\n // Support: QtWeb <=3.8.5, WebKit <=534.34, wkhtmltopdf tool <=0.12.5\n // Plus for old WebKit, typeof returns \"function\" for HTML collections\n // (e.g., `typeof document.getElementsByTagName(\"div\") === \"function\"`). (gh-4756)\n return typeof obj === \"function\" && typeof obj.nodeType !== \"number\" && typeof obj.item !== \"function\";\n };\n});","define(function () {\n \"use strict\";\n\n return window.document;\n});","define([\"./core\", \"./core/nodeName\", \"./var/arr\", \"./var/document\", \"./var/indexOf\", \"./var/hasOwn\", \"./var/pop\", \"./var/push\", \"./var/slice\", \"./var/sort\", \"./var/splice\", \"./var/whitespace\", \"./var/rtrimCSS\", \"./var/support\",\n// The following utils are attached directly to the jQuery object.\n\"./selector/contains\", \"./selector/escapeSelector\"], function (jQuery, nodeName, arr, document, indexOf, hasOwn, pop, push, slice, sort, splice, whitespace, rtrimCSS, support) {\n \"use strict\";\n\n var preferredDoc = document,\n pushNative = push;\n (function () {\n var i,\n Expr,\n outermostContext,\n sortInput,\n hasDuplicate,\n push = pushNative,\n // Local document vars\n document,\n documentElement,\n documentIsHTML,\n rbuggyQSA,\n matches,\n // Instance-specific data\n expando = jQuery.expando,\n dirruns = 0,\n done = 0,\n classCache = createCache(),\n tokenCache = createCache(),\n compilerCache = createCache(),\n nonnativeSelectorCache = createCache(),\n sortOrder = function (a, b) {\n if (a === b) {\n hasDuplicate = true;\n }\n return 0;\n },\n booleans = \"checked|selected|async|autofocus|autoplay|controls|defer|disabled|hidden|ismap|\" + \"loop|multiple|open|readonly|required|scoped\",\n // Regular expressions\n\n // https://www.w3.org/TR/css-syntax-3/#ident-token-diagram\n identifier = \"(?:\\\\\\\\[\\\\da-fA-F]{1,6}\" + whitespace + \"?|\\\\\\\\[^\\\\r\\\\n\\\\f]|[\\\\w-]|[^\\0-\\\\x7f])+\",\n // Attribute selectors: https://www.w3.org/TR/selectors/#attribute-selectors\n attributes = \"\\\\[\" + whitespace + \"*(\" + identifier + \")(?:\" + whitespace +\n // Operator (capture 2)\n \"*([*^$|!~]?=)\" + whitespace +\n // \"Attribute values must be CSS identifiers [capture 5] or strings [capture 3 or capture 4]\"\n \"*(?:'((?:\\\\\\\\.|[^\\\\\\\\'])*)'|\\\"((?:\\\\\\\\.|[^\\\\\\\\\\\"])*)\\\"|(\" + identifier + \"))|)\" + whitespace + \"*\\\\]\",\n pseudos = \":(\" + identifier + \")(?:\\\\((\" +\n // To reduce the number of selectors needing tokenize in the preFilter, prefer arguments:\n // 1. quoted (capture 3; capture 4 or capture 5)\n \"('((?:\\\\\\\\.|[^\\\\\\\\'])*)'|\\\"((?:\\\\\\\\.|[^\\\\\\\\\\\"])*)\\\")|\" +\n // 2. simple (capture 6)\n \"((?:\\\\\\\\.|[^\\\\\\\\()[\\\\]]|\" + attributes + \")*)|\" +\n // 3. anything else (capture 2)\n \".*\" + \")\\\\)|)\",\n // Leading and non-escaped trailing whitespace, capturing some non-whitespace characters preceding the latter\n rwhitespace = new RegExp(whitespace + \"+\", \"g\"),\n rcomma = new RegExp(\"^\" + whitespace + \"*,\" + whitespace + \"*\"),\n rleadingCombinator = new RegExp(\"^\" + whitespace + \"*([>+~]|\" + whitespace + \")\" + whitespace + \"*\"),\n rdescend = new RegExp(whitespace + \"|>\"),\n rpseudo = new RegExp(pseudos),\n ridentifier = new RegExp(\"^\" + identifier + \"$\"),\n matchExpr = {\n ID: new RegExp(\"^#(\" + identifier + \")\"),\n CLASS: new RegExp(\"^\\\\.(\" + identifier + \")\"),\n TAG: new RegExp(\"^(\" + identifier + \"|[*])\"),\n ATTR: new RegExp(\"^\" + attributes),\n PSEUDO: new RegExp(\"^\" + pseudos),\n CHILD: new RegExp(\"^:(only|first|last|nth|nth-last)-(child|of-type)(?:\\\\(\" + whitespace + \"*(even|odd|(([+-]|)(\\\\d*)n|)\" + whitespace + \"*(?:([+-]|)\" + whitespace + \"*(\\\\d+)|))\" + whitespace + \"*\\\\)|)\", \"i\"),\n bool: new RegExp(\"^(?:\" + booleans + \")$\", \"i\"),\n // For use in libraries implementing .is()\n // We use this for POS matching in `select`\n needsContext: new RegExp(\"^\" + whitespace + \"*[>+~]|:(even|odd|eq|gt|lt|nth|first|last)(?:\\\\(\" + whitespace + \"*((?:-\\\\d)?\\\\d*)\" + whitespace + \"*\\\\)|)(?=[^-]|$)\", \"i\")\n },\n rinputs = /^(?:input|select|textarea|button)$/i,\n rheader = /^h\\d$/i,\n // Easily-parseable/retrievable ID or TAG or CLASS selectors\n rquickExpr = /^(?:#([\\w-]+)|(\\w+)|\\.([\\w-]+))$/,\n rsibling = /[+~]/,\n // CSS escapes\n // https://www.w3.org/TR/CSS21/syndata.html#escaped-characters\n runescape = new RegExp(\"\\\\\\\\[\\\\da-fA-F]{1,6}\" + whitespace + \"?|\\\\\\\\([^\\\\r\\\\n\\\\f])\", \"g\"),\n funescape = function (escape, nonHex) {\n var high = \"0x\" + escape.slice(1) - 0x10000;\n if (nonHex) {\n // Strip the backslash prefix from a non-hex escape sequence\n return nonHex;\n }\n\n // Replace a hexadecimal escape sequence with the encoded Unicode code point\n // Support: IE <=11+\n // For values outside the Basic Multilingual Plane (BMP), manually construct a\n // surrogate pair\n return high < 0 ? String.fromCharCode(high + 0x10000) : String.fromCharCode(high >> 10 | 0xD800, high & 0x3FF | 0xDC00);\n },\n // Used for iframes; see `setDocument`.\n // Support: IE 9 - 11+, Edge 12 - 18+\n // Removing the function wrapper causes a \"Permission Denied\"\n // error in IE/Edge.\n unloadHandler = function () {\n setDocument();\n },\n inDisabledFieldset = addCombinator(function (elem) {\n return elem.disabled === true && nodeName(elem, \"fieldset\");\n }, {\n dir: \"parentNode\",\n next: \"legend\"\n });\n\n // Support: IE <=9 only\n // Accessing document.activeElement can throw unexpectedly\n // https://bugs.jquery.com/ticket/13393\n function safeActiveElement() {\n try {\n return document.activeElement;\n } catch (err) {}\n }\n\n // Optimize for push.apply( _, NodeList )\n try {\n push.apply(arr = slice.call(preferredDoc.childNodes), preferredDoc.childNodes);\n\n // Support: Android <=4.0\n // Detect silently failing push.apply\n // eslint-disable-next-line no-unused-expressions\n arr[preferredDoc.childNodes.length].nodeType;\n } catch (e) {\n push = {\n apply: function (target, els) {\n pushNative.apply(target, slice.call(els));\n },\n call: function (target) {\n pushNative.apply(target, slice.call(arguments, 1));\n }\n };\n }\n function find(selector, context, results, seed) {\n var m,\n i,\n elem,\n nid,\n match,\n groups,\n newSelector,\n newContext = context && context.ownerDocument,\n // nodeType defaults to 9, since context defaults to document\n nodeType = context ? context.nodeType : 9;\n results = results || [];\n\n // Return early from calls with invalid selector or context\n if (typeof selector !== \"string\" || !selector || nodeType !== 1 && nodeType !== 9 && nodeType !== 11) {\n return results;\n }\n\n // Try to shortcut find operations (as opposed to filters) in HTML documents\n if (!seed) {\n setDocument(context);\n context = context || document;\n if (documentIsHTML) {\n // If the selector is sufficiently simple, try using a \"get*By*\" DOM method\n // (excepting DocumentFragment context, where the methods don't exist)\n if (nodeType !== 11 && (match = rquickExpr.exec(selector))) {\n // ID selector\n if (m = match[1]) {\n // Document context\n if (nodeType === 9) {\n if (elem = context.getElementById(m)) {\n // Support: IE 9 only\n // getElementById can match elements by name instead of ID\n if (elem.id === m) {\n push.call(results, elem);\n return results;\n }\n } else {\n return results;\n }\n\n // Element context\n } else {\n // Support: IE 9 only\n // getElementById can match elements by name instead of ID\n if (newContext && (elem = newContext.getElementById(m)) && find.contains(context, elem) && elem.id === m) {\n push.call(results, elem);\n return results;\n }\n }\n\n // Type selector\n } else if (match[2]) {\n push.apply(results, context.getElementsByTagName(selector));\n return results;\n\n // Class selector\n } else if ((m = match[3]) && context.getElementsByClassName) {\n push.apply(results, context.getElementsByClassName(m));\n return results;\n }\n }\n\n // Take advantage of querySelectorAll\n if (!nonnativeSelectorCache[selector + \" \"] && (!rbuggyQSA || !rbuggyQSA.test(selector))) {\n newSelector = selector;\n newContext = context;\n\n // qSA considers elements outside a scoping root when evaluating child or\n // descendant combinators, which is not what we want.\n // In such cases, we work around the behavior by prefixing every selector in the\n // list with an ID selector referencing the scope context.\n // The technique has to be used as well when a leading combinator is used\n // as such selectors are not recognized by querySelectorAll.\n // Thanks to Andrew Dupont for this technique.\n if (nodeType === 1 && (rdescend.test(selector) || rleadingCombinator.test(selector))) {\n // Expand context for sibling selectors\n newContext = rsibling.test(selector) && testContext(context.parentNode) || context;\n\n // We can use :scope instead of the ID hack if the browser\n // supports it & if we're not changing the context.\n // Support: IE 11+, Edge 17 - 18+\n // IE/Edge sometimes throw a \"Permission denied\" error when\n // strict-comparing two documents; shallow comparisons work.\n // eslint-disable-next-line eqeqeq\n if (newContext != context || !support.scope) {\n // Capture the context ID, setting it first if necessary\n if (nid = context.getAttribute(\"id\")) {\n nid = jQuery.escapeSelector(nid);\n } else {\n context.setAttribute(\"id\", nid = expando);\n }\n }\n\n // Prefix every selector in the list\n groups = tokenize(selector);\n i = groups.length;\n while (i--) {\n groups[i] = (nid ? \"#\" + nid : \":scope\") + \" \" + toSelector(groups[i]);\n }\n newSelector = groups.join(\",\");\n }\n try {\n push.apply(results, newContext.querySelectorAll(newSelector));\n return results;\n } catch (qsaError) {\n nonnativeSelectorCache(selector, true);\n } finally {\n if (nid === expando) {\n context.removeAttribute(\"id\");\n }\n }\n }\n }\n }\n\n // All others\n return 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 */\n function createCache() {\n var keys = [];\n function cache(key, value) {\n // Use (key + \" \") to avoid collision with native prototype properties\n // (see https://github.com/jquery/sizzle/issues/157)\n if (keys.push(key + \" \") > Expr.cacheLength) {\n // Only keep the most recent entries\n delete cache[keys.shift()];\n }\n return cache[key + \" \"] = value;\n }\n return cache;\n }\n\n /**\n * Mark a function for special use by jQuery selector module\n * @param {Function} fn The function to mark\n */\n function markFunction(fn) {\n fn[expando] = true;\n return fn;\n }\n\n /**\n * Support testing using an element\n * @param {Function} fn Passed the created element and returns a boolean result\n */\n function assert(fn) {\n var el = document.createElement(\"fieldset\");\n try {\n return !!fn(el);\n } catch (e) {\n return false;\n } finally {\n // Remove from its parent by default\n if (el.parentNode) {\n el.parentNode.removeChild(el);\n }\n\n // release memory in IE\n el = null;\n }\n }\n\n /**\n * Returns a function to use in pseudos for input types\n * @param {String} type\n */\n function createInputPseudo(type) {\n return function (elem) {\n return nodeName(elem, \"input\") && elem.type === type;\n };\n }\n\n /**\n * Returns a function to use in pseudos for buttons\n * @param {String} type\n */\n function createButtonPseudo(type) {\n return function (elem) {\n return (nodeName(elem, \"input\") || nodeName(elem, \"button\")) && elem.type === type;\n };\n }\n\n /**\n * Returns a function to use in pseudos for :enabled/:disabled\n * @param {Boolean} disabled true for :disabled; false for :enabled\n */\n function createDisabledPseudo(disabled) {\n // Known :disabled false positives: fieldset[disabled] > legend:nth-of-type(n+2) :can-disable\n return function (elem) {\n // Only certain elements can match :enabled or :disabled\n // https://html.spec.whatwg.org/multipage/scripting.html#selector-enabled\n // https://html.spec.whatwg.org/multipage/scripting.html#selector-disabled\n if (\"form\" in elem) {\n // Check for inherited disabledness on relevant non-disabled elements:\n // * listed form-associated elements in a disabled fieldset\n // https://html.spec.whatwg.org/multipage/forms.html#category-listed\n // https://html.spec.whatwg.org/multipage/forms.html#concept-fe-disabled\n // * option elements in a disabled optgroup\n // https://html.spec.whatwg.org/multipage/forms.html#concept-option-disabled\n // All such elements have a \"form\" property.\n if (elem.parentNode && elem.disabled === false) {\n // Option elements defer to a parent optgroup if present\n if (\"label\" in elem) {\n if (\"label\" in elem.parentNode) {\n return elem.parentNode.disabled === disabled;\n } else {\n return elem.disabled === disabled;\n }\n }\n\n // Support: IE 6 - 11+\n // Use the isDisabled shortcut property to check for disabled fieldset ancestors\n return elem.isDisabled === disabled ||\n // Where there is no isDisabled, check manually\n elem.isDisabled !== !disabled && inDisabledFieldset(elem) === disabled;\n }\n return elem.disabled === disabled;\n\n // Try to winnow out elements that can't be disabled before trusting the disabled property.\n // Some victims get caught in our net (label, legend, menu, track), but it shouldn't\n // even exist on them, let alone have a boolean value.\n } else if (\"label\" in elem) {\n return elem.disabled === disabled;\n }\n\n // Remaining elements are neither :enabled nor :disabled\n return false;\n };\n }\n\n /**\n * Returns a function to use in pseudos for positionals\n * @param {Function} fn\n */\n function createPositionalPseudo(fn) {\n return markFunction(function (argument) {\n argument = +argument;\n return markFunction(function (seed, matches) {\n var j,\n matchIndexes = fn([], seed.length, argument),\n i = matchIndexes.length;\n\n // Match elements found at the specified indexes\n while (i--) {\n if (seed[j = matchIndexes[i]]) {\n seed[j] = !(matches[j] = seed[j]);\n }\n }\n });\n });\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 */\n function testContext(context) {\n return 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 */\n function setDocument(node) {\n var subWindow,\n doc = node ? node.ownerDocument || node : preferredDoc;\n\n // Return early if doc is invalid or already selected\n // Support: IE 11+, Edge 17 - 18+\n // IE/Edge sometimes throw a \"Permission denied\" error when strict-comparing\n // two documents; shallow comparisons work.\n // eslint-disable-next-line eqeqeq\n if (doc == document || doc.nodeType !== 9 || !doc.documentElement) {\n return document;\n }\n\n // Update global variables\n document = doc;\n documentElement = document.documentElement;\n documentIsHTML = !jQuery.isXMLDoc(document);\n\n // Support: iOS 7 only, IE 9 - 11+\n // Older browsers didn't support unprefixed `matches`.\n matches = documentElement.matches || documentElement.webkitMatchesSelector || documentElement.msMatchesSelector;\n\n // Support: IE 9 - 11+, Edge 12 - 18+\n // Accessing iframe documents after unload throws \"permission denied\" errors\n // (see trac-13936).\n // Limit the fix to IE & Edge Legacy; despite Edge 15+ implementing `matches`,\n // all IE 9+ and Edge Legacy versions implement `msMatchesSelector` as well.\n if (documentElement.msMatchesSelector &&\n // Support: IE 11+, Edge 17 - 18+\n // IE/Edge sometimes throw a \"Permission denied\" error when strict-comparing\n // two documents; shallow comparisons work.\n // eslint-disable-next-line eqeqeq\n preferredDoc != document && (subWindow = document.defaultView) && subWindow.top !== subWindow) {\n // Support: IE 9 - 11+, Edge 12 - 18+\n subWindow.addEventListener(\"unload\", unloadHandler);\n }\n\n // Support: IE <10\n // Check if getElementById returns elements by name\n // The broken getElementById methods don't pick up programmatically-set names,\n // so use a roundabout getElementsByName test\n support.getById = assert(function (el) {\n documentElement.appendChild(el).id = jQuery.expando;\n return !document.getElementsByName || !document.getElementsByName(jQuery.expando).length;\n });\n\n // Support: IE 9 only\n // Check to see if it's possible to do matchesSelector\n // on a disconnected node.\n support.disconnectedMatch = assert(function (el) {\n return matches.call(el, \"*\");\n });\n\n // Support: IE 9 - 11+, Edge 12 - 18+\n // IE/Edge don't support the :scope pseudo-class.\n support.scope = assert(function () {\n return document.querySelectorAll(\":scope\");\n });\n\n // Support: Chrome 105 - 111 only, Safari 15.4 - 16.3 only\n // Make sure the `:has()` argument is parsed unforgivingly.\n // We include `*` in the test to detect buggy implementations that are\n // _selectively_ forgiving (specifically when the list includes at least\n // one valid selector).\n // Note that we treat complete lack of support for `:has()` as if it were\n // spec-compliant support, which is fine because use of `:has()` in such\n // environments will fail in the qSA path and fall back to jQuery traversal\n // anyway.\n support.cssHas = assert(function () {\n try {\n document.querySelector(\":has(*,:jqfake)\");\n return false;\n } catch (e) {\n return true;\n }\n });\n\n // ID filter and find\n if (support.getById) {\n Expr.filter.ID = function (id) {\n var attrId = id.replace(runescape, funescape);\n return function (elem) {\n return elem.getAttribute(\"id\") === attrId;\n };\n };\n Expr.find.ID = function (id, context) {\n if (typeof context.getElementById !== \"undefined\" && documentIsHTML) {\n var elem = context.getElementById(id);\n return elem ? [elem] : [];\n }\n };\n } else {\n Expr.filter.ID = function (id) {\n var attrId = id.replace(runescape, funescape);\n return function (elem) {\n var node = typeof elem.getAttributeNode !== \"undefined\" && elem.getAttributeNode(\"id\");\n return node && node.value === attrId;\n };\n };\n\n // Support: IE 6 - 7 only\n // getElementById is not reliable as a find shortcut\n Expr.find.ID = function (id, context) {\n if (typeof context.getElementById !== \"undefined\" && documentIsHTML) {\n var node,\n i,\n elems,\n elem = context.getElementById(id);\n if (elem) {\n // Verify the id attribute\n node = elem.getAttributeNode(\"id\");\n if (node && node.value === id) {\n return [elem];\n }\n\n // Fall back on getElementsByName\n elems = context.getElementsByName(id);\n i = 0;\n while (elem = elems[i++]) {\n node = elem.getAttributeNode(\"id\");\n if (node && node.value === id) {\n return [elem];\n }\n }\n }\n return [];\n }\n };\n }\n\n // Tag\n Expr.find.TAG = function (tag, context) {\n if (typeof context.getElementsByTagName !== \"undefined\") {\n return context.getElementsByTagName(tag);\n\n // DocumentFragment nodes don't have gEBTN\n } else {\n return context.querySelectorAll(tag);\n }\n };\n\n // Class\n Expr.find.CLASS = function (className, context) {\n if (typeof context.getElementsByClassName !== \"undefined\" && documentIsHTML) {\n return context.getElementsByClassName(className);\n }\n };\n\n /* QSA/matchesSelector\n ---------------------------------------------------------------------- */\n\n // QSA and matchesSelector support\n\n rbuggyQSA = [];\n\n // Build QSA regex\n // Regex strategy adopted from Diego Perini\n assert(function (el) {\n var input;\n documentElement.appendChild(el).innerHTML = \"<a id='\" + expando + \"' href='' disabled='disabled'></a>\" + \"<select id='\" + expando + \"-\\r\\\\' disabled='disabled'>\" + \"<option selected=''></option></select>\";\n\n // Support: iOS <=7 - 8 only\n // Boolean attributes and \"value\" are not treated correctly in some XML documents\n if (!el.querySelectorAll(\"[selected]\").length) {\n rbuggyQSA.push(\"\\\\[\" + whitespace + \"*(?:value|\" + booleans + \")\");\n }\n\n // Support: iOS <=7 - 8 only\n if (!el.querySelectorAll(\"[id~=\" + expando + \"-]\").length) {\n rbuggyQSA.push(\"~=\");\n }\n\n // Support: iOS 8 only\n // https://bugs.webkit.org/show_bug.cgi?id=136851\n // In-page `selector#id sibling-combinator selector` fails\n if (!el.querySelectorAll(\"a#\" + expando + \"+*\").length) {\n rbuggyQSA.push(\".#.+[+~]\");\n }\n\n // Support: Chrome <=105+, Firefox <=104+, Safari <=15.4+\n // In some of the document kinds, these selectors wouldn't work natively.\n // This is probably OK but for backwards compatibility we want to maintain\n // handling them through jQuery traversal in jQuery 3.x.\n if (!el.querySelectorAll(\":checked\").length) {\n rbuggyQSA.push(\":checked\");\n }\n\n // Support: Windows 8 Native Apps\n // The type and name attributes are restricted during .innerHTML assignment\n input = document.createElement(\"input\");\n input.setAttribute(\"type\", \"hidden\");\n el.appendChild(input).setAttribute(\"name\", \"D\");\n\n // Support: IE 9 - 11+\n // IE's :disabled selector does not pick up the children of disabled fieldsets\n // Support: Chrome <=105+, Firefox <=104+, Safari <=15.4+\n // In some of the document kinds, these selectors wouldn't work natively.\n // This is probably OK but for backwards compatibility we want to maintain\n // handling them through jQuery traversal in jQuery 3.x.\n documentElement.appendChild(el).disabled = true;\n if (el.querySelectorAll(\":disabled\").length !== 2) {\n rbuggyQSA.push(\":enabled\", \":disabled\");\n }\n\n // Support: IE 11+, Edge 15 - 18+\n // IE 11/Edge don't find elements on a `[name='']` query in some cases.\n // Adding a temporary attribute to the document before the selection works\n // around the issue.\n // Interestingly, IE 10 & older don't seem to have the issue.\n input = document.createElement(\"input\");\n input.setAttribute(\"name\", \"\");\n el.appendChild(input);\n if (!el.querySelectorAll(\"[name='']\").length) {\n rbuggyQSA.push(\"\\\\[\" + whitespace + \"*name\" + whitespace + \"*=\" + whitespace + \"*(?:''|\\\"\\\")\");\n }\n });\n if (!support.cssHas) {\n // Support: Chrome 105 - 110+, Safari 15.4 - 16.3+\n // Our regular `try-catch` mechanism fails to detect natively-unsupported\n // pseudo-classes inside `:has()` (such as `:has(:contains(\"Foo\"))`)\n // in browsers that parse the `:has()` argument as a forgiving selector list.\n // https://drafts.csswg.org/selectors/#relational now requires the argument\n // to be parsed unforgivingly, but browsers have not yet fully adjusted.\n rbuggyQSA.push(\":has\");\n }\n rbuggyQSA = rbuggyQSA.length && new RegExp(rbuggyQSA.join(\"|\"));\n\n /* Sorting\n ---------------------------------------------------------------------- */\n\n // Document order sorting\n sortOrder = function (a, b) {\n // Flag for duplicate removal\n if (a === b) {\n hasDuplicate = true;\n return 0;\n }\n\n // Sort on method existence if only one input has compareDocumentPosition\n var compare = !a.compareDocumentPosition - !b.compareDocumentPosition;\n if (compare) {\n return compare;\n }\n\n // Calculate position if both inputs belong to the same document\n // Support: IE 11+, Edge 17 - 18+\n // IE/Edge sometimes throw a \"Permission denied\" error when strict-comparing\n // two documents; shallow comparisons work.\n // eslint-disable-next-line eqeqeq\n compare = (a.ownerDocument || a) == (b.ownerDocument || b) ? a.compareDocumentPosition(b) :\n // Otherwise we know they are disconnected\n 1;\n\n // Disconnected nodes\n if (compare & 1 || !support.sortDetached && b.compareDocumentPosition(a) === compare) {\n // Choose the first element that is related to our preferred document\n // Support: IE 11+, Edge 17 - 18+\n // IE/Edge sometimes throw a \"Permission denied\" error when strict-comparing\n // two documents; shallow comparisons work.\n // eslint-disable-next-line eqeqeq\n if (a === document || a.ownerDocument == preferredDoc && find.contains(preferredDoc, a)) {\n return -1;\n }\n\n // Support: IE 11+, Edge 17 - 18+\n // IE/Edge sometimes throw a \"Permission denied\" error when strict-comparing\n // two documents; shallow comparisons work.\n // eslint-disable-next-line eqeqeq\n if (b === document || b.ownerDocument == preferredDoc && find.contains(preferredDoc, b)) {\n return 1;\n }\n\n // Maintain original order\n return sortInput ? indexOf.call(sortInput, a) - indexOf.call(sortInput, b) : 0;\n }\n return compare & 4 ? -1 : 1;\n };\n return document;\n }\n find.matches = function (expr, elements) {\n return find(expr, null, null, elements);\n };\n find.matchesSelector = function (elem, expr) {\n setDocument(elem);\n if (documentIsHTML && !nonnativeSelectorCache[expr + \" \"] && (!rbuggyQSA || !rbuggyQSA.test(expr))) {\n try {\n var ret = matches.call(elem, expr);\n\n // IE 9's matchesSelector returns false on disconnected nodes\n if (ret || support.disconnectedMatch ||\n // As well, disconnected nodes are said to be in a document\n // fragment in IE 9\n elem.document && elem.document.nodeType !== 11) {\n return ret;\n }\n } catch (e) {\n nonnativeSelectorCache(expr, true);\n }\n }\n return find(expr, document, null, [elem]).length > 0;\n };\n find.contains = function (context, elem) {\n // Set document vars if needed\n // Support: IE 11+, Edge 17 - 18+\n // IE/Edge sometimes throw a \"Permission denied\" error when strict-comparing\n // two documents; shallow comparisons work.\n // eslint-disable-next-line eqeqeq\n if ((context.ownerDocument || context) != document) {\n setDocument(context);\n }\n return jQuery.contains(context, elem);\n };\n find.attr = function (elem, name) {\n // Set document vars if needed\n // Support: IE 11+, Edge 17 - 18+\n // IE/Edge sometimes throw a \"Permission denied\" error when strict-comparing\n // two documents; shallow comparisons work.\n // eslint-disable-next-line eqeqeq\n if ((elem.ownerDocument || elem) != document) {\n setDocument(elem);\n }\n var fn = Expr.attrHandle[name.toLowerCase()],\n // Don't get fooled by Object.prototype properties (see trac-13807)\n val = fn && hasOwn.call(Expr.attrHandle, name.toLowerCase()) ? fn(elem, name, !documentIsHTML) : undefined;\n if (val !== undefined) {\n return val;\n }\n return elem.getAttribute(name);\n };\n find.error = function (msg) {\n throw new Error(\"Syntax error, unrecognized expression: \" + msg);\n };\n\n /**\n * Document sorting and removing duplicates\n * @param {ArrayLike} results\n */\n jQuery.uniqueSort = function (results) {\n var elem,\n duplicates = [],\n j = 0,\n i = 0;\n\n // Unless we *know* we can detect duplicates, assume their presence\n //\n // Support: Android <=4.0+\n // Testing for detecting duplicates is unpredictable so instead assume we can't\n // depend on duplicate detection in all browsers without a stable sort.\n hasDuplicate = !support.sortStable;\n sortInput = !support.sortStable && slice.call(results, 0);\n sort.call(results, sortOrder);\n if (hasDuplicate) {\n while (elem = results[i++]) {\n if (elem === results[i]) {\n j = duplicates.push(i);\n }\n }\n while (j--) {\n splice.call(results, duplicates[j], 1);\n }\n }\n\n // Clear input after sorting to release objects\n // See https://github.com/jquery/sizzle/pull/225\n sortInput = null;\n return results;\n };\n jQuery.fn.uniqueSort = function () {\n return this.pushStack(jQuery.uniqueSort(slice.apply(this)));\n };\n Expr = jQuery.expr = {\n // Can be adjusted by the user\n cacheLength: 50,\n createPseudo: markFunction,\n match: matchExpr,\n attrHandle: {},\n find: {},\n relative: {\n \">\": {\n dir: \"parentNode\",\n first: true\n },\n \" \": {\n dir: \"parentNode\"\n },\n \"+\": {\n dir: \"previousSibling\",\n first: true\n },\n \"~\": {\n dir: \"previousSibling\"\n }\n },\n preFilter: {\n ATTR: function (match) {\n match[1] = match[1].replace(runescape, funescape);\n\n // Move the given value to match[3] whether quoted or unquoted\n match[3] = (match[3] || match[4] || match[5] || \"\").replace(runescape, funescape);\n if (match[2] === \"~=\") {\n match[3] = \" \" + match[3] + \" \";\n }\n return match.slice(0, 4);\n },\n CHILD: function (match) {\n /* matches from matchExpr[\"CHILD\"]\n \t1 type (only|nth|...)\n \t2 what (child|of-type)\n \t3 argument (even|odd|\\d*|\\d*n([+-]\\d+)?|...)\n \t4 xn-component of xn+y argument ([+-]?\\d*n|)\n \t5 sign of xn-component\n \t6 x of xn-component\n \t7 sign of y-component\n \t8 y of y-component\n */\n match[1] = match[1].toLowerCase();\n if (match[1].slice(0, 3) === \"nth\") {\n // nth-* requires argument\n if (!match[3]) {\n find.error(match[0]);\n }\n\n // numeric x and y parameters for Expr.filter.CHILD\n // remember that false/true cast respectively to 0/1\n match[4] = +(match[4] ? match[5] + (match[6] || 1) : 2 * (match[3] === \"even\" || match[3] === \"odd\"));\n match[5] = +(match[7] + match[8] || match[3] === \"odd\");\n\n // other types prohibit arguments\n } else if (match[3]) {\n find.error(match[0]);\n }\n return match;\n },\n PSEUDO: function (match) {\n var excess,\n unquoted = !match[6] && match[2];\n if (matchExpr.CHILD.test(match[0])) {\n return null;\n }\n\n // Accept quoted arguments as-is\n if (match[3]) {\n match[2] = match[4] || match[5] || \"\";\n\n // Strip excess characters from unquoted arguments\n } else if (unquoted && rpseudo.test(unquoted) && (\n // Get excess from tokenize (recursively)\n excess = tokenize(unquoted, true)) && (\n // advance to the next closing parenthesis\n excess = unquoted.indexOf(\")\", unquoted.length - excess) - unquoted.length)) {\n // excess is a negative index\n match[0] = match[0].slice(0, excess);\n match[2] = unquoted.slice(0, excess);\n }\n\n // Return only captures needed by the pseudo filter method (type and argument)\n return match.slice(0, 3);\n }\n },\n filter: {\n TAG: function (nodeNameSelector) {\n var expectedNodeName = nodeNameSelector.replace(runescape, funescape).toLowerCase();\n return nodeNameSelector === \"*\" ? function () {\n return true;\n } : function (elem) {\n return nodeName(elem, expectedNodeName);\n };\n },\n CLASS: function (className) {\n var pattern = classCache[className + \" \"];\n return pattern || (pattern = new RegExp(\"(^|\" + whitespace + \")\" + className + \"(\" + whitespace + \"|$)\")) && classCache(className, function (elem) {\n return pattern.test(typeof elem.className === \"string\" && elem.className || typeof elem.getAttribute !== \"undefined\" && elem.getAttribute(\"class\") || \"\");\n });\n },\n ATTR: function (name, operator, check) {\n return function (elem) {\n var result = find.attr(elem, name);\n if (result == null) {\n return operator === \"!=\";\n }\n if (!operator) {\n return true;\n }\n result += \"\";\n if (operator === \"=\") {\n return result === check;\n }\n if (operator === \"!=\") {\n return result !== check;\n }\n if (operator === \"^=\") {\n return check && result.indexOf(check) === 0;\n }\n if (operator === \"*=\") {\n return check && result.indexOf(check) > -1;\n }\n if (operator === \"$=\") {\n return check && result.slice(-check.length) === check;\n }\n if (operator === \"~=\") {\n return (\" \" + result.replace(rwhitespace, \" \") + \" \").indexOf(check) > -1;\n }\n if (operator === \"|=\") {\n return result === check || result.slice(0, check.length + 1) === check + \"-\";\n }\n return false;\n };\n },\n CHILD: function (type, what, _argument, first, last) {\n var simple = type.slice(0, 3) !== \"nth\",\n forward = type.slice(-4) !== \"last\",\n ofType = what === \"of-type\";\n return first === 1 && last === 0 ?\n // Shortcut for :nth-*(n)\n function (elem) {\n return !!elem.parentNode;\n } : function (elem, _context, xml) {\n var cache,\n outerCache,\n node,\n nodeIndex,\n start,\n dir = simple !== forward ? \"nextSibling\" : \"previousSibling\",\n parent = elem.parentNode,\n name = ofType && elem.nodeName.toLowerCase(),\n useCache = !xml && !ofType,\n diff = false;\n if (parent) {\n // :(first|last|only)-(child|of-type)\n if (simple) {\n while (dir) {\n node = elem;\n while (node = node[dir]) {\n if (ofType ? nodeName(node, name) : node.nodeType === 1) {\n return false;\n }\n }\n\n // Reverse direction for :only-* (if we haven't yet done so)\n start = dir = type === \"only\" && !start && \"nextSibling\";\n }\n return true;\n }\n start = [forward ? parent.firstChild : parent.lastChild];\n\n // non-xml :nth-child(...) stores cache data on `parent`\n if (forward && useCache) {\n // Seek `elem` from a previously-cached index\n outerCache = parent[expando] || (parent[expando] = {});\n cache = outerCache[type] || [];\n nodeIndex = cache[0] === dirruns && cache[1];\n diff = nodeIndex && cache[2];\n node = nodeIndex && parent.childNodes[nodeIndex];\n while (node = ++nodeIndex && node && node[dir] || (\n // Fallback to seeking `elem` from the start\n diff = nodeIndex = 0) || start.pop()) {\n // When found, cache indexes on `parent` and break\n if (node.nodeType === 1 && ++diff && node === elem) {\n outerCache[type] = [dirruns, nodeIndex, diff];\n break;\n }\n }\n } else {\n // Use previously-cached element index if available\n if (useCache) {\n outerCache = elem[expando] || (elem[expando] = {});\n cache = outerCache[type] || [];\n nodeIndex = cache[0] === dirruns && cache[1];\n diff = nodeIndex;\n }\n\n // xml :nth-child(...)\n // or :nth-last-child(...) or :nth(-last)?-of-type(...)\n if (diff === false) {\n // Use the same loop as above to seek `elem` from the start\n while (node = ++nodeIndex && node && node[dir] || (diff = nodeIndex = 0) || start.pop()) {\n if ((ofType ? nodeName(node, name) : node.nodeType === 1) && ++diff) {\n // Cache the index of each encountered element\n if (useCache) {\n outerCache = node[expando] || (node[expando] = {});\n outerCache[type] = [dirruns, diff];\n }\n if (node === elem) {\n break;\n }\n }\n }\n }\n }\n\n // Incorporate the offset, then check against cycle size\n diff -= last;\n return diff === first || diff % first === 0 && diff / first >= 0;\n }\n };\n },\n PSEUDO: function (pseudo, argument) {\n // pseudo-class names are case-insensitive\n // https://www.w3.org/TR/selectors/#pseudo-classes\n // Prioritize by case sensitivity in case custom pseudos are added with uppercase letters\n // Remember that setFilters inherits from pseudos\n var args,\n fn = Expr.pseudos[pseudo] || Expr.setFilters[pseudo.toLowerCase()] || find.error(\"unsupported pseudo: \" + pseudo);\n\n // The user may use createPseudo to indicate that\n // arguments are needed to create the filter function\n // just as jQuery does\n if (fn[expando]) {\n return fn(argument);\n }\n\n // But maintain support for old signatures\n if (fn.length > 1) {\n args = [pseudo, pseudo, \"\", argument];\n return Expr.setFilters.hasOwnProperty(pseudo.toLowerCase()) ? markFunction(function (seed, matches) {\n var idx,\n matched = fn(seed, argument),\n i = matched.length;\n while (i--) {\n idx = indexOf.call(seed, matched[i]);\n seed[idx] = !(matches[idx] = matched[i]);\n }\n }) : function (elem) {\n return fn(elem, 0, args);\n };\n }\n return fn;\n }\n },\n pseudos: {\n // Potentially complex pseudos\n not: markFunction(function (selector) {\n // Trim the selector passed to compile\n // to avoid treating leading and trailing\n // spaces as combinators\n var input = [],\n results = [],\n matcher = compile(selector.replace(rtrimCSS, \"$1\"));\n return matcher[expando] ? markFunction(function (seed, matches, _context, xml) {\n var elem,\n unmatched = matcher(seed, null, xml, []),\n i = seed.length;\n\n // Match elements unmatched by `matcher`\n while (i--) {\n if (elem = unmatched[i]) {\n seed[i] = !(matches[i] = elem);\n }\n }\n }) : function (elem, _context, xml) {\n input[0] = elem;\n matcher(input, null, xml, results);\n\n // Don't keep the element\n // (see https://github.com/jquery/sizzle/issues/299)\n input[0] = null;\n return !results.pop();\n };\n }),\n has: markFunction(function (selector) {\n return function (elem) {\n return find(selector, elem).length > 0;\n };\n }),\n contains: markFunction(function (text) {\n text = text.replace(runescape, funescape);\n return function (elem) {\n return (elem.textContent || jQuery.text(elem)).indexOf(text) > -1;\n };\n }),\n // \"Whether an element is represented by a :lang() selector\n // is based solely on the element's language value\n // being equal to the identifier C,\n // or beginning with the identifier C immediately followed by \"-\".\n // The matching of C against the element's language value is performed case-insensitively.\n // The identifier C does not have to be a valid language name.\"\n // https://www.w3.org/TR/selectors/#lang-pseudo\n lang: markFunction(function (lang) {\n // lang value must be a valid identifier\n if (!ridentifier.test(lang || \"\")) {\n find.error(\"unsupported lang: \" + lang);\n }\n lang = lang.replace(runescape, funescape).toLowerCase();\n return function (elem) {\n var elemLang;\n do {\n if (elemLang = documentIsHTML ? elem.lang : elem.getAttribute(\"xml:lang\") || elem.getAttribute(\"lang\")) {\n elemLang = elemLang.toLowerCase();\n return elemLang === lang || elemLang.indexOf(lang + \"-\") === 0;\n }\n } while ((elem = elem.parentNode) && elem.nodeType === 1);\n return false;\n };\n }),\n // Miscellaneous\n target: function (elem) {\n var hash = window.location && window.location.hash;\n return hash && hash.slice(1) === elem.id;\n },\n root: function (elem) {\n return elem === documentElement;\n },\n focus: function (elem) {\n return elem === safeActiveElement() && document.hasFocus() && !!(elem.type || elem.href || ~elem.tabIndex);\n },\n // Boolean properties\n enabled: createDisabledPseudo(false),\n disabled: createDisabledPseudo(true),\n checked: function (elem) {\n // In CSS3, :checked should return both checked and selected elements\n // https://www.w3.org/TR/2011/REC-css3-selectors-20110929/#checked\n return nodeName(elem, \"input\") && !!elem.checked || nodeName(elem, \"option\") && !!elem.selected;\n },\n selected: function (elem) {\n // Support: IE <=11+\n // Accessing the selectedIndex property\n // forces the browser to treat the default option as\n // selected when in an optgroup.\n if (elem.parentNode) {\n // eslint-disable-next-line no-unused-expressions\n elem.parentNode.selectedIndex;\n }\n return elem.selected === true;\n },\n // Contents\n empty: function (elem) {\n // https://www.w3.org/TR/selectors/#empty-pseudo\n // :empty is negated by element (1) or content nodes (text: 3; cdata: 4; entity ref: 5),\n // but not by others (comment: 8; processing instruction: 7; etc.)\n // nodeType < 6 works because attributes (2) do not appear as children\n for (elem = elem.firstChild; elem; elem = elem.nextSibling) {\n if (elem.nodeType < 6) {\n return false;\n }\n }\n return true;\n },\n parent: function (elem) {\n return !Expr.pseudos.empty(elem);\n },\n // Element/input types\n header: function (elem) {\n return rheader.test(elem.nodeName);\n },\n input: function (elem) {\n return rinputs.test(elem.nodeName);\n },\n button: function (elem) {\n return nodeName(elem, \"input\") && elem.type === \"button\" || nodeName(elem, \"button\");\n },\n text: function (elem) {\n var attr;\n return nodeName(elem, \"input\") && elem.type === \"text\" && (\n // Support: IE <10 only\n // New HTML5 attribute values (e.g., \"search\") appear\n // with elem.type === \"text\"\n (attr = elem.getAttribute(\"type\")) == null || attr.toLowerCase() === \"text\");\n },\n // Position-in-collection\n first: createPositionalPseudo(function () {\n return [0];\n }),\n last: createPositionalPseudo(function (_matchIndexes, length) {\n return [length - 1];\n }),\n eq: createPositionalPseudo(function (_matchIndexes, length, argument) {\n return [argument < 0 ? argument + length : argument];\n }),\n even: createPositionalPseudo(function (matchIndexes, length) {\n var i = 0;\n for (; i < length; i += 2) {\n matchIndexes.push(i);\n }\n return matchIndexes;\n }),\n odd: createPositionalPseudo(function (matchIndexes, length) {\n var i = 1;\n for (; i < length; i += 2) {\n matchIndexes.push(i);\n }\n return matchIndexes;\n }),\n lt: createPositionalPseudo(function (matchIndexes, length, argument) {\n var i;\n if (argument < 0) {\n i = argument + length;\n } else if (argument > length) {\n i = length;\n } else {\n i = argument;\n }\n for (; --i >= 0;) {\n matchIndexes.push(i);\n }\n return matchIndexes;\n }),\n gt: createPositionalPseudo(function (matchIndexes, length, argument) {\n var i = argument < 0 ? argument + length : argument;\n for (; ++i < length;) {\n matchIndexes.push(i);\n }\n return matchIndexes;\n })\n }\n };\n Expr.pseudos.nth = Expr.pseudos.eq;\n\n // Add button/input type pseudos\n for (i in {\n radio: true,\n checkbox: true,\n file: true,\n password: true,\n image: true\n }) {\n Expr.pseudos[i] = createInputPseudo(i);\n }\n for (i in {\n submit: true,\n reset: true\n }) {\n Expr.pseudos[i] = createButtonPseudo(i);\n }\n\n // Easy API for creating new setFilters\n function setFilters() {}\n setFilters.prototype = Expr.filters = Expr.pseudos;\n Expr.setFilters = new setFilters();\n function tokenize(selector, parseOnly) {\n var matched,\n match,\n tokens,\n type,\n soFar,\n groups,\n preFilters,\n cached = tokenCache[selector + \" \"];\n if (cached) {\n return parseOnly ? 0 : cached.slice(0);\n }\n soFar = selector;\n groups = [];\n preFilters = Expr.preFilter;\n while (soFar) {\n // Comma and first run\n if (!matched || (match = rcomma.exec(soFar))) {\n if (match) {\n // Don't consume trailing commas as valid\n soFar = soFar.slice(match[0].length) || soFar;\n }\n groups.push(tokens = []);\n }\n matched = false;\n\n // Combinators\n if (match = rleadingCombinator.exec(soFar)) {\n matched = match.shift();\n tokens.push({\n value: matched,\n // Cast descendant combinators to space\n type: match[0].replace(rtrimCSS, \" \")\n });\n soFar = soFar.slice(matched.length);\n }\n\n // Filters\n for (type in Expr.filter) {\n if ((match = matchExpr[type].exec(soFar)) && (!preFilters[type] || (match = preFilters[type](match)))) {\n matched = match.shift();\n tokens.push({\n value: matched,\n type: type,\n matches: match\n });\n soFar = soFar.slice(matched.length);\n }\n }\n if (!matched) {\n break;\n }\n }\n\n // Return the length of the invalid excess\n // if we're just parsing\n // Otherwise, throw an error or return tokens\n if (parseOnly) {\n return soFar.length;\n }\n return soFar ? find.error(selector) :\n // Cache the tokens\n tokenCache(selector, groups).slice(0);\n }\n function toSelector(tokens) {\n var i = 0,\n len = tokens.length,\n selector = \"\";\n for (; i < len; i++) {\n selector += tokens[i].value;\n }\n return selector;\n }\n function addCombinator(matcher, combinator, base) {\n var dir = combinator.dir,\n skip = combinator.next,\n key = skip || dir,\n checkNonElements = base && key === \"parentNode\",\n doneName = done++;\n return combinator.first ?\n // Check against closest ancestor/preceding element\n function (elem, context, xml) {\n while (elem = elem[dir]) {\n if (elem.nodeType === 1 || checkNonElements) {\n return matcher(elem, context, xml);\n }\n }\n return false;\n } :\n // Check against all ancestor/preceding elements\n function (elem, context, xml) {\n var oldCache,\n outerCache,\n newCache = [dirruns, doneName];\n\n // We can't set arbitrary data on XML nodes, so they don't benefit from combinator caching\n if (xml) {\n while (elem = elem[dir]) {\n if (elem.nodeType === 1 || checkNonElements) {\n if (matcher(elem, context, xml)) {\n return true;\n }\n }\n }\n } else {\n while (elem = elem[dir]) {\n if (elem.nodeType === 1 || checkNonElements) {\n outerCache = elem[expando] || (elem[expando] = {});\n if (skip && nodeName(elem, skip)) {\n elem = elem[dir] || elem;\n } else if ((oldCache = outerCache[key]) && oldCache[0] === dirruns && oldCache[1] === doneName) {\n // Assign to newCache so results back-propagate to previous elements\n return newCache[2] = oldCache[2];\n } else {\n // Reuse newcache so results back-propagate to previous elements\n outerCache[key] = newCache;\n\n // A match means we're done; a fail means we have to keep checking\n if (newCache[2] = matcher(elem, context, xml)) {\n return true;\n }\n }\n }\n }\n }\n return false;\n };\n }\n function elementMatcher(matchers) {\n return matchers.length > 1 ? function (elem, context, xml) {\n var i = matchers.length;\n while (i--) {\n if (!matchers[i](elem, context, xml)) {\n return false;\n }\n }\n return true;\n } : matchers[0];\n }\n function multipleContexts(selector, contexts, results) {\n var i = 0,\n len = contexts.length;\n for (; i < len; i++) {\n find(selector, contexts[i], results);\n }\n return results;\n }\n function condense(unmatched, map, filter, context, xml) {\n var elem,\n newUnmatched = [],\n i = 0,\n len = unmatched.length,\n mapped = map != null;\n for (; i < len; i++) {\n if (elem = unmatched[i]) {\n if (!filter || filter(elem, context, xml)) {\n newUnmatched.push(elem);\n if (mapped) {\n map.push(i);\n }\n }\n }\n }\n return newUnmatched;\n }\n function setMatcher(preFilter, selector, matcher, postFilter, postFinder, postSelector) {\n if (postFilter && !postFilter[expando]) {\n postFilter = setMatcher(postFilter);\n }\n if (postFinder && !postFinder[expando]) {\n postFinder = setMatcher(postFinder, postSelector);\n }\n return markFunction(function (seed, results, context, xml) {\n var temp,\n i,\n elem,\n matcherOut,\n preMap = [],\n postMap = [],\n preexisting = results.length,\n // Get initial elements from seed or context\n elems = seed || multipleContexts(selector || \"*\", context.nodeType ? [context] : context, []),\n // Prefilter to get matcher input, preserving a map for seed-results synchronization\n matcherIn = preFilter && (seed || !selector) ? condense(elems, preMap, preFilter, context, xml) : elems;\n if (matcher) {\n // If we have a postFinder, or filtered seed, or non-seed postFilter\n // or preexisting results,\n matcherOut = postFinder || (seed ? preFilter : preexisting || postFilter) ?\n // ...intermediate processing is necessary\n [] :\n // ...otherwise use results directly\n results;\n\n // Find primary matches\n matcher(matcherIn, matcherOut, context, xml);\n } else {\n matcherOut = matcherIn;\n }\n\n // Apply postFilter\n if (postFilter) {\n temp = condense(matcherOut, postMap);\n postFilter(temp, [], context, xml);\n\n // Un-match failing elements by moving them back to matcherIn\n i = temp.length;\n while (i--) {\n if (elem = temp[i]) {\n matcherOut[postMap[i]] = !(matcherIn[postMap[i]] = elem);\n }\n }\n }\n if (seed) {\n if (postFinder || preFilter) {\n if (postFinder) {\n // Get the final matcherOut by condensing this intermediate into postFinder contexts\n temp = [];\n i = matcherOut.length;\n while (i--) {\n if (elem = matcherOut[i]) {\n // Restore matcherIn since elem is not yet a final match\n temp.push(matcherIn[i] = elem);\n }\n }\n postFinder(null, matcherOut = [], temp, xml);\n }\n\n // Move matched elements from seed to results to keep them synchronized\n i = matcherOut.length;\n while (i--) {\n if ((elem = matcherOut[i]) && (temp = postFinder ? indexOf.call(seed, elem) : preMap[i]) > -1) {\n seed[temp] = !(results[temp] = elem);\n }\n }\n }\n\n // Add elements to results, through postFinder if defined\n } else {\n matcherOut = condense(matcherOut === results ? matcherOut.splice(preexisting, matcherOut.length) : matcherOut);\n if (postFinder) {\n postFinder(null, results, matcherOut, xml);\n } else {\n push.apply(results, matcherOut);\n }\n }\n });\n }\n function matcherFromTokens(tokens) {\n var checkContext,\n matcher,\n j,\n len = tokens.length,\n leadingRelative = Expr.relative[tokens[0].type],\n implicitRelative = leadingRelative || Expr.relative[\" \"],\n i = leadingRelative ? 1 : 0,\n // The foundational matcher ensures that elements are reachable from top-level context(s)\n matchContext = addCombinator(function (elem) {\n return elem === checkContext;\n }, implicitRelative, true),\n matchAnyContext = addCombinator(function (elem) {\n return indexOf.call(checkContext, elem) > -1;\n }, implicitRelative, true),\n matchers = [function (elem, context, xml) {\n // Support: IE 11+, Edge 17 - 18+\n // IE/Edge sometimes throw a \"Permission denied\" error when strict-comparing\n // two documents; shallow comparisons work.\n // eslint-disable-next-line eqeqeq\n var ret = !leadingRelative && (xml || context != outermostContext) || ((checkContext = context).nodeType ? matchContext(elem, context, xml) : matchAnyContext(elem, context, xml));\n\n // Avoid hanging onto element\n // (see https://github.com/jquery/sizzle/issues/299)\n checkContext = null;\n return ret;\n }];\n for (; i < len; i++) {\n if (matcher = Expr.relative[tokens[i].type]) {\n matchers = [addCombinator(elementMatcher(matchers), matcher)];\n } else {\n matcher = Expr.filter[tokens[i].type].apply(null, tokens[i].matches);\n\n // Return special upon seeing a positional matcher\n if (matcher[expando]) {\n // Find the next relative operator (if any) for proper handling\n j = ++i;\n for (; j < len; j++) {\n if (Expr.relative[tokens[j].type]) {\n break;\n }\n }\n return setMatcher(i > 1 && elementMatcher(matchers), i > 1 && toSelector(\n // If the preceding token was a descendant combinator, insert an implicit any-element `*`\n tokens.slice(0, i - 1).concat({\n value: tokens[i - 2].type === \" \" ? \"*\" : \"\"\n })).replace(rtrimCSS, \"$1\"), matcher, i < j && matcherFromTokens(tokens.slice(i, j)), j < len && matcherFromTokens(tokens = tokens.slice(j)), j < len && toSelector(tokens));\n }\n matchers.push(matcher);\n }\n }\n return elementMatcher(matchers);\n }\n function matcherFromGroupMatchers(elementMatchers, setMatchers) {\n var bySet = setMatchers.length > 0,\n byElement = elementMatchers.length > 0,\n superMatcher = function (seed, context, xml, results, outermost) {\n var elem,\n j,\n matcher,\n matchedCount = 0,\n i = \"0\",\n unmatched = seed && [],\n setMatched = [],\n contextBackup = outermostContext,\n // We must always have either seed elements or outermost context\n elems = seed || byElement && Expr.find.TAG(\"*\", outermost),\n // Use integer dirruns iff this is the outermost matcher\n dirrunsUnique = dirruns += contextBackup == null ? 1 : Math.random() || 0.1,\n len = elems.length;\n if (outermost) {\n // Support: IE 11+, Edge 17 - 18+\n // IE/Edge sometimes throw a \"Permission denied\" error when strict-comparing\n // two documents; shallow comparisons work.\n // eslint-disable-next-line eqeqeq\n outermostContext = context == document || context || outermost;\n }\n\n // Add elements passing elementMatchers directly to results\n // Support: iOS <=7 - 9 only\n // Tolerate NodeList properties (IE: \"length\"; Safari: <number>) matching\n // elements by id. (see trac-14142)\n for (; i !== len && (elem = elems[i]) != null; i++) {\n if (byElement && elem) {\n j = 0;\n\n // Support: IE 11+, Edge 17 - 18+\n // IE/Edge sometimes throw a \"Permission denied\" error when strict-comparing\n // two documents; shallow comparisons work.\n // eslint-disable-next-line eqeqeq\n if (!context && elem.ownerDocument != document) {\n setDocument(elem);\n xml = !documentIsHTML;\n }\n while (matcher = elementMatchers[j++]) {\n if (matcher(elem, context || document, xml)) {\n push.call(results, elem);\n break;\n }\n }\n if (outermost) {\n dirruns = dirrunsUnique;\n }\n }\n\n // Track unmatched elements for set filters\n if (bySet) {\n // They will have gone through all possible matchers\n if (elem = !matcher && elem) {\n matchedCount--;\n }\n\n // Lengthen the array for every element, matched or not\n if (seed) {\n unmatched.push(elem);\n }\n }\n }\n\n // `i` is now the count of elements visited above, and adding it to `matchedCount`\n // makes the latter nonnegative.\n matchedCount += i;\n\n // Apply set filters to unmatched elements\n // NOTE: This can be skipped if there are no unmatched elements (i.e., `matchedCount`\n // equals `i`), unless we didn't visit _any_ elements in the above loop because we have\n // no element matchers and no seed.\n // Incrementing an initially-string \"0\" `i` allows `i` to remain a string only in that\n // case, which will result in a \"00\" `matchedCount` that differs from `i` but is also\n // numerically zero.\n if (bySet && i !== matchedCount) {\n j = 0;\n while (matcher = setMatchers[j++]) {\n matcher(unmatched, setMatched, context, xml);\n }\n if (seed) {\n // Reintegrate element matches to eliminate the need for sorting\n if (matchedCount > 0) {\n while (i--) {\n if (!(unmatched[i] || setMatched[i])) {\n setMatched[i] = pop.call(results);\n }\n }\n }\n\n // Discard index placeholder values to get only actual matches\n setMatched = condense(setMatched);\n }\n\n // Add matches to results\n push.apply(results, setMatched);\n\n // Seedless set matches succeeding multiple successful matchers stipulate sorting\n if (outermost && !seed && setMatched.length > 0 && matchedCount + setMatchers.length > 1) {\n jQuery.uniqueSort(results);\n }\n }\n\n // Override manipulation of globals by nested matchers\n if (outermost) {\n dirruns = dirrunsUnique;\n outermostContext = contextBackup;\n }\n return unmatched;\n };\n return bySet ? markFunction(superMatcher) : superMatcher;\n }\n function compile(selector, match /* Internal Use Only */) {\n var i,\n setMatchers = [],\n elementMatchers = [],\n cached = compilerCache[selector + \" \"];\n if (!cached) {\n // Generate a function of recursive functions that can be used to check each element\n if (!match) {\n match = tokenize(selector);\n }\n i = match.length;\n while (i--) {\n cached = matcherFromTokens(match[i]);\n if (cached[expando]) {\n setMatchers.push(cached);\n } else {\n elementMatchers.push(cached);\n }\n }\n\n // Cache the compiled function\n cached = compilerCache(selector, matcherFromGroupMatchers(elementMatchers, setMatchers));\n\n // Save selector and tokenization\n cached.selector = selector;\n }\n return 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 */\n function select(selector, context, results, seed) {\n var i,\n tokens,\n token,\n type,\n find,\n compiled = typeof selector === \"function\" && selector,\n match = !seed && tokenize(selector = compiled.selector || selector);\n results = results || [];\n\n // Try to minimize operations if there is only one selector in the list and no seed\n // (the latter of which guarantees us context)\n if (match.length === 1) {\n // Reduce context if the leading compound selector is an ID\n tokens = match[0] = match[0].slice(0);\n if (tokens.length > 2 && (token = tokens[0]).type === \"ID\" && context.nodeType === 9 && documentIsHTML && Expr.relative[tokens[1].type]) {\n context = (Expr.find.ID(token.matches[0].replace(runescape, funescape), context) || [])[0];\n if (!context) {\n return results;\n\n // Precompiled matchers will still verify ancestry, so step up a level\n } else if (compiled) {\n context = context.parentNode;\n }\n selector = selector.slice(tokens.shift().value.length);\n }\n\n // Fetch a seed set for right-to-left matching\n i = matchExpr.needsContext.test(selector) ? 0 : tokens.length;\n while (i--) {\n token = tokens[i];\n\n // Abort if we hit a combinator\n if (Expr.relative[type = token.type]) {\n break;\n }\n if (find = Expr.find[type]) {\n // Search, expanding context for leading sibling combinators\n if (seed = find(token.matches[0].replace(runescape, funescape), rsibling.test(tokens[0].type) && testContext(context.parentNode) || context)) {\n // If seed is empty or no tokens remain, we can return early\n tokens.splice(i, 1);\n selector = seed.length && toSelector(tokens);\n if (!selector) {\n push.apply(results, seed);\n return results;\n }\n break;\n }\n }\n }\n }\n\n // Compile and execute a filtering function if one is not provided\n // Provide `match` to avoid retokenization if we modified the selector above\n (compiled || compile(selector, match))(seed, context, !documentIsHTML, results, !context || rsibling.test(selector) && testContext(context.parentNode) || context);\n return results;\n }\n\n // One-time assignments\n\n // Support: Android <=4.0 - 4.1+\n // Sort stability\n support.sortStable = expando.split(\"\").sort(sortOrder).join(\"\") === expando;\n\n // Initialize against the default document\n setDocument();\n\n // Support: Android <=4.0 - 4.1+\n // Detached nodes confoundingly follow *each other*\n support.sortDetached = assert(function (el) {\n // Should return 1, but returns 4 (following)\n return el.compareDocumentPosition(document.createElement(\"fieldset\")) & 1;\n });\n jQuery.find = find;\n\n // Deprecated\n jQuery.expr[\":\"] = jQuery.expr.pseudos;\n jQuery.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.\n find.compile = compile;\n find.select = select;\n find.setDocument = setDocument;\n find.tokenize = tokenize;\n find.escape = jQuery.escapeSelector;\n find.getText = jQuery.text;\n find.isXML = jQuery.isXMLDoc;\n find.selectors = jQuery.expr;\n find.support = jQuery.support;\n find.uniqueSort = jQuery.uniqueSort;\n\n /* eslint-enable */\n })();\n});","//! moment.js\n//! version : 2.30.1\n//! authors : Tim Wood, Iskren Chernev, Moment.js contributors\n//! license : MIT\n//! momentjs.com\n\n;\n(function (global, factory) {\n typeof exports === 'object' && typeof module !== 'undefined' ? module.exports = factory() : typeof define === 'function' && define.amd ? define(factory) : global.moment = factory();\n})(this, function () {\n 'use strict';\n\n var hookCallback;\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 function isArray(input) {\n return input instanceof Array || Object.prototype.toString.call(input) === '[object Array]';\n }\n function isObject(input) {\n // IE8 will treat undefined and null as object if it wasn't for\n // input != null\n return input != null && Object.prototype.toString.call(input) === '[object Object]';\n }\n function hasOwnProp(a, b) {\n return Object.prototype.hasOwnProperty.call(a, b);\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 function isUndefined(input) {\n return input === void 0;\n }\n function isNumber(input) {\n return typeof input === 'number' || Object.prototype.toString.call(input) === '[object Number]';\n }\n function isDate(input) {\n return input instanceof Date || Object.prototype.toString.call(input) === '[object Date]';\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 function extend(a, b) {\n for (var i in b) {\n if (hasOwnProp(b, i)) {\n a[i] = b[i];\n }\n }\n if (hasOwnProp(b, 'toString')) {\n a.toString = b.toString;\n }\n if (hasOwnProp(b, 'valueOf')) {\n a.valueOf = b.valueOf;\n }\n return a;\n }\n function createUTC(input, format, locale, strict) {\n return createLocalOrUTC(input, format, locale, strict, true).utc();\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 function getParsingFlags(m) {\n if (m._pf == null) {\n m._pf = defaultParsingFlags();\n }\n return m._pf;\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 for (i = 0; i < len; i++) {\n if (i in t && fun.call(this, t[i], i, t)) {\n return true;\n }\n }\n return false;\n };\n }\n function isValid(m) {\n var flags = null,\n parsedParts = false,\n isNowValid = m._d && !isNaN(m._d.getTime());\n if (isNowValid) {\n flags = getParsingFlags(m);\n parsedParts = some.call(flags.parsedDateParts, function (i) {\n return i != null;\n });\n isNowValid = flags.overflow < 0 && !flags.empty && !flags.invalidEra && !flags.invalidMonth && !flags.invalidWeekday && !flags.weekdayMismatch && !flags.nullInput && !flags.invalidFormat && !flags.userInvalidated && (!flags.meridiem || flags.meridiem && parsedParts);\n if (m._strict) {\n isNowValid = isNowValid && flags.charsLeftOver === 0 && flags.unusedTokens.length === 0 && flags.bigHour === undefined;\n }\n }\n if (Object.isFrozen == null || !Object.isFrozen(m)) {\n m._isValid = isNowValid;\n } else {\n return isNowValid;\n }\n return m._isValid;\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 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 function copyConfig(to, from) {\n var i,\n prop,\n val,\n momentPropertiesLen = momentProperties.length;\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 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 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 function isMoment(obj) {\n return obj instanceof Moment || obj != null && obj._isAMomentObject != null;\n }\n function warn(msg) {\n if (hooks.suppressDeprecationWarnings === false && typeof console !== 'undefined' && console.warn) {\n console.warn('Deprecation warning: ' + msg);\n }\n }\n function deprecate(msg, fn) {\n var firstTime = true;\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(msg + '\\nArguments: ' + Array.prototype.slice.call(args).join('') + '\\n' + new Error().stack);\n firstTime = false;\n }\n return fn.apply(this, arguments);\n }, fn);\n }\n var deprecations = {};\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 hooks.suppressDeprecationWarnings = false;\n hooks.deprecationHandler = null;\n function isFunction(input) {\n return typeof Function !== 'undefined' && input instanceof Function || Object.prototype.toString.call(input) === '[object Function]';\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((this._dayOfMonthOrdinalParse.source || this._ordinalParse.source) + '|' + /\\d{1,2}/.source);\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 (hasOwnProp(parentConfig, prop) && !hasOwnProp(childConfig, prop) && isObject(parentConfig[prop])) {\n // make sure changes to properties don't modify parent config\n res[prop] = extend({}, res[prop]);\n }\n }\n return res;\n }\n function Locale(config) {\n if (config != null) {\n this.set(config);\n }\n }\n var keys;\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 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 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 function zeroFill(number, targetLength, forceSign) {\n var absNumber = '' + Math.abs(number),\n zerosToFill = targetLength - absNumber.length,\n sign = number >= 0;\n return (sign ? forceSign ? '+' : '' : '-') + Math.pow(10, Math.max(0, zerosToFill)).toString().substr(1) + absNumber;\n }\n var formattingTokens = /(\\[[^\\[]*\\])|(\\\\)?([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(func.apply(this, arguments), token);\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 function makeFormatFunction(format) {\n var array = format.match(formattingTokens),\n i,\n length;\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 return function (mom) {\n var output = '',\n i;\n for (i = 0; i < length; i++) {\n output += isFunction(array[i]) ? array[i].call(mom, format) : 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 format = expandFormat(format, m.localeData());\n formatFunctions[format] = formatFunctions[format] || makeFormatFunction(format);\n return formatFunctions[format](m);\n }\n function expandFormat(format, locale) {\n var i = 5;\n function replaceLongDateFormatTokens(input) {\n return locale.longDateFormat(input) || input;\n }\n localFormattingTokens.lastIndex = 0;\n while (i >= 0 && localFormattingTokens.test(format)) {\n format = format.replace(localFormattingTokens, replaceLongDateFormatTokens);\n localFormattingTokens.lastIndex = 0;\n i -= 1;\n }\n return format;\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 function longDateFormat(key) {\n var format = this._longDateFormat[key],\n formatUpper = this._longDateFormat[key.toUpperCase()];\n if (format || !formatUpper) {\n return format;\n }\n this._longDateFormat[key] = formatUpper.match(formattingTokens).map(function (tok) {\n if (tok === 'MMMM' || tok === 'MM' || tok === 'DD' || tok === 'dddd') {\n return tok.slice(1);\n }\n return tok;\n }).join('');\n return this._longDateFormat[key];\n }\n var defaultInvalidDate = 'Invalid date';\n function invalidDate() {\n return this._invalidDate;\n }\n var defaultOrdinal = '%d',\n defaultDayOfMonthOrdinalParse = /\\d{1,2}/;\n function ordinal(number) {\n return this._ordinal.replace('%d', number);\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 function relativeTime(number, withoutSuffix, string, isFuture) {\n var output = this._relativeTime[string];\n return isFunction(output) ? output(number, withoutSuffix, string, isFuture) : output.replace(/%d/i, number);\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 var aliases = {\n D: 'date',\n dates: 'date',\n date: 'date',\n d: 'day',\n days: 'day',\n day: 'day',\n e: 'weekday',\n weekdays: 'weekday',\n weekday: 'weekday',\n E: 'isoWeekday',\n isoweekdays: 'isoWeekday',\n isoweekday: 'isoWeekday',\n DDD: 'dayOfYear',\n dayofyears: 'dayOfYear',\n dayofyear: 'dayOfYear',\n h: 'hour',\n hours: 'hour',\n hour: 'hour',\n ms: 'millisecond',\n milliseconds: 'millisecond',\n millisecond: 'millisecond',\n m: 'minute',\n minutes: 'minute',\n minute: 'minute',\n M: 'month',\n months: 'month',\n month: 'month',\n Q: 'quarter',\n quarters: 'quarter',\n quarter: 'quarter',\n s: 'second',\n seconds: 'second',\n second: 'second',\n gg: 'weekYear',\n weekyears: 'weekYear',\n weekyear: 'weekYear',\n GG: 'isoWeekYear',\n isoweekyears: 'isoWeekYear',\n isoweekyear: 'isoWeekYear',\n w: 'week',\n weeks: 'week',\n week: 'week',\n W: 'isoWeek',\n isoweeks: 'isoWeek',\n isoweek: 'isoWeek',\n y: 'year',\n years: 'year',\n year: 'year'\n };\n function normalizeUnits(units) {\n return typeof units === 'string' ? aliases[units] || aliases[units.toLowerCase()] : undefined;\n }\n function normalizeObjectUnits(inputObject) {\n var normalizedInput = {},\n normalizedProp,\n prop;\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 return normalizedInput;\n }\n var priorities = {\n date: 9,\n day: 11,\n weekday: 11,\n isoWeekday: 11,\n dayOfYear: 4,\n hour: 13,\n millisecond: 16,\n minute: 14,\n month: 8,\n quarter: 7,\n second: 15,\n weekYear: 1,\n isoWeekYear: 1,\n week: 5,\n isoWeek: 5,\n year: 1\n };\n function getPrioritizedUnits(unitsObj) {\n var units = [],\n u;\n for (u in unitsObj) {\n if (hasOwnProp(unitsObj, u)) {\n units.push({\n unit: u,\n priority: priorities[u]\n });\n }\n }\n units.sort(function (a, b) {\n return a.priority - b.priority;\n });\n return units;\n }\n var match1 = /\\d/,\n // 0 - 9\n match2 = /\\d\\d/,\n // 00 - 99\n match3 = /\\d{3}/,\n // 000 - 999\n match4 = /\\d{4}/,\n // 0000 - 9999\n match6 = /[+-]?\\d{6}/,\n // -999999 - 999999\n match1to2 = /\\d\\d?/,\n // 0 - 99\n match3to4 = /\\d\\d\\d\\d?/,\n // 999 - 9999\n match5to6 = /\\d\\d\\d\\d\\d\\d?/,\n // 99999 - 999999\n match1to3 = /\\d{1,3}/,\n // 0 - 999\n match1to4 = /\\d{1,4}/,\n // 0 - 9999\n match1to6 = /[+-]?\\d{1,6}/,\n // -999999 - 999999\n matchUnsigned = /\\d+/,\n // 0 - inf\n matchSigned = /[+-]?\\d+/,\n // -inf - inf\n matchOffset = /Z|[+-]\\d\\d:?\\d\\d/gi,\n // +00:00 -00:00 +0000 -0000 or Z\n matchShortOffset = /Z|[+-]\\d\\d(?::?\\d\\d)?/gi,\n // +00 -00 +00:00 -00:00 +0000 -0000 or Z\n matchTimestamp = /[+-]?\\d+(\\.\\d{1,3})?/,\n // 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 = /[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 match1to2NoLeadingZero = /^[1-9]\\d?/,\n // 1-99\n match1to2HasZero = /^([1-9]\\d|\\d)/,\n // 0-99\n regexes;\n regexes = {};\n function addRegexToken(token, regex, strictRegex) {\n regexes[token] = isFunction(regex) ? regex : function (isStrict, localeData) {\n return isStrict && strictRegex ? strictRegex : regex;\n };\n }\n function getParseRegexForToken(token, config) {\n if (!hasOwnProp(regexes, token)) {\n return new RegExp(unescapeFormat(token));\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(s.replace('\\\\', '').replace(/\\\\(\\[)|\\\\(\\])|\\[([^\\]\\[]*)\\]|\\\\(.)/g, function (matched, p1, p2, p3, p4) {\n return p1 || p2 || p3 || p4;\n }));\n }\n function regexEscape(s) {\n return s.replace(/[-\\/\\\\^$*+?.()|[\\]{}]/g, '\\\\$&');\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 function toInt(argumentForCoercion) {\n var coercedNumber = +argumentForCoercion,\n value = 0;\n if (coercedNumber !== 0 && isFinite(coercedNumber)) {\n value = absFloor(coercedNumber);\n }\n return value;\n }\n var tokens = {};\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 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 function addTimeToArrayFromToken(token, input, config) {\n if (input != null && hasOwnProp(tokens, token)) {\n tokens[token](input, config._a, config, token);\n }\n }\n function isLeapYear(year) {\n return year % 4 === 0 && year % 100 !== 0 || year % 400 === 0;\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 // FORMATTING\n\n addFormatToken('Y', 0, 0, function () {\n var y = this.year();\n return y <= 9999 ? zeroFill(y, 4) : '+' + y;\n });\n addFormatToken(0, ['YY', 2], 0, function () {\n return this.year() % 100;\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 // 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 addParseToken(['YYYYY', 'YYYYYY'], YEAR);\n addParseToken('YYYY', function (input, array) {\n array[YEAR] = 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 function getIsLeapYear() {\n return isLeapYear(this.year());\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 function get(mom, unit) {\n if (!mom.isValid()) {\n return NaN;\n }\n var d = mom._d,\n isUTC = mom._isUTC;\n switch (unit) {\n case 'Milliseconds':\n return isUTC ? d.getUTCMilliseconds() : d.getMilliseconds();\n case 'Seconds':\n return isUTC ? d.getUTCSeconds() : d.getSeconds();\n case 'Minutes':\n return isUTC ? d.getUTCMinutes() : d.getMinutes();\n case 'Hours':\n return isUTC ? d.getUTCHours() : d.getHours();\n case 'Date':\n return isUTC ? d.getUTCDate() : d.getDate();\n case 'Day':\n return isUTC ? d.getUTCDay() : d.getDay();\n case 'Month':\n return isUTC ? d.getUTCMonth() : d.getMonth();\n case 'FullYear':\n return isUTC ? d.getUTCFullYear() : d.getFullYear();\n default:\n return NaN;\n // Just in case\n }\n }\n function set$1(mom, unit, value) {\n var d, isUTC, year, month, date;\n if (!mom.isValid() || isNaN(value)) {\n return;\n }\n d = mom._d;\n isUTC = mom._isUTC;\n switch (unit) {\n case 'Milliseconds':\n return void (isUTC ? d.setUTCMilliseconds(value) : d.setMilliseconds(value));\n case 'Seconds':\n return void (isUTC ? d.setUTCSeconds(value) : d.setSeconds(value));\n case 'Minutes':\n return void (isUTC ? d.setUTCMinutes(value) : d.setMinutes(value));\n case 'Hours':\n return void (isUTC ? d.setUTCHours(value) : d.setHours(value));\n case 'Date':\n return void (isUTC ? d.setUTCDate(value) : d.setDate(value));\n // case 'Day': // Not real\n // return void (isUTC ? d.setUTCDay(value) : d.setDay(value));\n // case 'Month': // Not used because we need to pass two variables\n // return void (isUTC ? d.setUTCMonth(value) : d.setMonth(value));\n case 'FullYear':\n break;\n // See below ...\n default:\n return;\n // Just in case\n }\n year = value;\n month = mom.month();\n date = mom.date();\n date = date === 29 && month === 1 && !isLeapYear(year) ? 28 : date;\n void (isUTC ? d.setUTCFullYear(year, month, date) : d.setFullYear(year, month, date));\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 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 function mod(n, x) {\n return (n % x + x) % x;\n }\n var indexOf;\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 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 ? isLeapYear(year) ? 29 : 28 : 31 - modMonth % 7 % 2;\n }\n\n // FORMATTING\n\n addFormatToken('M', ['MM', 2], 'Mo', function () {\n return this.month() + 1;\n });\n addFormatToken('MMM', 0, 0, function (format) {\n return this.localeData().monthsShort(this, format);\n });\n addFormatToken('MMMM', 0, 0, function (format) {\n return this.localeData().months(this, format);\n });\n\n // PARSING\n\n addRegexToken('M', match1to2, match1to2NoLeadingZero);\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 addParseToken(['M', 'MM'], function (input, array) {\n array[MONTH] = toInt(input) - 1;\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 = 'January_February_March_April_May_June_July_August_September_October_November_December'.split('_'),\n defaultLocaleMonthsShort = '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 function localeMonths(m, format) {\n if (!m) {\n return isArray(this._months) ? this._months : this._months['standalone'];\n }\n return isArray(this._months) ? this._months[m.month()] : this._months[(this._months.isFormat || MONTHS_IN_FORMAT).test(format) ? 'format' : 'standalone'][m.month()];\n }\n function localeMonthsShort(m, format) {\n if (!m) {\n return isArray(this._monthsShort) ? this._monthsShort : this._monthsShort['standalone'];\n }\n return isArray(this._monthsShort) ? this._monthsShort[m.month()] : this._monthsShort[MONTHS_IN_FORMAT.test(format) ? 'format' : 'standalone'][m.month()];\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(mom, '').toLocaleLowerCase();\n this._longMonthsParse[i] = this.months(mom, '').toLocaleLowerCase();\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 function localeMonthsParse(monthName, format, strict) {\n var i, mom, regex;\n if (this._monthsParseExact) {\n return handleStrictParse.call(this, monthName, format, strict);\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('^' + this.months(mom, '').replace('.', '') + '$', 'i');\n this._shortMonthsParse[i] = new RegExp('^' + this.monthsShort(mom, '').replace('.', '') + '$', 'i');\n }\n if (!strict && !this._monthsParse[i]) {\n regex = '^' + this.months(mom, '') + '|^' + this.monthsShort(mom, '');\n this._monthsParse[i] = new RegExp(regex.replace('.', ''), 'i');\n }\n // test the regex\n if (strict && format === 'MMMM' && this._longMonthsParse[i].test(monthName)) {\n return i;\n } else if (strict && format === 'MMM' && this._shortMonthsParse[i].test(monthName)) {\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 if (!mom.isValid()) {\n // No op\n return mom;\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 var month = value,\n date = mom.date();\n date = date < 29 ? date : Math.min(date, daysInMonth(mom.year(), month));\n void (mom._isUTC ? mom._d.setUTCMonth(month, date) : mom._d.setMonth(month, date));\n return mom;\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 function getDaysInMonth() {\n return daysInMonth(this.year(), this.month());\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 ? this._monthsShortStrictRegex : this._monthsShortRegex;\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 ? this._monthsStrictRegex : this._monthsRegex;\n }\n }\n function computeMonthsParse() {\n function cmpLenRev(a, b) {\n return b.length - a.length;\n }\n var shortPieces = [],\n longPieces = [],\n mixedPieces = [],\n i,\n mom,\n shortP,\n longP;\n for (i = 0; i < 12; i++) {\n // make the regex if we don't have it already\n mom = createUTC([2000, i]);\n shortP = regexEscape(this.monthsShort(mom, ''));\n longP = regexEscape(this.months(mom, ''));\n shortPieces.push(shortP);\n longPieces.push(longP);\n mixedPieces.push(longP);\n mixedPieces.push(shortP);\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 this._monthsRegex = new RegExp('^(' + mixedPieces.join('|') + ')', 'i');\n this._monthsShortRegex = this._monthsRegex;\n this._monthsStrictRegex = new RegExp('^(' + longPieces.join('|') + ')', 'i');\n this._monthsShortStrictRegex = new RegExp('^(' + shortPieces.join('|') + ')', 'i');\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 return date;\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 return date;\n }\n\n // start-of-first-week - start-of-year\n function firstWeekOffset(year, dow, doy) {\n var\n // 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 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 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 return {\n year: resYear,\n dayOfYear: resDayOfYear\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 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 return {\n week: resWeek,\n year: resYear\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 // PARSING\n\n addRegexToken('w', match1to2, match1to2NoLeadingZero);\n addRegexToken('ww', match1to2, match2);\n addRegexToken('W', match1to2, match1to2NoLeadingZero);\n addRegexToken('WW', match1to2, match2);\n addWeekParseToken(['w', 'ww', 'W', 'WW'], function (input, week, config, token) {\n week[token.substr(0, 1)] = toInt(input);\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 var defaultLocaleWeek = {\n dow: 0,\n // 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 function localeFirstDayOfWeek() {\n return this._week.dow;\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 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 addFormatToken('dd', 0, 0, function (format) {\n return this.localeData().weekdaysMin(this, format);\n });\n addFormatToken('ddd', 0, 0, function (format) {\n return this.localeData().weekdaysShort(this, format);\n });\n addFormatToken('dddd', 0, 0, function (format) {\n return this.localeData().weekdays(this, format);\n });\n addFormatToken('e', 0, 0, 'weekday');\n addFormatToken('E', 0, 0, 'isoWeekday');\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 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 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 if (!isNaN(input)) {\n return parseInt(input, 10);\n }\n input = locale.weekdaysParse(input);\n if (typeof input === 'number') {\n return input;\n }\n return null;\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 var defaultLocaleWeekdays = '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 function localeWeekdays(m, format) {\n var weekdays = isArray(this._weekdays) ? this._weekdays : this._weekdays[m && m !== true && this._weekdays.isFormat.test(format) ? 'format' : 'standalone'];\n return m === true ? shiftWeekdays(weekdays, this._week.dow) : m ? weekdays[m.day()] : weekdays;\n }\n function localeWeekdaysShort(m) {\n return m === true ? shiftWeekdays(this._weekdaysShort, this._week.dow) : m ? this._weekdaysShort[m.day()] : this._weekdaysShort;\n }\n function localeWeekdaysMin(m) {\n return m === true ? shiftWeekdays(this._weekdaysMin, this._week.dow) : m ? this._weekdaysMin[m.day()] : this._weekdaysMin;\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 for (i = 0; i < 7; ++i) {\n mom = createUTC([2000, 1]).day(i);\n this._minWeekdaysParse[i] = this.weekdaysMin(mom, '').toLocaleLowerCase();\n this._shortWeekdaysParse[i] = this.weekdaysShort(mom, '').toLocaleLowerCase();\n this._weekdaysParse[i] = this.weekdays(mom, '').toLocaleLowerCase();\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 function localeWeekdaysParse(weekdayName, format, strict) {\n var i, mom, regex;\n if (this._weekdaysParseExact) {\n return handleStrictParse$1.call(this, weekdayName, format, strict);\n }\n if (!this._weekdaysParse) {\n this._weekdaysParse = [];\n this._minWeekdaysParse = [];\n this._shortWeekdaysParse = [];\n this._fullWeekdaysParse = [];\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('^' + this.weekdays(mom, '').replace('.', '\\\\.?') + '$', 'i');\n this._shortWeekdaysParse[i] = new RegExp('^' + this.weekdaysShort(mom, '').replace('.', '\\\\.?') + '$', 'i');\n this._minWeekdaysParse[i] = new RegExp('^' + this.weekdaysMin(mom, '').replace('.', '\\\\.?') + '$', 'i');\n }\n if (!this._weekdaysParse[i]) {\n regex = '^' + this.weekdays(mom, '') + '|^' + this.weekdaysShort(mom, '') + '|^' + this.weekdaysMin(mom, '');\n this._weekdaysParse[i] = new RegExp(regex.replace('.', ''), 'i');\n }\n // test the regex\n if (strict && format === 'dddd' && this._fullWeekdaysParse[i].test(weekdayName)) {\n return i;\n } else if (strict && format === 'ddd' && this._shortWeekdaysParse[i].test(weekdayName)) {\n return i;\n } else if (strict && format === 'dd' && this._minWeekdaysParse[i].test(weekdayName)) {\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 = get(this, 'Day');\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 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 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 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 ? this._weekdaysStrictRegex : this._weekdaysRegex;\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 ? this._weekdaysShortStrictRegex : this._weekdaysShortRegex;\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 ? this._weekdaysMinStrictRegex : this._weekdaysMinRegex;\n }\n }\n function computeWeekdaysParse() {\n function cmpLenRev(a, b) {\n return b.length - a.length;\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 this._weekdaysRegex = new RegExp('^(' + mixedPieces.join('|') + ')', 'i');\n this._weekdaysShortRegex = this._weekdaysRegex;\n this._weekdaysMinRegex = this._weekdaysRegex;\n this._weekdaysStrictRegex = new RegExp('^(' + longPieces.join('|') + ')', 'i');\n this._weekdaysShortStrictRegex = new RegExp('^(' + shortPieces.join('|') + ')', 'i');\n this._weekdaysMinStrictRegex = new RegExp('^(' + minPieces.join('|') + ')', 'i');\n }\n\n // FORMATTING\n\n function hFormat() {\n return this.hours() % 12 || 12;\n }\n function kFormat() {\n return this.hours() || 24;\n }\n addFormatToken('H', ['HH', 2], 0, 'hour');\n addFormatToken('h', ['hh', 2], 0, hFormat);\n addFormatToken('k', ['kk', 2], 0, kFormat);\n addFormatToken('hmm', 0, 0, function () {\n return '' + hFormat.apply(this) + zeroFill(this.minutes(), 2);\n });\n addFormatToken('hmmss', 0, 0, function () {\n return '' + hFormat.apply(this) + zeroFill(this.minutes(), 2) + zeroFill(this.seconds(), 2);\n });\n addFormatToken('Hmm', 0, 0, function () {\n return '' + this.hours() + zeroFill(this.minutes(), 2);\n });\n addFormatToken('Hmmss', 0, 0, function () {\n return '' + this.hours() + zeroFill(this.minutes(), 2) + zeroFill(this.seconds(), 2);\n });\n function meridiem(token, lowercase) {\n addFormatToken(token, 0, 0, function () {\n return this.localeData().meridiem(this.hours(), this.minutes(), lowercase);\n });\n }\n meridiem('a', true);\n meridiem('A', false);\n\n // PARSING\n\n function matchMeridiem(isStrict, locale) {\n return locale._meridiemParse;\n }\n addRegexToken('a', matchMeridiem);\n addRegexToken('A', matchMeridiem);\n addRegexToken('H', match1to2, match1to2HasZero);\n addRegexToken('h', match1to2, match1to2NoLeadingZero);\n addRegexToken('k', match1to2, match1to2NoLeadingZero);\n addRegexToken('HH', match1to2, match2);\n addRegexToken('hh', match1to2, match2);\n addRegexToken('kk', match1to2, match2);\n addRegexToken('hmm', match3to4);\n addRegexToken('hmmss', match5to6);\n addRegexToken('Hmm', match3to4);\n addRegexToken('Hmmss', match5to6);\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 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 function localeMeridiem(hours, minutes, isLower) {\n if (hours > 11) {\n return isLower ? 'pm' : 'PM';\n } else {\n return isLower ? 'am' : 'AM';\n }\n }\n var baseConfig = {\n calendar: defaultCalendar,\n longDateFormat: defaultLongDateFormat,\n invalidDate: defaultInvalidDate,\n ordinal: defaultOrdinal,\n dayOfMonthOrdinalParse: defaultDayOfMonthOrdinalParse,\n relativeTime: defaultRelativeTime,\n months: defaultLocaleMonths,\n monthsShort: defaultLocaleMonthsShort,\n week: defaultLocaleWeek,\n weekdays: defaultLocaleWeekdays,\n weekdaysMin: defaultLocaleWeekdaysMin,\n weekdaysShort: defaultLocaleWeekdaysShort,\n meridiemParse: defaultLocaleMeridiemParse\n };\n\n // internal storage for locale config files\n var locales = {},\n localeFamilies = {},\n globalLocale;\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 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 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 (next && next.length >= j && commonPrefix(split, next) >= j - 1) {\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 function isLocaleNameSane(name) {\n // Prevent names that look like filesystem paths, i.e contain '/' or '\\'\n // Ensure name is available and function returns boolean\n return !!(name && name.match('^[^/\\\\\\\\]*$'));\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 (locales[name] === undefined && typeof module !== 'undefined' && module && module.exports && isLocaleNameSane(name)) {\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 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('Locale ' + key + ' not found. Did you forget to load it?');\n }\n }\n }\n return globalLocale._abbr;\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('defineLocaleOverride', 'use moment.updateLocale(localeName, config) to change ' + 'an existing locale. moment.defineLocale(localeName, ' + 'config) should only be used for creating a new locale ' + 'See http://momentjs.com/guides/#/warnings/define-locale/ for more info.');\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 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 return locales[name];\n } else {\n // useful for testing\n delete locales[name];\n return null;\n }\n }\n function updateLocale(name, config) {\n if (config != null) {\n var locale,\n tmpLocale,\n parentConfig = baseConfig;\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 if (key && key._locale && key._locale._abbr) {\n key = key._locale._abbr;\n }\n if (!key) {\n return globalLocale;\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 return chooseLocale(key);\n }\n function listLocales() {\n return keys(locales);\n }\n function checkOverflow(m) {\n var overflow,\n a = m._a;\n if (a && getParsingFlags(m).overflow === -2) {\n overflow = a[MONTH] < 0 || a[MONTH] > 11 ? MONTH : a[DATE] < 1 || a[DATE] > daysInMonth(a[YEAR], a[MONTH]) ? DATE : a[HOUR] < 0 || a[HOUR] > 24 || a[HOUR] === 24 && (a[MINUTE] !== 0 || a[SECOND] !== 0 || a[MILLISECOND] !== 0) ? HOUR : a[MINUTE] < 0 || a[MINUTE] > 59 ? MINUTE : a[SECOND] < 0 || a[SECOND] > 59 ? SECOND : a[MILLISECOND] < 0 || a[MILLISECOND] > 999 ? MILLISECOND : -1;\n if (getParsingFlags(m)._overflowDayOfYear && (overflow < YEAR || overflow > DATE)) {\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 getParsingFlags(m).overflow = overflow;\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 = /^\\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 = /^\\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 = [['YYYYYY-MM-DD', /[+-]\\d{6}-\\d\\d-\\d\\d/], ['YYYY-MM-DD', /\\d{4}-\\d\\d-\\d\\d/], ['GGGG-[W]WW-E', /\\d{4}-W\\d\\d-\\d/], ['GGGG-[W]WW', /\\d{4}-W\\d\\d/, false], ['YYYY-DDD', /\\d{4}-\\d{3}/], ['YYYY-MM', /\\d{4}-\\d\\d/, false], ['YYYYYYMMDD', /[+-]\\d{10}/], ['YYYYMMDD', /\\d{8}/], ['GGGG[W]WWE', /\\d{4}W\\d{3}/], ['GGGG[W]WW', /\\d{4}W\\d{2}/, false], ['YYYYDDD', /\\d{7}/], ['YYYYMM', /\\d{6}/, false], ['YYYY', /\\d{4}/, false]],\n // iso time formats and regexes\n isoTimes = [['HH:mm:ss.SSSS', /\\d\\d:\\d\\d:\\d\\d\\.\\d+/], ['HH:mm:ss,SSSS', /\\d\\d:\\d\\d:\\d\\d,\\d+/], ['HH:mm:ss', /\\d\\d:\\d\\d:\\d\\d/], ['HH:mm', /\\d\\d:\\d\\d/], ['HHmmss.SSSS', /\\d\\d\\d\\d\\d\\d\\.\\d+/], ['HHmmss,SSSS', /\\d\\d\\d\\d\\d\\d,\\d+/], ['HHmmss', /\\d\\d\\d\\d\\d\\d/], ['HHmm', /\\d\\d\\d\\d/], ['HH', /\\d\\d/]],\n aspNetJsonRegex = /^\\/?Date\\((-?\\d+)/i,\n // RFC 2822 regex: For details see https://tools.ietf.org/html/rfc2822#section-3.3\n rfc2822 = /^(?:(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 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 function extractFromRFC2822Strings(yearStr, monthStr, dayStr, hourStr, minuteStr, secondStr) {\n var result = [untruncateYear(yearStr), defaultLocaleMonthsShort.indexOf(monthStr), parseInt(dayStr, 10), parseInt(hourStr, 10), parseInt(minuteStr, 10)];\n if (secondStr) {\n result.push(parseInt(secondStr, 10));\n }\n return result;\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 function preprocessRFC2822(s) {\n // Remove comments and folding whitespace and replace multiple-spaces with a single space\n return s.replace(/\\([^()]*\\)|[\\n\\t]/g, ' ').replace(/(\\s\\s+)/g, ' ').replace(/^\\s\\s*/, '').replace(/\\s\\s*$/, '');\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(parsedInput[0], parsedInput[1], parsedInput[2]).getDay();\n if (weekdayProvided !== weekdayActual) {\n getParsingFlags(config).weekdayMismatch = true;\n config._isValid = false;\n return false;\n }\n }\n return true;\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(match[4], match[3], match[2], match[5], match[6], match[7]);\n if (!checkWeekday(match[1], parsedArray, config)) {\n return;\n }\n config._a = parsedArray;\n config._tzm = calculateOffset(match[8], match[9], match[10]);\n config._d = createUTCDate.apply(null, config._a);\n config._d.setUTCMinutes(config._d.getUTCMinutes() - config._tzm);\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 configFromISO(config);\n if (config._isValid === false) {\n delete config._isValid;\n } else {\n return;\n }\n configFromRFC2822(config);\n if (config._isValid === false) {\n delete config._isValid;\n } else {\n return;\n }\n if (config._strict) {\n config._isValid = false;\n } else {\n // Final attempt, use Input Fallback\n hooks.createFromInputFallback(config);\n }\n }\n hooks.createFromInputFallback = deprecate('value provided is not in a recognized RFC2822 or ISO format. moment construction falls back to js Date(), ' + 'which is not reliable across all browsers and versions. Non RFC2822/ISO date formats are ' + 'discouraged. Please refer to http://momentjs.com/guides/#/warnings/js-date/ for more info.', function (config) {\n config._d = new Date(config._i + (config._useUTC ? ' UTC' : ''));\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 function currentDateArray(config) {\n // hooks is actually the exported moment object\n var nowValue = new Date(hooks.now());\n if (config._useUTC) {\n return [nowValue.getUTCFullYear(), nowValue.getUTCMonth(), nowValue.getUTCDate()];\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 if (config._d) {\n return;\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 if (config._dayOfYear > daysInYear(yearToUse) || config._dayOfYear === 0) {\n getParsingFlags(config)._overflowDayOfYear = true;\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] = config._a[i] == null ? i === 2 ? 1 : 0 : config._a[i];\n }\n\n // Check for 24:00:00.000\n if (config._a[HOUR] === 24 && config._a[MINUTE] === 0 && config._a[SECOND] === 0 && config._a[MILLISECOND] === 0) {\n config._nextDay = true;\n config._a[HOUR] = 0;\n }\n config._d = (config._useUTC ? createUTCDate : createDate).apply(null, input);\n expectedWeekday = config._useUTC ? config._d.getUTCDay() : 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 if (config._nextDay) {\n config._a[HOUR] = 24;\n }\n\n // check for mismatching day of week\n if (config._w && typeof config._w.d !== 'undefined' && config._w.d !== expectedWeekday) {\n getParsingFlags(config).weekdayMismatch = true;\n }\n }\n function dayOfYearFromWeekInfo(config) {\n var w, weekYear, week, weekday, dow, doy, temp, weekdayOverflow, curWeek;\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(w.GG, config._a[YEAR], weekOfYear(createLocal(), 1, 4).year);\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 curWeek = weekOfYear(createLocal(), dow, doy);\n weekYear = defaults(w.gg, config._a[YEAR], curWeek.year);\n\n // Default to current week.\n week = defaults(w.w, curWeek.week);\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 tokens = 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)) || [])[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(string.indexOf(parsedInput) + parsedInput.length);\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 = 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 (config._a[HOUR] <= 12 && getParsingFlags(config).bigHour === true && config._a[HOUR] > 0) {\n getParsingFlags(config).bigHour = undefined;\n }\n getParsingFlags(config).parsedDateParts = config._a.slice(0);\n getParsingFlags(config).meridiem = config._meridiem;\n // handle meridiem\n config._a[HOUR] = meridiemFixWrap(config._locale, config._a[HOUR], config._meridiem);\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 configFromArray(config);\n checkOverflow(config);\n }\n function meridiemFixWrap(locale, hour, meridiem) {\n var isPm;\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 if (configfLen === 0) {\n getParsingFlags(config).invalidFormat = true;\n config._d = new Date(NaN);\n return;\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 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 getParsingFlags(tempConfig).score = currentScore;\n if (!bestFormatIsValid) {\n if (scoreToBeat == null || currentScore < scoreToBeat || validFormatFound) {\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 extend(config, bestMoment || tempConfig);\n }\n function configFromObject(config) {\n if (config._d) {\n return;\n }\n var i = normalizeObjectUnits(config._i),\n dayOrDate = i.day === undefined ? i.date : i.day;\n config._a = map([i.year, i.month, dayOrDate, i.hour, i.minute, i.second, i.millisecond], function (obj) {\n return obj && parseInt(obj, 10);\n });\n configFromArray(config);\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 return res;\n }\n function prepareConfig(config) {\n var input = config._i,\n format = config._f;\n config._locale = config._locale || getLocale(config._l);\n if (input === null || format === undefined && input === '') {\n return createInvalid({\n nullInput: true\n });\n }\n if (typeof input === 'string') {\n config._i = input = config._locale.preparse(input);\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 if (!isValid(config)) {\n config._d = null;\n }\n return config;\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 function createLocalOrUTC(input, format, locale, strict, isUTC) {\n var c = {};\n if (format === true || format === false) {\n strict = format;\n format = undefined;\n }\n if (locale === true || locale === false) {\n strict = locale;\n locale = undefined;\n }\n if (isObject(input) && isObjectEmpty(input) || isArray(input) && input.length === 0) {\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 return createFromConfig(c);\n }\n function createLocal(input, format, locale, strict) {\n return createLocalOrUTC(input, format, locale, strict, false);\n }\n var prototypeMin = deprecate('moment().min is deprecated, use moment.max instead. http://momentjs.com/guides/#/warnings/min-max/', 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 prototypeMax = deprecate('moment().max is deprecated, use moment.min instead. http://momentjs.com/guides/#/warnings/min-max/', 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 // 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 return pickBy('isBefore', args);\n }\n function max() {\n var args = [].slice.call(arguments, 0);\n return pickBy('isAfter', args);\n }\n var now = function () {\n return Date.now ? Date.now() : +new Date();\n };\n var ordering = ['year', 'quarter', 'month', 'week', 'day', 'hour', 'minute', 'second', 'millisecond'];\n function isDurationValid(m) {\n var key,\n unitHasDecimal = false,\n i,\n orderLen = ordering.length;\n for (key in m) {\n if (hasOwnProp(m, key) && !(indexOf.call(ordering, key) !== -1 && (m[key] == null || !isNaN(m[key])))) {\n return false;\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 return true;\n }\n function isValid$1() {\n return this._isValid;\n }\n function createInvalid$1() {\n return createDuration(NaN);\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 this._isValid = isDurationValid(normalizedInput);\n\n // representation for dateAddRemove\n this._milliseconds = +milliseconds + seconds * 1e3 +\n // 1000\n minutes * 6e4 +\n // 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 this._data = {};\n this._locale = getLocale();\n this._bubble();\n }\n function isDuration(obj) {\n return obj instanceof Duration;\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 (dontConvert && array1[i] !== array2[i] || !dontConvert && toInt(array1[i]) !== toInt(array2[i])) {\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 sign + zeroFill(~~(offset / 60), 2) + separator + zeroFill(~~offset % 60, 2);\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 function offsetFromString(matcher, string) {\n var matches = (string || '').match(matcher),\n chunk,\n parts,\n minutes;\n if (matches === null) {\n return null;\n }\n chunk = matches[matches.length - 1] || [];\n parts = (chunk + '').match(chunkOffset) || ['-', 0, 0];\n minutes = +(parts[1] * 60) + toInt(parts[2]);\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 = (isMoment(input) || isDate(input) ? input.valueOf() : 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 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(this, createDuration(input - offset, 'm'), 1, false);\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 function getSetZone(input, keepLocalTime) {\n if (input != null) {\n if (typeof input !== 'string') {\n input = -input;\n }\n this.utcOffset(input, keepLocalTime);\n return this;\n } else {\n return -this.utcOffset();\n }\n }\n function setOffsetToUTC(keepLocalTime) {\n return this.utcOffset(0, keepLocalTime);\n }\n function setOffsetToLocal(keepLocalTime) {\n if (this._isUTC) {\n this.utcOffset(0, keepLocalTime);\n this._isUTC = false;\n if (keepLocalTime) {\n this.subtract(getDateOffset(this), 'm');\n }\n }\n return this;\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 function hasAlignedHourOffset(input) {\n if (!this.isValid()) {\n return false;\n }\n input = input ? createLocal(input).utcOffset() : 0;\n return (this.utcOffset() - input) % 60 === 0;\n }\n function isDaylightSavingTime() {\n return this.utcOffset() > this.clone().month(0).utcOffset() || this.utcOffset() > this.clone().month(5).utcOffset();\n }\n function isDaylightSavingTimeShifted() {\n if (!isUndefined(this._isDSTShifted)) {\n return this._isDSTShifted;\n }\n var c = {},\n other;\n copyConfig(c, this);\n c = prepareConfig(c);\n if (c._a) {\n other = c._isUTC ? createUTC(c._a) : createLocal(c._a);\n this._isDSTShifted = this.isValid() && compareArrays(c._a, other.toArray()) > 0;\n } else {\n this._isDSTShifted = false;\n }\n return this._isDSTShifted;\n }\n function isLocal() {\n return this.isValid() ? !this._isUTC : false;\n }\n function isUtcOffset() {\n return this.isValid() ? this._isUTC : false;\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 = /^(-|\\+)?P(?:([-+]?[0-9,.]*)Y)?(?:([-+]?[0-9,.]*)M)?(?:([-+]?[0-9,.]*)W)?(?:([-+]?[0-9,.]*)D)?(?:T(?:([-+]?[0-9,.]*)H)?(?:([-+]?[0-9,.]*)M)?(?:([-+]?[0-9,.]*)S)?)?$/;\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 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 (typeof duration === 'object' && ('from' in duration || 'to' in duration)) {\n diffRes = momentsDifference(createLocal(duration.from), createLocal(duration.to));\n duration = {};\n duration.ms = diffRes.milliseconds;\n duration.M = diffRes.months;\n }\n ret = new Duration(duration);\n if (isDuration(input) && hasOwnProp(input, '_locale')) {\n ret._locale = input._locale;\n }\n if (isDuration(input) && hasOwnProp(input, '_isValid')) {\n ret._isValid = input._isValid;\n }\n return ret;\n }\n createDuration.fn = Duration.prototype;\n createDuration.invalid = createInvalid$1;\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 function positiveMomentsDifference(base, other) {\n var res = {};\n res.months = other.month() - base.month() + (other.year() - base.year()) * 12;\n if (base.clone().add(res.months, 'M').isAfter(other)) {\n --res.months;\n }\n res.milliseconds = +other - +base.clone().add(res.months, 'M');\n return res;\n }\n function momentsDifference(base, other) {\n var res;\n if (!(base.isValid() && other.isValid())) {\n return {\n milliseconds: 0,\n 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 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(name, 'moment().' + name + '(period, number) is deprecated. Please use moment().' + name + '(number, period). ' + 'See http://momentjs.com/guides/#/warnings/add-inverted-param/ for more info.');\n tmp = val;\n val = period;\n period = tmp;\n }\n dur = createDuration(val, period);\n addSubtract(this, dur, direction);\n return this;\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 if (!mom.isValid()) {\n // No op\n return;\n }\n updateOffset = updateOffset == null ? true : updateOffset;\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 var add = createAdder(1, 'add'),\n subtract = createAdder(-1, 'subtract');\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 isMoment(input) || isDate(input) || isString(input) || isNumber(input) || isNumberOrStringArray(input) || isMomentInputObject(input) || input === null || input === undefined;\n }\n function isMomentInputObject(input) {\n var objectTest = isObject(input) && !isObjectEmpty(input),\n propertyTest = false,\n properties = ['years', 'year', 'y', 'months', 'month', 'M', 'days', 'day', 'd', 'dates', 'date', 'D', 'hours', 'hour', 'h', 'minutes', 'minute', 'm', 'seconds', 'second', 's', 'milliseconds', 'millisecond', 'ms'],\n i,\n property,\n propertyLen = properties.length;\n for (i = 0; i < propertyLen; i += 1) {\n property = properties[i];\n propertyTest = propertyTest || hasOwnProp(input, property);\n }\n return objectTest && propertyTest;\n }\n function isNumberOrStringArray(input) {\n var arrayTest = isArray(input),\n dataTypeTest = false;\n if (arrayTest) {\n dataTypeTest = input.filter(function (item) {\n return !isNumber(item) && isString(input);\n }).length === 0;\n }\n return arrayTest && dataTypeTest;\n }\n function isCalendarSpec(input) {\n var objectTest = isObject(input) && !isObjectEmpty(input),\n propertyTest = false,\n properties = ['sameDay', 'nextDay', 'lastDay', 'nextWeek', 'lastWeek', 'sameElse'],\n i,\n property;\n for (i = 0; i < properties.length; i += 1) {\n property = properties[i];\n propertyTest = propertyTest || hasOwnProp(input, property);\n }\n return objectTest && propertyTest;\n }\n function getCalendarFormat(myMoment, now) {\n var diff = myMoment.diff(now, 'days', true);\n return diff < -6 ? 'sameElse' : diff < -1 ? 'lastWeek' : diff < 0 ? 'lastDay' : diff < 1 ? 'sameDay' : diff < 2 ? 'nextDay' : diff < 7 ? 'nextWeek' : 'sameElse';\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 = formats && (isFunction(formats[format]) ? formats[format].call(this, now) : formats[format]);\n return this.format(output || this.localeData().calendar(format, this, createLocal(now)));\n }\n function clone() {\n return new Moment(this);\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 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 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 (inclusivity[0] === '(' ? this.isAfter(localFrom, units) : !this.isBefore(localFrom, units)) && (inclusivity[1] === ')' ? this.isBefore(localTo, units) : !this.isAfter(localTo, units));\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 this.clone().startOf(units).valueOf() <= inputMs && inputMs <= this.clone().endOf(units).valueOf();\n }\n }\n function isSameOrAfter(input, units) {\n return this.isSame(input, units) || this.isAfter(input, units);\n }\n function isSameOrBefore(input, units) {\n return this.isSame(input, units) || this.isBefore(input, units);\n }\n function diff(input, units, asFloat) {\n var that, zoneDelta, output;\n if (!this.isValid()) {\n return NaN;\n }\n that = cloneWithOffset(input, this);\n if (!that.isValid()) {\n return NaN;\n }\n zoneDelta = (that.utcOffset() - this.utcOffset()) * 6e4;\n units = normalizeUnits(units);\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;\n // 1000\n case 'minute':\n output = (this - that) / 6e4;\n break;\n // 1000 * 60\n case 'hour':\n output = (this - that) / 36e5;\n break;\n // 1000 * 60 * 60\n case 'day':\n output = (this - that - zoneDelta) / 864e5;\n break;\n // 1000 * 60 * 60 * 24, negate dst\n case 'week':\n output = (this - that - zoneDelta) / 6048e5;\n break;\n // 1000 * 60 * 60 * 24 * 7, negate dst\n default:\n output = this - that;\n }\n return asFloat ? output : absFloor(output);\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 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 hooks.defaultFormat = 'YYYY-MM-DDTHH:mm:ssZ';\n hooks.defaultFormatUtc = 'YYYY-MM-DDTHH:mm:ss[Z]';\n function toString() {\n return this.clone().locale('en').format('ddd MMM DD YYYY HH:mm:ss [GMT]ZZ');\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(m, utc ? 'YYYYYY-MM-DD[T]HH:mm:ss.SSS[Z]' : 'YYYYYY-MM-DD[T]HH:mm:ss.SSSZ');\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).toISOString().replace('Z', formatMoment(m, 'Z'));\n }\n }\n return formatMoment(m, utc ? 'YYYY-MM-DD[T]HH:mm:ss.SSS[Z]' : 'YYYY-MM-DD[T]HH:mm:ss.SSSZ');\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 return this.format(prefix + year + datetime + suffix);\n }\n function format(inputString) {\n if (!inputString) {\n inputString = this.isUtc() ? hooks.defaultFormatUtc : hooks.defaultFormat;\n }\n var output = formatMoment(this, inputString);\n return this.localeData().postformat(output);\n }\n function from(time, withoutSuffix) {\n if (this.isValid() && (isMoment(time) && time.isValid() || createLocal(time).isValid())) {\n return createDuration({\n to: this,\n from: time\n }).locale(this.locale()).humanize(!withoutSuffix);\n } else {\n return this.localeData().invalidDate();\n }\n }\n function fromNow(withoutSuffix) {\n return this.from(createLocal(), withoutSuffix);\n }\n function to(time, withoutSuffix) {\n if (this.isValid() && (isMoment(time) && time.isValid() || createLocal(time).isValid())) {\n return createDuration({\n from: this,\n to: time\n }).locale(this.locale()).humanize(!withoutSuffix);\n } else {\n return this.localeData().invalidDate();\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 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 var lang = deprecate('moment().lang() is deprecated. Instead, use moment().localeData() to get the language configuration. Use moment().locale() to change languages.', function (key) {\n if (key === undefined) {\n return this.localeData();\n } else {\n return this.locale(key);\n }\n });\n function localeData() {\n return this._locale;\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 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 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 function startOf(units) {\n var time, startOfDate;\n units = normalizeUnits(units);\n if (units === undefined || units === 'millisecond' || !this.isValid()) {\n return this;\n }\n startOfDate = this._isUTC ? utcStartOfDate : localStartOfDate;\n switch (units) {\n case 'year':\n time = startOfDate(this.year(), 0, 1);\n break;\n case 'quarter':\n time = startOfDate(this.year(), this.month() - this.month() % 3, 1);\n break;\n case 'month':\n time = startOfDate(this.year(), this.month(), 1);\n break;\n case 'week':\n time = startOfDate(this.year(), this.month(), this.date() - this.weekday());\n break;\n case 'isoWeek':\n time = startOfDate(this.year(), this.month(), this.date() - (this.isoWeekday() - 1));\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(time + (this._isUTC ? 0 : this.utcOffset() * MS_PER_MINUTE), MS_PER_HOUR);\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 this._d.setTime(time);\n hooks.updateOffset(this, true);\n return this;\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 startOfDate = this._isUTC ? utcStartOfDate : localStartOfDate;\n switch (units) {\n case 'year':\n time = startOfDate(this.year() + 1, 0, 1) - 1;\n break;\n case 'quarter':\n time = startOfDate(this.year(), this.month() - this.month() % 3 + 3, 1) - 1;\n break;\n case 'month':\n time = startOfDate(this.year(), this.month() + 1, 1) - 1;\n break;\n case 'week':\n time = startOfDate(this.year(), this.month(), this.date() - this.weekday() + 7) - 1;\n break;\n case 'isoWeek':\n time = startOfDate(this.year(), this.month(), this.date() - (this.isoWeekday() - 1) + 7) - 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 += MS_PER_HOUR - mod$1(time + (this._isUTC ? 0 : this.utcOffset() * MS_PER_MINUTE), MS_PER_HOUR) - 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 this._d.setTime(time);\n hooks.updateOffset(this, true);\n return this;\n }\n function valueOf() {\n return this._d.valueOf() - (this._offset || 0) * 60000;\n }\n function unix() {\n return Math.floor(this.valueOf() / 1000);\n }\n function toDate() {\n return new Date(this.valueOf());\n }\n function toArray() {\n var m = this;\n return [m.year(), m.month(), m.date(), m.hour(), m.minute(), m.second(), m.millisecond()];\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 function toJSON() {\n // new Date(NaN).toJSON() === null\n return this.isValid() ? this.toISOString() : null;\n }\n function isValid$2() {\n return isValid(this);\n }\n function parsingFlags() {\n return extend({}, getParsingFlags(this));\n }\n function invalidAt() {\n return getParsingFlags(this).overflow;\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 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 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 addRegexToken('N', matchEraAbbr);\n addRegexToken('NN', matchEraAbbr);\n addRegexToken('NNN', matchEraAbbr);\n addRegexToken('NNNN', matchEraName);\n addRegexToken('NNNNN', matchEraNarrow);\n addParseToken(['N', 'NN', 'NNN', 'NNNN', 'NNNNN'], 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 addRegexToken('y', matchUnsigned);\n addRegexToken('yy', matchUnsigned);\n addRegexToken('yyy', matchUnsigned);\n addRegexToken('yyyy', matchUnsigned);\n addRegexToken('yo', matchEraYearOrdinal);\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 if (config._locale.eraYearOrdinalParse) {\n array[YEAR] = config._locale.eraYearOrdinalParse(input, match);\n } else {\n array[YEAR] = parseInt(input, 10);\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 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 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 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 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 case 'NNNN':\n if (name === eraName) {\n return eras[i];\n }\n break;\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 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 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 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 return '';\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 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 return '';\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 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 return '';\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 if (eras[i].since <= val && val <= eras[i].until || eras[i].until <= val && val <= eras[i].since) {\n return (this.year() - hooks(eras[i].since).year()) * dir + eras[i].offset;\n }\n }\n return this.year();\n }\n function erasNameRegex(isStrict) {\n if (!hasOwnProp(this, '_erasNameRegex')) {\n computeErasParse.call(this);\n }\n return isStrict ? this._erasNameRegex : this._erasRegex;\n }\n function erasAbbrRegex(isStrict) {\n if (!hasOwnProp(this, '_erasAbbrRegex')) {\n computeErasParse.call(this);\n }\n return isStrict ? this._erasAbbrRegex : this._erasRegex;\n }\n function erasNarrowRegex(isStrict) {\n if (!hasOwnProp(this, '_erasNarrowRegex')) {\n computeErasParse.call(this);\n }\n return isStrict ? this._erasNarrowRegex : this._erasRegex;\n }\n function matchEraAbbr(isStrict, locale) {\n return locale.erasAbbrRegex(isStrict);\n }\n function matchEraName(isStrict, locale) {\n return locale.erasNameRegex(isStrict);\n }\n function matchEraNarrow(isStrict, locale) {\n return locale.erasNarrowRegex(isStrict);\n }\n function matchEraYearOrdinal(isStrict, locale) {\n return locale._eraYearOrdinalRegex || matchUnsigned;\n }\n function computeErasParse() {\n var abbrPieces = [],\n namePieces = [],\n narrowPieces = [],\n mixedPieces = [],\n i,\n l,\n erasName,\n erasAbbr,\n erasNarrow,\n eras = this.eras();\n for (i = 0, l = eras.length; i < l; ++i) {\n erasName = regexEscape(eras[i].name);\n erasAbbr = regexEscape(eras[i].abbr);\n erasNarrow = regexEscape(eras[i].narrow);\n namePieces.push(erasName);\n abbrPieces.push(erasAbbr);\n narrowPieces.push(erasNarrow);\n mixedPieces.push(erasName);\n mixedPieces.push(erasAbbr);\n mixedPieces.push(erasNarrow);\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('^(' + narrowPieces.join('|') + ')', 'i');\n }\n\n // FORMATTING\n\n addFormatToken(0, ['gg', 2], 0, function () {\n return this.weekYear() % 100;\n });\n addFormatToken(0, ['GG', 2], 0, function () {\n return this.isoWeekYear() % 100;\n });\n function addWeekYearFormatToken(token, getter) {\n addFormatToken(0, [token, token.length], 0, getter);\n }\n addWeekYearFormatToken('gggg', 'weekYear');\n addWeekYearFormatToken('ggggg', 'weekYear');\n addWeekYearFormatToken('GGGG', 'isoWeekYear');\n addWeekYearFormatToken('GGGGG', 'isoWeekYear');\n\n // ALIASES\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 addWeekParseToken(['gggg', 'ggggg', 'GGGG', 'GGGGG'], function (input, week, config, token) {\n week[token.substr(0, 2)] = toInt(input);\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(this, input, this.week(), this.weekday() + this.localeData()._week.dow, this.localeData()._week.dow, this.localeData()._week.doy);\n }\n function getSetISOWeekYear(input) {\n return getSetWeekYearHelper.call(this, input, this.isoWeek(), this.isoWeekday(), 1, 4);\n }\n function getISOWeeksInYear() {\n return weeksInYear(this.year(), 1, 4);\n }\n function getISOWeeksInISOWeekYear() {\n return weeksInYear(this.isoWeekYear(), 1, 4);\n }\n function getWeeksInYear() {\n var weekInfo = this.localeData()._week;\n return weeksInYear(this.year(), weekInfo.dow, weekInfo.doy);\n }\n function getWeeksInWeekYear() {\n var weekInfo = this.localeData()._week;\n return weeksInYear(this.weekYear(), weekInfo.dow, weekInfo.doy);\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 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 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 // 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 ? Math.ceil((this.month() + 1) / 3) : this.month((input - 1) * 3 + this.month() % 3);\n }\n\n // FORMATTING\n\n addFormatToken('D', ['DD', 2], 'Do', 'date');\n\n // PARSING\n\n addRegexToken('D', match1to2, match1to2NoLeadingZero);\n addRegexToken('DD', match1to2, match2);\n addRegexToken('Do', function (isStrict, locale) {\n // TODO: Remove \"ordinalParse\" fallback in next major release.\n return isStrict ? locale._dayOfMonthOrdinalParse || locale._ordinalParse : locale._dayOfMonthOrdinalParseLenient;\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 // 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 = Math.round((this.clone().startOf('day') - this.clone().startOf('year')) / 864e5) + 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 // PARSING\n\n addRegexToken('m', match1to2, match1to2HasZero);\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 // PARSING\n\n addRegexToken('s', match1to2, match1to2HasZero);\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 addFormatToken(0, ['SS', 2], 0, function () {\n return ~~(this.millisecond() / 10);\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 // PARSING\n\n addRegexToken('S', match1to3, match1);\n addRegexToken('SS', match1to3, match2);\n addRegexToken('SSS', match1to3, match3);\n var token, getSetMillisecond;\n for (token = 'SSSS'; token.length <= 9; token += 'S') {\n addRegexToken(token, matchUnsigned);\n }\n function parseMs(input, array) {\n array[MILLISECOND] = toInt(('0.' + input) * 1000);\n }\n for (token = 'S'; token.length <= 9; token += 'S') {\n addParseToken(token, parseMs);\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 function getZoneName() {\n return this._isUTC ? 'Coordinated Universal Time' : '';\n }\n var proto = Moment.prototype;\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('dates accessor is deprecated. Use date instead.', getSetDayOfMonth);\n proto.months = deprecate('months accessor is deprecated. Use month instead', getSetMonth);\n proto.years = deprecate('years accessor is deprecated. Use year instead', getSetYear);\n proto.zone = deprecate('moment().zone is deprecated, use moment().utcOffset instead. http://momentjs.com/guides/#/warnings/zone/', getSetZone);\n proto.isDSTShifted = deprecate('isDSTShifted is deprecated. See http://momentjs.com/guides/#/warnings/dst-shifted/ for more information', isDaylightSavingTimeShifted);\n function createUnix(input) {\n return createLocal(input * 1000);\n }\n function createInZone() {\n return createLocal.apply(null, arguments).parseZone();\n }\n function preParsePostFormat(string) {\n return string;\n }\n var proto$1 = Locale.prototype;\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 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 proto$1.weekdays = localeWeekdays;\n proto$1.weekdaysMin = localeWeekdaysMin;\n proto$1.weekdaysShort = localeWeekdaysShort;\n proto$1.weekdaysParse = localeWeekdaysParse;\n proto$1.weekdaysRegex = weekdaysRegex;\n proto$1.weekdaysShortRegex = weekdaysShortRegex;\n proto$1.weekdaysMinRegex = weekdaysMinRegex;\n proto$1.isPM = localeIsPM;\n proto$1.meridiem = localeMeridiem;\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 function listMonthsImpl(format, index, field) {\n if (isNumber(format)) {\n index = format;\n format = undefined;\n }\n format = format || '';\n if (index != null) {\n return get$1(format, index, field, 'month');\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 format = format || '';\n } else {\n format = localeSorted;\n index = format;\n localeSorted = false;\n if (isNumber(format)) {\n index = format;\n format = undefined;\n }\n format = format || '';\n }\n var locale = getLocale(),\n shift = localeSorted ? locale._week.dow : 0,\n i,\n out = [];\n if (index != null) {\n return get$1(format, (index + shift) % 7, field, 'day');\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 function listMonths(format, index) {\n return listMonthsImpl(format, index, 'months');\n }\n function listMonthsShort(format, index) {\n return listMonthsImpl(format, index, 'monthsShort');\n }\n function listWeekdays(localeSorted, format, index) {\n return listWeekdaysImpl(localeSorted, format, index, 'weekdays');\n }\n function listWeekdaysShort(localeSorted, format, index) {\n return listWeekdaysImpl(localeSorted, format, index, 'weekdaysShort');\n }\n function listWeekdaysMin(localeSorted, format, index) {\n return listWeekdaysImpl(localeSorted, format, index, 'weekdaysMin');\n }\n getSetGlobalLocale('en', {\n eras: [{\n since: '0001-01-01',\n until: +Infinity,\n offset: 1,\n name: 'Anno Domini',\n narrow: 'AD',\n abbr: 'AD'\n }, {\n since: '0000-12-31',\n until: -Infinity,\n offset: 1,\n name: 'Before Christ',\n narrow: 'BC',\n abbr: 'BC'\n }],\n dayOfMonthOrdinalParse: /\\d{1,2}(th|st|nd|rd)/,\n ordinal: function (number) {\n var b = number % 10,\n output = toInt(number % 100 / 10) === 1 ? 'th' : b === 1 ? 'st' : b === 2 ? 'nd' : b === 3 ? 'rd' : 'th';\n return number + output;\n }\n });\n\n // Side effect imports\n\n hooks.lang = deprecate('moment.lang is deprecated. Use moment.locale instead.', getSetGlobalLocale);\n hooks.langData = deprecate('moment.langData is deprecated. Use moment.localeData instead.', getLocale);\n var mathAbs = Math.abs;\n function abs() {\n var data = this._data;\n this._milliseconds = mathAbs(this._milliseconds);\n this._days = mathAbs(this._days);\n this._months = mathAbs(this._months);\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 return this;\n }\n function addSubtract$1(duration, input, value, direction) {\n var other = createDuration(input, value);\n duration._milliseconds += direction * other._milliseconds;\n duration._days += direction * other._days;\n duration._months += direction * other._months;\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 function absCeil(number) {\n if (number < 0) {\n return Math.floor(number);\n } else {\n return Math.ceil(number);\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 (!(milliseconds >= 0 && days >= 0 && months >= 0 || milliseconds <= 0 && days <= 0 && months <= 0)) {\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 seconds = absFloor(milliseconds / 1000);\n data.seconds = seconds % 60;\n minutes = absFloor(seconds / 60);\n data.minutes = minutes % 60;\n hours = absFloor(minutes / 60);\n data.hours = hours % 24;\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 data.days = days;\n data.months = months;\n data.years = years;\n return this;\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 function monthsToDays(months) {\n // the reverse of daysToMonths\n return months * 146097 / 4800;\n }\n function as(units) {\n if (!this.isValid()) {\n return NaN;\n }\n var days,\n months,\n milliseconds = this._milliseconds;\n units = normalizeUnits(units);\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 function makeAs(alias) {\n return function () {\n return this.as(alias);\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 valueOf$1 = asMilliseconds;\n function clone$1() {\n return createDuration(this);\n }\n function get$2(units) {\n units = normalizeUnits(units);\n return this.isValid() ? this[units + 's']() : NaN;\n }\n function makeGetter(name) {\n return function () {\n return this.isValid() ? this._data[name] : NaN;\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 function weeks() {\n return absFloor(this.days() / 7);\n }\n var round = Math.round,\n thresholds = {\n ss: 44,\n // a few seconds to seconds\n s: 45,\n // seconds to minute\n m: 45,\n // minutes to hour\n h: 22,\n // hours to day\n d: 26,\n // days to month/week\n w: null,\n // 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 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 = seconds <= thresholds.ss && ['s', seconds] || seconds < thresholds.s && ['ss', seconds] || minutes <= 1 && ['m'] || minutes < thresholds.m && ['mm', minutes] || hours <= 1 && ['h'] || hours < thresholds.h && ['hh', hours] || days <= 1 && ['d'] || days < thresholds.d && ['dd', days];\n if (thresholds.w != null) {\n a = a || weeks <= 1 && ['w'] || weeks < thresholds.w && ['ww', weeks];\n }\n a = a || months <= 1 && ['M'] || months < thresholds.M && ['MM', months] || years <= 1 && ['y'] || ['yy', years];\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 function humanize(argWithSuffix, argThresholds) {\n if (!this.isValid()) {\n return this.localeData().invalidDate();\n }\n var withSuffix = false,\n th = thresholds,\n locale,\n output;\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 locale = this.localeData();\n output = relativeTime$1(this, !withSuffix, th, locale);\n if (withSuffix) {\n output = locale.pastFuture(+this, output);\n }\n return locale.postformat(output);\n }\n var abs$1 = Math.abs;\n function sign(x) {\n return (x > 0) - (x < 0) || +x;\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 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 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 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 return totalSign + 'P' + (years ? ymSign + years + 'Y' : '') + (months ? ymSign + months + 'M' : '') + (days ? daysSign + days + 'D' : '') + (hours || minutes || seconds ? 'T' : '') + (hours ? hmsSign + hours + 'H' : '') + (minutes ? hmsSign + minutes + 'M' : '') + (seconds ? hmsSign + s + 'S' : '');\n }\n var proto$2 = Duration.prototype;\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 proto$2.toIsoString = deprecate('toIsoString() is deprecated. Please use toISOString() instead (notice the capitals)', toISOString$1);\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.30.1';\n setHookCallback(createLocal);\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',\n // <input type=\"datetime-local\" />\n DATETIME_LOCAL_SECONDS: 'YYYY-MM-DDTHH:mm:ss',\n // <input type=\"datetime-local\" step=\"1\" />\n DATETIME_LOCAL_MS: 'YYYY-MM-DDTHH:mm:ss.SSS',\n // <input type=\"datetime-local\" step=\"0.001\" />\n DATE: 'YYYY-MM-DD',\n // <input type=\"date\" />\n TIME: 'HH:mm',\n // <input type=\"time\" />\n TIME_SECONDS: 'HH:mm:ss',\n // <input type=\"time\" step=\"1\" />\n TIME_MS: 'HH:mm:ss.SSS',\n // <input type=\"time\" step=\"0.001\" />\n WEEK: 'GGGG-[W]WW',\n // <input type=\"week\" />\n MONTH: 'YYYY-MM' // <input type=\"month\" />\n };\n return hooks;\n});","// Initialize a jQuery object\ndefine([\"../core\", \"../var/document\", \"../var/isFunction\", \"./var/rsingleTag\", \"../traversing/findFilter\"], function (jQuery, document, isFunction, rsingleTag) {\n \"use strict\";\n\n // A central reference to the root jQuery(document)\n var rootjQuery,\n // A simple way to check for HTML strings\n // Prioritize #id over <tag> to avoid XSS via location.hash (trac-9521)\n // Strict HTML recognition (trac-11290: must start with <)\n // Shortcut simple #id case for speed\n rquickExpr = /^(?:\\s*(<[\\w\\W]+>)[^>]*|#([\\w-]+))$/,\n init = jQuery.fn.init = function (selector, context, root) {\n var match, elem;\n\n // HANDLE: $(\"\"), $(null), $(undefined), $(false)\n if (!selector) {\n return this;\n }\n\n // Method init() accepts an alternate rootjQuery\n // so migrate can support jQuery.sub (gh-2101)\n root = root || rootjQuery;\n\n // Handle HTML strings\n if (typeof selector === \"string\") {\n if (selector[0] === \"<\" && selector[selector.length - 1] === \">\" && selector.length >= 3) {\n // Assume that strings that start and end with <> are HTML and skip the regex check\n match = [null, selector, null];\n } else {\n match = rquickExpr.exec(selector);\n }\n\n // Match html or make sure no context is specified for #id\n if (match && (match[1] || !context)) {\n // HANDLE: $(html) -> $(array)\n if (match[1]) {\n context = context instanceof jQuery ? context[0] : context;\n\n // Option to run scripts is true for back-compat\n // Intentionally let the error be thrown if parseHTML is not present\n jQuery.merge(this, jQuery.parseHTML(match[1], context && context.nodeType ? context.ownerDocument || context : document, true));\n\n // HANDLE: $(html, props)\n if (rsingleTag.test(match[1]) && jQuery.isPlainObject(context)) {\n for (match in context) {\n // Properties of context are called as methods if possible\n if (isFunction(this[match])) {\n this[match](context[match]);\n\n // ...and otherwise set as attributes\n } else {\n this.attr(match, context[match]);\n }\n }\n }\n return this;\n\n // HANDLE: $(#id)\n } else {\n elem = document.getElementById(match[2]);\n if (elem) {\n // Inject the element directly into the jQuery object\n this[0] = elem;\n this.length = 1;\n }\n return this;\n }\n\n // HANDLE: $(expr, $(...))\n } else if (!context || context.jquery) {\n return (context || root).find(selector);\n\n // HANDLE: $(expr, context)\n // (which is just equivalent to: $(context).find(expr)\n } else {\n return this.constructor(context).find(selector);\n }\n\n // HANDLE: $(DOMElement)\n } else if (selector.nodeType) {\n this[0] = selector;\n this.length = 1;\n return this;\n\n // HANDLE: $(function)\n // Shortcut for document ready\n } else if (isFunction(selector)) {\n return root.ready !== undefined ? root.ready(selector) :\n // Execute immediately if ready is not present\n selector(jQuery);\n }\n return jQuery.makeArray(selector, this);\n };\n\n // Give the init function the jQuery prototype for later instantiation\n init.prototype = jQuery.fn;\n\n // Initialize central reference\n rootjQuery = jQuery(document);\n return init;\n});","define(function () {\n \"use strict\";\n\n return [];\n});","define(function () {\n \"use strict\";\n\n function nodeName(elem, name) {\n return elem.nodeName && elem.nodeName.toLowerCase() === name.toLowerCase();\n }\n return nodeName;\n});","define([\"../Data\"], function (Data) {\n \"use strict\";\n\n return new Data();\n});","define(function () {\n \"use strict\";\n\n // Only count HTML whitespace\n // Other whitespace should count in values\n // https://infra.spec.whatwg.org/#ascii-whitespace\n return /[^\\x20\\t\\r\\n\\f]+/g;\n});","define(function () {\n \"use strict\";\n\n // All support tests are defined in their respective modules.\n return {};\n});","define([\"../core\", \"../core/toType\", \"../var/isFunction\"], function (jQuery, toType, isFunction) {\n \"use strict\";\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\n var access = function (elems, fn, key, value, chainable, emptyGet, raw) {\n var i = 0,\n len = elems.length,\n bulk = key == null;\n\n // Sets many values\n if (toType(key) === \"object\") {\n chainable = true;\n for (i in key) {\n access(elems, fn, i, key[i], true, emptyGet, raw);\n }\n\n // Sets one value\n } else if (value !== undefined) {\n chainable = true;\n if (!isFunction(value)) {\n raw = true;\n }\n if (bulk) {\n // Bulk operations run against the entire set\n if (raw) {\n fn.call(elems, value);\n fn = null;\n\n // ...except when executing function values\n } else {\n bulk = fn;\n fn = function (elem, _key, value) {\n return bulk.call(jQuery(elem), value);\n };\n }\n }\n if (fn) {\n for (; i < len; i++) {\n fn(elems[i], key, raw ? value : value.call(elems[i], i, fn(elems[i], key)));\n }\n }\n }\n if (chainable) {\n return elems;\n }\n\n // Gets\n if (bulk) {\n return fn.call(elems);\n }\n return len ? fn(elems[0], key) : emptyGet;\n };\n return access;\n});","define([\"./core\", \"./var/document\", \"./var/isFunction\", \"./var/rnothtmlwhite\", \"./ajax/var/location\", \"./ajax/var/nonce\", \"./ajax/var/rquery\", \"./core/init\", \"./core/parseXML\", \"./event/trigger\", \"./deferred\", \"./serialize\" // jQuery.param\n], function (jQuery, document, isFunction, rnothtmlwhite, location, nonce, rquery) {\n \"use strict\";\n\n var r20 = /%20/g,\n rhash = /#.*$/,\n rantiCache = /([?&])_=[^&]*/,\n rheaders = /^(.*?):[ \\t]*([^\\r\\n]*)$/mg,\n // trac-7653, trac-8125, trac-8152: local protocol detection\n rlocalProtocol = /^(?:about|app|app-storage|.+-extension|file|res|widget):$/,\n rnoContent = /^(?:GET|HEAD)$/,\n rprotocol = /^\\/\\//,\n /* Prefilters\n * 1) They are useful to introduce custom dataTypes (see ajax/jsonp.js for an example)\n * 2) These are called:\n * - BEFORE asking for a transport\n * - AFTER param serialization (s.data is a string if s.processData is true)\n * 3) key is the dataType\n * 4) the catchall symbol \"*\" can be used\n * 5) execution will start with transport dataType and THEN continue down to \"*\" if needed\n */\n prefilters = {},\n /* Transports bindings\n * 1) key is the dataType\n * 2) the catchall symbol \"*\" can be used\n * 3) selection will start with transport dataType and THEN go to \"*\" if needed\n */\n transports = {},\n // Avoid comment-prolog char sequence (trac-10098); must appease lint and evade compression\n allTypes = \"*/\".concat(\"*\"),\n // Anchor tag for parsing the document origin\n originAnchor = document.createElement(\"a\");\n originAnchor.href = location.href;\n\n // Base \"constructor\" for jQuery.ajaxPrefilter and jQuery.ajaxTransport\n function addToPrefiltersOrTransports(structure) {\n // dataTypeExpression is optional and defaults to \"*\"\n return function (dataTypeExpression, func) {\n if (typeof dataTypeExpression !== \"string\") {\n func = dataTypeExpression;\n dataTypeExpression = \"*\";\n }\n var dataType,\n i = 0,\n dataTypes = dataTypeExpression.toLowerCase().match(rnothtmlwhite) || [];\n if (isFunction(func)) {\n // For each dataType in the dataTypeExpression\n while (dataType = dataTypes[i++]) {\n // Prepend if requested\n if (dataType[0] === \"+\") {\n dataType = dataType.slice(1) || \"*\";\n (structure[dataType] = structure[dataType] || []).unshift(func);\n\n // Otherwise append\n } else {\n (structure[dataType] = structure[dataType] || []).push(func);\n }\n }\n }\n };\n }\n\n // Base inspection function for prefilters and transports\n function inspectPrefiltersOrTransports(structure, options, originalOptions, jqXHR) {\n var inspected = {},\n seekingTransport = structure === transports;\n function inspect(dataType) {\n var selected;\n inspected[dataType] = true;\n jQuery.each(structure[dataType] || [], function (_, prefilterOrFactory) {\n var dataTypeOrTransport = prefilterOrFactory(options, originalOptions, jqXHR);\n if (typeof dataTypeOrTransport === \"string\" && !seekingTransport && !inspected[dataTypeOrTransport]) {\n options.dataTypes.unshift(dataTypeOrTransport);\n inspect(dataTypeOrTransport);\n return false;\n } else if (seekingTransport) {\n return !(selected = dataTypeOrTransport);\n }\n });\n return selected;\n }\n return 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\n function ajaxExtend(target, src) {\n var key,\n deep,\n flatOptions = jQuery.ajaxSettings.flatOptions || {};\n for (key in src) {\n if (src[key] !== undefined) {\n (flatOptions[key] ? target : deep || (deep = {}))[key] = src[key];\n }\n }\n if (deep) {\n jQuery.extend(true, target, deep);\n }\n return 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 */\n function ajaxHandleResponses(s, jqXHR, responses) {\n var ct,\n type,\n finalDataType,\n firstDataType,\n contents = s.contents,\n dataTypes = s.dataTypes;\n\n // Remove auto dataType and get content-type in the process\n while (dataTypes[0] === \"*\") {\n dataTypes.shift();\n if (ct === undefined) {\n ct = s.mimeType || jqXHR.getResponseHeader(\"Content-Type\");\n }\n }\n\n // Check if we're dealing with a known content-type\n if (ct) {\n for (type in contents) {\n if (contents[type] && contents[type].test(ct)) {\n dataTypes.unshift(type);\n break;\n }\n }\n }\n\n // Check to see if we have a response for the expected dataType\n if (dataTypes[0] in responses) {\n finalDataType = dataTypes[0];\n } else {\n // Try convertible dataTypes\n for (type in responses) {\n if (!dataTypes[0] || s.converters[type + \" \" + dataTypes[0]]) {\n finalDataType = type;\n break;\n }\n if (!firstDataType) {\n firstDataType = type;\n }\n }\n\n // Or just use first one\n finalDataType = finalDataType || firstDataType;\n }\n\n // If we found a dataType\n // We add the dataType to the list if needed\n // and return the corresponding response\n if (finalDataType) {\n if (finalDataType !== dataTypes[0]) {\n dataTypes.unshift(finalDataType);\n }\n return responses[finalDataType];\n }\n }\n\n /* Chain conversions given the request and the original response\n * Also sets the responseXXX fields on the jqXHR instance\n */\n function ajaxConvert(s, response, jqXHR, isSuccess) {\n var conv2,\n current,\n conv,\n tmp,\n prev,\n converters = {},\n // Work with a copy of dataTypes in case we need to modify it for conversion\n dataTypes = s.dataTypes.slice();\n\n // Create converters map with lowercased keys\n if (dataTypes[1]) {\n for (conv in s.converters) {\n converters[conv.toLowerCase()] = s.converters[conv];\n }\n }\n current = dataTypes.shift();\n\n // Convert to each sequential dataType\n while (current) {\n if (s.responseFields[current]) {\n jqXHR[s.responseFields[current]] = response;\n }\n\n // Apply the dataFilter if provided\n if (!prev && isSuccess && s.dataFilter) {\n response = s.dataFilter(response, s.dataType);\n }\n prev = current;\n current = dataTypes.shift();\n if (current) {\n // There's only work to do if current dataType is non-auto\n if (current === \"*\") {\n current = prev;\n\n // Convert response if prev dataType is non-auto and differs from current\n } else if (prev !== \"*\" && prev !== current) {\n // Seek a direct converter\n conv = converters[prev + \" \" + current] || converters[\"* \" + current];\n\n // If none found, seek a pair\n if (!conv) {\n for (conv2 in converters) {\n // If conv2 outputs current\n tmp = conv2.split(\" \");\n if (tmp[1] === current) {\n // If prev can be converted to accepted input\n conv = converters[prev + \" \" + tmp[0]] || converters[\"* \" + tmp[0]];\n if (conv) {\n // Condense equivalence converters\n if (conv === true) {\n conv = converters[conv2];\n\n // Otherwise, insert the intermediate dataType\n } else if (converters[conv2] !== true) {\n current = tmp[0];\n dataTypes.unshift(tmp[1]);\n }\n break;\n }\n }\n }\n }\n\n // Apply converter (if not an equivalence)\n if (conv !== true) {\n // Unless errors are allowed to bubble, catch and return them\n if (conv && s.throws) {\n response = conv(response);\n } else {\n try {\n response = conv(response);\n } catch (e) {\n return {\n state: \"parsererror\",\n error: conv ? e : \"No conversion from \" + prev + \" to \" + current\n };\n }\n }\n }\n }\n }\n }\n return {\n state: \"success\",\n data: response\n };\n }\n jQuery.extend({\n // Counter for holding the number of active queries\n active: 0,\n // Last-Modified header cache for next request\n lastModified: {},\n etag: {},\n ajaxSettings: {\n url: location.href,\n type: \"GET\",\n isLocal: rlocalProtocol.test(location.protocol),\n global: true,\n processData: true,\n async: true,\n contentType: \"application/x-www-form-urlencoded; charset=UTF-8\",\n /*\n timeout: 0,\n data: null,\n dataType: null,\n username: null,\n password: null,\n cache: null,\n throws: false,\n traditional: false,\n headers: {},\n */\n\n accepts: {\n \"*\": allTypes,\n text: \"text/plain\",\n html: \"text/html\",\n xml: \"application/xml, text/xml\",\n json: \"application/json, text/javascript\"\n },\n contents: {\n xml: /\\bxml\\b/,\n html: /\\bhtml/,\n json: /\\bjson\\b/\n },\n responseFields: {\n xml: \"responseXML\",\n text: \"responseText\",\n json: \"responseJSON\"\n },\n // Data converters\n // Keys separate source (or catchall \"*\") and destination types with a single space\n converters: {\n // Convert anything to text\n \"* text\": String,\n // Text to html (true = no transformation)\n \"text html\": true,\n // Evaluate text as a json expression\n \"text json\": JSON.parse,\n // Parse text as xml\n \"text xml\": jQuery.parseXML\n },\n // For options that shouldn't be deep extended:\n // you can add your own custom options here if\n // and when you create one that shouldn't be\n // deep extended (see ajaxExtend)\n flatOptions: {\n url: true,\n context: true\n }\n },\n // Creates a full fledged settings object into target\n // with both ajaxSettings and settings fields.\n // If target is omitted, writes into ajaxSettings.\n ajaxSetup: function (target, settings) {\n return settings ?\n // Building a settings object\n ajaxExtend(ajaxExtend(target, jQuery.ajaxSettings), settings) :\n // Extending ajaxSettings\n ajaxExtend(jQuery.ajaxSettings, target);\n },\n ajaxPrefilter: addToPrefiltersOrTransports(prefilters),\n ajaxTransport: addToPrefiltersOrTransports(transports),\n // Main method\n ajax: function (url, options) {\n // If url is an object, simulate pre-1.5 signature\n if (typeof url === \"object\") {\n options = url;\n url = undefined;\n }\n\n // Force options to be an object\n options = options || {};\n var transport,\n // URL without anti-cache param\n cacheURL,\n // Response headers\n responseHeadersString,\n responseHeaders,\n // timeout handle\n timeoutTimer,\n // Url cleanup var\n urlAnchor,\n // Request state (becomes false upon send and true upon completion)\n completed,\n // To know if global events are to be dispatched\n fireGlobals,\n // Loop variable\n i,\n // uncached part of the url\n uncached,\n // Create the final options object\n s = jQuery.ajaxSetup({}, options),\n // Callbacks context\n callbackContext = s.context || s,\n // Context for global events is callbackContext if it is a DOM node or jQuery collection\n globalEventContext = s.context && (callbackContext.nodeType || callbackContext.jquery) ? jQuery(callbackContext) : jQuery.event,\n // Deferreds\n deferred = jQuery.Deferred(),\n completeDeferred = jQuery.Callbacks(\"once memory\"),\n // Status-dependent callbacks\n statusCode = s.statusCode || {},\n // Headers (they are sent all at once)\n requestHeaders = {},\n requestHeadersNames = {},\n // Default abort message\n strAbort = \"canceled\",\n // Fake xhr\n jqXHR = {\n readyState: 0,\n // Builds headers hashtable if needed\n getResponseHeader: function (key) {\n var match;\n if (completed) {\n if (!responseHeaders) {\n responseHeaders = {};\n while (match = rheaders.exec(responseHeadersString)) {\n responseHeaders[match[1].toLowerCase() + \" \"] = (responseHeaders[match[1].toLowerCase() + \" \"] || []).concat(match[2]);\n }\n }\n match = responseHeaders[key.toLowerCase() + \" \"];\n }\n return match == null ? null : match.join(\", \");\n },\n // Raw string\n getAllResponseHeaders: function () {\n return completed ? responseHeadersString : null;\n },\n // Caches the header\n setRequestHeader: function (name, value) {\n if (completed == null) {\n name = requestHeadersNames[name.toLowerCase()] = requestHeadersNames[name.toLowerCase()] || name;\n requestHeaders[name] = value;\n }\n return this;\n },\n // Overrides response content-type header\n overrideMimeType: function (type) {\n if (completed == null) {\n s.mimeType = type;\n }\n return this;\n },\n // Status-dependent callbacks\n statusCode: function (map) {\n var code;\n if (map) {\n if (completed) {\n // Execute the appropriate callbacks\n jqXHR.always(map[jqXHR.status]);\n } else {\n // Lazy-add the new callbacks in a way that preserves old ones\n for (code in map) {\n statusCode[code] = [statusCode[code], map[code]];\n }\n }\n }\n return this;\n },\n // Cancel the request\n abort: function (statusText) {\n var finalText = statusText || strAbort;\n if (transport) {\n transport.abort(finalText);\n }\n done(0, finalText);\n return this;\n }\n };\n\n // Attach deferreds\n deferred.promise(jqXHR);\n\n // Add protocol if not provided (prefilters might expect it)\n // Handle falsy url in the settings object (trac-10093: consistency with old signature)\n // We also use the url parameter if available\n s.url = ((url || s.url || location.href) + \"\").replace(rprotocol, location.protocol + \"//\");\n\n // Alias method option to type as per ticket trac-12004\n s.type = options.method || options.type || s.method || s.type;\n\n // Extract dataTypes list\n s.dataTypes = (s.dataType || \"*\").toLowerCase().match(rnothtmlwhite) || [\"\"];\n\n // A cross-domain request is in order when the origin doesn't match the current origin.\n if (s.crossDomain == null) {\n urlAnchor = document.createElement(\"a\");\n\n // Support: IE <=8 - 11, Edge 12 - 15\n // IE throws exception on accessing the href property if url is malformed,\n // e.g. http://example.com:80x/\n try {\n urlAnchor.href = s.url;\n\n // Support: IE <=8 - 11 only\n // Anchor's host property isn't correctly set when s.url is relative\n urlAnchor.href = urlAnchor.href;\n s.crossDomain = originAnchor.protocol + \"//\" + originAnchor.host !== urlAnchor.protocol + \"//\" + urlAnchor.host;\n } catch (e) {\n // If there is an error parsing the URL, assume it is crossDomain,\n // it can be rejected by the transport if it is invalid\n s.crossDomain = true;\n }\n }\n\n // Convert data if not already a string\n if (s.data && s.processData && typeof s.data !== \"string\") {\n s.data = jQuery.param(s.data, s.traditional);\n }\n\n // Apply prefilters\n inspectPrefiltersOrTransports(prefilters, s, options, jqXHR);\n\n // If request was aborted inside a prefilter, stop there\n if (completed) {\n return jqXHR;\n }\n\n // We can fire global events as of now if asked to\n // Don't fire events if jQuery.event is undefined in an AMD-usage scenario (trac-15118)\n fireGlobals = jQuery.event && s.global;\n\n // Watch for a new set of requests\n if (fireGlobals && jQuery.active++ === 0) {\n jQuery.event.trigger(\"ajaxStart\");\n }\n\n // Uppercase the type\n s.type = s.type.toUpperCase();\n\n // Determine if request has content\n s.hasContent = !rnoContent.test(s.type);\n\n // Save the URL in case we're toying with the If-Modified-Since\n // and/or If-None-Match header later on\n // Remove hash to simplify url manipulation\n cacheURL = s.url.replace(rhash, \"\");\n\n // More options handling for requests with no content\n if (!s.hasContent) {\n // Remember the hash so we can put it back\n uncached = s.url.slice(cacheURL.length);\n\n // If data is available and should be processed, append data to url\n if (s.data && (s.processData || typeof s.data === \"string\")) {\n cacheURL += (rquery.test(cacheURL) ? \"&\" : \"?\") + s.data;\n\n // trac-9682: remove data so that it's not used in an eventual retry\n delete s.data;\n }\n\n // Add or update anti-cache param if needed\n if (s.cache === false) {\n cacheURL = cacheURL.replace(rantiCache, \"$1\");\n uncached = (rquery.test(cacheURL) ? \"&\" : \"?\") + \"_=\" + nonce.guid++ + uncached;\n }\n\n // Put hash and anti-cache on the URL that will be requested (gh-1732)\n s.url = cacheURL + uncached;\n\n // Change '%20' to '+' if this is encoded form body content (gh-2658)\n } else if (s.data && s.processData && (s.contentType || \"\").indexOf(\"application/x-www-form-urlencoded\") === 0) {\n s.data = s.data.replace(r20, \"+\");\n }\n\n // Set the If-Modified-Since and/or If-None-Match header, if in ifModified mode.\n if (s.ifModified) {\n if (jQuery.lastModified[cacheURL]) {\n jqXHR.setRequestHeader(\"If-Modified-Since\", jQuery.lastModified[cacheURL]);\n }\n if (jQuery.etag[cacheURL]) {\n jqXHR.setRequestHeader(\"If-None-Match\", jQuery.etag[cacheURL]);\n }\n }\n\n // Set the correct header, if data is being sent\n if (s.data && s.hasContent && s.contentType !== false || options.contentType) {\n jqXHR.setRequestHeader(\"Content-Type\", s.contentType);\n }\n\n // Set the Accepts header for the server, depending on the dataType\n jqXHR.setRequestHeader(\"Accept\", s.dataTypes[0] && s.accepts[s.dataTypes[0]] ? s.accepts[s.dataTypes[0]] + (s.dataTypes[0] !== \"*\" ? \", \" + allTypes + \"; q=0.01\" : \"\") : s.accepts[\"*\"]);\n\n // Check for headers option\n for (i in s.headers) {\n jqXHR.setRequestHeader(i, s.headers[i]);\n }\n\n // Allow custom headers/mimetypes and early abort\n if (s.beforeSend && (s.beforeSend.call(callbackContext, jqXHR, s) === false || completed)) {\n // Abort if not done already and return\n return jqXHR.abort();\n }\n\n // Aborting is no longer a cancellation\n strAbort = \"abort\";\n\n // Install callbacks on deferreds\n completeDeferred.add(s.complete);\n jqXHR.done(s.success);\n jqXHR.fail(s.error);\n\n // Get transport\n transport = inspectPrefiltersOrTransports(transports, s, options, jqXHR);\n\n // If no transport, we auto-abort\n if (!transport) {\n done(-1, \"No Transport\");\n } else {\n jqXHR.readyState = 1;\n\n // Send global event\n if (fireGlobals) {\n globalEventContext.trigger(\"ajaxSend\", [jqXHR, s]);\n }\n\n // If request was aborted inside ajaxSend, stop there\n if (completed) {\n return jqXHR;\n }\n\n // Timeout\n if (s.async && s.timeout > 0) {\n timeoutTimer = window.setTimeout(function () {\n jqXHR.abort(\"timeout\");\n }, s.timeout);\n }\n try {\n completed = false;\n transport.send(requestHeaders, done);\n } catch (e) {\n // Rethrow post-completion exceptions\n if (completed) {\n throw e;\n }\n\n // Propagate others as results\n done(-1, e);\n }\n }\n\n // Callback for when everything is done\n function done(status, nativeStatusText, responses, headers) {\n var isSuccess,\n success,\n error,\n response,\n modified,\n statusText = nativeStatusText;\n\n // Ignore repeat invocations\n if (completed) {\n return;\n }\n completed = true;\n\n // Clear timeout if it exists\n if (timeoutTimer) {\n window.clearTimeout(timeoutTimer);\n }\n\n // Dereference transport for early garbage collection\n // (no matter how long the jqXHR object will be used)\n transport = undefined;\n\n // Cache response headers\n responseHeadersString = headers || \"\";\n\n // Set readyState\n jqXHR.readyState = status > 0 ? 4 : 0;\n\n // Determine if successful\n isSuccess = status >= 200 && status < 300 || status === 304;\n\n // Get response data\n if (responses) {\n response = ajaxHandleResponses(s, jqXHR, responses);\n }\n\n // Use a noop converter for missing script but not if jsonp\n if (!isSuccess && jQuery.inArray(\"script\", s.dataTypes) > -1 && jQuery.inArray(\"json\", s.dataTypes) < 0) {\n s.converters[\"text script\"] = function () {};\n }\n\n // Convert no matter what (that way responseXXX fields are always set)\n response = ajaxConvert(s, response, jqXHR, isSuccess);\n\n // If successful, handle type chaining\n if (isSuccess) {\n // Set the If-Modified-Since and/or If-None-Match header, if in ifModified mode.\n if (s.ifModified) {\n modified = jqXHR.getResponseHeader(\"Last-Modified\");\n if (modified) {\n jQuery.lastModified[cacheURL] = modified;\n }\n modified = jqXHR.getResponseHeader(\"etag\");\n if (modified) {\n jQuery.etag[cacheURL] = modified;\n }\n }\n\n // if no content\n if (status === 204 || s.type === \"HEAD\") {\n statusText = \"nocontent\";\n\n // if not modified\n } else if (status === 304) {\n statusText = \"notmodified\";\n\n // If we have data, let's convert it\n } else {\n statusText = response.state;\n success = response.data;\n error = response.error;\n isSuccess = !error;\n }\n } else {\n // Extract error from statusText and normalize for non-aborts\n error = statusText;\n if (status || !statusText) {\n statusText = \"error\";\n if (status < 0) {\n status = 0;\n }\n }\n }\n\n // Set data for the fake xhr object\n jqXHR.status = status;\n jqXHR.statusText = (nativeStatusText || statusText) + \"\";\n\n // Success/Error\n if (isSuccess) {\n deferred.resolveWith(callbackContext, [success, statusText, jqXHR]);\n } else {\n deferred.rejectWith(callbackContext, [jqXHR, statusText, error]);\n }\n\n // Status-dependent callbacks\n jqXHR.statusCode(statusCode);\n statusCode = undefined;\n if (fireGlobals) {\n globalEventContext.trigger(isSuccess ? \"ajaxSuccess\" : \"ajaxError\", [jqXHR, s, isSuccess ? success : error]);\n }\n\n // Complete\n completeDeferred.fireWith(callbackContext, [jqXHR, statusText]);\n if (fireGlobals) {\n globalEventContext.trigger(\"ajaxComplete\", [jqXHR, s]);\n\n // Handle the global AJAX counter\n if (! --jQuery.active) {\n jQuery.event.trigger(\"ajaxStop\");\n }\n }\n }\n return jqXHR;\n },\n getJSON: function (url, data, callback) {\n return jQuery.get(url, data, callback, \"json\");\n },\n getScript: function (url, callback) {\n return jQuery.get(url, undefined, callback, \"script\");\n }\n });\n jQuery.each([\"get\", \"post\"], function (_i, method) {\n jQuery[method] = function (url, data, callback, type) {\n // Shift arguments if data argument was omitted\n if (isFunction(data)) {\n type = type || callback;\n callback = data;\n data = undefined;\n }\n\n // The url can be an options object (which then must have .url)\n return jQuery.ajax(jQuery.extend({\n url: url,\n type: method,\n dataType: type,\n data: data,\n success: callback\n }, jQuery.isPlainObject(url) && url));\n };\n });\n jQuery.ajaxPrefilter(function (s) {\n var i;\n for (i in s.headers) {\n if (i.toLowerCase() === \"content-type\") {\n s.contentType = s.headers[i] || \"\";\n }\n }\n });\n return jQuery;\n});","define([\"../var/class2type\", \"../var/toString\"], function (class2type, toString) {\n \"use strict\";\n\n function toType(obj) {\n if (obj == null) {\n return obj + \"\";\n }\n\n // Support: Android <=2.3 only (functionish RegExp)\n return typeof obj === \"object\" || typeof obj === \"function\" ? class2type[toString.call(obj)] || \"object\" : typeof obj;\n }\n return toType;\n});","define([\"./core\", \"./var/getProto\", \"./var/indexOf\", \"./traversing/var/dir\", \"./traversing/var/siblings\", \"./traversing/var/rneedsContext\", \"./core/nodeName\", \"./core/init\", \"./traversing/findFilter\", \"./selector\"], function (jQuery, getProto, indexOf, dir, siblings, rneedsContext, nodeName) {\n \"use strict\";\n\n var rparentsprev = /^(?:parents|prev(?:Until|All))/,\n // Methods guaranteed to produce a unique set when starting from a unique set\n guaranteedUnique = {\n children: true,\n contents: true,\n next: true,\n prev: true\n };\n jQuery.fn.extend({\n has: function (target) {\n var targets = jQuery(target, this),\n l = targets.length;\n return this.filter(function () {\n var i = 0;\n for (; i < l; i++) {\n if (jQuery.contains(this, targets[i])) {\n return true;\n }\n }\n });\n },\n closest: function (selectors, context) {\n var cur,\n i = 0,\n l = this.length,\n matched = [],\n targets = typeof selectors !== \"string\" && jQuery(selectors);\n\n // Positional selectors never match, since there's no _selection_ context\n if (!rneedsContext.test(selectors)) {\n for (; i < l; i++) {\n for (cur = this[i]; cur && cur !== context; cur = cur.parentNode) {\n // Always skip document fragments\n if (cur.nodeType < 11 && (targets ? targets.index(cur) > -1 :\n // Don't pass non-elements to jQuery#find\n cur.nodeType === 1 && jQuery.find.matchesSelector(cur, selectors))) {\n matched.push(cur);\n break;\n }\n }\n }\n }\n return this.pushStack(matched.length > 1 ? jQuery.uniqueSort(matched) : matched);\n },\n // Determine the position of an element within the set\n index: function (elem) {\n // No argument, return index in parent\n if (!elem) {\n return this[0] && this[0].parentNode ? this.first().prevAll().length : -1;\n }\n\n // Index in selector\n if (typeof elem === \"string\") {\n return indexOf.call(jQuery(elem), this[0]);\n }\n\n // Locate the position of the desired element\n return indexOf.call(this,\n // If it receives a jQuery object, the first element is used\n elem.jquery ? elem[0] : elem);\n },\n add: function (selector, context) {\n return this.pushStack(jQuery.uniqueSort(jQuery.merge(this.get(), jQuery(selector, context))));\n },\n addBack: function (selector) {\n return this.add(selector == null ? this.prevObject : this.prevObject.filter(selector));\n }\n });\n function sibling(cur, dir) {\n while ((cur = cur[dir]) && cur.nodeType !== 1) {}\n return cur;\n }\n jQuery.each({\n parent: function (elem) {\n var parent = elem.parentNode;\n return parent && parent.nodeType !== 11 ? parent : null;\n },\n parents: function (elem) {\n return dir(elem, \"parentNode\");\n },\n parentsUntil: function (elem, _i, until) {\n return dir(elem, \"parentNode\", until);\n },\n next: function (elem) {\n return sibling(elem, \"nextSibling\");\n },\n prev: function (elem) {\n return sibling(elem, \"previousSibling\");\n },\n nextAll: function (elem) {\n return dir(elem, \"nextSibling\");\n },\n prevAll: function (elem) {\n return dir(elem, \"previousSibling\");\n },\n nextUntil: function (elem, _i, until) {\n return dir(elem, \"nextSibling\", until);\n },\n prevUntil: function (elem, _i, until) {\n return dir(elem, \"previousSibling\", until);\n },\n siblings: function (elem) {\n return siblings((elem.parentNode || {}).firstChild, elem);\n },\n children: function (elem) {\n return siblings(elem.firstChild);\n },\n contents: function (elem) {\n if (elem.contentDocument != null &&\n // Support: IE 11+\n // <object> elements with no `data` attribute has an object\n // `contentDocument` with a `null` prototype.\n getProto(elem.contentDocument)) {\n return elem.contentDocument;\n }\n\n // Support: IE 9 - 11 only, iOS 7 only, Android Browser <=4.3 only\n // Treat the template element as a regular one in browsers that\n // don't support it.\n if (nodeName(elem, \"template\")) {\n elem = elem.content || elem;\n }\n return jQuery.merge([], elem.childNodes);\n }\n }, function (name, fn) {\n jQuery.fn[name] = function (until, selector) {\n var matched = jQuery.map(this, fn, until);\n if (name.slice(-5) !== \"Until\") {\n selector = until;\n }\n if (selector && typeof selector === \"string\") {\n matched = jQuery.filter(selector, matched);\n }\n if (this.length > 1) {\n // Remove duplicates\n if (!guaranteedUnique[name]) {\n jQuery.uniqueSort(matched);\n }\n\n // Reverse order for parents* and prev-derivatives\n if (rparentsprev.test(name)) {\n matched.reverse();\n }\n }\n return this.pushStack(matched);\n };\n });\n return jQuery;\n});","define([\"./core\", \"./var/isFunction\", \"./var/slice\", \"./callbacks\"], function (jQuery, isFunction, slice) {\n \"use strict\";\n\n function Identity(v) {\n return v;\n }\n function Thrower(ex) {\n throw ex;\n }\n function adoptValue(value, resolve, reject, noValue) {\n var method;\n try {\n // Check for promise aspect first to privilege synchronous behavior\n if (value && isFunction(method = value.promise)) {\n method.call(value).done(resolve).fail(reject);\n\n // Other thenables\n } else if (value && isFunction(method = value.then)) {\n method.call(value, resolve, reject);\n\n // Other non-thenables\n } else {\n // Control `resolve` arguments by letting Array#slice cast boolean `noValue` to integer:\n // * false: [ value ].slice( 0 ) => resolve( value )\n // * true: [ value ].slice( 1 ) => resolve()\n resolve.apply(undefined, [value].slice(noValue));\n }\n\n // For Promises/A+, convert exceptions into rejections\n // Since jQuery.when doesn't unwrap thenables, we can skip the extra checks appearing in\n // Deferred#then to conditionally suppress rejection.\n } catch (value) {\n // Support: Android 4.0 only\n // Strict mode functions invoked without .call/.apply get global-object context\n reject.apply(undefined, [value]);\n }\n }\n jQuery.extend({\n Deferred: function (func) {\n var tuples = [\n // action, add listener, callbacks,\n // ... .then handlers, argument index, [final state]\n [\"notify\", \"progress\", jQuery.Callbacks(\"memory\"), jQuery.Callbacks(\"memory\"), 2], [\"resolve\", \"done\", jQuery.Callbacks(\"once memory\"), jQuery.Callbacks(\"once memory\"), 0, \"resolved\"], [\"reject\", \"fail\", jQuery.Callbacks(\"once memory\"), jQuery.Callbacks(\"once memory\"), 1, \"rejected\"]],\n state = \"pending\",\n promise = {\n state: function () {\n return state;\n },\n always: function () {\n deferred.done(arguments).fail(arguments);\n return this;\n },\n \"catch\": function (fn) {\n return promise.then(null, fn);\n },\n // Keep pipe for back-compat\n pipe: function /* fnDone, fnFail, fnProgress */\n () {\n var fns = arguments;\n return jQuery.Deferred(function (newDefer) {\n jQuery.each(tuples, function (_i, tuple) {\n // Map tuples (progress, done, fail) to arguments (done, fail, progress)\n var fn = isFunction(fns[tuple[4]]) && fns[tuple[4]];\n\n // deferred.progress(function() { bind to newDefer or newDefer.notify })\n // deferred.done(function() { bind to newDefer or newDefer.resolve })\n // deferred.fail(function() { bind to newDefer or newDefer.reject })\n deferred[tuple[1]](function () {\n var returned = fn && fn.apply(this, arguments);\n if (returned && isFunction(returned.promise)) {\n returned.promise().progress(newDefer.notify).done(newDefer.resolve).fail(newDefer.reject);\n } else {\n newDefer[tuple[0] + \"With\"](this, fn ? [returned] : arguments);\n }\n });\n });\n fns = null;\n }).promise();\n },\n then: function (onFulfilled, onRejected, onProgress) {\n var maxDepth = 0;\n function resolve(depth, deferred, handler, special) {\n return function () {\n var that = this,\n args = arguments,\n mightThrow = function () {\n var returned, then;\n\n // Support: Promises/A+ section 2.3.3.3.3\n // https://promisesaplus.com/#point-59\n // Ignore double-resolution attempts\n if (depth < maxDepth) {\n return;\n }\n returned = handler.apply(that, args);\n\n // Support: Promises/A+ section 2.3.1\n // https://promisesaplus.com/#point-48\n if (returned === deferred.promise()) {\n throw new TypeError(\"Thenable self-resolution\");\n }\n\n // Support: Promises/A+ sections 2.3.3.1, 3.5\n // https://promisesaplus.com/#point-54\n // https://promisesaplus.com/#point-75\n // Retrieve `then` only once\n then = returned && (\n // Support: Promises/A+ section 2.3.4\n // https://promisesaplus.com/#point-64\n // Only check objects and functions for thenability\n typeof returned === \"object\" || typeof returned === \"function\") && returned.then;\n\n // Handle a returned thenable\n if (isFunction(then)) {\n // Special processors (notify) just wait for resolution\n if (special) {\n then.call(returned, resolve(maxDepth, deferred, Identity, special), resolve(maxDepth, deferred, Thrower, special));\n\n // Normal processors (resolve) also hook into progress\n } else {\n // ...and disregard older resolution values\n maxDepth++;\n then.call(returned, resolve(maxDepth, deferred, Identity, special), resolve(maxDepth, deferred, Thrower, special), resolve(maxDepth, deferred, Identity, deferred.notifyWith));\n }\n\n // Handle all other returned values\n } else {\n // Only substitute handlers pass on context\n // and multiple values (non-spec behavior)\n if (handler !== Identity) {\n that = undefined;\n args = [returned];\n }\n\n // Process the value(s)\n // Default process is resolve\n (special || deferred.resolveWith)(that, args);\n }\n },\n // Only normal processors (resolve) catch and reject exceptions\n process = special ? mightThrow : function () {\n try {\n mightThrow();\n } catch (e) {\n if (jQuery.Deferred.exceptionHook) {\n jQuery.Deferred.exceptionHook(e, process.error);\n }\n\n // Support: Promises/A+ section 2.3.3.3.4.1\n // https://promisesaplus.com/#point-61\n // Ignore post-resolution exceptions\n if (depth + 1 >= maxDepth) {\n // Only substitute handlers pass on context\n // and multiple values (non-spec behavior)\n if (handler !== Thrower) {\n that = undefined;\n args = [e];\n }\n deferred.rejectWith(that, args);\n }\n }\n };\n\n // Support: Promises/A+ section 2.3.3.3.1\n // https://promisesaplus.com/#point-57\n // Re-resolve promises immediately to dodge false rejection from\n // subsequent errors\n if (depth) {\n process();\n } else {\n // Call an optional hook to record the error, in case of exception\n // since it's otherwise lost when execution goes async\n if (jQuery.Deferred.getErrorHook) {\n process.error = jQuery.Deferred.getErrorHook();\n\n // The deprecated alias of the above. While the name suggests\n // returning the stack, not an error instance, jQuery just passes\n // it directly to `console.warn` so both will work; an instance\n // just better cooperates with source maps.\n } else if (jQuery.Deferred.getStackHook) {\n process.error = jQuery.Deferred.getStackHook();\n }\n window.setTimeout(process);\n }\n };\n }\n return jQuery.Deferred(function (newDefer) {\n // progress_handlers.add( ... )\n tuples[0][3].add(resolve(0, newDefer, isFunction(onProgress) ? onProgress : Identity, newDefer.notifyWith));\n\n // fulfilled_handlers.add( ... )\n tuples[1][3].add(resolve(0, newDefer, isFunction(onFulfilled) ? onFulfilled : Identity));\n\n // rejected_handlers.add( ... )\n tuples[2][3].add(resolve(0, newDefer, isFunction(onRejected) ? onRejected : Thrower));\n }).promise();\n },\n // Get a promise for this deferred\n // If obj is provided, the promise aspect is added to the object\n promise: function (obj) {\n return obj != null ? jQuery.extend(obj, promise) : promise;\n }\n },\n deferred = {};\n\n // Add list-specific methods\n jQuery.each(tuples, function (i, tuple) {\n var list = tuple[2],\n stateString = tuple[5];\n\n // promise.progress = list.add\n // promise.done = list.add\n // promise.fail = list.add\n promise[tuple[1]] = list.add;\n\n // Handle state\n if (stateString) {\n list.add(function () {\n // state = \"resolved\" (i.e., fulfilled)\n // state = \"rejected\"\n state = stateString;\n },\n // rejected_callbacks.disable\n // fulfilled_callbacks.disable\n tuples[3 - i][2].disable,\n // rejected_handlers.disable\n // fulfilled_handlers.disable\n tuples[3 - i][3].disable,\n // progress_callbacks.lock\n tuples[0][2].lock,\n // progress_handlers.lock\n tuples[0][3].lock);\n }\n\n // progress_handlers.fire\n // fulfilled_handlers.fire\n // rejected_handlers.fire\n list.add(tuple[3].fire);\n\n // deferred.notify = function() { deferred.notifyWith(...) }\n // deferred.resolve = function() { deferred.resolveWith(...) }\n // deferred.reject = function() { deferred.rejectWith(...) }\n deferred[tuple[0]] = function () {\n deferred[tuple[0] + \"With\"](this === deferred ? undefined : this, arguments);\n return this;\n };\n\n // deferred.notifyWith = list.fireWith\n // deferred.resolveWith = list.fireWith\n // deferred.rejectWith = list.fireWith\n deferred[tuple[0] + \"With\"] = list.fireWith;\n });\n\n // Make the deferred a promise\n promise.promise(deferred);\n\n // Call given func if any\n if (func) {\n func.call(deferred, deferred);\n }\n\n // All done!\n return deferred;\n },\n // Deferred helper\n when: function (singleValue) {\n var\n // count of uncompleted subordinates\n remaining = arguments.length,\n // count of unprocessed arguments\n i = remaining,\n // subordinate fulfillment data\n resolveContexts = Array(i),\n resolveValues = slice.call(arguments),\n // the primary Deferred\n primary = jQuery.Deferred(),\n // subordinate callback factory\n updateFunc = function (i) {\n return function (value) {\n resolveContexts[i] = this;\n resolveValues[i] = arguments.length > 1 ? slice.call(arguments) : value;\n if (! --remaining) {\n primary.resolveWith(resolveContexts, resolveValues);\n }\n };\n };\n\n // Single- and empty arguments are adopted like Promise.resolve\n if (remaining <= 1) {\n adoptValue(singleValue, primary.done(updateFunc(i)).resolve, primary.reject, !remaining);\n\n // Use .then() to unwrap secondary thenables (cf. gh-3000)\n if (primary.state() === \"pending\" || isFunction(resolveValues[i] && resolveValues[i].then)) {\n return primary.then();\n }\n }\n\n // Multiple arguments are aggregated like Promise.all array elements\n while (i--) {\n adoptValue(resolveValues[i], updateFunc(i), primary.reject);\n }\n return primary.promise();\n }\n });\n return jQuery;\n});","define([\"./arr\"], function (arr) {\n \"use strict\";\n\n return arr.slice;\n});","define(function () {\n \"use strict\";\n\n return function isWindow(obj) {\n return obj != null && obj === obj.window;\n };\n});","define([], function () {\n \"use strict\";\n\n // Matches dashed string for camelizing\n var rmsPrefix = /^-ms-/,\n rdashAlpha = /-([a-z])/g;\n\n // Used by camelCase as callback to replace()\n function fcamelCase(_all, letter) {\n return 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)\n function camelCase(string) {\n return string.replace(rmsPrefix, \"ms-\").replace(rdashAlpha, fcamelCase);\n }\n return camelCase;\n});","define([\"./core\", \"./var/document\", \"./var/documentElement\", \"./var/isFunction\", \"./var/rnothtmlwhite\", \"./var/rcheckableType\", \"./var/slice\", \"./data/var/acceptData\", \"./data/var/dataPriv\", \"./core/nodeName\", \"./core/init\", \"./selector\"], function (jQuery, document, documentElement, isFunction, rnothtmlwhite, rcheckableType, slice, acceptData, dataPriv, nodeName) {\n \"use strict\";\n\n var rtypenamespace = /^([^.]*)(?:\\.(.+)|)/;\n function returnTrue() {\n return true;\n }\n function returnFalse() {\n return false;\n }\n function on(elem, types, selector, data, fn, one) {\n var origFn, type;\n\n // Types can be a map of types/handlers\n if (typeof types === \"object\") {\n // ( types-Object, selector, data )\n if (typeof selector !== \"string\") {\n // ( types-Object, data )\n data = data || selector;\n selector = undefined;\n }\n for (type in types) {\n on(elem, type, selector, data, types[type], one);\n }\n return elem;\n }\n if (data == null && fn == null) {\n // ( types, fn )\n fn = selector;\n data = selector = undefined;\n } else if (fn == null) {\n if (typeof selector === \"string\") {\n // ( types, selector, fn )\n fn = data;\n data = undefined;\n } else {\n // ( types, data, fn )\n fn = data;\n data = selector;\n selector = undefined;\n }\n }\n if (fn === false) {\n fn = returnFalse;\n } else if (!fn) {\n return elem;\n }\n if (one === 1) {\n origFn = fn;\n fn = function (event) {\n // Can use an empty set, since event contains the info\n jQuery().off(event);\n return origFn.apply(this, arguments);\n };\n\n // Use same guid so caller can remove using origFn\n fn.guid = origFn.guid || (origFn.guid = jQuery.guid++);\n }\n return elem.each(function () {\n jQuery.event.add(this, types, fn, data, selector);\n });\n }\n\n /*\n * Helper functions for managing events -- not part of the public interface.\n * Props to Dean Edwards' addEvent library for many of the ideas.\n */\n jQuery.event = {\n global: {},\n add: function (elem, types, handler, data, selector) {\n var handleObjIn,\n eventHandle,\n tmp,\n events,\n t,\n handleObj,\n special,\n handlers,\n type,\n namespaces,\n origType,\n elemData = dataPriv.get(elem);\n\n // Only attach events to objects that accept data\n if (!acceptData(elem)) {\n return;\n }\n\n // Caller can pass in an object of custom data in lieu of the handler\n if (handler.handler) {\n handleObjIn = handler;\n handler = handleObjIn.handler;\n selector = handleObjIn.selector;\n }\n\n // Ensure that invalid selectors throw exceptions at attach time\n // Evaluate against documentElement in case elem is a non-element node (e.g., document)\n if (selector) {\n jQuery.find.matchesSelector(documentElement, selector);\n }\n\n // Make sure that the handler has a unique ID, used to find/remove it later\n if (!handler.guid) {\n handler.guid = jQuery.guid++;\n }\n\n // Init the element's event structure and main handler, if this is the first\n if (!(events = elemData.events)) {\n events = elemData.events = Object.create(null);\n }\n if (!(eventHandle = elemData.handle)) {\n eventHandle = elemData.handle = function (e) {\n // Discard the second event of a jQuery.event.trigger() and\n // when an event is called after a page has unloaded\n return typeof jQuery !== \"undefined\" && jQuery.event.triggered !== e.type ? jQuery.event.dispatch.apply(elem, arguments) : undefined;\n };\n }\n\n // Handle multiple events separated by a space\n types = (types || \"\").match(rnothtmlwhite) || [\"\"];\n t = types.length;\n while (t--) {\n tmp = rtypenamespace.exec(types[t]) || [];\n type = origType = tmp[1];\n namespaces = (tmp[2] || \"\").split(\".\").sort();\n\n // There *must* be a type, no attaching namespace-only handlers\n if (!type) {\n continue;\n }\n\n // If event changes its type, use the special event handlers for the changed type\n special = jQuery.event.special[type] || {};\n\n // If selector defined, determine special event api type, otherwise given type\n type = (selector ? special.delegateType : special.bindType) || type;\n\n // Update special based on newly reset type\n special = jQuery.event.special[type] || {};\n\n // handleObj is passed to all event handlers\n handleObj = jQuery.extend({\n type: type,\n origType: origType,\n data: data,\n handler: handler,\n guid: handler.guid,\n selector: selector,\n needsContext: selector && jQuery.expr.match.needsContext.test(selector),\n namespace: namespaces.join(\".\")\n }, handleObjIn);\n\n // Init the event handler queue if we're the first\n if (!(handlers = events[type])) {\n handlers = events[type] = [];\n handlers.delegateCount = 0;\n\n // Only use addEventListener if the special events handler returns false\n if (!special.setup || special.setup.call(elem, data, namespaces, eventHandle) === false) {\n if (elem.addEventListener) {\n elem.addEventListener(type, eventHandle);\n }\n }\n }\n if (special.add) {\n special.add.call(elem, handleObj);\n if (!handleObj.handler.guid) {\n handleObj.handler.guid = handler.guid;\n }\n }\n\n // Add to the element's handler list, delegates in front\n if (selector) {\n handlers.splice(handlers.delegateCount++, 0, handleObj);\n } else {\n handlers.push(handleObj);\n }\n\n // Keep track of which events have ever been used, for event optimization\n jQuery.event.global[type] = true;\n }\n },\n // Detach an event or set of events from an element\n remove: function (elem, types, handler, selector, mappedTypes) {\n var j,\n origCount,\n tmp,\n events,\n t,\n handleObj,\n special,\n handlers,\n type,\n namespaces,\n origType,\n elemData = dataPriv.hasData(elem) && dataPriv.get(elem);\n if (!elemData || !(events = elemData.events)) {\n return;\n }\n\n // Once for each type.namespace in types; type may be omitted\n types = (types || \"\").match(rnothtmlwhite) || [\"\"];\n t = types.length;\n while (t--) {\n tmp = rtypenamespace.exec(types[t]) || [];\n type = origType = tmp[1];\n namespaces = (tmp[2] || \"\").split(\".\").sort();\n\n // Unbind all events (on this namespace, if provided) for the element\n if (!type) {\n for (type in events) {\n jQuery.event.remove(elem, type + types[t], handler, selector, true);\n }\n continue;\n }\n special = jQuery.event.special[type] || {};\n type = (selector ? special.delegateType : special.bindType) || type;\n handlers = events[type] || [];\n tmp = tmp[2] && new RegExp(\"(^|\\\\.)\" + namespaces.join(\"\\\\.(?:.*\\\\.|)\") + \"(\\\\.|$)\");\n\n // Remove matching events\n origCount = j = handlers.length;\n while (j--) {\n handleObj = handlers[j];\n if ((mappedTypes || origType === handleObj.origType) && (!handler || handler.guid === handleObj.guid) && (!tmp || tmp.test(handleObj.namespace)) && (!selector || selector === handleObj.selector || selector === \"**\" && handleObj.selector)) {\n handlers.splice(j, 1);\n if (handleObj.selector) {\n handlers.delegateCount--;\n }\n if (special.remove) {\n special.remove.call(elem, handleObj);\n }\n }\n }\n\n // Remove generic event handler if we removed something and no more handlers exist\n // (avoids potential for endless recursion during removal of special event handlers)\n if (origCount && !handlers.length) {\n if (!special.teardown || special.teardown.call(elem, namespaces, elemData.handle) === false) {\n jQuery.removeEvent(elem, type, elemData.handle);\n }\n delete events[type];\n }\n }\n\n // Remove data and the expando if it's no longer used\n if (jQuery.isEmptyObject(events)) {\n dataPriv.remove(elem, \"handle events\");\n }\n },\n dispatch: function (nativeEvent) {\n var i,\n j,\n ret,\n matched,\n handleObj,\n handlerQueue,\n args = new Array(arguments.length),\n // Make a writable jQuery.Event from the native event object\n event = jQuery.event.fix(nativeEvent),\n handlers = (dataPriv.get(this, \"events\") || Object.create(null))[event.type] || [],\n special = jQuery.event.special[event.type] || {};\n\n // Use the fix-ed jQuery.Event rather than the (read-only) native event\n args[0] = event;\n for (i = 1; i < arguments.length; i++) {\n args[i] = arguments[i];\n }\n event.delegateTarget = this;\n\n // Call the preDispatch hook for the mapped type, and let it bail if desired\n if (special.preDispatch && special.preDispatch.call(this, event) === false) {\n return;\n }\n\n // Determine handlers\n handlerQueue = jQuery.event.handlers.call(this, event, handlers);\n\n // Run delegates first; they may want to stop propagation beneath us\n i = 0;\n while ((matched = handlerQueue[i++]) && !event.isPropagationStopped()) {\n event.currentTarget = matched.elem;\n j = 0;\n while ((handleObj = matched.handlers[j++]) && !event.isImmediatePropagationStopped()) {\n // If the event is namespaced, then each handler is only invoked if it is\n // specially universal or its namespaces are a superset of the event's.\n if (!event.rnamespace || handleObj.namespace === false || event.rnamespace.test(handleObj.namespace)) {\n event.handleObj = handleObj;\n event.data = handleObj.data;\n ret = ((jQuery.event.special[handleObj.origType] || {}).handle || handleObj.handler).apply(matched.elem, args);\n if (ret !== undefined) {\n if ((event.result = ret) === false) {\n event.preventDefault();\n event.stopPropagation();\n }\n }\n }\n }\n }\n\n // Call the postDispatch hook for the mapped type\n if (special.postDispatch) {\n special.postDispatch.call(this, event);\n }\n return event.result;\n },\n handlers: function (event, handlers) {\n var i,\n handleObj,\n sel,\n matchedHandlers,\n matchedSelectors,\n handlerQueue = [],\n delegateCount = handlers.delegateCount,\n cur = event.target;\n\n // Find delegate handlers\n if (delegateCount &&\n // Support: IE <=9\n // Black-hole SVG <use> instance trees (trac-13180)\n cur.nodeType &&\n // Support: Firefox <=42\n // Suppress spec-violating clicks indicating a non-primary pointer button (trac-3861)\n // https://www.w3.org/TR/DOM-Level-3-Events/#event-type-click\n // Support: IE 11 only\n // ...but not arrow key \"clicks\" of radio inputs, which can have `button` -1 (gh-2343)\n !(event.type === \"click\" && event.button >= 1)) {\n for (; cur !== this; cur = cur.parentNode || this) {\n // Don't check non-elements (trac-13208)\n // Don't process clicks on disabled elements (trac-6911, trac-8165, trac-11382, trac-11764)\n if (cur.nodeType === 1 && !(event.type === \"click\" && cur.disabled === true)) {\n matchedHandlers = [];\n matchedSelectors = {};\n for (i = 0; i < delegateCount; i++) {\n handleObj = handlers[i];\n\n // Don't conflict with Object.prototype properties (trac-13203)\n sel = handleObj.selector + \" \";\n if (matchedSelectors[sel] === undefined) {\n matchedSelectors[sel] = handleObj.needsContext ? jQuery(sel, this).index(cur) > -1 : jQuery.find(sel, this, null, [cur]).length;\n }\n if (matchedSelectors[sel]) {\n matchedHandlers.push(handleObj);\n }\n }\n if (matchedHandlers.length) {\n handlerQueue.push({\n elem: cur,\n handlers: matchedHandlers\n });\n }\n }\n }\n }\n\n // Add the remaining (directly-bound) handlers\n cur = this;\n if (delegateCount < handlers.length) {\n handlerQueue.push({\n elem: cur,\n handlers: handlers.slice(delegateCount)\n });\n }\n return handlerQueue;\n },\n addProp: function (name, hook) {\n Object.defineProperty(jQuery.Event.prototype, name, {\n enumerable: true,\n configurable: true,\n get: isFunction(hook) ? function () {\n if (this.originalEvent) {\n return hook(this.originalEvent);\n }\n } : function () {\n if (this.originalEvent) {\n return this.originalEvent[name];\n }\n },\n set: function (value) {\n Object.defineProperty(this, name, {\n enumerable: true,\n configurable: true,\n writable: true,\n value: value\n });\n }\n });\n },\n fix: function (originalEvent) {\n return originalEvent[jQuery.expando] ? originalEvent : new jQuery.Event(originalEvent);\n },\n special: {\n load: {\n // Prevent triggered image.load events from bubbling to window.load\n noBubble: true\n },\n click: {\n // Utilize native event to ensure correct state for checkable inputs\n setup: function (data) {\n // For mutual compressibility with _default, replace `this` access with a local var.\n // `|| data` is dead code meant only to preserve the variable through minification.\n var el = this || data;\n\n // Claim the first handler\n if (rcheckableType.test(el.type) && el.click && nodeName(el, \"input\")) {\n // dataPriv.set( el, \"click\", ... )\n leverageNative(el, \"click\", true);\n }\n\n // Return false to allow normal processing in the caller\n return false;\n },\n trigger: function (data) {\n // For mutual compressibility with _default, replace `this` access with a local var.\n // `|| data` is dead code meant only to preserve the variable through minification.\n var el = this || data;\n\n // Force setup before triggering a click\n if (rcheckableType.test(el.type) && el.click && nodeName(el, \"input\")) {\n leverageNative(el, \"click\");\n }\n\n // Return non-false to allow normal event-path propagation\n return true;\n },\n // For cross-browser consistency, suppress native .click() on links\n // Also prevent it if we're currently inside a leveraged native-event stack\n _default: function (event) {\n var target = event.target;\n return rcheckableType.test(target.type) && target.click && nodeName(target, \"input\") && dataPriv.get(target, \"click\") || nodeName(target, \"a\");\n }\n },\n beforeunload: {\n postDispatch: function (event) {\n // Support: Firefox 20+\n // Firefox doesn't alert if the returnValue field is not set.\n if (event.result !== undefined && event.originalEvent) {\n event.originalEvent.returnValue = event.result;\n }\n }\n }\n }\n };\n\n // Ensure the presence of an event listener that handles manually-triggered\n // synthetic events by interrupting progress until reinvoked in response to\n // *native* events that it fires directly, ensuring that state changes have\n // already occurred before other listeners are invoked.\n function leverageNative(el, type, isSetup) {\n // Missing `isSetup` indicates a trigger call, which must force setup through jQuery.event.add\n if (!isSetup) {\n if (dataPriv.get(el, type) === undefined) {\n jQuery.event.add(el, type, returnTrue);\n }\n return;\n }\n\n // Register the controller as a special universal handler for all event namespaces\n dataPriv.set(el, type, false);\n jQuery.event.add(el, type, {\n namespace: false,\n handler: function (event) {\n var result,\n saved = dataPriv.get(this, type);\n if (event.isTrigger & 1 && this[type]) {\n // Interrupt processing of the outer synthetic .trigger()ed event\n if (!saved) {\n // Store arguments for use when handling the inner native event\n // There will always be at least one argument (an event object), so this array\n // will not be confused with a leftover capture object.\n saved = slice.call(arguments);\n dataPriv.set(this, type, saved);\n\n // Trigger the native event and capture its result\n this[type]();\n result = dataPriv.get(this, type);\n dataPriv.set(this, type, false);\n if (saved !== result) {\n // Cancel the outer synthetic event\n event.stopImmediatePropagation();\n event.preventDefault();\n return result;\n }\n\n // If this is an inner synthetic event for an event with a bubbling surrogate\n // (focus or blur), assume that the surrogate already propagated from triggering\n // the native event and prevent that from happening again here.\n // This technically gets the ordering wrong w.r.t. to `.trigger()` (in which the\n // bubbling surrogate propagates *after* the non-bubbling base), but that seems\n // less bad than duplication.\n } else if ((jQuery.event.special[type] || {}).delegateType) {\n event.stopPropagation();\n }\n\n // If this is a native event triggered above, everything is now in order\n // Fire an inner synthetic event with the original arguments\n } else if (saved) {\n // ...and capture the result\n dataPriv.set(this, type, jQuery.event.trigger(saved[0], saved.slice(1), this));\n\n // Abort handling of the native event by all jQuery handlers while allowing\n // native handlers on the same element to run. On target, this is achieved\n // by stopping immediate propagation just on the jQuery event. However,\n // the native event is re-wrapped by a jQuery one on each level of the\n // propagation so the only way to stop it for jQuery is to stop it for\n // everyone via native `stopPropagation()`. This is not a problem for\n // focus/blur which don't bubble, but it does also stop click on checkboxes\n // and radios. We accept this limitation.\n event.stopPropagation();\n event.isImmediatePropagationStopped = returnTrue;\n }\n }\n });\n }\n jQuery.removeEvent = function (elem, type, handle) {\n // This \"if\" is needed for plain objects\n if (elem.removeEventListener) {\n elem.removeEventListener(type, handle);\n }\n };\n jQuery.Event = function (src, props) {\n // Allow instantiation without the 'new' keyword\n if (!(this instanceof jQuery.Event)) {\n return new jQuery.Event(src, props);\n }\n\n // Event object\n if (src && src.type) {\n this.originalEvent = src;\n this.type = src.type;\n\n // Events bubbling up the document may have been marked as prevented\n // by a handler lower down the tree; reflect the correct value.\n this.isDefaultPrevented = src.defaultPrevented || src.defaultPrevented === undefined &&\n // Support: Android <=2.3 only\n src.returnValue === false ? returnTrue : returnFalse;\n\n // Create target properties\n // Support: Safari <=6 - 7 only\n // Target should not be a text node (trac-504, trac-13143)\n this.target = src.target && src.target.nodeType === 3 ? src.target.parentNode : src.target;\n this.currentTarget = src.currentTarget;\n this.relatedTarget = src.relatedTarget;\n\n // Event type\n } else {\n this.type = src;\n }\n\n // Put explicitly provided properties onto the event object\n if (props) {\n jQuery.extend(this, props);\n }\n\n // Create a timestamp if incoming event doesn't have one\n this.timeStamp = src && src.timeStamp || Date.now();\n\n // Mark it as fixed\n this[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\n jQuery.Event.prototype = {\n constructor: jQuery.Event,\n isDefaultPrevented: returnFalse,\n isPropagationStopped: returnFalse,\n isImmediatePropagationStopped: returnFalse,\n isSimulated: false,\n preventDefault: function () {\n var e = this.originalEvent;\n this.isDefaultPrevented = returnTrue;\n if (e && !this.isSimulated) {\n e.preventDefault();\n }\n },\n stopPropagation: function () {\n var e = this.originalEvent;\n this.isPropagationStopped = returnTrue;\n if (e && !this.isSimulated) {\n e.stopPropagation();\n }\n },\n stopImmediatePropagation: function () {\n var e = this.originalEvent;\n this.isImmediatePropagationStopped = returnTrue;\n if (e && !this.isSimulated) {\n e.stopImmediatePropagation();\n }\n this.stopPropagation();\n }\n };\n\n // Includes all common event props including KeyEvent and MouseEvent specific props\n jQuery.each({\n altKey: true,\n bubbles: true,\n cancelable: true,\n changedTouches: true,\n ctrlKey: true,\n detail: true,\n eventPhase: true,\n metaKey: true,\n pageX: true,\n pageY: true,\n shiftKey: true,\n view: true,\n \"char\": true,\n code: true,\n charCode: true,\n key: true,\n keyCode: true,\n button: true,\n buttons: true,\n clientX: true,\n clientY: true,\n offsetX: true,\n offsetY: true,\n pointerId: true,\n pointerType: true,\n screenX: true,\n screenY: true,\n targetTouches: true,\n toElement: true,\n touches: true,\n which: true\n }, jQuery.event.addProp);\n jQuery.each({\n focus: \"focusin\",\n blur: \"focusout\"\n }, function (type, delegateType) {\n function focusMappedHandler(nativeEvent) {\n if (document.documentMode) {\n // Support: IE 11+\n // Attach a single focusin/focusout handler on the document while someone wants\n // focus/blur. This is because the former are synchronous in IE while the latter\n // are async. In other browsers, all those handlers are invoked synchronously.\n\n // `handle` from private data would already wrap the event, but we need\n // to change the `type` here.\n var handle = dataPriv.get(this, \"handle\"),\n event = jQuery.event.fix(nativeEvent);\n event.type = nativeEvent.type === \"focusin\" ? \"focus\" : \"blur\";\n event.isSimulated = true;\n\n // First, handle focusin/focusout\n handle(nativeEvent);\n\n // ...then, handle focus/blur\n //\n // focus/blur don't bubble while focusin/focusout do; simulate the former by only\n // invoking the handler at the lower level.\n if (event.target === event.currentTarget) {\n // The setup part calls `leverageNative`, which, in turn, calls\n // `jQuery.event.add`, so event handle will already have been set\n // by this point.\n handle(event);\n }\n } else {\n // For non-IE browsers, attach a single capturing handler on the document\n // while someone wants focusin/focusout.\n jQuery.event.simulate(delegateType, nativeEvent.target, jQuery.event.fix(nativeEvent));\n }\n }\n jQuery.event.special[type] = {\n // Utilize native event if possible so blur/focus sequence is correct\n setup: function () {\n var attaches;\n\n // Claim the first handler\n // dataPriv.set( this, \"focus\", ... )\n // dataPriv.set( this, \"blur\", ... )\n leverageNative(this, type, true);\n if (document.documentMode) {\n // Support: IE 9 - 11+\n // We use the same native handler for focusin & focus (and focusout & blur)\n // so we need to coordinate setup & teardown parts between those events.\n // Use `delegateType` as the key as `type` is already used by `leverageNative`.\n attaches = dataPriv.get(this, delegateType);\n if (!attaches) {\n this.addEventListener(delegateType, focusMappedHandler);\n }\n dataPriv.set(this, delegateType, (attaches || 0) + 1);\n } else {\n // Return false to allow normal processing in the caller\n return false;\n }\n },\n trigger: function () {\n // Force setup before trigger\n leverageNative(this, type);\n\n // Return non-false to allow normal event-path propagation\n return true;\n },\n teardown: function () {\n var attaches;\n if (document.documentMode) {\n attaches = dataPriv.get(this, delegateType) - 1;\n if (!attaches) {\n this.removeEventListener(delegateType, focusMappedHandler);\n dataPriv.remove(this, delegateType);\n } else {\n dataPriv.set(this, delegateType, attaches);\n }\n } else {\n // Return false to indicate standard teardown should be applied\n return false;\n }\n },\n // Suppress native focus or blur if we're currently inside\n // a leveraged native-event stack\n _default: function (event) {\n return dataPriv.get(event.target, type);\n },\n delegateType: delegateType\n };\n\n // Support: Firefox <=44\n // Firefox doesn't have focus(in | out) events\n // Related ticket - https://bugzilla.mozilla.org/show_bug.cgi?id=687787\n //\n // Support: Chrome <=48 - 49, Safari <=9.0 - 9.1\n // focus(in | out) events fire after focus & blur events,\n // which is spec violation - http://www.w3.org/TR/DOM-Level-3-Events/#events-focusevent-event-order\n // Related ticket - https://bugs.chromium.org/p/chromium/issues/detail?id=449857\n //\n // Support: IE 9 - 11+\n // To preserve relative focusin/focus & focusout/blur event order guaranteed on the 3.x branch,\n // attach a single handler for both events in IE.\n jQuery.event.special[delegateType] = {\n setup: function () {\n // Handle: regular nodes (via `this.ownerDocument`), window\n // (via `this.document`) & document (via `this`).\n var doc = this.ownerDocument || this.document || this,\n dataHolder = document.documentMode ? this : doc,\n attaches = dataPriv.get(dataHolder, delegateType);\n\n // Support: IE 9 - 11+\n // We use the same native handler for focusin & focus (and focusout & blur)\n // so we need to coordinate setup & teardown parts between those events.\n // Use `delegateType` as the key as `type` is already used by `leverageNative`.\n if (!attaches) {\n if (document.documentMode) {\n this.addEventListener(delegateType, focusMappedHandler);\n } else {\n doc.addEventListener(type, focusMappedHandler, true);\n }\n }\n dataPriv.set(dataHolder, delegateType, (attaches || 0) + 1);\n },\n teardown: function () {\n var doc = this.ownerDocument || this.document || this,\n dataHolder = document.documentMode ? this : doc,\n attaches = dataPriv.get(dataHolder, delegateType) - 1;\n if (!attaches) {\n if (document.documentMode) {\n this.removeEventListener(delegateType, focusMappedHandler);\n } else {\n doc.removeEventListener(type, focusMappedHandler, true);\n }\n dataPriv.remove(dataHolder, delegateType);\n } else {\n dataPriv.set(dataHolder, delegateType, attaches);\n }\n }\n };\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).\n jQuery.each({\n mouseenter: \"mouseover\",\n mouseleave: \"mouseout\",\n pointerenter: \"pointerover\",\n pointerleave: \"pointerout\"\n }, function (orig, fix) {\n jQuery.event.special[orig] = {\n delegateType: fix,\n bindType: fix,\n handle: function (event) {\n var ret,\n target = this,\n related = event.relatedTarget,\n handleObj = event.handleObj;\n\n // For mouseenter/leave call the handler if related is outside the target.\n // NB: No relatedTarget if the mouse left/entered the browser window\n if (!related || related !== target && !jQuery.contains(target, related)) {\n event.type = handleObj.origType;\n ret = handleObj.handler.apply(this, arguments);\n event.type = fix;\n }\n return ret;\n }\n };\n });\n jQuery.fn.extend({\n on: function (types, selector, data, fn) {\n return on(this, types, selector, data, fn);\n },\n one: function (types, selector, data, fn) {\n return on(this, types, selector, data, fn, 1);\n },\n off: function (types, selector, fn) {\n var handleObj, type;\n if (types && types.preventDefault && types.handleObj) {\n // ( event ) dispatched jQuery.Event\n handleObj = types.handleObj;\n jQuery(types.delegateTarget).off(handleObj.namespace ? handleObj.origType + \".\" + handleObj.namespace : handleObj.origType, handleObj.selector, handleObj.handler);\n return this;\n }\n if (typeof types === \"object\") {\n // ( types-object [, selector] )\n for (type in types) {\n this.off(type, selector, types[type]);\n }\n return this;\n }\n if (selector === false || typeof selector === \"function\") {\n // ( types [, fn] )\n fn = selector;\n selector = undefined;\n }\n if (fn === false) {\n fn = returnFalse;\n }\n return this.each(function () {\n jQuery.event.remove(this, types, fn, selector);\n });\n }\n });\n return jQuery;\n});","define([\"./core\", \"./core/access\", \"./core/camelCase\", \"./core/nodeName\", \"./var/rcssNum\", \"./css/var/rnumnonpx\", \"./css/var/rcustomProp\", \"./css/var/cssExpand\", \"./css/var/getStyles\", \"./css/var/swap\", \"./css/curCSS\", \"./css/adjustCSS\", \"./css/addGetHookIf\", \"./css/support\", \"./css/finalPropName\", \"./core/init\", \"./core/ready\", \"./selector\" // contains\n], function (jQuery, access, camelCase, nodeName, rcssNum, rnumnonpx, rcustomProp, cssExpand, getStyles, swap, curCSS, adjustCSS, addGetHookIf, support, finalPropName) {\n \"use strict\";\n\n var\n // Swappable if display is none or starts with table\n // except \"table\", \"table-cell\", or \"table-caption\"\n // See here for display values: https://developer.mozilla.org/en-US/docs/CSS/display\n rdisplayswap = /^(none|table(?!-c[ea]).+)/,\n cssShow = {\n position: \"absolute\",\n visibility: \"hidden\",\n display: \"block\"\n },\n cssNormalTransform = {\n letterSpacing: \"0\",\n fontWeight: \"400\"\n };\n function setPositiveNumber(_elem, value, subtract) {\n // Any relative (+/-) values have already been\n // normalized at this point\n var matches = rcssNum.exec(value);\n return matches ?\n // Guard against undefined \"subtract\", e.g., when used as in cssHooks\n Math.max(0, matches[2] - (subtract || 0)) + (matches[3] || \"px\") : value;\n }\n function boxModelAdjustment(elem, dimension, box, isBorderBox, styles, computedVal) {\n var i = dimension === \"width\" ? 1 : 0,\n extra = 0,\n delta = 0,\n marginDelta = 0;\n\n // Adjustment may not be necessary\n if (box === (isBorderBox ? \"border\" : \"content\")) {\n return 0;\n }\n for (; i < 4; i += 2) {\n // Both box models exclude margin\n // Count margin delta separately to only add it after scroll gutter adjustment.\n // This is needed to make negative margins work with `outerHeight( true )` (gh-3982).\n if (box === \"margin\") {\n marginDelta += jQuery.css(elem, box + cssExpand[i], true, styles);\n }\n\n // If we get here with a content-box, we're seeking \"padding\" or \"border\" or \"margin\"\n if (!isBorderBox) {\n // Add padding\n delta += jQuery.css(elem, \"padding\" + cssExpand[i], true, styles);\n\n // For \"border\" or \"margin\", add border\n if (box !== \"padding\") {\n delta += jQuery.css(elem, \"border\" + cssExpand[i] + \"Width\", true, styles);\n\n // But still keep track of it otherwise\n } else {\n extra += jQuery.css(elem, \"border\" + cssExpand[i] + \"Width\", true, styles);\n }\n\n // If we get here with a border-box (content + padding + border), we're seeking \"content\" or\n // \"padding\" or \"margin\"\n } else {\n // For \"content\", subtract padding\n if (box === \"content\") {\n delta -= jQuery.css(elem, \"padding\" + cssExpand[i], true, styles);\n }\n\n // For \"content\" or \"padding\", subtract border\n if (box !== \"margin\") {\n delta -= jQuery.css(elem, \"border\" + cssExpand[i] + \"Width\", true, styles);\n }\n }\n }\n\n // Account for positive content-box scroll gutter when requested by providing computedVal\n if (!isBorderBox && computedVal >= 0) {\n // offsetWidth/offsetHeight is a rounded sum of content, padding, scroll gutter, and border\n // Assuming integer scroll gutter, subtract the rest and round down\n delta += Math.max(0, Math.ceil(elem[\"offset\" + dimension[0].toUpperCase() + dimension.slice(1)] - computedVal - delta - extra - 0.5\n\n // If offsetWidth/offsetHeight is unknown, then we can't determine content-box scroll gutter\n // Use an explicit zero to avoid NaN (gh-3964)\n )) || 0;\n }\n return delta + marginDelta;\n }\n function getWidthOrHeight(elem, dimension, extra) {\n // Start with computed style\n var styles = getStyles(elem),\n // To avoid forcing a reflow, only fetch boxSizing if we need it (gh-4322).\n // Fake content-box until we know it's needed to know the true value.\n boxSizingNeeded = !support.boxSizingReliable() || extra,\n isBorderBox = boxSizingNeeded && jQuery.css(elem, \"boxSizing\", false, styles) === \"border-box\",\n valueIsBorderBox = isBorderBox,\n val = curCSS(elem, dimension, styles),\n offsetProp = \"offset\" + dimension[0].toUpperCase() + dimension.slice(1);\n\n // Support: Firefox <=54\n // Return a confounding non-pixel value or feign ignorance, as appropriate.\n if (rnumnonpx.test(val)) {\n if (!extra) {\n return val;\n }\n val = \"auto\";\n }\n\n // Support: IE 9 - 11 only\n // Use offsetWidth/offsetHeight for when box sizing is unreliable.\n // In those cases, the computed value can be trusted to be border-box.\n if ((!support.boxSizingReliable() && isBorderBox ||\n // Support: IE 10 - 11+, Edge 15 - 18+\n // IE/Edge misreport `getComputedStyle` of table rows with width/height\n // set in CSS while `offset*` properties report correct values.\n // Interestingly, in some cases IE 9 doesn't suffer from this issue.\n !support.reliableTrDimensions() && nodeName(elem, \"tr\") ||\n // Fall back to offsetWidth/offsetHeight when value is \"auto\"\n // This happens for inline elements with no explicit setting (gh-3571)\n val === \"auto\" ||\n // Support: Android <=4.1 - 4.3 only\n // Also use offsetWidth/offsetHeight for misreported inline dimensions (gh-3602)\n !parseFloat(val) && jQuery.css(elem, \"display\", false, styles) === \"inline\") &&\n // Make sure the element is visible & connected\n elem.getClientRects().length) {\n isBorderBox = jQuery.css(elem, \"boxSizing\", false, styles) === \"border-box\";\n\n // Where available, offsetWidth/offsetHeight approximate border box dimensions.\n // Where not available (e.g., SVG), assume unreliable box-sizing and interpret the\n // retrieved value as a content box dimension.\n valueIsBorderBox = offsetProp in elem;\n if (valueIsBorderBox) {\n val = elem[offsetProp];\n }\n }\n\n // Normalize \"\" and auto\n val = parseFloat(val) || 0;\n\n // Adjust for the element's box model\n return val + boxModelAdjustment(elem, dimension, extra || (isBorderBox ? \"border\" : \"content\"), valueIsBorderBox, styles,\n // Provide the current computed size to request scroll gutter calculation (gh-3589)\n val) + \"px\";\n }\n jQuery.extend({\n // Add in style property hooks for overriding the default\n // behavior of getting and setting a style property\n cssHooks: {\n opacity: {\n get: function (elem, computed) {\n if (computed) {\n // We should always get a number back from opacity\n var ret = curCSS(elem, \"opacity\");\n return ret === \"\" ? \"1\" : ret;\n }\n }\n }\n },\n // Don't automatically add \"px\" to these possibly-unitless properties\n cssNumber: {\n animationIterationCount: true,\n aspectRatio: true,\n borderImageSlice: true,\n columnCount: true,\n flexGrow: true,\n flexShrink: true,\n fontWeight: true,\n gridArea: true,\n gridColumn: true,\n gridColumnEnd: true,\n gridColumnStart: true,\n gridRow: true,\n gridRowEnd: true,\n gridRowStart: true,\n lineHeight: true,\n opacity: true,\n order: true,\n orphans: true,\n scale: true,\n widows: true,\n zIndex: true,\n zoom: true,\n // SVG-related\n fillOpacity: true,\n floodOpacity: true,\n stopOpacity: true,\n strokeMiterlimit: true,\n strokeOpacity: true\n },\n // Add in properties whose names you wish to fix before\n // setting or getting the value\n cssProps: {},\n // Get and set the style property on a DOM Node\n style: function (elem, name, value, extra) {\n // Don't set styles on text and comment nodes\n if (!elem || elem.nodeType === 3 || elem.nodeType === 8 || !elem.style) {\n return;\n }\n\n // Make sure that we're working with the right name\n var ret,\n type,\n hooks,\n origName = camelCase(name),\n isCustomProp = rcustomProp.test(name),\n style = elem.style;\n\n // Make sure that we're working with the right name. We don't\n // want to query the value if it is a CSS custom property\n // since they are user-defined.\n if (!isCustomProp) {\n name = finalPropName(origName);\n }\n\n // Gets hook for the prefixed version, then unprefixed version\n hooks = jQuery.cssHooks[name] || jQuery.cssHooks[origName];\n\n // Check if we're setting a value\n if (value !== undefined) {\n type = typeof value;\n\n // Convert \"+=\" or \"-=\" to relative numbers (trac-7345)\n if (type === \"string\" && (ret = rcssNum.exec(value)) && ret[1]) {\n value = adjustCSS(elem, name, ret);\n\n // Fixes bug trac-9237\n type = \"number\";\n }\n\n // Make sure that null and NaN values aren't set (trac-7116)\n if (value == null || value !== value) {\n return;\n }\n\n // If a number was passed in, add the unit (except for certain CSS properties)\n // The isCustomProp check can be removed in jQuery 4.0 when we only auto-append\n // \"px\" to a few hardcoded values.\n if (type === \"number\" && !isCustomProp) {\n value += ret && ret[3] || (jQuery.cssNumber[origName] ? \"\" : \"px\");\n }\n\n // background-* props affect original clone's values\n if (!support.clearCloneStyle && value === \"\" && name.indexOf(\"background\") === 0) {\n style[name] = \"inherit\";\n }\n\n // If a hook was provided, use that value, otherwise just set the specified value\n if (!hooks || !(\"set\" in hooks) || (value = hooks.set(elem, value, extra)) !== undefined) {\n if (isCustomProp) {\n style.setProperty(name, value);\n } else {\n style[name] = value;\n }\n }\n } else {\n // If a hook was provided get the non-computed value from there\n if (hooks && \"get\" in hooks && (ret = hooks.get(elem, false, extra)) !== undefined) {\n return ret;\n }\n\n // Otherwise just get the value from the style object\n return style[name];\n }\n },\n css: function (elem, name, extra, styles) {\n var val,\n num,\n hooks,\n origName = camelCase(name),\n isCustomProp = rcustomProp.test(name);\n\n // Make sure that we're working with the right name. We don't\n // want to modify the value if it is a CSS custom property\n // since they are user-defined.\n if (!isCustomProp) {\n name = finalPropName(origName);\n }\n\n // Try prefixed name followed by the unprefixed name\n hooks = jQuery.cssHooks[name] || jQuery.cssHooks[origName];\n\n // If a hook was provided get the computed value from there\n if (hooks && \"get\" in hooks) {\n val = hooks.get(elem, true, extra);\n }\n\n // Otherwise, if a way to get the computed value exists, use that\n if (val === undefined) {\n val = curCSS(elem, name, styles);\n }\n\n // Convert \"normal\" to computed value\n if (val === \"normal\" && name in cssNormalTransform) {\n val = cssNormalTransform[name];\n }\n\n // Make numeric if forced or a qualifier was provided and val looks numeric\n if (extra === \"\" || extra) {\n num = parseFloat(val);\n return extra === true || isFinite(num) ? num || 0 : val;\n }\n return val;\n }\n });\n jQuery.each([\"height\", \"width\"], function (_i, dimension) {\n jQuery.cssHooks[dimension] = {\n get: function (elem, computed, extra) {\n if (computed) {\n // Certain elements can have dimension info if we invisibly show them\n // but it must have a current display style that would benefit\n return rdisplayswap.test(jQuery.css(elem, \"display\")) && (\n // Support: Safari 8+\n // Table columns in Safari have non-zero offsetWidth & zero\n // getBoundingClientRect().width unless display is changed.\n // Support: IE <=11 only\n // Running getBoundingClientRect on a disconnected node\n // in IE throws an error.\n !elem.getClientRects().length || !elem.getBoundingClientRect().width) ? swap(elem, cssShow, function () {\n return getWidthOrHeight(elem, dimension, extra);\n }) : getWidthOrHeight(elem, dimension, extra);\n }\n },\n set: function (elem, value, extra) {\n var matches,\n styles = getStyles(elem),\n // Only read styles.position if the test has a chance to fail\n // to avoid forcing a reflow.\n scrollboxSizeBuggy = !support.scrollboxSize() && styles.position === \"absolute\",\n // To avoid forcing a reflow, only fetch boxSizing if we need it (gh-3991)\n boxSizingNeeded = scrollboxSizeBuggy || extra,\n isBorderBox = boxSizingNeeded && jQuery.css(elem, \"boxSizing\", false, styles) === \"border-box\",\n subtract = extra ? boxModelAdjustment(elem, dimension, extra, isBorderBox, styles) : 0;\n\n // Account for unreliable border-box dimensions by comparing offset* to computed and\n // faking a content-box to get border and padding (gh-3699)\n if (isBorderBox && scrollboxSizeBuggy) {\n subtract -= Math.ceil(elem[\"offset\" + dimension[0].toUpperCase() + dimension.slice(1)] - parseFloat(styles[dimension]) - boxModelAdjustment(elem, dimension, \"border\", false, styles) - 0.5);\n }\n\n // Convert to pixels if value adjustment is needed\n if (subtract && (matches = rcssNum.exec(value)) && (matches[3] || \"px\") !== \"px\") {\n elem.style[dimension] = value;\n value = jQuery.css(elem, dimension);\n }\n return setPositiveNumber(elem, value, subtract);\n }\n };\n });\n jQuery.cssHooks.marginLeft = addGetHookIf(support.reliableMarginLeft, function (elem, computed) {\n if (computed) {\n return (parseFloat(curCSS(elem, \"marginLeft\")) || elem.getBoundingClientRect().left - swap(elem, {\n marginLeft: 0\n }, function () {\n return elem.getBoundingClientRect().left;\n })) + \"px\";\n }\n });\n\n // These hooks are used by animate to expand properties\n jQuery.each({\n margin: \"\",\n padding: \"\",\n border: \"Width\"\n }, function (prefix, suffix) {\n jQuery.cssHooks[prefix + suffix] = {\n expand: function (value) {\n var i = 0,\n expanded = {},\n // Assumes a single number if not a string\n parts = typeof value === \"string\" ? value.split(\" \") : [value];\n for (; i < 4; i++) {\n expanded[prefix + cssExpand[i] + suffix] = parts[i] || parts[i - 2] || parts[0];\n }\n return expanded;\n }\n };\n if (prefix !== \"margin\") {\n jQuery.cssHooks[prefix + suffix].set = setPositiveNumber;\n }\n });\n jQuery.fn.extend({\n css: function (name, value) {\n return access(this, function (elem, name, value) {\n var styles,\n len,\n map = {},\n i = 0;\n if (Array.isArray(name)) {\n styles = getStyles(elem);\n len = name.length;\n for (; i < len; i++) {\n map[name[i]] = jQuery.css(elem, name[i], false, styles);\n }\n return map;\n }\n return value !== undefined ? jQuery.style(elem, name, value) : jQuery.css(elem, name);\n }, name, value, arguments.length > 1);\n }\n });\n return jQuery;\n});","define([\"./arr\"], function (arr) {\n \"use strict\";\n\n return arr.indexOf;\n});","define(function () {\n \"use strict\";\n\n // [[Class]] -> type pairs\n return {};\n});","define([\"./class2type\"], function (class2type) {\n \"use strict\";\n\n return class2type.hasOwnProperty;\n});","define(function () {\n \"use strict\";\n\n /**\n * Determines whether an object can have data\n */\n return function (owner) {\n // Accepts only:\n // - Node\n // - Node.ELEMENT_NODE\n // - Node.DOCUMENT_NODE\n // - Object\n // - Any\n return owner.nodeType === 1 || owner.nodeType === 9 || !+owner.nodeType;\n };\n});","define([\"../core\", \"../var/documentElement\", \"../selector/contains\" // jQuery.contains\n], function (jQuery, documentElement) {\n \"use strict\";\n\n var isAttached = function (elem) {\n return jQuery.contains(elem.ownerDocument, elem);\n },\n composed = {\n composed: true\n };\n\n // Support: IE 9 - 11+, Edge 12 - 18+, iOS 10.0 - 10.2 only\n // Check attachment across shadow DOM boundaries when possible (gh-3504)\n // Support: iOS 10.0-10.2 only\n // Early iOS 10 versions support `attachShadow` but not `getRootNode`,\n // leading to errors. We need to check for `getRootNode`.\n if (documentElement.getRootNode) {\n isAttached = function (elem) {\n return jQuery.contains(elem.ownerDocument, elem) || elem.getRootNode(composed) === elem.ownerDocument;\n };\n }\n return isAttached;\n});","define([\"./document\"], function (document) {\n \"use strict\";\n\n return document.documentElement;\n});","define([\"./core\", \"./core/isAttached\", \"./var/flat\", \"./var/isFunction\", \"./var/push\", \"./var/rcheckableType\", \"./core/access\", \"./manipulation/var/rtagName\", \"./manipulation/var/rscriptType\", \"./manipulation/wrapMap\", \"./manipulation/getAll\", \"./manipulation/setGlobalEval\", \"./manipulation/buildFragment\", \"./manipulation/support\", \"./data/var/dataPriv\", \"./data/var/dataUser\", \"./data/var/acceptData\", \"./core/DOMEval\", \"./core/nodeName\", \"./core/init\", \"./traversing\", \"./selector\", \"./event\"], function (jQuery, isAttached, flat, isFunction, push, rcheckableType, access, rtagName, rscriptType, wrapMap, getAll, setGlobalEval, buildFragment, support, dataPriv, dataUser, acceptData, DOMEval, nodeName) {\n \"use strict\";\n\n var\n // Support: IE <=10 - 11, Edge 12 - 13 only\n // In IE/Edge using regex groups here causes severe slowdowns.\n // See https://connect.microsoft.com/IE/feedback/details/1736512/\n rnoInnerhtml = /<script|<style|<link/i,\n // checked=\"checked\" or checked\n rchecked = /checked\\s*(?:[^=]|=\\s*.checked.)/i,\n rcleanScript = /^\\s*<!\\[CDATA\\[|\\]\\]>\\s*$/g;\n\n // Prefer a tbody over its parent table for containing new rows\n function manipulationTarget(elem, content) {\n if (nodeName(elem, \"table\") && nodeName(content.nodeType !== 11 ? content : content.firstChild, \"tr\")) {\n return jQuery(elem).children(\"tbody\")[0] || elem;\n }\n return elem;\n }\n\n // Replace/restore the type attribute of script elements for safe DOM manipulation\n function disableScript(elem) {\n elem.type = (elem.getAttribute(\"type\") !== null) + \"/\" + elem.type;\n return elem;\n }\n function restoreScript(elem) {\n if ((elem.type || \"\").slice(0, 5) === \"true/\") {\n elem.type = elem.type.slice(5);\n } else {\n elem.removeAttribute(\"type\");\n }\n return elem;\n }\n function cloneCopyEvent(src, dest) {\n var i, l, type, pdataOld, udataOld, udataCur, events;\n if (dest.nodeType !== 1) {\n return;\n }\n\n // 1. Copy private data: events, handlers, etc.\n if (dataPriv.hasData(src)) {\n pdataOld = dataPriv.get(src);\n events = pdataOld.events;\n if (events) {\n dataPriv.remove(dest, \"handle events\");\n for (type in events) {\n for (i = 0, l = events[type].length; i < l; i++) {\n jQuery.event.add(dest, type, events[type][i]);\n }\n }\n }\n }\n\n // 2. Copy user data\n if (dataUser.hasData(src)) {\n udataOld = dataUser.access(src);\n udataCur = jQuery.extend({}, udataOld);\n dataUser.set(dest, udataCur);\n }\n }\n\n // Fix IE bugs, see support tests\n function fixInput(src, dest) {\n var nodeName = dest.nodeName.toLowerCase();\n\n // Fails to persist the checked state of a cloned checkbox or radio button.\n if (nodeName === \"input\" && rcheckableType.test(src.type)) {\n dest.checked = src.checked;\n\n // Fails to return the selected option to the default selected state when cloning options\n } else if (nodeName === \"input\" || nodeName === \"textarea\") {\n dest.defaultValue = src.defaultValue;\n }\n }\n function domManip(collection, args, callback, ignored) {\n // Flatten any nested arrays\n args = flat(args);\n var fragment,\n first,\n scripts,\n hasScripts,\n node,\n doc,\n i = 0,\n l = collection.length,\n iNoClone = l - 1,\n value = args[0],\n valueIsFunction = isFunction(value);\n\n // We can't cloneNode fragments that contain checked, in WebKit\n if (valueIsFunction || l > 1 && typeof value === \"string\" && !support.checkClone && rchecked.test(value)) {\n return collection.each(function (index) {\n var self = collection.eq(index);\n if (valueIsFunction) {\n args[0] = value.call(this, index, self.html());\n }\n domManip(self, args, callback, ignored);\n });\n }\n if (l) {\n fragment = buildFragment(args, collection[0].ownerDocument, false, collection, ignored);\n first = fragment.firstChild;\n if (fragment.childNodes.length === 1) {\n fragment = first;\n }\n\n // Require either new content or an interest in ignored elements to invoke the callback\n if (first || ignored) {\n scripts = jQuery.map(getAll(fragment, \"script\"), disableScript);\n hasScripts = scripts.length;\n\n // Use the original fragment for the last item\n // instead of the first because it can end up\n // being emptied incorrectly in certain situations (trac-8070).\n for (; i < l; i++) {\n node = fragment;\n if (i !== iNoClone) {\n node = jQuery.clone(node, true, true);\n\n // Keep references to cloned scripts for later restoration\n if (hasScripts) {\n // Support: Android <=4.0 only, PhantomJS 1 only\n // push.apply(_, arraylike) throws on ancient WebKit\n jQuery.merge(scripts, getAll(node, \"script\"));\n }\n }\n callback.call(collection[i], node, i);\n }\n if (hasScripts) {\n doc = scripts[scripts.length - 1].ownerDocument;\n\n // Re-enable scripts\n jQuery.map(scripts, restoreScript);\n\n // Evaluate executable scripts on first document insertion\n for (i = 0; i < hasScripts; i++) {\n node = scripts[i];\n if (rscriptType.test(node.type || \"\") && !dataPriv.access(node, \"globalEval\") && jQuery.contains(doc, node)) {\n if (node.src && (node.type || \"\").toLowerCase() !== \"module\") {\n // Optional AJAX dependency, but won't run scripts if not present\n if (jQuery._evalUrl && !node.noModule) {\n jQuery._evalUrl(node.src, {\n nonce: node.nonce || node.getAttribute(\"nonce\")\n }, doc);\n }\n } else {\n // Unwrap a CDATA section containing script contents. This shouldn't be\n // needed as in XML documents they're already not visible when\n // inspecting element contents and in HTML documents they have no\n // meaning but we're preserving that logic for backwards compatibility.\n // This will be removed completely in 4.0. See gh-4904.\n DOMEval(node.textContent.replace(rcleanScript, \"\"), node, doc);\n }\n }\n }\n }\n }\n }\n return collection;\n }\n function remove(elem, selector, keepData) {\n var node,\n nodes = selector ? jQuery.filter(selector, elem) : elem,\n i = 0;\n for (; (node = nodes[i]) != null; i++) {\n if (!keepData && node.nodeType === 1) {\n jQuery.cleanData(getAll(node));\n }\n if (node.parentNode) {\n if (keepData && isAttached(node)) {\n setGlobalEval(getAll(node, \"script\"));\n }\n node.parentNode.removeChild(node);\n }\n }\n return elem;\n }\n jQuery.extend({\n htmlPrefilter: function (html) {\n return html;\n },\n clone: function (elem, dataAndEvents, deepDataAndEvents) {\n var i,\n l,\n srcElements,\n destElements,\n clone = elem.cloneNode(true),\n inPage = isAttached(elem);\n\n // Fix IE cloning issues\n if (!support.noCloneChecked && (elem.nodeType === 1 || elem.nodeType === 11) && !jQuery.isXMLDoc(elem)) {\n // We eschew jQuery#find here for performance reasons:\n // https://jsperf.com/getall-vs-sizzle/2\n destElements = getAll(clone);\n srcElements = getAll(elem);\n for (i = 0, l = srcElements.length; i < l; i++) {\n fixInput(srcElements[i], destElements[i]);\n }\n }\n\n // Copy the events from the original to the clone\n if (dataAndEvents) {\n if (deepDataAndEvents) {\n srcElements = srcElements || getAll(elem);\n destElements = destElements || getAll(clone);\n for (i = 0, l = srcElements.length; i < l; i++) {\n cloneCopyEvent(srcElements[i], destElements[i]);\n }\n } else {\n cloneCopyEvent(elem, clone);\n }\n }\n\n // Preserve script evaluation history\n destElements = getAll(clone, \"script\");\n if (destElements.length > 0) {\n setGlobalEval(destElements, !inPage && getAll(elem, \"script\"));\n }\n\n // Return the cloned set\n return clone;\n },\n cleanData: function (elems) {\n var data,\n elem,\n type,\n special = jQuery.event.special,\n i = 0;\n for (; (elem = elems[i]) !== undefined; i++) {\n if (acceptData(elem)) {\n if (data = elem[dataPriv.expando]) {\n if (data.events) {\n for (type in data.events) {\n if (special[type]) {\n jQuery.event.remove(elem, type);\n\n // This is a shortcut to avoid jQuery.event.remove's overhead\n } else {\n jQuery.removeEvent(elem, type, data.handle);\n }\n }\n }\n\n // Support: Chrome <=35 - 45+\n // Assign undefined instead of using delete, see Data#remove\n elem[dataPriv.expando] = undefined;\n }\n if (elem[dataUser.expando]) {\n // Support: Chrome <=35 - 45+\n // Assign undefined instead of using delete, see Data#remove\n elem[dataUser.expando] = undefined;\n }\n }\n }\n }\n });\n jQuery.fn.extend({\n detach: function (selector) {\n return remove(this, selector, true);\n },\n remove: function (selector) {\n return remove(this, selector);\n },\n text: function (value) {\n return access(this, function (value) {\n return value === undefined ? jQuery.text(this) : this.empty().each(function () {\n if (this.nodeType === 1 || this.nodeType === 11 || this.nodeType === 9) {\n this.textContent = value;\n }\n });\n }, null, value, arguments.length);\n },\n append: function () {\n return domManip(this, arguments, function (elem) {\n if (this.nodeType === 1 || this.nodeType === 11 || this.nodeType === 9) {\n var target = manipulationTarget(this, elem);\n target.appendChild(elem);\n }\n });\n },\n prepend: function () {\n return domManip(this, arguments, function (elem) {\n if (this.nodeType === 1 || this.nodeType === 11 || this.nodeType === 9) {\n var target = manipulationTarget(this, elem);\n target.insertBefore(elem, target.firstChild);\n }\n });\n },\n before: function () {\n return domManip(this, arguments, function (elem) {\n if (this.parentNode) {\n this.parentNode.insertBefore(elem, this);\n }\n });\n },\n after: function () {\n return domManip(this, arguments, function (elem) {\n if (this.parentNode) {\n this.parentNode.insertBefore(elem, this.nextSibling);\n }\n });\n },\n empty: function () {\n var elem,\n i = 0;\n for (; (elem = this[i]) != null; i++) {\n if (elem.nodeType === 1) {\n // Prevent memory leaks\n jQuery.cleanData(getAll(elem, false));\n\n // Remove any remaining nodes\n elem.textContent = \"\";\n }\n }\n return this;\n },\n clone: function (dataAndEvents, deepDataAndEvents) {\n dataAndEvents = dataAndEvents == null ? false : dataAndEvents;\n deepDataAndEvents = deepDataAndEvents == null ? dataAndEvents : deepDataAndEvents;\n return this.map(function () {\n return jQuery.clone(this, dataAndEvents, deepDataAndEvents);\n });\n },\n html: function (value) {\n return access(this, function (value) {\n var elem = this[0] || {},\n i = 0,\n l = this.length;\n if (value === undefined && elem.nodeType === 1) {\n return elem.innerHTML;\n }\n\n // See if we can take a shortcut and just use innerHTML\n if (typeof value === \"string\" && !rnoInnerhtml.test(value) && !wrapMap[(rtagName.exec(value) || [\"\", \"\"])[1].toLowerCase()]) {\n value = jQuery.htmlPrefilter(value);\n try {\n for (; i < l; i++) {\n elem = this[i] || {};\n\n // Remove element nodes and prevent memory leaks\n if (elem.nodeType === 1) {\n jQuery.cleanData(getAll(elem, false));\n elem.innerHTML = value;\n }\n }\n elem = 0;\n\n // If using innerHTML throws an exception, use the fallback method\n } catch (e) {}\n }\n if (elem) {\n this.empty().append(value);\n }\n }, null, value, arguments.length);\n },\n replaceWith: function () {\n var ignored = [];\n\n // Make the changes, replacing each non-ignored context element with the new content\n return domManip(this, arguments, function (elem) {\n var parent = this.parentNode;\n if (jQuery.inArray(this, ignored) < 0) {\n jQuery.cleanData(getAll(this));\n if (parent) {\n parent.replaceChild(elem, this);\n }\n }\n\n // Force callback invocation\n }, ignored);\n }\n });\n jQuery.each({\n appendTo: \"append\",\n prependTo: \"prepend\",\n insertBefore: \"before\",\n insertAfter: \"after\",\n replaceAll: \"replaceWith\"\n }, function (name, original) {\n jQuery.fn[name] = function (selector) {\n var elems,\n ret = [],\n insert = jQuery(selector),\n last = insert.length - 1,\n i = 0;\n for (; i <= last; i++) {\n elems = i === last ? this : this.clone(true);\n jQuery(insert[i])[original](elems);\n\n // Support: Android <=4.0 only, PhantomJS 1 only\n // .get() because push.apply(_, arraylike) throws on ancient WebKit\n push.apply(ret, elems.get());\n }\n return this.pushStack(ret);\n };\n });\n return jQuery;\n});","define([\"./arr\"], function (arr) {\n \"use strict\";\n\n return arr.push;\n});","define([\"./core\", \"./core/toType\", \"./var/isFunction\", \"./var/rnothtmlwhite\"], function (jQuery, toType, isFunction, rnothtmlwhite) {\n \"use strict\";\n\n // Convert String-formatted options into Object-formatted ones\n function createOptions(options) {\n var object = {};\n jQuery.each(options.match(rnothtmlwhite) || [], function (_, flag) {\n object[flag] = true;\n });\n return object;\n }\n\n /*\n * Create a callback list using the following parameters:\n *\n *\toptions: an optional list of space-separated options that will change how\n *\t\t\tthe callback list behaves or a more traditional option object\n *\n * By default a callback list will act like an event callback list and can be\n * \"fired\" multiple times.\n *\n * Possible options:\n *\n *\tonce:\t\t\twill ensure the callback list can only be fired once (like a Deferred)\n *\n *\tmemory:\t\t\twill keep track of previous values and will call any callback added\n *\t\t\t\t\tafter the list has been fired right away with the latest \"memorized\"\n *\t\t\t\t\tvalues (like a Deferred)\n *\n *\tunique:\t\t\twill ensure a callback can only be added once (no duplicate in the list)\n *\n *\tstopOnFalse:\tinterrupt callings when a callback returns false\n *\n */\n jQuery.Callbacks = function (options) {\n // Convert options from String-formatted to Object-formatted if needed\n // (we check in cache first)\n options = typeof options === \"string\" ? createOptions(options) : jQuery.extend({}, options);\n var\n // Flag to know if list is currently firing\n firing,\n // Last fire value for non-forgettable lists\n memory,\n // Flag to know if list was already fired\n fired,\n // Flag to prevent firing\n locked,\n // Actual callback list\n list = [],\n // Queue of execution data for repeatable lists\n queue = [],\n // Index of currently firing callback (modified by add/remove as needed)\n firingIndex = -1,\n // Fire callbacks\n fire = function () {\n // Enforce single-firing\n locked = locked || options.once;\n\n // Execute callbacks for all pending executions,\n // respecting firingIndex overrides and runtime changes\n fired = firing = true;\n for (; queue.length; firingIndex = -1) {\n memory = queue.shift();\n while (++firingIndex < list.length) {\n // Run callback and check for early termination\n if (list[firingIndex].apply(memory[0], memory[1]) === false && options.stopOnFalse) {\n // Jump to end and forget the data so .add doesn't re-fire\n firingIndex = list.length;\n memory = false;\n }\n }\n }\n\n // Forget the data if we're done with it\n if (!options.memory) {\n memory = false;\n }\n firing = false;\n\n // Clean up if we're done firing for good\n if (locked) {\n // Keep an empty list if we have data for future add calls\n if (memory) {\n list = [];\n\n // Otherwise, this object is spent\n } else {\n list = \"\";\n }\n }\n },\n // Actual Callbacks object\n self = {\n // Add a callback or a collection of callbacks to the list\n add: function () {\n if (list) {\n // If we have memory from a past run, we should fire after adding\n if (memory && !firing) {\n firingIndex = list.length - 1;\n queue.push(memory);\n }\n (function add(args) {\n jQuery.each(args, function (_, arg) {\n if (isFunction(arg)) {\n if (!options.unique || !self.has(arg)) {\n list.push(arg);\n }\n } else if (arg && arg.length && toType(arg) !== \"string\") {\n // Inspect recursively\n add(arg);\n }\n });\n })(arguments);\n if (memory && !firing) {\n fire();\n }\n }\n return this;\n },\n // Remove a callback from the list\n remove: function () {\n jQuery.each(arguments, function (_, arg) {\n var index;\n while ((index = jQuery.inArray(arg, list, index)) > -1) {\n list.splice(index, 1);\n\n // Handle firing indexes\n if (index <= firingIndex) {\n firingIndex--;\n }\n }\n });\n return this;\n },\n // Check if a given callback is in the list.\n // If no argument is given, return whether or not list has callbacks attached.\n has: function (fn) {\n return fn ? jQuery.inArray(fn, list) > -1 : list.length > 0;\n },\n // Remove all callbacks from the list\n empty: function () {\n if (list) {\n list = [];\n }\n return this;\n },\n // Disable .fire and .add\n // Abort any current/pending executions\n // Clear all callbacks and values\n disable: function () {\n locked = queue = [];\n list = memory = \"\";\n return this;\n },\n disabled: function () {\n return !list;\n },\n // Disable .fire\n // Also disable .add unless we have memory (since it would have no effect)\n // Abort any pending executions\n lock: function () {\n locked = queue = [];\n if (!memory && !firing) {\n list = memory = \"\";\n }\n return this;\n },\n locked: function () {\n return !!locked;\n },\n // Call all callbacks with the given context and arguments\n fireWith: function (context, args) {\n if (!locked) {\n args = args || [];\n args = [context, args.slice ? args.slice() : args];\n queue.push(args);\n if (!firing) {\n fire();\n }\n }\n return this;\n },\n // Call all the callbacks with the given arguments\n fire: function () {\n self.fireWith(this, arguments);\n return this;\n },\n // To know if the callbacks have already been called at least once\n fired: function () {\n return !!fired;\n }\n };\n return self;\n };\n return jQuery;\n});","define([\"./core\", \"./data/var/dataPriv\", \"./deferred\", \"./callbacks\"], function (jQuery, dataPriv) {\n \"use strict\";\n\n jQuery.extend({\n queue: function (elem, type, data) {\n var queue;\n if (elem) {\n type = (type || \"fx\") + \"queue\";\n queue = dataPriv.get(elem, type);\n\n // Speed up dequeue by getting out quickly if this is just a lookup\n if (data) {\n if (!queue || Array.isArray(data)) {\n queue = dataPriv.access(elem, type, jQuery.makeArray(data));\n } else {\n queue.push(data);\n }\n }\n return queue || [];\n }\n },\n dequeue: function (elem, type) {\n type = type || \"fx\";\n var queue = jQuery.queue(elem, type),\n startLength = queue.length,\n fn = queue.shift(),\n hooks = jQuery._queueHooks(elem, type),\n next = function () {\n jQuery.dequeue(elem, type);\n };\n\n // If the fx queue is dequeued, always remove the progress sentinel\n if (fn === \"inprogress\") {\n fn = queue.shift();\n startLength--;\n }\n if (fn) {\n // Add a progress sentinel to prevent the fx queue from being\n // automatically dequeued\n if (type === \"fx\") {\n queue.unshift(\"inprogress\");\n }\n\n // Clear up the last queue stop function\n delete hooks.stop;\n fn.call(elem, next, hooks);\n }\n if (!startLength && hooks) {\n hooks.empty.fire();\n }\n },\n // Not public - generate a queueHooks object, or return the current one\n _queueHooks: function (elem, type) {\n var key = type + \"queueHooks\";\n return dataPriv.get(elem, key) || dataPriv.access(elem, key, {\n empty: jQuery.Callbacks(\"once memory\").add(function () {\n dataPriv.remove(elem, [type + \"queue\", key]);\n })\n });\n }\n });\n jQuery.fn.extend({\n queue: function (type, data) {\n var setter = 2;\n if (typeof type !== \"string\") {\n data = type;\n type = \"fx\";\n setter--;\n }\n if (arguments.length < setter) {\n return jQuery.queue(this[0], type);\n }\n return data === undefined ? this : this.each(function () {\n var queue = jQuery.queue(this, type, data);\n\n // Ensure a hooks for this queue\n jQuery._queueHooks(this, type);\n if (type === \"fx\" && queue[0] !== \"inprogress\") {\n jQuery.dequeue(this, type);\n }\n });\n },\n dequeue: function (type) {\n return this.each(function () {\n jQuery.dequeue(this, type);\n });\n },\n clearQueue: function (type) {\n return this.queue(type || \"fx\", []);\n },\n // Get a promise resolved when queues of a certain type\n // are emptied (fx is the type by default)\n promise: function (type, obj) {\n var tmp,\n count = 1,\n defer = jQuery.Deferred(),\n elements = this,\n i = this.length,\n resolve = function () {\n if (! --count) {\n defer.resolveWith(elements, [elements]);\n }\n };\n if (typeof type !== \"string\") {\n obj = type;\n type = undefined;\n }\n type = type || \"fx\";\n while (i--) {\n tmp = dataPriv.get(elements[i], type + \"queueHooks\");\n if (tmp && tmp.empty) {\n count++;\n tmp.empty.add(resolve);\n }\n }\n resolve();\n return defer.promise(obj);\n }\n });\n return jQuery;\n});","define([\"./core\", \"./core/camelCase\", \"./var/document\", \"./var/isFunction\", \"./var/rcssNum\", \"./var/rnothtmlwhite\", \"./css/var/cssExpand\", \"./css/var/isHiddenWithinTree\", \"./css/adjustCSS\", \"./data/var/dataPriv\", \"./css/showHide\", \"./core/init\", \"./queue\", \"./deferred\", \"./traversing\", \"./manipulation\", \"./css\", \"./effects/Tween\"], function (jQuery, camelCase, document, isFunction, rcssNum, rnothtmlwhite, cssExpand, isHiddenWithinTree, adjustCSS, dataPriv, showHide) {\n \"use strict\";\n\n var fxNow,\n inProgress,\n rfxtypes = /^(?:toggle|show|hide)$/,\n rrun = /queueHooks$/;\n function schedule() {\n if (inProgress) {\n if (document.hidden === false && window.requestAnimationFrame) {\n window.requestAnimationFrame(schedule);\n } else {\n window.setTimeout(schedule, jQuery.fx.interval);\n }\n jQuery.fx.tick();\n }\n }\n\n // Animations created synchronously will run synchronously\n function createFxNow() {\n window.setTimeout(function () {\n fxNow = undefined;\n });\n return fxNow = Date.now();\n }\n\n // Generate parameters to create a standard animation\n function genFx(type, includeWidth) {\n var which,\n i = 0,\n attrs = {\n height: type\n };\n\n // If we include width, step value is 1 to do all cssExpand values,\n // otherwise step value is 2 to skip over Left and Right\n includeWidth = includeWidth ? 1 : 0;\n for (; i < 4; i += 2 - includeWidth) {\n which = cssExpand[i];\n attrs[\"margin\" + which] = attrs[\"padding\" + which] = type;\n }\n if (includeWidth) {\n attrs.opacity = attrs.width = type;\n }\n return attrs;\n }\n function createTween(value, prop, animation) {\n var tween,\n collection = (Animation.tweeners[prop] || []).concat(Animation.tweeners[\"*\"]),\n index = 0,\n length = collection.length;\n for (; index < length; index++) {\n if (tween = collection[index].call(animation, prop, value)) {\n // We're done with this property\n return tween;\n }\n }\n }\n function defaultPrefilter(elem, props, opts) {\n var prop,\n value,\n toggle,\n hooks,\n oldfire,\n propTween,\n restoreDisplay,\n display,\n isBox = \"width\" in props || \"height\" in props,\n anim = this,\n orig = {},\n style = elem.style,\n hidden = elem.nodeType && isHiddenWithinTree(elem),\n dataShow = dataPriv.get(elem, \"fxshow\");\n\n // Queue-skipping animations hijack the fx hooks\n if (!opts.queue) {\n hooks = jQuery._queueHooks(elem, \"fx\");\n if (hooks.unqueued == null) {\n hooks.unqueued = 0;\n oldfire = hooks.empty.fire;\n hooks.empty.fire = function () {\n if (!hooks.unqueued) {\n oldfire();\n }\n };\n }\n hooks.unqueued++;\n anim.always(function () {\n // Ensure the complete handler is called before this completes\n anim.always(function () {\n hooks.unqueued--;\n if (!jQuery.queue(elem, \"fx\").length) {\n hooks.empty.fire();\n }\n });\n });\n }\n\n // Detect show/hide animations\n for (prop in props) {\n value = props[prop];\n if (rfxtypes.test(value)) {\n delete props[prop];\n toggle = toggle || value === \"toggle\";\n if (value === (hidden ? \"hide\" : \"show\")) {\n // Pretend to be hidden if this is a \"show\" and\n // there is still data from a stopped show/hide\n if (value === \"show\" && dataShow && dataShow[prop] !== undefined) {\n hidden = true;\n\n // Ignore all other no-op show/hide data\n } else {\n continue;\n }\n }\n orig[prop] = dataShow && dataShow[prop] || jQuery.style(elem, prop);\n }\n }\n\n // Bail out if this is a no-op like .hide().hide()\n propTween = !jQuery.isEmptyObject(props);\n if (!propTween && jQuery.isEmptyObject(orig)) {\n return;\n }\n\n // Restrict \"overflow\" and \"display\" styles during box animations\n if (isBox && elem.nodeType === 1) {\n // Support: IE <=9 - 11, Edge 12 - 15\n // Record all 3 overflow attributes because IE does not infer the shorthand\n // from identically-valued overflowX and overflowY and Edge just mirrors\n // the overflowX value there.\n opts.overflow = [style.overflow, style.overflowX, style.overflowY];\n\n // Identify a display type, preferring old show/hide data over the CSS cascade\n restoreDisplay = dataShow && dataShow.display;\n if (restoreDisplay == null) {\n restoreDisplay = dataPriv.get(elem, \"display\");\n }\n display = jQuery.css(elem, \"display\");\n if (display === \"none\") {\n if (restoreDisplay) {\n display = restoreDisplay;\n } else {\n // Get nonempty value(s) by temporarily forcing visibility\n showHide([elem], true);\n restoreDisplay = elem.style.display || restoreDisplay;\n display = jQuery.css(elem, \"display\");\n showHide([elem]);\n }\n }\n\n // Animate inline elements as inline-block\n if (display === \"inline\" || display === \"inline-block\" && restoreDisplay != null) {\n if (jQuery.css(elem, \"float\") === \"none\") {\n // Restore the original display value at the end of pure show/hide animations\n if (!propTween) {\n anim.done(function () {\n style.display = restoreDisplay;\n });\n if (restoreDisplay == null) {\n display = style.display;\n restoreDisplay = display === \"none\" ? \"\" : display;\n }\n }\n style.display = \"inline-block\";\n }\n }\n }\n if (opts.overflow) {\n style.overflow = \"hidden\";\n anim.always(function () {\n style.overflow = opts.overflow[0];\n style.overflowX = opts.overflow[1];\n style.overflowY = opts.overflow[2];\n });\n }\n\n // Implement show/hide animations\n propTween = false;\n for (prop in orig) {\n // General show/hide setup for this element animation\n if (!propTween) {\n if (dataShow) {\n if (\"hidden\" in dataShow) {\n hidden = dataShow.hidden;\n }\n } else {\n dataShow = dataPriv.access(elem, \"fxshow\", {\n display: restoreDisplay\n });\n }\n\n // Store hidden/visible for toggle so `.stop().toggle()` \"reverses\"\n if (toggle) {\n dataShow.hidden = !hidden;\n }\n\n // Show elements before animating them\n if (hidden) {\n showHide([elem], true);\n }\n\n /* eslint-disable no-loop-func */\n\n anim.done(function () {\n /* eslint-enable no-loop-func */\n\n // The final step of a \"hide\" animation is actually hiding the element\n if (!hidden) {\n showHide([elem]);\n }\n dataPriv.remove(elem, \"fxshow\");\n for (prop in orig) {\n jQuery.style(elem, prop, orig[prop]);\n }\n });\n }\n\n // Per-property setup\n propTween = createTween(hidden ? dataShow[prop] : 0, prop, anim);\n if (!(prop in dataShow)) {\n dataShow[prop] = propTween.start;\n if (hidden) {\n propTween.end = propTween.start;\n propTween.start = 0;\n }\n }\n }\n }\n function propFilter(props, specialEasing) {\n var index, name, easing, value, hooks;\n\n // camelCase, specialEasing and expand cssHook pass\n for (index in props) {\n name = camelCase(index);\n easing = specialEasing[name];\n value = props[index];\n if (Array.isArray(value)) {\n easing = value[1];\n value = props[index] = value[0];\n }\n if (index !== name) {\n props[name] = value;\n delete props[index];\n }\n hooks = jQuery.cssHooks[name];\n if (hooks && \"expand\" in hooks) {\n value = hooks.expand(value);\n delete props[name];\n\n // Not quite $.extend, this won't overwrite existing keys.\n // Reusing 'index' because we have the correct \"name\"\n for (index in value) {\n if (!(index in props)) {\n props[index] = value[index];\n specialEasing[index] = easing;\n }\n }\n } else {\n specialEasing[name] = easing;\n }\n }\n }\n function Animation(elem, properties, options) {\n var result,\n stopped,\n index = 0,\n length = Animation.prefilters.length,\n deferred = jQuery.Deferred().always(function () {\n // Don't match elem in the :animated selector\n delete tick.elem;\n }),\n tick = function () {\n if (stopped) {\n return false;\n }\n var currentTime = fxNow || createFxNow(),\n remaining = Math.max(0, animation.startTime + animation.duration - currentTime),\n // Support: Android 2.3 only\n // Archaic crash bug won't allow us to use `1 - ( 0.5 || 0 )` (trac-12497)\n temp = remaining / animation.duration || 0,\n percent = 1 - temp,\n index = 0,\n length = animation.tweens.length;\n for (; index < length; index++) {\n animation.tweens[index].run(percent);\n }\n deferred.notifyWith(elem, [animation, percent, remaining]);\n\n // If there's more to do, yield\n if (percent < 1 && length) {\n return remaining;\n }\n\n // If this was an empty animation, synthesize a final progress notification\n if (!length) {\n deferred.notifyWith(elem, [animation, 1, 0]);\n }\n\n // Resolve the animation and report its conclusion\n deferred.resolveWith(elem, [animation]);\n return false;\n },\n animation = deferred.promise({\n elem: elem,\n props: jQuery.extend({}, properties),\n opts: jQuery.extend(true, {\n specialEasing: {},\n easing: jQuery.easing._default\n }, options),\n originalProperties: properties,\n originalOptions: options,\n startTime: fxNow || createFxNow(),\n duration: options.duration,\n tweens: [],\n createTween: function (prop, end) {\n var tween = jQuery.Tween(elem, animation.opts, prop, end, animation.opts.specialEasing[prop] || animation.opts.easing);\n animation.tweens.push(tween);\n return tween;\n },\n stop: function (gotoEnd) {\n var index = 0,\n // If we are going to the end, we want to run all the tweens\n // otherwise we skip this part\n length = gotoEnd ? animation.tweens.length : 0;\n if (stopped) {\n return this;\n }\n stopped = true;\n for (; index < length; index++) {\n animation.tweens[index].run(1);\n }\n\n // Resolve when we played the last frame; otherwise, reject\n if (gotoEnd) {\n deferred.notifyWith(elem, [animation, 1, 0]);\n deferred.resolveWith(elem, [animation, gotoEnd]);\n } else {\n deferred.rejectWith(elem, [animation, gotoEnd]);\n }\n return this;\n }\n }),\n props = animation.props;\n propFilter(props, animation.opts.specialEasing);\n for (; index < length; index++) {\n result = Animation.prefilters[index].call(animation, elem, props, animation.opts);\n if (result) {\n if (isFunction(result.stop)) {\n jQuery._queueHooks(animation.elem, animation.opts.queue).stop = result.stop.bind(result);\n }\n return result;\n }\n }\n jQuery.map(props, createTween, animation);\n if (isFunction(animation.opts.start)) {\n animation.opts.start.call(elem, animation);\n }\n\n // Attach callbacks from options\n animation.progress(animation.opts.progress).done(animation.opts.done, animation.opts.complete).fail(animation.opts.fail).always(animation.opts.always);\n jQuery.fx.timer(jQuery.extend(tick, {\n elem: elem,\n anim: animation,\n queue: animation.opts.queue\n }));\n return animation;\n }\n jQuery.Animation = jQuery.extend(Animation, {\n tweeners: {\n \"*\": [function (prop, value) {\n var tween = this.createTween(prop, value);\n adjustCSS(tween.elem, prop, rcssNum.exec(value), tween);\n return tween;\n }]\n },\n tweener: function (props, callback) {\n if (isFunction(props)) {\n callback = props;\n props = [\"*\"];\n } else {\n props = props.match(rnothtmlwhite);\n }\n var prop,\n index = 0,\n length = props.length;\n for (; index < length; index++) {\n prop = props[index];\n Animation.tweeners[prop] = Animation.tweeners[prop] || [];\n Animation.tweeners[prop].unshift(callback);\n }\n },\n prefilters: [defaultPrefilter],\n prefilter: function (callback, prepend) {\n if (prepend) {\n Animation.prefilters.unshift(callback);\n } else {\n Animation.prefilters.push(callback);\n }\n }\n });\n jQuery.speed = function (speed, easing, fn) {\n var opt = speed && typeof speed === \"object\" ? jQuery.extend({}, speed) : {\n complete: fn || !fn && easing || isFunction(speed) && speed,\n duration: speed,\n easing: fn && easing || easing && !isFunction(easing) && easing\n };\n\n // Go to the end state if fx are off\n if (jQuery.fx.off) {\n opt.duration = 0;\n } else {\n if (typeof opt.duration !== \"number\") {\n if (opt.duration in jQuery.fx.speeds) {\n opt.duration = jQuery.fx.speeds[opt.duration];\n } else {\n opt.duration = jQuery.fx.speeds._default;\n }\n }\n }\n\n // Normalize opt.queue - true/undefined/null -> \"fx\"\n if (opt.queue == null || opt.queue === true) {\n opt.queue = \"fx\";\n }\n\n // Queueing\n opt.old = opt.complete;\n opt.complete = function () {\n if (isFunction(opt.old)) {\n opt.old.call(this);\n }\n if (opt.queue) {\n jQuery.dequeue(this, opt.queue);\n }\n };\n return opt;\n };\n jQuery.fn.extend({\n fadeTo: function (speed, to, easing, callback) {\n // Show any hidden elements after setting opacity to 0\n return this.filter(isHiddenWithinTree).css(\"opacity\", 0).show()\n\n // Animate to the value specified\n .end().animate({\n opacity: to\n }, speed, easing, callback);\n },\n animate: function (prop, speed, easing, callback) {\n var empty = jQuery.isEmptyObject(prop),\n optall = jQuery.speed(speed, easing, callback),\n doAnimation = function () {\n // Operate on a copy of prop so per-property easing won't be lost\n var anim = Animation(this, jQuery.extend({}, prop), optall);\n\n // Empty animations, or finishing resolves immediately\n if (empty || dataPriv.get(this, \"finish\")) {\n anim.stop(true);\n }\n };\n doAnimation.finish = doAnimation;\n return empty || optall.queue === false ? this.each(doAnimation) : this.queue(optall.queue, doAnimation);\n },\n stop: function (type, clearQueue, gotoEnd) {\n var stopQueue = function (hooks) {\n var stop = hooks.stop;\n delete hooks.stop;\n stop(gotoEnd);\n };\n if (typeof type !== \"string\") {\n gotoEnd = clearQueue;\n clearQueue = type;\n type = undefined;\n }\n if (clearQueue) {\n this.queue(type || \"fx\", []);\n }\n return this.each(function () {\n var dequeue = true,\n index = type != null && type + \"queueHooks\",\n timers = jQuery.timers,\n data = dataPriv.get(this);\n if (index) {\n if (data[index] && data[index].stop) {\n stopQueue(data[index]);\n }\n } else {\n for (index in data) {\n if (data[index] && data[index].stop && rrun.test(index)) {\n stopQueue(data[index]);\n }\n }\n }\n for (index = timers.length; index--;) {\n if (timers[index].elem === this && (type == null || timers[index].queue === type)) {\n timers[index].anim.stop(gotoEnd);\n dequeue = false;\n timers.splice(index, 1);\n }\n }\n\n // Start the next in the queue if the last step wasn't forced.\n // Timers currently will call their complete callbacks, which\n // will dequeue but only if they were gotoEnd.\n if (dequeue || !gotoEnd) {\n jQuery.dequeue(this, type);\n }\n });\n },\n finish: function (type) {\n if (type !== false) {\n type = type || \"fx\";\n }\n return this.each(function () {\n var index,\n data = dataPriv.get(this),\n queue = data[type + \"queue\"],\n hooks = data[type + \"queueHooks\"],\n timers = jQuery.timers,\n length = queue ? queue.length : 0;\n\n // Enable finishing flag on private data\n data.finish = true;\n\n // Empty the queue first\n jQuery.queue(this, type, []);\n if (hooks && hooks.stop) {\n hooks.stop.call(this, true);\n }\n\n // Look for any active animations, and finish them\n for (index = timers.length; index--;) {\n if (timers[index].elem === this && timers[index].queue === type) {\n timers[index].anim.stop(true);\n timers.splice(index, 1);\n }\n }\n\n // Look for any animations in the old queue and finish them\n for (index = 0; index < length; index++) {\n if (queue[index] && queue[index].finish) {\n queue[index].finish.call(this);\n }\n }\n\n // Turn off finishing flag\n delete data.finish;\n });\n }\n });\n jQuery.each([\"toggle\", \"show\", \"hide\"], function (_i, name) {\n var cssFn = jQuery.fn[name];\n jQuery.fn[name] = function (speed, easing, callback) {\n return speed == null || typeof speed === \"boolean\" ? cssFn.apply(this, arguments) : this.animate(genFx(name, true), speed, easing, callback);\n };\n });\n\n // Generate shortcuts for custom animations\n jQuery.each({\n slideDown: genFx(\"show\"),\n slideUp: genFx(\"hide\"),\n slideToggle: genFx(\"toggle\"),\n fadeIn: {\n opacity: \"show\"\n },\n fadeOut: {\n opacity: \"hide\"\n },\n fadeToggle: {\n opacity: \"toggle\"\n }\n }, function (name, props) {\n jQuery.fn[name] = function (speed, easing, callback) {\n return this.animate(props, speed, easing, callback);\n };\n });\n jQuery.timers = [];\n jQuery.fx.tick = function () {\n var timer,\n i = 0,\n timers = jQuery.timers;\n fxNow = Date.now();\n for (; i < timers.length; i++) {\n timer = timers[i];\n\n // Run the timer and safely remove it when done (allowing for external removal)\n if (!timer() && timers[i] === timer) {\n timers.splice(i--, 1);\n }\n }\n if (!timers.length) {\n jQuery.fx.stop();\n }\n fxNow = undefined;\n };\n jQuery.fx.timer = function (timer) {\n jQuery.timers.push(timer);\n jQuery.fx.start();\n };\n jQuery.fx.interval = 13;\n jQuery.fx.start = function () {\n if (inProgress) {\n return;\n }\n inProgress = true;\n schedule();\n };\n jQuery.fx.stop = function () {\n inProgress = null;\n };\n jQuery.fx.speeds = {\n slow: 600,\n fast: 200,\n // Default speed\n _default: 400\n };\n return jQuery;\n});","define([\"../var/pnum\"], function (pnum) {\n \"use strict\";\n\n return new RegExp(\"^(?:([+-])=|)(\" + pnum + \")([a-z%]*)$\", \"i\");\n});","define(function () {\n \"use strict\";\n\n return [\"Top\", \"Right\", \"Bottom\", \"Left\"];\n});","define(function () {\n \"use strict\";\n\n return /^(?:checkbox|radio)$/i;\n});","define([\"../../var/pnum\"], function (pnum) {\n \"use strict\";\n\n return new RegExp(\"^(\" + pnum + \")(?!px)[a-z%]+$\", \"i\");\n});","define([\"../core\", \"../var/document\", \"../var/documentElement\", \"../var/support\"], function (jQuery, document, documentElement, support) {\n \"use strict\";\n\n (function () {\n // Executing both pixelPosition & boxSizingReliable tests require only one layout\n // so they're executed at the same time to save the second computation.\n function computeStyleTests() {\n // This is a singleton, we need to execute it only once\n if (!div) {\n return;\n }\n container.style.cssText = \"position:absolute;left:-11111px;width:60px;\" + \"margin-top:1px;padding:0;border:0\";\n div.style.cssText = \"position:relative;display:block;box-sizing:border-box;overflow:scroll;\" + \"margin:auto;border:1px;padding:1px;\" + \"width:60%;top:1%\";\n documentElement.appendChild(container).appendChild(div);\n var divStyle = window.getComputedStyle(div);\n pixelPositionVal = divStyle.top !== \"1%\";\n\n // Support: Android 4.0 - 4.3 only, Firefox <=3 - 44\n reliableMarginLeftVal = roundPixelMeasures(divStyle.marginLeft) === 12;\n\n // Support: Android 4.0 - 4.3 only, Safari <=9.1 - 10.1, iOS <=7.0 - 9.3\n // Some styles come back with percentage values, even though they shouldn't\n div.style.right = \"60%\";\n pixelBoxStylesVal = roundPixelMeasures(divStyle.right) === 36;\n\n // Support: IE 9 - 11 only\n // Detect misreporting of content dimensions for box-sizing:border-box elements\n boxSizingReliableVal = roundPixelMeasures(divStyle.width) === 36;\n\n // Support: IE 9 only\n // Detect overflow:scroll screwiness (gh-3699)\n // Support: Chrome <=64\n // Don't get tricked when zoom affects offsetWidth (gh-4029)\n div.style.position = \"absolute\";\n scrollboxSizeVal = roundPixelMeasures(div.offsetWidth / 3) === 12;\n documentElement.removeChild(container);\n\n // Nullify the div so it wouldn't be stored in the memory and\n // it will also be a sign that checks already performed\n div = null;\n }\n function roundPixelMeasures(measure) {\n return Math.round(parseFloat(measure));\n }\n var pixelPositionVal,\n boxSizingReliableVal,\n scrollboxSizeVal,\n pixelBoxStylesVal,\n reliableTrDimensionsVal,\n reliableMarginLeftVal,\n container = document.createElement(\"div\"),\n div = document.createElement(\"div\");\n\n // Finish early in limited (non-browser) environments\n if (!div.style) {\n return;\n }\n\n // Support: IE <=9 - 11 only\n // Style of cloned element affects source element cloned (trac-8908)\n div.style.backgroundClip = \"content-box\";\n div.cloneNode(true).style.backgroundClip = \"\";\n support.clearCloneStyle = div.style.backgroundClip === \"content-box\";\n jQuery.extend(support, {\n boxSizingReliable: function () {\n computeStyleTests();\n return boxSizingReliableVal;\n },\n pixelBoxStyles: function () {\n computeStyleTests();\n return pixelBoxStylesVal;\n },\n pixelPosition: function () {\n computeStyleTests();\n return pixelPositionVal;\n },\n reliableMarginLeft: function () {\n computeStyleTests();\n return reliableMarginLeftVal;\n },\n scrollboxSize: function () {\n computeStyleTests();\n return scrollboxSizeVal;\n },\n // Support: IE 9 - 11+, Edge 15 - 18+\n // IE/Edge misreport `getComputedStyle` of table rows with width/height\n // set in CSS while `offset*` properties report correct values.\n // Behavior in IE 9 is more subtle than in newer versions & it passes\n // some versions of this test; make sure not to make it pass there!\n //\n // Support: Firefox 70+\n // Only Firefox includes border widths\n // in computed dimensions. (gh-4529)\n reliableTrDimensions: function () {\n var table, tr, trChild, trStyle;\n if (reliableTrDimensionsVal == null) {\n table = document.createElement(\"table\");\n tr = document.createElement(\"tr\");\n trChild = document.createElement(\"div\");\n table.style.cssText = \"position:absolute;left:-11111px;border-collapse:separate\";\n tr.style.cssText = \"box-sizing:content-box;border:1px solid\";\n\n // Support: Chrome 86+\n // Height set through cssText does not get applied.\n // Computed height then comes back as 0.\n tr.style.height = \"1px\";\n trChild.style.height = \"9px\";\n\n // Support: Android 8 Chrome 86+\n // In our bodyBackground.html iframe,\n // display for all div elements is set to \"inline\",\n // which causes a problem only in Android 8 Chrome 86.\n // Ensuring the div is `display: block`\n // gets around this issue.\n trChild.style.display = \"block\";\n documentElement.appendChild(table).appendChild(tr).appendChild(trChild);\n trStyle = window.getComputedStyle(tr);\n reliableTrDimensionsVal = parseInt(trStyle.height, 10) + parseInt(trStyle.borderTopWidth, 10) + parseInt(trStyle.borderBottomWidth, 10) === tr.offsetHeight;\n documentElement.removeChild(table);\n }\n return reliableTrDimensionsVal;\n }\n });\n })();\n return support;\n});","define([\"../var/document\", \"../var/support\"], function (document, support) {\n \"use strict\";\n\n (function () {\n var input = document.createElement(\"input\"),\n select = document.createElement(\"select\"),\n opt = select.appendChild(document.createElement(\"option\"));\n input.type = \"checkbox\";\n\n // Support: Android <=4.3 only\n // Default value for a checkbox should be \"on\"\n support.checkOn = input.value !== \"\";\n\n // Support: IE <=11 only\n // Must access selectedIndex to make default options select\n support.optSelected = opt.selected;\n\n // Support: IE <=11 only\n // An input loses its value after becoming a radio\n input = document.createElement(\"input\");\n input.value = \"t\";\n input.type = \"radio\";\n support.radioValue = input.value === \"t\";\n })();\n return support;\n});","define([\"../var/rnothtmlwhite\"], function (rnothtmlwhite) {\n \"use strict\";\n\n // Strip and collapse whitespace according to HTML spec\n // https://infra.spec.whatwg.org/#strip-and-collapse-ascii-whitespace\n function stripAndCollapse(value) {\n var tokens = value.match(rnothtmlwhite) || [];\n return tokens.join(\" \");\n }\n return stripAndCollapse;\n});","define([\"./core\", \"./selector\", \"./traversing\", \"./callbacks\", \"./deferred\", \"./deferred/exceptionHook\", \"./core/ready\", \"./data\", \"./queue\", \"./queue/delay\", \"./attributes\", \"./event\", \"./manipulation\", \"./manipulation/_evalUrl\", \"./wrap\", \"./css\", \"./css/hiddenVisibleSelectors\", \"./serialize\", \"./ajax\", \"./ajax/xhr\", \"./ajax/script\", \"./ajax/jsonp\", \"./ajax/load\", \"./core/parseXML\", \"./core/parseHTML\", \"./effects\", \"./effects/animatedSelector\", \"./offset\", \"./dimensions\", \"./deprecated\", \"./exports/amd\", \"./exports/global\"], function (jQuery) {\n \"use strict\";\n\n return jQuery;\n});","/*\nUnobtrusive JavaScript\nhttps://github.com/rails/rails/blob/main/actionview/app/assets/javascripts\nReleased under the MIT license\n */;\n(function () {\n var context = this;\n (function () {\n (function () {\n this.Rails = {\n linkClickSelector: 'a[data-confirm], a[data-method], a[data-remote]:not([disabled]), a[data-disable-with], a[data-disable]',\n buttonClickSelector: {\n selector: 'button[data-remote]:not([form]), button[data-confirm]:not([form])',\n exclude: 'form button'\n },\n inputChangeSelector: 'select[data-remote], input[data-remote], textarea[data-remote]',\n formSubmitSelector: 'form:not([data-turbo=true])',\n formInputClickSelector: 'form:not([data-turbo=true]) input[type=submit], form:not([data-turbo=true]) input[type=image], form:not([data-turbo=true]) button[type=submit], form:not([data-turbo=true]) button:not([type]), input[type=submit][form], input[type=image][form], button[type=submit][form], button[form]:not([type])',\n formDisableSelector: 'input[data-disable-with]:enabled, button[data-disable-with]:enabled, textarea[data-disable-with]:enabled, input[data-disable]:enabled, button[data-disable]:enabled, textarea[data-disable]:enabled',\n formEnableSelector: 'input[data-disable-with]:disabled, button[data-disable-with]:disabled, textarea[data-disable-with]:disabled, input[data-disable]:disabled, button[data-disable]:disabled, textarea[data-disable]:disabled',\n fileInputSelector: 'input[name][type=file]:not([disabled])',\n linkDisableSelector: 'a[data-disable-with], a[data-disable]',\n buttonDisableSelector: 'button[data-remote][data-disable-with], button[data-remote][data-disable]'\n };\n }).call(this);\n }).call(context);\n var Rails = context.Rails;\n (function () {\n (function () {\n var nonce;\n nonce = null;\n Rails.loadCSPNonce = function () {\n var ref;\n return nonce = (ref = document.querySelector(\"meta[name=csp-nonce]\")) != null ? ref.content : void 0;\n };\n Rails.cspNonce = function () {\n return nonce != null ? nonce : Rails.loadCSPNonce();\n };\n }).call(this);\n (function () {\n var expando, m;\n m = Element.prototype.matches || Element.prototype.matchesSelector || Element.prototype.mozMatchesSelector || Element.prototype.msMatchesSelector || Element.prototype.oMatchesSelector || Element.prototype.webkitMatchesSelector;\n Rails.matches = function (element, selector) {\n if (selector.exclude != null) {\n return m.call(element, selector.selector) && !m.call(element, selector.exclude);\n } else {\n return m.call(element, selector);\n }\n };\n expando = '_ujsData';\n Rails.getData = function (element, key) {\n var ref;\n return (ref = element[expando]) != null ? ref[key] : void 0;\n };\n Rails.setData = function (element, key, value) {\n if (element[expando] == null) {\n element[expando] = {};\n }\n return element[expando][key] = value;\n };\n Rails.$ = function (selector) {\n return Array.prototype.slice.call(document.querySelectorAll(selector));\n };\n }).call(this);\n (function () {\n var $, csrfParam, csrfToken;\n $ = Rails.$;\n csrfToken = Rails.csrfToken = function () {\n var meta;\n meta = document.querySelector('meta[name=csrf-token]');\n return meta && meta.content;\n };\n csrfParam = Rails.csrfParam = function () {\n var meta;\n meta = document.querySelector('meta[name=csrf-param]');\n return meta && meta.content;\n };\n Rails.CSRFProtection = function (xhr) {\n var token;\n token = csrfToken();\n if (token != null) {\n return xhr.setRequestHeader('X-CSRF-Token', token);\n }\n };\n Rails.refreshCSRFTokens = function () {\n var param, token;\n token = csrfToken();\n param = csrfParam();\n if (token != null && param != null) {\n return $('form input[name=\"' + param + '\"]').forEach(function (input) {\n return input.value = token;\n });\n }\n };\n }).call(this);\n (function () {\n var CustomEvent, fire, matches, preventDefault;\n matches = Rails.matches;\n CustomEvent = window.CustomEvent;\n if (typeof CustomEvent !== 'function') {\n CustomEvent = function (event, params) {\n var evt;\n evt = document.createEvent('CustomEvent');\n evt.initCustomEvent(event, params.bubbles, params.cancelable, params.detail);\n return evt;\n };\n CustomEvent.prototype = window.Event.prototype;\n preventDefault = CustomEvent.prototype.preventDefault;\n CustomEvent.prototype.preventDefault = function () {\n var result;\n result = preventDefault.call(this);\n if (this.cancelable && !this.defaultPrevented) {\n Object.defineProperty(this, 'defaultPrevented', {\n get: function () {\n return true;\n }\n });\n }\n return result;\n };\n }\n fire = Rails.fire = function (obj, name, data) {\n var event;\n event = new CustomEvent(name, {\n bubbles: true,\n cancelable: true,\n detail: data\n });\n obj.dispatchEvent(event);\n return !event.defaultPrevented;\n };\n Rails.stopEverything = function (e) {\n fire(e.target, 'ujs:everythingStopped');\n e.preventDefault();\n e.stopPropagation();\n return e.stopImmediatePropagation();\n };\n Rails.delegate = function (element, selector, eventType, handler) {\n return element.addEventListener(eventType, function (e) {\n var target;\n target = e.target;\n while (!(!(target instanceof Element) || matches(target, selector))) {\n target = target.parentNode;\n }\n if (target instanceof Element && handler.call(target, e) === false) {\n e.preventDefault();\n return e.stopPropagation();\n }\n });\n };\n }).call(this);\n (function () {\n var AcceptHeaders, CSRFProtection, createXHR, cspNonce, fire, prepareOptions, processResponse;\n cspNonce = Rails.cspNonce, CSRFProtection = Rails.CSRFProtection, fire = Rails.fire;\n AcceptHeaders = {\n '*': '*/*',\n text: 'text/plain',\n html: 'text/html',\n xml: 'application/xml, text/xml',\n json: 'application/json, text/javascript',\n script: 'text/javascript, application/javascript, application/ecmascript, application/x-ecmascript'\n };\n Rails.ajax = function (options) {\n var xhr;\n options = prepareOptions(options);\n xhr = createXHR(options, function () {\n var ref, response;\n response = processResponse((ref = xhr.response) != null ? ref : xhr.responseText, xhr.getResponseHeader('Content-Type'));\n if (Math.floor(xhr.status / 100) === 2) {\n if (typeof options.success === \"function\") {\n options.success(response, xhr.statusText, xhr);\n }\n } else {\n if (typeof options.error === \"function\") {\n options.error(response, xhr.statusText, xhr);\n }\n }\n return typeof options.complete === \"function\" ? options.complete(xhr, xhr.statusText) : void 0;\n });\n if (options.beforeSend != null && !options.beforeSend(xhr, options)) {\n return false;\n }\n if (xhr.readyState === XMLHttpRequest.OPENED) {\n return xhr.send(options.data);\n }\n };\n prepareOptions = function (options) {\n options.url = options.url || location.href;\n options.type = options.type.toUpperCase();\n if (options.type === 'GET' && options.data) {\n if (options.url.indexOf('?') < 0) {\n options.url += '?' + options.data;\n } else {\n options.url += '&' + options.data;\n }\n }\n if (AcceptHeaders[options.dataType] == null) {\n options.dataType = '*';\n }\n options.accept = AcceptHeaders[options.dataType];\n if (options.dataType !== '*') {\n options.accept += ', */*; q=0.01';\n }\n return options;\n };\n createXHR = function (options, done) {\n var xhr;\n xhr = new XMLHttpRequest();\n xhr.open(options.type, options.url, true);\n xhr.setRequestHeader('Accept', options.accept);\n if (typeof options.data === 'string') {\n xhr.setRequestHeader('Content-Type', 'application/x-www-form-urlencoded; charset=UTF-8');\n }\n if (!options.crossDomain) {\n xhr.setRequestHeader('X-Requested-With', 'XMLHttpRequest');\n CSRFProtection(xhr);\n }\n xhr.withCredentials = !!options.withCredentials;\n xhr.onreadystatechange = function () {\n if (xhr.readyState === XMLHttpRequest.DONE) {\n return done(xhr);\n }\n };\n return xhr;\n };\n processResponse = function (response, type) {\n var parser, script;\n if (typeof response === 'string' && typeof type === 'string') {\n if (type.match(/\\bjson\\b/)) {\n try {\n response = JSON.parse(response);\n } catch (error) {}\n } else if (type.match(/\\b(?:java|ecma)script\\b/)) {\n script = document.createElement('script');\n script.setAttribute('nonce', cspNonce());\n script.text = response;\n document.head.appendChild(script).parentNode.removeChild(script);\n } else if (type.match(/\\b(xml|html|svg)\\b/)) {\n parser = new DOMParser();\n type = type.replace(/;.+/, '');\n try {\n response = parser.parseFromString(response, type);\n } catch (error) {}\n }\n }\n return response;\n };\n Rails.href = function (element) {\n return element.href;\n };\n Rails.isCrossDomain = function (url) {\n var e, originAnchor, urlAnchor;\n originAnchor = document.createElement('a');\n originAnchor.href = location.href;\n urlAnchor = document.createElement('a');\n try {\n urlAnchor.href = url;\n return !((!urlAnchor.protocol || urlAnchor.protocol === ':') && !urlAnchor.host || originAnchor.protocol + '//' + originAnchor.host === urlAnchor.protocol + '//' + urlAnchor.host);\n } catch (error) {\n e = error;\n return true;\n }\n };\n }).call(this);\n (function () {\n var matches, toArray;\n matches = Rails.matches;\n toArray = function (e) {\n return Array.prototype.slice.call(e);\n };\n Rails.serializeElement = function (element, additionalParam) {\n var inputs, params;\n inputs = [element];\n if (matches(element, 'form')) {\n inputs = toArray(element.elements);\n }\n params = [];\n inputs.forEach(function (input) {\n if (!input.name || input.disabled) {\n return;\n }\n if (matches(input, 'fieldset[disabled] *')) {\n return;\n }\n if (matches(input, 'select')) {\n return toArray(input.options).forEach(function (option) {\n if (option.selected) {\n return params.push({\n name: input.name,\n value: option.value\n });\n }\n });\n } else if (input.checked || ['radio', 'checkbox', 'submit'].indexOf(input.type) === -1) {\n return params.push({\n name: input.name,\n value: input.value\n });\n }\n });\n if (additionalParam) {\n params.push(additionalParam);\n }\n return params.map(function (param) {\n if (param.name != null) {\n return encodeURIComponent(param.name) + \"=\" + encodeURIComponent(param.value);\n } else {\n return param;\n }\n }).join('&');\n };\n Rails.formElements = function (form, selector) {\n if (matches(form, 'form')) {\n return toArray(form.elements).filter(function (el) {\n return matches(el, selector);\n });\n } else {\n return toArray(form.querySelectorAll(selector));\n }\n };\n }).call(this);\n (function () {\n var allowAction, fire, stopEverything;\n fire = Rails.fire, stopEverything = Rails.stopEverything;\n Rails.handleConfirm = function (e) {\n if (!allowAction(this)) {\n return stopEverything(e);\n }\n };\n Rails.confirm = function (message, element) {\n return confirm(message);\n };\n allowAction = function (element) {\n var answer, callback, message;\n message = element.getAttribute('data-confirm');\n if (!message) {\n return true;\n }\n answer = false;\n if (fire(element, 'confirm')) {\n try {\n answer = Rails.confirm(message, element);\n } catch (error) {}\n callback = fire(element, 'confirm:complete', [answer]);\n }\n return answer && callback;\n };\n }).call(this);\n (function () {\n var disableFormElement, disableFormElements, disableLinkElement, enableFormElement, enableFormElements, enableLinkElement, formElements, getData, isXhrRedirect, matches, setData, stopEverything;\n matches = Rails.matches, getData = Rails.getData, setData = Rails.setData, stopEverything = Rails.stopEverything, formElements = Rails.formElements;\n Rails.handleDisabledElement = function (e) {\n var element;\n element = this;\n if (element.disabled) {\n return stopEverything(e);\n }\n };\n Rails.enableElement = function (e) {\n var element;\n if (e instanceof Event) {\n if (isXhrRedirect(e)) {\n return;\n }\n element = e.target;\n } else {\n element = e;\n }\n if (matches(element, Rails.linkDisableSelector)) {\n return enableLinkElement(element);\n } else if (matches(element, Rails.buttonDisableSelector) || matches(element, Rails.formEnableSelector)) {\n return enableFormElement(element);\n } else if (matches(element, Rails.formSubmitSelector)) {\n return enableFormElements(element);\n }\n };\n Rails.disableElement = function (e) {\n var element;\n element = e instanceof Event ? e.target : e;\n if (matches(element, Rails.linkDisableSelector)) {\n return disableLinkElement(element);\n } else if (matches(element, Rails.buttonDisableSelector) || matches(element, Rails.formDisableSelector)) {\n return disableFormElement(element);\n } else if (matches(element, Rails.formSubmitSelector)) {\n return disableFormElements(element);\n }\n };\n disableLinkElement = function (element) {\n var replacement;\n if (getData(element, 'ujs:disabled')) {\n return;\n }\n replacement = element.getAttribute('data-disable-with');\n if (replacement != null) {\n setData(element, 'ujs:enable-with', element.innerHTML);\n element.innerHTML = replacement;\n }\n element.addEventListener('click', stopEverything);\n return setData(element, 'ujs:disabled', true);\n };\n enableLinkElement = function (element) {\n var originalText;\n originalText = getData(element, 'ujs:enable-with');\n if (originalText != null) {\n element.innerHTML = originalText;\n setData(element, 'ujs:enable-with', null);\n }\n element.removeEventListener('click', stopEverything);\n return setData(element, 'ujs:disabled', null);\n };\n disableFormElements = function (form) {\n return formElements(form, Rails.formDisableSelector).forEach(disableFormElement);\n };\n disableFormElement = function (element) {\n var replacement;\n if (getData(element, 'ujs:disabled')) {\n return;\n }\n replacement = element.getAttribute('data-disable-with');\n if (replacement != null) {\n if (matches(element, 'button')) {\n setData(element, 'ujs:enable-with', element.innerHTML);\n element.innerHTML = replacement;\n } else {\n setData(element, 'ujs:enable-with', element.value);\n element.value = replacement;\n }\n }\n element.disabled = true;\n return setData(element, 'ujs:disabled', true);\n };\n enableFormElements = function (form) {\n return formElements(form, Rails.formEnableSelector).forEach(enableFormElement);\n };\n enableFormElement = function (element) {\n var originalText;\n originalText = getData(element, 'ujs:enable-with');\n if (originalText != null) {\n if (matches(element, 'button')) {\n element.innerHTML = originalText;\n } else {\n element.value = originalText;\n }\n setData(element, 'ujs:enable-with', null);\n }\n element.disabled = false;\n return setData(element, 'ujs:disabled', null);\n };\n isXhrRedirect = function (event) {\n var ref, xhr;\n xhr = (ref = event.detail) != null ? ref[0] : void 0;\n return (xhr != null ? xhr.getResponseHeader(\"X-Xhr-Redirect\") : void 0) != null;\n };\n }).call(this);\n (function () {\n var stopEverything;\n stopEverything = Rails.stopEverything;\n Rails.handleMethod = function (e) {\n var csrfParam, csrfToken, form, formContent, href, link, method;\n link = this;\n method = link.getAttribute('data-method');\n if (!method) {\n return;\n }\n href = Rails.href(link);\n csrfToken = Rails.csrfToken();\n csrfParam = Rails.csrfParam();\n form = document.createElement('form');\n formContent = \"<input name='_method' value='\" + method + \"' type='hidden' />\";\n if (csrfParam != null && csrfToken != null && !Rails.isCrossDomain(href)) {\n formContent += \"<input name='\" + csrfParam + \"' value='\" + csrfToken + \"' type='hidden' />\";\n }\n formContent += '<input type=\"submit\" />';\n form.method = 'post';\n form.action = href;\n form.target = link.target;\n form.innerHTML = formContent;\n form.style.display = 'none';\n document.body.appendChild(form);\n form.querySelector('[type=\"submit\"]').click();\n return stopEverything(e);\n };\n }).call(this);\n (function () {\n var ajax,\n fire,\n getData,\n isCrossDomain,\n isRemote,\n matches,\n serializeElement,\n setData,\n stopEverything,\n slice = [].slice;\n matches = Rails.matches, getData = Rails.getData, setData = Rails.setData, fire = Rails.fire, stopEverything = Rails.stopEverything, ajax = Rails.ajax, isCrossDomain = Rails.isCrossDomain, serializeElement = Rails.serializeElement;\n isRemote = function (element) {\n var value;\n value = element.getAttribute('data-remote');\n return value != null && value !== 'false';\n };\n Rails.handleRemote = function (e) {\n var button, data, dataType, element, method, url, withCredentials;\n element = this;\n if (!isRemote(element)) {\n return true;\n }\n if (!fire(element, 'ajax:before')) {\n fire(element, 'ajax:stopped');\n return false;\n }\n withCredentials = element.getAttribute('data-with-credentials');\n dataType = element.getAttribute('data-type') || 'script';\n if (matches(element, Rails.formSubmitSelector)) {\n button = getData(element, 'ujs:submit-button');\n method = getData(element, 'ujs:submit-button-formmethod') || element.method;\n url = getData(element, 'ujs:submit-button-formaction') || element.getAttribute('action') || location.href;\n if (method.toUpperCase() === 'GET') {\n url = url.replace(/\\?.*$/, '');\n }\n if (element.enctype === 'multipart/form-data') {\n data = new FormData(element);\n if (button != null) {\n data.append(button.name, button.value);\n }\n } else {\n data = serializeElement(element, button);\n }\n setData(element, 'ujs:submit-button', null);\n setData(element, 'ujs:submit-button-formmethod', null);\n setData(element, 'ujs:submit-button-formaction', null);\n } else if (matches(element, Rails.buttonClickSelector) || matches(element, Rails.inputChangeSelector)) {\n method = element.getAttribute('data-method');\n url = element.getAttribute('data-url');\n data = serializeElement(element, element.getAttribute('data-params'));\n } else {\n method = element.getAttribute('data-method');\n url = Rails.href(element);\n data = element.getAttribute('data-params');\n }\n ajax({\n type: method || 'GET',\n url: url,\n data: data,\n dataType: dataType,\n beforeSend: function (xhr, options) {\n if (fire(element, 'ajax:beforeSend', [xhr, options])) {\n return fire(element, 'ajax:send', [xhr]);\n } else {\n fire(element, 'ajax:stopped');\n return false;\n }\n },\n success: function () {\n var args;\n args = 1 <= arguments.length ? slice.call(arguments, 0) : [];\n return fire(element, 'ajax:success', args);\n },\n error: function () {\n var args;\n args = 1 <= arguments.length ? slice.call(arguments, 0) : [];\n return fire(element, 'ajax:error', args);\n },\n complete: function () {\n var args;\n args = 1 <= arguments.length ? slice.call(arguments, 0) : [];\n return fire(element, 'ajax:complete', args);\n },\n crossDomain: isCrossDomain(url),\n withCredentials: withCredentials != null && withCredentials !== 'false'\n });\n return stopEverything(e);\n };\n Rails.formSubmitButtonClick = function (e) {\n var button, form;\n button = this;\n form = button.form;\n if (!form) {\n return;\n }\n if (button.name) {\n setData(form, 'ujs:submit-button', {\n name: button.name,\n value: button.value\n });\n }\n setData(form, 'ujs:formnovalidate-button', button.formNoValidate);\n setData(form, 'ujs:submit-button-formaction', button.getAttribute('formaction'));\n return setData(form, 'ujs:submit-button-formmethod', button.getAttribute('formmethod'));\n };\n Rails.preventInsignificantClick = function (e) {\n var data, insignificantMetaClick, link, metaClick, method, nonPrimaryMouseClick;\n link = this;\n method = (link.getAttribute('data-method') || 'GET').toUpperCase();\n data = link.getAttribute('data-params');\n metaClick = e.metaKey || e.ctrlKey;\n insignificantMetaClick = metaClick && method === 'GET' && !data;\n nonPrimaryMouseClick = e.button != null && e.button !== 0;\n if (nonPrimaryMouseClick || insignificantMetaClick) {\n return e.stopImmediatePropagation();\n }\n };\n }).call(this);\n (function () {\n var $, CSRFProtection, delegate, disableElement, enableElement, fire, formSubmitButtonClick, getData, handleConfirm, handleDisabledElement, handleMethod, handleRemote, loadCSPNonce, preventInsignificantClick, refreshCSRFTokens;\n fire = Rails.fire, delegate = Rails.delegate, getData = Rails.getData, $ = Rails.$, refreshCSRFTokens = Rails.refreshCSRFTokens, CSRFProtection = Rails.CSRFProtection, loadCSPNonce = Rails.loadCSPNonce, enableElement = Rails.enableElement, disableElement = Rails.disableElement, handleDisabledElement = Rails.handleDisabledElement, handleConfirm = Rails.handleConfirm, preventInsignificantClick = Rails.preventInsignificantClick, handleRemote = Rails.handleRemote, formSubmitButtonClick = Rails.formSubmitButtonClick, handleMethod = Rails.handleMethod;\n if (typeof jQuery !== \"undefined\" && jQuery !== null && jQuery.ajax != null) {\n if (jQuery.rails) {\n throw new Error('If you load both jquery_ujs and rails-ujs, use rails-ujs only.');\n }\n jQuery.rails = Rails;\n jQuery.ajaxPrefilter(function (options, originalOptions, xhr) {\n if (!options.crossDomain) {\n return CSRFProtection(xhr);\n }\n });\n }\n Rails.start = function () {\n if (window._rails_loaded) {\n throw new Error('rails-ujs has already been loaded!');\n }\n window.addEventListener('pageshow', function () {\n $(Rails.formEnableSelector).forEach(function (el) {\n if (getData(el, 'ujs:disabled')) {\n return enableElement(el);\n }\n });\n return $(Rails.linkDisableSelector).forEach(function (el) {\n if (getData(el, 'ujs:disabled')) {\n return enableElement(el);\n }\n });\n });\n delegate(document, Rails.linkDisableSelector, 'ajax:complete', enableElement);\n delegate(document, Rails.linkDisableSelector, 'ajax:stopped', enableElement);\n delegate(document, Rails.buttonDisableSelector, 'ajax:complete', enableElement);\n delegate(document, Rails.buttonDisableSelector, 'ajax:stopped', enableElement);\n delegate(document, Rails.linkClickSelector, 'click', preventInsignificantClick);\n delegate(document, Rails.linkClickSelector, 'click', handleDisabledElement);\n delegate(document, Rails.linkClickSelector, 'click', handleConfirm);\n delegate(document, Rails.linkClickSelector, 'click', disableElement);\n delegate(document, Rails.linkClickSelector, 'click', handleRemote);\n delegate(document, Rails.linkClickSelector, 'click', handleMethod);\n delegate(document, Rails.buttonClickSelector, 'click', preventInsignificantClick);\n delegate(document, Rails.buttonClickSelector, 'click', handleDisabledElement);\n delegate(document, Rails.buttonClickSelector, 'click', handleConfirm);\n delegate(document, Rails.buttonClickSelector, 'click', disableElement);\n delegate(document, Rails.buttonClickSelector, 'click', handleRemote);\n delegate(document, Rails.inputChangeSelector, 'change', handleDisabledElement);\n delegate(document, Rails.inputChangeSelector, 'change', handleConfirm);\n delegate(document, Rails.inputChangeSelector, 'change', handleRemote);\n delegate(document, Rails.formSubmitSelector, 'submit', handleDisabledElement);\n delegate(document, Rails.formSubmitSelector, 'submit', handleConfirm);\n delegate(document, Rails.formSubmitSelector, 'submit', handleRemote);\n delegate(document, Rails.formSubmitSelector, 'submit', function (e) {\n return setTimeout(function () {\n return disableElement(e);\n }, 13);\n });\n delegate(document, Rails.formSubmitSelector, 'ajax:send', disableElement);\n delegate(document, Rails.formSubmitSelector, 'ajax:complete', enableElement);\n delegate(document, Rails.formInputClickSelector, 'click', preventInsignificantClick);\n delegate(document, Rails.formInputClickSelector, 'click', handleDisabledElement);\n delegate(document, Rails.formInputClickSelector, 'click', handleConfirm);\n delegate(document, Rails.formInputClickSelector, 'click', formSubmitButtonClick);\n document.addEventListener('DOMContentLoaded', refreshCSRFTokens);\n document.addEventListener('DOMContentLoaded', loadCSPNonce);\n return window._rails_loaded = true;\n };\n if (window.Rails === Rails && fire(document, 'rails:attachBindings')) {\n Rails.start();\n }\n }).call(this);\n }).call(this);\n if (typeof module === \"object\" && module.exports) {\n module.exports = Rails;\n } else if (typeof define === \"function\" && define.amd) {\n define(Rails);\n }\n}).call(this);","define(function () {\n \"use strict\";\n\n return Object.getPrototypeOf;\n});","define([\"./arr\"], function (arr) {\n \"use strict\";\n\n // Support: IE 9 - 11+, Edge 18+, Android Browser 4.0 - 4.3 only, iOS 7 - 11 only, Safari 11 only,\n // Firefox <= 61 only\n // Provide fallback for browsers without Array#flat.\n return arr.flat ? function (array) {\n return arr.flat.call(array);\n } : function (array) {\n return arr.concat.apply([], array);\n };\n});","define([\"./class2type\"], function (class2type) {\n \"use strict\";\n\n return class2type.toString;\n});","define([\"./hasOwn\"], function (hasOwn) {\n \"use strict\";\n\n return hasOwn.toString;\n});","define([\"../var/document\"], function (document) {\n \"use strict\";\n\n var preservedScriptAttributes = {\n type: true,\n src: true,\n nonce: true,\n noModule: true\n };\n function DOMEval(code, node, doc) {\n doc = doc || document;\n var i,\n val,\n script = doc.createElement(\"script\");\n script.text = code;\n if (node) {\n for (i in preservedScriptAttributes) {\n // Support: Firefox 64+, Edge 18+\n // Some browsers don't support the \"nonce\" property on scripts.\n // On the other hand, just using `getAttribute` is not enough as\n // the `nonce` attribute is reset to an empty string whenever it\n // becomes browsing-context connected.\n // See https://github.com/whatwg/html/issues/2369\n // See https://html.spec.whatwg.org/#nonce-attributes\n // The `node.getAttribute` check was added for the sake of\n // `jQuery.globalEval` so that it can fake a nonce-containing node\n // via an object.\n val = node[i] || node.getAttribute && node.getAttribute(i);\n if (val) {\n script.setAttribute(i, val);\n }\n }\n }\n doc.head.appendChild(script).parentNode.removeChild(script);\n }\n return DOMEval;\n});","define(function () {\n \"use strict\";\n\n // https://www.w3.org/TR/css3-selectors/#whitespace\n return \"[\\\\x20\\\\t\\\\r\\\\n\\\\f]\";\n});","define([\"./whitespace\"], function (whitespace) {\n \"use strict\";\n\n return new RegExp(\"^\" + whitespace + \"+|((?:^|[^\\\\\\\\])(?:\\\\\\\\.)*)\" + whitespace + \"+$\", \"g\");\n});","define([\"../core\"], function (jQuery) {\n \"use strict\";\n\n // Note: an element does not contain itself\n jQuery.contains = function (a, b) {\n var bup = b && b.parentNode;\n return a === bup || !!(bup && bup.nodeType === 1 && (\n // Support: IE 9 - 11+\n // IE doesn't have `contains` on SVG.\n a.contains ? a.contains(bup) : a.compareDocumentPosition && a.compareDocumentPosition(bup) & 16));\n };\n});","define([\"../../core\", \"../../selector\"], function (jQuery) {\n \"use strict\";\n\n return jQuery.expr.match.needsContext;\n});","define(function () {\n \"use strict\";\n\n // rsingleTag matches a string consisting of a single HTML element with no attributes\n // and captures the element's name\n return /^<([a-z][^\\/\\0>:\\x20\\t\\r\\n\\f]*)[\\x20\\t\\r\\n\\f]*\\/?>(?:<\\/\\1>|)$/i;\n});","define([\"../core\", \"../var/indexOf\", \"../var/isFunction\", \"./var/rneedsContext\", \"../selector\"], function (jQuery, indexOf, isFunction, rneedsContext) {\n \"use strict\";\n\n // Implement the identical functionality for filter and not\n function winnow(elements, qualifier, not) {\n if (isFunction(qualifier)) {\n return jQuery.grep(elements, function (elem, i) {\n return !!qualifier.call(elem, i, elem) !== not;\n });\n }\n\n // Single element\n if (qualifier.nodeType) {\n return jQuery.grep(elements, function (elem) {\n return elem === qualifier !== not;\n });\n }\n\n // Arraylike of elements (jQuery, arguments, Array)\n if (typeof qualifier !== \"string\") {\n return jQuery.grep(elements, function (elem) {\n return indexOf.call(qualifier, elem) > -1 !== not;\n });\n }\n\n // Filtered directly for both simple and complex selectors\n return jQuery.filter(qualifier, elements, not);\n }\n jQuery.filter = function (expr, elems, not) {\n var elem = elems[0];\n if (not) {\n expr = \":not(\" + expr + \")\";\n }\n if (elems.length === 1 && elem.nodeType === 1) {\n return jQuery.find.matchesSelector(elem, expr) ? [elem] : [];\n }\n return jQuery.find.matches(expr, jQuery.grep(elems, function (elem) {\n return elem.nodeType === 1;\n }));\n };\n jQuery.fn.extend({\n find: function (selector) {\n var i,\n ret,\n len = this.length,\n self = this;\n if (typeof selector !== \"string\") {\n return this.pushStack(jQuery(selector).filter(function () {\n for (i = 0; i < len; i++) {\n if (jQuery.contains(self[i], this)) {\n return true;\n }\n }\n }));\n }\n ret = this.pushStack([]);\n for (i = 0; i < len; i++) {\n jQuery.find(selector, self[i], ret);\n }\n return len > 1 ? jQuery.uniqueSort(ret) : ret;\n },\n filter: function (selector) {\n return this.pushStack(winnow(this, selector || [], false));\n },\n not: function (selector) {\n return this.pushStack(winnow(this, selector || [], true));\n },\n is: function (selector) {\n return !!winnow(this,\n // If this is a positional/relative selector, check membership in the returned set\n // so $(\"p:first\").is(\"p:last\") won't return true for a doc with two \"p\".\n typeof selector === \"string\" && rneedsContext.test(selector) ? jQuery(selector) : selector || [], false).length;\n }\n });\n});","define([\"../core\", \"../var/document\", \"../core/readyException\", \"../deferred\"], function (jQuery, document) {\n \"use strict\";\n\n // The deferred used on DOM ready\n var readyList = jQuery.Deferred();\n jQuery.fn.ready = function (fn) {\n readyList.then(fn)\n\n // Wrap jQuery.readyException in a function so that the lookup\n // happens at the time of error handling instead of callback\n // registration.\n .catch(function (error) {\n jQuery.readyException(error);\n });\n return this;\n };\n jQuery.extend({\n // Is the DOM ready to be used? Set to true once it occurs.\n isReady: false,\n // A counter to track how many items to wait for before\n // the ready event fires. See trac-6781\n readyWait: 1,\n // Handle when the DOM is ready\n ready: function (wait) {\n // Abort if there are pending holds or we're already ready\n if (wait === true ? --jQuery.readyWait : jQuery.isReady) {\n return;\n }\n\n // Remember that the DOM is ready\n jQuery.isReady = true;\n\n // If a normal DOM Ready event fired, decrement, and wait if need be\n if (wait !== true && --jQuery.readyWait > 0) {\n return;\n }\n\n // If there are functions bound, to execute\n readyList.resolveWith(document, [jQuery]);\n }\n });\n jQuery.ready.then = readyList.then;\n\n // The ready event handler and self cleanup method\n function completed() {\n document.removeEventListener(\"DOMContentLoaded\", completed);\n window.removeEventListener(\"load\", completed);\n jQuery.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\n if (document.readyState === \"complete\" || document.readyState !== \"loading\" && !document.documentElement.doScroll) {\n // Handle it asynchronously to allow scripts the opportunity to delay ready\n window.setTimeout(jQuery.ready);\n } else {\n // Use the handy event callback\n document.addEventListener(\"DOMContentLoaded\", completed);\n\n // A fallback to window.onload, that will always work\n window.addEventListener(\"load\", completed);\n }\n});","define([\"../core\", \"../core/camelCase\", \"../var/rnothtmlwhite\", \"./var/acceptData\"], function (jQuery, camelCase, rnothtmlwhite, acceptData) {\n \"use strict\";\n\n function Data() {\n this.expando = jQuery.expando + Data.uid++;\n }\n Data.uid = 1;\n Data.prototype = {\n cache: function (owner) {\n // Check if the owner object already has a cache\n var value = owner[this.expando];\n\n // If not, create one\n if (!value) {\n value = {};\n\n // We can accept data for non-element nodes in modern browsers,\n // but we should not, see trac-8335.\n // Always return an empty object.\n if (acceptData(owner)) {\n // If it is a node unlikely to be stringify-ed or looped over\n // use plain assignment\n if (owner.nodeType) {\n owner[this.expando] = value;\n\n // Otherwise secure it in a non-enumerable property\n // configurable must be true to allow the property to be\n // deleted when data is removed\n } else {\n Object.defineProperty(owner, this.expando, {\n value: value,\n configurable: true\n });\n }\n }\n }\n return value;\n },\n set: function (owner, data, value) {\n var prop,\n cache = this.cache(owner);\n\n // Handle: [ owner, key, value ] args\n // Always use camelCase key (gh-2257)\n if (typeof data === \"string\") {\n cache[camelCase(data)] = value;\n\n // Handle: [ owner, { properties } ] args\n } else {\n // Copy the properties one-by-one to the cache object\n for (prop in data) {\n cache[camelCase(prop)] = data[prop];\n }\n }\n return cache;\n },\n get: function (owner, key) {\n return key === undefined ? this.cache(owner) :\n // Always use camelCase key (gh-2257)\n owner[this.expando] && owner[this.expando][camelCase(key)];\n },\n access: function (owner, key, value) {\n // In cases where either:\n //\n // 1. No key was specified\n // 2. A string key was specified, but no value provided\n //\n // Take the \"read\" path and allow the get method to determine\n // which value to return, respectively either:\n //\n // 1. The entire cache object\n // 2. The data stored at the key\n //\n if (key === undefined || key && typeof key === \"string\" && value === undefined) {\n return this.get(owner, key);\n }\n\n // When the key is not a string, or both a key and value\n // are specified, set or extend (existing objects) with either:\n //\n // 1. An object of properties\n // 2. A key and value\n //\n this.set(owner, key, value);\n\n // Since the \"set\" path can have two possible entry points\n // return the expected data based on which path was taken[*]\n return value !== undefined ? value : key;\n },\n remove: function (owner, key) {\n var i,\n cache = owner[this.expando];\n if (cache === undefined) {\n return;\n }\n if (key !== undefined) {\n // Support array or space separated string of keys\n if (Array.isArray(key)) {\n // If key is an array of keys...\n // We always set camelCase keys, so remove that.\n key = key.map(camelCase);\n } else {\n key = camelCase(key);\n\n // If a key with the spaces exists, use it.\n // Otherwise, create an array by matching non-whitespace\n key = key in cache ? [key] : key.match(rnothtmlwhite) || [];\n }\n i = key.length;\n while (i--) {\n delete cache[key[i]];\n }\n }\n\n // Remove the expando if there's no more data\n if (key === undefined || jQuery.isEmptyObject(cache)) {\n // Support: Chrome <=35 - 45\n // Webkit & Blink performance suffers when deleting properties\n // from DOM nodes, so set to undefined instead\n // https://bugs.chromium.org/p/chromium/issues/detail?id=378607 (bug restricted)\n if (owner.nodeType) {\n owner[this.expando] = undefined;\n } else {\n delete owner[this.expando];\n }\n }\n },\n hasData: function (owner) {\n var cache = owner[this.expando];\n return cache !== undefined && !jQuery.isEmptyObject(cache);\n }\n };\n return Data;\n});","define([\"../Data\"], function (Data) {\n \"use strict\";\n\n return new Data();\n});","define(function () {\n \"use strict\";\n\n return /[+-]?(?:\\d*\\.|)\\d+(?:[eE][+-]?\\d+|)/.source;\n});","define([\"../../core\", \"../../core/isAttached\"\n\n// css is assumed\n], function (jQuery, isAttached) {\n \"use strict\";\n\n // isHiddenWithinTree reports if an element has a non-\"none\" display style (inline and/or\n // through the CSS cascade), which is useful in deciding whether or not to make it visible.\n // It differs from the :hidden selector (jQuery.expr.pseudos.hidden) in two important ways:\n // * A hidden ancestor does not force an element to be classified as hidden.\n // * Being disconnected from the document does not force an element to be classified as hidden.\n // These differences improve the behavior of .toggle() et al. when applied to elements that are\n // detached or contained within hidden ancestors (gh-2404, gh-2863).\n return function (elem, el) {\n // isHiddenWithinTree might be called from jQuery#filter function;\n // in that case, element will be second argument\n elem = el || elem;\n\n // Inline style trumps all\n return elem.style.display === \"none\" || elem.style.display === \"\" &&\n // Otherwise, check computed style\n // Support: Firefox <=43 - 45\n // Disconnected elements can have computed display: none, so first confirm that elem is\n // in the document.\n isAttached(elem) && jQuery.css(elem, \"display\") === \"none\";\n };\n});","define([\"../core\", \"../var/rcssNum\"], function (jQuery, rcssNum) {\n \"use strict\";\n\n function adjustCSS(elem, prop, valueParts, tween) {\n var adjusted,\n scale,\n maxIterations = 20,\n currentValue = tween ? function () {\n return tween.cur();\n } : function () {\n return jQuery.css(elem, prop, \"\");\n },\n initial = currentValue(),\n unit = valueParts && valueParts[3] || (jQuery.cssNumber[prop] ? \"\" : \"px\"),\n // Starting value computation is required for potential unit mismatches\n initialInUnit = elem.nodeType && (jQuery.cssNumber[prop] || unit !== \"px\" && +initial) && rcssNum.exec(jQuery.css(elem, prop));\n if (initialInUnit && initialInUnit[3] !== unit) {\n // Support: Firefox <=54\n // Halve the iteration target value to prevent interference from CSS upper bounds (gh-2144)\n initial = initial / 2;\n\n // Trust units reported by jQuery.css\n unit = unit || initialInUnit[3];\n\n // Iteratively approximate from a nonzero starting point\n initialInUnit = +initial || 1;\n while (maxIterations--) {\n // Evaluate and update our best guess (doubling guesses that zero out).\n // Finish if the scale equals or crosses 1 (making the old*new product non-positive).\n jQuery.style(elem, prop, initialInUnit + unit);\n if ((1 - scale) * (1 - (scale = currentValue() / initial || 0.5)) <= 0) {\n maxIterations = 0;\n }\n initialInUnit = initialInUnit / scale;\n }\n initialInUnit = initialInUnit * 2;\n jQuery.style(elem, prop, initialInUnit + unit);\n\n // Make sure we update the tween properties later on\n valueParts = valueParts || [];\n }\n if (valueParts) {\n initialInUnit = +initialInUnit || +initial || 0;\n\n // Apply relative offset (+=/-=) if specified\n adjusted = valueParts[1] ? initialInUnit + (valueParts[1] + 1) * valueParts[2] : +valueParts[2];\n if (tween) {\n tween.unit = unit;\n tween.start = initialInUnit;\n tween.end = adjusted;\n }\n }\n return adjusted;\n }\n return adjustCSS;\n});","define(function () {\n \"use strict\";\n\n // rtagName captures the name from the first start tag in a string of HTML\n // https://html.spec.whatwg.org/multipage/syntax.html#tag-open-state\n // https://html.spec.whatwg.org/multipage/syntax.html#tag-name-state\n return /<([a-z][^\\/\\0>\\x20\\t\\r\\n\\f]*)/i;\n});","define(function () {\n \"use strict\";\n\n return /^$|^module$|\\/(?:java|ecma)script/i;\n});","define([\"./support\"], function (support) {\n \"use strict\";\n\n // We have to close these tags to support XHTML (trac-13200)\n var wrapMap = {\n // XHTML parsers do not magically insert elements in the\n // same way that tag soup parsers do. So we cannot shorten\n // this by omitting <tbody> or other required elements.\n thead: [1, \"<table>\", \"</table>\"],\n col: [2, \"<table><colgroup>\", \"</colgroup></table>\"],\n tr: [2, \"<table><tbody>\", \"</tbody></table>\"],\n td: [3, \"<table><tbody><tr>\", \"</tr></tbody></table>\"],\n _default: [0, \"\", \"\"]\n };\n wrapMap.tbody = wrapMap.tfoot = wrapMap.colgroup = wrapMap.caption = wrapMap.thead;\n wrapMap.th = wrapMap.td;\n\n // Support: IE <=9 only\n if (!support.option) {\n wrapMap.optgroup = wrapMap.option = [1, \"<select multiple='multiple'>\", \"</select>\"];\n }\n return wrapMap;\n});","define([\"../var/document\", \"../var/support\"], function (document, support) {\n \"use strict\";\n\n (function () {\n var fragment = document.createDocumentFragment(),\n div = fragment.appendChild(document.createElement(\"div\")),\n input = document.createElement(\"input\");\n\n // Support: Android 4.0 - 4.3 only\n // Check state lost if the name is set (trac-11217)\n // Support: Windows Web Apps (WWA)\n // `name` and `type` must use .setAttribute for WWA (trac-14901)\n input.setAttribute(\"type\", \"radio\");\n input.setAttribute(\"checked\", \"checked\");\n input.setAttribute(\"name\", \"t\");\n div.appendChild(input);\n\n // Support: Android <=4.1 only\n // Older WebKit doesn't clone checked state correctly in fragments\n support.checkClone = div.cloneNode(true).cloneNode(true).lastChild.checked;\n\n // Support: IE <=11 only\n // Make sure textarea (and checkbox) defaultValue is properly cloned\n div.innerHTML = \"<textarea>x</textarea>\";\n support.noCloneChecked = !!div.cloneNode(true).lastChild.defaultValue;\n\n // Support: IE <=9 only\n // IE <=9 replaces <option> tags with their contents when inserted outside of\n // the select element.\n div.innerHTML = \"<option></option>\";\n support.option = !!div.lastChild;\n })();\n return support;\n});","define([\"../core\", \"../core/nodeName\"], function (jQuery, nodeName) {\n \"use strict\";\n\n function getAll(context, tag) {\n // Support: IE <=9 - 11 only\n // Use typeof to avoid zero-argument method invocation on host objects (trac-15151)\n var ret;\n if (typeof context.getElementsByTagName !== \"undefined\") {\n ret = context.getElementsByTagName(tag || \"*\");\n } else if (typeof context.querySelectorAll !== \"undefined\") {\n ret = context.querySelectorAll(tag || \"*\");\n } else {\n ret = [];\n }\n if (tag === undefined || tag && nodeName(context, tag)) {\n return jQuery.merge([context], ret);\n }\n return ret;\n }\n return getAll;\n});","define([\"../data/var/dataPriv\"], function (dataPriv) {\n \"use strict\";\n\n // Mark scripts as having already been evaluated\n function setGlobalEval(elems, refElements) {\n var i = 0,\n l = elems.length;\n for (; i < l; i++) {\n dataPriv.set(elems[i], \"globalEval\", !refElements || dataPriv.get(refElements[i], \"globalEval\"));\n }\n }\n return setGlobalEval;\n});","define([\"../core\", \"../core/toType\", \"../core/isAttached\", \"./var/rtagName\", \"./var/rscriptType\", \"./wrapMap\", \"./getAll\", \"./setGlobalEval\"], function (jQuery, toType, isAttached, rtagName, rscriptType, wrapMap, getAll, setGlobalEval) {\n \"use strict\";\n\n var rhtml = /<|&#?\\w+;/;\n function buildFragment(elems, context, scripts, selection, ignored) {\n var elem,\n tmp,\n tag,\n wrap,\n attached,\n j,\n fragment = context.createDocumentFragment(),\n nodes = [],\n i = 0,\n l = elems.length;\n for (; i < l; i++) {\n elem = elems[i];\n if (elem || elem === 0) {\n // Add nodes directly\n if (toType(elem) === \"object\") {\n // Support: Android <=4.0 only, PhantomJS 1 only\n // push.apply(_, arraylike) throws on ancient WebKit\n jQuery.merge(nodes, elem.nodeType ? [elem] : elem);\n\n // Convert non-html into a text node\n } else if (!rhtml.test(elem)) {\n nodes.push(context.createTextNode(elem));\n\n // Convert html into DOM nodes\n } else {\n tmp = tmp || fragment.appendChild(context.createElement(\"div\"));\n\n // Deserialize a standard representation\n tag = (rtagName.exec(elem) || [\"\", \"\"])[1].toLowerCase();\n wrap = wrapMap[tag] || wrapMap._default;\n tmp.innerHTML = wrap[1] + jQuery.htmlPrefilter(elem) + wrap[2];\n\n // Descend through wrappers to the right content\n j = wrap[0];\n while (j--) {\n tmp = tmp.lastChild;\n }\n\n // Support: Android <=4.0 only, PhantomJS 1 only\n // push.apply(_, arraylike) throws on ancient WebKit\n jQuery.merge(nodes, tmp.childNodes);\n\n // Remember the top-level container\n tmp = fragment.firstChild;\n\n // Ensure the created nodes are orphaned (trac-12392)\n tmp.textContent = \"\";\n }\n }\n }\n\n // Remove wrapper from fragment\n fragment.textContent = \"\";\n i = 0;\n while (elem = nodes[i++]) {\n // Skip elements already in the context collection (trac-4087)\n if (selection && jQuery.inArray(elem, selection) > -1) {\n if (ignored) {\n ignored.push(elem);\n }\n continue;\n }\n attached = isAttached(elem);\n\n // Append to fragment\n tmp = getAll(fragment.appendChild(elem), \"script\");\n\n // Preserve script evaluation history\n if (attached) {\n setGlobalEval(tmp);\n }\n\n // Capture executables\n if (scripts) {\n j = 0;\n while (elem = tmp[j++]) {\n if (rscriptType.test(elem.type || \"\")) {\n scripts.push(elem);\n }\n }\n }\n }\n return fragment;\n }\n return buildFragment;\n});","define(function () {\n \"use strict\";\n\n return /^--/;\n});","define(function () {\n \"use strict\";\n\n return function (elem) {\n // Support: IE <=11 only, Firefox <=30 (trac-15098, trac-14150)\n // IE throws on elements created in popups\n // FF meanwhile throws on frame elements through \"defaultView.getComputedStyle\"\n var view = elem.ownerDocument.defaultView;\n if (!view || !view.opener) {\n view = window;\n }\n return view.getComputedStyle(elem);\n };\n});","define([\"../core\", \"../core/isAttached\", \"./var/rboxStyle\", \"./var/rnumnonpx\", \"./var/getStyles\", \"./var/rcustomProp\", \"../var/rtrimCSS\", \"./support\"], function (jQuery, isAttached, rboxStyle, rnumnonpx, getStyles, rcustomProp, rtrimCSS, support) {\n \"use strict\";\n\n function curCSS(elem, name, computed) {\n var width,\n minWidth,\n maxWidth,\n ret,\n isCustomProp = rcustomProp.test(name),\n // Support: Firefox 51+\n // Retrieving style before computed somehow\n // fixes an issue with getting wrong values\n // on detached elements\n style = elem.style;\n computed = computed || getStyles(elem);\n\n // getPropertyValue is needed for:\n // .css('filter') (IE 9 only, trac-12537)\n // .css('--customProperty) (gh-3144)\n if (computed) {\n // Support: IE <=9 - 11+\n // IE only supports `\"float\"` in `getPropertyValue`; in computed styles\n // it's only available as `\"cssFloat\"`. We no longer modify properties\n // sent to `.css()` apart from camelCasing, so we need to check both.\n // Normally, this would create difference in behavior: if\n // `getPropertyValue` returns an empty string, the value returned\n // by `.css()` would be `undefined`. This is usually the case for\n // disconnected elements. However, in IE even disconnected elements\n // with no styles return `\"none\"` for `getPropertyValue( \"float\" )`\n ret = computed.getPropertyValue(name) || computed[name];\n if (isCustomProp && ret) {\n // Support: Firefox 105+, Chrome <=105+\n // Spec requires trimming whitespace for custom properties (gh-4926).\n // Firefox only trims leading whitespace. Chrome just collapses\n // both leading & trailing whitespace to a single space.\n //\n // Fall back to `undefined` if empty string returned.\n // This collapses a missing definition with property defined\n // and set to an empty string but there's no standard API\n // allowing us to differentiate them without a performance penalty\n // and returning `undefined` aligns with older jQuery.\n //\n // rtrimCSS treats U+000D CARRIAGE RETURN and U+000C FORM FEED\n // as whitespace while CSS does not, but this is not a problem\n // because CSS preprocessing replaces them with U+000A LINE FEED\n // (which *is* CSS whitespace)\n // https://www.w3.org/TR/css-syntax-3/#input-preprocessing\n ret = ret.replace(rtrimCSS, \"$1\") || undefined;\n }\n if (ret === \"\" && !isAttached(elem)) {\n ret = jQuery.style(elem, name);\n }\n\n // A tribute to the \"awesome hack by Dean Edwards\"\n // Android Browser returns percentage for some values,\n // but width seems to be reliably pixels.\n // This is against the CSSOM draft spec:\n // https://drafts.csswg.org/cssom/#resolved-values\n if (!support.pixelBoxStyles() && rnumnonpx.test(ret) && rboxStyle.test(name)) {\n // Remember the original values\n width = style.width;\n minWidth = style.minWidth;\n maxWidth = style.maxWidth;\n\n // Put in the new values to get a computed value out\n style.minWidth = style.maxWidth = style.width = ret;\n ret = computed.width;\n\n // Revert the changed values\n style.width = width;\n style.minWidth = minWidth;\n style.maxWidth = maxWidth;\n }\n }\n return ret !== undefined ?\n // Support: IE <=9 - 11 only\n // IE returns zIndex value as an integer.\n ret + \"\" : ret;\n }\n return curCSS;\n});","define(function () {\n \"use strict\";\n\n function addGetHookIf(conditionFn, hookFn) {\n // Define the hook, we'll check on the first run if it's really needed.\n return {\n get: function () {\n if (conditionFn()) {\n // Hook not needed (or it's not possible to use it due\n // to missing dependency), remove it.\n delete this.get;\n return;\n }\n\n // Hook needed; redefine it so that the support test is not executed again.\n return (this.get = hookFn).apply(this, arguments);\n }\n };\n }\n return addGetHookIf;\n});","define([\"../var/document\", \"../core\"], function (document, jQuery) {\n \"use strict\";\n\n var cssPrefixes = [\"Webkit\", \"Moz\", \"ms\"],\n emptyStyle = document.createElement(\"div\").style,\n vendorProps = {};\n\n // Return a vendor-prefixed property or undefined\n function vendorPropName(name) {\n // Check for vendor prefixed names\n var capName = name[0].toUpperCase() + name.slice(1),\n i = cssPrefixes.length;\n while (i--) {\n name = cssPrefixes[i] + capName;\n if (name in emptyStyle) {\n return name;\n }\n }\n }\n\n // Return a potentially-mapped jQuery.cssProps or vendor prefixed property\n function finalPropName(name) {\n var final = jQuery.cssProps[name] || vendorProps[name];\n if (final) {\n return final;\n }\n if (name in emptyStyle) {\n return name;\n }\n return vendorProps[name] = vendorPropName(name) || name;\n }\n return finalPropName;\n});","define([\"../core\", \"../core/access\", \"./support\", \"../selector\"], function (jQuery, access, support) {\n \"use strict\";\n\n var rfocusable = /^(?:input|select|textarea|button)$/i,\n rclickable = /^(?:a|area)$/i;\n jQuery.fn.extend({\n prop: function (name, value) {\n return access(this, jQuery.prop, name, value, arguments.length > 1);\n },\n removeProp: function (name) {\n return this.each(function () {\n delete this[jQuery.propFix[name] || name];\n });\n }\n });\n jQuery.extend({\n prop: function (elem, name, value) {\n var ret,\n hooks,\n nType = elem.nodeType;\n\n // Don't get/set properties on text, comment and attribute nodes\n if (nType === 3 || nType === 8 || nType === 2) {\n return;\n }\n if (nType !== 1 || !jQuery.isXMLDoc(elem)) {\n // Fix name and attach hooks\n name = jQuery.propFix[name] || name;\n hooks = jQuery.propHooks[name];\n }\n if (value !== undefined) {\n if (hooks && \"set\" in hooks && (ret = hooks.set(elem, value, name)) !== undefined) {\n return ret;\n }\n return elem[name] = value;\n }\n if (hooks && \"get\" in hooks && (ret = hooks.get(elem, name)) !== null) {\n return ret;\n }\n return elem[name];\n },\n propHooks: {\n tabIndex: {\n get: function (elem) {\n // Support: IE <=9 - 11 only\n // elem.tabIndex doesn't always return the\n // correct value when it hasn't been explicitly set\n // Use proper attribute retrieval (trac-12072)\n var tabindex = jQuery.find.attr(elem, \"tabindex\");\n if (tabindex) {\n return parseInt(tabindex, 10);\n }\n if (rfocusable.test(elem.nodeName) || rclickable.test(elem.nodeName) && elem.href) {\n return 0;\n }\n return -1;\n }\n }\n },\n propFix: {\n \"for\": \"htmlFor\",\n \"class\": \"className\"\n }\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\n if (!support.optSelected) {\n jQuery.propHooks.selected = {\n get: function (elem) {\n /* eslint no-unused-expressions: \"off\" */\n\n var parent = elem.parentNode;\n if (parent && parent.parentNode) {\n parent.parentNode.selectedIndex;\n }\n return null;\n },\n set: function (elem) {\n /* eslint no-unused-expressions: \"off\" */\n\n var parent = elem.parentNode;\n if (parent) {\n parent.selectedIndex;\n if (parent.parentNode) {\n parent.parentNode.selectedIndex;\n }\n }\n }\n };\n }\n jQuery.each([\"tabIndex\", \"readOnly\", \"maxLength\", \"cellSpacing\", \"cellPadding\", \"rowSpan\", \"colSpan\", \"useMap\", \"frameBorder\", \"contentEditable\"], function () {\n jQuery.propFix[this.toLowerCase()] = this;\n });\n});","define(function () {\n \"use strict\";\n\n return {\n guid: Date.now()\n };\n});","define(function () {\n \"use strict\";\n\n return /\\?/;\n});","define([\"../core\"], function (jQuery) {\n \"use strict\";\n\n // Cross-browser xml parsing\n jQuery.parseXML = function (data) {\n var xml, parserErrorElem;\n if (!data || typeof data !== \"string\") {\n return null;\n }\n\n // Support: IE 9 - 11 only\n // IE throws on parseFromString with invalid input.\n try {\n xml = new window.DOMParser().parseFromString(data, \"text/xml\");\n } catch (e) {}\n parserErrorElem = xml && xml.getElementsByTagName(\"parsererror\")[0];\n if (!xml || parserErrorElem) {\n jQuery.error(\"Invalid XML: \" + (parserErrorElem ? jQuery.map(parserErrorElem.childNodes, function (el) {\n return el.textContent;\n }).join(\"\\n\") : data));\n }\n return xml;\n };\n return jQuery.parseXML;\n});","define([\"../core\", \"../var/document\", \"../data/var/dataPriv\", \"../data/var/acceptData\", \"../var/hasOwn\", \"../var/isFunction\", \"../var/isWindow\", \"../event\"], function (jQuery, document, dataPriv, acceptData, hasOwn, isFunction, isWindow) {\n \"use strict\";\n\n var rfocusMorph = /^(?:focusinfocus|focusoutblur)$/,\n stopPropagationCallback = function (e) {\n e.stopPropagation();\n };\n jQuery.extend(jQuery.event, {\n trigger: function (event, data, elem, onlyHandlers) {\n var i,\n cur,\n tmp,\n bubbleType,\n ontype,\n handle,\n special,\n lastElement,\n eventPath = [elem || document],\n type = hasOwn.call(event, \"type\") ? event.type : event,\n namespaces = hasOwn.call(event, \"namespace\") ? event.namespace.split(\".\") : [];\n cur = lastElement = tmp = elem = elem || document;\n\n // Don't do events on text and comment nodes\n if (elem.nodeType === 3 || elem.nodeType === 8) {\n return;\n }\n\n // focus/blur morphs to focusin/out; ensure we're not firing them right now\n if (rfocusMorph.test(type + jQuery.event.triggered)) {\n return;\n }\n if (type.indexOf(\".\") > -1) {\n // Namespaced trigger; create a regexp to match event type in handle()\n namespaces = type.split(\".\");\n type = namespaces.shift();\n namespaces.sort();\n }\n ontype = type.indexOf(\":\") < 0 && \"on\" + type;\n\n // Caller can pass in a jQuery.Event object, Object, or just an event type string\n event = event[jQuery.expando] ? event : new jQuery.Event(type, typeof event === \"object\" && event);\n\n // Trigger bitmask: & 1 for native handlers; & 2 for jQuery (always true)\n event.isTrigger = onlyHandlers ? 2 : 3;\n event.namespace = namespaces.join(\".\");\n event.rnamespace = event.namespace ? new RegExp(\"(^|\\\\.)\" + namespaces.join(\"\\\\.(?:.*\\\\.|)\") + \"(\\\\.|$)\") : null;\n\n // Clean up the event in case it is being reused\n event.result = undefined;\n if (!event.target) {\n event.target = elem;\n }\n\n // Clone any incoming data and prepend the event, creating the handler arg list\n data = data == null ? [event] : jQuery.makeArray(data, [event]);\n\n // Allow special events to draw outside the lines\n special = jQuery.event.special[type] || {};\n if (!onlyHandlers && special.trigger && special.trigger.apply(elem, data) === false) {\n return;\n }\n\n // Determine event propagation path in advance, per W3C events spec (trac-9951)\n // Bubble up to document, then to window; watch for a global ownerDocument var (trac-9724)\n if (!onlyHandlers && !special.noBubble && !isWindow(elem)) {\n bubbleType = special.delegateType || type;\n if (!rfocusMorph.test(bubbleType + type)) {\n cur = cur.parentNode;\n }\n for (; cur; cur = cur.parentNode) {\n eventPath.push(cur);\n tmp = cur;\n }\n\n // Only add window if we got to document (e.g., not plain obj or detached DOM)\n if (tmp === (elem.ownerDocument || document)) {\n eventPath.push(tmp.defaultView || tmp.parentWindow || window);\n }\n }\n\n // Fire handlers on the event path\n i = 0;\n while ((cur = eventPath[i++]) && !event.isPropagationStopped()) {\n lastElement = cur;\n event.type = i > 1 ? bubbleType : special.bindType || type;\n\n // jQuery handler\n handle = (dataPriv.get(cur, \"events\") || Object.create(null))[event.type] && dataPriv.get(cur, \"handle\");\n if (handle) {\n handle.apply(cur, data);\n }\n\n // Native handler\n handle = ontype && cur[ontype];\n if (handle && handle.apply && acceptData(cur)) {\n event.result = handle.apply(cur, data);\n if (event.result === false) {\n event.preventDefault();\n }\n }\n }\n event.type = type;\n\n // If nobody prevented the default action, do it now\n if (!onlyHandlers && !event.isDefaultPrevented()) {\n if ((!special._default || special._default.apply(eventPath.pop(), data) === false) && acceptData(elem)) {\n // Call a native DOM method on the target with the same name as the event.\n // Don't do default actions on window, that's where global variables be (trac-6170)\n if (ontype && isFunction(elem[type]) && !isWindow(elem)) {\n // Don't re-trigger an onFOO event when we call its FOO() method\n tmp = elem[ontype];\n if (tmp) {\n elem[ontype] = null;\n }\n\n // Prevent re-triggering of the same event, since we already bubbled it above\n jQuery.event.triggered = type;\n if (event.isPropagationStopped()) {\n lastElement.addEventListener(type, stopPropagationCallback);\n }\n elem[type]();\n if (event.isPropagationStopped()) {\n lastElement.removeEventListener(type, stopPropagationCallback);\n }\n jQuery.event.triggered = undefined;\n if (tmp) {\n elem[ontype] = tmp;\n }\n }\n }\n }\n return event.result;\n },\n // Piggyback on a donor event to simulate a different one\n // Used only for `focus(in | out)` events\n simulate: function (type, elem, event) {\n var e = jQuery.extend(new jQuery.Event(), event, {\n type: type,\n isSimulated: true\n });\n jQuery.event.trigger(e, null, elem);\n }\n });\n jQuery.fn.extend({\n trigger: function (type, data) {\n return this.each(function () {\n jQuery.event.trigger(type, data, this);\n });\n },\n triggerHandler: function (type, data) {\n var elem = this[0];\n if (elem) {\n return jQuery.event.trigger(type, data, elem, true);\n }\n }\n });\n return jQuery;\n});","define([\"./core\", \"./core/toType\", \"./var/rcheckableType\", \"./var/isFunction\", \"./core/init\", \"./traversing\",\n// filter\n\"./attributes/prop\"], function (jQuery, toType, rcheckableType, isFunction) {\n \"use strict\";\n\n var rbracket = /\\[\\]$/,\n rCRLF = /\\r?\\n/g,\n rsubmitterTypes = /^(?:submit|button|image|reset|file)$/i,\n rsubmittable = /^(?:input|select|textarea|keygen)/i;\n function buildParams(prefix, obj, traditional, add) {\n var name;\n if (Array.isArray(obj)) {\n // Serialize array item.\n jQuery.each(obj, function (i, v) {\n if (traditional || rbracket.test(prefix)) {\n // Treat each array item as a scalar.\n add(prefix, v);\n } else {\n // Item is non-scalar (array or object), encode its numeric index.\n buildParams(prefix + \"[\" + (typeof v === \"object\" && v != null ? i : \"\") + \"]\", v, traditional, add);\n }\n });\n } else if (!traditional && toType(obj) === \"object\") {\n // Serialize object item.\n for (name in obj) {\n buildParams(prefix + \"[\" + name + \"]\", obj[name], traditional, add);\n }\n } else {\n // Serialize scalar item.\n add(prefix, obj);\n }\n }\n\n // Serialize an array of form elements or a set of\n // key/values into a query string\n jQuery.param = function (a, traditional) {\n var prefix,\n s = [],\n add = function (key, valueOrFunction) {\n // If value is a function, invoke it and use its return value\n var value = isFunction(valueOrFunction) ? valueOrFunction() : valueOrFunction;\n s[s.length] = encodeURIComponent(key) + \"=\" + encodeURIComponent(value == null ? \"\" : value);\n };\n if (a == null) {\n return \"\";\n }\n\n // If an array was passed in, assume that it is an array of form elements.\n if (Array.isArray(a) || a.jquery && !jQuery.isPlainObject(a)) {\n // Serialize the form elements\n jQuery.each(a, function () {\n add(this.name, this.value);\n });\n } else {\n // If traditional, encode the \"old\" way (the way 1.3.2 or older\n // did it), otherwise encode params recursively.\n for (prefix in a) {\n buildParams(prefix, a[prefix], traditional, add);\n }\n }\n\n // Return the resulting serialization\n return s.join(\"&\");\n };\n jQuery.fn.extend({\n serialize: function () {\n return jQuery.param(this.serializeArray());\n },\n serializeArray: function () {\n return this.map(function () {\n // Can add propHook for \"elements\" to filter or add form elements\n var elements = jQuery.prop(this, \"elements\");\n return elements ? jQuery.makeArray(elements) : this;\n }).filter(function () {\n var type = this.type;\n\n // Use .is( \":disabled\" ) so that fieldset[disabled] works\n return this.name && !jQuery(this).is(\":disabled\") && rsubmittable.test(this.nodeName) && !rsubmitterTypes.test(type) && (this.checked || !rcheckableType.test(type));\n }).map(function (_i, elem) {\n var val = jQuery(this).val();\n if (val == null) {\n return null;\n }\n if (Array.isArray(val)) {\n return jQuery.map(val, function (val) {\n return {\n name: elem.name,\n value: val.replace(rCRLF, \"\\r\\n\")\n };\n });\n }\n return {\n name: elem.name,\n value: val.replace(rCRLF, \"\\r\\n\")\n };\n }).get();\n }\n });\n return jQuery;\n});","define([\"../core\", \"../var/document\", \"./var/rsingleTag\", \"../manipulation/buildFragment\",\n// This is the only module that needs core/support\n\"./support\"], function (jQuery, document, rsingleTag, buildFragment, support) {\n \"use strict\";\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\n jQuery.parseHTML = function (data, context, keepScripts) {\n if (typeof data !== \"string\") {\n return [];\n }\n if (typeof context === \"boolean\") {\n keepScripts = context;\n context = false;\n }\n var base, parsed, scripts;\n if (!context) {\n // Stop scripts or inline event handlers from being executed immediately\n // by using document.implementation\n if (support.createHTMLDocument) {\n context = document.implementation.createHTMLDocument(\"\");\n\n // Set the base href for the created document\n // so any parsed elements with URLs\n // are based on the document's URL (gh-2965)\n base = context.createElement(\"base\");\n base.href = document.location.href;\n context.head.appendChild(base);\n } else {\n context = document;\n }\n }\n parsed = rsingleTag.exec(data);\n scripts = !keepScripts && [];\n\n // Single tag\n if (parsed) {\n return [context.createElement(parsed[1])];\n }\n parsed = buildFragment([data], context, scripts);\n if (scripts && scripts.length) {\n jQuery(scripts).remove();\n }\n return jQuery.merge([], parsed.childNodes);\n };\n return jQuery.parseHTML;\n});","define([\"./fnToString\"], function (fnToString) {\n \"use strict\";\n\n return fnToString.call(Object);\n});","define([\"./arr\"], function (arr) {\n \"use strict\";\n\n return arr.pop;\n});","define([\"./arr\"], function (arr) {\n \"use strict\";\n\n return arr.sort;\n});","define([\"./arr\"], function (arr) {\n \"use strict\";\n\n return arr.splice;\n});","define([\"../core\"], function (jQuery) {\n \"use strict\";\n\n // CSS string/identifier serialization\n // https://drafts.csswg.org/cssom/#common-serializing-idioms\n var rcssescape = /([\\0-\\x1f\\x7f]|^-?\\d)|^-$|[^\\x80-\\uFFFF\\w-]/g;\n function fcssescape(ch, asCodePoint) {\n if (asCodePoint) {\n // U+0000 NULL becomes U+FFFD REPLACEMENT CHARACTER\n if (ch === \"\\0\") {\n return \"\\uFFFD\";\n }\n\n // Control characters and (dependent upon position) numbers get escaped as code points\n return ch.slice(0, -1) + \"\\\\\" + ch.charCodeAt(ch.length - 1).toString(16) + \" \";\n }\n\n // Other potentially-special ASCII characters get backslash-escaped\n return \"\\\\\" + ch;\n }\n jQuery.escapeSelector = function (sel) {\n return (sel + \"\").replace(rcssescape, fcssescape);\n };\n});","define([\"../../core\"], function (jQuery) {\n \"use strict\";\n\n return function (elem, dir, until) {\n var matched = [],\n truncate = until !== undefined;\n while ((elem = elem[dir]) && elem.nodeType !== 9) {\n if (elem.nodeType === 1) {\n if (truncate && jQuery(elem).is(until)) {\n break;\n }\n matched.push(elem);\n }\n }\n return matched;\n };\n});","define(function () {\n \"use strict\";\n\n return function (n, elem) {\n var matched = [];\n for (; n; n = n.nextSibling) {\n if (n.nodeType === 1 && n !== elem) {\n matched.push(n);\n }\n }\n return matched;\n };\n});","define([\"../core\", \"../deferred\"], function (jQuery) {\n \"use strict\";\n\n // These usually indicate a programmer mistake during development,\n // warn about them ASAP rather than swallowing them by default.\n var 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.\n jQuery.Deferred.exceptionHook = function (error, asyncError) {\n // Support: IE 8 - 9 only\n // Console exists when dev tools are open, which can happen at any time\n if (window.console && window.console.warn && error && rerrorNames.test(error.name)) {\n window.console.warn(\"jQuery.Deferred exception: \" + error.message, error.stack, asyncError);\n }\n };\n});","define([\"../core\"], function (jQuery) {\n \"use strict\";\n\n jQuery.readyException = function (error) {\n window.setTimeout(function () {\n throw error;\n });\n };\n});","define([\"./core\", \"./core/access\", \"./core/camelCase\", \"./data/var/dataPriv\", \"./data/var/dataUser\"], function (jQuery, access, camelCase, dataPriv, dataUser) {\n \"use strict\";\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 var rbrace = /^(?:\\{[\\w\\W]*\\}|\\[[\\w\\W]*\\])$/,\n rmultiDash = /[A-Z]/g;\n function getData(data) {\n if (data === \"true\") {\n return true;\n }\n if (data === \"false\") {\n return false;\n }\n if (data === \"null\") {\n return null;\n }\n\n // Only convert to a number if it doesn't change the string\n if (data === +data + \"\") {\n return +data;\n }\n if (rbrace.test(data)) {\n return JSON.parse(data);\n }\n return data;\n }\n function dataAttr(elem, key, data) {\n var name;\n\n // If nothing was found internally, try to fetch any\n // data from the HTML5 data-* attribute\n if (data === undefined && elem.nodeType === 1) {\n name = \"data-\" + key.replace(rmultiDash, \"-$&\").toLowerCase();\n data = elem.getAttribute(name);\n if (typeof data === \"string\") {\n try {\n data = getData(data);\n } catch (e) {}\n\n // Make sure we set the data so it isn't changed later\n dataUser.set(elem, key, data);\n } else {\n data = undefined;\n }\n }\n return data;\n }\n jQuery.extend({\n hasData: function (elem) {\n return dataUser.hasData(elem) || dataPriv.hasData(elem);\n },\n data: function (elem, name, data) {\n return dataUser.access(elem, name, data);\n },\n removeData: function (elem, name) {\n dataUser.remove(elem, name);\n },\n // TODO: Now that all calls to _data and _removeData have been replaced\n // with direct calls to dataPriv methods, these can be deprecated.\n _data: function (elem, name, data) {\n return dataPriv.access(elem, name, data);\n },\n _removeData: function (elem, name) {\n dataPriv.remove(elem, name);\n }\n });\n jQuery.fn.extend({\n data: function (key, value) {\n var i,\n name,\n data,\n elem = this[0],\n attrs = elem && elem.attributes;\n\n // Gets all values\n if (key === undefined) {\n if (this.length) {\n data = dataUser.get(elem);\n if (elem.nodeType === 1 && !dataPriv.get(elem, \"hasDataAttrs\")) {\n i = attrs.length;\n while (i--) {\n // Support: IE 11 only\n // The attrs elements can be null (trac-14894)\n if (attrs[i]) {\n name = attrs[i].name;\n if (name.indexOf(\"data-\") === 0) {\n name = camelCase(name.slice(5));\n dataAttr(elem, name, data[name]);\n }\n }\n }\n dataPriv.set(elem, \"hasDataAttrs\", true);\n }\n }\n return data;\n }\n\n // Sets multiple values\n if (typeof key === \"object\") {\n return this.each(function () {\n dataUser.set(this, key);\n });\n }\n return access(this, function (value) {\n var data;\n\n // The calling jQuery object (element matches) is not empty\n // (and therefore has an element appears at this[ 0 ]) and the\n // `value` parameter was not undefined. An empty jQuery object\n // will result in `undefined` for elem = this[ 0 ] which will\n // throw an exception if an attempt to read a data cache is made.\n if (elem && value === undefined) {\n // Attempt to get data from the cache\n // The key will always be camelCased in Data\n data = dataUser.get(elem, key);\n if (data !== undefined) {\n return data;\n }\n\n // Attempt to \"discover\" the data in\n // HTML5 custom data-* attrs\n data = dataAttr(elem, key);\n if (data !== undefined) {\n return data;\n }\n\n // We tried really hard, but the data doesn't exist.\n return;\n }\n\n // Set the data...\n this.each(function () {\n // We always store the camelCased key\n dataUser.set(this, key, value);\n });\n }, null, value, arguments.length > 1, null, true);\n },\n removeData: function (key) {\n return this.each(function () {\n dataUser.remove(this, key);\n });\n }\n });\n return jQuery;\n});","define([\"../core\", \"../queue\", \"../effects\" // Delay is optional because of this dependency\n], function (jQuery) {\n \"use strict\";\n\n // Based off of the plugin by Clint Helfers, with permission.\n jQuery.fn.delay = function (time, type) {\n time = jQuery.fx ? jQuery.fx.speeds[time] || time : time;\n type = type || \"fx\";\n return this.queue(type, function (next, hooks) {\n var timeout = window.setTimeout(next, time);\n hooks.stop = function () {\n window.clearTimeout(timeout);\n };\n });\n };\n return jQuery.fn.delay;\n});","define([\"../core\", \"../data/var/dataPriv\", \"../css/var/isHiddenWithinTree\"], function (jQuery, dataPriv, isHiddenWithinTree) {\n \"use strict\";\n\n var defaultDisplayMap = {};\n function getDefaultDisplay(elem) {\n var temp,\n doc = elem.ownerDocument,\n nodeName = elem.nodeName,\n display = defaultDisplayMap[nodeName];\n if (display) {\n return display;\n }\n temp = doc.body.appendChild(doc.createElement(nodeName));\n display = jQuery.css(temp, \"display\");\n temp.parentNode.removeChild(temp);\n if (display === \"none\") {\n display = \"block\";\n }\n defaultDisplayMap[nodeName] = display;\n return display;\n }\n function showHide(elements, show) {\n var display,\n elem,\n values = [],\n index = 0,\n length = elements.length;\n\n // Determine new display value for elements that need to change\n for (; index < length; index++) {\n elem = elements[index];\n if (!elem.style) {\n continue;\n }\n display = elem.style.display;\n if (show) {\n // Since we force visibility upon cascade-hidden elements, an immediate (and slow)\n // check is required in this first loop unless we have a nonempty display value (either\n // inline or about-to-be-restored)\n if (display === \"none\") {\n values[index] = dataPriv.get(elem, \"display\") || null;\n if (!values[index]) {\n elem.style.display = \"\";\n }\n }\n if (elem.style.display === \"\" && isHiddenWithinTree(elem)) {\n values[index] = getDefaultDisplay(elem);\n }\n } else {\n if (display !== \"none\") {\n values[index] = \"none\";\n\n // Remember what we're overwriting\n dataPriv.set(elem, \"display\", display);\n }\n }\n }\n\n // Set the display of the elements in a second loop to avoid constant reflow\n for (index = 0; index < length; index++) {\n if (values[index] != null) {\n elements[index].style.display = values[index];\n }\n }\n return elements;\n }\n jQuery.fn.extend({\n show: function () {\n return showHide(this, true);\n },\n hide: function () {\n return showHide(this);\n },\n toggle: function (state) {\n if (typeof state === \"boolean\") {\n return state ? this.show() : this.hide();\n }\n return this.each(function () {\n if (isHiddenWithinTree(this)) {\n jQuery(this).show();\n } else {\n jQuery(this).hide();\n }\n });\n }\n });\n return showHide;\n});","define(function () {\n \"use strict\";\n\n // A method for quickly swapping in/out CSS properties to get correct calculations.\n return function (elem, options, callback) {\n var ret,\n name,\n old = {};\n\n // Remember the old values, and insert the new ones\n for (name in options) {\n old[name] = elem.style[name];\n elem.style[name] = options[name];\n }\n ret = callback.call(elem);\n\n // Revert the old values\n for (name in options) {\n elem.style[name] = old[name];\n }\n return ret;\n };\n});","define([\"./cssExpand\"], function (cssExpand) {\n \"use strict\";\n\n return new RegExp(cssExpand.join(\"|\"), \"i\");\n});","define([\"../core\", \"../css/finalPropName\", \"../css\"], function (jQuery, finalPropName) {\n \"use strict\";\n\n function Tween(elem, options, prop, end, easing) {\n return new Tween.prototype.init(elem, options, prop, end, easing);\n }\n jQuery.Tween = Tween;\n Tween.prototype = {\n constructor: Tween,\n init: function (elem, options, prop, end, easing, unit) {\n this.elem = elem;\n this.prop = prop;\n this.easing = easing || jQuery.easing._default;\n this.options = options;\n this.start = this.now = this.cur();\n this.end = end;\n this.unit = unit || (jQuery.cssNumber[prop] ? \"\" : \"px\");\n },\n cur: function () {\n var hooks = Tween.propHooks[this.prop];\n return hooks && hooks.get ? hooks.get(this) : Tween.propHooks._default.get(this);\n },\n run: function (percent) {\n var eased,\n hooks = Tween.propHooks[this.prop];\n if (this.options.duration) {\n this.pos = eased = jQuery.easing[this.easing](percent, this.options.duration * percent, 0, 1, this.options.duration);\n } else {\n this.pos = eased = percent;\n }\n this.now = (this.end - this.start) * eased + this.start;\n if (this.options.step) {\n this.options.step.call(this.elem, this.now, this);\n }\n if (hooks && hooks.set) {\n hooks.set(this);\n } else {\n Tween.propHooks._default.set(this);\n }\n return this;\n }\n };\n Tween.prototype.init.prototype = Tween.prototype;\n Tween.propHooks = {\n _default: {\n get: function (tween) {\n var result;\n\n // Use a property on the element directly when it is not a DOM element,\n // or when there is no matching style property that exists.\n if (tween.elem.nodeType !== 1 || tween.elem[tween.prop] != null && tween.elem.style[tween.prop] == null) {\n return tween.elem[tween.prop];\n }\n\n // Passing an empty string as a 3rd parameter to .css will automatically\n // attempt a parseFloat and fallback to a string if the parse fails.\n // Simple values such as \"10px\" are parsed to Float;\n // complex values such as \"rotate(1rad)\" are returned as-is.\n result = jQuery.css(tween.elem, tween.prop, \"\");\n\n // Empty strings, null, undefined and \"auto\" are converted to 0.\n return !result || result === \"auto\" ? 0 : result;\n },\n set: function (tween) {\n // Use step hook for back compat.\n // Use cssHook if its there.\n // Use .style if available and use plain properties where available.\n if (jQuery.fx.step[tween.prop]) {\n jQuery.fx.step[tween.prop](tween);\n } else if (tween.elem.nodeType === 1 && (jQuery.cssHooks[tween.prop] || tween.elem.style[finalPropName(tween.prop)] != null)) {\n jQuery.style(tween.elem, tween.prop, tween.now + tween.unit);\n } else {\n tween.elem[tween.prop] = tween.now;\n }\n }\n }\n };\n\n // Support: IE <=9 only\n // Panic based approach to setting things on disconnected nodes\n Tween.propHooks.scrollTop = Tween.propHooks.scrollLeft = {\n set: function (tween) {\n if (tween.elem.nodeType && tween.elem.parentNode) {\n tween.elem[tween.prop] = tween.now;\n }\n }\n };\n jQuery.easing = {\n linear: function (p) {\n return p;\n },\n swing: function (p) {\n return 0.5 - Math.cos(p * Math.PI) / 2;\n },\n _default: \"swing\"\n };\n jQuery.fx = Tween.prototype.init;\n\n // Back compat <1.8 extension point\n jQuery.fx.step = {};\n});","define([\"./core\", \"./attributes/attr\", \"./attributes/prop\", \"./attributes/classes\", \"./attributes/val\"], function (jQuery) {\n \"use strict\";\n\n // Return jQuery for attributes-only inclusion\n return jQuery;\n});","define([\"../core\", \"../core/access\", \"../core/nodeName\", \"./support\", \"../var/rnothtmlwhite\", \"../selector\"], function (jQuery, access, nodeName, support, rnothtmlwhite) {\n \"use strict\";\n\n var boolHook,\n attrHandle = jQuery.expr.attrHandle;\n jQuery.fn.extend({\n attr: function (name, value) {\n return access(this, jQuery.attr, name, value, arguments.length > 1);\n },\n removeAttr: function (name) {\n return this.each(function () {\n jQuery.removeAttr(this, name);\n });\n }\n });\n jQuery.extend({\n attr: function (elem, name, value) {\n var ret,\n hooks,\n nType = elem.nodeType;\n\n // Don't get/set attributes on text, comment and attribute nodes\n if (nType === 3 || nType === 8 || nType === 2) {\n return;\n }\n\n // Fallback to prop when attributes are not supported\n if (typeof elem.getAttribute === \"undefined\") {\n return jQuery.prop(elem, name, value);\n }\n\n // Attribute hooks are determined by the lowercase version\n // Grab necessary hook if one is defined\n if (nType !== 1 || !jQuery.isXMLDoc(elem)) {\n hooks = jQuery.attrHooks[name.toLowerCase()] || (jQuery.expr.match.bool.test(name) ? boolHook : undefined);\n }\n if (value !== undefined) {\n if (value === null) {\n jQuery.removeAttr(elem, name);\n return;\n }\n if (hooks && \"set\" in hooks && (ret = hooks.set(elem, value, name)) !== undefined) {\n return ret;\n }\n elem.setAttribute(name, value + \"\");\n return value;\n }\n if (hooks && \"get\" in hooks && (ret = hooks.get(elem, name)) !== null) {\n return ret;\n }\n ret = jQuery.find.attr(elem, name);\n\n // Non-existent attributes return null, we normalize to undefined\n return ret == null ? undefined : ret;\n },\n attrHooks: {\n type: {\n set: function (elem, value) {\n if (!support.radioValue && value === \"radio\" && nodeName(elem, \"input\")) {\n var val = elem.value;\n elem.setAttribute(\"type\", value);\n if (val) {\n elem.value = val;\n }\n return value;\n }\n }\n }\n },\n removeAttr: function (elem, value) {\n var name,\n i = 0,\n // Attribute names can contain non-HTML whitespace characters\n // https://html.spec.whatwg.org/multipage/syntax.html#attributes-2\n attrNames = value && value.match(rnothtmlwhite);\n if (attrNames && elem.nodeType === 1) {\n while (name = attrNames[i++]) {\n elem.removeAttribute(name);\n }\n }\n }\n });\n\n // Hooks for boolean attributes\n boolHook = {\n set: function (elem, value, name) {\n if (value === false) {\n // Remove boolean attributes when set to false\n jQuery.removeAttr(elem, name);\n } else {\n elem.setAttribute(name, name);\n }\n return name;\n }\n };\n jQuery.each(jQuery.expr.match.bool.source.match(/\\w+/g), function (_i, name) {\n var getter = attrHandle[name] || jQuery.find.attr;\n attrHandle[name] = function (elem, name, isXML) {\n var ret,\n handle,\n lowercaseName = name.toLowerCase();\n if (!isXML) {\n // Avoid an infinite loop by temporarily removing this function from the getter\n handle = attrHandle[lowercaseName];\n attrHandle[lowercaseName] = ret;\n ret = getter(elem, name, isXML) != null ? lowercaseName : null;\n attrHandle[lowercaseName] = handle;\n }\n return ret;\n };\n });\n});","define([\"../core\", \"../core/stripAndCollapse\", \"../var/isFunction\", \"../var/rnothtmlwhite\", \"../data/var/dataPriv\", \"../core/init\"], function (jQuery, stripAndCollapse, isFunction, rnothtmlwhite, dataPriv) {\n \"use strict\";\n\n function getClass(elem) {\n return elem.getAttribute && elem.getAttribute(\"class\") || \"\";\n }\n function classesToArray(value) {\n if (Array.isArray(value)) {\n return value;\n }\n if (typeof value === \"string\") {\n return value.match(rnothtmlwhite) || [];\n }\n return [];\n }\n jQuery.fn.extend({\n addClass: function (value) {\n var classNames, cur, curValue, className, i, finalValue;\n if (isFunction(value)) {\n return this.each(function (j) {\n jQuery(this).addClass(value.call(this, j, getClass(this)));\n });\n }\n classNames = classesToArray(value);\n if (classNames.length) {\n return this.each(function () {\n curValue = getClass(this);\n cur = this.nodeType === 1 && \" \" + stripAndCollapse(curValue) + \" \";\n if (cur) {\n for (i = 0; i < classNames.length; i++) {\n className = classNames[i];\n if (cur.indexOf(\" \" + className + \" \") < 0) {\n cur += className + \" \";\n }\n }\n\n // Only assign if different to avoid unneeded rendering.\n finalValue = stripAndCollapse(cur);\n if (curValue !== finalValue) {\n this.setAttribute(\"class\", finalValue);\n }\n }\n });\n }\n return this;\n },\n removeClass: function (value) {\n var classNames, cur, curValue, className, i, finalValue;\n if (isFunction(value)) {\n return this.each(function (j) {\n jQuery(this).removeClass(value.call(this, j, getClass(this)));\n });\n }\n if (!arguments.length) {\n return this.attr(\"class\", \"\");\n }\n classNames = classesToArray(value);\n if (classNames.length) {\n return this.each(function () {\n curValue = getClass(this);\n\n // This expression is here for better compressibility (see addClass)\n cur = this.nodeType === 1 && \" \" + stripAndCollapse(curValue) + \" \";\n if (cur) {\n for (i = 0; i < classNames.length; i++) {\n className = classNames[i];\n\n // Remove *all* instances\n while (cur.indexOf(\" \" + className + \" \") > -1) {\n cur = cur.replace(\" \" + className + \" \", \" \");\n }\n }\n\n // Only assign if different to avoid unneeded rendering.\n finalValue = stripAndCollapse(cur);\n if (curValue !== finalValue) {\n this.setAttribute(\"class\", finalValue);\n }\n }\n });\n }\n return this;\n },\n toggleClass: function (value, stateVal) {\n var classNames,\n className,\n i,\n self,\n type = typeof value,\n isValidValue = type === \"string\" || Array.isArray(value);\n if (isFunction(value)) {\n return this.each(function (i) {\n jQuery(this).toggleClass(value.call(this, i, getClass(this), stateVal), stateVal);\n });\n }\n if (typeof stateVal === \"boolean\" && isValidValue) {\n return stateVal ? this.addClass(value) : this.removeClass(value);\n }\n classNames = classesToArray(value);\n return this.each(function () {\n if (isValidValue) {\n // Toggle individual class names\n self = jQuery(this);\n for (i = 0; i < classNames.length; i++) {\n className = classNames[i];\n\n // Check each className given, space separated list\n if (self.hasClass(className)) {\n self.removeClass(className);\n } else {\n self.addClass(className);\n }\n }\n\n // Toggle whole class name\n } else if (value === undefined || type === \"boolean\") {\n className = getClass(this);\n if (className) {\n // Store className if set\n dataPriv.set(this, \"__className__\", className);\n }\n\n // If the element has a class name or if we're passed `false`,\n // then remove the whole classname (if there was one, the above saved it).\n // Otherwise bring back whatever was previously saved (if anything),\n // falling back to the empty string if nothing was stored.\n if (this.setAttribute) {\n this.setAttribute(\"class\", className || value === false ? \"\" : dataPriv.get(this, \"__className__\") || \"\");\n }\n }\n });\n },\n hasClass: function (selector) {\n var className,\n elem,\n i = 0;\n className = \" \" + selector + \" \";\n while (elem = this[i++]) {\n if (elem.nodeType === 1 && (\" \" + stripAndCollapse(getClass(elem)) + \" \").indexOf(className) > -1) {\n return true;\n }\n }\n return false;\n }\n });\n});","define([\"../core\", \"../core/stripAndCollapse\", \"./support\", \"../core/nodeName\", \"../var/isFunction\", \"../core/init\"], function (jQuery, stripAndCollapse, support, nodeName, isFunction) {\n \"use strict\";\n\n var rreturn = /\\r/g;\n jQuery.fn.extend({\n val: function (value) {\n var hooks,\n ret,\n valueIsFunction,\n elem = this[0];\n if (!arguments.length) {\n if (elem) {\n hooks = jQuery.valHooks[elem.type] || jQuery.valHooks[elem.nodeName.toLowerCase()];\n if (hooks && \"get\" in hooks && (ret = hooks.get(elem, \"value\")) !== undefined) {\n return ret;\n }\n ret = elem.value;\n\n // Handle most common string cases\n if (typeof ret === \"string\") {\n return ret.replace(rreturn, \"\");\n }\n\n // Handle cases where value is null/undef or number\n return ret == null ? \"\" : ret;\n }\n return;\n }\n valueIsFunction = isFunction(value);\n return this.each(function (i) {\n var val;\n if (this.nodeType !== 1) {\n return;\n }\n if (valueIsFunction) {\n val = value.call(this, i, jQuery(this).val());\n } else {\n val = value;\n }\n\n // Treat null/undefined as \"\"; convert numbers to string\n if (val == null) {\n val = \"\";\n } else if (typeof val === \"number\") {\n val += \"\";\n } else if (Array.isArray(val)) {\n val = jQuery.map(val, function (value) {\n return value == null ? \"\" : value + \"\";\n });\n }\n hooks = jQuery.valHooks[this.type] || jQuery.valHooks[this.nodeName.toLowerCase()];\n\n // If set returns undefined, fall back to normal setting\n if (!hooks || !(\"set\" in hooks) || hooks.set(this, val, \"value\") === undefined) {\n this.value = val;\n }\n });\n }\n });\n jQuery.extend({\n valHooks: {\n option: {\n get: function (elem) {\n var val = jQuery.find.attr(elem, \"value\");\n return val != null ? val :\n // Support: IE <=10 - 11 only\n // option.text throws exceptions (trac-14686, trac-14858)\n // Strip and collapse whitespace\n // https://html.spec.whatwg.org/#strip-and-collapse-whitespace\n stripAndCollapse(jQuery.text(elem));\n }\n },\n select: {\n get: function (elem) {\n var value,\n option,\n i,\n options = elem.options,\n index = elem.selectedIndex,\n one = elem.type === \"select-one\",\n values = one ? null : [],\n max = one ? index + 1 : options.length;\n if (index < 0) {\n i = max;\n } else {\n i = one ? index : 0;\n }\n\n // Loop through all the selected options\n for (; i < max; i++) {\n option = options[i];\n\n // Support: IE <=9 only\n // IE8-9 doesn't update selected after form reset (trac-2551)\n if ((option.selected || i === index) &&\n // Don't return options that are disabled or in a disabled optgroup\n !option.disabled && (!option.parentNode.disabled || !nodeName(option.parentNode, \"optgroup\"))) {\n // Get the specific value for the option\n value = jQuery(option).val();\n\n // We don't need an array for one selects\n if (one) {\n return value;\n }\n\n // Multi-Selects return an array\n values.push(value);\n }\n }\n return values;\n },\n set: function (elem, value) {\n var optionSet,\n option,\n options = elem.options,\n values = jQuery.makeArray(value),\n i = options.length;\n while (i--) {\n option = options[i];\n\n /* eslint-disable no-cond-assign */\n\n if (option.selected = jQuery.inArray(jQuery.valHooks.option.get(option), values) > -1) {\n optionSet = true;\n }\n\n /* eslint-enable no-cond-assign */\n }\n\n // Force browsers to behave consistently when non-matching value is set\n if (!optionSet) {\n elem.selectedIndex = -1;\n }\n return values;\n }\n }\n }\n });\n\n // Radios and checkboxes getter/setter\n jQuery.each([\"radio\", \"checkbox\"], function () {\n jQuery.valHooks[this] = {\n set: function (elem, value) {\n if (Array.isArray(value)) {\n return elem.checked = jQuery.inArray(jQuery(elem).val(), value) > -1;\n }\n }\n };\n if (!support.checkOn) {\n jQuery.valHooks[this].get = function (elem) {\n return elem.getAttribute(\"value\") === null ? \"on\" : elem.value;\n };\n }\n });\n});","define([\"../ajax\"], function (jQuery) {\n \"use strict\";\n\n jQuery._evalUrl = function (url, options, doc) {\n return jQuery.ajax({\n url: url,\n // Make this explicit, since user can override this through ajaxSetup (trac-11264)\n type: \"GET\",\n dataType: \"script\",\n cache: true,\n async: false,\n global: false,\n // Only evaluate the response if it is successful (gh-4126)\n // dataFilter is not invoked for failure responses, so using it instead\n // of the default converter is kludgy but it works.\n converters: {\n \"text script\": function () {}\n },\n dataFilter: function (response) {\n jQuery.globalEval(response, options, doc);\n }\n });\n };\n return jQuery._evalUrl;\n});","define(function () {\n \"use strict\";\n\n return window.location;\n});","define([\"./core\", \"./var/isFunction\", \"./core/init\", \"./manipulation\",\n// clone\n\"./traversing\" // parent, contents\n], function (jQuery, isFunction) {\n \"use strict\";\n\n jQuery.fn.extend({\n wrapAll: function (html) {\n var wrap;\n if (this[0]) {\n if (isFunction(html)) {\n html = html.call(this[0]);\n }\n\n // The elements to wrap the target around\n wrap = jQuery(html, this[0].ownerDocument).eq(0).clone(true);\n if (this[0].parentNode) {\n wrap.insertBefore(this[0]);\n }\n wrap.map(function () {\n var elem = this;\n while (elem.firstElementChild) {\n elem = elem.firstElementChild;\n }\n return elem;\n }).append(this);\n }\n return this;\n },\n wrapInner: function (html) {\n if (isFunction(html)) {\n return this.each(function (i) {\n jQuery(this).wrapInner(html.call(this, i));\n });\n }\n return this.each(function () {\n var self = jQuery(this),\n contents = self.contents();\n if (contents.length) {\n contents.wrapAll(html);\n } else {\n self.append(html);\n }\n });\n },\n wrap: function (html) {\n var htmlIsFunction = isFunction(html);\n return this.each(function (i) {\n jQuery(this).wrapAll(htmlIsFunction ? html.call(this, i) : html);\n });\n },\n unwrap: function (selector) {\n this.parent(selector).not(\"body\").each(function () {\n jQuery(this).replaceWith(this.childNodes);\n });\n return this;\n }\n });\n return jQuery;\n});","define([\"../core\", \"../selector\"], function (jQuery) {\n \"use strict\";\n\n jQuery.expr.pseudos.hidden = function (elem) {\n return !jQuery.expr.pseudos.visible(elem);\n };\n jQuery.expr.pseudos.visible = function (elem) {\n return !!(elem.offsetWidth || elem.offsetHeight || elem.getClientRects().length);\n };\n});","define([\"../core\", \"../var/support\", \"../ajax\"], function (jQuery, support) {\n \"use strict\";\n\n jQuery.ajaxSettings.xhr = function () {\n try {\n return new window.XMLHttpRequest();\n } catch (e) {}\n };\n var xhrSuccessStatus = {\n // File protocol always yields status code 0, assume 200\n 0: 200,\n // Support: IE <=9 only\n // trac-1450: sometimes IE returns 1223 when it should be 204\n 1223: 204\n },\n xhrSupported = jQuery.ajaxSettings.xhr();\n support.cors = !!xhrSupported && \"withCredentials\" in xhrSupported;\n support.ajax = xhrSupported = !!xhrSupported;\n jQuery.ajaxTransport(function (options) {\n var callback, errorCallback;\n\n // Cross domain only allowed if supported through XMLHttpRequest\n if (support.cors || xhrSupported && !options.crossDomain) {\n return {\n send: function (headers, complete) {\n var i,\n xhr = options.xhr();\n xhr.open(options.type, options.url, options.async, options.username, options.password);\n\n // Apply custom fields if provided\n if (options.xhrFields) {\n for (i in options.xhrFields) {\n xhr[i] = options.xhrFields[i];\n }\n }\n\n // Override mime type if needed\n if (options.mimeType && xhr.overrideMimeType) {\n xhr.overrideMimeType(options.mimeType);\n }\n\n // X-Requested-With header\n // For cross-domain requests, seeing as conditions for a preflight are\n // akin to a jigsaw puzzle, we simply never set it to be sure.\n // (it can always be set on a per-request basis or even using ajaxSetup)\n // For same-domain requests, won't change header if already provided.\n if (!options.crossDomain && !headers[\"X-Requested-With\"]) {\n headers[\"X-Requested-With\"] = \"XMLHttpRequest\";\n }\n\n // Set headers\n for (i in headers) {\n xhr.setRequestHeader(i, headers[i]);\n }\n\n // Callback\n callback = function (type) {\n return function () {\n if (callback) {\n callback = errorCallback = xhr.onload = xhr.onerror = xhr.onabort = xhr.ontimeout = xhr.onreadystatechange = null;\n if (type === \"abort\") {\n xhr.abort();\n } else if (type === \"error\") {\n // Support: IE <=9 only\n // On a manual native abort, IE9 throws\n // errors on any property access that is not readyState\n if (typeof xhr.status !== \"number\") {\n complete(0, \"error\");\n } else {\n complete(\n // File: protocol always yields status 0; see trac-8605, trac-14207\n xhr.status, xhr.statusText);\n }\n } else {\n complete(xhrSuccessStatus[xhr.status] || xhr.status, xhr.statusText,\n // Support: IE <=9 only\n // IE9 has no XHR2 but throws on binary (trac-11426)\n // For XHR2 non-text, let the caller handle it (gh-2498)\n (xhr.responseType || \"text\") !== \"text\" || typeof xhr.responseText !== \"string\" ? {\n binary: xhr.response\n } : {\n text: xhr.responseText\n }, xhr.getAllResponseHeaders());\n }\n }\n };\n };\n\n // Listen to events\n xhr.onload = callback();\n errorCallback = xhr.onerror = xhr.ontimeout = callback(\"error\");\n\n // Support: IE 9 only\n // Use onreadystatechange to replace onabort\n // to handle uncaught aborts\n if (xhr.onabort !== undefined) {\n xhr.onabort = errorCallback;\n } else {\n xhr.onreadystatechange = function () {\n // Check readyState before timeout as it changes\n if (xhr.readyState === 4) {\n // Allow onerror to be called first,\n // but that will not handle a native abort\n // Also, save errorCallback to a variable\n // as xhr.onerror cannot be accessed\n window.setTimeout(function () {\n if (callback) {\n errorCallback();\n }\n });\n }\n };\n }\n\n // Create the abort callback\n callback = callback(\"abort\");\n try {\n // Do send the request (this may raise an exception)\n xhr.send(options.hasContent && options.data || null);\n } catch (e) {\n // trac-14683: Only rethrow if this hasn't been notified as an error yet\n if (callback) {\n throw e;\n }\n }\n },\n abort: function () {\n if (callback) {\n callback();\n }\n }\n };\n }\n });\n});","define([\"../core\", \"../var/document\", \"../ajax\"], function (jQuery, document) {\n \"use strict\";\n\n // Prevent auto-execution of scripts when no explicit dataType was provided (See gh-2432)\n jQuery.ajaxPrefilter(function (s) {\n if (s.crossDomain) {\n s.contents.script = false;\n }\n });\n\n // Install script dataType\n jQuery.ajaxSetup({\n accepts: {\n script: \"text/javascript, application/javascript, \" + \"application/ecmascript, application/x-ecmascript\"\n },\n contents: {\n script: /\\b(?:java|ecma)script\\b/\n },\n converters: {\n \"text script\": function (text) {\n jQuery.globalEval(text);\n return text;\n }\n }\n });\n\n // Handle cache's special case and crossDomain\n jQuery.ajaxPrefilter(\"script\", function (s) {\n if (s.cache === undefined) {\n s.cache = false;\n }\n if (s.crossDomain) {\n s.type = \"GET\";\n }\n });\n\n // Bind script tag hack transport\n jQuery.ajaxTransport(\"script\", function (s) {\n // This transport only deals with cross domain or forced-by-attrs requests\n if (s.crossDomain || s.scriptAttrs) {\n var script, callback;\n return {\n send: function (_, complete) {\n script = jQuery(\"<script>\").attr(s.scriptAttrs || {}).prop({\n charset: s.scriptCharset,\n src: s.url\n }).on(\"load error\", callback = function (evt) {\n script.remove();\n callback = null;\n if (evt) {\n complete(evt.type === \"error\" ? 404 : 200, evt.type);\n }\n });\n\n // Use native DOM manipulation to avoid our domManip AJAX trickery\n document.head.appendChild(script[0]);\n },\n abort: function () {\n if (callback) {\n callback();\n }\n }\n };\n }\n });\n});","define([\"../core\", \"../var/isFunction\", \"./var/nonce\", \"./var/rquery\", \"../ajax\"], function (jQuery, isFunction, nonce, rquery) {\n \"use strict\";\n\n var oldCallbacks = [],\n rjsonp = /(=)\\?(?=&|$)|\\?\\?/;\n\n // Default jsonp settings\n jQuery.ajaxSetup({\n jsonp: \"callback\",\n jsonpCallback: function () {\n var callback = oldCallbacks.pop() || jQuery.expando + \"_\" + nonce.guid++;\n this[callback] = true;\n return callback;\n }\n });\n\n // Detect, normalize options and install callbacks for jsonp requests\n jQuery.ajaxPrefilter(\"json jsonp\", function (s, originalSettings, jqXHR) {\n var callbackName,\n overwritten,\n responseContainer,\n jsonProp = s.jsonp !== false && (rjsonp.test(s.url) ? \"url\" : typeof s.data === \"string\" && (s.contentType || \"\").indexOf(\"application/x-www-form-urlencoded\") === 0 && rjsonp.test(s.data) && \"data\");\n\n // Handle iff the expected data type is \"jsonp\" or we have a parameter to set\n if (jsonProp || s.dataTypes[0] === \"jsonp\") {\n // Get callback name, remembering preexisting value associated with it\n callbackName = s.jsonpCallback = isFunction(s.jsonpCallback) ? s.jsonpCallback() : s.jsonpCallback;\n\n // Insert callback into url or form data\n if (jsonProp) {\n s[jsonProp] = s[jsonProp].replace(rjsonp, \"$1\" + callbackName);\n } else if (s.jsonp !== false) {\n s.url += (rquery.test(s.url) ? \"&\" : \"?\") + s.jsonp + \"=\" + callbackName;\n }\n\n // Use data converter to retrieve json after script execution\n s.converters[\"script json\"] = function () {\n if (!responseContainer) {\n jQuery.error(callbackName + \" was not called\");\n }\n return responseContainer[0];\n };\n\n // Force json dataType\n s.dataTypes[0] = \"json\";\n\n // Install callback\n overwritten = window[callbackName];\n window[callbackName] = function () {\n responseContainer = arguments;\n };\n\n // Clean-up function (fires after converters)\n jqXHR.always(function () {\n // If previous value didn't exist - remove it\n if (overwritten === undefined) {\n jQuery(window).removeProp(callbackName);\n\n // Otherwise restore preexisting value\n } else {\n window[callbackName] = overwritten;\n }\n\n // Save back as free\n if (s[callbackName]) {\n // Make sure that re-using the options doesn't screw things around\n s.jsonpCallback = originalSettings.jsonpCallback;\n\n // Save the callback name for future use\n oldCallbacks.push(callbackName);\n }\n\n // Call if it was a function and we have a response\n if (responseContainer && isFunction(overwritten)) {\n overwritten(responseContainer[0]);\n }\n responseContainer = overwritten = undefined;\n });\n\n // Delegate to script\n return \"script\";\n }\n });\n});","define([\"../core\", \"../core/stripAndCollapse\", \"../var/isFunction\", \"../core/parseHTML\", \"../ajax\", \"../traversing\", \"../manipulation\", \"../selector\"], function (jQuery, stripAndCollapse, isFunction) {\n \"use strict\";\n\n /**\n * Load a url into a page\n */\n jQuery.fn.load = function (url, params, callback) {\n var selector,\n type,\n response,\n self = this,\n off = url.indexOf(\" \");\n if (off > -1) {\n selector = stripAndCollapse(url.slice(off));\n url = url.slice(0, off);\n }\n\n // If it's a function\n if (isFunction(params)) {\n // We assume that it's the callback\n callback = params;\n params = undefined;\n\n // Otherwise, build a param string\n } else if (params && typeof params === \"object\") {\n type = \"POST\";\n }\n\n // If we have elements to modify, make the request\n if (self.length > 0) {\n jQuery.ajax({\n url: url,\n // If \"type\" variable is undefined, then \"GET\" method will be used.\n // Make value of this field explicit since\n // user can override it through ajaxSetup method\n type: type || \"GET\",\n dataType: \"html\",\n data: params\n }).done(function (responseText) {\n // Save response for use in complete callback\n response = arguments;\n self.html(selector ?\n // If a selector was specified, locate the right elements in a dummy div\n // Exclude scripts to avoid IE 'Permission Denied' errors\n jQuery(\"<div>\").append(jQuery.parseHTML(responseText)).find(selector) :\n // Otherwise use the full result\n responseText);\n\n // If the request succeeds, this function gets \"data\", \"status\", \"jqXHR\"\n // but they are ignored because response was set above.\n // If it fails, this function gets \"jqXHR\", \"status\", \"error\"\n }).always(callback && function (jqXHR, status) {\n self.each(function () {\n callback.apply(this, response || [jqXHR.responseText, status, jqXHR]);\n });\n });\n }\n return this;\n };\n});","define([\"../var/document\", \"../var/support\"], function (document, support) {\n \"use strict\";\n\n // Support: Safari 8 only\n // In Safari 8 documents created via document.implementation.createHTMLDocument\n // collapse sibling forms: the second one becomes a child of the first one.\n // Because of that, this security measure has to be disabled in Safari 8.\n // https://bugs.webkit.org/show_bug.cgi?id=137337\n support.createHTMLDocument = function () {\n var body = document.implementation.createHTMLDocument(\"\").body;\n body.innerHTML = \"<form></form><form></form>\";\n return body.childNodes.length === 2;\n }();\n return support;\n});","define([\"../core\", \"../selector\", \"../effects\"], function (jQuery) {\n \"use strict\";\n\n jQuery.expr.pseudos.animated = function (elem) {\n return jQuery.grep(jQuery.timers, function (fn) {\n return elem === fn.elem;\n }).length;\n };\n});","define([\"./core\", \"./core/access\", \"./var/documentElement\", \"./var/isFunction\", \"./css/var/rnumnonpx\", \"./css/curCSS\", \"./css/addGetHookIf\", \"./css/support\", \"./var/isWindow\", \"./core/init\", \"./css\", \"./selector\" // contains\n], function (jQuery, access, documentElement, isFunction, rnumnonpx, curCSS, addGetHookIf, support, isWindow) {\n \"use strict\";\n\n jQuery.offset = {\n setOffset: function (elem, options, i) {\n var curPosition,\n curLeft,\n curCSSTop,\n curTop,\n curOffset,\n curCSSLeft,\n calculatePosition,\n position = jQuery.css(elem, \"position\"),\n curElem = jQuery(elem),\n props = {};\n\n // Set position first, in-case top/left are set even on static elem\n if (position === \"static\") {\n elem.style.position = \"relative\";\n }\n curOffset = curElem.offset();\n curCSSTop = jQuery.css(elem, \"top\");\n curCSSLeft = jQuery.css(elem, \"left\");\n calculatePosition = (position === \"absolute\" || position === \"fixed\") && (curCSSTop + curCSSLeft).indexOf(\"auto\") > -1;\n\n // Need to be able to calculate position if either\n // top or left is auto and position is either absolute or fixed\n if (calculatePosition) {\n curPosition = curElem.position();\n curTop = curPosition.top;\n curLeft = curPosition.left;\n } else {\n curTop = parseFloat(curCSSTop) || 0;\n curLeft = parseFloat(curCSSLeft) || 0;\n }\n if (isFunction(options)) {\n // Use jQuery.extend here to allow modification of coordinates argument (gh-1848)\n options = options.call(elem, i, jQuery.extend({}, curOffset));\n }\n if (options.top != null) {\n props.top = options.top - curOffset.top + curTop;\n }\n if (options.left != null) {\n props.left = options.left - curOffset.left + curLeft;\n }\n if (\"using\" in options) {\n options.using.call(elem, props);\n } else {\n curElem.css(props);\n }\n }\n };\n jQuery.fn.extend({\n // offset() relates an element's border box to the document origin\n offset: function (options) {\n // Preserve chaining for setter\n if (arguments.length) {\n return options === undefined ? this : this.each(function (i) {\n jQuery.offset.setOffset(this, options, i);\n });\n }\n var rect,\n win,\n elem = this[0];\n if (!elem) {\n return;\n }\n\n // Return zeros for disconnected and hidden (display: none) elements (gh-2310)\n // Support: IE <=11 only\n // Running getBoundingClientRect on a\n // disconnected node in IE throws an error\n if (!elem.getClientRects().length) {\n return {\n top: 0,\n left: 0\n };\n }\n\n // Get document-relative position by adding viewport scroll to viewport-relative gBCR\n rect = elem.getBoundingClientRect();\n win = elem.ownerDocument.defaultView;\n return {\n top: rect.top + win.pageYOffset,\n left: rect.left + win.pageXOffset\n };\n },\n // position() relates an element's margin box to its offset parent's padding box\n // This corresponds to the behavior of CSS absolute positioning\n position: function () {\n if (!this[0]) {\n return;\n }\n var offsetParent,\n offset,\n doc,\n elem = this[0],\n parentOffset = {\n top: 0,\n left: 0\n };\n\n // position:fixed elements are offset from the viewport, which itself always has zero offset\n if (jQuery.css(elem, \"position\") === \"fixed\") {\n // Assume position:fixed implies availability of getBoundingClientRect\n offset = elem.getBoundingClientRect();\n } else {\n offset = this.offset();\n\n // Account for the *real* offset parent, which can be the document or its root element\n // when a statically positioned element is identified\n doc = elem.ownerDocument;\n offsetParent = elem.offsetParent || doc.documentElement;\n while (offsetParent && (offsetParent === doc.body || offsetParent === doc.documentElement) && jQuery.css(offsetParent, \"position\") === \"static\") {\n offsetParent = offsetParent.parentNode;\n }\n if (offsetParent && offsetParent !== elem && offsetParent.nodeType === 1) {\n // Incorporate borders into its offset, since they are outside its content origin\n parentOffset = jQuery(offsetParent).offset();\n parentOffset.top += jQuery.css(offsetParent, \"borderTopWidth\", true);\n parentOffset.left += jQuery.css(offsetParent, \"borderLeftWidth\", true);\n }\n }\n\n // Subtract parent offsets and element margins\n return {\n top: offset.top - parentOffset.top - jQuery.css(elem, \"marginTop\", true),\n left: offset.left - parentOffset.left - jQuery.css(elem, \"marginLeft\", true)\n };\n },\n // This method will return documentElement in the following cases:\n // 1) For the element inside the iframe without offsetParent, this method will return\n // documentElement of the parent window\n // 2) For the hidden or detached element\n // 3) For body or html element, i.e. in case of the html node - it will return itself\n //\n // but those exceptions were never presented as a real life use-cases\n // and might be considered as more preferable results.\n //\n // This logic, however, is not guaranteed and can change at any point in the future\n offsetParent: function () {\n return this.map(function () {\n var offsetParent = this.offsetParent;\n while (offsetParent && jQuery.css(offsetParent, \"position\") === \"static\") {\n offsetParent = offsetParent.offsetParent;\n }\n return offsetParent || documentElement;\n });\n }\n });\n\n // Create scrollLeft and scrollTop methods\n jQuery.each({\n scrollLeft: \"pageXOffset\",\n scrollTop: \"pageYOffset\"\n }, function (method, prop) {\n var top = \"pageYOffset\" === prop;\n jQuery.fn[method] = function (val) {\n return access(this, function (elem, method, val) {\n // Coalesce documents and windows\n var win;\n if (isWindow(elem)) {\n win = elem;\n } else if (elem.nodeType === 9) {\n win = elem.defaultView;\n }\n if (val === undefined) {\n return win ? win[prop] : elem[method];\n }\n if (win) {\n win.scrollTo(!top ? val : win.pageXOffset, top ? val : win.pageYOffset);\n } else {\n elem[method] = val;\n }\n }, method, val, arguments.length);\n };\n });\n\n // Support: Safari <=7 - 9.1, Chrome <=37 - 49\n // Add the top/left cssHooks using jQuery.fn.position\n // Webkit bug: https://bugs.webkit.org/show_bug.cgi?id=29084\n // Blink bug: https://bugs.chromium.org/p/chromium/issues/detail?id=589347\n // getComputedStyle returns percent when specified for top/left/bottom/right;\n // rather than make the css module depend on the offset module, just check for it here\n jQuery.each([\"top\", \"left\"], function (_i, prop) {\n jQuery.cssHooks[prop] = addGetHookIf(support.pixelPosition, function (elem, computed) {\n if (computed) {\n computed = curCSS(elem, prop);\n\n // If curCSS returns percentage, fallback to offset\n return rnumnonpx.test(computed) ? jQuery(elem).position()[prop] + \"px\" : computed;\n }\n });\n });\n return jQuery;\n});","define([\"./core\", \"./core/access\", \"./var/isWindow\", \"./css\"], function (jQuery, access, isWindow) {\n \"use strict\";\n\n // Create innerHeight, innerWidth, height, width, outerHeight and outerWidth methods\n jQuery.each({\n Height: \"height\",\n Width: \"width\"\n }, function (name, type) {\n jQuery.each({\n padding: \"inner\" + name,\n content: type,\n \"\": \"outer\" + name\n }, function (defaultExtra, funcName) {\n // Margin is only for outerHeight, outerWidth\n jQuery.fn[funcName] = function (margin, value) {\n var chainable = arguments.length && (defaultExtra || typeof margin !== \"boolean\"),\n extra = defaultExtra || (margin === true || value === true ? \"margin\" : \"border\");\n return access(this, function (elem, type, value) {\n var doc;\n if (isWindow(elem)) {\n // $( window ).outerWidth/Height return w/h including scrollbars (gh-1729)\n return funcName.indexOf(\"outer\") === 0 ? elem[\"inner\" + name] : elem.document.documentElement[\"client\" + name];\n }\n\n // Get document width or height\n if (elem.nodeType === 9) {\n doc = elem.documentElement;\n\n // Either scroll[Width/Height] or offset[Width/Height] or client[Width/Height],\n // whichever is greatest\n return Math.max(elem.body[\"scroll\" + name], doc[\"scroll\" + name], elem.body[\"offset\" + name], doc[\"offset\" + name], doc[\"client\" + name]);\n }\n return value === undefined ?\n // Get width or height on the element, requesting but not forcing parseFloat\n jQuery.css(elem, type, extra) :\n // Set width or height on the element\n jQuery.style(elem, type, value, extra);\n }, type, chainable ? margin : undefined, chainable);\n };\n });\n });\n return jQuery;\n});","define([\"./core\", \"./core/nodeName\", \"./core/camelCase\", \"./core/toType\", \"./var/isFunction\", \"./var/isWindow\", \"./var/slice\", \"./deprecated/ajax-event-alias\", \"./deprecated/event\"], function (jQuery, nodeName, camelCase, toType, isFunction, isWindow, slice) {\n \"use strict\";\n\n // Support: Android <=4.0 only\n // Make sure we trim BOM and NBSP\n // Require that the \"whitespace run\" starts from a non-whitespace\n // to avoid O(N^2) behavior when the engine would try matching \"\\s+$\" at each space position.\n var 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\n jQuery.proxy = function (fn, context) {\n var tmp, args, proxy;\n if (typeof context === \"string\") {\n tmp = fn[context];\n context = fn;\n fn = tmp;\n }\n\n // Quick check to determine if target is callable, in the spec\n // this throws a TypeError, but we will just return undefined.\n if (!isFunction(fn)) {\n return undefined;\n }\n\n // Simulated bind\n args = slice.call(arguments, 2);\n proxy = function () {\n return fn.apply(context || this, args.concat(slice.call(arguments)));\n };\n\n // Set the guid of unique handler to the same of original handler, so it can be removed\n proxy.guid = fn.guid = fn.guid || jQuery.guid++;\n return proxy;\n };\n jQuery.holdReady = function (hold) {\n if (hold) {\n jQuery.readyWait++;\n } else {\n jQuery.ready(true);\n }\n };\n jQuery.isArray = Array.isArray;\n jQuery.parseJSON = JSON.parse;\n jQuery.nodeName = nodeName;\n jQuery.isFunction = isFunction;\n jQuery.isWindow = isWindow;\n jQuery.camelCase = camelCase;\n jQuery.type = toType;\n jQuery.now = Date.now;\n jQuery.isNumeric = function (obj) {\n // As of jQuery 3.0, isNumeric is limited to\n // strings and numbers (primitives or objects)\n // that can be coerced to finite numbers (gh-2662)\n var type = jQuery.type(obj);\n return (type === \"number\" || type === \"string\") &&\n // parseFloat NaNs numeric-cast false positives (\"\")\n // ...but misinterprets leading-number strings, particularly hex literals (\"0x...\")\n // subtraction forces infinities to NaN\n !isNaN(obj - parseFloat(obj));\n };\n jQuery.trim = function (text) {\n return text == null ? \"\" : (text + \"\").replace(rtrim, \"$1\");\n };\n});","define([\"../core\", \"../ajax\", \"../event\"], function (jQuery) {\n \"use strict\";\n\n jQuery.each([\"ajaxStart\", \"ajaxStop\", \"ajaxComplete\", \"ajaxError\", \"ajaxSuccess\", \"ajaxSend\"], function (_i, type) {\n jQuery.fn[type] = function (fn) {\n return this.on(type, fn);\n };\n });\n});","define([\"../core\", \"../event\", \"../event/trigger\"], function (jQuery) {\n \"use strict\";\n\n jQuery.fn.extend({\n bind: function (types, data, fn) {\n return this.on(types, null, data, fn);\n },\n unbind: function (types, fn) {\n return this.off(types, null, fn);\n },\n delegate: function (selector, types, data, fn) {\n return this.on(types, selector, data, fn);\n },\n undelegate: function (selector, types, fn) {\n // ( namespace ) or ( selector, types [, fn] )\n return arguments.length === 1 ? this.off(selector, \"**\") : this.off(types, selector || \"**\", fn);\n },\n hover: function (fnOver, fnOut) {\n return this.on(\"mouseenter\", fnOver).on(\"mouseleave\", fnOut || fnOver);\n }\n });\n jQuery.each((\"blur focus focusin focusout resize scroll click dblclick \" + \"mousedown mouseup mousemove mouseover mouseout mouseenter mouseleave \" + \"change select submit keydown keypress keyup contextmenu\").split(\" \"), function (_i, name) {\n // Handle event binding\n jQuery.fn[name] = function (data, fn) {\n return arguments.length > 0 ? this.on(name, null, data, fn) : this.trigger(name);\n };\n });\n});","define([\"../core\"], function (jQuery) {\n \"use strict\";\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 if (typeof define === \"function\" && define.amd) {\n define(\"jquery\", [], function () {\n return jQuery;\n });\n }\n});","define([\"../core\"], function (jQuery) {\n \"use strict\";\n\n var\n // Map over jQuery in case of overwrite\n _jQuery = window.jQuery,\n // Map over the $ in case of overwrite\n _$ = window.$;\n jQuery.noConflict = function (deep) {\n if (window.$ === jQuery) {\n window.$ = _$;\n }\n if (deep && window.jQuery === jQuery) {\n window.jQuery = _jQuery;\n }\n return 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)\n if (typeof noGlobal === \"undefined\") {\n window.jQuery = window.$ = jQuery;\n }\n});","function Loader(settings) {\n const target = settings.target || null;\n const contextual = settings.contextual;\n\n return {\n on: () => stopLoader(target),\n off: () => startLoader(target, contextual)\n }\n}\n\nexport function startLoader(container, contextual = false) {\n const loader = getLoader(container);\n\n if (loader) {\n activate(loader, contextual)\n } else {\n createLoader(container, contextual);\n }\n}\n\nexport function stopLoader(container) {\n const loader = getLoader(container);\n\n if (loader === null) return;\n loader.classList.remove('is-active');\n}\n\nfunction getLoader(target) {\n const origin = target || document.querySelector('body');\n return origin.querySelector('[data-loader]');\n}\n\nfunction activate(loader, contextual = false) {\n if (loader.classList.contains('Loader')) {\n loader.classList.add('is-active');\n } else if (contextual) {\n loader.classList.add('Loader','is-active', 'is-contextual');\n } else {\n loader.classList.add('Loader','is-active');\n }\n}\n\nfunction createLoader(target, contextual = false) {\n const loader = document.createElement('div');\n const spinner = createSpinner();\n const destination = target || document.querySelector('body');\n\n loader.setAttribute('data-loader', '');\n loader.classList.add('Loader','is-active');\n if (contextual) loader.classList.add('is-contextual');\n destination.prepend(loader);\n loader.append(spinner);\n}\n\nfunction createSpinner() {\n const url = 'http://www.w3.org/2000/svg';\n const svg = document.createElementNS(url, 'svg');\n const circle = document.createElementNS(url, 'circle');\n\n svg.setAttribute('viewBox', '0 0 50 50');\n svg.classList.add('spinner');\n circle.setAttribute('cx', '25');\n circle.setAttribute('cy', '25');\n circle.setAttribute('r','20');\n circle.setAttribute('fill', 'none');\n circle.setAttribute('stroke-width', '5');\n circle.classList.add('path');\n svg.appendChild(circle);\n\n return svg;\n}\n\nexport default Loader","export default function (url) {\n const storePath = document.querySelector('meta[name=\"sc-path\"]');\n if (storePath) {\n const storePathContent = storePath.content;\n\n if (storePathContent) {\n return `/${storePathContent}${url}`;\n }\n }\n return url;\n}\n","const BREAKPOINTS = [\n {id: 0, name: 'base'},\n {id: 1, name: 'small'},\n {id: 2, name: 'medium'},\n {id: 3, name: 'large'},\n {id: 4, name: 'xlarge'},\n {id: 5, name: 'huge'}\n]\n\nexport const smallAndUp = () => returnBreakpoint() >= 1\n\nexport const mediumAndUp = () => returnBreakpoint() > 1\n\nexport const largeAndUp = () => returnBreakpoint() > 2\n\nexport const xlargeAndUp = () => returnBreakpoint() > 3\n\nexport const hugeAndUp = () => returnBreakpoint() > 4\n\n\nfunction returnBreakpoint() {\n let breakpoint\n\n if (document.querySelector('[data-breakpoint]') === null) {\n createBreakpointElements()\n }\n\n for (var i = 0; i < BREAKPOINTS.length; i++) {\n const elem = document.querySelector(`[data-breakpoint=\"${ BREAKPOINTS[i].id }\"]`)\n\n if (elem && isVisible(elem)) {\n breakpoint = BREAKPOINTS[i]\n break\n }\n }\n\n return breakpoint.id\n}\n\nfunction createBreakpointElements() {\n BREAKPOINTS.map(breakpoint => {\n const elem = document.createElement(\"div\")\n\n elem.setAttribute('data-breakpoint', breakpoint.id)\n document.querySelector('body').append(elem)\n });\n}\n\nfunction isVisible(element) {\n return window.getComputedStyle(element).display !== 'none'\n}\n","module.exports = function (module) {\n if (!module.webpackPolyfill) {\n module.deprecate = function () {};\n module.paths = [];\n // module.parent = undefined by default\n if (!module.children) module.children = [];\n Object.defineProperty(module, \"loaded\", {\n enumerable: true,\n get: function () {\n return module.l;\n }\n });\n Object.defineProperty(module, \"id\", {\n enumerable: true,\n get: function () {\n return module.i;\n }\n });\n module.webpackPolyfill = 1;\n }\n return module;\n};","//! moment.js locale configuration\n//! locale : Afrikaans [af]\n//! author : Werner Mollentze : https://github.com/wernerm\n\n;\n(function (global, factory) {\n typeof exports === 'object' && typeof module !== 'undefined' && typeof require === 'function' ? factory(require('../moment')) : typeof define === 'function' && define.amd ? define(['../moment'], factory) : factory(global.moment);\n})(this, function (moment) {\n 'use strict';\n\n //! moment.js locale configuration\n var af = moment.defineLocale('af', {\n months: 'Januarie_Februarie_Maart_April_Mei_Junie_Julie_Augustus_September_Oktober_November_Desember'.split('_'),\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 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 number + (number === 1 || number === 8 || number >= 20 ? 'ste' : 'de'); // Thanks to Joris Röling : https://github.com/jjupiter\n },\n week: {\n dow: 1,\n // 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 return af;\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;\n(function (global, factory) {\n typeof exports === 'object' && typeof module !== 'undefined' && typeof require === 'function' ? factory(require('../moment')) : typeof define === 'function' && define.amd ? define(['../moment'], factory) : factory(global.moment);\n})(this, function (moment) {\n 'use strict';\n\n //! moment.js locale configuration\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 ? 0 : n === 1 ? 1 : n === 2 ? 2 : n % 100 >= 3 && n % 100 <= 10 ? 3 : n % 100 >= 11 ? 4 : 5;\n },\n plurals = {\n s: ['أقل من ثانية', 'ثانية واØدة', ['ثانيتان', 'ثانيتين'], '%d ثوان', '%d ثانية', '%d ثانية'],\n m: ['أقل من دقيقة', 'دقيقة واØدة', ['دقيقتان', 'دقيقتين'], '%d دقائق', '%d دقيقة', '%d دقيقة'],\n h: ['أقل من ساعة', 'ساعة واØدة', ['ساعتان', 'ساعتين'], '%d ساعات', '%d ساعة', '%d ساعة'],\n d: ['أقل من يوم', 'يوم واØد', ['يومان', 'يومين'], '%d أيام', '%d يومًا', '%d يوم'],\n M: ['أقل من شهر', 'شهر واØد', ['شهران', 'شهرين'], '%d أشهر', '%d شهرا', '%d شهر'],\n y: ['أقل من عام', 'عام واØد', ['عامان', 'عامين'], '%d أعوام', '%d عامًا', '%d عام']\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 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.replace(/[١٢٣٤٥٦٧٨٩٠]/g, function (match) {\n return numberMap[match];\n }).replace(/ØŒ/g, ',');\n },\n postformat: function (string) {\n return string.replace(/\\d/g, function (match) {\n return symbolMap[match];\n }).replace(/,/g, 'ØŒ');\n },\n week: {\n dow: 6,\n // 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 return ar;\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;\n(function (global, factory) {\n typeof exports === 'object' && typeof module !== 'undefined' && typeof require === 'function' ? factory(require('../moment')) : typeof define === 'function' && define.amd ? define(['../moment'], factory) : factory(global.moment);\n})(this, function (moment) {\n 'use strict';\n\n //! moment.js locale configuration\n var pluralForm = function (n) {\n return n === 0 ? 0 : n === 1 ? 1 : n === 2 ? 2 : n % 100 >= 3 && n % 100 <= 10 ? 3 : n % 100 >= 11 ? 4 : 5;\n },\n plurals = {\n s: ['أقل من ثانية', 'ثانية واØدة', ['ثانيتان', 'ثانيتين'], '%d ثوان', '%d ثانية', '%d ثانية'],\n m: ['أقل من دقيقة', 'دقيقة واØدة', ['دقيقتان', 'دقيقتين'], '%d دقائق', '%d دقيقة', '%d دقيقة'],\n h: ['أقل من ساعة', 'ساعة واØدة', ['ساعتان', 'ساعتين'], '%d ساعات', '%d ساعة', '%d ساعة'],\n d: ['أقل من يوم', 'يوم واØد', ['يومان', 'يومين'], '%d أيام', '%d يومًا', '%d يوم'],\n M: ['أقل من شهر', 'شهر واØد', ['شهران', 'شهرين'], '%d أشهر', '%d شهرا', '%d شهر'],\n y: ['أقل من عام', 'عام واØد', ['عامان', 'عامين'], '%d أعوام', '%d عامًا', '%d عام']\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 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,\n // 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 return arDz;\n});","//! moment.js locale configuration\n//! locale : Arabic (Kuwait) [ar-kw]\n//! author : Nusret Parlak: https://github.com/nusretparlak\n\n;\n(function (global, factory) {\n typeof exports === 'object' && typeof module !== 'undefined' && typeof require === 'function' ? factory(require('../moment')) : typeof define === 'function' && define.amd ? define(['../moment'], factory) : factory(global.moment);\n})(this, function (moment) {\n 'use strict';\n\n //! moment.js locale configuration\n var arKw = moment.defineLocale('ar-kw', {\n months: 'يناير_Ùبراير_مارس_أبريل_ماي_يونيو_يوليوز_غشت_شتنبر_أكتوبر_نونبر_دجنبر'.split('_'),\n monthsShort: 'يناير_Ùبراير_مارس_أبريل_ماي_يونيو_يوليوز_غشت_شتنبر_أكتوبر_نونبر_دجنبر'.split('_'),\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,\n // 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 return arKw;\n});","//! moment.js locale configuration\n//! locale : Arabic (Libya) [ar-ly]\n//! author : Ali Hmer: https://github.com/kikoanis\n\n;\n(function (global, factory) {\n typeof exports === 'object' && typeof module !== 'undefined' && typeof require === 'function' ? factory(require('../moment')) : typeof define === 'function' && define.amd ? define(['../moment'], factory) : factory(global.moment);\n})(this, function (moment) {\n 'use strict';\n\n //! moment.js locale configuration\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 ? 0 : n === 1 ? 1 : n === 2 ? 2 : n % 100 >= 3 && n % 100 <= 10 ? 3 : n % 100 >= 11 ? 4 : 5;\n },\n plurals = {\n s: ['أقل من ثانية', 'ثانية واØدة', ['ثانيتان', 'ثانيتين'], '%d ثوان', '%d ثانية', '%d ثانية'],\n m: ['أقل من دقيقة', 'دقيقة واØدة', ['دقيقتان', 'دقيقتين'], '%d دقائق', '%d دقيقة', '%d دقيقة'],\n h: ['أقل من ساعة', 'ساعة واØدة', ['ساعتان', 'ساعتين'], '%d ساعات', '%d ساعة', '%d ساعة'],\n d: ['أقل من يوم', 'يوم واØد', ['يومان', 'يومين'], '%d أيام', '%d يومًا', '%d يوم'],\n M: ['أقل من شهر', 'شهر واØد', ['شهران', 'شهرين'], '%d أشهر', '%d شهرا', '%d شهر'],\n y: ['أقل من عام', 'عام واØد', ['عامان', 'عامين'], '%d أعوام', '%d عامًا', '%d عام']\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 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.replace(/\\d/g, function (match) {\n return symbolMap[match];\n }).replace(/,/g, 'ØŒ');\n },\n week: {\n dow: 6,\n // 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 return arLy;\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;\n(function (global, factory) {\n typeof exports === 'object' && typeof module !== 'undefined' && typeof require === 'function' ? factory(require('../moment')) : typeof define === 'function' && define.amd ? define(['../moment'], factory) : factory(global.moment);\n})(this, function (moment) {\n 'use strict';\n\n //! moment.js locale configuration\n var arMa = moment.defineLocale('ar-ma', {\n months: 'يناير_Ùبراير_مارس_أبريل_ماي_يونيو_يوليوز_غشت_شتنبر_أكتوبر_نونبر_دجنبر'.split('_'),\n monthsShort: 'يناير_Ùبراير_مارس_أبريل_ماي_يونيو_يوليوز_غشت_شتنبر_أكتوبر_نونبر_دجنبر'.split('_'),\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,\n // 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 return arMa;\n});","//! moment.js locale configuration\n//! locale : Arabic (Palestine) [ar-ps]\n//! author : Majd Al-Shihabi : https://github.com/majdal\n\n;\n(function (global, factory) {\n typeof exports === 'object' && typeof module !== 'undefined' && typeof require === 'function' ? factory(require('../moment')) : typeof define === 'function' && define.amd ? define(['../moment'], factory) : factory(global.moment);\n})(this, function (moment) {\n 'use strict';\n\n //! moment.js locale configuration\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 var arPs = moment.defineLocale('ar-ps', {\n months: 'كانون الثاني_شباط_آذار_نيسان_أيّار_Øزيران_تمّوز_آب_أيلول_تشري الأوّل_تشرين الثاني_كانون الأوّل'.split('_'),\n monthsShort: 'ك٢_شباط_آذار_نيسان_أيّار_Øزيران_تمّوز_آب_أيلول_ت١_ت٢_ك١'.split('_'),\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.replace(/[٣٤٥٦٧٨٩٠]/g, function (match) {\n return numberMap[match];\n }).split('') // reversed since negative lookbehind not supported everywhere\n .reverse().join('').replace(/[١٢](?![\\u062a\\u0643])/g, function (match) {\n return numberMap[match];\n }).split('').reverse().join('').replace(/ØŒ/g, ',');\n },\n postformat: function (string) {\n return string.replace(/\\d/g, function (match) {\n return symbolMap[match];\n }).replace(/,/g, 'ØŒ');\n },\n week: {\n dow: 0,\n // 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 return arPs;\n});","//! moment.js locale configuration\n//! locale : Arabic (Saudi Arabia) [ar-sa]\n//! author : Suhail Alkowaileet : https://github.com/xsoh\n\n;\n(function (global, factory) {\n typeof exports === 'object' && typeof module !== 'undefined' && typeof require === 'function' ? factory(require('../moment')) : typeof define === 'function' && define.amd ? define(['../moment'], factory) : factory(global.moment);\n})(this, function (moment) {\n 'use strict';\n\n //! moment.js locale configuration\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 var arSa = moment.defineLocale('ar-sa', {\n months: 'يناير_Ùبراير_مارس_أبريل_مايو_يونيو_يوليو_أغسطس_سبتمبر_أكتوبر_نوÙمبر_ديسمبر'.split('_'),\n monthsShort: 'يناير_Ùبراير_مارس_أبريل_مايو_يونيو_يوليو_أغسطس_سبتمبر_أكتوبر_نوÙمبر_ديسمبر'.split('_'),\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.replace(/[١٢٣٤٥٦٧٨٩٠]/g, function (match) {\n return numberMap[match];\n }).replace(/ØŒ/g, ',');\n },\n postformat: function (string) {\n return string.replace(/\\d/g, function (match) {\n return symbolMap[match];\n }).replace(/,/g, 'ØŒ');\n },\n week: {\n dow: 0,\n // 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 return arSa;\n});","//! moment.js locale configuration\n//! locale : Arabic (Tunisia) [ar-tn]\n//! author : Nader Toukabri : https://github.com/naderio\n\n;\n(function (global, factory) {\n typeof exports === 'object' && typeof module !== 'undefined' && typeof require === 'function' ? factory(require('../moment')) : typeof define === 'function' && define.amd ? define(['../moment'], factory) : factory(global.moment);\n})(this, function (moment) {\n 'use strict';\n\n //! moment.js locale configuration\n var arTn = moment.defineLocale('ar-tn', {\n months: 'جانÙÙŠ_ÙÙŠÙري_مارس_Ø£Ùريل_ماي_جوان_جويلية_أوت_سبتمبر_أكتوبر_نوÙمبر_ديسمبر'.split('_'),\n monthsShort: 'جانÙÙŠ_ÙÙŠÙري_مارس_Ø£Ùريل_ماي_جوان_جويلية_أوت_سبتمبر_أكتوبر_نوÙمبر_ديسمبر'.split('_'),\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,\n // 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 return arTn;\n});","//! moment.js locale configuration\n//! locale : Azerbaijani [az]\n//! author : topchiyev : https://github.com/topchiyev\n\n;\n(function (global, factory) {\n typeof exports === 'object' && typeof module !== 'undefined' && typeof require === 'function' ? factory(require('../moment')) : typeof define === 'function' && define.amd ? define(['../moment'], factory) : factory(global.moment);\n})(this, function (moment) {\n 'use strict';\n\n //! moment.js locale configuration\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 var az = moment.defineLocale('az', {\n months: 'yanvar_fevral_mart_aprel_may_iyun_iyul_avqust_sentyabr_oktyabr_noyabr_dekabr'.split('_'),\n monthsShort: 'yan_fev_mar_apr_may_iyn_iyl_avq_sen_okt_noy_dek'.split('_'),\n weekdays: 'Bazar_Bazar ertÉ™si_ÇərÅŸÉ™nbÉ™ axÅŸamı_ÇərÅŸÉ™nbÉ™_CümÉ™ axÅŸamı_CümÉ™_ŞənbÉ™'.split('_'),\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,\n // 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 return az;\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;\n(function (global, factory) {\n typeof exports === 'object' && typeof module !== 'undefined' && typeof require === 'function' ? factory(require('../moment')) : typeof define === 'function' && define.amd ? define(['../moment'], factory) : factory(global.moment);\n})(this, function (moment) {\n 'use strict';\n\n //! moment.js locale configuration\n function plural(word, num) {\n var forms = word.split('_');\n return num % 10 === 1 && num % 100 !== 11 ? forms[0] : num % 10 >= 2 && num % 10 <= 4 && (num % 100 < 10 || num % 100 >= 20) ? forms[1] : 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 var be = moment.defineLocale('be', {\n months: {\n format: 'ÑтудзенÑ_лютага_Ñакавіка_краÑавіка_траўнÑ_чÑрвенÑ_ліпенÑ_жніўнÑ_вераÑнÑ_каÑтрычніка_ліÑтапада_ÑнежнÑ'.split('_'),\n standalone: 'Ñтудзень_люты_Ñакавік_краÑавік_травень_чÑрвень_ліпень_жнівень_вераÑень_каÑтрычнік_ліÑтапад_Ñнежань'.split('_')\n },\n monthsShort: 'Ñтуд_лют_Ñак_краÑ_трав_чÑрв_ліп_жнів_вер_каÑÑ‚_ліÑÑ‚_Ñнеж'.split('_'),\n weekdays: {\n format: 'нÑдзелю_панÑдзелак_аўторак_Ñераду_чацвер_пÑтніцу_Ñуботу'.split('_'),\n standalone: 'нÑдзелÑ_панÑдзелак_аўторак_Ñерада_чацвер_пÑтніца_Ñубота'.split('_'),\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) && number % 100 !== 12 && number % 100 !== 13 ? number + '-Ñ–' : number + '-Ñ‹';\n case 'D':\n return number + '-га';\n default:\n return number;\n }\n },\n week: {\n dow: 1,\n // 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 return be;\n});","//! moment.js locale configuration\n//! locale : Bulgarian [bg]\n//! author : Krasen Borisov : https://github.com/kraz\n\n;\n(function (global, factory) {\n typeof exports === 'object' && typeof module !== 'undefined' && typeof require === 'function' ? factory(require('../moment')) : typeof define === 'function' && define.amd ? define(['../moment'], factory) : factory(global.moment);\n})(this, function (moment) {\n 'use strict';\n\n //! moment.js locale configuration\n var bg = moment.defineLocale('bg', {\n months: 'Ñнуари_февруари_март_април_май_юни_юли_авгуÑÑ‚_Ñептември_октомври_ноември_декември'.split('_'),\n monthsShort: 'Ñну_фев_мар_апр_май_юни_юли_авг_Ñеп_окт_ное_дек'.split('_'),\n weekdays: 'неделÑ_понеделник_вторник_ÑÑ€Ñда_четвъртък_петък_Ñъбота'.split('_'),\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,\n // 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 return bg;\n});","//! moment.js locale configuration\n//! locale : Bambara [bm]\n//! author : Estelle Comment : https://github.com/estellecomment\n\n;\n(function (global, factory) {\n typeof exports === 'object' && typeof module !== 'undefined' && typeof require === 'function' ? factory(require('../moment')) : typeof define === 'function' && define.amd ? define(['../moment'], factory) : factory(global.moment);\n})(this, function (moment) {\n 'use strict';\n\n //! moment.js locale configuration\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 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,\n // 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 return bm;\n});","//! moment.js locale configuration\n//! locale : Bengali [bn]\n//! author : Kaushik Gandhi : https://github.com/kaushikgandhi\n\n;\n(function (global, factory) {\n typeof exports === 'object' && typeof module !== 'undefined' && typeof require === 'function' ? factory(require('../moment')) : typeof define === 'function' && define.amd ? define(['../moment'], factory) : factory(global.moment);\n})(this, function (moment) {\n 'use strict';\n\n //! moment.js locale configuration\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 var bn = moment.defineLocale('bn', {\n months: 'জানà§à§Ÿà¦¾à¦°à¦¿_ফেবà§à¦°à§à§Ÿà¦¾à¦°à¦¿_মারà§à¦š_à¦à¦ªà§à¦°à¦¿à¦²_মে_জà§à¦¨_জà§à¦²à¦¾à¦‡_আগসà§à¦Ÿ_সেপà§à¦Ÿà§‡à¦®à§à¦¬à¦°_অকà§à¦Ÿà§‹à¦¬à¦°_নà¦à§‡à¦®à§à¦¬à¦°_ডিসেমà§à¦¬à¦°'.split('_'),\n monthsShort: 'জানà§_ফেবà§à¦°à§_মারà§à¦š_à¦à¦ªà§à¦°à¦¿à¦²_মে_জà§à¦¨_জà§à¦²à¦¾à¦‡_আগসà§à¦Ÿ_সেপà§à¦Ÿ_অকà§à¦Ÿà§‹_নà¦à§‡_ডিসে'.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 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 === 'রাত' && hour >= 4 || meridiem === 'দà§à¦ªà§à¦°' && hour < 5 || meridiem === 'বিকাল') {\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,\n // 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 return bn;\n});","//! moment.js locale configuration\n//! locale : Bengali (Bangladesh) [bn-bd]\n//! author : Asraf Hossain Patoary : https://github.com/ashwoolford\n\n;\n(function (global, factory) {\n typeof exports === 'object' && typeof module !== 'undefined' && typeof require === 'function' ? factory(require('../moment')) : typeof define === 'function' && define.amd ? define(['../moment'], factory) : factory(global.moment);\n})(this, function (moment) {\n 'use strict';\n\n //! moment.js locale configuration\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 var bnBd = moment.defineLocale('bn-bd', {\n months: 'জানà§à§Ÿà¦¾à¦°à¦¿_ফেবà§à¦°à§à§Ÿà¦¾à¦°à¦¿_মারà§à¦š_à¦à¦ªà§à¦°à¦¿à¦²_মে_জà§à¦¨_জà§à¦²à¦¾à¦‡_আগসà§à¦Ÿ_সেপà§à¦Ÿà§‡à¦®à§à¦¬à¦°_অকà§à¦Ÿà§‹à¦¬à¦°_নà¦à§‡à¦®à§à¦¬à¦°_ডিসেমà§à¦¬à¦°'.split('_'),\n monthsShort: 'জানà§_ফেবà§à¦°à§_মারà§à¦š_à¦à¦ªà§à¦°à¦¿à¦²_মে_জà§à¦¨_জà§à¦²à¦¾à¦‡_আগসà§à¦Ÿ_সেপà§à¦Ÿ_অকà§à¦Ÿà§‹_নà¦à§‡_ডিসে'.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 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;\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 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,\n // 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 return bnBd;\n});","//! moment.js locale configuration\n//! locale : Tibetan [bo]\n//! author : Thupten N. Chakrishar : https://github.com/vajradog\n\n;\n(function (global, factory) {\n typeof exports === 'object' && typeof module !== 'undefined' && typeof require === 'function' ? factory(require('../moment')) : typeof define === 'function' && define.amd ? define(['../moment'], factory) : factory(global.moment);\n})(this, function (moment) {\n 'use strict';\n\n //! moment.js locale configuration\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 var bo = moment.defineLocale('bo', {\n months: 'ཟླ་བ་དང་པོ_ཟླ་བ་གཉིས་པ_ཟླ་བ་གསུམ་པ_ཟླ་བ་བཞི་པ_ཟླ་བ་ལྔ་པ_ཟླ་བ་དྲུག་པ_ཟླ་བ་བདུན་པ_ཟླ་བ་བརྒྱད་པ_ཟླ་བ་དགུ་པ_ཟླ་བ་བཅུ་པ_ཟླ་བ་བཅུ་གཅིག་པ_ཟླ་བ་བཅུ་གཉིས་པ'.split('_'),\n monthsShort: 'ཟླ་1_ཟླ་2_ཟླ་3_ཟླ་4_ཟླ་5_ཟླ་6_ཟླ་7_ཟླ་8_ཟླ་9_ཟླ་10_ཟླ་11_ཟླ་12'.split('_'),\n monthsShortRegex: /^(ཟླ་\\d{1,2})/,\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: '[བདུན་ཕྲག་རྗེས་མ], 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 === 'མཚན་མོ' && hour >= 4 || meridiem === 'ཉིན་གུང' && hour < 5 || meridiem === 'དགོང་དག') {\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,\n // 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 return bo;\n});","//! moment.js locale configuration\n//! locale : Breton [br]\n//! author : Jean-Baptiste Le Duigou : https://github.com/jbleduigou\n\n;\n(function (global, factory) {\n typeof exports === 'object' && typeof module !== 'undefined' && typeof require === 'function' ? factory(require('../moment')) : typeof define === 'function' && define.amd ? define(['../moment'], factory) : factory(global.moment);\n})(this, function (moment) {\n 'use strict';\n\n //! moment.js locale configuration\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 var monthsParse = [/^gen/i, /^c[ʼ\\']hwe/i, /^meu/i, /^ebr/i, /^mae/i, /^(mez|eve)/i, /^gou/i, /^eos/i, /^gwe/i, /^her/i, /^du/i, /^ker/i],\n monthsRegex = /^(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 = /^(genver|c[ʼ\\']hwevrer|meurzh|ebrel|mae|mezheven|gouere|eost|gwengolo|here|du|kerzu)/i,\n monthsShortStrictRegex = /^(gen|c[ʼ\\']hwe|meu|ebr|mae|eve|gou|eos|gwe|her|du|ker)/i,\n fullWeekdaysParse = [/^sul/i, /^lun/i, /^meurzh/i, /^merc[ʼ\\']her/i, /^yaou/i, /^gwener/i, /^sadorn/i],\n shortWeekdaysParse = [/^Sul/i, /^Lun/i, /^Meu/i, /^Mer/i, /^Yao/i, /^Gwe/i, /^Sad/i],\n minWeekdaysParse = [/^Su/i, /^Lu/i, /^Me([^r]|$)/i, /^Mer/i, /^Ya/i, /^Gw/i, /^Sa/i];\n var br = moment.defineLocale('br', {\n months: 'Genver_Cʼhwevrer_Meurzh_Ebrel_Mae_Mezheven_Gouere_Eost_Gwengolo_Here_Du_Kerzu'.split('_'),\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 monthsRegex: monthsRegex,\n monthsShortRegex: monthsRegex,\n monthsStrictRegex: monthsStrictRegex,\n monthsShortStrictRegex: monthsShortStrictRegex,\n monthsParse: monthsParse,\n longMonthsParse: monthsParse,\n shortMonthsParse: monthsParse,\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,\n // 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./,\n // 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 return br;\n});","//! moment.js locale configuration\n//! locale : Bosnian [bs]\n//! author : Nedim Cholich : https://github.com/frontyard\n//! author : Rasid Redzic : https://github.com/rasidre\n//! based on (hr) translation by Bojan Marković\n\n;\n(function (global, factory) {\n typeof exports === 'object' && typeof module !== 'undefined' && typeof require === 'function' ? factory(require('../moment')) : typeof define === 'function' && define.amd ? define(['../moment'], factory) : factory(global.moment);\n})(this, function (moment) {\n 'use strict';\n\n //! moment.js locale configuration\n function processRelativeTime(number, withoutSuffix, key, isFuture) {\n switch (key) {\n case 'm':\n return withoutSuffix ? 'jedna minuta' : isFuture ? 'jednu minutu' : 'jedne minute';\n }\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 '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' : 'jedan sat';\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 var bs = moment.defineLocale('bs', {\n months: 'januar_februar_mart_april_maj_juni_juli_august_septembar_oktobar_novembar_decembar'.split('_'),\n monthsShort: 'jan._feb._mar._apr._maj._jun._jul._aug._sep._okt._nov._dec.'.split('_'),\n monthsParseExact: true,\n weekdays: 'nedjelja_ponedjeljak_utorak_srijeda_Äetvrtak_petak_subota'.split('_'),\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: processRelativeTime,\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,\n // 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 return bs;\n});","//! moment.js locale configuration\n//! locale : Catalan [ca]\n//! author : Juan G. Hurtado : https://github.com/juanghurtado\n\n;\n(function (global, factory) {\n typeof exports === 'object' && typeof module !== 'undefined' && typeof require === 'function' ? factory(require('../moment')) : typeof define === 'function' && define.amd ? define(['../moment'], factory) : factory(global.moment);\n})(this, function (moment) {\n 'use strict';\n\n //! moment.js locale configuration\n var ca = moment.defineLocale('ca', {\n months: {\n standalone: 'gener_febrer_març_abril_maig_juny_juliol_agost_setembre_octubre_novembre_desembre'.split('_'),\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 isFormat: /D[oD]?(\\s)+MMMM/\n },\n monthsShort: 'gen._febr._març_abr._maig_juny_jul._ag._set._oct._nov._des.'.split('_'),\n monthsParseExact: true,\n weekdays: 'diumenge_dilluns_dimarts_dimecres_dijous_divendres_dissabte'.split('_'),\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 '[el] dddd [passat a ' + (this.hours() !== 1 ? 'les' : 'la') + '] LT';\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 = number === 1 ? 'r' : number === 2 ? 'n' : number === 3 ? 'r' : number === 4 ? 't' : 'è';\n if (period === 'w' || period === 'W') {\n output = 'a';\n }\n return number + output;\n },\n week: {\n dow: 1,\n // 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 return ca;\n});","//! moment.js locale configuration\n//! locale : Czech [cs]\n//! author : petrbela : https://github.com/petrbela\n\n;\n(function (global, factory) {\n typeof exports === 'object' && typeof module !== 'undefined' && typeof require === 'function' ? factory(require('../moment')) : typeof define === 'function' && define.amd ? define(['../moment'], factory) : factory(global.moment);\n})(this, function (moment) {\n 'use strict';\n\n //! moment.js locale configuration\n var months = {\n standalone: 'leden_únor_bÅ™ezen_duben_kvÄ›ten_Äerven_Äervenec_srpen_zářÃ_Å™Ãjen_listopad_prosinec'.split('_'),\n format: 'ledna_února_bÅ™ezna_dubna_kvÄ›tna_Äervna_Äervence_srpna_zářÃ_Å™Ãjna_listopadu_prosince'.split('_'),\n isFormat: /DD?[o.]?(\\[[^\\[\\]]*\\]|\\s)+MMMM/\n },\n monthsShort = 'led_úno_bÅ™e_dub_kvÄ›_Ävn_Ävc_srp_zář_Å™Ãj_lis_pro'.split('_'),\n monthsParse = [/^led/i, /^úno/i, /^bÅ™e/i, /^dub/i, /^kvÄ›/i, /^(Ävn|Äerven$|Äervna)/i, /^(Ävc|Äervenec|Äervence)/i, /^srp/i, /^zář/i, /^Å™Ãj/i, /^lis/i, /^pro/i],\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 = /^(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 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':\n // a few seconds / in a few seconds / a few seconds ago\n return withoutSuffix || isFuture ? 'pár sekund' : 'pár sekundami';\n case 'ss':\n // 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':\n // a minute / in a minute / a minute ago\n return withoutSuffix ? 'minuta' : isFuture ? 'minutu' : 'minutou';\n case 'mm':\n // 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':\n // an hour / in an hour / an hour ago\n return withoutSuffix ? 'hodina' : isFuture ? 'hodinu' : 'hodinou';\n case 'hh':\n // 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':\n // a day / in a day / a day ago\n return withoutSuffix || isFuture ? 'den' : 'dnem';\n case 'dd':\n // 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':\n // a month / in a month / a month ago\n return withoutSuffix || isFuture ? 'mÄ›sÃc' : 'mÄ›sÃcem';\n case 'MM':\n // 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':\n // a year / in a year / a year ago\n return withoutSuffix || isFuture ? 'rok' : 'rokem';\n case 'yy':\n // 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 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: /^(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: /^(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,\n // 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 return cs;\n});","//! moment.js locale configuration\n//! locale : Chuvash [cv]\n//! author : Anatoly Mironov : https://github.com/mirontoli\n\n;\n(function (global, factory) {\n typeof exports === 'object' && typeof module !== 'undefined' && typeof require === 'function' ? factory(require('../moment')) : typeof define === 'function' && define.amd ? define(['../moment'], factory) : factory(global.moment);\n})(this, function (moment) {\n 'use strict';\n\n //! moment.js locale configuration\n var cv = moment.defineLocale('cv', {\n months: 'кӑрлач_нарӑÑ_пуш_ака_май_ҫӗртме_утӑ_ҫурла_авӑн_юпа_чӳк_раштав'.split('_'),\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: '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) ? 'рен' : /ҫул$/i.exec(output) ? 'тан' : 'ран';\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,\n // 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 return cv;\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;\n(function (global, factory) {\n typeof exports === 'object' && typeof module !== 'undefined' && typeof require === 'function' ? factory(require('../moment')) : typeof define === 'function' && define.amd ? define(['../moment'], factory) : factory(global.moment);\n})(this, function (moment) {\n 'use strict';\n\n //! moment.js locale configuration\n var cy = moment.defineLocale('cy', {\n months: 'Ionawr_Chwefror_Mawrth_Ebrill_Mai_Mehefin_Gorffennaf_Awst_Medi_Hydref_Tachwedd_Rhagfyr'.split('_'),\n monthsShort: 'Ion_Chwe_Maw_Ebr_Mai_Meh_Gor_Aws_Med_Hyd_Tach_Rhag'.split('_'),\n weekdays: 'Dydd Sul_Dydd Llun_Dydd Mawrth_Dydd Mercher_Dydd Iau_Dydd Gwener_Dydd Sadwrn'.split('_'),\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 = ['', 'af', 'il', 'ydd', 'ydd', 'ed', 'ed', 'ed', 'fed', 'fed', 'fed',\n // 1af to 10fed\n 'eg', 'fed', 'eg', 'eg', 'fed', 'eg', 'eg', 'fed', 'eg', '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,\n // 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 return cy;\n});","//! moment.js locale configuration\n//! locale : Danish [da]\n//! author : Ulrik Nielsen : https://github.com/mrbase\n\n;\n(function (global, factory) {\n typeof exports === 'object' && typeof module !== 'undefined' && typeof require === 'function' ? factory(require('../moment')) : typeof define === 'function' && define.amd ? define(['../moment'], factory) : factory(global.moment);\n})(this, function (moment) {\n 'use strict';\n\n //! moment.js locale configuration\n var da = moment.defineLocale('da', {\n months: 'januar_februar_marts_april_maj_juni_juli_august_september_oktober_november_december'.split('_'),\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,\n // 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 return da;\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;\n(function (global, factory) {\n typeof exports === 'object' && typeof module !== 'undefined' && typeof require === 'function' ? factory(require('../moment')) : typeof define === 'function' && define.amd ? define(['../moment'], factory) : factory(global.moment);\n})(this, function (moment) {\n 'use strict';\n\n //! moment.js locale configuration\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 var de = moment.defineLocale('de', {\n months: 'Januar_Februar_März_April_Mai_Juni_Juli_August_September_Oktober_November_Dezember'.split('_'),\n monthsShort: 'Jan._Feb._März_Apr._Mai_Juni_Juli_Aug._Sep._Okt._Nov._Dez.'.split('_'),\n monthsParseExact: true,\n weekdays: 'Sonntag_Montag_Dienstag_Mittwoch_Donnerstag_Freitag_Samstag'.split('_'),\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,\n // 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 return de;\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;\n(function (global, factory) {\n typeof exports === 'object' && typeof module !== 'undefined' && typeof require === 'function' ? factory(require('../moment')) : typeof define === 'function' && define.amd ? define(['../moment'], factory) : factory(global.moment);\n})(this, function (moment) {\n 'use strict';\n\n //! moment.js locale configuration\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 var deAt = moment.defineLocale('de-at', {\n months: 'Jänner_Februar_März_April_Mai_Juni_Juli_August_September_Oktober_November_Dezember'.split('_'),\n monthsShort: 'Jän._Feb._März_Apr._Mai_Juni_Juli_Aug._Sep._Okt._Nov._Dez.'.split('_'),\n monthsParseExact: true,\n weekdays: 'Sonntag_Montag_Dienstag_Mittwoch_Donnerstag_Freitag_Samstag'.split('_'),\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,\n // 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 return deAt;\n});","//! moment.js locale configuration\n//! locale : German (Switzerland) [de-ch]\n//! author : sschueller : https://github.com/sschueller\n\n;\n(function (global, factory) {\n typeof exports === 'object' && typeof module !== 'undefined' && typeof require === 'function' ? factory(require('../moment')) : typeof define === 'function' && define.amd ? define(['../moment'], factory) : factory(global.moment);\n})(this, function (moment) {\n 'use strict';\n\n //! moment.js locale configuration\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 var deCh = moment.defineLocale('de-ch', {\n months: 'Januar_Februar_März_April_Mai_Juni_Juli_August_September_Oktober_November_Dezember'.split('_'),\n monthsShort: 'Jan._Feb._März_Apr._Mai_Juni_Juli_Aug._Sep._Okt._Nov._Dez.'.split('_'),\n monthsParseExact: true,\n weekdays: 'Sonntag_Montag_Dienstag_Mittwoch_Donnerstag_Freitag_Samstag'.split('_'),\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,\n // 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 return deCh;\n});","//! moment.js locale configuration\n//! locale : Maldivian [dv]\n//! author : Jawish Hameed : https://github.com/jawish\n\n;\n(function (global, factory) {\n typeof exports === 'object' && typeof module !== 'undefined' && typeof require === 'function' ? factory(require('../moment')) : typeof define === 'function' && define.amd ? define(['../moment'], factory) : factory(global.moment);\n})(this, function (moment) {\n 'use strict';\n\n //! moment.js locale configuration\n var months = ['Þ–Þ¬Þ‚ÞªÞ‡Þ¦ÞƒÞ©', 'ÞŠÞ¬Þ„Þ°ÞƒÞªÞ‡Þ¦ÞƒÞ©', 'Þ‰Þ§ÞƒÞ¨Þ—Þª', 'Þ‡ÞÞ•Þ°ÞƒÞ©ÞÞª', 'Þ‰Þ', 'Þ–Þ«Þ‚Þ°', 'Þ–ÞªÞÞ¦Þ‡Þ¨', 'Þ‡Þ¯ÞŽÞ¦ÞÞ°Þ“Þª', 'ÞÞ¬Þ•Þ°Þ“Þ¬Þ‰Þ°Þ„Þ¦ÞƒÞª', 'Þ‡Þ®Þ†Þ°Þ“Þ¯Þ„Þ¦ÞƒÞª', 'Þ‚Þ®ÞˆÞ¬Þ‰Þ°Þ„Þ¦ÞƒÞª', 'Þ‘Þ¨ÞÞ¬Þ‰Þ°Þ„Þ¦ÞƒÞª'],\n weekdays = ['އާދިއްތަ', 'Þ€Þ¯Þ‰Þ¦', 'Þ‡Þ¦Þ‚Þ°ÞŽÞ§ÞƒÞ¦', 'Þ„ÞªÞ‹Þ¦', 'Þ„ÞªÞƒÞ§Þްފަތި', 'Þ€ÞªÞ†ÞªÞƒÞª', 'Þ€Þ®Þ‚Þ¨Þ€Þ¨ÞƒÞª'];\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,\n // 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 return dv;\n});","//! moment.js locale configuration\n//! locale : Greek [el]\n//! author : Aggelos Karalias : https://github.com/mehiel\n\n;\n(function (global, factory) {\n typeof exports === 'object' && typeof module !== 'undefined' && typeof require === 'function' ? factory(require('../moment')) : typeof define === 'function' && define.amd ? define(['../moment'], factory) : factory(global.moment);\n})(this, function (moment) {\n 'use strict';\n\n //! moment.js locale configuration\n function isFunction(input) {\n return typeof Function !== 'undefined' && input instanceof Function || Object.prototype.toString.call(input) === '[object Function]';\n }\n var el = moment.defineLocale('el', {\n monthsNominativeEl: 'ΙανουάÏιος_ΦεβÏουάÏιος_ΜάÏτιος_ΑπÏίλιος_Μάιος_ΙοÏνιος_ΙοÏλιος_ΑÏγουστος_ΣεπτÎμβÏιος_ΟκτώβÏιος_ÎοÎμβÏιος_ΔεκÎμβÏιος'.split('_'),\n monthsGenitiveEl: 'ΙανουαÏίου_ΦεβÏουαÏίου_ΜαÏτίου_ΑπÏιλίου_ΜαÎου_Ιουνίου_Ιουλίου_ΑυγοÏστου_ΣεπτεμβÏίου_ΟκτωβÏίου_ÎοεμβÏίου_ΔεκεμβÏίου'.split('_'),\n months: function (momentToFormat, format) {\n if (!momentToFormat) {\n return this._monthsNominativeEl;\n } else if (typeof format === 'string' && /D/.test(format.substring(0, format.indexOf('MMMM')))) {\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 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,\n // 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 return el;\n});","//! moment.js locale configuration\n//! locale : English (Australia) [en-au]\n//! author : Jared Morse : https://github.com/jarcoal\n\n;\n(function (global, factory) {\n typeof exports === 'object' && typeof module !== 'undefined' && typeof require === 'function' ? factory(require('../moment')) : typeof define === 'function' && define.amd ? define(['../moment'], factory) : factory(global.moment);\n})(this, function (moment) {\n 'use strict';\n\n //! moment.js locale configuration\n var enAu = moment.defineLocale('en-au', {\n months: 'January_February_March_April_May_June_July_August_September_October_November_December'.split('_'),\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 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 = ~~(number % 100 / 10) === 1 ? 'th' : b === 1 ? 'st' : b === 2 ? 'nd' : b === 3 ? 'rd' : 'th';\n return number + output;\n },\n week: {\n dow: 0,\n // 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 return enAu;\n});","//! moment.js locale configuration\n//! locale : English (Canada) [en-ca]\n//! author : Jonathan Abourbih : https://github.com/jonbca\n\n;\n(function (global, factory) {\n typeof exports === 'object' && typeof module !== 'undefined' && typeof require === 'function' ? factory(require('../moment')) : typeof define === 'function' && define.amd ? define(['../moment'], factory) : factory(global.moment);\n})(this, function (moment) {\n 'use strict';\n\n //! moment.js locale configuration\n var enCa = moment.defineLocale('en-ca', {\n months: 'January_February_March_April_May_June_July_August_September_October_November_December'.split('_'),\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 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 = ~~(number % 100 / 10) === 1 ? 'th' : b === 1 ? 'st' : b === 2 ? 'nd' : b === 3 ? 'rd' : 'th';\n return number + output;\n }\n });\n return enCa;\n});","//! moment.js locale configuration\n//! locale : English (United Kingdom) [en-gb]\n//! author : Chris Gedrim : https://github.com/chrisgedrim\n\n;\n(function (global, factory) {\n typeof exports === 'object' && typeof module !== 'undefined' && typeof require === 'function' ? factory(require('../moment')) : typeof define === 'function' && define.amd ? define(['../moment'], factory) : factory(global.moment);\n})(this, function (moment) {\n 'use strict';\n\n //! moment.js locale configuration\n var enGb = moment.defineLocale('en-gb', {\n months: 'January_February_March_April_May_June_July_August_September_October_November_December'.split('_'),\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 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 = ~~(number % 100 / 10) === 1 ? 'th' : b === 1 ? 'st' : b === 2 ? 'nd' : b === 3 ? 'rd' : 'th';\n return number + output;\n },\n week: {\n dow: 1,\n // 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 return enGb;\n});","//! moment.js locale configuration\n//! locale : English (Ireland) [en-ie]\n//! author : Chris Cartlidge : https://github.com/chriscartlidge\n\n;\n(function (global, factory) {\n typeof exports === 'object' && typeof module !== 'undefined' && typeof require === 'function' ? factory(require('../moment')) : typeof define === 'function' && define.amd ? define(['../moment'], factory) : factory(global.moment);\n})(this, function (moment) {\n 'use strict';\n\n //! moment.js locale configuration\n var enIe = moment.defineLocale('en-ie', {\n months: 'January_February_March_April_May_June_July_August_September_October_November_December'.split('_'),\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 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 = ~~(number % 100 / 10) === 1 ? 'th' : b === 1 ? 'st' : b === 2 ? 'nd' : b === 3 ? 'rd' : 'th';\n return number + output;\n },\n week: {\n dow: 1,\n // 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 return enIe;\n});","//! moment.js locale configuration\n//! locale : English (Israel) [en-il]\n//! author : Chris Gedrim : https://github.com/chrisgedrim\n\n;\n(function (global, factory) {\n typeof exports === 'object' && typeof module !== 'undefined' && typeof require === 'function' ? factory(require('../moment')) : typeof define === 'function' && define.amd ? define(['../moment'], factory) : factory(global.moment);\n})(this, function (moment) {\n 'use strict';\n\n //! moment.js locale configuration\n var enIl = moment.defineLocale('en-il', {\n months: 'January_February_March_April_May_June_July_August_September_October_November_December'.split('_'),\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 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 = ~~(number % 100 / 10) === 1 ? 'th' : b === 1 ? 'st' : b === 2 ? 'nd' : b === 3 ? 'rd' : 'th';\n return number + output;\n }\n });\n return enIl;\n});","//! moment.js locale configuration\n//! locale : English (India) [en-in]\n//! author : Jatin Agrawal : https://github.com/jatinag22\n\n;\n(function (global, factory) {\n typeof exports === 'object' && typeof module !== 'undefined' && typeof require === 'function' ? factory(require('../moment')) : typeof define === 'function' && define.amd ? define(['../moment'], factory) : factory(global.moment);\n})(this, function (moment) {\n 'use strict';\n\n //! moment.js locale configuration\n var enIn = moment.defineLocale('en-in', {\n months: 'January_February_March_April_May_June_July_August_September_October_November_December'.split('_'),\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 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 = ~~(number % 100 / 10) === 1 ? 'th' : b === 1 ? 'st' : b === 2 ? 'nd' : b === 3 ? 'rd' : 'th';\n return number + output;\n },\n week: {\n dow: 0,\n // 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 return enIn;\n});","//! moment.js locale configuration\n//! locale : English (New Zealand) [en-nz]\n//! author : Luke McGregor : https://github.com/lukemcgregor\n\n;\n(function (global, factory) {\n typeof exports === 'object' && typeof module !== 'undefined' && typeof require === 'function' ? factory(require('../moment')) : typeof define === 'function' && define.amd ? define(['../moment'], factory) : factory(global.moment);\n})(this, function (moment) {\n 'use strict';\n\n //! moment.js locale configuration\n var enNz = moment.defineLocale('en-nz', {\n months: 'January_February_March_April_May_June_July_August_September_October_November_December'.split('_'),\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 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 = ~~(number % 100 / 10) === 1 ? 'th' : b === 1 ? 'st' : b === 2 ? 'nd' : b === 3 ? 'rd' : 'th';\n return number + output;\n },\n week: {\n dow: 1,\n // 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 return enNz;\n});","//! moment.js locale configuration\n//! locale : English (Singapore) [en-sg]\n//! author : Matthew Castrillon-Madrigal : https://github.com/techdimension\n\n;\n(function (global, factory) {\n typeof exports === 'object' && typeof module !== 'undefined' && typeof require === 'function' ? factory(require('../moment')) : typeof define === 'function' && define.amd ? define(['../moment'], factory) : factory(global.moment);\n})(this, function (moment) {\n 'use strict';\n\n //! moment.js locale configuration\n var enSg = moment.defineLocale('en-sg', {\n months: 'January_February_March_April_May_June_July_August_September_October_November_December'.split('_'),\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 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 = ~~(number % 100 / 10) === 1 ? 'th' : b === 1 ? 'st' : b === 2 ? 'nd' : b === 3 ? 'rd' : 'th';\n return number + output;\n },\n week: {\n dow: 1,\n // 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 return enSg;\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;\n(function (global, factory) {\n typeof exports === 'object' && typeof module !== 'undefined' && typeof require === 'function' ? factory(require('../moment')) : typeof define === 'function' && define.amd ? define(['../moment'], factory) : factory(global.moment);\n})(this, function (moment) {\n 'use strict';\n\n //! moment.js locale configuration\n var eo = moment.defineLocale('eo', {\n months: 'januaro_februaro_marto_aprilo_majo_junio_julio_aÅgusto_septembro_oktobro_novembro_decembro'.split('_'),\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',\n //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,\n // 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 return eo;\n});","//! moment.js locale configuration\n//! locale : Spanish [es]\n//! author : Julio Napurà : https://github.com/julionc\n\n;\n(function (global, factory) {\n typeof exports === 'object' && typeof module !== 'undefined' && typeof require === 'function' ? factory(require('../moment')) : typeof define === 'function' && define.amd ? define(['../moment'], factory) : factory(global.moment);\n})(this, function (moment) {\n 'use strict';\n\n //! moment.js locale configuration\n var monthsShortDot = 'ene._feb._mar._abr._may._jun._jul._ago._sep._oct._nov._dic.'.split('_'),\n monthsShort = 'ene_feb_mar_abr_may_jun_jul_ago_sep_oct_nov_dic'.split('_'),\n monthsParse = [/^ene/i, /^feb/i, /^mar/i, /^abr/i, /^may/i, /^jun/i, /^jul/i, /^ago/i, /^sep/i, /^oct/i, /^nov/i, /^dic/i],\n monthsRegex = /^(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 var es = moment.defineLocale('es', {\n months: 'enero_febrero_marzo_abril_mayo_junio_julio_agosto_septiembre_octubre_noviembre_diciembre'.split('_'),\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: /^(enero|febrero|marzo|abril|mayo|junio|julio|agosto|septiembre|octubre|noviembre|diciembre)/i,\n monthsShortStrictRegex: /^(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 '[el] dddd [pasado a la' + (this.hours() !== 1 ? 's' : '') + '] LT';\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,\n // 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 return es;\n});","//! moment.js locale configuration\n//! locale : Spanish (Dominican Republic) [es-do]\n\n;\n(function (global, factory) {\n typeof exports === 'object' && typeof module !== 'undefined' && typeof require === 'function' ? factory(require('../moment')) : typeof define === 'function' && define.amd ? define(['../moment'], factory) : factory(global.moment);\n})(this, function (moment) {\n 'use strict';\n\n //! moment.js locale configuration\n var monthsShortDot = 'ene._feb._mar._abr._may._jun._jul._ago._sep._oct._nov._dic.'.split('_'),\n monthsShort = 'ene_feb_mar_abr_may_jun_jul_ago_sep_oct_nov_dic'.split('_'),\n monthsParse = [/^ene/i, /^feb/i, /^mar/i, /^abr/i, /^may/i, /^jun/i, /^jul/i, /^ago/i, /^sep/i, /^oct/i, /^nov/i, /^dic/i],\n monthsRegex = /^(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 var esDo = moment.defineLocale('es-do', {\n months: 'enero_febrero_marzo_abril_mayo_junio_julio_agosto_septiembre_octubre_noviembre_diciembre'.split('_'),\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: /^(enero|febrero|marzo|abril|mayo|junio|julio|agosto|septiembre|octubre|noviembre|diciembre)/i,\n monthsShortStrictRegex: /^(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 '[el] dddd [pasado a la' + (this.hours() !== 1 ? 's' : '') + '] LT';\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,\n // 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 return esDo;\n});","//! moment.js locale configuration\n//! locale : Spanish (Mexico) [es-mx]\n//! author : JC Franco : https://github.com/jcfranco\n\n;\n(function (global, factory) {\n typeof exports === 'object' && typeof module !== 'undefined' && typeof require === 'function' ? factory(require('../moment')) : typeof define === 'function' && define.amd ? define(['../moment'], factory) : factory(global.moment);\n})(this, function (moment) {\n 'use strict';\n\n //! moment.js locale configuration\n var monthsShortDot = 'ene._feb._mar._abr._may._jun._jul._ago._sep._oct._nov._dic.'.split('_'),\n monthsShort = 'ene_feb_mar_abr_may_jun_jul_ago_sep_oct_nov_dic'.split('_'),\n monthsParse = [/^ene/i, /^feb/i, /^mar/i, /^abr/i, /^may/i, /^jun/i, /^jul/i, /^ago/i, /^sep/i, /^oct/i, /^nov/i, /^dic/i],\n monthsRegex = /^(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 var esMx = moment.defineLocale('es-mx', {\n months: 'enero_febrero_marzo_abril_mayo_junio_julio_agosto_septiembre_octubre_noviembre_diciembre'.split('_'),\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: /^(enero|febrero|marzo|abril|mayo|junio|julio|agosto|septiembre|octubre|noviembre|diciembre)/i,\n monthsShortStrictRegex: /^(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 '[el] dddd [pasado a la' + (this.hours() !== 1 ? 's' : '') + '] LT';\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,\n // 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 return esMx;\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;\n(function (global, factory) {\n typeof exports === 'object' && typeof module !== 'undefined' && typeof require === 'function' ? factory(require('../moment')) : typeof define === 'function' && define.amd ? define(['../moment'], factory) : factory(global.moment);\n})(this, function (moment) {\n 'use strict';\n\n //! moment.js locale configuration\n var monthsShortDot = 'ene._feb._mar._abr._may._jun._jul._ago._sep._oct._nov._dic.'.split('_'),\n monthsShort = 'ene_feb_mar_abr_may_jun_jul_ago_sep_oct_nov_dic'.split('_'),\n monthsParse = [/^ene/i, /^feb/i, /^mar/i, /^abr/i, /^may/i, /^jun/i, /^jul/i, /^ago/i, /^sep/i, /^oct/i, /^nov/i, /^dic/i],\n monthsRegex = /^(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 var esUs = moment.defineLocale('es-us', {\n months: 'enero_febrero_marzo_abril_mayo_junio_julio_agosto_septiembre_octubre_noviembre_diciembre'.split('_'),\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: /^(enero|febrero|marzo|abril|mayo|junio|julio|agosto|septiembre|octubre|noviembre|diciembre)/i,\n monthsShortStrictRegex: /^(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 '[el] dddd [pasado a la' + (this.hours() !== 1 ? 's' : '') + '] LT';\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,\n // 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 return esUs;\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;\n(function (global, factory) {\n typeof exports === 'object' && typeof module !== 'undefined' && typeof require === 'function' ? factory(require('../moment')) : typeof define === 'function' && define.amd ? define(['../moment'], factory) : factory(global.moment);\n})(this, function (moment) {\n 'use strict';\n\n //! moment.js locale configuration\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 var et = moment.defineLocale('et', {\n months: 'jaanuar_veebruar_märts_aprill_mai_juuni_juuli_august_september_oktoober_november_detsember'.split('_'),\n monthsShort: 'jaan_veebr_märts_apr_mai_juuni_juuli_aug_sept_okt_nov_dets'.split('_'),\n weekdays: 'pühapäev_esmaspäev_teisipäev_kolmapäev_neljapäev_reede_laupäev'.split('_'),\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,\n // 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 return et;\n});","//! moment.js locale configuration\n//! locale : Basque [eu]\n//! author : Eneko Illarramendi : https://github.com/eillarra\n\n;\n(function (global, factory) {\n typeof exports === 'object' && typeof module !== 'undefined' && typeof require === 'function' ? factory(require('../moment')) : typeof define === 'function' && define.amd ? define(['../moment'], factory) : factory(global.moment);\n})(this, function (moment) {\n 'use strict';\n\n //! moment.js locale configuration\n var eu = moment.defineLocale('eu', {\n months: 'urtarrila_otsaila_martxoa_apirila_maiatza_ekaina_uztaila_abuztua_iraila_urria_azaroa_abendua'.split('_'),\n monthsShort: 'urt._ots._mar._api._mai._eka._uzt._abu._ira._urr._aza._abe.'.split('_'),\n monthsParseExact: true,\n weekdays: 'igandea_astelehena_asteartea_asteazkena_osteguna_ostirala_larunbata'.split('_'),\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,\n // 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 return eu;\n});","//! moment.js locale configuration\n//! locale : Persian [fa]\n//! author : Ebrahim Byagowi : https://github.com/ebraminio\n\n;\n(function (global, factory) {\n typeof exports === 'object' && typeof module !== 'undefined' && typeof require === 'function' ? factory(require('../moment')) : typeof define === 'function' && define.amd ? define(['../moment'], factory) : factory(global.moment);\n})(this, function (moment) {\n 'use strict';\n\n //! moment.js locale configuration\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 var fa = moment.defineLocale('fa', {\n months: 'ژانویه_Ùوریه_مارس_آوریل_مه_ژوئن_ژوئیه_اوت_سپتامبر_اکتبر_نوامبر_دسامبر'.split('_'),\n monthsShort: 'ژانویه_Ùوریه_مارس_آوریل_مه_ژوئن_ژوئیه_اوت_سپتامبر_اکتبر_نوامبر_دسامبر'.split('_'),\n weekdays: 'یک\\u200cشنبه_دوشنبه_سه\\u200cشنبه_چهارشنبه_پنج\\u200cشنبه_جمعه_شنبه'.split('_'),\n weekdaysShort: 'یک\\u200cشنبه_دوشنبه_سه\\u200cشنبه_چهارشنبه_پنج\\u200cشنبه_جمعه_شنبه'.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.replace(/[Û°-Û¹]/g, function (match) {\n return numberMap[match];\n }).replace(/ØŒ/g, ',');\n },\n postformat: function (string) {\n return string.replace(/\\d/g, function (match) {\n return symbolMap[match];\n }).replace(/,/g, 'ØŒ');\n },\n dayOfMonthOrdinalParse: /\\d{1,2}Ù…/,\n ordinal: '%dÙ…',\n week: {\n dow: 6,\n // 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 return fa;\n});","//! moment.js locale configuration\n//! locale : Finnish [fi]\n//! author : Tarmo Aidantausta : https://github.com/bleadof\n\n;\n(function (global, factory) {\n typeof exports === 'object' && typeof module !== 'undefined' && typeof require === 'function' ? factory(require('../moment')) : typeof define === 'function' && define.amd ? define(['../moment'], factory) : factory(global.moment);\n})(this, function (moment) {\n 'use strict';\n\n //! moment.js locale configuration\n var numbersPast = 'nolla yksi kaksi kolme neljä viisi kuusi seitsemän kahdeksan yhdeksän'.split(' '),\n numbersFuture = ['nolla', 'yhden', 'kahden', 'kolmen', 'neljän', 'viiden', 'kuuden', numbersPast[7], numbersPast[8], numbersPast[9]];\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 ? isFuture ? numbersFuture[number] : numbersPast[number] : number;\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 monthsShort: 'tammi_helmi_maalis_huhti_touko_kesä_heinä_elo_syys_loka_marras_joulu'.split('_'),\n weekdays: 'sunnuntai_maanantai_tiistai_keskiviikko_torstai_perjantai_lauantai'.split('_'),\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,\n // 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 return fi;\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;\n(function (global, factory) {\n typeof exports === 'object' && typeof module !== 'undefined' && typeof require === 'function' ? factory(require('../moment')) : typeof define === 'function' && define.amd ? define(['../moment'], factory) : factory(global.moment);\n})(this, function (moment) {\n 'use strict';\n\n //! moment.js locale configuration\n var fil = moment.defineLocale('fil', {\n months: 'Enero_Pebrero_Marso_Abril_Mayo_Hunyo_Hulyo_Agosto_Setyembre_Oktubre_Nobyembre_Disyembre'.split('_'),\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 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,\n // 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 return fil;\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;\n(function (global, factory) {\n typeof exports === 'object' && typeof module !== 'undefined' && typeof require === 'function' ? factory(require('../moment')) : typeof define === 'function' && define.amd ? define(['../moment'], factory) : factory(global.moment);\n})(this, function (moment) {\n 'use strict';\n\n //! moment.js locale configuration\n var fo = moment.defineLocale('fo', {\n months: 'januar_februar_mars_aprÃl_mai_juni_juli_august_september_oktober_november_desember'.split('_'),\n monthsShort: 'jan_feb_mar_apr_mai_jun_jul_aug_sep_okt_nov_des'.split('_'),\n weekdays: 'sunnudagur_mánadagur_týsdagur_mikudagur_hósdagur_frÃggjadagur_leygardagur'.split('_'),\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,\n // 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 return fo;\n});","//! moment.js locale configuration\n//! locale : French [fr]\n//! author : John Fischer : https://github.com/jfroffice\n\n;\n(function (global, factory) {\n typeof exports === 'object' && typeof module !== 'undefined' && typeof require === 'function' ? factory(require('../moment')) : typeof define === 'function' && define.amd ? define(['../moment'], factory) : factory(global.moment);\n})(this, function (moment) {\n 'use strict';\n\n //! moment.js locale configuration\n var monthsStrictRegex = /^(janvier|février|mars|avril|mai|juin|juillet|août|septembre|octobre|novembre|décembre)/i,\n monthsShortStrictRegex = /(janv\\.?|févr\\.?|mars|avr\\.?|mai|juin|juil\\.?|août|sept\\.?|oct\\.?|nov\\.?|déc\\.?)/i,\n monthsRegex = /(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 = [/^janv/i, /^févr/i, /^mars/i, /^avr/i, /^mai/i, /^juin/i, /^juil/i, /^août/i, /^sept/i, /^oct/i, /^nov/i, /^déc/i];\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 monthsShort: 'janv._févr._mars_avr._mai_juin_juil._août_sept._oct._nov._déc.'.split('_'),\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,\n // 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 return fr;\n});","//! moment.js locale configuration\n//! locale : French (Canada) [fr-ca]\n//! author : Jonathan Abourbih : https://github.com/jonbca\n\n;\n(function (global, factory) {\n typeof exports === 'object' && typeof module !== 'undefined' && typeof require === 'function' ? factory(require('../moment')) : typeof define === 'function' && define.amd ? define(['../moment'], factory) : factory(global.moment);\n})(this, function (moment) {\n 'use strict';\n\n //! moment.js locale configuration\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 monthsShort: 'janv._févr._mars_avr._mai_juin_juil._août_sept._oct._nov._déc.'.split('_'),\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 return frCa;\n});","//! moment.js locale configuration\n//! locale : French (Switzerland) [fr-ch]\n//! author : Gaspard Bucher : https://github.com/gaspard\n\n;\n(function (global, factory) {\n typeof exports === 'object' && typeof module !== 'undefined' && typeof require === 'function' ? factory(require('../moment')) : typeof define === 'function' && define.amd ? define(['../moment'], factory) : factory(global.moment);\n})(this, function (moment) {\n 'use strict';\n\n //! moment.js locale configuration\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 monthsShort: 'janv._févr._mars_avr._mai_juin_juil._août_sept._oct._nov._déc.'.split('_'),\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,\n // 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 return frCh;\n});","//! moment.js locale configuration\n//! locale : Frisian [fy]\n//! author : Robin van der Vliet : https://github.com/robin0van0der0v\n\n;\n(function (global, factory) {\n typeof exports === 'object' && typeof module !== 'undefined' && typeof require === 'function' ? factory(require('../moment')) : typeof define === 'function' && define.amd ? define(['../moment'], factory) : factory(global.moment);\n})(this, function (moment) {\n 'use strict';\n\n //! moment.js locale configuration\n var monthsShortWithDots = 'jan._feb._mrt._apr._mai_jun._jul._aug._sep._okt._nov._des.'.split('_'),\n monthsShortWithoutDots = 'jan_feb_mrt_apr_mai_jun_jul_aug_sep_okt_nov_des'.split('_');\n var fy = moment.defineLocale('fy', {\n months: 'jannewaris_febrewaris_maart_april_maaie_juny_july_augustus_septimber_oktober_novimber_desimber'.split('_'),\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 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 number + (number === 1 || number === 8 || number >= 20 ? 'ste' : 'de');\n },\n week: {\n dow: 1,\n // 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 return fy;\n});","//! moment.js locale configuration\n//! locale : Irish or Irish Gaelic [ga]\n//! author : André Silva : https://github.com/askpt\n\n;\n(function (global, factory) {\n typeof exports === 'object' && typeof module !== 'undefined' && typeof require === 'function' ? factory(require('../moment')) : typeof define === 'function' && define.amd ? define(['../moment'], factory) : factory(global.moment);\n})(this, function (moment) {\n 'use strict';\n\n //! moment.js locale configuration\n var months = ['Eanáir', 'Feabhra', 'Márta', 'Aibreán', 'Bealtaine', 'Meitheamh', 'Iúil', 'Lúnasa', 'Meán Fómhair', 'Deireadh Fómhair', 'Samhain', 'Nollaig'],\n monthsShort = ['Ean', 'Feabh', 'Márt', 'Aib', 'Beal', 'Meith', 'Iúil', 'Lún', 'M.F.', 'D.F.', 'Samh', 'Noll'],\n weekdays = ['Dé Domhnaigh', 'Dé Luain', 'Dé Máirt', 'Dé Céadaoin', 'Déardaoin', 'Dé hAoine', 'Dé Sathairn'],\n weekdaysShort = ['Domh', 'Luan', 'Máirt', 'Céad', 'Déar', 'Aoine', 'Sath'],\n weekdaysMin = ['Do', 'Lu', 'Má', 'Cé', 'Dé', 'A', 'Sa'];\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,\n // 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 return ga;\n});","//! moment.js locale configuration\n//! locale : Scottish Gaelic [gd]\n//! author : Jon Ashdown : https://github.com/jonashdown\n\n;\n(function (global, factory) {\n typeof exports === 'object' && typeof module !== 'undefined' && typeof require === 'function' ? factory(require('../moment')) : typeof define === 'function' && define.amd ? define(['../moment'], factory) : factory(global.moment);\n})(this, function (moment) {\n 'use strict';\n\n //! moment.js locale configuration\n var months = ['Am Faoilleach', 'An Gearran', 'Am Mà rt', 'An Giblean', 'An Cèitean', 'An t-Ã’gmhios', 'An t-Iuchar', 'An Lùnastal', 'An t-Sultain', 'An Dà mhair', 'An t-Samhain', 'An Dùbhlachd'],\n monthsShort = ['Faoi', 'Gear', 'Mà rt', 'Gibl', 'Cèit', 'Ã’gmh', 'Iuch', 'Lùn', 'Sult', 'Dà mh', 'Samh', 'Dùbh'],\n weekdays = ['Didòmhnaich', 'Diluain', 'Dimà irt', 'Diciadain', 'Diardaoin', 'Dihaoine', 'Disathairne'],\n weekdaysShort = ['Did', 'Dil', 'Dim', 'Dic', 'Dia', 'Dih', 'Dis'],\n weekdaysMin = ['Dò', 'Lu', 'Mà ', 'Ci', 'Ar', 'Ha', 'Sa'];\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,\n // 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 return gd;\n});","//! moment.js locale configuration\n//! locale : Galician [gl]\n//! author : Juan G. Hurtado : https://github.com/juanghurtado\n\n;\n(function (global, factory) {\n typeof exports === 'object' && typeof module !== 'undefined' && typeof require === 'function' ? factory(require('../moment')) : typeof define === 'function' && define.amd ? define(['../moment'], factory) : factory(global.moment);\n})(this, function (moment) {\n 'use strict';\n\n //! moment.js locale configuration\n var gl = moment.defineLocale('gl', {\n months: 'xaneiro_febreiro_marzo_abril_maio_xuño_xullo_agosto_setembro_outubro_novembro_decembro'.split('_'),\n monthsShort: 'xan._feb._mar._abr._mai._xuñ._xul._ago._set._out._nov._dec.'.split('_'),\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 '[o] dddd [pasado ' + (this.hours() !== 1 ? 'ás' : 'a') + '] LT';\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,\n // 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 return gl;\n});","//! moment.js locale configuration\n//! locale : Konkani Devanagari script [gom-deva]\n//! author : The Discoverer : https://github.com/WikiDiscoverer\n\n;\n(function (global, factory) {\n typeof exports === 'object' && typeof module !== 'undefined' && typeof require === 'function' ? factory(require('../moment')) : typeof define === 'function' && define.amd ? define(['../moment'], factory) : factory(global.moment);\n})(this, function (moment) {\n 'use strict';\n\n //! moment.js locale configuration\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 var gomDeva = moment.defineLocale('gom-deva', {\n months: {\n standalone: 'जानेवारी_फेबà¥à¤°à¥à¤µà¤¾à¤°à¥€_मारà¥à¤š_à¤à¤ªà¥à¤°à¥€à¤²_मे_जून_जà¥à¤²à¤¯_ऑगसà¥à¤Ÿ_सपà¥à¤Ÿà¥‡à¤‚बर_ऑकà¥à¤Ÿà¥‹à¤¬à¤°_नोवà¥à¤¹à¥‡à¤‚बर_डिसेंबर'.split('_'),\n format: 'जानेवारीचà¥à¤¯à¤¾_फेबà¥à¤°à¥à¤µà¤¾à¤°à¥€à¤šà¥à¤¯à¤¾_मारà¥à¤šà¤¾à¤šà¥à¤¯à¤¾_à¤à¤ªà¥à¤°à¥€à¤²à¤¾à¤šà¥à¤¯à¤¾_मेयाचà¥à¤¯à¤¾_जूनाचà¥à¤¯à¤¾_जà¥à¤²à¤¯à¤¾à¤šà¥à¤¯à¤¾_ऑगसà¥à¤Ÿà¤¾à¤šà¥à¤¯à¤¾_सपà¥à¤Ÿà¥‡à¤‚बराचà¥à¤¯à¤¾_ऑकà¥à¤Ÿà¥‹à¤¬à¤°à¤¾à¤šà¥à¤¯à¤¾_नोवà¥à¤¹à¥‡à¤‚बराचà¥à¤¯à¤¾_डिसेंबराचà¥à¤¯à¤¾'.split('_'),\n isFormat: /MMMM(\\s)+D[oD]?/\n },\n monthsShort: 'जाने._फेबà¥à¤°à¥._मारà¥à¤š_à¤à¤ªà¥à¤°à¥€._मे_जून_जà¥à¤²._ऑग._सपà¥à¤Ÿà¥‡à¤‚._ऑकà¥à¤Ÿà¥‹._नोवà¥à¤¹à¥‡à¤‚._डिसें.'.split('_'),\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,\n // 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 return gomDeva;\n});","//! moment.js locale configuration\n//! locale : Konkani Latin script [gom-latn]\n//! author : The Discoverer : https://github.com/WikiDiscoverer\n\n;\n(function (global, factory) {\n typeof exports === 'object' && typeof module !== 'undefined' && typeof require === 'function' ? factory(require('../moment')) : typeof define === 'function' && define.amd ? define(['../moment'], factory) : factory(global.moment);\n})(this, function (moment) {\n 'use strict';\n\n //! moment.js locale configuration\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 var gomLatn = moment.defineLocale('gom-latn', {\n months: {\n standalone: 'Janer_Febrer_Mars_Abril_Mai_Jun_Julai_Agost_Setembr_Otubr_Novembr_Dezembr'.split('_'),\n format: 'Janerachea_Febrerachea_Marsachea_Abrilachea_Maiachea_Junachea_Julaiachea_Agostachea_Setembrachea_Otubrachea_Novembrachea_Dezembrachea'.split('_'),\n isFormat: /MMMM(\\s)+D[oD]?/\n },\n monthsShort: '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,\n // 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 return gomLatn;\n});","//! moment.js locale configuration\n//! locale : Gujarati [gu]\n//! author : Kaushik Thanki : https://github.com/Kaushik1987\n\n;\n(function (global, factory) {\n typeof exports === 'object' && typeof module !== 'undefined' && typeof require === 'function' ? factory(require('../moment')) : typeof define === 'function' && define.amd ? define(['../moment'], factory) : factory(global.moment);\n})(this, function (moment) {\n 'use strict';\n\n //! moment.js locale configuration\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 var gu = moment.defineLocale('gu', {\n months: 'જાનà«àª¯à«àª†àª°à«€_ફેબà«àª°à«àª†àª°à«€_મારà«àªš_àªàªªà«àª°àª¿àª²_મે_જૂન_જà«àª²àª¾àªˆ_ઑગસà«àªŸ_સપà«àªŸà«‡àª®à«àª¬àª°_ઑકà«àªŸà«àª¬àª°_નવેમà«àª¬àª°_ડિસેમà«àª¬àª°'.split('_'),\n monthsShort: 'જાનà«àª¯à«._ફેબà«àª°à«._મારà«àªš_àªàªªà«àª°àª¿._મે_જૂન_જà«àª²àª¾._ઑગ._સપà«àªŸà«‡._ઑકà«àªŸà«._નવે._ડિસે.'.split('_'),\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: 'અમà«àª• પળો',\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,\n // 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 return gu;\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;\n(function (global, factory) {\n typeof exports === 'object' && typeof module !== 'undefined' && typeof require === 'function' ? factory(require('../moment')) : typeof define === 'function' && define.amd ? define(['../moment'], factory) : factory(global.moment);\n})(this, function (moment) {\n 'use strict';\n\n //! moment.js locale configuration\n var he = moment.defineLocale('he', {\n months: '×™× ×•×ר_פברו×ר_מרץ_×פריל_מ××™_×™×•× ×™_יולי_×וגוסט_ספטמבר_×וקטובר_× ×•×‘×ž×‘×¨_דצמבר'.split('_'),\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: '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: /××—×”\"צ|×œ×¤× ×”\"צ|×חרי הצהריי×|×œ×¤× ×™ הצהריי×|×œ×¤× ×•×ª בוקר|בבוקר|בערב/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 return he;\n});","//! moment.js locale configuration\n//! locale : Hindi [hi]\n//! author : Mayank Singhal : https://github.com/mayanksinghal\n\n;\n(function (global, factory) {\n typeof exports === 'object' && typeof module !== 'undefined' && typeof require === 'function' ? factory(require('../moment')) : typeof define === 'function' && define.amd ? define(['../moment'], factory) : factory(global.moment);\n})(this, function (moment) {\n 'use strict';\n\n //! moment.js locale configuration\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 = [/^जन/i, /^फ़र|फर/i, /^मारà¥à¤š/i, /^अपà¥à¤°à¥ˆ/i, /^मई/i, /^जून/i, /^जà¥à¤²/i, /^अग/i, /^सितं|सित/i, /^अकà¥à¤Ÿà¥‚/i, /^नव|नवं/i, /^दिसं|दिस/i],\n shortMonthsParse = [/^जन/i, /^फ़र/i, /^मारà¥à¤š/i, /^अपà¥à¤°à¥ˆ/i, /^मई/i, /^जून/i, /^जà¥à¤²/i, /^अग/i, /^सित/i, /^अकà¥à¤Ÿà¥‚/i, /^नव/i, /^दिस/i];\n var hi = moment.defineLocale('hi', {\n months: {\n format: 'जनवरी_फ़रवरी_मारà¥à¤š_अपà¥à¤°à¥ˆà¤²_मई_जून_जà¥à¤²à¤¾à¤ˆ_अगसà¥à¤¤_सितमà¥à¤¬à¤°_अकà¥à¤Ÿà¥‚बर_नवमà¥à¤¬à¤°_दिसमà¥à¤¬à¤°'.split('_'),\n standalone: 'जनवरी_फरवरी_मारà¥à¤š_अपà¥à¤°à¥ˆà¤²_मई_जून_जà¥à¤²à¤¾à¤ˆ_अगसà¥à¤¤_सितंबर_अकà¥à¤Ÿà¥‚बर_नवंबर_दिसंबर'.split('_')\n },\n monthsShort: 'जन._फ़र._मारà¥à¤š_अपà¥à¤°à¥ˆ._मई_जून_जà¥à¤²._अग._सित._अकà¥à¤Ÿà¥‚._नव._दिस.'.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 monthsParse: monthsParse,\n longMonthsParse: monthsParse,\n shortMonthsParse: shortMonthsParse,\n monthsRegex: /^(जनवरी|जन\\.?|फ़रवरी|फरवरी|फ़र\\.?|मारà¥à¤š?|अपà¥à¤°à¥ˆà¤²|अपà¥à¤°à¥ˆ\\.?|मई?|जून?|जà¥à¤²à¤¾à¤ˆ|जà¥à¤²\\.?|अगसà¥à¤¤|अग\\.?|सितमà¥à¤¬à¤°|सितंबर|सित\\.?|अकà¥à¤Ÿà¥‚बर|अकà¥à¤Ÿà¥‚\\.?|नवमà¥à¤¬à¤°|नवंबर|नव\\.?|दिसमà¥à¤¬à¤°|दिसंबर|दिस\\.?)/i,\n monthsShortRegex: /^(जनवरी|जन\\.?|फ़रवरी|फरवरी|फ़र\\.?|मारà¥à¤š?|अपà¥à¤°à¥ˆà¤²|अपà¥à¤°à¥ˆ\\.?|मई?|जून?|जà¥à¤²à¤¾à¤ˆ|जà¥à¤²\\.?|अगसà¥à¤¤|अग\\.?|सितमà¥à¤¬à¤°|सितंबर|सित\\.?|अकà¥à¤Ÿà¥‚बर|अकà¥à¤Ÿà¥‚\\.?|नवमà¥à¤¬à¤°|नवंबर|नव\\.?|दिसमà¥à¤¬à¤°|दिसंबर|दिस\\.?)/i,\n monthsStrictRegex: /^(जनवरी?|फ़रवरी|फरवरी?|मारà¥à¤š?|अपà¥à¤°à¥ˆà¤²?|मई?|जून?|जà¥à¤²à¤¾à¤ˆ?|अगसà¥à¤¤?|सितमà¥à¤¬à¤°|सितंबर|सित?\\.?|अकà¥à¤Ÿà¥‚बर|अकà¥à¤Ÿà¥‚\\.?|नवमà¥à¤¬à¤°|नवंबर?|दिसमà¥à¤¬à¤°|दिसंबर?)/i,\n monthsShortStrictRegex: /^(जन\\.?|फ़र\\.?|मारà¥à¤š?|अपà¥à¤°à¥ˆ\\.?|मई?|जून?|जà¥à¤²\\.?|अग\\.?|सित\\.?|अकà¥à¤Ÿà¥‚\\.?|नव\\.?|दिस\\.?)/i,\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,\n // 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 return hi;\n});","//! moment.js locale configuration\n//! locale : Croatian [hr]\n//! author : Bojan Marković : https://github.com/bmarkovic\n\n;\n(function (global, factory) {\n typeof exports === 'object' && typeof module !== 'undefined' && typeof require === 'function' ? factory(require('../moment')) : typeof define === 'function' && define.amd ? define(['../moment'], factory) : factory(global.moment);\n})(this, function (moment) {\n 'use strict';\n\n //! moment.js locale configuration\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 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 standalone: 'sijeÄanj_veljaÄa_ožujak_travanj_svibanj_lipanj_srpanj_kolovoz_rujan_listopad_studeni_prosinac'.split('_')\n },\n monthsShort: 'sij._velj._ožu._tra._svi._lip._srp._kol._ruj._lis._stu._pro.'.split('_'),\n monthsParseExact: true,\n weekdays: 'nedjelja_ponedjeljak_utorak_srijeda_Äetvrtak_petak_subota'.split('_'),\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,\n // 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 return hr;\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;\n(function (global, factory) {\n typeof exports === 'object' && typeof module !== 'undefined' && typeof require === 'function' ? factory(require('../moment')) : typeof define === 'function' && define.amd ? define(['../moment'], factory) : factory(global.moment);\n})(this, function (moment) {\n 'use strict';\n\n //! moment.js locale configuration\n var weekEndings = '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éhány másodperc' : 'néhány másodperce';\n case 'ss':\n return num + (isFuture || withoutSuffix) ? ' másodperc' : ' 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 (isFuture ? '' : '[múlt] ') + '[' + weekEndings[this.day()] + '] LT[-kor]';\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 monthsShort: 'jan._feb._márc._ápr._máj._jún._júl._aug._szept._okt._nov._dec.'.split('_'),\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,\n // 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 return hu;\n});","//! moment.js locale configuration\n//! locale : Armenian [hy-am]\n//! author : Armendarabyan : https://github.com/armendarabyan\n\n;\n(function (global, factory) {\n typeof exports === 'object' && typeof module !== 'undefined' && typeof require === 'function' ? factory(require('../moment')) : typeof define === 'function' && define.amd ? define(['../moment'], factory) : factory(global.moment);\n})(this, function (moment) {\n 'use strict';\n\n //! moment.js locale configuration\n var hyAm = moment.defineLocale('hy-am', {\n months: {\n format: 'Õ°Õ¸Ö‚Õ¶Õ¾Õ¡Ö€Õ«_ÖƒÕ¥Õ¿Ö€Õ¾Õ¡Ö€Õ«_Õ´Õ¡Ö€Õ¿Õ«_Õ¡ÕºÖ€Õ«Õ¬Õ«_Õ´Õ¡ÕµÕ«Õ½Õ«_Õ°Õ¸Ö‚Õ¶Õ«Õ½Õ«_Õ°Õ¸Ö‚Õ¬Õ«Õ½Õ«_Ö…Õ£Õ¸Õ½Õ¿Õ¸Õ½Õ«_Õ½Õ¥ÕºÕ¿Õ¥Õ´Õ¢Õ¥Ö€Õ«_Õ°Õ¸Õ¯Õ¿Õ¥Õ´Õ¢Õ¥Ö€Õ«_Õ¶Õ¸ÕµÕ¥Õ´Õ¢Õ¥Ö€Õ«_Õ¤Õ¥Õ¯Õ¿Õ¥Õ´Õ¢Õ¥Ö€Õ«'.split('_'),\n standalone: 'Õ°Õ¸Ö‚Õ¶Õ¾Õ¡Ö€_ÖƒÕ¥Õ¿Ö€Õ¾Õ¡Ö€_Õ´Õ¡Ö€Õ¿_Õ¡ÕºÖ€Õ«Õ¬_Õ´Õ¡ÕµÕ«Õ½_Õ°Õ¸Ö‚Õ¶Õ«Õ½_Õ°Õ¸Ö‚Õ¬Õ«Õ½_Ö…Õ£Õ¸Õ½Õ¿Õ¸Õ½_Õ½Õ¥ÕºÕ¿Õ¥Õ´Õ¢Õ¥Ö€_Õ°Õ¸Õ¯Õ¿Õ¥Õ´Õ¢Õ¥Ö€_Õ¶Õ¸ÕµÕ¥Õ´Õ¢Õ¥Ö€_Õ¤Õ¥Õ¯Õ¿Õ¥Õ´Õ¢Õ¥Ö€'.split('_')\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: '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,\n // 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 return hyAm;\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;\n(function (global, factory) {\n typeof exports === 'object' && typeof module !== 'undefined' && typeof require === 'function' ? factory(require('../moment')) : typeof define === 'function' && define.amd ? define(['../moment'], factory) : factory(global.moment);\n})(this, function (moment) {\n 'use strict';\n\n //! moment.js locale configuration\n var id = moment.defineLocale('id', {\n months: 'Januari_Februari_Maret_April_Mei_Juni_Juli_Agustus_September_Oktober_November_Desember'.split('_'),\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,\n // 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 return id;\n});","//! moment.js locale configuration\n//! locale : Icelandic [is]\n//! author : Hinrik Örn Sigurðsson : https://github.com/hinrik\n\n;\n(function (global, factory) {\n typeof exports === 'object' && typeof module !== 'undefined' && typeof require === 'function' ? factory(require('../moment')) : typeof define === 'function' && define.amd ? define(['../moment'], factory) : factory(global.moment);\n})(this, function (moment) {\n 'use strict';\n\n //! moment.js locale configuration\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 ? 'nokkrar sekúndur' : 'nokkrum sekúndum';\n case 'ss':\n if (plural(number)) {\n return result + (withoutSuffix || isFuture ? 'sekúndur' : 'sekúndum');\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 result + (withoutSuffix || isFuture ? 'mÃnútur' : 'mÃnútum');\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 result + (withoutSuffix || isFuture ? 'klukkustundir' : 'klukkustundum');\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 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 monthsShort: 'jan_feb_mar_apr_maÃ_jún_júl_ágú_sep_okt_nóv_des'.split('_'),\n weekdays: 'sunnudagur_mánudagur_þriðjudagur_miðvikudagur_fimmtudagur_föstudagur_laugardagur'.split('_'),\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,\n // 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 return is;\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;\n(function (global, factory) {\n typeof exports === 'object' && typeof module !== 'undefined' && typeof require === 'function' ? factory(require('../moment')) : typeof define === 'function' && define.amd ? define(['../moment'], factory) : factory(global.moment);\n})(this, function (moment) {\n 'use strict';\n\n //! moment.js locale configuration\n var it = moment.defineLocale('it', {\n months: 'gennaio_febbraio_marzo_aprile_maggio_giugno_luglio_agosto_settembre_ottobre_novembre_dicembre'.split('_'),\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 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 '[Oggi a' + (this.hours() > 1 ? 'lle ' : this.hours() === 0 ? ' ' : \"ll'\") + ']LT';\n },\n nextDay: function () {\n return '[Domani a' + (this.hours() > 1 ? 'lle ' : this.hours() === 0 ? ' ' : \"ll'\") + ']LT';\n },\n nextWeek: function () {\n return 'dddd [a' + (this.hours() > 1 ? 'lle ' : this.hours() === 0 ? ' ' : \"ll'\") + ']LT';\n },\n lastDay: function () {\n return '[Ieri a' + (this.hours() > 1 ? 'lle ' : this.hours() === 0 ? ' ' : \"ll'\") + ']LT';\n },\n lastWeek: function () {\n switch (this.day()) {\n case 0:\n return '[La scorsa] dddd [a' + (this.hours() > 1 ? 'lle ' : this.hours() === 0 ? ' ' : \"ll'\") + ']LT';\n default:\n return '[Lo scorso] dddd [a' + (this.hours() > 1 ? 'lle ' : this.hours() === 0 ? ' ' : \"ll'\") + ']LT';\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,\n // 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 return it;\n});","//! moment.js locale configuration\n//! locale : Italian (Switzerland) [it-ch]\n//! author : xfh : https://github.com/xfh\n\n;\n(function (global, factory) {\n typeof exports === 'object' && typeof module !== 'undefined' && typeof require === 'function' ? factory(require('../moment')) : typeof define === 'function' && define.amd ? define(['../moment'], factory) : factory(global.moment);\n})(this, function (moment) {\n 'use strict';\n\n //! moment.js locale configuration\n var itCh = moment.defineLocale('it-ch', {\n months: 'gennaio_febbraio_marzo_aprile_maggio_giugno_luglio_agosto_settembre_ottobre_novembre_dicembre'.split('_'),\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 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,\n // 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 return itCh;\n});","//! moment.js locale configuration\n//! locale : Japanese [ja]\n//! author : LI Long : https://github.com/baryon\n\n;\n(function (global, factory) {\n typeof exports === 'object' && typeof module !== 'undefined' && typeof require === 'function' ? factory(require('../moment')) : typeof define === 'function' && define.amd ? define(['../moment'], factory) : factory(global.moment);\n})(this, function (moment) {\n 'use strict';\n\n //! moment.js locale configuration\n var ja = moment.defineLocale('ja', {\n eras: [{\n since: '2019-05-01',\n offset: 1,\n name: '令和',\n narrow: 'ã‹¿',\n abbr: 'R'\n }, {\n since: '1989-01-08',\n until: '2019-04-30',\n offset: 1,\n name: 'å¹³æˆ',\n narrow: 'ã»',\n abbr: 'H'\n }, {\n since: '1926-12-25',\n until: '1989-01-07',\n offset: 1,\n name: 'æ˜å’Œ',\n narrow: 'ã¼',\n abbr: 'S'\n }, {\n since: '1912-07-30',\n until: '1926-12-24',\n offset: 1,\n name: '大æ£',\n narrow: 'ã½',\n abbr: 'T'\n }, {\n since: '1873-01-01',\n until: '1912-07-29',\n offset: 6,\n name: '明治',\n narrow: 'ã¾',\n abbr: 'M'\n }, {\n since: '0001-01-01',\n until: '1873-12-31',\n offset: 1,\n name: '西暦',\n narrow: 'AD',\n abbr: 'AD'\n }, {\n since: '0000-12-31',\n until: -Infinity,\n offset: 1,\n name: '紀元å‰',\n narrow: 'BC',\n abbr: 'BC'\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 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 return ja;\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;\n(function (global, factory) {\n typeof exports === 'object' && typeof module !== 'undefined' && typeof require === 'function' ? factory(require('../moment')) : typeof define === 'function' && define.amd ? define(['../moment'], factory) : factory(global.moment);\n})(this, function (moment) {\n 'use strict';\n\n //! moment.js locale configuration\n var jv = moment.defineLocale('jv', {\n months: 'Januari_Februari_Maret_April_Mei_Juni_Juli_Agustus_September_Oktober_Nopember_Desember'.split('_'),\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,\n // 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 return jv;\n});","//! moment.js locale configuration\n//! locale : Georgian [ka]\n//! author : Irakli Janiashvili : https://github.com/IrakliJani\n\n;\n(function (global, factory) {\n typeof exports === 'object' && typeof module !== 'undefined' && typeof require === 'function' ? factory(require('../moment')) : typeof define === 'function' && define.amd ? define(['../moment'], factory) : factory(global.moment);\n})(this, function (moment) {\n 'use strict';\n\n //! moment.js locale configuration\n var ka = moment.defineLocale('ka', {\n months: 'იáƒáƒœáƒ•áƒáƒ ი_თებერვáƒáƒšáƒ˜_მáƒáƒ ტი_áƒáƒžáƒ ილი_მáƒáƒ˜áƒ¡áƒ˜_ივნისი_ივლისი_áƒáƒ’ვისტáƒ_სექტემბერი_áƒáƒ¥áƒ¢áƒáƒ›áƒ‘ერი_ნáƒáƒ”მბერი_დეკემბერი'.split('_'),\n monthsShort: 'იáƒáƒœ_თებ_მáƒáƒ _áƒáƒžáƒ _მáƒáƒ˜_ივნ_ივლ_áƒáƒ’ვ_სექ_áƒáƒ¥áƒ¢_ნáƒáƒ”_დეკ'.split('_'),\n weekdays: {\n standalone: 'კვირáƒ_áƒáƒ შáƒáƒ‘áƒáƒ—ი_სáƒáƒ›áƒ¨áƒáƒ‘áƒáƒ—ი_áƒáƒ—ხშáƒáƒ‘áƒáƒ—ი_ხუთშáƒáƒ‘áƒáƒ—ი_პáƒáƒ áƒáƒ¡áƒ™áƒ”ვი_შáƒáƒ‘áƒáƒ—ი'.split('_'),\n format: 'კვირáƒáƒ¡_áƒáƒ შáƒáƒ‘áƒáƒ—ს_სáƒáƒ›áƒ¨áƒáƒ‘áƒáƒ—ს_áƒáƒ—ხშáƒáƒ‘áƒáƒ—ს_ხუთშáƒáƒ‘áƒáƒ—ს_პáƒáƒ áƒáƒ¡áƒ™áƒ”ვს_შáƒáƒ‘áƒáƒ—ს'.split('_'),\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(/(წáƒáƒ›|წუთ|სáƒáƒáƒ—|წელ|დღ|თვ)(ი|ე)/, function ($0, $1, $2) {\n return $2 === 'ი' ? $1 + 'ში' : $1 + $2 + 'ში';\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 (number < 20 || number <= 100 && number % 20 === 0 || number % 100 === 0) {\n return 'მე-' + number;\n }\n return number + '-ე';\n },\n week: {\n dow: 1,\n doy: 7\n }\n });\n return ka;\n});","//! moment.js locale configuration\n//! locale : Kazakh [kk]\n//! authors : Nurlan Rakhimzhanov : https://github.com/nurlan\n\n;\n(function (global, factory) {\n typeof exports === 'object' && typeof module !== 'undefined' && typeof require === 'function' ? factory(require('../moment')) : typeof define === 'function' && define.amd ? define(['../moment'], factory) : factory(global.moment);\n})(this, function (moment) {\n 'use strict';\n\n //! moment.js locale configuration\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 var kk = moment.defineLocale('kk', {\n months: 'қаңтар_ақпан_наурыз_Ñәуір_мамыр_мауÑым_шілде_тамыз_қыркүйек_қазан_қараша_желтоқÑан'.split('_'),\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: '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,\n // 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 return kk;\n});","//! moment.js locale configuration\n//! locale : Cambodian [km]\n//! author : Kruy Vanna : https://github.com/kruyvanna\n\n;\n(function (global, factory) {\n typeof exports === 'object' && typeof module !== 'undefined' && typeof require === 'function' ? factory(require('../moment')) : typeof define === 'function' && define.amd ? define(['../moment'], factory) : factory(global.moment);\n})(this, function (moment) {\n 'use strict';\n\n //! moment.js locale configuration\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 var km = moment.defineLocale('km', {\n months: 'មករា_កុម្ភៈ_មីនា_មáŸážŸáž¶_ឧសភា_មិážáž»áž“ា_កក្កដា_សីហា_កញ្ញា_ážáž»áž›áž¶_វិច្ឆិកា_ធ្នូ'.split('_'),\n monthsShort: 'មករា_កុម្ភៈ_មីនា_មáŸážŸáž¶_ឧសភា_មិážáž»áž“ា_កក្កដា_សីហា_កញ្ញា_ážáž»áž›áž¶_វិច្ឆិកា_ធ្នូ'.split('_'),\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,\n // 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 return km;\n});","//! moment.js locale configuration\n//! locale : Kannada [kn]\n//! author : Rajeev Naik : https://github.com/rajeevnaikte\n\n;\n(function (global, factory) {\n typeof exports === 'object' && typeof module !== 'undefined' && typeof require === 'function' ? factory(require('../moment')) : typeof define === 'function' && define.amd ? define(['../moment'], factory) : factory(global.moment);\n})(this, function (moment) {\n 'use strict';\n\n //! moment.js locale configuration\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 var kn = moment.defineLocale('kn', {\n months: 'ಜನವರಿ_ಫೆಬà³à²°à²µà²°à²¿_ಮಾರà³à²šà³_à²à²ªà³à²°à²¿à²²à³_ಮೇ_ಜೂನà³_ಜà³à²²à³†à³–_ಆಗಸà³à²Ÿà³_ಸೆಪà³à²Ÿà³†à²‚ಬರà³_ಅಕà³à²Ÿà³†à³‚ೕಬರà³_ನವೆಂಬರà³_ಡಿಸೆಂಬರà³'.split('_'),\n monthsShort: 'ಜನ_ಫೆಬà³à²°_ಮಾರà³à²šà³_à²à²ªà³à²°à²¿à²²à³_ಮೇ_ಜೂನà³_ಜà³à²²à³†à³–_ಆಗಸà³à²Ÿà³_ಸೆಪà³à²Ÿà³†à²‚_ಅಕà³à²Ÿà³†à³‚ೕ_ನವೆಂ_ಡಿಸೆಂ'.split('_'),\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: 'ಕೆಲವೠಕà³à²·à²£à²—ಳà³',\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,\n // 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 return kn;\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;\n(function (global, factory) {\n typeof exports === 'object' && typeof module !== 'undefined' && typeof require === 'function' ? factory(require('../moment')) : typeof define === 'function' && define.amd ? define(['../moment'], factory) : factory(global.moment);\n})(this, function (moment) {\n 'use strict';\n\n //! moment.js locale configuration\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 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 return ko;\n});","//! moment.js locale configuration\n//! locale : Kurdish [ku]\n//! author : Shahram Mebashar : https://github.com/ShahramMebashar\n\n;\n(function (global, factory) {\n typeof exports === 'object' && typeof module !== 'undefined' && typeof require === 'function' ? factory(require('../moment')) : typeof define === 'function' && define.amd ? define(['../moment'], factory) : factory(global.moment);\n})(this, function (moment) {\n 'use strict';\n\n //! moment.js locale configuration\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 var ku = moment.defineLocale('ku', {\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: '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.replace(/[١٢٣٤٥٦٧٨٩٠]/g, function (match) {\n return numberMap[match];\n }).replace(/ØŒ/g, ',');\n },\n postformat: function (string) {\n return string.replace(/\\d/g, function (match) {\n return symbolMap[match];\n }).replace(/,/g, 'ØŒ');\n },\n week: {\n dow: 6,\n // 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 return ku;\n});","//! moment.js locale configuration\n//! locale : Northern Kurdish [ku-kmr]\n//! authors : Mazlum Özdogan : https://github.com/mergehez\n\n;\n(function (global, factory) {\n typeof exports === 'object' && typeof module !== 'undefined' && typeof require === 'function' ? factory(require('../moment')) : typeof define === 'function' && define.amd ? define(['../moment'], factory) : factory(global.moment);\n})(this, function (moment) {\n 'use strict';\n\n //! moment.js locale configuration\n function processRelativeTime(num, withoutSuffix, key, isFuture) {\n var format = {\n s: ['çend sanîye', 'çend sanîyeyan'],\n ss: [num + ' sanîye', num + ' sanîyeyan'],\n m: ['deqîqeyek', 'deqîqeyekê'],\n mm: [num + ' deqîqe', num + ' deqîqeyan'],\n h: ['saetek', 'saetekê'],\n hh: [num + ' saet', num + ' saetan'],\n d: ['rojek', 'rojekê'],\n dd: [num + ' roj', num + ' rojan'],\n w: ['hefteyek', 'hefteyekê'],\n ww: [num + ' hefte', num + ' hefteyan'],\n M: ['mehek', 'mehekê'],\n MM: [num + ' meh', num + ' mehan'],\n y: ['salek', 'salekê'],\n yy: [num + ' sal', num + ' salan']\n };\n return withoutSuffix ? format[key][0] : format[key][1];\n }\n // function obliqueNumSuffix(num) {\n // if(num.includes(':'))\n // num = parseInt(num.split(':')[0]);\n // else\n // num = parseInt(num);\n // return num == 0 || num % 10 == 1 ? 'ê'\n // : (num > 10 && num % 10 == 0 ? 'î' : 'an');\n // }\n function ezafeNumSuffix(num) {\n num = '' + num;\n var l = num.substring(num.length - 1),\n ll = num.length > 1 ? num.substring(num.length - 2) : '';\n if (!(ll == 12 || ll == 13) && (l == '2' || l == '3' || ll == '50' || l == '70' || l == '80')) return 'yê';\n return 'ê';\n }\n var kuKmr = moment.defineLocale('ku-kmr', {\n // According to the spelling rules defined by the work group of Weqfa Mezopotamyayê (Mesopotamia Foundation)\n // this should be: 'Kanûna Paşîn_Sibat_Adar_Nîsan_Gulan_Hezîran_Tîrmeh_Tebax_ÃŽlon_Çirîya Pêşîn_Çirîya Paşîn_Kanûna Pêşîn'\n // But the names below are more well known and handy\n months: 'Rêbendan_Sibat_Adar_Nîsan_Gulan_Hezîran_Tîrmeh_Tebax_ÃŽlon_Cotmeh_Mijdar_Berfanbar'.split('_'),\n monthsShort: 'Rêb_Sib_Ada_Nîs_Gul_Hez_Tîr_Teb_ÃŽlo_Cot_Mij_Ber'.split('_'),\n monthsParseExact: true,\n weekdays: 'YekÅŸem_DuÅŸem_Sêşem_ÇarÅŸem_PêncÅŸem_ÃŽn_Åžemî'.split('_'),\n weekdaysShort: 'Yek_Du_Sê_Çar_Pên_ÃŽn_Åžem'.split('_'),\n weekdaysMin: 'Ye_Du_Sê_Ça_Pê_ÃŽn_Åže'.split('_'),\n meridiem: function (hours, minutes, isLower) {\n if (hours < 12) {\n return isLower ? 'bn' : 'BN';\n } else {\n return isLower ? 'pn' : 'PN';\n }\n },\n meridiemParse: /bn|BN|pn|PN/,\n longDateFormat: {\n LT: 'HH:mm',\n LTS: 'HH:mm:ss',\n L: 'DD.MM.YYYY',\n LL: 'Do MMMM[a] YYYY[an]',\n LLL: 'Do MMMM[a] YYYY[an] HH:mm',\n LLLL: 'dddd, Do MMMM[a] YYYY[an] HH:mm',\n ll: 'Do MMM[.] YYYY[an]',\n lll: 'Do MMM[.] YYYY[an] HH:mm',\n llll: 'ddd[.], Do MMM[.] YYYY[an] HH:mm'\n },\n calendar: {\n sameDay: '[ÃŽro di saet] LT [de]',\n nextDay: '[Sibê di saet] LT [de]',\n nextWeek: 'dddd [di saet] LT [de]',\n lastDay: '[Duh di saet] LT [de]',\n lastWeek: 'dddd[a borî di saet] LT [de]',\n sameElse: 'L'\n },\n relativeTime: {\n future: 'di %s de',\n past: 'berî %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 w: processRelativeTime,\n ww: processRelativeTime,\n M: processRelativeTime,\n MM: processRelativeTime,\n y: processRelativeTime,\n yy: processRelativeTime\n },\n dayOfMonthOrdinalParse: /\\d{1,2}(?:yê|ê|\\.)/,\n ordinal: function (num, period) {\n var p = period.toLowerCase();\n if (p.includes('w') || p.includes('m')) return num + '.';\n return num + ezafeNumSuffix(num);\n },\n week: {\n dow: 1,\n // 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 return kuKmr;\n});","//! moment.js locale configuration\n//! locale : Kyrgyz [ky]\n//! author : Chyngyz Arystan uulu : https://github.com/chyngyz\n\n;\n(function (global, factory) {\n typeof exports === 'object' && typeof module !== 'undefined' && typeof require === 'function' ? factory(require('../moment')) : typeof define === 'function' && define.amd ? define(['../moment'], factory) : factory(global.moment);\n})(this, function (moment) {\n 'use strict';\n\n //! moment.js locale configuration\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 var ky = moment.defineLocale('ky', {\n months: 'Ñнварь_февраль_март_апрель_май_июнь_июль_авгуÑÑ‚_ÑентÑбрь_октÑбрь_ноÑбрь_декабрь'.split('_'),\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: '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,\n // 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 return ky;\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;\n(function (global, factory) {\n typeof exports === 'object' && typeof module !== 'undefined' && typeof require === 'function' ? factory(require('../moment')) : typeof define === 'function' && define.amd ? define(['../moment'], factory) : factory(global.moment);\n})(this, function (moment) {\n 'use strict';\n\n //! moment.js locale configuration\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 var lb = moment.defineLocale('lb', {\n months: 'Januar_Februar_Mäerz_Abrëll_Mee_Juni_Juli_August_September_Oktober_November_Dezember'.split('_'),\n monthsShort: 'Jan._Febr._Mrz._Abr._Mee_Jun._Jul._Aug._Sept._Okt._Nov._Dez.'.split('_'),\n monthsParseExact: true,\n weekdays: 'Sonndeg_Méindeg_Dënschdeg_Mëttwoch_Donneschdeg_Freideg_Samschdeg'.split('_'),\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,\n // 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 return lb;\n});","//! moment.js locale configuration\n//! locale : Lao [lo]\n//! author : Ryan Hart : https://github.com/ryanhart2\n\n;\n(function (global, factory) {\n typeof exports === 'object' && typeof module !== 'undefined' && typeof require === 'function' ? factory(require('../moment')) : typeof define === 'function' && define.amd ? define(['../moment'], factory) : factory(global.moment);\n})(this, function (moment) {\n 'use strict';\n\n //! moment.js locale configuration\n var lo = moment.defineLocale('lo', {\n months: 'ມັງàºàºàº™_àºàº¸àº¡àºžàº²_ມີນາ_ເມສາ_ພຶດສະພາ_ມິຖຸນາ_àºà»àº¥àº°àºàº»àº”_ສິງຫາ_àºàº±àº™àºàº²_ຕຸລາ_ພະຈິàº_ທັນວາ'.split('_'),\n monthsShort: 'ມັງàºàºàº™_àºàº¸àº¡àºžàº²_ມີນາ_ເມສາ_ພຶດສະພາ_ມິຖຸນາ_àºà»àº¥àº°àºàº»àº”_ສິງຫາ_àºàº±àº™àºàº²_ຕຸລາ_ພະຈິàº_ທັນວາ'.split('_'),\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 return lo;\n});","//! moment.js locale configuration\n//! locale : Lithuanian [lt]\n//! author : Mindaugas MozÅ«ras : https://github.com/mmozuras\n\n;\n(function (global, factory) {\n typeof exports === 'object' && typeof module !== 'undefined' && typeof require === 'function' ? factory(require('../moment')) : typeof define === 'function' && define.amd ? define(['../moment'], factory) : factory(global.moment);\n})(this, function (moment) {\n 'use strict';\n\n //! moment.js locale configuration\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 ? forms(key)[0] : isFuture ? forms(key)[1] : 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 result + translateSingular(number, withoutSuffix, key[0], isFuture);\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 standalone: 'sausis_vasaris_kovas_balandis_gegužė_birželis_liepa_rugpjÅ«tis_rugsÄ—jis_spalis_lapkritis_gruodis'.split('_'),\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 standalone: 'sekmadienis_pirmadienis_antradienis_treÄiadienis_ketvirtadienis_penktadienis_Å¡eÅ¡tadienis'.split('_'),\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,\n // 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 return lt;\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;\n(function (global, factory) {\n typeof exports === 'object' && typeof module !== 'undefined' && typeof require === 'function' ? factory(require('../moment')) : typeof define === 'function' && define.amd ? define(['../moment'], factory) : factory(global.moment);\n})(this, function (moment) {\n 'use strict';\n\n //! moment.js locale configuration\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 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 monthsShort: 'jan_feb_mar_apr_mai_jÅ«n_jÅ«l_aug_sep_okt_nov_dec'.split('_'),\n weekdays: 'svÄ“tdiena_pirmdiena_otrdiena_treÅ¡diena_ceturtdiena_piektdiena_sestdiena'.split('_'),\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,\n // 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 return lv;\n});","//! moment.js locale configuration\n//! locale : Montenegrin [me]\n//! author : Miodrag NikaÄ <miodrag@restartit.me> : https://github.com/miodragnikac\n\n;\n(function (global, factory) {\n typeof exports === 'object' && typeof module !== 'undefined' && typeof require === 'function' ? factory(require('../moment')) : typeof define === 'function' && define.amd ? define(['../moment'], factory) : factory(global.moment);\n})(this, function (moment) {\n 'use strict';\n\n //! moment.js locale configuration\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 ? wordKey[0] : number >= 2 && number <= 4 ? wordKey[1] : 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 number + ' ' + translator.correctGrammaticalCase(number, wordKey);\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 monthsShort: '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 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 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 = ['[proÅ¡le] [nedjelje] [u] LT', '[proÅ¡log] [ponedjeljka] [u] LT', '[proÅ¡log] [utorka] [u] LT', '[proÅ¡le] [srijede] [u] LT', '[proÅ¡log] [Äetvrtka] [u] LT', '[proÅ¡log] [petka] [u] LT', '[proÅ¡le] [subote] [u] LT'];\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,\n // 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 return me;\n});","//! moment.js locale configuration\n//! locale : Maori [mi]\n//! author : John Corrigan <robbiecloset@gmail.com> : https://github.com/johnideal\n\n;\n(function (global, factory) {\n typeof exports === 'object' && typeof module !== 'undefined' && typeof require === 'function' ? factory(require('../moment')) : typeof define === 'function' && define.amd ? define(['../moment'], factory) : factory(global.moment);\n})(this, function (moment) {\n 'use strict';\n\n //! moment.js locale configuration\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 monthsShort: 'Kohi_Hui_Pou_Pae_Hara_Pipi_HÅngoi_Here_Mahu_Whi-nu_Whi-ra_Haki'.split('_'),\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,\n // 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 return mi;\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;\n(function (global, factory) {\n typeof exports === 'object' && typeof module !== 'undefined' && typeof require === 'function' ? factory(require('../moment')) : typeof define === 'function' && define.amd ? define(['../moment'], factory) : factory(global.moment);\n})(this, function (moment) {\n 'use strict';\n\n //! moment.js locale configuration\n var mk = moment.defineLocale('mk', {\n months: 'јануари_февруари_март_април_мај_јуни_јули_авгуÑÑ‚_Ñептември_октомври_ноември_декември'.split('_'),\n monthsShort: 'јан_фев_мар_апр_мај_јун_јул_авг_Ñеп_окт_ное_дек'.split('_'),\n weekdays: 'недела_понеделник_вторник_Ñреда_четврток_петок_Ñабота'.split('_'),\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,\n // 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 return mk;\n});","//! moment.js locale configuration\n//! locale : Malayalam [ml]\n//! author : Floyd Pink : https://github.com/floydpink\n\n;\n(function (global, factory) {\n typeof exports === 'object' && typeof module !== 'undefined' && typeof require === 'function' ? factory(require('../moment')) : typeof define === 'function' && define.amd ? define(['../moment'], factory) : factory(global.moment);\n})(this, function (moment) {\n 'use strict';\n\n //! moment.js locale configuration\n var ml = moment.defineLocale('ml', {\n months: 'ജനàµà´µà´°à´¿_ഫെബàµà´°àµà´µà´°à´¿_മാർചàµà´šàµ_à´à´ªàµà´°à´¿àµ½_മേയàµ_ജൂൺ_ജൂലൈ_à´“à´—à´¸àµà´±àµà´±àµ_സെപàµà´±àµà´±à´‚ബർ_à´’à´•àµà´Ÿàµ‹à´¬àµ¼_നവംബർ_ഡിസംബർ'.split('_'),\n monthsShort: 'ജനàµ._ഫെബàµà´°àµ._മാർ._à´à´ªàµà´°à´¿._മേയàµ_ജൂൺ_ജൂലൈ._à´“à´—._സെപàµà´±àµà´±._à´’à´•àµà´Ÿàµ‹._നവം._ഡിസം.'.split('_'),\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: 'അൽപ നിമിഷങàµà´™àµ¾',\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 (meridiem === 'രാതàµà´°à´¿' && hour >= 4 || meridiem === 'ഉചàµà´š à´•à´´à´¿à´žàµà´žàµ' || meridiem === 'വൈകàµà´¨àµà´¨àµ‡à´°à´‚') {\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 return ml;\n});","//! moment.js locale configuration\n//! locale : Mongolian [mn]\n//! author : Javkhlantugs Nyamdorj : https://github.com/javkhaanj7\n\n;\n(function (global, factory) {\n typeof exports === 'object' && typeof module !== 'undefined' && typeof require === 'function' ? factory(require('../moment')) : typeof define === 'function' && define.amd ? define(['../moment'], factory) : factory(global.moment);\n})(this, function (moment) {\n 'use strict';\n\n //! moment.js locale configuration\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 var mn = moment.defineLocale('mn', {\n months: 'ÐÑгдүгÑÑÑ€ Ñар_Хоёрдугаар Ñар_Гуравдугаар Ñар_ДөрөвдүгÑÑÑ€ Ñар_Тавдугаар Ñар_Зургадугаар Ñар_Долдугаар Ñар_Ðаймдугаар Ñар_ЕÑдүгÑÑÑ€ Ñар_Ðравдугаар Ñар_Ðрван нÑгдүгÑÑÑ€ Ñар_Ðрван хоёрдугаар Ñар'.split('_'),\n monthsShort: '1 Ñар_2 Ñар_3 Ñар_4 Ñар_5 Ñар_6 Ñар_7 Ñар_8 Ñар_9 Ñар_10 Ñар_11 Ñар_12 Ñар'.split('_'),\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 return mn;\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;\n(function (global, factory) {\n typeof exports === 'object' && typeof module !== 'undefined' && typeof require === 'function' ? factory(require('../moment')) : typeof define === 'function' && define.amd ? define(['../moment'], factory) : factory(global.moment);\n})(this, function (moment) {\n 'use strict';\n\n //! moment.js locale configuration\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 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 var mr = moment.defineLocale('mr', {\n months: 'जानेवारी_फेबà¥à¤°à¥à¤µà¤¾à¤°à¥€_मारà¥à¤š_à¤à¤ªà¥à¤°à¤¿à¤²_मे_जून_जà¥à¤²à¥ˆ_ऑगसà¥à¤Ÿ_सपà¥à¤Ÿà¥‡à¤‚बर_ऑकà¥à¤Ÿà¥‹à¤¬à¤°_नोवà¥à¤¹à¥‡à¤‚बर_डिसेंबर'.split('_'),\n monthsShort: 'जाने._फेबà¥à¤°à¥._मारà¥à¤š._à¤à¤ªà¥à¤°à¤¿._मे._जून._जà¥à¤²à¥ˆ._ऑग._सपà¥à¤Ÿà¥‡à¤‚._ऑकà¥à¤Ÿà¥‹._नोवà¥à¤¹à¥‡à¤‚._डिसें.'.split('_'),\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 (meridiem === 'दà¥à¤ªà¤¾à¤°à¥€' || meridiem === 'सायंकाळी' || meridiem === 'रातà¥à¤°à¥€') {\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,\n // 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 return mr;\n});","//! moment.js locale configuration\n//! locale : Malay [ms]\n//! author : Weldan Jamili : https://github.com/weldan\n\n;\n(function (global, factory) {\n typeof exports === 'object' && typeof module !== 'undefined' && typeof require === 'function' ? factory(require('../moment')) : typeof define === 'function' && define.amd ? define(['../moment'], factory) : factory(global.moment);\n})(this, function (moment) {\n 'use strict';\n\n //! moment.js locale configuration\n var ms = moment.defineLocale('ms', {\n months: 'Januari_Februari_Mac_April_Mei_Jun_Julai_Ogos_September_Oktober_November_Disember'.split('_'),\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,\n // 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 return ms;\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;\n(function (global, factory) {\n typeof exports === 'object' && typeof module !== 'undefined' && typeof require === 'function' ? factory(require('../moment')) : typeof define === 'function' && define.amd ? define(['../moment'], factory) : factory(global.moment);\n})(this, function (moment) {\n 'use strict';\n\n //! moment.js locale configuration\n var msMy = moment.defineLocale('ms-my', {\n months: 'Januari_Februari_Mac_April_Mei_Jun_Julai_Ogos_September_Oktober_November_Disember'.split('_'),\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,\n // 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 return msMy;\n});","//! moment.js locale configuration\n//! locale : Maltese (Malta) [mt]\n//! author : Alessandro Maruccia : https://github.com/alesma\n\n;\n(function (global, factory) {\n typeof exports === 'object' && typeof module !== 'undefined' && typeof require === 'function' ? factory(require('../moment')) : typeof define === 'function' && define.amd ? define(['../moment'], factory) : factory(global.moment);\n})(this, function (moment) {\n 'use strict';\n\n //! moment.js locale configuration\n var mt = moment.defineLocale('mt', {\n months: 'Jannar_Frar_Marzu_April_Mejju_Ä unju_Lulju_Awwissu_Settembru_Ottubru_Novembru_DiÄ‹embru'.split('_'),\n monthsShort: 'Jan_Fra_Mar_Apr_Mej_Ä un_Lul_Aww_Set_Ott_Nov_DiÄ‹'.split('_'),\n weekdays: 'Il-Ħadd_It-Tnejn_It-Tlieta_L-Erbgħa_Il-Ħamis_Il-Ä imgħa_Is-Sibt'.split('_'),\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,\n // 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 return mt;\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;\n(function (global, factory) {\n typeof exports === 'object' && typeof module !== 'undefined' && typeof require === 'function' ? factory(require('../moment')) : typeof define === 'function' && define.amd ? define(['../moment'], factory) : factory(global.moment);\n})(this, function (moment) {\n 'use strict';\n\n //! moment.js locale configuration\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 var my = moment.defineLocale('my', {\n months: 'ဇန်နá€á€«á€›á€®_ဖေဖော်á€á€«á€›á€®_မá€á€º_ဧပြီ_မေ_ဇွန်_ဇူလá€á€¯á€„်_သြဂုá€á€º_စက်á€á€„်ဘာ_အောက်á€á€á€¯á€˜á€¬_နá€á€¯á€á€„်ဘာ_ဒီဇင်ဘာ'.split('_'),\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: '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,\n // 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 return my;\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;\n(function (global, factory) {\n typeof exports === 'object' && typeof module !== 'undefined' && typeof require === 'function' ? factory(require('../moment')) : typeof define === 'function' && define.amd ? define(['../moment'], factory) : factory(global.moment);\n})(this, function (moment) {\n 'use strict';\n\n //! moment.js locale configuration\n var nb = moment.defineLocale('nb', {\n months: 'januar_februar_mars_april_mai_juni_juli_august_september_oktober_november_desember'.split('_'),\n monthsShort: '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: 'én time',\n hh: '%d timer',\n d: 'én dag',\n dd: '%d dager',\n w: 'én uke',\n ww: '%d uker',\n M: 'én 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,\n // 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 return nb;\n});","//! moment.js locale configuration\n//! locale : Nepalese [ne]\n//! author : suvash : https://github.com/suvash\n\n;\n(function (global, factory) {\n typeof exports === 'object' && typeof module !== 'undefined' && typeof require === 'function' ? factory(require('../moment')) : typeof define === 'function' && define.amd ? define(['../moment'], factory) : factory(global.moment);\n})(this, function (moment) {\n 'use strict';\n\n //! moment.js locale configuration\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 var ne = moment.defineLocale('ne', {\n months: 'जनवरी_फेबà¥à¤°à¥à¤µà¤°à¥€_मारà¥à¤š_अपà¥à¤°à¤¿à¤²_मई_जà¥à¤¨_जà¥à¤²à¤¾à¤ˆ_अगषà¥à¤Ÿ_सेपà¥à¤Ÿà¥‡à¤®à¥à¤¬à¤°_अकà¥à¤Ÿà¥‹à¤¬à¤°_नोà¤à¥‡à¤®à¥à¤¬à¤°_डिसेमà¥à¤¬à¤°'.split('_'),\n monthsShort: 'जन._फेबà¥à¤°à¥._मारà¥à¤š_अपà¥à¤°à¤¿._मई_जà¥à¤¨_जà¥à¤²à¤¾à¤ˆ._अग._सेपà¥à¤Ÿ._अकà¥à¤Ÿà¥‹._नोà¤à¥‡._डिसे.'.split('_'),\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, 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,\n // 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 return ne;\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;\n(function (global, factory) {\n typeof exports === 'object' && typeof module !== 'undefined' && typeof require === 'function' ? factory(require('../moment')) : typeof define === 'function' && define.amd ? define(['../moment'], factory) : factory(global.moment);\n})(this, function (moment) {\n 'use strict';\n\n //! moment.js locale configuration\n var monthsShortWithDots = 'jan._feb._mrt._apr._mei_jun._jul._aug._sep._okt._nov._dec.'.split('_'),\n monthsShortWithoutDots = 'jan_feb_mrt_apr_mei_jun_jul_aug_sep_okt_nov_dec'.split('_'),\n monthsParse = [/^jan/i, /^feb/i, /^(maart|mrt\\.?)$/i, /^apr/i, /^mei$/i, /^jun[i.]?$/i, /^jul[i.]?$/i, /^aug/i, /^sep/i, /^okt/i, /^nov/i, /^dec/i],\n monthsRegex = /^(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 var nl = moment.defineLocale('nl', {\n months: 'januari_februari_maart_april_mei_juni_juli_augustus_september_oktober_november_december'.split('_'),\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 monthsRegex: monthsRegex,\n monthsShortRegex: monthsRegex,\n monthsStrictRegex: /^(januari|februari|maart|april|mei|ju[nl]i|augustus|september|oktober|november|december)/i,\n monthsShortStrictRegex: /^(jan\\.?|feb\\.?|mrt\\.?|apr\\.?|mei|ju[nl]\\.?|aug\\.?|sep\\.?|okt\\.?|nov\\.?|dec\\.?)/i,\n monthsParse: monthsParse,\n longMonthsParse: monthsParse,\n shortMonthsParse: monthsParse,\n weekdays: '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 number + (number === 1 || number === 8 || number >= 20 ? 'ste' : 'de');\n },\n week: {\n dow: 1,\n // 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 return nl;\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;\n(function (global, factory) {\n typeof exports === 'object' && typeof module !== 'undefined' && typeof require === 'function' ? factory(require('../moment')) : typeof define === 'function' && define.amd ? define(['../moment'], factory) : factory(global.moment);\n})(this, function (moment) {\n 'use strict';\n\n //! moment.js locale configuration\n var monthsShortWithDots = 'jan._feb._mrt._apr._mei_jun._jul._aug._sep._okt._nov._dec.'.split('_'),\n monthsShortWithoutDots = 'jan_feb_mrt_apr_mei_jun_jul_aug_sep_okt_nov_dec'.split('_'),\n monthsParse = [/^jan/i, /^feb/i, /^(maart|mrt\\.?)$/i, /^apr/i, /^mei$/i, /^jun[i.]?$/i, /^jul[i.]?$/i, /^aug/i, /^sep/i, /^okt/i, /^nov/i, /^dec/i],\n monthsRegex = /^(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 var nlBe = moment.defineLocale('nl-be', {\n months: 'januari_februari_maart_april_mei_juni_juli_augustus_september_oktober_november_december'.split('_'),\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 monthsRegex: monthsRegex,\n monthsShortRegex: monthsRegex,\n monthsStrictRegex: /^(januari|februari|maart|april|mei|ju[nl]i|augustus|september|oktober|november|december)/i,\n monthsShortStrictRegex: /^(jan\\.?|feb\\.?|mrt\\.?|apr\\.?|mei|ju[nl]\\.?|aug\\.?|sep\\.?|okt\\.?|nov\\.?|dec\\.?)/i,\n monthsParse: monthsParse,\n longMonthsParse: monthsParse,\n shortMonthsParse: monthsParse,\n weekdays: '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 number + (number === 1 || number === 8 || number >= 20 ? 'ste' : 'de');\n },\n week: {\n dow: 1,\n // 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 return nlBe;\n});","//! moment.js locale configuration\n//! locale : Nynorsk [nn]\n//! authors : https://github.com/mechuwind\n//! Stephen Ramthun : https://github.com/stephenramthun\n\n;\n(function (global, factory) {\n typeof exports === 'object' && typeof module !== 'undefined' && typeof require === 'function' ? factory(require('../moment')) : typeof define === 'function' && define.amd ? define(['../moment'], factory) : factory(global.moment);\n})(this, function (moment) {\n 'use strict';\n\n //! moment.js locale configuration\n var nn = moment.defineLocale('nn', {\n months: 'januar_februar_mars_april_mai_juni_juli_august_september_oktober_november_desember'.split('_'),\n monthsShort: '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,\n // 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 return nn;\n});","//! moment.js locale configuration\n//! locale : Occitan, lengadocian dialecte [oc-lnc]\n//! author : Quentin PAGÈS : https://github.com/Quenty31\n\n;\n(function (global, factory) {\n typeof exports === 'object' && typeof module !== 'undefined' && typeof require === 'function' ? factory(require('../moment')) : typeof define === 'function' && define.amd ? define(['../moment'], factory) : factory(global.moment);\n})(this, function (moment) {\n 'use strict';\n\n //! moment.js locale configuration\n var ocLnc = moment.defineLocale('oc-lnc', {\n months: {\n standalone: 'genièr_febrièr_març_abril_mai_junh_julhet_agost_setembre_octòbre_novembre_decembre'.split('_'),\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 isFormat: /D[oD]?(\\s)+MMMM/\n },\n monthsShort: 'gen._febr._març_abr._mai_junh_julh._ago._set._oct._nov._dec.'.split('_'),\n monthsParseExact: true,\n weekdays: 'dimenge_diluns_dimars_dimècres_dijòus_divendres_dissabte'.split('_'),\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 = number === 1 ? 'r' : number === 2 ? 'n' : number === 3 ? 'r' : number === 4 ? 't' : 'è';\n if (period === 'w' || period === 'W') {\n output = 'a';\n }\n return number + output;\n },\n week: {\n dow: 1,\n // Monday is the first day of the week.\n doy: 4\n }\n });\n return ocLnc;\n});","//! moment.js locale configuration\n//! locale : Punjabi (India) [pa-in]\n//! author : Harpreet Singh : https://github.com/harpreetkhalsagtbit\n\n;\n(function (global, factory) {\n typeof exports === 'object' && typeof module !== 'undefined' && typeof require === 'function' ? factory(require('../moment')) : typeof define === 'function' && define.amd ? define(['../moment'], factory) : factory(global.moment);\n})(this, function (moment) {\n 'use strict';\n\n //! moment.js locale configuration\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 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 monthsShort: 'ਜਨਵਰੀ_ਫ਼ਰਵਰੀ_ਮਾਰਚ_ਅਪà©à¨°à©ˆà¨²_ਮਈ_ਜੂਨ_ਜà©à¨²à¨¾à¨ˆ_ਅਗਸਤ_ਸਤੰਬਰ_ਅਕਤੂਬਰ_ਨਵੰਬਰ_ਦਸੰਬਰ'.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 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,\n // 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 return paIn;\n});","//! moment.js locale configuration\n//! locale : Polish [pl]\n//! author : Rafal Hirsz : https://github.com/evoL\n\n;\n(function (global, factory) {\n typeof exports === 'object' && typeof module !== 'undefined' && typeof require === 'function' ? factory(require('../moment')) : typeof define === 'function' && define.amd ? define(['../moment'], factory) : factory(global.moment);\n})(this, function (moment) {\n 'use strict';\n\n //! moment.js locale configuration\n var monthsNominative = 'styczeÅ„_luty_marzec_kwiecieÅ„_maj_czerwiec_lipiec_sierpieÅ„_wrzesieÅ„_październik_listopad_grudzieÅ„'.split('_'),\n monthsSubjective = 'stycznia_lutego_marca_kwietnia_maja_czerwca_lipca_sierpnia_wrzeÅ›nia_października_listopada_grudnia'.split('_'),\n monthsParse = [/^sty/i, /^lut/i, /^mar/i, /^kwi/i, /^maj/i, /^cze/i, /^lip/i, /^sie/i, /^wrz/i, /^paź/i, /^lis/i, /^gru/i];\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 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: '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 case 2:\n return '[We wtorek o] LT';\n case 3:\n return '[W Å›rodÄ™ o] LT';\n case 6:\n return '[W sobotÄ™ o] LT';\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,\n // 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 return pl;\n});","//! moment.js locale configuration\n//! locale : Portuguese [pt]\n//! author : Jefferson : https://github.com/jalex79\n\n;\n(function (global, factory) {\n typeof exports === 'object' && typeof module !== 'undefined' && typeof require === 'function' ? factory(require('../moment')) : typeof define === 'function' && define.amd ? define(['../moment'], factory) : factory(global.moment);\n})(this, function (moment) {\n 'use strict';\n\n //! moment.js locale configuration\n var pt = moment.defineLocale('pt', {\n months: 'janeiro_fevereiro_março_abril_maio_junho_julho_agosto_setembro_outubro_novembro_dezembro'.split('_'),\n monthsShort: 'jan_fev_mar_abr_mai_jun_jul_ago_set_out_nov_dez'.split('_'),\n weekdays: 'Domingo_Segunda-feira_Terça-feira_Quarta-feira_Quinta-feira_Sexta-feira_Sábado'.split('_'),\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 ? '[Ú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,\n // 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 return pt;\n});","//! moment.js locale configuration\n//! locale : Portuguese (Brazil) [pt-br]\n//! author : Caio Ribeiro Pereira : https://github.com/caio-ribeiro-pereira\n\n;\n(function (global, factory) {\n typeof exports === 'object' && typeof module !== 'undefined' && typeof require === 'function' ? factory(require('../moment')) : typeof define === 'function' && define.amd ? define(['../moment'], factory) : factory(global.moment);\n})(this, function (moment) {\n 'use strict';\n\n //! moment.js locale configuration\n var ptBr = moment.defineLocale('pt-br', {\n months: 'janeiro_fevereiro_março_abril_maio_junho_julho_agosto_setembro_outubro_novembro_dezembro'.split('_'),\n monthsShort: 'jan_fev_mar_abr_mai_jun_jul_ago_set_out_nov_dez'.split('_'),\n weekdays: 'domingo_segunda-feira_terça-feira_quarta-feira_quinta-feira_sexta-feira_sábado'.split('_'),\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 ? '[Ú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 return ptBr;\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;\n(function (global, factory) {\n typeof exports === 'object' && typeof module !== 'undefined' && typeof require === 'function' ? factory(require('../moment')) : typeof define === 'function' && define.amd ? define(['../moment'], factory) : factory(global.moment);\n})(this, function (moment) {\n 'use strict';\n\n //! moment.js locale configuration\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 var ro = moment.defineLocale('ro', {\n months: 'ianuarie_februarie_martie_aprilie_mai_iunie_iulie_august_septembrie_octombrie_noiembrie_decembrie'.split('_'),\n monthsShort: 'ian._feb._mart._apr._mai_iun._iul._aug._sept._oct._nov._dec.'.split('_'),\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,\n // 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 return ro;\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;\n(function (global, factory) {\n typeof exports === 'object' && typeof module !== 'undefined' && typeof require === 'function' ? factory(require('../moment')) : typeof define === 'function' && define.amd ? define(['../moment'], factory) : factory(global.moment);\n})(this, function (moment) {\n 'use strict';\n\n //! moment.js locale configuration\n function plural(word, num) {\n var forms = word.split('_');\n return num % 10 === 1 && num % 100 !== 11 ? forms[0] : num % 10 >= 2 && num % 10 <= 4 && (num % 100 < 10 || num % 100 >= 20) ? forms[1] : 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 = [/^Ñнв/i, /^фев/i, /^мар/i, /^апр/i, /^ма[йÑ]/i, /^июн/i, /^июл/i, /^авг/i, /^Ñен/i, /^окт/i, /^ноÑ/i, /^дек/i];\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 standalone: 'Ñнварь_февраль_март_апрель_май_июнь_июль_авгуÑÑ‚_ÑентÑбрь_октÑбрь_ноÑбрь_декабрь'.split('_')\n },\n monthsShort: {\n // по CLDR именно \"июл.\" и \"июн.\", но какой ÑмыÑл менÑÑ‚ÑŒ букву на точку?\n format: 'Ñнв._февр._мар._апр._маÑ_июнÑ_июлÑ_авг._Ñент._окт._ноÑб._дек.'.split('_'),\n standalone: 'Ñнв._февр._март_апр._май_июнь_июль_авг._Ñент._окт._ноÑб._дек.'.split('_')\n },\n weekdays: {\n standalone: 'воÑкреÑенье_понедельник_вторник_Ñреда_четверг_пÑтница_Ñуббота'.split('_'),\n format: 'воÑкреÑенье_понедельник_вторник_Ñреду_четверг_пÑтницу_Ñубботу'.split('_'),\n isFormat: /\\[ ?[Вв] ?(?:прошлую|Ñледующую|Ñту)? ?] ?dddd/\n },\n weekdaysShort: 'вÑ_пн_вт_ÑÑ€_чт_пт_Ñб'.split('_'),\n weekdaysMin: 'вÑ_пн_вт_ÑÑ€_чт_пт_Ñб'.split('_'),\n monthsParse: monthsParse,\n longMonthsParse: monthsParse,\n shortMonthsParse: monthsParse,\n // полные Ð½Ð°Ð·Ð²Ð°Ð½Ð¸Ñ Ñ Ð¿Ð°Ð´ÐµÐ¶Ð°Ð¼Ð¸, по три буквы, Ð´Ð»Ñ Ð½ÐµÐºÐ¾Ñ‚Ð¾Ñ€Ñ‹Ñ…, по 4 буквы, ÑÐ¾ÐºÑ€Ð°Ñ‰ÐµÐ½Ð¸Ñ Ñ Ñ‚Ð¾Ñ‡ÐºÐ¾Ð¹ и без точки\n monthsRegex: /^(Ñнвар[ÑŒÑ]|Ñнв\\.?|феврал[ÑŒÑ]|февр?\\.?|марта?|мар\\.?|апрел[ÑŒÑ]|апр\\.?|ма[йÑ]|июн[ÑŒÑ]|июн\\.?|июл[ÑŒÑ]|июл\\.?|авгуÑта?|авг\\.?|ÑентÑбр[ÑŒÑ]|Ñент?\\.?|октÑбр[ÑŒÑ]|окт\\.?|ноÑбр[ÑŒÑ]|ноÑб?\\.?|декабр[ÑŒÑ]|дек\\.?)/i,\n // ÐºÐ¾Ð¿Ð¸Ñ Ð¿Ñ€ÐµÐ´Ñ‹Ð´ÑƒÑ‰ÐµÐ³Ð¾\n monthsShortRegex: /^(Ñнвар[ÑŒÑ]|Ñнв\\.?|феврал[ÑŒÑ]|февр?\\.?|марта?|мар\\.?|апрел[ÑŒÑ]|апр\\.?|ма[йÑ]|июн[ÑŒÑ]|июн\\.?|июл[ÑŒÑ]|июл\\.?|авгуÑта?|авг\\.?|ÑентÑбр[ÑŒÑ]|Ñент?\\.?|октÑбр[ÑŒÑ]|окт\\.?|ноÑбр[ÑŒÑ]|ноÑб?\\.?|декабр[ÑŒÑ]|дек\\.?)/i,\n // полные Ð½Ð°Ð·Ð²Ð°Ð½Ð¸Ñ Ñ Ð¿Ð°Ð´ÐµÐ¶Ð°Ð¼Ð¸\n monthsStrictRegex: /^(Ñнвар[ÑÑŒ]|феврал[ÑÑŒ]|марта?|апрел[ÑÑŒ]|ма[Ñй]|июн[ÑÑŒ]|июл[ÑÑŒ]|авгуÑта?|ÑентÑбр[ÑÑŒ]|октÑбр[ÑÑŒ]|ноÑбр[ÑÑŒ]|декабр[ÑÑŒ])/i,\n // Выражение, которое ÑоответÑтвует только Ñокращённым формам\n monthsShortStrictRegex: /^(Ñнв\\.|февр?\\.|мар[Ñ‚.]|апр\\.|ма[Ñй]|июн[ÑŒÑ.]|июл[ÑŒÑ.]|авг\\.|Ñент?\\.|окт\\.|ноÑб?\\.|дек\\.)/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,\n // 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 return ru;\n});","//! moment.js locale configuration\n//! locale : Sindhi [sd]\n//! author : Narain Sagar : https://github.com/narainsagar\n\n;\n(function (global, factory) {\n typeof exports === 'object' && typeof module !== 'undefined' && typeof require === 'function' ? factory(require('../moment')) : typeof define === 'function' && define.amd ? define(['../moment'], factory) : factory(global.moment);\n})(this, function (moment) {\n 'use strict';\n\n //! moment.js locale configuration\n var months = ['جنوري', 'Ùيبروري', 'مارچ', 'اپريل', 'مئي', 'جون', 'جولاءÙ', 'آگسٽ', 'سيپٽمبر', 'آڪٽوبر', 'نومبر', 'ڊسمبر'],\n days = ['آچر', 'سومر', 'اڱارو', 'اربع', 'خميس', 'جمع', 'ڇنڇر'];\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,\n // 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 return sd;\n});","//! moment.js locale configuration\n//! locale : Northern Sami [se]\n//! authors : BÃ¥rd Rolstad Henriksen : https://github.com/karamell\n\n;\n(function (global, factory) {\n typeof exports === 'object' && typeof module !== 'undefined' && typeof require === 'function' ? factory(require('../moment')) : typeof define === 'function' && define.amd ? define(['../moment'], factory) : factory(global.moment);\n})(this, function (moment) {\n 'use strict';\n\n //! moment.js locale configuration\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 monthsShort: 'oÄ‘Ä‘j_guov_njuk_cuo_mies_geas_suoi_borg_ÄakÄ_golg_skáb_juov'.split('_'),\n weekdays: 'sotnabeaivi_vuossárga_maÅ‹Å‹ebárga_gaskavahkku_duorastat_bearjadat_lávvardat'.split('_'),\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,\n // 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 return se;\n});","//! moment.js locale configuration\n//! locale : Sinhalese [si]\n//! author : Sampath Sitinamaluwa : https://github.com/sampathsris\n\n;\n(function (global, factory) {\n typeof exports === 'object' && typeof module !== 'undefined' && typeof require === 'function' ? factory(require('../moment')) : typeof define === 'function' && define.amd ? define(['../moment'], factory) : factory(global.moment);\n})(this, function (moment) {\n 'use strict';\n\n //! moment.js locale configuration\n\n /*jshint -W100*/\n var si = moment.defineLocale('si', {\n months: 'ජනවà·à¶»à·’_පෙබරවà·à¶»à·’_මà·à¶»à·Šà¶à·”_අප්â€à¶»à·šà¶½à·Š_මà·à¶ºà·’_ජූනි_ජූලි_අගà·à·ƒà·Šà¶à·”_à·ƒà·à¶´à·Šà¶à·à¶¸à·Šà¶¶à¶»à·Š_ඔක්à¶à·à¶¶à¶»à·Š_නොවà·à¶¸à·Šà¶¶à¶»à·Š_දෙසà·à¶¸à·Šà¶¶à¶»à·Š'.split('_'),\n monthsShort: 'ජන_පෙබ_මà·à¶»à·Š_අප්_මà·à¶ºà·’_ජූනි_ජූලි_අගà·_à·ƒà·à¶´à·Š_ඔක්_නොවà·_දෙසà·'.split('_'),\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: '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 return si;\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;\n(function (global, factory) {\n typeof exports === 'object' && typeof module !== 'undefined' && typeof require === 'function' ? factory(require('../moment')) : typeof define === 'function' && define.amd ? define(['../moment'], factory) : factory(global.moment);\n})(this, function (moment) {\n 'use strict';\n\n //! moment.js locale configuration\n var months = 'január_február_marec_aprÃl_máj_jún_júl_august_september_október_november_december'.split('_'),\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':\n // 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':\n // 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':\n // a minute / in a minute / a minute ago\n return withoutSuffix ? 'minúta' : isFuture ? 'minútu' : 'minútou';\n case 'mm':\n // 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':\n // an hour / in an hour / an hour ago\n return withoutSuffix ? 'hodina' : isFuture ? 'hodinu' : 'hodinou';\n case 'hh':\n // 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':\n // a day / in a day / a day ago\n return withoutSuffix || isFuture ? 'deň' : 'dňom';\n case 'dd':\n // 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':\n // a month / in a month / a month ago\n return withoutSuffix || isFuture ? 'mesiac' : 'mesiacom';\n case 'MM':\n // 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':\n // a year / in a year / a year ago\n return withoutSuffix || isFuture ? 'rok' : 'rokom';\n case 'yy':\n // 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 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,\n // 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 return sk;\n});","//! moment.js locale configuration\n//! locale : Slovenian [sl]\n//! author : Robert SedovÅ¡ek : https://github.com/sedovsek\n\n;\n(function (global, factory) {\n typeof exports === 'object' && typeof module !== 'undefined' && typeof require === 'function' ? factory(require('../moment')) : typeof define === 'function' && define.amd ? define(['../moment'], factory) : factory(global.moment);\n})(this, function (moment) {\n 'use strict';\n\n //! moment.js locale configuration\n function processRelativeTime(number, withoutSuffix, key, isFuture) {\n var result = number + ' ';\n switch (key) {\n case 's':\n return withoutSuffix || isFuture ? 'nekaj sekund' : '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 var sl = moment.defineLocale('sl', {\n months: 'januar_februar_marec_april_maj_junij_julij_avgust_september_oktober_november_december'.split('_'),\n monthsShort: 'jan._feb._mar._apr._maj._jun._jul._avg._sep._okt._nov._dec.'.split('_'),\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 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,\n // 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 return sl;\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;\n(function (global, factory) {\n typeof exports === 'object' && typeof module !== 'undefined' && typeof require === 'function' ? factory(require('../moment')) : typeof define === 'function' && define.amd ? define(['../moment'], factory) : factory(global.moment);\n})(this, function (moment) {\n 'use strict';\n\n //! moment.js locale configuration\n var sq = moment.defineLocale('sq', {\n months: 'Janar_Shkurt_Mars_Prill_Maj_Qershor_Korrik_Gusht_Shtator_Tetor_Nëntor_Dhjetor'.split('_'),\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 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,\n // 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 return sq;\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;\n(function (global, factory) {\n typeof exports === 'object' && typeof module !== 'undefined' && typeof require === 'function' ? factory(require('../moment')) : typeof define === 'function' && define.amd ? define(['../moment'], factory) : factory(global.moment);\n})(this, function (moment) {\n 'use strict';\n\n //! moment.js locale configuration\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 (number % 10 >= 1 && number % 10 <= 4 && (number % 100 < 10 || number % 100 >= 20)) {\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 if (key.length === 1) {\n // Nominativ\n if (key === 'y' && withoutSuffix) return 'jedna godina';\n return isFuture || withoutSuffix ? wordKey[0] : wordKey[1];\n }\n word = translator.correctGrammaticalCase(number, wordKey);\n // Nominativ\n if (key === 'yy' && withoutSuffix && word === 'godinu') {\n return number + ' godina';\n }\n return number + ' ' + word;\n }\n };\n var sr = moment.defineLocale('sr', {\n months: 'januar_februar_mart_april_maj_jun_jul_avgust_septembar_oktobar_novembar_decembar'.split('_'),\n monthsShort: '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 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 = ['[proÅ¡le] [nedelje] [u] LT', '[proÅ¡log] [ponedeljka] [u] LT', '[proÅ¡log] [utorka] [u] LT', '[proÅ¡le] [srede] [u] LT', '[proÅ¡log] [Äetvrtka] [u] LT', '[proÅ¡log] [petka] [u] LT', '[proÅ¡le] [subote] [u] LT'];\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,\n // 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 return sr;\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;\n(function (global, factory) {\n typeof exports === 'object' && typeof module !== 'undefined' && typeof require === 'function' ? factory(require('../moment')) : typeof define === 'function' && define.amd ? define(['../moment'], factory) : factory(global.moment);\n})(this, function (moment) {\n 'use strict';\n\n //! moment.js locale configuration\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 (number % 10 >= 1 && number % 10 <= 4 && (number % 100 < 10 || number % 100 >= 20)) {\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 if (key.length === 1) {\n // Nominativ\n if (key === 'y' && withoutSuffix) return 'једна година';\n return isFuture || withoutSuffix ? wordKey[0] : wordKey[1];\n }\n word = translator.correctGrammaticalCase(number, wordKey);\n // Nominativ\n if (key === 'yy' && withoutSuffix && word === 'годину') {\n return number + ' година';\n }\n return number + ' ' + word;\n }\n };\n var srCyrl = moment.defineLocale('sr-cyrl', {\n months: 'јануар_фебруар_март_април_мај_јун_јул_авгуÑÑ‚_Ñептембар_октобар_новембар_децембар'.split('_'),\n monthsShort: 'јан._феб._мар._апр._мај_јун_јул_авг._Ñеп._окт._нов._дец.'.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 = ['[прошле] [недеље] [у] LT', '[прошлог] [понедељка] [у] LT', '[прошлог] [уторка] [у] LT', '[прошле] [Ñреде] [у] LT', '[прошлог] [четвртка] [у] LT', '[прошлог] [петка] [у] LT', '[прошле] [Ñуботе] [у] LT'];\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,\n // 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 return srCyrl;\n});","//! moment.js locale configuration\n//! locale : siSwati [ss]\n//! author : Nicolai Davies<mail@nicolai.io> : https://github.com/nicolaidavies\n\n;\n(function (global, factory) {\n typeof exports === 'object' && typeof module !== 'undefined' && typeof require === 'function' ? factory(require('../moment')) : typeof define === 'function' && define.amd ? define(['../moment'], factory) : factory(global.moment);\n})(this, function (moment) {\n 'use strict';\n\n //! moment.js locale configuration\n var ss = moment.defineLocale('ss', {\n months: \"Bhimbidvwane_Indlovana_Indlov'lenkhulu_Mabasa_Inkhwekhweti_Inhlaba_Kholwane_Ingci_Inyoni_Imphala_Lweti_Ingongoni\".split('_'),\n monthsShort: 'Bhi_Ina_Inu_Mab_Ink_Inh_Kho_Igc_Iny_Imp_Lwe_Igo'.split('_'),\n weekdays: 'Lisontfo_Umsombuluko_Lesibili_Lesitsatfu_Lesine_Lesihlanu_Umgcibelo'.split('_'),\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,\n // 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 return ss;\n});","//! moment.js locale configuration\n//! locale : Swedish [sv]\n//! author : Jens Alm : https://github.com/ulmus\n\n;\n(function (global, factory) {\n typeof exports === 'object' && typeof module !== 'undefined' && typeof require === 'function' ? factory(require('../moment')) : typeof define === 'function' && define.amd ? define(['../moment'], factory) : factory(global.moment);\n})(this, function (moment) {\n 'use strict';\n\n //! moment.js locale configuration\n var sv = moment.defineLocale('sv', {\n months: 'januari_februari_mars_april_maj_juni_juli_augusti_september_oktober_november_december'.split('_'),\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 = ~~(number % 100 / 10) === 1 ? ':e' : b === 1 ? ':a' : b === 2 ? ':a' : b === 3 ? ':e' : ':e';\n return number + output;\n },\n week: {\n dow: 1,\n // 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 return sv;\n});","//! moment.js locale configuration\n//! locale : Swahili [sw]\n//! author : Fahad Kassim : https://github.com/fadsel\n\n;\n(function (global, factory) {\n typeof exports === 'object' && typeof module !== 'undefined' && typeof require === 'function' ? factory(require('../moment')) : typeof define === 'function' && define.amd ? define(['../moment'], factory) : factory(global.moment);\n})(this, function (moment) {\n 'use strict';\n\n //! moment.js locale configuration\n var sw = moment.defineLocale('sw', {\n months: 'Januari_Februari_Machi_Aprili_Mei_Juni_Julai_Agosti_Septemba_Oktoba_Novemba_Desemba'.split('_'),\n monthsShort: 'Jan_Feb_Mac_Apr_Mei_Jun_Jul_Ago_Sep_Okt_Nov_Des'.split('_'),\n weekdays: 'Jumapili_Jumatatu_Jumanne_Jumatano_Alhamisi_Ijumaa_Jumamosi'.split('_'),\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,\n // 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 return sw;\n});","//! moment.js locale configuration\n//! locale : Tamil [ta]\n//! author : Arjunkumar Krishnamoorthy : https://github.com/tk120404\n\n;\n(function (global, factory) {\n typeof exports === 'object' && typeof module !== 'undefined' && typeof require === 'function' ? factory(require('../moment')) : typeof define === 'function' && define.amd ? define(['../moment'], factory) : factory(global.moment);\n})(this, function (moment) {\n 'use strict';\n\n //! moment.js locale configuration\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 var ta = moment.defineLocale('ta', {\n months: 'ஜனவரி_பிபà¯à®°à®µà®°à®¿_மாரà¯à®šà¯_à®à®ªà¯à®°à®²à¯_மே_ஜூனà¯_ஜூலை_ஆகஸà¯à®Ÿà¯_செபà¯à®Ÿà¯†à®®à¯à®ªà®°à¯_அகà¯à®Ÿà¯‡à®¾à®ªà®°à¯_நவமà¯à®ªà®°à¯_டிசமà¯à®ªà®°à¯'.split('_'),\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: '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,\n // 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 return ta;\n});","//! moment.js locale configuration\n//! locale : Telugu [te]\n//! author : Krishna Chaitanya Thota : https://github.com/kcthota\n\n;\n(function (global, factory) {\n typeof exports === 'object' && typeof module !== 'undefined' && typeof require === 'function' ? factory(require('../moment')) : typeof define === 'function' && define.amd ? define(['../moment'], factory) : factory(global.moment);\n})(this, function (moment) {\n 'use strict';\n\n //! moment.js locale configuration\n var te = moment.defineLocale('te', {\n months: 'జనవరి_à°«à°¿à°¬à±à°°à°µà°°à°¿_మారà±à°šà°¿_à°à°ªà±à°°à°¿à°²à±_మే_జూనà±_à°œà±à°²à±ˆ_ఆగసà±à°Ÿà±_సెపà±à°Ÿà±†à°‚బరà±_à°…à°•à±à°Ÿà±‹à°¬à°°à±_నవంబరà±_డిసెంబరà±'.split('_'),\n monthsShort: 'జన._à°«à°¿à°¬à±à°°._మారà±à°šà°¿_à°à°ªà±à°°à°¿._మే_జూనà±_à°œà±à°²à±ˆ_ఆగ._సెపà±._à°…à°•à±à°Ÿà±‹._నవ._డిసె.'.split('_'),\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: 'కొనà±à°¨à°¿ à°•à±à°·à°£à°¾à°²à±',\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,\n // 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 return te;\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;\n(function (global, factory) {\n typeof exports === 'object' && typeof module !== 'undefined' && typeof require === 'function' ? factory(require('../moment')) : typeof define === 'function' && define.amd ? define(['../moment'], factory) : factory(global.moment);\n})(this, function (moment) {\n 'use strict';\n\n //! moment.js locale configuration\n var tet = moment.defineLocale('tet', {\n months: 'Janeiru_Fevereiru_Marsu_Abril_Maiu_Juñu_Jullu_Agustu_Setembru_Outubru_Novembru_Dezembru'.split('_'),\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 = ~~(number % 100 / 10) === 1 ? 'th' : b === 1 ? 'st' : b === 2 ? 'nd' : b === 3 ? 'rd' : 'th';\n return number + output;\n },\n week: {\n dow: 1,\n // 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 return tet;\n});","//! moment.js locale configuration\n//! locale : Tajik [tg]\n//! author : Orif N. Jr. : https://github.com/orif-jr\n\n;\n(function (global, factory) {\n typeof exports === 'object' && typeof module !== 'undefined' && typeof require === 'function' ? factory(require('../moment')) : typeof define === 'function' && define.amd ? define(['../moment'], factory) : factory(global.moment);\n})(this, function (moment) {\n 'use strict';\n\n //! moment.js locale configuration\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 var tg = moment.defineLocale('tg', {\n months: {\n format: 'Ñнвари_феврали_марти_апрели_майи_июни_июли_авгуÑти_ÑентÑбри_октÑбри_ноÑбри_декабри'.split('_'),\n standalone: 'Ñнвар_феврал_март_апрел_май_июн_июл_авгуÑÑ‚_ÑентÑбр_октÑбр_ноÑбр_декабр'.split('_')\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: '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,\n // 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 return tg;\n});","//! moment.js locale configuration\n//! locale : Thai [th]\n//! author : Kridsada Thanabulpong : https://github.com/sirn\n\n;\n(function (global, factory) {\n typeof exports === 'object' && typeof module !== 'undefined' && typeof require === 'function' ? factory(require('../moment')) : typeof define === 'function' && define.amd ? define(['../moment'], factory) : factory(global.moment);\n})(this, function (moment) {\n 'use strict';\n\n //! moment.js locale configuration\n var th = moment.defineLocale('th', {\n months: 'มà¸à¸£à¸²à¸„ม_à¸à¸¸à¸¡à¸ าพันธ์_มีนาคม_เมษายน_พฤษภาคม_มิถุนายน_à¸à¸£à¸à¸Žà¸²à¸„ม_สิงหาคม_à¸à¸±à¸™à¸¢à¸²à¸¢à¸™_ตุลาคม_พฤศจิà¸à¸²à¸¢à¸™_ธันวาคม'.split('_'),\n monthsShort: 'ม.ค._à¸.พ._มี.ค._เม.ย._พ.ค._มิ.ย._à¸.ค._ส.ค._à¸.ย._ต.ค._พ.ย._ธ.ค.'.split('_'),\n monthsParseExact: true,\n weekdays: 'à¸à¸²à¸—ิตย์_จันทร์_à¸à¸±à¸‡à¸„าร_พุธ_พฤหัสบดี_ศุà¸à¸£à¹Œ_เสาร์'.split('_'),\n weekdaysShort: 'à¸à¸²à¸—ิตย์_จันทร์_à¸à¸±à¸‡à¸„าร_พุธ_พฤหัส_ศุà¸à¸£à¹Œ_เสาร์'.split('_'),\n // 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 return th;\n});","//! moment.js locale configuration\n//! locale : Turkmen [tk]\n//! author : Atamyrat Abdyrahmanov : https://github.com/atamyratabdy\n\n;\n(function (global, factory) {\n typeof exports === 'object' && typeof module !== 'undefined' && typeof require === 'function' ? factory(require('../moment')) : typeof define === 'function' && define.amd ? define(['../moment'], factory) : factory(global.moment);\n})(this, function (moment) {\n 'use strict';\n\n //! moment.js locale configuration\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 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 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 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,\n // 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 return tk;\n});","//! moment.js locale configuration\n//! locale : Tagalog (Philippines) [tl-ph]\n//! author : Dan Hagman : https://github.com/hagmandan\n\n;\n(function (global, factory) {\n typeof exports === 'object' && typeof module !== 'undefined' && typeof require === 'function' ? factory(require('../moment')) : typeof define === 'function' && define.amd ? define(['../moment'], factory) : factory(global.moment);\n})(this, function (moment) {\n 'use strict';\n\n //! moment.js locale configuration\n var tlPh = moment.defineLocale('tl-ph', {\n months: 'Enero_Pebrero_Marso_Abril_Mayo_Hunyo_Hulyo_Agosto_Setyembre_Oktubre_Nobyembre_Disyembre'.split('_'),\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 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,\n // 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 return tlPh;\n});","//! moment.js locale configuration\n//! locale : Klingon [tlh]\n//! author : Dominika Kruk : https://github.com/amaranthrose\n\n;\n(function (global, factory) {\n typeof exports === 'object' && typeof module !== 'undefined' && typeof require === 'function' ? factory(require('../moment')) : typeof define === 'function' && define.amd ? define(['../moment'], factory) : factory(global.moment);\n})(this, function (moment) {\n 'use strict';\n\n //! moment.js locale configuration\n var numbersNouns = 'pagh_wa’_cha’_wej_loS_vagh_jav_Soch_chorgh_Hut'.split('_');\n function translateFuture(output) {\n var time = output;\n time = output.indexOf('jaj') !== -1 ? time.slice(0, -3) + 'leS' : output.indexOf('jar') !== -1 ? time.slice(0, -3) + 'waQ' : output.indexOf('DIS') !== -1 ? time.slice(0, -3) + 'nem' : time + ' pIq';\n return time;\n }\n function translatePast(output) {\n var time = output;\n time = output.indexOf('jaj') !== -1 ? time.slice(0, -3) + 'Hu’' : output.indexOf('jar') !== -1 ? time.slice(0, -3) + 'wen' : output.indexOf('DIS') !== -1 ? time.slice(0, -3) + 'ben' : time + ' ret';\n return time;\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 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 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 monthsShort: '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 monthsParseExact: true,\n weekdays: 'lojmItjaj_DaSjaj_povjaj_ghItlhjaj_loghjaj_buqjaj_ghInjaj'.split('_'),\n weekdaysShort: 'lojmItjaj_DaSjaj_povjaj_ghItlhjaj_loghjaj_buqjaj_ghInjaj'.split('_'),\n weekdaysMin: '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,\n // 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 return tlh;\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;\n(function (global, factory) {\n typeof exports === 'object' && typeof module !== 'undefined' && typeof require === 'function' ? factory(require('../moment')) : typeof define === 'function' && define.amd ? define(['../moment'], factory) : factory(global.moment);\n})(this, function (moment) {\n 'use strict';\n\n //! moment.js locale configuration\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 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 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 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,\n // 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 return tr;\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;\n(function (global, factory) {\n typeof exports === 'object' && typeof module !== 'undefined' && typeof require === 'function' ? factory(require('../moment')) : typeof define === 'function' && define.amd ? define(['../moment'], factory) : factory(global.moment);\n})(this, function (moment) {\n '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 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,\n // 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 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 ? format[key][0] : withoutSuffix ? format[key][0] : format[key][1];\n }\n return tzl;\n});","//! moment.js locale configuration\n//! locale : Central Atlas Tamazight [tzm]\n//! author : Abdel Said : https://github.com/abdelsaid\n\n;\n(function (global, factory) {\n typeof exports === 'object' && typeof module !== 'undefined' && typeof require === 'function' ? factory(require('../moment')) : typeof define === 'function' && define.amd ? define(['../moment'], factory) : factory(global.moment);\n})(this, function (moment) {\n 'use strict';\n\n //! moment.js locale configuration\n var tzm = moment.defineLocale('tzm', {\n months: 'ⵉâµâµâ´°âµ¢âµ”_ⴱⵕⴰⵢⵕ_ⵎⴰⵕⵚ_ⵉⴱⵔⵉⵔ_ⵎⴰⵢⵢⵓ_ⵢⵓâµâµ¢âµ“_ⵢⵓâµâµ¢âµ“âµ£_ⵖⵓⵛⵜ_ⵛⵓⵜⴰâµâ´±âµ‰âµ”_ⴽⵟⵓⴱⵕ_âµâµ“ⵡⴰâµâ´±âµ‰âµ”_ⴷⵓⵊâµâ´±âµ‰âµ”'.split('_'),\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: '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,\n // 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 return tzm;\n});","//! moment.js locale configuration\n//! locale : Central Atlas Tamazight Latin [tzm-latn]\n//! author : Abdel Said : https://github.com/abdelsaid\n\n;\n(function (global, factory) {\n typeof exports === 'object' && typeof module !== 'undefined' && typeof require === 'function' ? factory(require('../moment')) : typeof define === 'function' && define.amd ? define(['../moment'], factory) : factory(global.moment);\n})(this, function (moment) {\n 'use strict';\n\n //! moment.js locale configuration\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 monthsShort: 'innayr_brˤayrˤ_marˤsˤ_ibrir_mayyw_ywnyw_ywlywz_É£wÅ¡t_Å¡wtanbir_ktˤwbrˤ_nwwanbir_dwjnbir'.split('_'),\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,\n // 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 return tzmLatn;\n});","//! moment.js locale configuration\n//! locale : Uyghur (China) [ug-cn]\n//! author: boyaq : https://github.com/boyaq\n\n;\n(function (global, factory) {\n typeof exports === 'object' && typeof module !== 'undefined' && typeof require === 'function' ? factory(require('../moment')) : typeof define === 'function' && define.amd ? define(['../moment'], factory) : factory(global.moment);\n})(this, function (moment) {\n 'use strict';\n\n //! moment.js locale configuration\n var ugCn = moment.defineLocale('ug-cn', {\n months: 'يانۋار_ÙÛۋرال_مارت_ئاپرÛÙ„_ماي_ئىيۇن_ئىيۇل_ئاۋغۇست_سÛنتەبىر_ئۆكتەبىر_نويابىر_دÛكابىر'.split('_'),\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: '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 (meridiem === 'ÙŠÛرىم ÙƒÛÚ†Û•' || meridiem === 'سەھەر' || meridiem === 'چۈشتىن بۇرۇن') {\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 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,\n // 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 return ugCn;\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;\n(function (global, factory) {\n typeof exports === 'object' && typeof module !== 'undefined' && typeof require === 'function' ? factory(require('../moment')) : typeof define === 'function' && define.amd ? define(['../moment'], factory) : factory(global.moment);\n})(this, function (moment) {\n 'use strict';\n\n //! moment.js locale configuration\n function plural(word, num) {\n var forms = word.split('_');\n return num % 10 === 1 && num % 100 !== 11 ? forms[0] : num % 10 >= 2 && num % 10 <= 4 && (num % 100 < 10 || num % 100 >= 20) ? forms[1] : 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: 'неділÑ_понеділок_вівторок_Ñереда_четвер_п’ÑтницÑ_Ñубота'.split('_'),\n accusative: 'неділю_понеділок_вівторок_Ñереду_четвер_п’Ñтницю_Ñуботу'.split('_'),\n genitive: 'неділі_понеділка_вівторка_Ñереди_четверга_п’Ñтниці_Ñуботи'.split('_')\n },\n nounCase;\n if (m === true) {\n return weekdays['nominative'].slice(1, 7).concat(weekdays['nominative'].slice(0, 1));\n }\n if (!m) {\n return weekdays['nominative'];\n }\n nounCase = /(\\[[ВвУу]\\]) ?dddd/.test(format) ? 'accusative' : /\\[?(?:минулої|наÑтупної)? ?\\] ?dddd/.test(format) ? 'genitive' : '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 var uk = moment.defineLocale('uk', {\n months: {\n format: 'ÑічнÑ_лютого_березнÑ_квітнÑ_травнÑ_червнÑ_липнÑ_ÑерпнÑ_вереÑнÑ_жовтнÑ_лиÑтопада_груднÑ'.split('_'),\n standalone: 'Ñічень_лютий_березень_квітень_травень_червень_липень_Ñерпень_вереÑень_жовтень_лиÑтопад_грудень'.split('_')\n },\n monthsShort: 'Ñіч_лют_бер_квіт_трав_черв_лип_Ñерп_вер_жовт_лиÑÑ‚_груд'.split('_'),\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,\n // 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 return uk;\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;\n(function (global, factory) {\n typeof exports === 'object' && typeof module !== 'undefined' && typeof require === 'function' ? factory(require('../moment')) : typeof define === 'function' && define.amd ? define(['../moment'], factory) : factory(global.moment);\n})(this, function (moment) {\n 'use strict';\n\n //! moment.js locale configuration\n var months = ['جنوری', 'Ùروری', 'مارچ', 'اپریل', 'مئی', 'جون', 'جولائی', 'اگست', 'ستمبر', 'اکتوبر', 'نومبر', 'دسمبر'],\n days = ['اتوار', 'پیر', 'منگل', 'بدھ', 'جمعرات', 'جمعÛ', 'ÛÙتÛ'];\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,\n // 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 return ur;\n});","//! moment.js locale configuration\n//! locale : Uzbek [uz]\n//! author : Sardor Muminov : https://github.com/muminoff\n\n;\n(function (global, factory) {\n typeof exports === 'object' && typeof module !== 'undefined' && typeof require === 'function' ? factory(require('../moment')) : typeof define === 'function' && define.amd ? define(['../moment'], factory) : factory(global.moment);\n})(this, function (moment) {\n 'use strict';\n\n //! moment.js locale configuration\n var uz = moment.defineLocale('uz', {\n months: 'Ñнвар_феврал_март_апрел_май_июн_июл_авгуÑÑ‚_ÑентÑбр_октÑбр_ноÑбр_декабр'.split('_'),\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,\n // 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 return uz;\n});","//! moment.js locale configuration\n//! locale : Uzbek Latin [uz-latn]\n//! author : Rasulbek Mirzayev : github.com/Rasulbeeek\n\n;\n(function (global, factory) {\n typeof exports === 'object' && typeof module !== 'undefined' && typeof require === 'function' ? factory(require('../moment')) : typeof define === 'function' && define.amd ? define(['../moment'], factory) : factory(global.moment);\n})(this, function (moment) {\n 'use strict';\n\n //! moment.js locale configuration\n var uzLatn = moment.defineLocale('uz-latn', {\n months: 'Yanvar_Fevral_Mart_Aprel_May_Iyun_Iyul_Avgust_Sentabr_Oktabr_Noyabr_Dekabr'.split('_'),\n monthsShort: 'Yan_Fev_Mar_Apr_May_Iyun_Iyul_Avg_Sen_Okt_Noy_Dek'.split('_'),\n weekdays: 'Yakshanba_Dushanba_Seshanba_Chorshanba_Payshanba_Juma_Shanba'.split('_'),\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,\n // 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 return uzLatn;\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;\n(function (global, factory) {\n typeof exports === 'object' && typeof module !== 'undefined' && typeof require === 'function' ? factory(require('../moment')) : typeof define === 'function' && define.amd ? define(['../moment'], factory) : factory(global.moment);\n})(this, function (moment) {\n 'use strict';\n\n //! moment.js locale configuration\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 monthsShort: '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 monthsParseExact: true,\n weekdays: 'chủ nháºt_thứ hai_thứ ba_thứ tÆ°_thứ năm_thứ sáu_thứ bảy'.split('_'),\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,\n // 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 return vi;\n});","//! moment.js locale configuration\n//! locale : Pseudo [x-pseudo]\n//! author : Andrew Hood : https://github.com/andrewhood125\n\n;\n(function (global, factory) {\n typeof exports === 'object' && typeof module !== 'undefined' && typeof require === 'function' ? factory(require('../moment')) : typeof define === 'function' && define.amd ? define(['../moment'], factory) : factory(global.moment);\n})(this, function (moment) {\n 'use strict';\n\n //! moment.js locale configuration\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 monthsShort: 'J~áñ_~Féb_~Már_~Ãpr_~Máý_~Júñ_~Júl_~Ãúg_~Sép_~Óct_~Ñóv_~Déc'.split('_'),\n monthsParseExact: true,\n weekdays: 'S~úñdá~ý_Mó~ñdáý~_Túé~sdáý~_Wéd~ñésd~áý_T~húrs~dáý_~FrÃd~áý_S~átúr~dáý'.split('_'),\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 = ~~(number % 100 / 10) === 1 ? 'th' : b === 1 ? 'st' : b === 2 ? 'nd' : b === 3 ? 'rd' : 'th';\n return number + output;\n },\n week: {\n dow: 1,\n // 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 return xPseudo;\n});","//! moment.js locale configuration\n//! locale : Yoruba Nigeria [yo]\n//! author : Atolagbe Abisoye : https://github.com/andela-batolagbe\n\n;\n(function (global, factory) {\n typeof exports === 'object' && typeof module !== 'undefined' && typeof require === 'function' ? factory(require('../moment')) : typeof define === 'function' && define.amd ? define(['../moment'], factory) : factory(global.moment);\n})(this, function (moment) {\n 'use strict';\n\n //! moment.js locale configuration\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 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,\n // 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 return yo;\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;\n(function (global, factory) {\n typeof exports === 'object' && typeof module !== 'undefined' && typeof require === 'function' ? factory(require('../moment')) : typeof define === 'function' && define.amd ? define(['../moment'], factory) : factory(global.moment);\n})(this, function (moment) {\n 'use strict';\n\n //! moment.js locale configuration\n var zhCn = moment.defineLocale('zh-cn', {\n months: '一月_二月_三月_四月_五月_å…月_七月_八月_ä¹æœˆ_å月_å一月_å二月'.split('_'),\n monthsShort: '1月_2月_3月_4月_5月_6月_7月_8月_9月_10月_11月_12月'.split('_'),\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,\n // 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 return zhCn;\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;\n(function (global, factory) {\n typeof exports === 'object' && typeof module !== 'undefined' && typeof require === 'function' ? factory(require('../moment')) : typeof define === 'function' && define.amd ? define(['../moment'], factory) : factory(global.moment);\n})(this, function (moment) {\n 'use strict';\n\n //! moment.js locale configuration\n var zhHk = moment.defineLocale('zh-hk', {\n months: '一月_二月_三月_四月_五月_å…月_七月_八月_ä¹æœˆ_å月_å一月_å二月'.split('_'),\n monthsShort: '1月_2月_3月_4月_5月_6月_7月_8月_9月_10月_11月_12月'.split('_'),\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 return zhHk;\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;\n(function (global, factory) {\n typeof exports === 'object' && typeof module !== 'undefined' && typeof require === 'function' ? factory(require('../moment')) : typeof define === 'function' && define.amd ? define(['../moment'], factory) : factory(global.moment);\n})(this, function (moment) {\n 'use strict';\n\n //! moment.js locale configuration\n var zhMo = moment.defineLocale('zh-mo', {\n months: '一月_二月_三月_四月_五月_å…月_七月_八月_ä¹æœˆ_å月_å一月_å二月'.split('_'),\n monthsShort: '1月_2月_3月_4月_5月_6月_7月_8月_9月_10月_11月_12月'.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: '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 return zhMo;\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;\n(function (global, factory) {\n typeof exports === 'object' && typeof module !== 'undefined' && typeof require === 'function' ? factory(require('../moment')) : typeof define === 'function' && define.amd ? define(['../moment'], factory) : factory(global.moment);\n})(this, function (moment) {\n 'use strict';\n\n //! moment.js locale configuration\n var zhTw = moment.defineLocale('zh-tw', {\n months: '一月_二月_三月_四月_五月_å…月_七月_八月_ä¹æœˆ_å月_å一月_å二月'.split('_'),\n monthsShort: '1月_2月_3月_4月_5月_6月_7月_8月_9月_10月_11月_12月'.split('_'),\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 return zhTw;\n});","let activeDropdown = null;\n\ndocument.addEventListener('DOMContentLoaded', () => {\n const triggers = document.querySelectorAll('[data-dropdown-trigger]');\n\n if (triggers.length > 0) {\n [...triggers].forEach(trigger => init(trigger));\n }\n});\n\nexport function init(trigger) {\n const dropdown = trigger.parentNode;\n const menu = dropdown.querySelector('[data-dropdown-target]');\n const options = [...dropdown.querySelectorAll('[data-dropdown-option]')];\n const label = trigger.querySelector('[data-dropdown-selection]');\n\n trigger.addEventListener('click', () => {\n dropdown === activeDropdown ? close(dropdown) : open(dropdown);\n });\n\n trigger.addEventListener('close', () => {\n close(dropdown)\n });\n\n options.map(option => option.addEventListener('click', () => {\n if (option.type === 'checkbox') return;\n if (menu.hasAttribute(\"data-dropdown-ignore-clicks\")) return;\n if (label) label.innerText = option.value || label.dataset.default;\n close(dropdown);\n }));\n}\n\nfunction open(dropdown) {\n const menu = dropdown.querySelector('[data-dropdown-target]');\n\n if (activeDropdown) close(activeDropdown);\n activeDropdown = dropdown;\n document.addEventListener('click', closeIfClickOutsideMenu);\n dropdown.classList.add('is-active');\n dropdown.querySelector('[data-dropdown-trigger]').classList.add('is-active');\n menu.classList.remove('sc-hide');\n menu.classList.add('is-active');\n menu.setAttribute('aria-expanded','true');\n}\n\nfunction close(dropdown) {\n const menu = dropdown.querySelector('[data-dropdown-target]');\n\n activeDropdown = null;\n document.removeEventListener('click', closeIfClickOutsideMenu);\n dropdown.classList.remove('is-active');\n dropdown.querySelector('[data-dropdown-trigger]').classList.remove('is-active');\n menu.classList.remove('is-active');\n menu.classList.add('sc-hide');\n menu.setAttribute('aria-expanded','false');\n}\n\nfunction closeIfClickOutsideMenu(event) {\n if (activeDropdown.parentNode.contains(event.target)) return;\n\n // specifically for the booking calendar, which is actually in\n // the activeDropdown.parentNode but reports as outside\n if (event.target.closest(\"[data-dropdown-in-menu]\")) return;\n\n event.preventDefault();\n close(activeDropdown);\n}\n","/*!\n * \n * litepicker.umd.js\n * Litepicker v2.0.12 (https://github.com/wakirin/Litepicker)\n * Package: litepicker (https://www.npmjs.com/package/litepicker)\n * License: MIT (https://github.com/wakirin/Litepicker/blob/master/LICENCE.md)\n * Copyright 2019-2021 Rinat G.\n * \n * Hash: 504eef9c08cb42543660\n * \n */\n!function (t, e) {\n \"object\" == typeof exports && \"object\" == typeof module ? module.exports = e() : \"function\" == typeof define && define.amd ? define(\"Litepicker\", [], e) : \"object\" == typeof exports ? exports.Litepicker = e() : t.Litepicker = e();\n}(window, function () {\n return function (t) {\n var e = {};\n function i(n) {\n if (e[n]) return e[n].exports;\n var o = e[n] = {\n i: n,\n l: !1,\n exports: {}\n };\n return t[n].call(o.exports, o, o.exports, i), o.l = !0, o.exports;\n }\n return i.m = t, i.c = e, i.d = function (t, e, n) {\n i.o(t, e) || Object.defineProperty(t, e, {\n enumerable: !0,\n get: n\n });\n }, i.r = function (t) {\n \"undefined\" != typeof Symbol && Symbol.toStringTag && Object.defineProperty(t, Symbol.toStringTag, {\n value: \"Module\"\n }), Object.defineProperty(t, \"__esModule\", {\n value: !0\n });\n }, i.t = function (t, e) {\n if (1 & e && (t = i(t)), 8 & e) return t;\n if (4 & e && \"object\" == typeof t && t && t.__esModule) return t;\n var n = Object.create(null);\n if (i.r(n), Object.defineProperty(n, \"default\", {\n enumerable: !0,\n value: t\n }), 2 & e && \"string\" != typeof t) for (var o in t) i.d(n, o, function (e) {\n return t[e];\n }.bind(null, o));\n return n;\n }, i.n = function (t) {\n var e = t && t.__esModule ? function () {\n return t.default;\n } : function () {\n return t;\n };\n return i.d(e, \"a\", e), e;\n }, i.o = function (t, e) {\n return Object.prototype.hasOwnProperty.call(t, e);\n }, i.p = \"\", i(i.s = 4);\n }([function (t, e, i) {\n \"use strict\";\n\n Object.defineProperty(e, \"__esModule\", {\n value: !0\n });\n var n = function () {\n function t(e, i, n) {\n void 0 === e && (e = null), void 0 === i && (i = null), void 0 === n && (n = \"en-US\"), this.dateInstance = \"object\" == typeof i && null !== i ? i.parse(e instanceof t ? e.clone().toJSDate() : e) : \"string\" == typeof i ? t.parseDateTime(e, i, n) : e ? t.parseDateTime(e) : t.parseDateTime(new Date()), this.lang = n;\n }\n return t.parseDateTime = function (e, i, n) {\n if (void 0 === i && (i = \"YYYY-MM-DD\"), void 0 === n && (n = \"en-US\"), !e) return new Date(NaN);\n if (e instanceof Date) return new Date(e);\n if (e instanceof t) return e.clone().toJSDate();\n if (/^-?\\d{10,}$/.test(e)) return t.getDateZeroTime(new Date(Number(e)));\n if (\"string\" == typeof e) {\n for (var o = [], s = null; null != (s = t.regex.exec(i));) \"\\\\\" !== s[1] && o.push(s);\n if (o.length) {\n var r = {\n year: null,\n month: null,\n shortMonth: null,\n longMonth: null,\n day: null,\n value: \"\"\n };\n o[0].index > 0 && (r.value += \".*?\");\n for (var a = 0, l = Object.entries(o); a < l.length; a++) {\n var c = l[a],\n h = c[0],\n p = c[1],\n d = Number(h),\n u = t.formatPatterns(p[0], n),\n m = u.group,\n f = u.pattern;\n r[m] = d + 1, r.value += f, r.value += \".*?\";\n }\n var g = new RegExp(\"^\" + r.value + \"$\");\n if (g.test(e)) {\n var v = g.exec(e),\n y = Number(v[r.year]),\n b = null;\n r.month ? b = Number(v[r.month]) - 1 : r.shortMonth ? b = t.shortMonths(n).indexOf(v[r.shortMonth]) : r.longMonth && (b = t.longMonths(n).indexOf(v[r.longMonth]));\n var k = Number(v[r.day]) || 1;\n return new Date(y, b, k, 0, 0, 0, 0);\n }\n }\n }\n return t.getDateZeroTime(new Date(e));\n }, t.convertArray = function (e, i) {\n return e.map(function (e) {\n return e instanceof Array ? e.map(function (e) {\n return new t(e, i);\n }) : new t(e, i);\n });\n }, t.getDateZeroTime = function (t) {\n return new Date(t.getFullYear(), t.getMonth(), t.getDate(), 0, 0, 0, 0);\n }, t.shortMonths = function (e) {\n return t.MONTH_JS.map(function (t) {\n return new Date(2019, t).toLocaleString(e, {\n month: \"short\"\n });\n });\n }, t.longMonths = function (e) {\n return t.MONTH_JS.map(function (t) {\n return new Date(2019, t).toLocaleString(e, {\n month: \"long\"\n });\n });\n }, t.formatPatterns = function (e, i) {\n switch (e) {\n case \"YY\":\n case \"YYYY\":\n return {\n group: \"year\",\n pattern: \"(\\\\d{\" + e.length + \"})\"\n };\n case \"M\":\n return {\n group: \"month\",\n pattern: \"(\\\\d{1,2})\"\n };\n case \"MM\":\n return {\n group: \"month\",\n pattern: \"(\\\\d{2})\"\n };\n case \"MMM\":\n return {\n group: \"shortMonth\",\n pattern: \"(\" + t.shortMonths(i).join(\"|\") + \")\"\n };\n case \"MMMM\":\n return {\n group: \"longMonth\",\n pattern: \"(\" + t.longMonths(i).join(\"|\") + \")\"\n };\n case \"D\":\n return {\n group: \"day\",\n pattern: \"(\\\\d{1,2})\"\n };\n case \"DD\":\n return {\n group: \"day\",\n pattern: \"(\\\\d{2})\"\n };\n }\n }, t.prototype.toJSDate = function () {\n return this.dateInstance;\n }, t.prototype.toLocaleString = function (t, e) {\n return this.dateInstance.toLocaleString(t, e);\n }, t.prototype.toDateString = function () {\n return this.dateInstance.toDateString();\n }, t.prototype.getSeconds = function () {\n return this.dateInstance.getSeconds();\n }, t.prototype.getDay = function () {\n return this.dateInstance.getDay();\n }, t.prototype.getTime = function () {\n return this.dateInstance.getTime();\n }, t.prototype.getDate = function () {\n return this.dateInstance.getDate();\n }, t.prototype.getMonth = function () {\n return this.dateInstance.getMonth();\n }, t.prototype.getFullYear = function () {\n return this.dateInstance.getFullYear();\n }, t.prototype.setMonth = function (t) {\n return this.dateInstance.setMonth(t);\n }, t.prototype.setHours = function (t, e, i, n) {\n void 0 === t && (t = 0), void 0 === e && (e = 0), void 0 === i && (i = 0), void 0 === n && (n = 0), this.dateInstance.setHours(t, e, i, n);\n }, t.prototype.setSeconds = function (t) {\n return this.dateInstance.setSeconds(t);\n }, t.prototype.setDate = function (t) {\n return this.dateInstance.setDate(t);\n }, t.prototype.setFullYear = function (t) {\n return this.dateInstance.setFullYear(t);\n }, t.prototype.getWeek = function (t) {\n var e = new Date(this.timestamp()),\n i = (this.getDay() + (7 - t)) % 7;\n e.setDate(e.getDate() - i);\n var n = e.getTime();\n return e.setMonth(0, 1), e.getDay() !== t && e.setMonth(0, 1 + (4 - e.getDay() + 7) % 7), 1 + Math.ceil((n - e.getTime()) / 6048e5);\n }, t.prototype.clone = function () {\n return new t(this.toJSDate());\n }, t.prototype.isBetween = function (t, e, i) {\n switch (void 0 === i && (i = \"()\"), i) {\n default:\n case \"()\":\n return this.timestamp() > t.getTime() && this.timestamp() < e.getTime();\n case \"[)\":\n return this.timestamp() >= t.getTime() && this.timestamp() < e.getTime();\n case \"(]\":\n return this.timestamp() > t.getTime() && this.timestamp() <= e.getTime();\n case \"[]\":\n return this.timestamp() >= t.getTime() && this.timestamp() <= e.getTime();\n }\n }, t.prototype.isBefore = function (t, e) {\n switch (void 0 === e && (e = \"seconds\"), e) {\n case \"second\":\n case \"seconds\":\n return t.getTime() > this.getTime();\n case \"day\":\n case \"days\":\n return new Date(t.getFullYear(), t.getMonth(), t.getDate()).getTime() > new Date(this.getFullYear(), this.getMonth(), this.getDate()).getTime();\n case \"month\":\n case \"months\":\n return new Date(t.getFullYear(), t.getMonth(), 1).getTime() > new Date(this.getFullYear(), this.getMonth(), 1).getTime();\n case \"year\":\n case \"years\":\n return t.getFullYear() > this.getFullYear();\n }\n throw new Error(\"isBefore: Invalid unit!\");\n }, t.prototype.isSameOrBefore = function (t, e) {\n switch (void 0 === e && (e = \"seconds\"), e) {\n case \"second\":\n case \"seconds\":\n return t.getTime() >= this.getTime();\n case \"day\":\n case \"days\":\n return new Date(t.getFullYear(), t.getMonth(), t.getDate()).getTime() >= new Date(this.getFullYear(), this.getMonth(), this.getDate()).getTime();\n case \"month\":\n case \"months\":\n return new Date(t.getFullYear(), t.getMonth(), 1).getTime() >= new Date(this.getFullYear(), this.getMonth(), 1).getTime();\n }\n throw new Error(\"isSameOrBefore: Invalid unit!\");\n }, t.prototype.isAfter = function (t, e) {\n switch (void 0 === e && (e = \"seconds\"), e) {\n case \"second\":\n case \"seconds\":\n return this.getTime() > t.getTime();\n case \"day\":\n case \"days\":\n return new Date(this.getFullYear(), this.getMonth(), this.getDate()).getTime() > new Date(t.getFullYear(), t.getMonth(), t.getDate()).getTime();\n case \"month\":\n case \"months\":\n return new Date(this.getFullYear(), this.getMonth(), 1).getTime() > new Date(t.getFullYear(), t.getMonth(), 1).getTime();\n case \"year\":\n case \"years\":\n return this.getFullYear() > t.getFullYear();\n }\n throw new Error(\"isAfter: Invalid unit!\");\n }, t.prototype.isSameOrAfter = function (t, e) {\n switch (void 0 === e && (e = \"seconds\"), e) {\n case \"second\":\n case \"seconds\":\n return this.getTime() >= t.getTime();\n case \"day\":\n case \"days\":\n return new Date(this.getFullYear(), this.getMonth(), this.getDate()).getTime() >= new Date(t.getFullYear(), t.getMonth(), t.getDate()).getTime();\n case \"month\":\n case \"months\":\n return new Date(this.getFullYear(), this.getMonth(), 1).getTime() >= new Date(t.getFullYear(), t.getMonth(), 1).getTime();\n }\n throw new Error(\"isSameOrAfter: Invalid unit!\");\n }, t.prototype.isSame = function (t, e) {\n switch (void 0 === e && (e = \"seconds\"), e) {\n case \"second\":\n case \"seconds\":\n return this.getTime() === t.getTime();\n case \"day\":\n case \"days\":\n return new Date(this.getFullYear(), this.getMonth(), this.getDate()).getTime() === new Date(t.getFullYear(), t.getMonth(), t.getDate()).getTime();\n case \"month\":\n case \"months\":\n return new Date(this.getFullYear(), this.getMonth(), 1).getTime() === new Date(t.getFullYear(), t.getMonth(), 1).getTime();\n }\n throw new Error(\"isSame: Invalid unit!\");\n }, t.prototype.add = function (t, e) {\n switch (void 0 === e && (e = \"seconds\"), e) {\n case \"second\":\n case \"seconds\":\n this.setSeconds(this.getSeconds() + t);\n break;\n case \"day\":\n case \"days\":\n this.setDate(this.getDate() + t);\n break;\n case \"month\":\n case \"months\":\n this.setMonth(this.getMonth() + t);\n }\n return this;\n }, t.prototype.subtract = function (t, e) {\n switch (void 0 === e && (e = \"seconds\"), e) {\n case \"second\":\n case \"seconds\":\n this.setSeconds(this.getSeconds() - t);\n break;\n case \"day\":\n case \"days\":\n this.setDate(this.getDate() - t);\n break;\n case \"month\":\n case \"months\":\n this.setMonth(this.getMonth() - t);\n }\n return this;\n }, t.prototype.diff = function (t, e) {\n void 0 === e && (e = \"seconds\");\n switch (e) {\n default:\n case \"second\":\n case \"seconds\":\n return this.getTime() - t.getTime();\n case \"day\":\n case \"days\":\n return Math.round((this.timestamp() - t.getTime()) / 864e5);\n case \"month\":\n case \"months\":\n }\n }, t.prototype.format = function (e, i) {\n if (void 0 === i && (i = \"en-US\"), \"object\" == typeof e) return e.output(this.clone().toJSDate());\n for (var n = \"\", o = [], s = null; null != (s = t.regex.exec(e));) \"\\\\\" !== s[1] && o.push(s);\n if (o.length) {\n o[0].index > 0 && (n += e.substring(0, o[0].index));\n for (var r = 0, a = Object.entries(o); r < a.length; r++) {\n var l = a[r],\n c = l[0],\n h = l[1],\n p = Number(c);\n n += this.formatTokens(h[0], i), o[p + 1] && (n += e.substring(h.index + h[0].length, o[p + 1].index)), p === o.length - 1 && (n += e.substring(h.index + h[0].length));\n }\n }\n return n.replace(/\\\\/g, \"\");\n }, t.prototype.timestamp = function () {\n return new Date(this.getFullYear(), this.getMonth(), this.getDate(), 0, 0, 0, 0).getTime();\n }, t.prototype.formatTokens = function (e, i) {\n switch (e) {\n case \"YY\":\n return String(this.getFullYear()).slice(-2);\n case \"YYYY\":\n return String(this.getFullYear());\n case \"M\":\n return String(this.getMonth() + 1);\n case \"MM\":\n return (\"0\" + (this.getMonth() + 1)).slice(-2);\n case \"MMM\":\n return t.shortMonths(i)[this.getMonth()];\n case \"MMMM\":\n return t.longMonths(i)[this.getMonth()];\n case \"D\":\n return String(this.getDate());\n case \"DD\":\n return (\"0\" + this.getDate()).slice(-2);\n default:\n return \"\";\n }\n }, t.regex = /(\\\\)?(Y{2,4}|M{1,4}|D{1,2}|d{1,4})/g, t.MONTH_JS = [0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11], t;\n }();\n e.DateTime = n;\n }, function (t, e, i) {\n \"use strict\";\n\n var n,\n o = this && this.__extends || (n = function (t, e) {\n return (n = Object.setPrototypeOf || {\n __proto__: []\n } instanceof Array && function (t, e) {\n t.__proto__ = e;\n } || function (t, e) {\n for (var i in e) e.hasOwnProperty(i) && (t[i] = e[i]);\n })(t, e);\n }, function (t, e) {\n function i() {\n this.constructor = t;\n }\n n(t, e), t.prototype = null === e ? Object.create(e) : (i.prototype = e.prototype, new i());\n }),\n s = this && this.__spreadArrays || function () {\n for (var t = 0, e = 0, i = arguments.length; e < i; e++) t += arguments[e].length;\n var n = Array(t),\n o = 0;\n for (e = 0; e < i; e++) for (var s = arguments[e], r = 0, a = s.length; r < a; r++, o++) n[o] = s[r];\n return n;\n };\n Object.defineProperty(e, \"__esModule\", {\n value: !0\n });\n var r = i(5),\n a = i(0),\n l = i(3),\n c = i(2),\n h = function (t) {\n function e(e) {\n var i = t.call(this, e) || this;\n return i.preventClick = !1, i.bindEvents(), i;\n }\n return o(e, t), e.prototype.scrollToDate = function (t) {\n if (this.options.scrollToDate) {\n var e = this.options.startDate instanceof a.DateTime ? this.options.startDate.clone() : null,\n i = this.options.endDate instanceof a.DateTime ? this.options.endDate.clone() : null;\n !this.options.startDate || t && t !== this.options.element ? t && this.options.endDate && t === this.options.elementEnd && (i.setDate(1), this.options.numberOfMonths > 1 && i.isAfter(e) && i.setMonth(i.getMonth() - (this.options.numberOfMonths - 1)), this.calendars[0] = i.clone()) : (e.setDate(1), this.calendars[0] = e.clone());\n }\n }, e.prototype.bindEvents = function () {\n document.addEventListener(\"click\", this.onClick.bind(this), !0), this.ui = document.createElement(\"div\"), this.ui.className = l.litepicker, this.ui.style.display = \"none\", this.ui.addEventListener(\"mouseenter\", this.onMouseEnter.bind(this), !0), this.ui.addEventListener(\"mouseleave\", this.onMouseLeave.bind(this), !1), this.options.autoRefresh ? (this.options.element instanceof HTMLElement && this.options.element.addEventListener(\"keyup\", this.onInput.bind(this), !0), this.options.elementEnd instanceof HTMLElement && this.options.elementEnd.addEventListener(\"keyup\", this.onInput.bind(this), !0)) : (this.options.element instanceof HTMLElement && this.options.element.addEventListener(\"change\", this.onInput.bind(this), !0), this.options.elementEnd instanceof HTMLElement && this.options.elementEnd.addEventListener(\"change\", this.onInput.bind(this), !0)), this.options.parentEl ? this.options.parentEl instanceof HTMLElement ? this.options.parentEl.appendChild(this.ui) : document.querySelector(this.options.parentEl).appendChild(this.ui) : this.options.inlineMode ? this.options.element instanceof HTMLInputElement ? this.options.element.parentNode.appendChild(this.ui) : this.options.element.appendChild(this.ui) : document.body.appendChild(this.ui), this.updateInput(), this.init(), \"function\" == typeof this.options.setup && this.options.setup.call(this, this), this.render(), this.options.inlineMode && this.show();\n }, e.prototype.updateInput = function () {\n if (this.options.element instanceof HTMLInputElement) {\n var t = this.options.startDate,\n e = this.options.endDate;\n if (this.options.singleMode && t) this.options.element.value = t.format(this.options.format, this.options.lang);else if (!this.options.singleMode && t && e) {\n var i = t.format(this.options.format, this.options.lang),\n n = e.format(this.options.format, this.options.lang);\n this.options.elementEnd instanceof HTMLInputElement ? (this.options.element.value = i, this.options.elementEnd.value = n) : this.options.element.value = \"\" + i + this.options.delimiter + n;\n }\n t || e || (this.options.element.value = \"\", this.options.elementEnd instanceof HTMLInputElement && (this.options.elementEnd.value = \"\"));\n }\n }, e.prototype.isSamePicker = function (t) {\n return t.closest(\".\" + l.litepicker) === this.ui;\n }, e.prototype.shouldShown = function (t) {\n return !t.disabled && (t === this.options.element || this.options.elementEnd && t === this.options.elementEnd);\n }, e.prototype.shouldResetDatePicked = function () {\n return this.options.singleMode || 2 === this.datePicked.length;\n }, e.prototype.shouldSwapDatePicked = function () {\n return 2 === this.datePicked.length && this.datePicked[0].getTime() > this.datePicked[1].getTime();\n }, e.prototype.shouldCheckLockDays = function () {\n return this.options.disallowLockDaysInRange && 2 === this.datePicked.length;\n }, e.prototype.onClick = function (t) {\n var e = t.target;\n if (t.target.shadowRoot && (e = t.composedPath()[0]), e && this.ui) if (this.shouldShown(e)) this.show(e);else if (e.closest(\".\" + l.litepicker) || !this.isShowning()) {\n if (this.isSamePicker(e)) if (this.emit(\"before:click\", e), this.preventClick) this.preventClick = !1;else {\n if (e.classList.contains(l.dayItem)) {\n if (t.preventDefault(), e.classList.contains(l.isLocked)) return;\n if (this.shouldResetDatePicked() && (this.datePicked.length = 0), this.datePicked[this.datePicked.length] = new a.DateTime(e.dataset.time), this.shouldSwapDatePicked()) {\n var i = this.datePicked[1].clone();\n this.datePicked[1] = this.datePicked[0].clone(), this.datePicked[0] = i.clone();\n }\n if (this.shouldCheckLockDays()) c.rangeIsLocked(this.datePicked, this.options) && (this.emit(\"error:range\", this.datePicked), this.datePicked.length = 0);\n return this.render(), this.emit.apply(this, s([\"preselect\"], s(this.datePicked).map(function (t) {\n return t.clone();\n }))), void (this.options.autoApply && (this.options.singleMode && this.datePicked.length ? (this.setDate(this.datePicked[0]), this.hide()) : this.options.singleMode || 2 !== this.datePicked.length || (this.setDateRange(this.datePicked[0], this.datePicked[1]), this.hide())));\n }\n if (e.classList.contains(l.buttonPreviousMonth)) {\n t.preventDefault();\n var n = 0,\n o = this.options.switchingMonths || this.options.numberOfMonths;\n if (this.options.splitView) {\n var r = e.closest(\".\" + l.monthItem);\n n = c.findNestedMonthItem(r), o = 1;\n }\n return this.calendars[n].setMonth(this.calendars[n].getMonth() - o), this.gotoDate(this.calendars[n], n), void this.emit(\"change:month\", this.calendars[n], n);\n }\n if (e.classList.contains(l.buttonNextMonth)) {\n t.preventDefault();\n n = 0, o = this.options.switchingMonths || this.options.numberOfMonths;\n if (this.options.splitView) {\n r = e.closest(\".\" + l.monthItem);\n n = c.findNestedMonthItem(r), o = 1;\n }\n return this.calendars[n].setMonth(this.calendars[n].getMonth() + o), this.gotoDate(this.calendars[n], n), void this.emit(\"change:month\", this.calendars[n], n);\n }\n e.classList.contains(l.buttonCancel) && (t.preventDefault(), this.hide(), this.emit(\"button:cancel\")), e.classList.contains(l.buttonApply) && (t.preventDefault(), this.options.singleMode && this.datePicked.length ? this.setDate(this.datePicked[0]) : this.options.singleMode || 2 !== this.datePicked.length || this.setDateRange(this.datePicked[0], this.datePicked[1]), this.hide(), this.emit(\"button:apply\", this.options.startDate, this.options.endDate));\n }\n } else this.hide();\n }, e.prototype.showTooltip = function (t, e) {\n var i = this.ui.querySelector(\".\" + l.containerTooltip);\n i.style.visibility = \"visible\", i.innerHTML = e;\n var n = this.ui.getBoundingClientRect(),\n o = i.getBoundingClientRect(),\n s = t.getBoundingClientRect(),\n r = s.top,\n a = s.left;\n if (this.options.inlineMode && this.options.parentEl) {\n var c = this.ui.parentNode.getBoundingClientRect();\n r -= c.top, a -= c.left;\n } else r -= n.top, a -= n.left;\n r -= o.height, a -= o.width / 2, a += s.width / 2, i.style.top = r + \"px\", i.style.left = a + \"px\", this.emit(\"tooltip\", i, t);\n }, e.prototype.hideTooltip = function () {\n this.ui.querySelector(\".\" + l.containerTooltip).style.visibility = \"hidden\";\n }, e.prototype.shouldAllowMouseEnter = function (t) {\n return !this.options.singleMode && !t.classList.contains(l.isLocked);\n }, e.prototype.shouldAllowRepick = function () {\n return this.options.elementEnd && this.options.allowRepick && this.options.startDate && this.options.endDate;\n }, e.prototype.isDayItem = function (t) {\n return t.classList.contains(l.dayItem);\n }, e.prototype.onMouseEnter = function (t) {\n var e = this,\n i = t.target;\n if (this.isDayItem(i) && this.shouldAllowMouseEnter(i)) {\n if (this.shouldAllowRepick() && (this.triggerElement === this.options.element ? this.datePicked[0] = this.options.endDate.clone() : this.triggerElement === this.options.elementEnd && (this.datePicked[0] = this.options.startDate.clone())), 1 !== this.datePicked.length) return;\n var n = this.ui.querySelector(\".\" + l.dayItem + '[data-time=\"' + this.datePicked[0].getTime() + '\"]'),\n o = this.datePicked[0].clone(),\n s = new a.DateTime(i.dataset.time),\n r = !1;\n if (o.getTime() > s.getTime()) {\n var c = o.clone();\n o = s.clone(), s = c.clone(), r = !0;\n }\n if (Array.prototype.slice.call(this.ui.querySelectorAll(\".\" + l.dayItem)).forEach(function (t) {\n var i = new a.DateTime(t.dataset.time),\n n = e.renderDay(i);\n i.isBetween(o, s) && n.classList.add(l.isInRange), t.className = n.className;\n }), i.classList.add(l.isEndDate), r ? (n && n.classList.add(l.isFlipped), i.classList.add(l.isFlipped)) : (n && n.classList.remove(l.isFlipped), i.classList.remove(l.isFlipped)), this.options.showTooltip) {\n var h = s.diff(o, \"day\") + 1;\n if (\"function\" == typeof this.options.tooltipNumber && (h = this.options.tooltipNumber.call(this, h)), h > 0) {\n var p = this.pluralSelector(h),\n d = h + \" \" + (this.options.tooltipText[p] ? this.options.tooltipText[p] : \"[\" + p + \"]\");\n this.showTooltip(i, d);\n var u = window.navigator.userAgent,\n m = /(iphone|ipad)/i.test(u),\n f = /OS 1([0-2])/i.test(u);\n m && f && i.dispatchEvent(new Event(\"click\"));\n } else this.hideTooltip();\n }\n }\n }, e.prototype.onMouseLeave = function (t) {\n t.target;\n this.options.allowRepick && (!this.options.allowRepick || this.options.startDate || this.options.endDate) && (this.datePicked.length = 0, this.render());\n }, e.prototype.onInput = function (t) {\n var e = this.parseInput(),\n i = e[0],\n n = e[1],\n o = this.options.format;\n if (this.options.elementEnd ? i instanceof a.DateTime && n instanceof a.DateTime && i.format(o) === this.options.element.value && n.format(o) === this.options.elementEnd.value : this.options.singleMode ? i instanceof a.DateTime && i.format(o) === this.options.element.value : i instanceof a.DateTime && n instanceof a.DateTime && \"\" + i.format(o) + this.options.delimiter + n.format(o) === this.options.element.value) {\n if (n && i.getTime() > n.getTime()) {\n var s = i.clone();\n i = n.clone(), n = s.clone();\n }\n this.options.startDate = new a.DateTime(i, this.options.format, this.options.lang), n && (this.options.endDate = new a.DateTime(n, this.options.format, this.options.lang)), this.updateInput(), this.render();\n var r = i.clone(),\n l = 0;\n (this.options.elementEnd ? i.format(o) === t.target.value : t.target.value.startsWith(i.format(o))) || (r = n.clone(), l = this.options.numberOfMonths - 1), this.emit(\"selected\", this.getStartDate(), this.getEndDate()), this.gotoDate(r, l);\n }\n }, e;\n }(r.Calendar);\n e.Litepicker = h;\n }, function (t, e, i) {\n \"use strict\";\n\n Object.defineProperty(e, \"__esModule\", {\n value: !0\n }), e.findNestedMonthItem = function (t) {\n for (var e = t.parentNode.childNodes, i = 0; i < e.length; i += 1) {\n if (e.item(i) === t) return i;\n }\n return 0;\n }, e.dateIsLocked = function (t, e, i) {\n var n = !1;\n return e.lockDays.length && (n = e.lockDays.filter(function (i) {\n return i instanceof Array ? t.isBetween(i[0], i[1], e.lockDaysInclusivity) : i.isSame(t, \"day\");\n }).length), n || \"function\" != typeof e.lockDaysFilter || (n = e.lockDaysFilter.call(this, t.clone(), null, i)), n;\n }, e.rangeIsLocked = function (t, e) {\n var i = !1;\n return e.lockDays.length && (i = e.lockDays.filter(function (i) {\n if (i instanceof Array) {\n var n = t[0].toDateString() === i[0].toDateString() && t[1].toDateString() === i[1].toDateString();\n return i[0].isBetween(t[0], t[1], e.lockDaysInclusivity) || i[1].isBetween(t[0], t[1], e.lockDaysInclusivity) || n;\n }\n return i.isBetween(t[0], t[1], e.lockDaysInclusivity);\n }).length), i || \"function\" != typeof e.lockDaysFilter || (i = e.lockDaysFilter.call(this, t[0].clone(), t[1].clone(), t)), i;\n };\n }, function (t, e, i) {\n var n = i(8);\n \"string\" == typeof n && (n = [[t.i, n, \"\"]]);\n var o = {\n insert: function (t) {\n var e = document.querySelector(\"head\"),\n i = window._lastElementInsertedByStyleLoader;\n window.disableLitepickerStyles || (i ? i.nextSibling ? e.insertBefore(t, i.nextSibling) : e.appendChild(t) : e.insertBefore(t, e.firstChild), window._lastElementInsertedByStyleLoader = t);\n },\n singleton: !1\n };\n i(10)(n, o);\n n.locals && (t.exports = n.locals);\n }, function (t, e, i) {\n \"use strict\";\n\n Object.defineProperty(e, \"__esModule\", {\n value: !0\n });\n var n = i(1);\n e.Litepicker = n.Litepicker, i(11), window.Litepicker = n.Litepicker, e.default = n.Litepicker;\n }, function (t, e, i) {\n \"use strict\";\n\n var n,\n o = this && this.__extends || (n = function (t, e) {\n return (n = Object.setPrototypeOf || {\n __proto__: []\n } instanceof Array && function (t, e) {\n t.__proto__ = e;\n } || function (t, e) {\n for (var i in e) e.hasOwnProperty(i) && (t[i] = e[i]);\n })(t, e);\n }, function (t, e) {\n function i() {\n this.constructor = t;\n }\n n(t, e), t.prototype = null === e ? Object.create(e) : (i.prototype = e.prototype, new i());\n });\n Object.defineProperty(e, \"__esModule\", {\n value: !0\n });\n var s = i(6),\n r = i(0),\n a = i(3),\n l = i(2),\n c = function (t) {\n function e(e) {\n return t.call(this, e) || this;\n }\n return o(e, t), e.prototype.render = function () {\n var t = this;\n this.emit(\"before:render\", this.ui);\n var e = document.createElement(\"div\");\n e.className = a.containerMain;\n var i = document.createElement(\"div\");\n i.className = a.containerMonths, a[\"columns\" + this.options.numberOfColumns] && (i.classList.remove(a.columns2, a.columns3, a.columns4), i.classList.add(a[\"columns\" + this.options.numberOfColumns])), this.options.splitView && i.classList.add(a.splitView), this.options.showWeekNumbers && i.classList.add(a.showWeekNumbers);\n for (var n = this.calendars[0].clone(), o = n.getMonth(), s = n.getMonth() + this.options.numberOfMonths, r = 0, l = o; l < s; l += 1) {\n var c = n.clone();\n c.setDate(1), c.setHours(0, 0, 0, 0), this.options.splitView ? c = this.calendars[r].clone() : c.setMonth(l), i.appendChild(this.renderMonth(c, r)), r += 1;\n }\n if (this.ui.innerHTML = \"\", e.appendChild(i), this.options.resetButton) {\n var h = void 0;\n \"function\" == typeof this.options.resetButton ? h = this.options.resetButton.call(this) : ((h = document.createElement(\"button\")).type = \"button\", h.className = a.resetButton, h.innerHTML = this.options.buttonText.reset), h.addEventListener(\"click\", function (e) {\n e.preventDefault(), t.clearSelection();\n }), e.querySelector(\".\" + a.monthItem + \":last-child\").querySelector(\".\" + a.monthItemHeader).appendChild(h);\n }\n this.ui.appendChild(e), this.options.autoApply && !this.options.footerHTML || this.ui.appendChild(this.renderFooter()), this.options.showTooltip && this.ui.appendChild(this.renderTooltip()), this.ui.dataset.plugins = (this.options.plugins || []).join(\"|\"), this.emit(\"render\", this.ui);\n }, e.prototype.renderMonth = function (t, e) {\n var i = this,\n n = t.clone(),\n o = 32 - new Date(n.getFullYear(), n.getMonth(), 32).getDate(),\n s = document.createElement(\"div\");\n s.className = a.monthItem;\n var c = document.createElement(\"div\");\n c.className = a.monthItemHeader;\n var h = document.createElement(\"div\");\n if (this.options.dropdowns.months) {\n var p = document.createElement(\"select\");\n p.className = a.monthItemName;\n for (var d = 0; d < 12; d += 1) {\n var u = document.createElement(\"option\"),\n m = new r.DateTime(new Date(t.getFullYear(), d, 2, 0, 0, 0)),\n f = new r.DateTime(new Date(t.getFullYear(), d, 1, 0, 0, 0));\n u.value = String(d), u.text = m.toLocaleString(this.options.lang, {\n month: \"long\"\n }), u.disabled = this.options.minDate && f.isBefore(new r.DateTime(this.options.minDate), \"month\") || this.options.maxDate && f.isAfter(new r.DateTime(this.options.maxDate), \"month\"), u.selected = f.getMonth() === t.getMonth(), p.appendChild(u);\n }\n p.addEventListener(\"change\", function (t) {\n var e = t.target,\n n = 0;\n if (i.options.splitView) {\n var o = e.closest(\".\" + a.monthItem);\n n = l.findNestedMonthItem(o);\n }\n i.calendars[n].setMonth(Number(e.value)), i.render(), i.emit(\"change:month\", i.calendars[n], n, t);\n }), h.appendChild(p);\n } else {\n (m = document.createElement(\"strong\")).className = a.monthItemName, m.innerHTML = t.toLocaleString(this.options.lang, {\n month: \"long\"\n }), h.appendChild(m);\n }\n if (this.options.dropdowns.years) {\n var g = document.createElement(\"select\");\n g.className = a.monthItemYear;\n var v = this.options.dropdowns.minYear,\n y = this.options.dropdowns.maxYear ? this.options.dropdowns.maxYear : new Date().getFullYear();\n if (t.getFullYear() > y) (u = document.createElement(\"option\")).value = String(t.getFullYear()), u.text = String(t.getFullYear()), u.selected = !0, u.disabled = !0, g.appendChild(u);\n for (d = y; d >= v; d -= 1) {\n var u = document.createElement(\"option\"),\n b = new r.DateTime(new Date(d, 0, 1, 0, 0, 0));\n u.value = String(d), u.text = String(d), u.disabled = this.options.minDate && b.isBefore(new r.DateTime(this.options.minDate), \"year\") || this.options.maxDate && b.isAfter(new r.DateTime(this.options.maxDate), \"year\"), u.selected = t.getFullYear() === d, g.appendChild(u);\n }\n if (t.getFullYear() < v) (u = document.createElement(\"option\")).value = String(t.getFullYear()), u.text = String(t.getFullYear()), u.selected = !0, u.disabled = !0, g.appendChild(u);\n if (\"asc\" === this.options.dropdowns.years) {\n var k = Array.prototype.slice.call(g.childNodes).reverse();\n g.innerHTML = \"\", k.forEach(function (t) {\n t.innerHTML = t.value, g.appendChild(t);\n });\n }\n g.addEventListener(\"change\", function (t) {\n var e = t.target,\n n = 0;\n if (i.options.splitView) {\n var o = e.closest(\".\" + a.monthItem);\n n = l.findNestedMonthItem(o);\n }\n i.calendars[n].setFullYear(Number(e.value)), i.render(), i.emit(\"change:year\", i.calendars[n], n, t);\n }), h.appendChild(g);\n } else {\n var w = document.createElement(\"span\");\n w.className = a.monthItemYear, w.innerHTML = String(t.getFullYear()), h.appendChild(w);\n }\n var D = document.createElement(\"button\");\n D.type = \"button\", D.className = a.buttonPreviousMonth, D.innerHTML = this.options.buttonText.previousMonth;\n var x = document.createElement(\"button\");\n x.type = \"button\", x.className = a.buttonNextMonth, x.innerHTML = this.options.buttonText.nextMonth, c.appendChild(D), c.appendChild(h), c.appendChild(x), this.options.minDate && n.isSameOrBefore(new r.DateTime(this.options.minDate), \"month\") && s.classList.add(a.noPreviousMonth), this.options.maxDate && n.isSameOrAfter(new r.DateTime(this.options.maxDate), \"month\") && s.classList.add(a.noNextMonth);\n var M = document.createElement(\"div\");\n M.className = a.monthItemWeekdaysRow, this.options.showWeekNumbers && (M.innerHTML = \"<div>W</div>\");\n for (var _ = 1; _ <= 7; _ += 1) {\n var T = 3 + this.options.firstDay + _,\n L = document.createElement(\"div\");\n L.innerHTML = this.weekdayName(T), L.title = this.weekdayName(T, \"long\"), M.appendChild(L);\n }\n var E = document.createElement(\"div\");\n E.className = a.containerDays;\n var S = this.calcSkipDays(n);\n this.options.showWeekNumbers && S && E.appendChild(this.renderWeekNumber(n));\n for (var I = 0; I < S; I += 1) {\n var P = document.createElement(\"div\");\n E.appendChild(P);\n }\n for (I = 1; I <= o; I += 1) n.setDate(I), this.options.showWeekNumbers && n.getDay() === this.options.firstDay && E.appendChild(this.renderWeekNumber(n)), E.appendChild(this.renderDay(n));\n return s.appendChild(c), s.appendChild(M), s.appendChild(E), this.emit(\"render:month\", s, t), s;\n }, e.prototype.renderDay = function (t) {\n t.setHours();\n var e = document.createElement(\"div\");\n if (e.className = a.dayItem, e.innerHTML = String(t.getDate()), e.dataset.time = String(t.getTime()), t.toDateString() === new Date().toDateString() && e.classList.add(a.isToday), this.datePicked.length) this.datePicked[0].toDateString() === t.toDateString() && (e.classList.add(a.isStartDate), this.options.singleMode && e.classList.add(a.isEndDate)), 2 === this.datePicked.length && this.datePicked[1].toDateString() === t.toDateString() && e.classList.add(a.isEndDate), 2 === this.datePicked.length && t.isBetween(this.datePicked[0], this.datePicked[1]) && e.classList.add(a.isInRange);else if (this.options.startDate) {\n var i = this.options.startDate,\n n = this.options.endDate;\n i.toDateString() === t.toDateString() && (e.classList.add(a.isStartDate), this.options.singleMode && e.classList.add(a.isEndDate)), n && n.toDateString() === t.toDateString() && e.classList.add(a.isEndDate), i && n && t.isBetween(i, n) && e.classList.add(a.isInRange);\n }\n if (this.options.minDate && t.isBefore(new r.DateTime(this.options.minDate)) && e.classList.add(a.isLocked), this.options.maxDate && t.isAfter(new r.DateTime(this.options.maxDate)) && e.classList.add(a.isLocked), this.options.minDays > 1 && 1 === this.datePicked.length) {\n var o = this.options.minDays - 1,\n s = this.datePicked[0].clone().subtract(o, \"day\"),\n c = this.datePicked[0].clone().add(o, \"day\");\n t.isBetween(s, this.datePicked[0], \"(]\") && e.classList.add(a.isLocked), t.isBetween(this.datePicked[0], c, \"[)\") && e.classList.add(a.isLocked);\n }\n if (this.options.maxDays && 1 === this.datePicked.length) {\n var h = this.options.maxDays;\n s = this.datePicked[0].clone().subtract(h, \"day\"), c = this.datePicked[0].clone().add(h, \"day\");\n t.isSameOrBefore(s) && e.classList.add(a.isLocked), t.isSameOrAfter(c) && e.classList.add(a.isLocked);\n }\n (this.options.selectForward && 1 === this.datePicked.length && t.isBefore(this.datePicked[0]) && e.classList.add(a.isLocked), this.options.selectBackward && 1 === this.datePicked.length && t.isAfter(this.datePicked[0]) && e.classList.add(a.isLocked), l.dateIsLocked(t, this.options, this.datePicked) && e.classList.add(a.isLocked), this.options.highlightedDays.length) && this.options.highlightedDays.filter(function (e) {\n return e instanceof Array ? t.isBetween(e[0], e[1], \"[]\") : e.isSame(t, \"day\");\n }).length && e.classList.add(a.isHighlighted);\n return e.tabIndex = e.classList.contains(\"is-locked\") ? -1 : 0, this.emit(\"render:day\", e, t), e;\n }, e.prototype.renderFooter = function () {\n var t = document.createElement(\"div\");\n if (t.className = a.containerFooter, this.options.footerHTML ? t.innerHTML = this.options.footerHTML : t.innerHTML = '\\n <span class=\"' + a.previewDateRange + '\"></span>\\n <button type=\"button\" class=\"' + a.buttonCancel + '\">' + this.options.buttonText.cancel + '</button>\\n <button type=\"button\" class=\"' + a.buttonApply + '\">' + this.options.buttonText.apply + \"</button>\\n \", this.options.singleMode) {\n if (1 === this.datePicked.length) {\n var e = this.datePicked[0].format(this.options.format, this.options.lang);\n t.querySelector(\".\" + a.previewDateRange).innerHTML = e;\n }\n } else if (1 === this.datePicked.length && t.querySelector(\".\" + a.buttonApply).setAttribute(\"disabled\", \"\"), 2 === this.datePicked.length) {\n e = this.datePicked[0].format(this.options.format, this.options.lang);\n var i = this.datePicked[1].format(this.options.format, this.options.lang);\n t.querySelector(\".\" + a.previewDateRange).innerHTML = \"\" + e + this.options.delimiter + i;\n }\n return this.emit(\"render:footer\", t), t;\n }, e.prototype.renderWeekNumber = function (t) {\n var e = document.createElement(\"div\"),\n i = t.getWeek(this.options.firstDay);\n return e.className = a.weekNumber, e.innerHTML = 53 === i && 0 === t.getMonth() ? \"53 / 1\" : i, e;\n }, e.prototype.renderTooltip = function () {\n var t = document.createElement(\"div\");\n return t.className = a.containerTooltip, t;\n }, e.prototype.weekdayName = function (t, e) {\n return void 0 === e && (e = \"short\"), new Date(1970, 0, t, 12, 0, 0, 0).toLocaleString(this.options.lang, {\n weekday: e\n });\n }, e.prototype.calcSkipDays = function (t) {\n var e = t.getDay() - this.options.firstDay;\n return e < 0 && (e += 7), e;\n }, e;\n }(s.LPCore);\n e.Calendar = c;\n }, function (t, e, i) {\n \"use strict\";\n\n var n,\n o = this && this.__extends || (n = function (t, e) {\n return (n = Object.setPrototypeOf || {\n __proto__: []\n } instanceof Array && function (t, e) {\n t.__proto__ = e;\n } || function (t, e) {\n for (var i in e) e.hasOwnProperty(i) && (t[i] = e[i]);\n })(t, e);\n }, function (t, e) {\n function i() {\n this.constructor = t;\n }\n n(t, e), t.prototype = null === e ? Object.create(e) : (i.prototype = e.prototype, new i());\n }),\n s = this && this.__assign || function () {\n return (s = Object.assign || function (t) {\n for (var e, i = 1, n = arguments.length; i < n; i++) for (var o in e = arguments[i]) Object.prototype.hasOwnProperty.call(e, o) && (t[o] = e[o]);\n return t;\n }).apply(this, arguments);\n };\n Object.defineProperty(e, \"__esModule\", {\n value: !0\n });\n var r = i(7),\n a = i(0),\n l = i(1),\n c = function (t) {\n function e(e) {\n var i = t.call(this) || this;\n i.datePicked = [], i.calendars = [], i.options = {\n element: null,\n elementEnd: null,\n parentEl: null,\n firstDay: 1,\n format: \"YYYY-MM-DD\",\n lang: \"en-US\",\n delimiter: \" - \",\n numberOfMonths: 1,\n numberOfColumns: 1,\n startDate: null,\n endDate: null,\n zIndex: 9999,\n position: \"auto\",\n selectForward: !1,\n selectBackward: !1,\n splitView: !1,\n inlineMode: !1,\n singleMode: !0,\n autoApply: !0,\n allowRepick: !1,\n showWeekNumbers: !1,\n showTooltip: !0,\n scrollToDate: !0,\n mobileFriendly: !0,\n resetButton: !1,\n autoRefresh: !1,\n lockDaysFormat: \"YYYY-MM-DD\",\n lockDays: [],\n disallowLockDaysInRange: !1,\n lockDaysInclusivity: \"[]\",\n highlightedDaysFormat: \"YYYY-MM-DD\",\n highlightedDays: [],\n dropdowns: {\n minYear: 1990,\n maxYear: null,\n months: !1,\n years: !1\n },\n buttonText: {\n apply: \"Apply\",\n cancel: \"Cancel\",\n previousMonth: '<svg width=\"11\" height=\"16\" xmlns=\"http://www.w3.org/2000/svg\"><path d=\"M7.919 0l2.748 2.667L5.333 8l5.334 5.333L7.919 16 0 8z\" fill-rule=\"nonzero\"/></svg>',\n nextMonth: '<svg width=\"11\" height=\"16\" xmlns=\"http://www.w3.org/2000/svg\"><path d=\"M2.748 16L0 13.333 5.333 8 0 2.667 2.748 0l7.919 8z\" fill-rule=\"nonzero\"/></svg>',\n reset: '<svg xmlns=\"http://www.w3.org/2000/svg\" height=\"24\" viewBox=\"0 0 24 24\" width=\"24\">\\n <path d=\"M0 0h24v24H0z\" fill=\"none\"/>\\n <path d=\"M13 3c-4.97 0-9 4.03-9 9H1l3.89 3.89.07.14L9 12H6c0-3.87 3.13-7 7-7s7 3.13 7 7-3.13 7-7 7c-1.93 0-3.68-.79-4.94-2.06l-1.42 1.42C8.27 19.99 10.51 21 13 21c4.97 0 9-4.03 9-9s-4.03-9-9-9zm-1 5v5l4.28 2.54.72-1.21-3.5-2.08V8H12z\"/>\\n </svg>'\n },\n tooltipText: {\n one: \"day\",\n other: \"days\"\n }\n }, i.options = s(s({}, i.options), e.element.dataset), Object.keys(i.options).forEach(function (t) {\n \"true\" !== i.options[t] && \"false\" !== i.options[t] || (i.options[t] = \"true\" === i.options[t]);\n });\n var n = s(s({}, i.options.dropdowns), e.dropdowns),\n o = s(s({}, i.options.buttonText), e.buttonText),\n r = s(s({}, i.options.tooltipText), e.tooltipText);\n i.options = s(s({}, i.options), e), i.options.dropdowns = s({}, n), i.options.buttonText = s({}, o), i.options.tooltipText = s({}, r), i.options.elementEnd || (i.options.allowRepick = !1), i.options.lockDays.length && (i.options.lockDays = a.DateTime.convertArray(i.options.lockDays, i.options.lockDaysFormat)), i.options.highlightedDays.length && (i.options.highlightedDays = a.DateTime.convertArray(i.options.highlightedDays, i.options.highlightedDaysFormat));\n var l = i.parseInput(),\n c = l[0],\n h = l[1];\n i.options.startDate && (i.options.singleMode || i.options.endDate) && (c = new a.DateTime(i.options.startDate, i.options.format, i.options.lang)), c && i.options.endDate && (h = new a.DateTime(i.options.endDate, i.options.format, i.options.lang)), c instanceof a.DateTime && !isNaN(c.getTime()) && (i.options.startDate = c), i.options.startDate && h instanceof a.DateTime && !isNaN(h.getTime()) && (i.options.endDate = h), !i.options.singleMode || i.options.startDate instanceof a.DateTime || (i.options.startDate = null), i.options.singleMode || i.options.startDate instanceof a.DateTime && i.options.endDate instanceof a.DateTime || (i.options.startDate = null, i.options.endDate = null);\n for (var p = 0; p < i.options.numberOfMonths; p += 1) {\n var d = i.options.startDate instanceof a.DateTime ? i.options.startDate.clone() : new a.DateTime();\n if (!i.options.startDate && (0 === p || i.options.splitView)) {\n var u = i.options.maxDate ? new a.DateTime(i.options.maxDate) : null,\n m = i.options.minDate ? new a.DateTime(i.options.minDate) : null,\n f = i.options.numberOfMonths - 1;\n m && u && d.isAfter(u) ? (d = m.clone()).setDate(1) : !m && u && d.isAfter(u) && ((d = u.clone()).setDate(1), d.setMonth(d.getMonth() - f));\n }\n d.setDate(1), d.setMonth(d.getMonth() + p), i.calendars[p] = d;\n }\n if (i.options.showTooltip) if (i.options.tooltipPluralSelector) i.pluralSelector = i.options.tooltipPluralSelector;else try {\n var g = new Intl.PluralRules(i.options.lang);\n i.pluralSelector = g.select.bind(g);\n } catch (t) {\n i.pluralSelector = function (t) {\n return 0 === Math.abs(t) ? \"one\" : \"other\";\n };\n }\n return i;\n }\n return o(e, t), e.add = function (t, e) {\n l.Litepicker.prototype[t] = e;\n }, e.prototype.DateTime = function (t, e) {\n return t ? new a.DateTime(t, e) : new a.DateTime();\n }, e.prototype.init = function () {\n var t = this;\n this.options.plugins && this.options.plugins.length && this.options.plugins.forEach(function (e) {\n l.Litepicker.prototype.hasOwnProperty(e) ? l.Litepicker.prototype[e].init.call(t, t) : console.warn(\"Litepicker: plugin «\" + e + \"» not found.\");\n });\n }, e.prototype.parseInput = function () {\n var t = this.options.delimiter,\n e = new RegExp(\"\" + t),\n i = this.options.element instanceof HTMLInputElement ? this.options.element.value.split(t) : [];\n if (this.options.elementEnd) {\n if (this.options.element instanceof HTMLInputElement && this.options.element.value.length && this.options.elementEnd instanceof HTMLInputElement && this.options.elementEnd.value.length) return [new a.DateTime(this.options.element.value, this.options.format), new a.DateTime(this.options.elementEnd.value, this.options.format)];\n } else if (this.options.singleMode) {\n if (this.options.element instanceof HTMLInputElement && this.options.element.value.length) return [new a.DateTime(this.options.element.value, this.options.format)];\n } else if (this.options.element instanceof HTMLInputElement && e.test(this.options.element.value) && i.length && i.length % 2 == 0) {\n var n = i.slice(0, i.length / 2).join(t),\n o = i.slice(i.length / 2).join(t);\n return [new a.DateTime(n, this.options.format), new a.DateTime(o, this.options.format)];\n }\n return [];\n }, e.prototype.isShowning = function () {\n return this.ui && \"none\" !== this.ui.style.display;\n }, e.prototype.findPosition = function (t) {\n var e = t.getBoundingClientRect(),\n i = this.ui.getBoundingClientRect(),\n n = this.options.position.split(\" \"),\n o = window.scrollX || window.pageXOffset,\n s = window.scrollY || window.pageYOffset,\n r = 0,\n a = 0;\n if (\"auto\" !== n[0] && /top|bottom/.test(n[0])) r = e[n[0]] + s, \"top\" === n[0] && (r -= i.height);else {\n r = e.bottom + s;\n var l = e.bottom + i.height > window.innerHeight,\n c = e.top + s - i.height >= i.height;\n l && c && (r = e.top + s - i.height);\n }\n if (/left|right/.test(n[0]) || n[1] && \"auto\" !== n[1] && /left|right/.test(n[1])) a = /left|right/.test(n[0]) ? e[n[0]] + o : e[n[1]] + o, \"right\" !== n[0] && \"right\" !== n[1] || (a -= i.width);else {\n a = e.left + o;\n l = e.left + i.width > window.innerWidth;\n var h = e.right + o - i.width >= 0;\n l && h && (a = e.right + o - i.width);\n }\n return {\n left: a,\n top: r\n };\n }, e;\n }(r.EventEmitter);\n e.LPCore = c;\n }, function (t, e, i) {\n \"use strict\";\n\n var n,\n o = \"object\" == typeof Reflect ? Reflect : null,\n s = o && \"function\" == typeof o.apply ? o.apply : function (t, e, i) {\n return Function.prototype.apply.call(t, e, i);\n };\n n = o && \"function\" == typeof o.ownKeys ? o.ownKeys : Object.getOwnPropertySymbols ? function (t) {\n return Object.getOwnPropertyNames(t).concat(Object.getOwnPropertySymbols(t));\n } : function (t) {\n return Object.getOwnPropertyNames(t);\n };\n var r = Number.isNaN || function (t) {\n return t != t;\n };\n function a() {\n a.init.call(this);\n }\n t.exports = a, a.EventEmitter = a, a.prototype._events = void 0, a.prototype._eventsCount = 0, a.prototype._maxListeners = void 0;\n var l = 10;\n function c(t) {\n return void 0 === t._maxListeners ? a.defaultMaxListeners : t._maxListeners;\n }\n function h(t, e, i, n) {\n var o, s, r, a;\n if (\"function\" != typeof i) throw new TypeError('The \"listener\" argument must be of type Function. Received type ' + typeof i);\n if (void 0 === (s = t._events) ? (s = t._events = Object.create(null), t._eventsCount = 0) : (void 0 !== s.newListener && (t.emit(\"newListener\", e, i.listener ? i.listener : i), s = t._events), r = s[e]), void 0 === r) r = s[e] = i, ++t._eventsCount;else if (\"function\" == typeof r ? r = s[e] = n ? [i, r] : [r, i] : n ? r.unshift(i) : r.push(i), (o = c(t)) > 0 && r.length > o && !r.warned) {\n r.warned = !0;\n var l = new Error(\"Possible EventEmitter memory leak detected. \" + r.length + \" \" + String(e) + \" listeners added. Use emitter.setMaxListeners() to increase limit\");\n l.name = \"MaxListenersExceededWarning\", l.emitter = t, l.type = e, l.count = r.length, a = l, console && console.warn && console.warn(a);\n }\n return t;\n }\n function p() {\n for (var t = [], e = 0; e < arguments.length; e++) t.push(arguments[e]);\n this.fired || (this.target.removeListener(this.type, this.wrapFn), this.fired = !0, s(this.listener, this.target, t));\n }\n function d(t, e, i) {\n var n = {\n fired: !1,\n wrapFn: void 0,\n target: t,\n type: e,\n listener: i\n },\n o = p.bind(n);\n return o.listener = i, n.wrapFn = o, o;\n }\n function u(t, e, i) {\n var n = t._events;\n if (void 0 === n) return [];\n var o = n[e];\n return void 0 === o ? [] : \"function\" == typeof o ? i ? [o.listener || o] : [o] : i ? function (t) {\n for (var e = new Array(t.length), i = 0; i < e.length; ++i) e[i] = t[i].listener || t[i];\n return e;\n }(o) : f(o, o.length);\n }\n function m(t) {\n var e = this._events;\n if (void 0 !== e) {\n var i = e[t];\n if (\"function\" == typeof i) return 1;\n if (void 0 !== i) return i.length;\n }\n return 0;\n }\n function f(t, e) {\n for (var i = new Array(e), n = 0; n < e; ++n) i[n] = t[n];\n return i;\n }\n Object.defineProperty(a, \"defaultMaxListeners\", {\n enumerable: !0,\n get: function () {\n return l;\n },\n set: function (t) {\n if (\"number\" != typeof t || t < 0 || r(t)) throw new RangeError('The value of \"defaultMaxListeners\" is out of range. It must be a non-negative number. Received ' + t + \".\");\n l = t;\n }\n }), a.init = function () {\n void 0 !== this._events && this._events !== Object.getPrototypeOf(this)._events || (this._events = Object.create(null), this._eventsCount = 0), this._maxListeners = this._maxListeners || void 0;\n }, a.prototype.setMaxListeners = function (t) {\n if (\"number\" != typeof t || t < 0 || r(t)) throw new RangeError('The value of \"n\" is out of range. It must be a non-negative number. Received ' + t + \".\");\n return this._maxListeners = t, this;\n }, a.prototype.getMaxListeners = function () {\n return c(this);\n }, a.prototype.emit = function (t) {\n for (var e = [], i = 1; i < arguments.length; i++) e.push(arguments[i]);\n var n = \"error\" === t,\n o = this._events;\n if (void 0 !== o) n = n && void 0 === o.error;else if (!n) return !1;\n if (n) {\n var r;\n if (e.length > 0 && (r = e[0]), r instanceof Error) throw r;\n var a = new Error(\"Unhandled error.\" + (r ? \" (\" + r.message + \")\" : \"\"));\n throw a.context = r, a;\n }\n var l = o[t];\n if (void 0 === l) return !1;\n if (\"function\" == typeof l) s(l, this, e);else {\n var c = l.length,\n h = f(l, c);\n for (i = 0; i < c; ++i) s(h[i], this, e);\n }\n return !0;\n }, a.prototype.addListener = function (t, e) {\n return h(this, t, e, !1);\n }, a.prototype.on = a.prototype.addListener, a.prototype.prependListener = function (t, e) {\n return h(this, t, e, !0);\n }, a.prototype.once = function (t, e) {\n if (\"function\" != typeof e) throw new TypeError('The \"listener\" argument must be of type Function. Received type ' + typeof e);\n return this.on(t, d(this, t, e)), this;\n }, a.prototype.prependOnceListener = function (t, e) {\n if (\"function\" != typeof e) throw new TypeError('The \"listener\" argument must be of type Function. Received type ' + typeof e);\n return this.prependListener(t, d(this, t, e)), this;\n }, a.prototype.removeListener = function (t, e) {\n var i, n, o, s, r;\n if (\"function\" != typeof e) throw new TypeError('The \"listener\" argument must be of type Function. Received type ' + typeof e);\n if (void 0 === (n = this._events)) return this;\n if (void 0 === (i = n[t])) return this;\n if (i === e || i.listener === e) 0 == --this._eventsCount ? this._events = Object.create(null) : (delete n[t], n.removeListener && this.emit(\"removeListener\", t, i.listener || e));else if (\"function\" != typeof i) {\n for (o = -1, s = i.length - 1; s >= 0; s--) if (i[s] === e || i[s].listener === e) {\n r = i[s].listener, o = s;\n break;\n }\n if (o < 0) return this;\n 0 === o ? i.shift() : function (t, e) {\n for (; e + 1 < t.length; e++) t[e] = t[e + 1];\n t.pop();\n }(i, o), 1 === i.length && (n[t] = i[0]), void 0 !== n.removeListener && this.emit(\"removeListener\", t, r || e);\n }\n return this;\n }, a.prototype.off = a.prototype.removeListener, a.prototype.removeAllListeners = function (t) {\n var e, i, n;\n if (void 0 === (i = this._events)) return this;\n if (void 0 === i.removeListener) return 0 === arguments.length ? (this._events = Object.create(null), this._eventsCount = 0) : void 0 !== i[t] && (0 == --this._eventsCount ? this._events = Object.create(null) : delete i[t]), this;\n if (0 === arguments.length) {\n var o,\n s = Object.keys(i);\n for (n = 0; n < s.length; ++n) \"removeListener\" !== (o = s[n]) && this.removeAllListeners(o);\n return this.removeAllListeners(\"removeListener\"), this._events = Object.create(null), this._eventsCount = 0, this;\n }\n if (\"function\" == typeof (e = i[t])) this.removeListener(t, e);else if (void 0 !== e) for (n = e.length - 1; n >= 0; n--) this.removeListener(t, e[n]);\n return this;\n }, a.prototype.listeners = function (t) {\n return u(this, t, !0);\n }, a.prototype.rawListeners = function (t) {\n return u(this, t, !1);\n }, a.listenerCount = function (t, e) {\n return \"function\" == typeof t.listenerCount ? t.listenerCount(e) : m.call(t, e);\n }, a.prototype.listenerCount = m, a.prototype.eventNames = function () {\n return this._eventsCount > 0 ? n(this._events) : [];\n };\n }, function (t, e, i) {\n (e = i(9)(!1)).push([t.i, ':root{--litepicker-container-months-color-bg: #fff;--litepicker-container-months-box-shadow-color: #ddd;--litepicker-footer-color-bg: #fafafa;--litepicker-footer-box-shadow-color: #ddd;--litepicker-tooltip-color-bg: #fff;--litepicker-month-header-color: #333;--litepicker-button-prev-month-color: #9e9e9e;--litepicker-button-next-month-color: #9e9e9e;--litepicker-button-prev-month-color-hover: #2196f3;--litepicker-button-next-month-color-hover: #2196f3;--litepicker-month-width: calc(var(--litepicker-day-width) * 7);--litepicker-month-weekday-color: #9e9e9e;--litepicker-month-week-number-color: #9e9e9e;--litepicker-day-width: 38px;--litepicker-day-color: #333;--litepicker-day-color-hover: #2196f3;--litepicker-is-today-color: #f44336;--litepicker-is-in-range-color: #bbdefb;--litepicker-is-locked-color: #9e9e9e;--litepicker-is-start-color: #fff;--litepicker-is-start-color-bg: #2196f3;--litepicker-is-end-color: #fff;--litepicker-is-end-color-bg: #2196f3;--litepicker-button-cancel-color: #fff;--litepicker-button-cancel-color-bg: #9e9e9e;--litepicker-button-apply-color: #fff;--litepicker-button-apply-color-bg: #2196f3;--litepicker-button-reset-color: #909090;--litepicker-button-reset-color-hover: #2196f3;--litepicker-highlighted-day-color: #333;--litepicker-highlighted-day-color-bg: #ffeb3b}.show-week-numbers{--litepicker-month-width: calc(var(--litepicker-day-width) * 8)}.litepicker{font-family:-apple-system, BlinkMacSystemFont, \"Segoe UI\", Roboto, \"Helvetica Neue\", Arial, sans-serif;font-size:0.8em;display:none}.litepicker button{border:none;background:none}.litepicker .container__main{display:-webkit-box;display:-ms-flexbox;display:flex}.litepicker .container__months{display:-webkit-box;display:-ms-flexbox;display:flex;-ms-flex-wrap:wrap;flex-wrap:wrap;background-color:var(--litepicker-container-months-color-bg);border-radius:5px;-webkit-box-shadow:0 0 5px var(--litepicker-container-months-box-shadow-color);box-shadow:0 0 5px var(--litepicker-container-months-box-shadow-color);width:calc(var(--litepicker-month-width) + 10px);-webkit-box-sizing:content-box;box-sizing:content-box}.litepicker .container__months.columns-2{width:calc((var(--litepicker-month-width) * 2) + 20px)}.litepicker .container__months.columns-3{width:calc((var(--litepicker-month-width) * 3) + 30px)}.litepicker .container__months.columns-4{width:calc((var(--litepicker-month-width) * 4) + 40px)}.litepicker .container__months.split-view .month-item-header .button-previous-month,.litepicker .container__months.split-view .month-item-header .button-next-month{visibility:visible}.litepicker .container__months .month-item{padding:5px;width:var(--litepicker-month-width);-webkit-box-sizing:content-box;box-sizing:content-box}.litepicker .container__months .month-item-header{display:-webkit-box;display:-ms-flexbox;display:flex;-webkit-box-pack:justify;-ms-flex-pack:justify;justify-content:space-between;font-weight:500;padding:10px 5px;text-align:center;-webkit-box-align:center;-ms-flex-align:center;align-items:center;color:var(--litepicker-month-header-color)}.litepicker .container__months .month-item-header div{-webkit-box-flex:1;-ms-flex:1;flex:1}.litepicker .container__months .month-item-header div>.month-item-name{margin-right:5px}.litepicker .container__months .month-item-header div>.month-item-year{padding:0}.litepicker .container__months .month-item-header .reset-button{color:var(--litepicker-button-reset-color)}.litepicker .container__months .month-item-header .reset-button>svg{fill:var(--litepicker-button-reset-color)}.litepicker .container__months .month-item-header .reset-button *{pointer-events:none}.litepicker .container__months .month-item-header .reset-button:hover{color:var(--litepicker-button-reset-color-hover)}.litepicker .container__months .month-item-header .reset-button:hover>svg{fill:var(--litepicker-button-reset-color-hover)}.litepicker .container__months .month-item-header .button-previous-month,.litepicker .container__months .month-item-header .button-next-month{visibility:hidden;text-decoration:none;padding:3px 5px;border-radius:3px;-webkit-transition:color 0.3s, border 0.3s;transition:color 0.3s, border 0.3s;cursor:default}.litepicker .container__months .month-item-header .button-previous-month *,.litepicker .container__months .month-item-header .button-next-month *{pointer-events:none}.litepicker .container__months .month-item-header .button-previous-month{color:var(--litepicker-button-prev-month-color)}.litepicker .container__months .month-item-header .button-previous-month>svg,.litepicker .container__months .month-item-header .button-previous-month>img{fill:var(--litepicker-button-prev-month-color)}.litepicker .container__months .month-item-header .button-previous-month:hover{color:var(--litepicker-button-prev-month-color-hover)}.litepicker .container__months .month-item-header .button-previous-month:hover>svg{fill:var(--litepicker-button-prev-month-color-hover)}.litepicker .container__months .month-item-header .button-next-month{color:var(--litepicker-button-next-month-color)}.litepicker .container__months .month-item-header .button-next-month>svg,.litepicker .container__months .month-item-header .button-next-month>img{fill:var(--litepicker-button-next-month-color)}.litepicker .container__months .month-item-header .button-next-month:hover{color:var(--litepicker-button-next-month-color-hover)}.litepicker .container__months .month-item-header .button-next-month:hover>svg{fill:var(--litepicker-button-next-month-color-hover)}.litepicker .container__months .month-item-weekdays-row{display:-webkit-box;display:-ms-flexbox;display:flex;justify-self:center;-webkit-box-pack:start;-ms-flex-pack:start;justify-content:flex-start;color:var(--litepicker-month-weekday-color)}.litepicker .container__months .month-item-weekdays-row>div{padding:5px 0;font-size:85%;-webkit-box-flex:1;-ms-flex:1;flex:1;width:var(--litepicker-day-width);text-align:center}.litepicker .container__months .month-item:first-child .button-previous-month{visibility:visible}.litepicker .container__months .month-item:last-child .button-next-month{visibility:visible}.litepicker .container__months .month-item.no-previous-month .button-previous-month{visibility:hidden}.litepicker .container__months .month-item.no-next-month .button-next-month{visibility:hidden}.litepicker .container__days{display:-webkit-box;display:-ms-flexbox;display:flex;-ms-flex-wrap:wrap;flex-wrap:wrap;justify-self:center;-webkit-box-pack:start;-ms-flex-pack:start;justify-content:flex-start;text-align:center;-webkit-box-sizing:content-box;box-sizing:content-box}.litepicker .container__days>div,.litepicker .container__days>a{padding:5px 0;width:var(--litepicker-day-width)}.litepicker .container__days .day-item{color:var(--litepicker-day-color);text-align:center;text-decoration:none;border-radius:3px;-webkit-transition:color 0.3s, border 0.3s;transition:color 0.3s, border 0.3s;cursor:default}.litepicker .container__days .day-item:hover{color:var(--litepicker-day-color-hover);-webkit-box-shadow:inset 0 0 0 1px var(--litepicker-day-color-hover);box-shadow:inset 0 0 0 1px var(--litepicker-day-color-hover)}.litepicker .container__days .day-item.is-today{color:var(--litepicker-is-today-color)}.litepicker .container__days .day-item.is-locked{color:var(--litepicker-is-locked-color)}.litepicker .container__days .day-item.is-locked:hover{color:var(--litepicker-is-locked-color);-webkit-box-shadow:none;box-shadow:none;cursor:default}.litepicker .container__days .day-item.is-in-range{background-color:var(--litepicker-is-in-range-color);border-radius:0}.litepicker .container__days .day-item.is-start-date{color:var(--litepicker-is-start-color);background-color:var(--litepicker-is-start-color-bg);border-top-left-radius:5px;border-bottom-left-radius:5px;border-top-right-radius:0;border-bottom-right-radius:0}.litepicker .container__days .day-item.is-start-date.is-flipped{border-top-left-radius:0;border-bottom-left-radius:0;border-top-right-radius:5px;border-bottom-right-radius:5px}.litepicker .container__days .day-item.is-end-date{color:var(--litepicker-is-end-color);background-color:var(--litepicker-is-end-color-bg);border-top-left-radius:0;border-bottom-left-radius:0;border-top-right-radius:5px;border-bottom-right-radius:5px}.litepicker .container__days .day-item.is-end-date.is-flipped{border-top-left-radius:5px;border-bottom-left-radius:5px;border-top-right-radius:0;border-bottom-right-radius:0}.litepicker .container__days .day-item.is-start-date.is-end-date{border-top-left-radius:5px;border-bottom-left-radius:5px;border-top-right-radius:5px;border-bottom-right-radius:5px}.litepicker .container__days .day-item.is-highlighted{color:var(--litepicker-highlighted-day-color);background-color:var(--litepicker-highlighted-day-color-bg)}.litepicker .container__days .week-number{display:-webkit-box;display:-ms-flexbox;display:flex;-webkit-box-align:center;-ms-flex-align:center;align-items:center;-webkit-box-pack:center;-ms-flex-pack:center;justify-content:center;color:var(--litepicker-month-week-number-color);font-size:85%}.litepicker .container__footer{text-align:right;padding:10px 5px;margin:0 5px;background-color:var(--litepicker-footer-color-bg);-webkit-box-shadow:inset 0px 3px 3px 0px var(--litepicker-footer-box-shadow-color);box-shadow:inset 0px 3px 3px 0px var(--litepicker-footer-box-shadow-color);border-bottom-left-radius:5px;border-bottom-right-radius:5px}.litepicker .container__footer .preview-date-range{margin-right:10px;font-size:90%}.litepicker .container__footer .button-cancel{background-color:var(--litepicker-button-cancel-color-bg);color:var(--litepicker-button-cancel-color);border:0;padding:3px 7px 4px;border-radius:3px}.litepicker .container__footer .button-cancel *{pointer-events:none}.litepicker .container__footer .button-apply{background-color:var(--litepicker-button-apply-color-bg);color:var(--litepicker-button-apply-color);border:0;padding:3px 7px 4px;border-radius:3px;margin-left:10px;margin-right:10px}.litepicker .container__footer .button-apply:disabled{opacity:0.7}.litepicker .container__footer .button-apply *{pointer-events:none}.litepicker .container__tooltip{position:absolute;margin-top:-4px;padding:4px 8px;border-radius:4px;background-color:var(--litepicker-tooltip-color-bg);-webkit-box-shadow:0 1px 3px rgba(0,0,0,0.25);box-shadow:0 1px 3px rgba(0,0,0,0.25);white-space:nowrap;font-size:11px;pointer-events:none;visibility:hidden}.litepicker .container__tooltip:before{position:absolute;bottom:-5px;left:calc(50% - 5px);border-top:5px solid rgba(0,0,0,0.12);border-right:5px solid transparent;border-left:5px solid transparent;content:\"\"}.litepicker .container__tooltip:after{position:absolute;bottom:-4px;left:calc(50% - 4px);border-top:4px solid var(--litepicker-tooltip-color-bg);border-right:4px solid transparent;border-left:4px solid transparent;content:\"\"}\\n', \"\"]), e.locals = {\n showWeekNumbers: \"show-week-numbers\",\n litepicker: \"litepicker\",\n containerMain: \"container__main\",\n containerMonths: \"container__months\",\n columns2: \"columns-2\",\n columns3: \"columns-3\",\n columns4: \"columns-4\",\n splitView: \"split-view\",\n monthItemHeader: \"month-item-header\",\n buttonPreviousMonth: \"button-previous-month\",\n buttonNextMonth: \"button-next-month\",\n monthItem: \"month-item\",\n monthItemName: \"month-item-name\",\n monthItemYear: \"month-item-year\",\n resetButton: \"reset-button\",\n monthItemWeekdaysRow: \"month-item-weekdays-row\",\n noPreviousMonth: \"no-previous-month\",\n noNextMonth: \"no-next-month\",\n containerDays: \"container__days\",\n dayItem: \"day-item\",\n isToday: \"is-today\",\n isLocked: \"is-locked\",\n isInRange: \"is-in-range\",\n isStartDate: \"is-start-date\",\n isFlipped: \"is-flipped\",\n isEndDate: \"is-end-date\",\n isHighlighted: \"is-highlighted\",\n weekNumber: \"week-number\",\n containerFooter: \"container__footer\",\n previewDateRange: \"preview-date-range\",\n buttonCancel: \"button-cancel\",\n buttonApply: \"button-apply\",\n containerTooltip: \"container__tooltip\"\n }, t.exports = e;\n }, function (t, e, i) {\n \"use strict\";\n\n t.exports = function (t) {\n var e = [];\n return e.toString = function () {\n return this.map(function (e) {\n var i = function (t, e) {\n var i = t[1] || \"\",\n n = t[3];\n if (!n) return i;\n if (e && \"function\" == typeof btoa) {\n var o = (r = n, a = btoa(unescape(encodeURIComponent(JSON.stringify(r)))), l = \"sourceMappingURL=data:application/json;charset=utf-8;base64,\".concat(a), \"/*# \".concat(l, \" */\")),\n s = n.sources.map(function (t) {\n return \"/*# sourceURL=\".concat(n.sourceRoot || \"\").concat(t, \" */\");\n });\n return [i].concat(s).concat([o]).join(\"\\n\");\n }\n var r, a, l;\n return [i].join(\"\\n\");\n }(e, t);\n return e[2] ? \"@media \".concat(e[2], \" {\").concat(i, \"}\") : i;\n }).join(\"\");\n }, e.i = function (t, i, n) {\n \"string\" == typeof t && (t = [[null, t, \"\"]]);\n var o = {};\n if (n) for (var s = 0; s < this.length; s++) {\n var r = this[s][0];\n null != r && (o[r] = !0);\n }\n for (var a = 0; a < t.length; a++) {\n var l = [].concat(t[a]);\n n && o[l[0]] || (i && (l[2] ? l[2] = \"\".concat(i, \" and \").concat(l[2]) : l[2] = i), e.push(l));\n }\n }, e;\n };\n }, function (t, e, i) {\n \"use strict\";\n\n var n,\n o = {},\n s = function () {\n return void 0 === n && (n = Boolean(window && document && document.all && !window.atob)), n;\n },\n r = function () {\n var t = {};\n return function (e) {\n if (void 0 === t[e]) {\n var i = document.querySelector(e);\n if (window.HTMLIFrameElement && i instanceof window.HTMLIFrameElement) try {\n i = i.contentDocument.head;\n } catch (t) {\n i = null;\n }\n t[e] = i;\n }\n return t[e];\n };\n }();\n function a(t, e) {\n for (var i = [], n = {}, o = 0; o < t.length; o++) {\n var s = t[o],\n r = e.base ? s[0] + e.base : s[0],\n a = {\n css: s[1],\n media: s[2],\n sourceMap: s[3]\n };\n n[r] ? n[r].parts.push(a) : i.push(n[r] = {\n id: r,\n parts: [a]\n });\n }\n return i;\n }\n function l(t, e) {\n for (var i = 0; i < t.length; i++) {\n var n = t[i],\n s = o[n.id],\n r = 0;\n if (s) {\n for (s.refs++; r < s.parts.length; r++) s.parts[r](n.parts[r]);\n for (; r < n.parts.length; r++) s.parts.push(g(n.parts[r], e));\n } else {\n for (var a = []; r < n.parts.length; r++) a.push(g(n.parts[r], e));\n o[n.id] = {\n id: n.id,\n refs: 1,\n parts: a\n };\n }\n }\n }\n function c(t) {\n var e = document.createElement(\"style\");\n if (void 0 === t.attributes.nonce) {\n var n = i.nc;\n n && (t.attributes.nonce = n);\n }\n if (Object.keys(t.attributes).forEach(function (i) {\n e.setAttribute(i, t.attributes[i]);\n }), \"function\" == typeof t.insert) t.insert(e);else {\n var o = r(t.insert || \"head\");\n if (!o) throw new Error(\"Couldn't find a style target. This probably means that the value for the 'insert' parameter is invalid.\");\n o.appendChild(e);\n }\n return e;\n }\n var h,\n p = (h = [], function (t, e) {\n return h[t] = e, h.filter(Boolean).join(\"\\n\");\n });\n function d(t, e, i, n) {\n var o = i ? \"\" : n.css;\n if (t.styleSheet) t.styleSheet.cssText = p(e, o);else {\n var s = document.createTextNode(o),\n r = t.childNodes;\n r[e] && t.removeChild(r[e]), r.length ? t.insertBefore(s, r[e]) : t.appendChild(s);\n }\n }\n function u(t, e, i) {\n var n = i.css,\n o = i.media,\n s = i.sourceMap;\n if (o && t.setAttribute(\"media\", o), s && btoa && (n += \"\\n/*# sourceMappingURL=data:application/json;base64,\".concat(btoa(unescape(encodeURIComponent(JSON.stringify(s)))), \" */\")), t.styleSheet) t.styleSheet.cssText = n;else {\n for (; t.firstChild;) t.removeChild(t.firstChild);\n t.appendChild(document.createTextNode(n));\n }\n }\n var m = null,\n f = 0;\n function g(t, e) {\n var i, n, o;\n if (e.singleton) {\n var s = f++;\n i = m || (m = c(e)), n = d.bind(null, i, s, !1), o = d.bind(null, i, s, !0);\n } else i = c(e), n = u.bind(null, i, e), o = function () {\n !function (t) {\n if (null === t.parentNode) return !1;\n t.parentNode.removeChild(t);\n }(i);\n };\n return n(t), function (e) {\n if (e) {\n if (e.css === t.css && e.media === t.media && e.sourceMap === t.sourceMap) return;\n n(t = e);\n } else o();\n };\n }\n t.exports = function (t, e) {\n (e = e || {}).attributes = \"object\" == typeof e.attributes ? e.attributes : {}, e.singleton || \"boolean\" == typeof e.singleton || (e.singleton = s());\n var i = a(t, e);\n return l(i, e), function (t) {\n for (var n = [], s = 0; s < i.length; s++) {\n var r = i[s],\n c = o[r.id];\n c && (c.refs--, n.push(c));\n }\n t && l(a(t, e), e);\n for (var h = 0; h < n.length; h++) {\n var p = n[h];\n if (0 === p.refs) {\n for (var d = 0; d < p.parts.length; d++) p.parts[d]();\n delete o[p.id];\n }\n }\n };\n };\n }, function (t, e, i) {\n \"use strict\";\n\n var n = this && this.__assign || function () {\n return (n = Object.assign || function (t) {\n for (var e, i = 1, n = arguments.length; i < n; i++) for (var o in e = arguments[i]) Object.prototype.hasOwnProperty.call(e, o) && (t[o] = e[o]);\n return t;\n }).apply(this, arguments);\n };\n Object.defineProperty(e, \"__esModule\", {\n value: !0\n });\n var o = i(0),\n s = i(1),\n r = i(2);\n s.Litepicker.prototype.show = function (t) {\n void 0 === t && (t = null), this.emit(\"before:show\", t);\n var e = t || this.options.element;\n if (this.triggerElement = e, !this.isShowning()) {\n if (this.options.inlineMode) return this.ui.style.position = \"relative\", this.ui.style.display = \"inline-block\", this.ui.style.top = null, this.ui.style.left = null, this.ui.style.bottom = null, void (this.ui.style.right = null);\n this.scrollToDate(t), this.render(), this.ui.style.position = \"absolute\", this.ui.style.display = \"block\", this.ui.style.zIndex = this.options.zIndex;\n var i = this.findPosition(e);\n this.ui.style.top = i.top + \"px\", this.ui.style.left = i.left + \"px\", this.ui.style.right = null, this.ui.style.bottom = null, this.emit(\"show\", t);\n }\n }, s.Litepicker.prototype.hide = function () {\n this.isShowning() && (this.datePicked.length = 0, this.updateInput(), this.options.inlineMode ? this.render() : (this.ui.style.display = \"none\", this.emit(\"hide\")));\n }, s.Litepicker.prototype.getDate = function () {\n return this.getStartDate();\n }, s.Litepicker.prototype.getStartDate = function () {\n return this.options.startDate ? this.options.startDate.clone() : null;\n }, s.Litepicker.prototype.getEndDate = function () {\n return this.options.endDate ? this.options.endDate.clone() : null;\n }, s.Litepicker.prototype.setDate = function (t, e) {\n void 0 === e && (e = !1);\n var i = new o.DateTime(t, this.options.format, this.options.lang);\n r.dateIsLocked(i, this.options, [i]) && !e ? this.emit(\"error:date\", i) : (this.setStartDate(t), this.options.inlineMode && this.render(), this.emit(\"selected\", this.getDate()));\n }, s.Litepicker.prototype.setStartDate = function (t) {\n t && (this.options.startDate = new o.DateTime(t, this.options.format, this.options.lang), this.updateInput());\n }, s.Litepicker.prototype.setEndDate = function (t) {\n t && (this.options.endDate = new o.DateTime(t, this.options.format, this.options.lang), this.options.startDate.getTime() > this.options.endDate.getTime() && (this.options.endDate = this.options.startDate.clone(), this.options.startDate = new o.DateTime(t, this.options.format, this.options.lang)), this.updateInput());\n }, s.Litepicker.prototype.setDateRange = function (t, e, i) {\n void 0 === i && (i = !1), this.triggerElement = void 0;\n var n = new o.DateTime(t, this.options.format, this.options.lang),\n s = new o.DateTime(e, this.options.format, this.options.lang);\n (this.options.disallowLockDaysInRange ? r.rangeIsLocked([n, s], this.options) : r.dateIsLocked(n, this.options, [n, s]) || r.dateIsLocked(s, this.options, [n, s])) && !i ? this.emit(\"error:range\", [n, s]) : (this.setStartDate(n), this.setEndDate(s), this.options.inlineMode && this.render(), this.updateInput(), this.emit(\"selected\", this.getStartDate(), this.getEndDate()));\n }, s.Litepicker.prototype.gotoDate = function (t, e) {\n void 0 === e && (e = 0);\n var i = new o.DateTime(t);\n i.setDate(1), this.calendars[e] = i.clone(), this.render();\n }, s.Litepicker.prototype.setLockDays = function (t) {\n this.options.lockDays = o.DateTime.convertArray(t, this.options.lockDaysFormat), this.render();\n }, s.Litepicker.prototype.setHighlightedDays = function (t) {\n this.options.highlightedDays = o.DateTime.convertArray(t, this.options.highlightedDaysFormat), this.render();\n }, s.Litepicker.prototype.setOptions = function (t) {\n delete t.element, delete t.elementEnd, delete t.parentEl, t.startDate && (t.startDate = new o.DateTime(t.startDate, this.options.format, this.options.lang)), t.endDate && (t.endDate = new o.DateTime(t.endDate, this.options.format, this.options.lang));\n var e = n(n({}, this.options.dropdowns), t.dropdowns),\n i = n(n({}, this.options.buttonText), t.buttonText),\n s = n(n({}, this.options.tooltipText), t.tooltipText);\n this.options = n(n({}, this.options), t), this.options.dropdowns = n({}, e), this.options.buttonText = n({}, i), this.options.tooltipText = n({}, s), !this.options.singleMode || this.options.startDate instanceof o.DateTime || (this.options.startDate = null, this.options.endDate = null), this.options.singleMode || this.options.startDate instanceof o.DateTime && this.options.endDate instanceof o.DateTime || (this.options.startDate = null, this.options.endDate = null);\n for (var r = 0; r < this.options.numberOfMonths; r += 1) {\n var a = this.options.startDate ? this.options.startDate.clone() : new o.DateTime();\n a.setDate(1), a.setMonth(a.getMonth() + r), this.calendars[r] = a;\n }\n this.options.lockDays.length && (this.options.lockDays = o.DateTime.convertArray(this.options.lockDays, this.options.lockDaysFormat)), this.options.highlightedDays.length && (this.options.highlightedDays = o.DateTime.convertArray(this.options.highlightedDays, this.options.highlightedDaysFormat)), this.render(), this.options.inlineMode && this.show(), this.updateInput();\n }, s.Litepicker.prototype.clearSelection = function () {\n this.options.startDate = null, this.options.endDate = null, this.datePicked.length = 0, this.updateInput(), this.isShowning() && this.render(), this.emit(\"clear:selection\");\n }, s.Litepicker.prototype.destroy = function () {\n this.ui && this.ui.parentNode && (this.ui.parentNode.removeChild(this.ui), this.ui = null), this.emit(\"destroy\");\n };\n }]);\n});","!function (e, t) {\n if (\"function\" == typeof define && define.amd) define(\"hoverintent\", [\"module\"], t);else if (\"undefined\" != typeof exports) t(module);else {\n var n = {\n exports: {}\n };\n t(n), e.hoverintent = n.exports;\n }\n}(this, function (e) {\n \"use strict\";\n\n var t = Object.assign || function (e) {\n for (var t = 1; t < arguments.length; t++) {\n var n = arguments[t];\n for (var o in n) Object.prototype.hasOwnProperty.call(n, o) && (e[o] = n[o]);\n }\n return e;\n };\n e.exports = function (e, n, o) {\n function i(e, t) {\n return y && (y = clearTimeout(y)), b = 0, p ? void 0 : o.call(e, t);\n }\n function r(e) {\n m = e.clientX, d = e.clientY;\n }\n function u(e, t) {\n if (y && (y = clearTimeout(y)), Math.abs(h - m) + Math.abs(E - d) < x.sensitivity) return b = 1, p ? void 0 : n.call(e, t);\n h = m, E = d, y = setTimeout(function () {\n u(e, t);\n }, x.interval);\n }\n function s(t) {\n return L = !0, y && (y = clearTimeout(y)), e.removeEventListener(\"mousemove\", r, !1), 1 !== b && (h = t.clientX, E = t.clientY, e.addEventListener(\"mousemove\", r, !1), y = setTimeout(function () {\n u(e, t);\n }, x.interval)), this;\n }\n function c(t) {\n return L = !1, y && (y = clearTimeout(y)), e.removeEventListener(\"mousemove\", r, !1), 1 === b && (y = setTimeout(function () {\n i(e, t);\n }, x.timeout)), this;\n }\n function v(t) {\n L || (p = !0, n.call(e, t));\n }\n function a(t) {\n !L && p && (p = !1, o.call(e, t));\n }\n function f() {\n e.addEventListener(\"focus\", v, !1), e.addEventListener(\"blur\", a, !1);\n }\n function l() {\n e.removeEventListener(\"focus\", v, !1), e.removeEventListener(\"blur\", a, !1);\n }\n var m,\n d,\n h,\n E,\n L = !1,\n p = !1,\n T = {},\n b = 0,\n y = 0,\n x = {\n sensitivity: 7,\n interval: 100,\n timeout: 0,\n handleFocus: !1\n };\n return T.options = function (e) {\n var n = e.handleFocus !== x.handleFocus;\n return x = t({}, x, e), n && (x.handleFocus ? f() : l()), T;\n }, T.remove = function () {\n e && (e.removeEventListener(\"mouseover\", s, !1), e.removeEventListener(\"mouseout\", c, !1), l());\n }, e && (e.addEventListener(\"mouseover\", s, !1), e.addEventListener(\"mouseout\", c, !1)), T;\n };\n});","var map = {\n\t\"./af\": 156,\n\t\"./af.js\": 156,\n\t\"./ar\": 157,\n\t\"./ar-dz\": 158,\n\t\"./ar-dz.js\": 158,\n\t\"./ar-kw\": 159,\n\t\"./ar-kw.js\": 159,\n\t\"./ar-ly\": 160,\n\t\"./ar-ly.js\": 160,\n\t\"./ar-ma\": 161,\n\t\"./ar-ma.js\": 161,\n\t\"./ar-ps\": 162,\n\t\"./ar-ps.js\": 162,\n\t\"./ar-sa\": 163,\n\t\"./ar-sa.js\": 163,\n\t\"./ar-tn\": 164,\n\t\"./ar-tn.js\": 164,\n\t\"./ar.js\": 157,\n\t\"./az\": 165,\n\t\"./az.js\": 165,\n\t\"./be\": 166,\n\t\"./be.js\": 166,\n\t\"./bg\": 167,\n\t\"./bg.js\": 167,\n\t\"./bm\": 168,\n\t\"./bm.js\": 168,\n\t\"./bn\": 169,\n\t\"./bn-bd\": 170,\n\t\"./bn-bd.js\": 170,\n\t\"./bn.js\": 169,\n\t\"./bo\": 171,\n\t\"./bo.js\": 171,\n\t\"./br\": 172,\n\t\"./br.js\": 172,\n\t\"./bs\": 173,\n\t\"./bs.js\": 173,\n\t\"./ca\": 174,\n\t\"./ca.js\": 174,\n\t\"./cs\": 175,\n\t\"./cs.js\": 175,\n\t\"./cv\": 176,\n\t\"./cv.js\": 176,\n\t\"./cy\": 177,\n\t\"./cy.js\": 177,\n\t\"./da\": 178,\n\t\"./da.js\": 178,\n\t\"./de\": 179,\n\t\"./de-at\": 180,\n\t\"./de-at.js\": 180,\n\t\"./de-ch\": 181,\n\t\"./de-ch.js\": 181,\n\t\"./de.js\": 179,\n\t\"./dv\": 182,\n\t\"./dv.js\": 182,\n\t\"./el\": 183,\n\t\"./el.js\": 183,\n\t\"./en-au\": 184,\n\t\"./en-au.js\": 184,\n\t\"./en-ca\": 185,\n\t\"./en-ca.js\": 185,\n\t\"./en-gb\": 186,\n\t\"./en-gb.js\": 186,\n\t\"./en-ie\": 187,\n\t\"./en-ie.js\": 187,\n\t\"./en-il\": 188,\n\t\"./en-il.js\": 188,\n\t\"./en-in\": 189,\n\t\"./en-in.js\": 189,\n\t\"./en-nz\": 190,\n\t\"./en-nz.js\": 190,\n\t\"./en-sg\": 191,\n\t\"./en-sg.js\": 191,\n\t\"./eo\": 192,\n\t\"./eo.js\": 192,\n\t\"./es\": 193,\n\t\"./es-do\": 194,\n\t\"./es-do.js\": 194,\n\t\"./es-mx\": 195,\n\t\"./es-mx.js\": 195,\n\t\"./es-us\": 196,\n\t\"./es-us.js\": 196,\n\t\"./es.js\": 193,\n\t\"./et\": 197,\n\t\"./et.js\": 197,\n\t\"./eu\": 198,\n\t\"./eu.js\": 198,\n\t\"./fa\": 199,\n\t\"./fa.js\": 199,\n\t\"./fi\": 200,\n\t\"./fi.js\": 200,\n\t\"./fil\": 201,\n\t\"./fil.js\": 201,\n\t\"./fo\": 202,\n\t\"./fo.js\": 202,\n\t\"./fr\": 203,\n\t\"./fr-ca\": 204,\n\t\"./fr-ca.js\": 204,\n\t\"./fr-ch\": 205,\n\t\"./fr-ch.js\": 205,\n\t\"./fr.js\": 203,\n\t\"./fy\": 206,\n\t\"./fy.js\": 206,\n\t\"./ga\": 207,\n\t\"./ga.js\": 207,\n\t\"./gd\": 208,\n\t\"./gd.js\": 208,\n\t\"./gl\": 209,\n\t\"./gl.js\": 209,\n\t\"./gom-deva\": 210,\n\t\"./gom-deva.js\": 210,\n\t\"./gom-latn\": 211,\n\t\"./gom-latn.js\": 211,\n\t\"./gu\": 212,\n\t\"./gu.js\": 212,\n\t\"./he\": 213,\n\t\"./he.js\": 213,\n\t\"./hi\": 214,\n\t\"./hi.js\": 214,\n\t\"./hr\": 215,\n\t\"./hr.js\": 215,\n\t\"./hu\": 216,\n\t\"./hu.js\": 216,\n\t\"./hy-am\": 217,\n\t\"./hy-am.js\": 217,\n\t\"./id\": 218,\n\t\"./id.js\": 218,\n\t\"./is\": 219,\n\t\"./is.js\": 219,\n\t\"./it\": 220,\n\t\"./it-ch\": 221,\n\t\"./it-ch.js\": 221,\n\t\"./it.js\": 220,\n\t\"./ja\": 222,\n\t\"./ja.js\": 222,\n\t\"./jv\": 223,\n\t\"./jv.js\": 223,\n\t\"./ka\": 224,\n\t\"./ka.js\": 224,\n\t\"./kk\": 225,\n\t\"./kk.js\": 225,\n\t\"./km\": 226,\n\t\"./km.js\": 226,\n\t\"./kn\": 227,\n\t\"./kn.js\": 227,\n\t\"./ko\": 228,\n\t\"./ko.js\": 228,\n\t\"./ku\": 229,\n\t\"./ku-kmr\": 230,\n\t\"./ku-kmr.js\": 230,\n\t\"./ku.js\": 229,\n\t\"./ky\": 231,\n\t\"./ky.js\": 231,\n\t\"./lb\": 232,\n\t\"./lb.js\": 232,\n\t\"./lo\": 233,\n\t\"./lo.js\": 233,\n\t\"./lt\": 234,\n\t\"./lt.js\": 234,\n\t\"./lv\": 235,\n\t\"./lv.js\": 235,\n\t\"./me\": 236,\n\t\"./me.js\": 236,\n\t\"./mi\": 237,\n\t\"./mi.js\": 237,\n\t\"./mk\": 238,\n\t\"./mk.js\": 238,\n\t\"./ml\": 239,\n\t\"./ml.js\": 239,\n\t\"./mn\": 240,\n\t\"./mn.js\": 240,\n\t\"./mr\": 241,\n\t\"./mr.js\": 241,\n\t\"./ms\": 242,\n\t\"./ms-my\": 243,\n\t\"./ms-my.js\": 243,\n\t\"./ms.js\": 242,\n\t\"./mt\": 244,\n\t\"./mt.js\": 244,\n\t\"./my\": 245,\n\t\"./my.js\": 245,\n\t\"./nb\": 246,\n\t\"./nb.js\": 246,\n\t\"./ne\": 247,\n\t\"./ne.js\": 247,\n\t\"./nl\": 248,\n\t\"./nl-be\": 249,\n\t\"./nl-be.js\": 249,\n\t\"./nl.js\": 248,\n\t\"./nn\": 250,\n\t\"./nn.js\": 250,\n\t\"./oc-lnc\": 251,\n\t\"./oc-lnc.js\": 251,\n\t\"./pa-in\": 252,\n\t\"./pa-in.js\": 252,\n\t\"./pl\": 253,\n\t\"./pl.js\": 253,\n\t\"./pt\": 254,\n\t\"./pt-br\": 255,\n\t\"./pt-br.js\": 255,\n\t\"./pt.js\": 254,\n\t\"./ro\": 256,\n\t\"./ro.js\": 256,\n\t\"./ru\": 257,\n\t\"./ru.js\": 257,\n\t\"./sd\": 258,\n\t\"./sd.js\": 258,\n\t\"./se\": 259,\n\t\"./se.js\": 259,\n\t\"./si\": 260,\n\t\"./si.js\": 260,\n\t\"./sk\": 261,\n\t\"./sk.js\": 261,\n\t\"./sl\": 262,\n\t\"./sl.js\": 262,\n\t\"./sq\": 263,\n\t\"./sq.js\": 263,\n\t\"./sr\": 264,\n\t\"./sr-cyrl\": 265,\n\t\"./sr-cyrl.js\": 265,\n\t\"./sr.js\": 264,\n\t\"./ss\": 266,\n\t\"./ss.js\": 266,\n\t\"./sv\": 267,\n\t\"./sv.js\": 267,\n\t\"./sw\": 268,\n\t\"./sw.js\": 268,\n\t\"./ta\": 269,\n\t\"./ta.js\": 269,\n\t\"./te\": 270,\n\t\"./te.js\": 270,\n\t\"./tet\": 271,\n\t\"./tet.js\": 271,\n\t\"./tg\": 272,\n\t\"./tg.js\": 272,\n\t\"./th\": 273,\n\t\"./th.js\": 273,\n\t\"./tk\": 274,\n\t\"./tk.js\": 274,\n\t\"./tl-ph\": 275,\n\t\"./tl-ph.js\": 275,\n\t\"./tlh\": 276,\n\t\"./tlh.js\": 276,\n\t\"./tr\": 277,\n\t\"./tr.js\": 277,\n\t\"./tzl\": 278,\n\t\"./tzl.js\": 278,\n\t\"./tzm\": 279,\n\t\"./tzm-latn\": 280,\n\t\"./tzm-latn.js\": 280,\n\t\"./tzm.js\": 279,\n\t\"./ug-cn\": 281,\n\t\"./ug-cn.js\": 281,\n\t\"./uk\": 282,\n\t\"./uk.js\": 282,\n\t\"./ur\": 283,\n\t\"./ur.js\": 283,\n\t\"./uz\": 284,\n\t\"./uz-latn\": 285,\n\t\"./uz-latn.js\": 285,\n\t\"./uz.js\": 284,\n\t\"./vi\": 286,\n\t\"./vi.js\": 286,\n\t\"./x-pseudo\": 287,\n\t\"./x-pseudo.js\": 287,\n\t\"./yo\": 288,\n\t\"./yo.js\": 288,\n\t\"./zh-cn\": 289,\n\t\"./zh-cn.js\": 289,\n\t\"./zh-hk\": 290,\n\t\"./zh-hk.js\": 290,\n\t\"./zh-mo\": 291,\n\t\"./zh-mo.js\": 291,\n\t\"./zh-tw\": 292,\n\t\"./zh-tw.js\": 292\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 = 326;","/*!\n * Pikaday\n *\n * Copyright © 2014 David Bushell | BSD & MIT license | https://github.com/Pikaday/Pikaday\n */\n\n(function (root, factory)\n{\n 'use strict';\n\n var moment;\n if (typeof exports === 'object') {\n // CommonJS module\n // Load moment.js as an optional dependency\n try { moment = require('moment'); } catch (e) {}\n module.exports = factory(moment);\n } else if (typeof define === 'function' && define.amd) {\n // AMD. Register as an anonymous module.\n define(function (req)\n {\n // Load moment.js as an optional dependency\n var id = 'moment';\n try { moment = req(id); } catch (e) {}\n return factory(moment);\n });\n } else {\n root.Pikaday = factory(root.moment);\n }\n}(this || window, function (moment)\n{\n 'use strict';\n\n /**\n * feature detection and helper functions\n */\n var hasMoment = typeof moment === 'function',\n\n hasEventListeners = !!window.addEventListener,\n\n document = window.document,\n\n sto = window.setTimeout,\n\n addEvent = function(el, e, callback, capture)\n {\n if (hasEventListeners) {\n el.addEventListener(e, callback, !!capture);\n } else {\n el.attachEvent('on' + e, callback);\n }\n },\n\n removeEvent = function(el, e, callback, capture)\n {\n if (hasEventListeners) {\n el.removeEventListener(e, callback, !!capture);\n } else {\n el.detachEvent('on' + e, callback);\n }\n },\n\n trim = function(str)\n {\n return str.trim ? str.trim() : str.replace(/^\\s+|\\s+$/g,'');\n },\n\n hasClass = function(el, cn)\n {\n return (' ' + el.className + ' ').indexOf(' ' + cn + ' ') !== -1;\n },\n\n addClass = function(el, cn)\n {\n if (!hasClass(el, cn)) {\n el.className = (el.className === '') ? cn : el.className + ' ' + cn;\n }\n },\n\n removeClass = function(el, cn)\n {\n el.className = trim((' ' + el.className + ' ').replace(' ' + cn + ' ', ' '));\n },\n\n isArray = function(obj)\n {\n return (/Array/).test(Object.prototype.toString.call(obj));\n },\n\n isDate = function(obj)\n {\n return (/Date/).test(Object.prototype.toString.call(obj)) && !isNaN(obj.getTime());\n },\n\n isWeekend = function(date)\n {\n var day = date.getDay();\n return day === 0 || day === 6;\n },\n\n isLeapYear = function(year)\n {\n // solution lifted from date.js (MIT license): https://github.com/datejs/Datejs\n return ((year % 4 === 0 && year % 100 !== 0) || year % 400 === 0);\n },\n\n getDaysInMonth = function(year, month)\n {\n return [31, isLeapYear(year) ? 29 : 28, 31, 30, 31, 30, 31, 31, 30, 31, 30, 31][month];\n },\n\n setToStartOfDay = function(date)\n {\n if (isDate(date)) date.setHours(0,0,0,0);\n },\n\n compareDates = function(a,b)\n {\n // weak date comparison (use setToStartOfDay(date) to ensure correct result)\n return a.getTime() === b.getTime();\n },\n\n extend = function(to, from, overwrite)\n {\n var prop, hasProp;\n for (prop in from) {\n hasProp = to[prop] !== undefined;\n if (hasProp && typeof from[prop] === 'object' && from[prop] !== null && from[prop].nodeName === undefined) {\n if (isDate(from[prop])) {\n if (overwrite) {\n to[prop] = new Date(from[prop].getTime());\n }\n }\n else if (isArray(from[prop])) {\n if (overwrite) {\n to[prop] = from[prop].slice(0);\n }\n } else {\n to[prop] = extend({}, from[prop], overwrite);\n }\n } else if (overwrite || !hasProp) {\n to[prop] = from[prop];\n }\n }\n return to;\n },\n\n fireEvent = function(el, eventName, data)\n {\n var ev;\n\n if (document.createEvent) {\n ev = document.createEvent('HTMLEvents');\n ev.initEvent(eventName, true, false);\n ev = extend(ev, data);\n el.dispatchEvent(ev);\n } else if (document.createEventObject) {\n ev = document.createEventObject();\n ev = extend(ev, data);\n el.fireEvent('on' + eventName, ev);\n }\n },\n\n adjustCalendar = function(calendar) {\n if (calendar.month < 0) {\n calendar.year -= Math.ceil(Math.abs(calendar.month)/12);\n calendar.month += 12;\n }\n if (calendar.month > 11) {\n calendar.year += Math.floor(Math.abs(calendar.month)/12);\n calendar.month -= 12;\n }\n return calendar;\n },\n\n /**\n * defaults and localisation\n */\n defaults = {\n\n // bind the picker to a form field\n field: null,\n\n // automatically show/hide the picker on `field` focus (default `true` if `field` is set)\n bound: undefined,\n\n // data-attribute on the input field with an aria assistance text (only applied when `bound` is set)\n ariaLabel: 'Use the arrow keys to pick a date',\n\n // position of the datepicker, relative to the field (default to bottom & left)\n // ('bottom' & 'left' keywords are not used, 'top' & 'right' are modifier on the bottom/left position)\n position: 'bottom left',\n\n // automatically fit in the viewport even if it means repositioning from the position option\n reposition: true,\n\n // the default output format for `.toString()` and `field` value\n format: 'YYYY-MM-DD',\n\n // the toString function which gets passed a current date object and format\n // and returns a string\n toString: null,\n\n // used to create date object from current input string\n parse: null,\n\n // the initial date to view when first opened\n defaultDate: null,\n\n // make the `defaultDate` the initial selected value\n setDefaultDate: false,\n\n // first day of week (0: Sunday, 1: Monday etc)\n firstDay: 0,\n\n // minimum number of days in the week that gets week number one\n // default ISO 8601, week 01 is the week with the first Thursday (4)\n firstWeekOfYearMinDays: 4,\n\n // the default flag for moment's strict date parsing\n formatStrict: false,\n\n // the minimum/earliest date that can be selected\n minDate: null,\n // the maximum/latest date that can be selected\n maxDate: null,\n\n // number of years either side, or array of upper/lower range\n yearRange: 10,\n\n // show week numbers at head of row\n showWeekNumber: false,\n\n // Week picker mode\n pickWholeWeek: false,\n\n // used internally (don't config outside)\n minYear: 0,\n maxYear: 9999,\n minMonth: undefined,\n maxMonth: undefined,\n\n startRange: null,\n endRange: null,\n\n isRTL: false,\n\n // Additional text to append to the year in the calendar title\n yearSuffix: '',\n\n // Render the month after year in the calendar title\n showMonthAfterYear: false,\n\n // Render days of the calendar grid that fall in the next or previous month\n showDaysInNextAndPreviousMonths: false,\n\n // Allows user to select days that fall in the next or previous month\n enableSelectionDaysInNextAndPreviousMonths: false,\n\n // how many months are visible\n numberOfMonths: 1,\n\n // when numberOfMonths is used, this will help you to choose where the main calendar will be (default `left`, can be set to `right`)\n // only used for the first display or when a selected date is not visible\n mainCalendar: 'left',\n\n // Specify a DOM element to render the calendar in\n container: undefined,\n\n // Blur field when date is selected\n blurFieldOnSelect : true,\n\n // internationalization\n i18n: {\n previousMonth : 'Previous Month',\n nextMonth : 'Next Month',\n months : ['January','February','March','April','May','June','July','August','September','October','November','December'],\n weekdays : ['Sunday','Monday','Tuesday','Wednesday','Thursday','Friday','Saturday'],\n weekdaysShort : ['Sun','Mon','Tue','Wed','Thu','Fri','Sat']\n },\n\n // Theme Classname\n theme: null,\n\n // events array\n events: [],\n\n // callback function\n onSelect: null,\n onOpen: null,\n onClose: null,\n onDraw: null,\n\n // Enable keyboard input\n keyboardInput: true\n },\n\n\n /**\n * templating functions to abstract HTML rendering\n */\n renderDayName = function(opts, day, abbr)\n {\n day += opts.firstDay;\n while (day >= 7) {\n day -= 7;\n }\n return abbr ? opts.i18n.weekdaysShort[day] : opts.i18n.weekdays[day];\n },\n\n renderDay = function(opts)\n {\n var arr = [];\n var ariaSelected = 'false';\n if (opts.isEmpty) {\n if (opts.showDaysInNextAndPreviousMonths) {\n arr.push('is-outside-current-month');\n\n if(!opts.enableSelectionDaysInNextAndPreviousMonths) {\n arr.push('is-selection-disabled');\n }\n\n } else {\n return '<td class=\"is-empty\"></td>';\n }\n }\n if (opts.isDisabled) {\n arr.push('is-disabled');\n }\n if (opts.isToday) {\n arr.push('is-today');\n }\n if (opts.isSelected) {\n arr.push('is-selected');\n ariaSelected = 'true';\n }\n if (opts.hasEvent) {\n arr.push('has-event');\n }\n if (opts.isInRange) {\n arr.push('is-inrange');\n }\n if (opts.isStartRange) {\n arr.push('is-startrange');\n }\n if (opts.isEndRange) {\n arr.push('is-endrange');\n }\n return '<td data-day=\"' + opts.day + '\" class=\"' + arr.join(' ') + '\" aria-selected=\"' + ariaSelected + '\">' +\n '<button class=\"pika-button pika-day\" type=\"button\" ' +\n 'data-pika-year=\"' + opts.year + '\" data-pika-month=\"' + opts.month + '\" data-pika-day=\"' + opts.day + '\">' +\n opts.day +\n '</button>' +\n '</td>';\n },\n\n isoWeek = function(date, firstWeekOfYearMinDays) {\n // Ensure we're at the start of the day.\n date.setHours(0, 0, 0, 0);\n\n // Thursday in current week decides the year because January 4th\n // is always in the first week according to ISO8601.\n var yearDay = date.getDate(),\n weekDay = date.getDay(),\n dayInFirstWeek = firstWeekOfYearMinDays,\n dayShift = dayInFirstWeek - 1, // counting starts at 0\n daysPerWeek = 7,\n prevWeekDay = function(day) { return (day + daysPerWeek - 1) % daysPerWeek; };\n\n // Adjust to Thursday in week 1 and count number of weeks from date to week 1.\n date.setDate(yearDay + dayShift - prevWeekDay(weekDay));\n\n var jan4th = new Date(date.getFullYear(), 0, dayInFirstWeek),\n msPerDay = 24 * 60 * 60 * 1000,\n daysBetween = (date.getTime() - jan4th.getTime()) / msPerDay,\n weekNum = 1 + Math.round((daysBetween - dayShift + prevWeekDay(jan4th.getDay())) / daysPerWeek);\n\n return weekNum;\n },\n\n renderWeek = function (d, m, y, firstWeekOfYearMinDays) {\n var date = new Date(y, m, d),\n week = hasMoment ? moment(date).isoWeek() : isoWeek(date, firstWeekOfYearMinDays);\n\n return '<td class=\"pika-week\">' + week + '</td>';\n },\n\n renderRow = function(days, isRTL, pickWholeWeek, isRowSelected)\n {\n return '<tr class=\"pika-row' + (pickWholeWeek ? ' pick-whole-week' : '') + (isRowSelected ? ' is-selected' : '') + '\">' + (isRTL ? days.reverse() : days).join('') + '</tr>';\n },\n\n renderBody = function(rows)\n {\n return '<tbody>' + rows.join('') + '</tbody>';\n },\n\n renderHead = function(opts)\n {\n var i, arr = [];\n if (opts.showWeekNumber) {\n arr.push('<th></th>');\n }\n for (i = 0; i < 7; i++) {\n arr.push('<th scope=\"col\"><abbr title=\"' + renderDayName(opts, i) + '\">' + renderDayName(opts, i, true) + '</abbr></th>');\n }\n return '<thead><tr>' + (opts.isRTL ? arr.reverse() : arr).join('') + '</tr></thead>';\n },\n\n renderTitle = function(instance, c, year, month, refYear, randId)\n {\n var i, j, arr,\n opts = instance._o,\n isMinYear = year === opts.minYear,\n isMaxYear = year === opts.maxYear,\n html = '<div id=\"' + randId + '\" class=\"pika-title\" role=\"heading\" aria-live=\"assertive\">',\n monthHtml,\n yearHtml,\n prev = true,\n next = true;\n\n for (arr = [], i = 0; i < 12; i++) {\n arr.push('<option value=\"' + (year === refYear ? i - c : 12 + i - c) + '\"' +\n (i === month ? ' selected=\"selected\"': '') +\n ((isMinYear && i < opts.minMonth) || (isMaxYear && i > opts.maxMonth) ? ' disabled=\"disabled\"' : '') + '>' +\n opts.i18n.months[i] + '</option>');\n }\n\n monthHtml = '<div class=\"pika-label\">' + opts.i18n.months[month] + '<select class=\"pika-select pika-select-month\" tabindex=\"-1\">' + arr.join('') + '</select></div>';\n\n if (isArray(opts.yearRange)) {\n i = opts.yearRange[0];\n j = opts.yearRange[1] + 1;\n } else {\n i = year - opts.yearRange;\n j = 1 + year + opts.yearRange;\n }\n\n for (arr = []; i < j && i <= opts.maxYear; i++) {\n if (i >= opts.minYear) {\n arr.push('<option value=\"' + i + '\"' + (i === year ? ' selected=\"selected\"': '') + '>' + (i) + '</option>');\n }\n }\n yearHtml = '<div class=\"pika-label\">' + year + opts.yearSuffix + '<select class=\"pika-select pika-select-year\" tabindex=\"-1\">' + arr.join('') + '</select></div>';\n\n if (opts.showMonthAfterYear) {\n html += yearHtml + monthHtml;\n } else {\n html += monthHtml + yearHtml;\n }\n\n if (isMinYear && (month === 0 || opts.minMonth >= month)) {\n prev = false;\n }\n\n if (isMaxYear && (month === 11 || opts.maxMonth <= month)) {\n next = false;\n }\n\n if (c === 0) {\n html += '<button class=\"pika-prev' + (prev ? '' : ' is-disabled') + '\" type=\"button\">' + opts.i18n.previousMonth + '</button>';\n }\n if (c === (instance._o.numberOfMonths - 1) ) {\n html += '<button class=\"pika-next' + (next ? '' : ' is-disabled') + '\" type=\"button\">' + opts.i18n.nextMonth + '</button>';\n }\n\n return html += '</div>';\n },\n\n renderTable = function(opts, data, randId)\n {\n return '<table cellpadding=\"0\" cellspacing=\"0\" class=\"pika-table\" role=\"grid\" aria-labelledby=\"' + randId + '\">' + renderHead(opts) + renderBody(data) + '</table>';\n },\n\n\n /**\n * Pikaday constructor\n */\n Pikaday = function(options)\n {\n var self = this,\n opts = self.config(options);\n\n self._onMouseDown = function(e)\n {\n if (!self._v) {\n return;\n }\n e = e || window.event;\n var target = e.target || e.srcElement;\n if (!target) {\n return;\n }\n\n if (!hasClass(target, 'is-disabled')) {\n if (hasClass(target, 'pika-button') && !hasClass(target, 'is-empty') && !hasClass(target.parentNode, 'is-disabled')) {\n self.setDate(new Date(target.getAttribute('data-pika-year'), target.getAttribute('data-pika-month'), target.getAttribute('data-pika-day')));\n if (opts.bound) {\n sto(function() {\n self.hide();\n if (opts.blurFieldOnSelect && opts.field) {\n opts.field.blur();\n }\n }, 100);\n }\n }\n else if (hasClass(target, 'pika-prev')) {\n self.prevMonth();\n }\n else if (hasClass(target, 'pika-next')) {\n self.nextMonth();\n }\n }\n if (!hasClass(target, 'pika-select')) {\n // if this is touch event prevent mouse events emulation\n if (e.preventDefault) {\n e.preventDefault();\n } else {\n e.returnValue = false;\n return false;\n }\n } else {\n self._c = true;\n }\n };\n\n self._onChange = function(e)\n {\n e = e || window.event;\n var target = e.target || e.srcElement;\n if (!target) {\n return;\n }\n if (hasClass(target, 'pika-select-month')) {\n self.gotoMonth(target.value);\n }\n else if (hasClass(target, 'pika-select-year')) {\n self.gotoYear(target.value);\n }\n };\n\n self._onKeyChange = function(e)\n {\n e = e || window.event;\n\n if (self.isVisible()) {\n\n switch(e.keyCode){\n case 13:\n case 27:\n if (opts.field) {\n opts.field.blur();\n }\n break;\n case 37:\n self.adjustDate('subtract', 1);\n break;\n case 38:\n self.adjustDate('subtract', 7);\n break;\n case 39:\n self.adjustDate('add', 1);\n break;\n case 40:\n self.adjustDate('add', 7);\n break;\n case 8:\n case 46:\n self.setDate(null);\n break;\n }\n }\n };\n\n self._parseFieldValue = function()\n {\n if (opts.parse) {\n return opts.parse(opts.field.value, opts.format);\n } else if (hasMoment) {\n var date = moment(opts.field.value, opts.format, opts.formatStrict);\n return (date && date.isValid()) ? date.toDate() : null;\n } else {\n return new Date(Date.parse(opts.field.value));\n }\n };\n\n self._onInputChange = function(e)\n {\n var date;\n\n if (e.firedBy === self) {\n return;\n }\n date = self._parseFieldValue();\n if (isDate(date)) {\n self.setDate(date);\n }\n if (!self._v) {\n self.show();\n }\n };\n\n self._onInputFocus = function()\n {\n self.show();\n };\n\n self._onInputClick = function()\n {\n self.show();\n };\n\n self._onInputBlur = function()\n {\n // IE allows pika div to gain focus; catch blur the input field\n var pEl = document.activeElement;\n do {\n if (hasClass(pEl, 'pika-single')) {\n return;\n }\n }\n while ((pEl = pEl.parentNode));\n\n if (!self._c) {\n self._b = sto(function() {\n self.hide();\n }, 50);\n }\n self._c = false;\n };\n\n self._onClick = function(e)\n {\n e = e || window.event;\n var target = e.target || e.srcElement,\n pEl = target;\n if (!target) {\n return;\n }\n if (!hasEventListeners && hasClass(target, 'pika-select')) {\n if (!target.onchange) {\n target.setAttribute('onchange', 'return;');\n addEvent(target, 'change', self._onChange);\n }\n }\n do {\n if (hasClass(pEl, 'pika-single') || pEl === opts.trigger) {\n return;\n }\n }\n while ((pEl = pEl.parentNode));\n if (self._v && target !== opts.trigger && pEl !== opts.trigger) {\n self.hide();\n }\n };\n\n self.el = document.createElement('div');\n self.el.className = 'pika-single' + (opts.isRTL ? ' is-rtl' : '') + (opts.theme ? ' ' + opts.theme : '');\n\n addEvent(self.el, 'mousedown', self._onMouseDown, true);\n addEvent(self.el, 'touchend', self._onMouseDown, true);\n addEvent(self.el, 'change', self._onChange);\n\n if (opts.keyboardInput) {\n addEvent(document, 'keydown', self._onKeyChange);\n }\n\n if (opts.field) {\n if (opts.container) {\n opts.container.appendChild(self.el);\n } else if (opts.bound) {\n document.body.appendChild(self.el);\n } else {\n opts.field.parentNode.insertBefore(self.el, opts.field.nextSibling);\n }\n addEvent(opts.field, 'change', self._onInputChange);\n\n if (!opts.defaultDate) {\n opts.defaultDate = self._parseFieldValue();\n opts.setDefaultDate = true;\n }\n }\n\n var defDate = opts.defaultDate;\n\n if (isDate(defDate)) {\n if (opts.setDefaultDate) {\n self.setDate(defDate, true);\n } else {\n self.gotoDate(defDate);\n }\n } else {\n self.gotoDate(new Date());\n }\n\n if (opts.bound) {\n this.hide();\n self.el.className += ' is-bound';\n addEvent(opts.trigger, 'click', self._onInputClick);\n addEvent(opts.trigger, 'focus', self._onInputFocus);\n addEvent(opts.trigger, 'blur', self._onInputBlur);\n } else {\n this.show();\n }\n };\n\n\n /**\n * public Pikaday API\n */\n Pikaday.prototype = {\n\n\n /**\n * configure functionality\n */\n config: function(options)\n {\n if (!this._o) {\n this._o = extend({}, defaults, true);\n }\n\n var opts = extend(this._o, options, true);\n\n opts.isRTL = !!opts.isRTL;\n\n opts.field = (opts.field && opts.field.nodeName) ? opts.field : null;\n\n opts.theme = (typeof opts.theme) === 'string' && opts.theme ? opts.theme : null;\n\n opts.bound = !!(opts.bound !== undefined ? opts.field && opts.bound : opts.field);\n\n opts.trigger = (opts.trigger && opts.trigger.nodeName) ? opts.trigger : opts.field;\n\n opts.disableWeekends = !!opts.disableWeekends;\n\n opts.disableDayFn = (typeof opts.disableDayFn) === 'function' ? opts.disableDayFn : null;\n\n var nom = parseInt(opts.numberOfMonths, 10) || 1;\n opts.numberOfMonths = nom > 4 ? 4 : nom;\n\n if (!isDate(opts.minDate)) {\n opts.minDate = false;\n }\n if (!isDate(opts.maxDate)) {\n opts.maxDate = false;\n }\n if ((opts.minDate && opts.maxDate) && opts.maxDate < opts.minDate) {\n opts.maxDate = opts.minDate = false;\n }\n if (opts.minDate) {\n this.setMinDate(opts.minDate);\n }\n if (opts.maxDate) {\n this.setMaxDate(opts.maxDate);\n }\n\n if (isArray(opts.yearRange)) {\n var fallback = new Date().getFullYear() - 10;\n opts.yearRange[0] = parseInt(opts.yearRange[0], 10) || fallback;\n opts.yearRange[1] = parseInt(opts.yearRange[1], 10) || fallback;\n } else {\n opts.yearRange = Math.abs(parseInt(opts.yearRange, 10)) || defaults.yearRange;\n if (opts.yearRange > 100) {\n opts.yearRange = 100;\n }\n }\n\n return opts;\n },\n\n /**\n * return a formatted string of the current selection (using Moment.js if available)\n */\n toString: function(format)\n {\n format = format || this._o.format;\n if (!isDate(this._d)) {\n return '';\n }\n if (this._o.toString) {\n return this._o.toString(this._d, format);\n }\n if (hasMoment) {\n return moment(this._d).format(format);\n }\n return this._d.toDateString();\n },\n\n /**\n * return a Moment.js object of the current selection (if available)\n */\n getMoment: function()\n {\n return hasMoment ? moment(this._d) : null;\n },\n\n /**\n * set the current selection from a Moment.js object (if available)\n */\n setMoment: function(date, preventOnSelect)\n {\n if (hasMoment && moment.isMoment(date)) {\n this.setDate(date.toDate(), preventOnSelect);\n }\n },\n\n /**\n * return a Date object of the current selection\n */\n getDate: function()\n {\n return isDate(this._d) ? new Date(this._d.getTime()) : null;\n },\n\n /**\n * set the current selection\n */\n setDate: function(date, preventOnSelect)\n {\n if (!date) {\n this._d = null;\n\n if (this._o.field) {\n this._o.field.value = '';\n fireEvent(this._o.field, 'change', { firedBy: this });\n }\n\n return this.draw();\n }\n if (typeof date === 'string') {\n date = new Date(Date.parse(date));\n }\n if (!isDate(date)) {\n return;\n }\n\n var min = this._o.minDate,\n max = this._o.maxDate;\n\n if (isDate(min) && date < min) {\n date = min;\n } else if (isDate(max) && date > max) {\n date = max;\n }\n\n this._d = new Date(date.getTime());\n setToStartOfDay(this._d);\n this.gotoDate(this._d);\n\n if (this._o.field) {\n this._o.field.value = this.toString();\n fireEvent(this._o.field, 'change', { firedBy: this });\n }\n if (!preventOnSelect && typeof this._o.onSelect === 'function') {\n this._o.onSelect.call(this, this.getDate());\n }\n },\n\n /**\n * clear and reset the date\n */\n clear: function()\n {\n this.setDate(null);\n },\n\n /**\n * change view to a specific date\n */\n gotoDate: function(date)\n {\n var newCalendar = true;\n\n if (!isDate(date)) {\n return;\n }\n\n if (this.calendars) {\n var firstVisibleDate = new Date(this.calendars[0].year, this.calendars[0].month, 1),\n lastVisibleDate = new Date(this.calendars[this.calendars.length-1].year, this.calendars[this.calendars.length-1].month, 1),\n visibleDate = date.getTime();\n // get the end of the month\n lastVisibleDate.setMonth(lastVisibleDate.getMonth()+1);\n lastVisibleDate.setDate(lastVisibleDate.getDate()-1);\n newCalendar = (visibleDate < firstVisibleDate.getTime() || lastVisibleDate.getTime() < visibleDate);\n }\n\n if (newCalendar) {\n this.calendars = [{\n month: date.getMonth(),\n year: date.getFullYear()\n }];\n if (this._o.mainCalendar === 'right') {\n this.calendars[0].month += 1 - this._o.numberOfMonths;\n }\n }\n\n this.adjustCalendars();\n },\n\n adjustDate: function(sign, days) {\n\n var day = this.getDate() || new Date();\n var difference = parseInt(days)*24*60*60*1000;\n\n var newDay;\n\n if (sign === 'add') {\n newDay = new Date(day.valueOf() + difference);\n } else if (sign === 'subtract') {\n newDay = new Date(day.valueOf() - difference);\n }\n\n this.setDate(newDay);\n },\n\n adjustCalendars: function() {\n this.calendars[0] = adjustCalendar(this.calendars[0]);\n for (var c = 1; c < this._o.numberOfMonths; c++) {\n this.calendars[c] = adjustCalendar({\n month: this.calendars[0].month + c,\n year: this.calendars[0].year\n });\n }\n this.draw();\n },\n\n gotoToday: function()\n {\n this.gotoDate(new Date());\n },\n\n /**\n * change view to a specific month (zero-index, e.g. 0: January)\n */\n gotoMonth: function(month)\n {\n if (!isNaN(month)) {\n this.calendars[0].month = parseInt(month, 10);\n this.adjustCalendars();\n }\n },\n\n nextMonth: function()\n {\n this.calendars[0].month++;\n this.adjustCalendars();\n },\n\n prevMonth: function()\n {\n this.calendars[0].month--;\n this.adjustCalendars();\n },\n\n /**\n * change view to a specific full year (e.g. \"2012\")\n */\n gotoYear: function(year)\n {\n if (!isNaN(year)) {\n this.calendars[0].year = parseInt(year, 10);\n this.adjustCalendars();\n }\n },\n\n /**\n * change the minDate\n */\n setMinDate: function(value)\n {\n if(value instanceof Date) {\n setToStartOfDay(value);\n this._o.minDate = value;\n this._o.minYear = value.getFullYear();\n this._o.minMonth = value.getMonth();\n } else {\n this._o.minDate = defaults.minDate;\n this._o.minYear = defaults.minYear;\n this._o.minMonth = defaults.minMonth;\n this._o.startRange = defaults.startRange;\n }\n\n this.draw();\n },\n\n /**\n * change the maxDate\n */\n setMaxDate: function(value)\n {\n if(value instanceof Date) {\n setToStartOfDay(value);\n this._o.maxDate = value;\n this._o.maxYear = value.getFullYear();\n this._o.maxMonth = value.getMonth();\n } else {\n this._o.maxDate = defaults.maxDate;\n this._o.maxYear = defaults.maxYear;\n this._o.maxMonth = defaults.maxMonth;\n this._o.endRange = defaults.endRange;\n }\n\n this.draw();\n },\n\n setStartRange: function(value)\n {\n this._o.startRange = value;\n },\n\n setEndRange: function(value)\n {\n this._o.endRange = value;\n },\n\n /**\n * refresh the HTML\n */\n draw: function(force)\n {\n if (!this._v && !force) {\n return;\n }\n var opts = this._o,\n minYear = opts.minYear,\n maxYear = opts.maxYear,\n minMonth = opts.minMonth,\n maxMonth = opts.maxMonth,\n html = '',\n randId;\n\n if (this._y <= minYear) {\n this._y = minYear;\n if (!isNaN(minMonth) && this._m < minMonth) {\n this._m = minMonth;\n }\n }\n if (this._y >= maxYear) {\n this._y = maxYear;\n if (!isNaN(maxMonth) && this._m > maxMonth) {\n this._m = maxMonth;\n }\n }\n\n for (var c = 0; c < opts.numberOfMonths; c++) {\n randId = 'pika-title-' + Math.random().toString(36).replace(/[^a-z]+/g, '').substr(0, 2);\n html += '<div class=\"pika-lendar\">' + renderTitle(this, c, this.calendars[c].year, this.calendars[c].month, this.calendars[0].year, randId) + this.render(this.calendars[c].year, this.calendars[c].month, randId) + '</div>';\n }\n\n this.el.innerHTML = html;\n\n if (opts.bound) {\n if(opts.field.type !== 'hidden') {\n sto(function() {\n opts.trigger.focus();\n }, 1);\n }\n }\n\n if (typeof this._o.onDraw === 'function') {\n this._o.onDraw(this);\n }\n\n if (opts.bound) {\n // let the screen reader user know to use arrow keys\n opts.field.setAttribute('aria-label', opts.ariaLabel);\n }\n },\n\n adjustPosition: function()\n {\n var field, pEl, width, height, viewportWidth, viewportHeight, scrollTop, left, top, clientRect, leftAligned, bottomAligned;\n\n if (this._o.container) return;\n\n this.el.style.position = 'absolute';\n\n field = this._o.trigger;\n pEl = field;\n width = this.el.offsetWidth;\n height = this.el.offsetHeight;\n viewportWidth = window.innerWidth || document.documentElement.clientWidth;\n viewportHeight = window.innerHeight || document.documentElement.clientHeight;\n scrollTop = window.pageYOffset || document.body.scrollTop || document.documentElement.scrollTop;\n leftAligned = true;\n bottomAligned = true;\n\n if (typeof field.getBoundingClientRect === 'function') {\n clientRect = field.getBoundingClientRect();\n left = clientRect.left + window.pageXOffset;\n top = clientRect.bottom + window.pageYOffset;\n } else {\n left = pEl.offsetLeft;\n top = pEl.offsetTop + pEl.offsetHeight;\n while((pEl = pEl.offsetParent)) {\n left += pEl.offsetLeft;\n top += pEl.offsetTop;\n }\n }\n\n // default position is bottom & left\n if ((this._o.reposition && left + width > viewportWidth) ||\n (\n this._o.position.indexOf('right') > -1 &&\n left - width + field.offsetWidth > 0\n )\n ) {\n left = left - width + field.offsetWidth;\n leftAligned = false;\n }\n if ((this._o.reposition && top + height > viewportHeight + scrollTop) ||\n (\n this._o.position.indexOf('top') > -1 &&\n top - height - field.offsetHeight > 0\n )\n ) {\n top = top - height - field.offsetHeight;\n bottomAligned = false;\n }\n\n this.el.style.left = left + 'px';\n this.el.style.top = top + 'px';\n\n addClass(this.el, leftAligned ? 'left-aligned' : 'right-aligned');\n addClass(this.el, bottomAligned ? 'bottom-aligned' : 'top-aligned');\n removeClass(this.el, !leftAligned ? 'left-aligned' : 'right-aligned');\n removeClass(this.el, !bottomAligned ? 'bottom-aligned' : 'top-aligned');\n },\n\n /**\n * render HTML for a particular month\n */\n render: function(year, month, randId)\n {\n var opts = this._o,\n now = new Date(),\n days = getDaysInMonth(year, month),\n before = new Date(year, month, 1).getDay(),\n data = [],\n row = [];\n setToStartOfDay(now);\n if (opts.firstDay > 0) {\n before -= opts.firstDay;\n if (before < 0) {\n before += 7;\n }\n }\n var previousMonth = month === 0 ? 11 : month - 1,\n nextMonth = month === 11 ? 0 : month + 1,\n yearOfPreviousMonth = month === 0 ? year - 1 : year,\n yearOfNextMonth = month === 11 ? year + 1 : year,\n daysInPreviousMonth = getDaysInMonth(yearOfPreviousMonth, previousMonth);\n var cells = days + before,\n after = cells;\n while(after > 7) {\n after -= 7;\n }\n cells += 7 - after;\n var isWeekSelected = false;\n for (var i = 0, r = 0; i < cells; i++)\n {\n var day = new Date(year, month, 1 + (i - before)),\n isSelected = isDate(this._d) ? compareDates(day, this._d) : false,\n isToday = compareDates(day, now),\n hasEvent = opts.events.indexOf(day.toDateString()) !== -1 ? true : false,\n isEmpty = i < before || i >= (days + before),\n dayNumber = 1 + (i - before),\n monthNumber = month,\n yearNumber = year,\n isStartRange = opts.startRange && compareDates(opts.startRange, day),\n isEndRange = opts.endRange && compareDates(opts.endRange, day),\n isInRange = opts.startRange && opts.endRange && opts.startRange < day && day < opts.endRange,\n isDisabled = (opts.minDate && day < opts.minDate) ||\n (opts.maxDate && day > opts.maxDate) ||\n (opts.disableWeekends && isWeekend(day)) ||\n (opts.disableDayFn && opts.disableDayFn(day));\n\n if (isEmpty) {\n if (i < before) {\n dayNumber = daysInPreviousMonth + dayNumber;\n monthNumber = previousMonth;\n yearNumber = yearOfPreviousMonth;\n } else {\n dayNumber = dayNumber - days;\n monthNumber = nextMonth;\n yearNumber = yearOfNextMonth;\n }\n }\n\n var dayConfig = {\n day: dayNumber,\n month: monthNumber,\n year: yearNumber,\n hasEvent: hasEvent,\n isSelected: isSelected,\n isToday: isToday,\n isDisabled: isDisabled,\n isEmpty: isEmpty,\n isStartRange: isStartRange,\n isEndRange: isEndRange,\n isInRange: isInRange,\n showDaysInNextAndPreviousMonths: opts.showDaysInNextAndPreviousMonths,\n enableSelectionDaysInNextAndPreviousMonths: opts.enableSelectionDaysInNextAndPreviousMonths\n };\n\n if (opts.pickWholeWeek && isSelected) {\n isWeekSelected = true;\n }\n\n row.push(renderDay(dayConfig));\n\n if (++r === 7) {\n if (opts.showWeekNumber) {\n row.unshift(renderWeek(i - before, month, year, opts.firstWeekOfYearMinDays));\n }\n data.push(renderRow(row, opts.isRTL, opts.pickWholeWeek, isWeekSelected));\n row = [];\n r = 0;\n isWeekSelected = false;\n }\n }\n return renderTable(opts, data, randId);\n },\n\n isVisible: function()\n {\n return this._v;\n },\n\n show: function()\n {\n if (!this.isVisible()) {\n this._v = true;\n this.draw();\n removeClass(this.el, 'is-hidden');\n if (this._o.bound) {\n addEvent(document, 'click', this._onClick);\n this.adjustPosition();\n }\n if (typeof this._o.onOpen === 'function') {\n this._o.onOpen.call(this);\n }\n }\n },\n\n hide: function()\n {\n var v = this._v;\n if (v !== false) {\n if (this._o.bound) {\n removeEvent(document, 'click', this._onClick);\n }\n\n if (!this._o.container) {\n this.el.style.position = 'static'; // reset\n this.el.style.left = 'auto';\n this.el.style.top = 'auto';\n }\n addClass(this.el, 'is-hidden');\n this._v = false;\n if (v !== undefined && typeof this._o.onClose === 'function') {\n this._o.onClose.call(this);\n }\n }\n },\n\n /**\n * GAME OVER\n */\n destroy: function()\n {\n var opts = this._o;\n\n this.hide();\n removeEvent(this.el, 'mousedown', this._onMouseDown, true);\n removeEvent(this.el, 'touchend', this._onMouseDown, true);\n removeEvent(this.el, 'change', this._onChange);\n if (opts.keyboardInput) {\n removeEvent(document, 'keydown', this._onKeyChange);\n }\n if (opts.field) {\n removeEvent(opts.field, 'change', this._onInputChange);\n if (opts.bound) {\n removeEvent(opts.trigger, 'click', this._onInputClick);\n removeEvent(opts.trigger, 'focus', this._onInputFocus);\n removeEvent(opts.trigger, 'blur', this._onInputBlur);\n }\n }\n if (this.el.parentNode) {\n this.el.parentNode.removeChild(this.el);\n }\n }\n\n };\n\n return Pikaday;\n}));\n","document.addEventListener('DOMContentLoaded', function() {\n [...document.querySelectorAll('[data-booking-container]')]\n .forEach(container => init(container));\n});\n\nfunction init(node) {\n const addAttendeeBtn = node.querySelector('[data-booking-attendee-add]');\n\n if (addAttendeeBtn) {\n const addForm = node.querySelector('[data-booking-attendee-form-add]');\n const cancelAddBtn = addForm.querySelector('[data-booking-attendee-cancel]');\n\n addAttendeeBtn.addEventListener('click', handleAddAttendee);\n cancelAddBtn.addEventListener('click', handleCancelAdd);\n\n listenForRadioChange(addForm);\n }\n\n [...node.querySelectorAll('[data-booking-attendee]')].forEach(node => {\n listenForRadioChange(node);\n [...node.querySelectorAll('[data-booking-attendee-edit]')].map(btn => {\n btn.addEventListener('click', handleEditAttendee);\n });\n [...node.querySelectorAll('[data-booking-attendee-cancel]')].map(btn => {\n btn.addEventListener('click', handleCancelEdit);\n });\n });\n}\n\nfunction handleAddAttendee(event) {\n const btn = event.currentTarget;\n const container = btn.closest('[data-booking-container]');\n const addBtn = container.querySelector('[data-booking-attendee-add]');\n const form = container.querySelector('[data-booking-attendee-form-add]');\n\n addBtn.setAttribute('disabled', true);\n form.classList.remove('sc-hide');\n}\n\nfunction handleCancelAdd(event) {\n const btn = event.currentTarget;\n const container = btn.closest('[data-booking-container]');\n const addBtn = container.querySelector('[data-booking-attendee-add]');\n const form = container.querySelector('[data-booking-attendee-form-add]');\n\n addBtn.removeAttribute('disabled');\n form.classList.add('sc-hide')\n}\n\nfunction handleEditAttendee(event) {\n const attendee = event.currentTarget.closest('[data-booking-attendee]');\n const attendeeForm = attendee.querySelector('[data-booking-attendee-form-edit]')\n const attendeeCard = attendee.querySelector('[data-booking-attendee-card]');\n const container = attendee.closest('[data-booking-container]');\n const forms = container.querySelectorAll('[data-booking-attendee-form-edit]');\n const cards = container.querySelectorAll('[data-booking-attendee-card]');\n\n [...cards].map(card => {\n card === attendeeCard ?\n card.classList.add('sc-hide') :\n card.classList.remove('sc-hide');\n });\n [...forms].map(form => {\n form === attendeeForm ?\n form.classList.remove('sc-hide') :\n form.classList.add('sc-hide');\n });\n}\n\nfunction handleCancelEdit(event) {\n const container = event.currentTarget.closest('[data-booking-attendee]');\n const form = container.querySelector('[data-booking-attendee-form-edit]');\n const card = container.querySelector('[data-booking-attendee-card]');\n const addBtn = container.closest('[data-booking-container]').querySelector('[data-booking-attendee-add]');\n\n card.classList.remove('sc-hide');\n form.classList.add('sc-hide');\n}\n\nfunction removeCancelButton(node) {\n const btn = node.querySelector(\"[data-booking-attendee-cancel]\");\n if (btn) btn.remove();\n}\n\nfunction listenForRadioChange(node) {\n const radios = node.querySelectorAll('[data-booking-is-contact]');\n const fields = node.querySelector('[data-booking-attendee-fields]');\n const inputs = node.querySelectorAll('[data-booking-attendee-input]');\n\n [...radios].forEach(radio => {\n radio.addEventListener('click', event => {\n if (event.currentTarget.value === \"true\") {\n fields.classList.add('sc-hide');\n [...inputs].map(input => input.setAttribute('value', ''));\n } else {\n fields.classList.remove('sc-hide');\n }\n });\n\n if (!!radio['checked']) { radio.click(); }\n });\n}\n","const WARNING_TIMESPAN = 1000 * 60; // 1 min\n\nlet expiry;\n\ndocument.addEventListener('DOMContentLoaded', () => {\n if (document.querySelector('[data-sc-cart-timer]')) init();\n});\n\nfunction init() {\n const timer = document.querySelector('[data-sc-cart-timer]');\n expiry = timer.getAttribute('data-sc-expiry');\n\n const timeRemaining = getTimespan(expiry);\n if (timeRemaining <= 0) return expire();\n setInterval(() => document.dispatchEvent(new Event('countdown')), 1000);\n document.addEventListener('countdown', countdown);\n}\n\nfunction countdown() {\n const timeRemaining = getTimespan(expiry);\n\n if (timeRemaining <= 0) return expire();\n if (timeRemaining <= WARNING_TIMESPAN) warn();\n [...document.querySelectorAll('[data-sc-cart-timer]')].map(timer => {\n timer.querySelector('[data-sc-mins]').innerText = getMinutes(timeRemaining);\n timer.querySelector('[data-sc-secs]').innerText = getSeconds(timeRemaining);\n });\n}\n\nfunction warn() {\n [...document.querySelectorAll('[data-sc-cart-timer]')]\n .map(timer => timer.classList.add('warning'));\n}\n\nfunction expire() {\n document.removeEventListener('countdown', countdown);\n\n [...document.querySelectorAll('[data-sc-cart-timer]')].map(timer => {\n const label = timer.querySelector('[data-sc-label]');\n\n timer.classList.add('expired');\n label.innerText = label.dataset.scExpired;\n });\n\n [...document.querySelectorAll('[data-sc-cart]')].map(cart => {\n cart.classList.add('expired');\n [...cart.querySelectorAll('[data-sc-cart-booking]')].map(node => {\n node.classList.add('expired');\n });\n });\n}\n\nfunction getTimespan(expiryDate) {\n return Date.parse(expiryDate) - Date.parse(new Date());\n}\n\nfunction getMinutes(time) {\n return new Date(time).getMinutes();\n}\n\nfunction getSeconds(time) {\n const secs = new Date(time).getSeconds();\n return (secs < 10 ? '0' : '') + secs;\n}\n","(function () {\n document.addEventListener('DOMContentLoaded', () => {\n const elems = document.querySelectorAll('time[data-timestamp]');\n\n [...elems].map(elem => localize(elem));\n });\n\n function localize(elem) {\n const styles = [\"full\", \"long\", \"medium\", \"short\"]\n const timestamp = elem.getAttribute('data-timestamp')\n\n let format = {}\n\n let dateStyle = elem.getAttribute('data-date-style')\n if (styles.includes(dateStyle)) format[\"dateStyle\"] = dateStyle;\n\n let timeStyle = elem.getAttribute('data-time-style')\n if (styles.includes(timeStyle)) format[\"timeStyle\"] = timeStyle;\n\n formatter = new Intl.DateTimeFormat(Intl.DateTimeFormat().resolvedOptions().locale, format);\n outputString = formatter.format(Date.parse(timestamp));\n\n elem.innerHTML = outputString\n\n elem.setAttribute('title', Intl.DateTimeFormat().resolvedOptions().timeZone);\n }\n})();\n","window.StoreConnectUI = window.StoreConnectUI || {};\n\nwindow.StoreConnectUI.Fulfilment = (function() {\n let prevSubset;\n\n document.addEventListener('DOMContentLoaded', init);\n\n function init() {\n [...document.querySelectorAll('[data-fulfilment-option-trigger]')]\n .map(trigger => trigger.addEventListener('click', choose));\n }\n\n function choose(event) {\n const choice = event.currentTarget.parentNode;\n const subset = choice.querySelector('[data-fulfilment-option-subset]');\n\n // We manually handle checking inputs\n // to avoid multiple events firing\n event.preventDefault();\n\n // If there is a previously opened subset of options\n // we close it when a new choice is made\n if (prevSubset && !prevSubset.contains(choice)) {\n close(prevSubset);\n }\n\n\n // If our chosen option has a subset of options we\n // open the subset. Otherwise, we select the option.\n subset ? open(subset) : select(choice);\n\n enableSubmitButton();\n }\n\n function select(option) {\n [...document.querySelectorAll('[data-fulfilment-option]')]\n .map(option => option.classList.remove('is-selected'));\n option.classList.add('is-selected');\n option.querySelector('input[type=radio]').checked = true;\n }\n\n function close(subset) {\n subset.classList.remove('is-active');\n subset.parentNode.classList.remove('is-active');\n }\n\n function open(subset) {\n subset.classList.add('is-active');\n subset.parentNode.classList.add('is-active');\n prevSubset = subset;\n }\n\n function enableSubmitButton() {\n const button = document.querySelector('[data-fulfilment-button]')\n const form = button.closest('form')\n\n if (form.checkValidity() && !form.querySelector('[data-pending]')) {\n document.querySelector('[data-fulfilment-button]').removeAttribute('disabled');\n }\n }\n})();\n","import 'ion-rangeslider';\nimport { mediumAndUp } from './viewport';\n\ndocument.addEventListener('DOMContentLoaded', init);\n\nfunction init() {\n [...document.querySelectorAll('[data-js-range-slider]')].map(element => {\n setupPriceSlider(element);\n })\n}\n\nfunction setupPriceSlider(element) {\n $(element).ionRangeSlider({\n onFinish: function (data) {\n // 'price' or 'points'\n const jsRangeMin = element.parentElement.querySelector('[data-js-range-min]');\n const jsRangeMax = element.parentElement.querySelector('[data-js-range-max]');\n\n if (data.min != data.from) {\n jsRangeMin.value = data.from;\n } else {\n // Removing the name field from these attributes prevents them from polluting the URL\n // to make a cleaner, copyable, understandable URL field and improve search results\n jsRangeMin.value = '';\n jsRangeMin.removeAttribute('name');\n }\n\n if (data.max != data.to) {\n jsRangeMax.value = data.to;\n } else {\n // Removing the name field from these attributes prevents them from polluting the URL\n // to make a cleaner, copyable, understandable URL field and improve search results\n jsRangeMax.value = '';\n jsRangeMax.removeAttribute('name');\n }\n\n if (!mediumAndUp()) { return; }\n const form = element.closest('form');\n form.submit();\n },\n });\n}\n","// Ion.RangeSlider\n// version 2.3.1 Build: 382\n// © Denis Ineshin, 2019\n// https://github.com/IonDen\n//\n// Project page: http://ionden.com/a/plugins/ion.rangeSlider/en.html\n// GitHub page: https://github.com/IonDen/ion.rangeSlider\n//\n// Released under MIT licence:\n// http://ionden.com/a/plugins/licence-en.html\n// =====================================================================================================================\n\n;\n(function (factory) {\n if ((typeof jQuery === 'undefined' || !jQuery) && typeof define === \"function\" && define.amd) {\n define([\"jquery\"], function (jQuery) {\n return factory(jQuery, document, window, navigator);\n });\n } else if ((typeof jQuery === 'undefined' || !jQuery) && typeof exports === \"object\") {\n factory(require(\"jquery\"), document, window, navigator);\n } else {\n factory(jQuery, document, window, navigator);\n }\n})(function ($, document, window, navigator, undefined) {\n \"use strict\";\n\n // =================================================================================================================\n // Service\n var plugin_count = 0;\n\n // IE8 fix\n var is_old_ie = function () {\n var n = navigator.userAgent,\n r = /msie\\s\\d+/i,\n v;\n if (n.search(r) > 0) {\n v = r.exec(n).toString();\n v = v.split(\" \")[1];\n if (v < 9) {\n $(\"html\").addClass(\"lt-ie9\");\n return true;\n }\n }\n return false;\n }();\n if (!Function.prototype.bind) {\n Function.prototype.bind = function bind(that) {\n var target = this;\n var slice = [].slice;\n if (typeof target != \"function\") {\n throw new TypeError();\n }\n var args = slice.call(arguments, 1),\n bound = function () {\n if (this instanceof bound) {\n var F = function () {};\n F.prototype = target.prototype;\n var self = new F();\n var result = target.apply(self, args.concat(slice.call(arguments)));\n if (Object(result) === result) {\n return result;\n }\n return self;\n } else {\n return target.apply(that, args.concat(slice.call(arguments)));\n }\n };\n return bound;\n };\n }\n if (!Array.prototype.indexOf) {\n Array.prototype.indexOf = function (searchElement, fromIndex) {\n var k;\n if (this == null) {\n throw new TypeError('\"this\" is null or not defined');\n }\n var O = Object(this);\n var len = O.length >>> 0;\n if (len === 0) {\n return -1;\n }\n var n = +fromIndex || 0;\n if (Math.abs(n) === Infinity) {\n n = 0;\n }\n if (n >= len) {\n return -1;\n }\n k = Math.max(n >= 0 ? n : len - Math.abs(n), 0);\n while (k < len) {\n if (k in O && O[k] === searchElement) {\n return k;\n }\n k++;\n }\n return -1;\n };\n }\n\n // =================================================================================================================\n // Template\n\n var base_html = '<span class=\"irs\">' + '<span class=\"irs-line\" tabindex=\"0\"></span>' + '<span class=\"irs-min\">0</span><span class=\"irs-max\">1</span>' + '<span class=\"irs-from\">0</span><span class=\"irs-to\">0</span><span class=\"irs-single\">0</span>' + '</span>' + '<span class=\"irs-grid\"></span>';\n var single_html = '<span class=\"irs-bar irs-bar--single\"></span>' + '<span class=\"irs-shadow shadow-single\"></span>' + '<span class=\"irs-handle single\"><i></i><i></i><i></i></span>';\n var double_html = '<span class=\"irs-bar\"></span>' + '<span class=\"irs-shadow shadow-from\"></span>' + '<span class=\"irs-shadow shadow-to\"></span>' + '<span class=\"irs-handle from\"><i></i><i></i><i></i></span>' + '<span class=\"irs-handle to\"><i></i><i></i><i></i></span>';\n var disable_html = '<span class=\"irs-disable-mask\"></span>';\n\n // =================================================================================================================\n // Core\n\n /**\n * Main plugin constructor\n *\n * @param input {Object} link to base input element\n * @param options {Object} slider config\n * @param plugin_count {Number}\n * @constructor\n */\n var IonRangeSlider = function (input, options, plugin_count) {\n this.VERSION = \"2.3.1\";\n this.input = input;\n this.plugin_count = plugin_count;\n this.current_plugin = 0;\n this.calc_count = 0;\n this.update_tm = 0;\n this.old_from = 0;\n this.old_to = 0;\n this.old_min_interval = null;\n this.raf_id = null;\n this.dragging = false;\n this.force_redraw = false;\n this.no_diapason = false;\n this.has_tab_index = true;\n this.is_key = false;\n this.is_update = false;\n this.is_start = true;\n this.is_finish = false;\n this.is_active = false;\n this.is_resize = false;\n this.is_click = false;\n options = options || {};\n\n // cache for links to all DOM elements\n this.$cache = {\n win: $(window),\n body: $(document.body),\n input: $(input),\n cont: null,\n rs: null,\n min: null,\n max: null,\n from: null,\n to: null,\n single: null,\n bar: null,\n line: null,\n s_single: null,\n s_from: null,\n s_to: null,\n shad_single: null,\n shad_from: null,\n shad_to: null,\n edge: null,\n grid: null,\n grid_labels: []\n };\n\n // storage for measure variables\n this.coords = {\n // left\n x_gap: 0,\n x_pointer: 0,\n // width\n w_rs: 0,\n w_rs_old: 0,\n w_handle: 0,\n // percents\n p_gap: 0,\n p_gap_left: 0,\n p_gap_right: 0,\n p_step: 0,\n p_pointer: 0,\n p_handle: 0,\n p_single_fake: 0,\n p_single_real: 0,\n p_from_fake: 0,\n p_from_real: 0,\n p_to_fake: 0,\n p_to_real: 0,\n p_bar_x: 0,\n p_bar_w: 0,\n // grid\n grid_gap: 0,\n big_num: 0,\n big: [],\n big_w: [],\n big_p: [],\n big_x: []\n };\n\n // storage for labels measure variables\n this.labels = {\n // width\n w_min: 0,\n w_max: 0,\n w_from: 0,\n w_to: 0,\n w_single: 0,\n // percents\n p_min: 0,\n p_max: 0,\n p_from_fake: 0,\n p_from_left: 0,\n p_to_fake: 0,\n p_to_left: 0,\n p_single_fake: 0,\n p_single_left: 0\n };\n\n /**\n * get and validate config\n */\n var $inp = this.$cache.input,\n val = $inp.prop(\"value\"),\n config,\n config_from_data,\n prop;\n\n // default config\n config = {\n skin: \"flat\",\n type: \"single\",\n min: 10,\n max: 100,\n from: null,\n to: null,\n step: 1,\n min_interval: 0,\n max_interval: 0,\n drag_interval: false,\n values: [],\n p_values: [],\n from_fixed: false,\n from_min: null,\n from_max: null,\n from_shadow: false,\n to_fixed: false,\n to_min: null,\n to_max: null,\n to_shadow: false,\n prettify_enabled: true,\n prettify_separator: \" \",\n prettify: null,\n force_edges: false,\n keyboard: true,\n grid: false,\n grid_margin: true,\n grid_num: 4,\n grid_snap: false,\n hide_min_max: false,\n hide_from_to: false,\n prefix: \"\",\n postfix: \"\",\n max_postfix: \"\",\n decorate_both: true,\n values_separator: \" — \",\n input_values_separator: \";\",\n disable: false,\n block: false,\n extra_classes: \"\",\n scope: null,\n onStart: null,\n onChange: null,\n onFinish: null,\n onUpdate: null\n };\n\n // check if base element is input\n if ($inp[0].nodeName !== \"INPUT\") {\n console && console.warn && console.warn(\"Base element should be <input>!\", $inp[0]);\n }\n\n // config from data-attributes extends js config\n config_from_data = {\n skin: $inp.data(\"skin\"),\n type: $inp.data(\"type\"),\n min: $inp.data(\"min\"),\n max: $inp.data(\"max\"),\n from: $inp.data(\"from\"),\n to: $inp.data(\"to\"),\n step: $inp.data(\"step\"),\n min_interval: $inp.data(\"minInterval\"),\n max_interval: $inp.data(\"maxInterval\"),\n drag_interval: $inp.data(\"dragInterval\"),\n values: $inp.data(\"values\"),\n from_fixed: $inp.data(\"fromFixed\"),\n from_min: $inp.data(\"fromMin\"),\n from_max: $inp.data(\"fromMax\"),\n from_shadow: $inp.data(\"fromShadow\"),\n to_fixed: $inp.data(\"toFixed\"),\n to_min: $inp.data(\"toMin\"),\n to_max: $inp.data(\"toMax\"),\n to_shadow: $inp.data(\"toShadow\"),\n prettify_enabled: $inp.data(\"prettifyEnabled\"),\n prettify_separator: $inp.data(\"prettifySeparator\"),\n force_edges: $inp.data(\"forceEdges\"),\n keyboard: $inp.data(\"keyboard\"),\n grid: $inp.data(\"grid\"),\n grid_margin: $inp.data(\"gridMargin\"),\n grid_num: $inp.data(\"gridNum\"),\n grid_snap: $inp.data(\"gridSnap\"),\n hide_min_max: $inp.data(\"hideMinMax\"),\n hide_from_to: $inp.data(\"hideFromTo\"),\n prefix: $inp.data(\"prefix\"),\n postfix: $inp.data(\"postfix\"),\n max_postfix: $inp.data(\"maxPostfix\"),\n decorate_both: $inp.data(\"decorateBoth\"),\n values_separator: $inp.data(\"valuesSeparator\"),\n input_values_separator: $inp.data(\"inputValuesSeparator\"),\n disable: $inp.data(\"disable\"),\n block: $inp.data(\"block\"),\n extra_classes: $inp.data(\"extraClasses\")\n };\n config_from_data.values = config_from_data.values && config_from_data.values.split(\",\");\n for (prop in config_from_data) {\n if (config_from_data.hasOwnProperty(prop)) {\n if (config_from_data[prop] === undefined || config_from_data[prop] === \"\") {\n delete config_from_data[prop];\n }\n }\n }\n\n // input value extends default config\n if (val !== undefined && val !== \"\") {\n val = val.split(config_from_data.input_values_separator || options.input_values_separator || \";\");\n if (val[0] && val[0] == +val[0]) {\n val[0] = +val[0];\n }\n if (val[1] && val[1] == +val[1]) {\n val[1] = +val[1];\n }\n if (options && options.values && options.values.length) {\n config.from = val[0] && options.values.indexOf(val[0]);\n config.to = val[1] && options.values.indexOf(val[1]);\n } else {\n config.from = val[0] && +val[0];\n config.to = val[1] && +val[1];\n }\n }\n\n // js config extends default config\n $.extend(config, options);\n\n // data config extends config\n $.extend(config, config_from_data);\n this.options = config;\n\n // validate config, to be sure that all data types are correct\n this.update_check = {};\n this.validate();\n\n // default result object, returned to callbacks\n this.result = {\n input: this.$cache.input,\n slider: null,\n min: this.options.min,\n max: this.options.max,\n from: this.options.from,\n from_percent: 0,\n from_value: null,\n to: this.options.to,\n to_percent: 0,\n to_value: null\n };\n this.init();\n };\n IonRangeSlider.prototype = {\n /**\n * Starts or updates the plugin instance\n *\n * @param [is_update] {boolean}\n */\n init: function (is_update) {\n this.no_diapason = false;\n this.coords.p_step = this.convertToPercent(this.options.step, true);\n this.target = \"base\";\n this.toggleInput();\n this.append();\n this.setMinMax();\n if (is_update) {\n this.force_redraw = true;\n this.calc(true);\n\n // callbacks called\n this.callOnUpdate();\n } else {\n this.force_redraw = true;\n this.calc(true);\n\n // callbacks called\n this.callOnStart();\n }\n this.updateScene();\n },\n /**\n * Appends slider template to a DOM\n */\n append: function () {\n var container_html = '<span class=\"irs irs--' + this.options.skin + ' js-irs-' + this.plugin_count + ' ' + this.options.extra_classes + '\"></span>';\n this.$cache.input.before(container_html);\n this.$cache.input.prop(\"readonly\", true);\n this.$cache.cont = this.$cache.input.prev();\n this.result.slider = this.$cache.cont;\n this.$cache.cont.html(base_html);\n this.$cache.rs = this.$cache.cont.find(\".irs\");\n this.$cache.min = this.$cache.cont.find(\".irs-min\");\n this.$cache.max = this.$cache.cont.find(\".irs-max\");\n this.$cache.from = this.$cache.cont.find(\".irs-from\");\n this.$cache.to = this.$cache.cont.find(\".irs-to\");\n this.$cache.single = this.$cache.cont.find(\".irs-single\");\n this.$cache.line = this.$cache.cont.find(\".irs-line\");\n this.$cache.grid = this.$cache.cont.find(\".irs-grid\");\n if (this.options.type === \"single\") {\n this.$cache.cont.append(single_html);\n this.$cache.bar = this.$cache.cont.find(\".irs-bar\");\n this.$cache.edge = this.$cache.cont.find(\".irs-bar-edge\");\n this.$cache.s_single = this.$cache.cont.find(\".single\");\n this.$cache.from[0].style.visibility = \"hidden\";\n this.$cache.to[0].style.visibility = \"hidden\";\n this.$cache.shad_single = this.$cache.cont.find(\".shadow-single\");\n } else {\n this.$cache.cont.append(double_html);\n this.$cache.bar = this.$cache.cont.find(\".irs-bar\");\n this.$cache.s_from = this.$cache.cont.find(\".from\");\n this.$cache.s_to = this.$cache.cont.find(\".to\");\n this.$cache.shad_from = this.$cache.cont.find(\".shadow-from\");\n this.$cache.shad_to = this.$cache.cont.find(\".shadow-to\");\n this.setTopHandler();\n }\n if (this.options.hide_from_to) {\n this.$cache.from[0].style.display = \"none\";\n this.$cache.to[0].style.display = \"none\";\n this.$cache.single[0].style.display = \"none\";\n }\n this.appendGrid();\n if (this.options.disable) {\n this.appendDisableMask();\n this.$cache.input[0].disabled = true;\n } else {\n this.$cache.input[0].disabled = false;\n this.removeDisableMask();\n this.bindEvents();\n }\n\n // block only if not disabled\n if (!this.options.disable) {\n if (this.options.block) {\n this.appendDisableMask();\n } else {\n this.removeDisableMask();\n }\n }\n if (this.options.drag_interval) {\n this.$cache.bar[0].style.cursor = \"ew-resize\";\n }\n },\n /**\n * Determine which handler has a priority\n * works only for double slider type\n */\n setTopHandler: function () {\n var min = this.options.min,\n max = this.options.max,\n from = this.options.from,\n to = this.options.to;\n if (from > min && to === max) {\n this.$cache.s_from.addClass(\"type_last\");\n } else if (to < max) {\n this.$cache.s_to.addClass(\"type_last\");\n }\n },\n /**\n * Determine which handles was clicked last\n * and which handler should have hover effect\n *\n * @param target {String}\n */\n changeLevel: function (target) {\n switch (target) {\n case \"single\":\n this.coords.p_gap = this.toFixed(this.coords.p_pointer - this.coords.p_single_fake);\n this.$cache.s_single.addClass(\"state_hover\");\n break;\n case \"from\":\n this.coords.p_gap = this.toFixed(this.coords.p_pointer - this.coords.p_from_fake);\n this.$cache.s_from.addClass(\"state_hover\");\n this.$cache.s_from.addClass(\"type_last\");\n this.$cache.s_to.removeClass(\"type_last\");\n break;\n case \"to\":\n this.coords.p_gap = this.toFixed(this.coords.p_pointer - this.coords.p_to_fake);\n this.$cache.s_to.addClass(\"state_hover\");\n this.$cache.s_to.addClass(\"type_last\");\n this.$cache.s_from.removeClass(\"type_last\");\n break;\n case \"both\":\n this.coords.p_gap_left = this.toFixed(this.coords.p_pointer - this.coords.p_from_fake);\n this.coords.p_gap_right = this.toFixed(this.coords.p_to_fake - this.coords.p_pointer);\n this.$cache.s_to.removeClass(\"type_last\");\n this.$cache.s_from.removeClass(\"type_last\");\n break;\n }\n },\n /**\n * Then slider is disabled\n * appends extra layer with opacity\n */\n appendDisableMask: function () {\n this.$cache.cont.append(disable_html);\n this.$cache.cont.addClass(\"irs-disabled\");\n },\n /**\n * Then slider is not disabled\n * remove disable mask\n */\n removeDisableMask: function () {\n this.$cache.cont.remove(\".irs-disable-mask\");\n this.$cache.cont.removeClass(\"irs-disabled\");\n },\n /**\n * Remove slider instance\n * and unbind all events\n */\n remove: function () {\n this.$cache.cont.remove();\n this.$cache.cont = null;\n this.$cache.line.off(\"keydown.irs_\" + this.plugin_count);\n this.$cache.body.off(\"touchmove.irs_\" + this.plugin_count);\n this.$cache.body.off(\"mousemove.irs_\" + this.plugin_count);\n this.$cache.win.off(\"touchend.irs_\" + this.plugin_count);\n this.$cache.win.off(\"mouseup.irs_\" + this.plugin_count);\n if (is_old_ie) {\n this.$cache.body.off(\"mouseup.irs_\" + this.plugin_count);\n this.$cache.body.off(\"mouseleave.irs_\" + this.plugin_count);\n }\n this.$cache.grid_labels = [];\n this.coords.big = [];\n this.coords.big_w = [];\n this.coords.big_p = [];\n this.coords.big_x = [];\n cancelAnimationFrame(this.raf_id);\n },\n /**\n * bind all slider events\n */\n bindEvents: function () {\n if (this.no_diapason) {\n return;\n }\n this.$cache.body.on(\"touchmove.irs_\" + this.plugin_count, this.pointerMove.bind(this));\n this.$cache.body.on(\"mousemove.irs_\" + this.plugin_count, this.pointerMove.bind(this));\n this.$cache.win.on(\"touchend.irs_\" + this.plugin_count, this.pointerUp.bind(this));\n this.$cache.win.on(\"mouseup.irs_\" + this.plugin_count, this.pointerUp.bind(this));\n this.$cache.line.on(\"touchstart.irs_\" + this.plugin_count, this.pointerClick.bind(this, \"click\"));\n this.$cache.line.on(\"mousedown.irs_\" + this.plugin_count, this.pointerClick.bind(this, \"click\"));\n this.$cache.line.on(\"focus.irs_\" + this.plugin_count, this.pointerFocus.bind(this));\n if (this.options.drag_interval && this.options.type === \"double\") {\n this.$cache.bar.on(\"touchstart.irs_\" + this.plugin_count, this.pointerDown.bind(this, \"both\"));\n this.$cache.bar.on(\"mousedown.irs_\" + this.plugin_count, this.pointerDown.bind(this, \"both\"));\n } else {\n this.$cache.bar.on(\"touchstart.irs_\" + this.plugin_count, this.pointerClick.bind(this, \"click\"));\n this.$cache.bar.on(\"mousedown.irs_\" + this.plugin_count, this.pointerClick.bind(this, \"click\"));\n }\n if (this.options.type === \"single\") {\n this.$cache.single.on(\"touchstart.irs_\" + this.plugin_count, this.pointerDown.bind(this, \"single\"));\n this.$cache.s_single.on(\"touchstart.irs_\" + this.plugin_count, this.pointerDown.bind(this, \"single\"));\n this.$cache.shad_single.on(\"touchstart.irs_\" + this.plugin_count, this.pointerClick.bind(this, \"click\"));\n this.$cache.single.on(\"mousedown.irs_\" + this.plugin_count, this.pointerDown.bind(this, \"single\"));\n this.$cache.s_single.on(\"mousedown.irs_\" + this.plugin_count, this.pointerDown.bind(this, \"single\"));\n this.$cache.edge.on(\"mousedown.irs_\" + this.plugin_count, this.pointerClick.bind(this, \"click\"));\n this.$cache.shad_single.on(\"mousedown.irs_\" + this.plugin_count, this.pointerClick.bind(this, \"click\"));\n } else {\n this.$cache.single.on(\"touchstart.irs_\" + this.plugin_count, this.pointerDown.bind(this, null));\n this.$cache.single.on(\"mousedown.irs_\" + this.plugin_count, this.pointerDown.bind(this, null));\n this.$cache.from.on(\"touchstart.irs_\" + this.plugin_count, this.pointerDown.bind(this, \"from\"));\n this.$cache.s_from.on(\"touchstart.irs_\" + this.plugin_count, this.pointerDown.bind(this, \"from\"));\n this.$cache.to.on(\"touchstart.irs_\" + this.plugin_count, this.pointerDown.bind(this, \"to\"));\n this.$cache.s_to.on(\"touchstart.irs_\" + this.plugin_count, this.pointerDown.bind(this, \"to\"));\n this.$cache.shad_from.on(\"touchstart.irs_\" + this.plugin_count, this.pointerClick.bind(this, \"click\"));\n this.$cache.shad_to.on(\"touchstart.irs_\" + this.plugin_count, this.pointerClick.bind(this, \"click\"));\n this.$cache.from.on(\"mousedown.irs_\" + this.plugin_count, this.pointerDown.bind(this, \"from\"));\n this.$cache.s_from.on(\"mousedown.irs_\" + this.plugin_count, this.pointerDown.bind(this, \"from\"));\n this.$cache.to.on(\"mousedown.irs_\" + this.plugin_count, this.pointerDown.bind(this, \"to\"));\n this.$cache.s_to.on(\"mousedown.irs_\" + this.plugin_count, this.pointerDown.bind(this, \"to\"));\n this.$cache.shad_from.on(\"mousedown.irs_\" + this.plugin_count, this.pointerClick.bind(this, \"click\"));\n this.$cache.shad_to.on(\"mousedown.irs_\" + this.plugin_count, this.pointerClick.bind(this, \"click\"));\n }\n if (this.options.keyboard) {\n this.$cache.line.on(\"keydown.irs_\" + this.plugin_count, this.key.bind(this, \"keyboard\"));\n }\n if (is_old_ie) {\n this.$cache.body.on(\"mouseup.irs_\" + this.plugin_count, this.pointerUp.bind(this));\n this.$cache.body.on(\"mouseleave.irs_\" + this.plugin_count, this.pointerUp.bind(this));\n }\n },\n /**\n * Focus with tabIndex\n *\n * @param e {Object} event object\n */\n pointerFocus: function (e) {\n if (!this.target) {\n var x;\n var $handle;\n if (this.options.type === \"single\") {\n $handle = this.$cache.single;\n } else {\n $handle = this.$cache.from;\n }\n x = $handle.offset().left;\n x += $handle.width() / 2 - 1;\n this.pointerClick(\"single\", {\n preventDefault: function () {},\n pageX: x\n });\n }\n },\n /**\n * Mousemove or touchmove\n * only for handlers\n *\n * @param e {Object} event object\n */\n pointerMove: function (e) {\n if (!this.dragging) {\n return;\n }\n var x = e.pageX || e.originalEvent.touches && e.originalEvent.touches[0].pageX;\n this.coords.x_pointer = x - this.coords.x_gap;\n this.calc();\n },\n /**\n * Mouseup or touchend\n * only for handlers\n *\n * @param e {Object} event object\n */\n pointerUp: function (e) {\n if (this.current_plugin !== this.plugin_count) {\n return;\n }\n if (this.is_active) {\n this.is_active = false;\n } else {\n return;\n }\n this.$cache.cont.find(\".state_hover\").removeClass(\"state_hover\");\n this.force_redraw = true;\n if (is_old_ie) {\n $(\"*\").prop(\"unselectable\", false);\n }\n this.updateScene();\n this.restoreOriginalMinInterval();\n\n // callbacks call\n if ($.contains(this.$cache.cont[0], e.target) || this.dragging) {\n this.callOnFinish();\n }\n this.dragging = false;\n },\n /**\n * Mousedown or touchstart\n * only for handlers\n *\n * @param target {String|null}\n * @param e {Object} event object\n */\n pointerDown: function (target, e) {\n e.preventDefault();\n var x = e.pageX || e.originalEvent.touches && e.originalEvent.touches[0].pageX;\n if (e.button === 2) {\n return;\n }\n if (target === \"both\") {\n this.setTempMinInterval();\n }\n if (!target) {\n target = this.target || \"from\";\n }\n this.current_plugin = this.plugin_count;\n this.target = target;\n this.is_active = true;\n this.dragging = true;\n this.coords.x_gap = this.$cache.rs.offset().left;\n this.coords.x_pointer = x - this.coords.x_gap;\n this.calcPointerPercent();\n this.changeLevel(target);\n if (is_old_ie) {\n $(\"*\").prop(\"unselectable\", true);\n }\n this.$cache.line.trigger(\"focus\");\n this.updateScene();\n },\n /**\n * Mousedown or touchstart\n * for other slider elements, like diapason line\n *\n * @param target {String}\n * @param e {Object} event object\n */\n pointerClick: function (target, e) {\n e.preventDefault();\n var x = e.pageX || e.originalEvent.touches && e.originalEvent.touches[0].pageX;\n if (e.button === 2) {\n return;\n }\n this.current_plugin = this.plugin_count;\n this.target = target;\n this.is_click = true;\n this.coords.x_gap = this.$cache.rs.offset().left;\n this.coords.x_pointer = +(x - this.coords.x_gap).toFixed();\n this.force_redraw = true;\n this.calc();\n this.$cache.line.trigger(\"focus\");\n },\n /**\n * Keyborard controls for focused slider\n *\n * @param target {String}\n * @param e {Object} event object\n * @returns {boolean|undefined}\n */\n key: function (target, e) {\n if (this.current_plugin !== this.plugin_count || e.altKey || e.ctrlKey || e.shiftKey || e.metaKey) {\n return;\n }\n switch (e.which) {\n case 83: // W\n case 65: // A\n case 40: // DOWN\n case 37:\n // LEFT\n e.preventDefault();\n this.moveByKey(false);\n break;\n case 87: // S\n case 68: // D\n case 38: // UP\n case 39:\n // RIGHT\n e.preventDefault();\n this.moveByKey(true);\n break;\n }\n return true;\n },\n /**\n * Move by key\n *\n * @param right {boolean} direction to move\n */\n moveByKey: function (right) {\n var p = this.coords.p_pointer;\n var p_step = (this.options.max - this.options.min) / 100;\n p_step = this.options.step / p_step;\n if (right) {\n p += p_step;\n } else {\n p -= p_step;\n }\n this.coords.x_pointer = this.toFixed(this.coords.w_rs / 100 * p);\n this.is_key = true;\n this.calc();\n },\n /**\n * Set visibility and content\n * of Min and Max labels\n */\n setMinMax: function () {\n if (!this.options) {\n return;\n }\n if (this.options.hide_min_max) {\n this.$cache.min[0].style.display = \"none\";\n this.$cache.max[0].style.display = \"none\";\n return;\n }\n if (this.options.values.length) {\n this.$cache.min.html(this.decorate(this.options.p_values[this.options.min]));\n this.$cache.max.html(this.decorate(this.options.p_values[this.options.max]));\n } else {\n var min_pretty = this._prettify(this.options.min);\n var max_pretty = this._prettify(this.options.max);\n this.result.min_pretty = min_pretty;\n this.result.max_pretty = max_pretty;\n this.$cache.min.html(this.decorate(min_pretty, this.options.min));\n this.$cache.max.html(this.decorate(max_pretty, this.options.max));\n }\n this.labels.w_min = this.$cache.min.outerWidth(false);\n this.labels.w_max = this.$cache.max.outerWidth(false);\n },\n /**\n * Then dragging interval, prevent interval collapsing\n * using min_interval option\n */\n setTempMinInterval: function () {\n var interval = this.result.to - this.result.from;\n if (this.old_min_interval === null) {\n this.old_min_interval = this.options.min_interval;\n }\n this.options.min_interval = interval;\n },\n /**\n * Restore min_interval option to original\n */\n restoreOriginalMinInterval: function () {\n if (this.old_min_interval !== null) {\n this.options.min_interval = this.old_min_interval;\n this.old_min_interval = null;\n }\n },\n // =============================================================================================================\n // Calculations\n\n /**\n * All calculations and measures start here\n *\n * @param update {boolean=}\n */\n calc: function (update) {\n if (!this.options) {\n return;\n }\n this.calc_count++;\n if (this.calc_count === 10 || update) {\n this.calc_count = 0;\n this.coords.w_rs = this.$cache.rs.outerWidth(false);\n this.calcHandlePercent();\n }\n if (!this.coords.w_rs) {\n return;\n }\n this.calcPointerPercent();\n var handle_x = this.getHandleX();\n if (this.target === \"both\") {\n this.coords.p_gap = 0;\n handle_x = this.getHandleX();\n }\n if (this.target === \"click\") {\n this.coords.p_gap = this.coords.p_handle / 2;\n handle_x = this.getHandleX();\n if (this.options.drag_interval) {\n this.target = \"both_one\";\n } else {\n this.target = this.chooseHandle(handle_x);\n }\n }\n switch (this.target) {\n case \"base\":\n var w = (this.options.max - this.options.min) / 100,\n f = (this.result.from - this.options.min) / w,\n t = (this.result.to - this.options.min) / w;\n this.coords.p_single_real = this.toFixed(f);\n this.coords.p_from_real = this.toFixed(f);\n this.coords.p_to_real = this.toFixed(t);\n this.coords.p_single_real = this.checkDiapason(this.coords.p_single_real, this.options.from_min, this.options.from_max);\n this.coords.p_from_real = this.checkDiapason(this.coords.p_from_real, this.options.from_min, this.options.from_max);\n this.coords.p_to_real = this.checkDiapason(this.coords.p_to_real, this.options.to_min, this.options.to_max);\n this.coords.p_single_fake = this.convertToFakePercent(this.coords.p_single_real);\n this.coords.p_from_fake = this.convertToFakePercent(this.coords.p_from_real);\n this.coords.p_to_fake = this.convertToFakePercent(this.coords.p_to_real);\n this.target = null;\n break;\n case \"single\":\n if (this.options.from_fixed) {\n break;\n }\n this.coords.p_single_real = this.convertToRealPercent(handle_x);\n this.coords.p_single_real = this.calcWithStep(this.coords.p_single_real);\n this.coords.p_single_real = this.checkDiapason(this.coords.p_single_real, this.options.from_min, this.options.from_max);\n this.coords.p_single_fake = this.convertToFakePercent(this.coords.p_single_real);\n break;\n case \"from\":\n if (this.options.from_fixed) {\n break;\n }\n this.coords.p_from_real = this.convertToRealPercent(handle_x);\n this.coords.p_from_real = this.calcWithStep(this.coords.p_from_real);\n if (this.coords.p_from_real > this.coords.p_to_real) {\n this.coords.p_from_real = this.coords.p_to_real;\n }\n this.coords.p_from_real = this.checkDiapason(this.coords.p_from_real, this.options.from_min, this.options.from_max);\n this.coords.p_from_real = this.checkMinInterval(this.coords.p_from_real, this.coords.p_to_real, \"from\");\n this.coords.p_from_real = this.checkMaxInterval(this.coords.p_from_real, this.coords.p_to_real, \"from\");\n this.coords.p_from_fake = this.convertToFakePercent(this.coords.p_from_real);\n break;\n case \"to\":\n if (this.options.to_fixed) {\n break;\n }\n this.coords.p_to_real = this.convertToRealPercent(handle_x);\n this.coords.p_to_real = this.calcWithStep(this.coords.p_to_real);\n if (this.coords.p_to_real < this.coords.p_from_real) {\n this.coords.p_to_real = this.coords.p_from_real;\n }\n this.coords.p_to_real = this.checkDiapason(this.coords.p_to_real, this.options.to_min, this.options.to_max);\n this.coords.p_to_real = this.checkMinInterval(this.coords.p_to_real, this.coords.p_from_real, \"to\");\n this.coords.p_to_real = this.checkMaxInterval(this.coords.p_to_real, this.coords.p_from_real, \"to\");\n this.coords.p_to_fake = this.convertToFakePercent(this.coords.p_to_real);\n break;\n case \"both\":\n if (this.options.from_fixed || this.options.to_fixed) {\n break;\n }\n handle_x = this.toFixed(handle_x + this.coords.p_handle * 0.001);\n this.coords.p_from_real = this.convertToRealPercent(handle_x) - this.coords.p_gap_left;\n this.coords.p_from_real = this.calcWithStep(this.coords.p_from_real);\n this.coords.p_from_real = this.checkDiapason(this.coords.p_from_real, this.options.from_min, this.options.from_max);\n this.coords.p_from_real = this.checkMinInterval(this.coords.p_from_real, this.coords.p_to_real, \"from\");\n this.coords.p_from_fake = this.convertToFakePercent(this.coords.p_from_real);\n this.coords.p_to_real = this.convertToRealPercent(handle_x) + this.coords.p_gap_right;\n this.coords.p_to_real = this.calcWithStep(this.coords.p_to_real);\n this.coords.p_to_real = this.checkDiapason(this.coords.p_to_real, this.options.to_min, this.options.to_max);\n this.coords.p_to_real = this.checkMinInterval(this.coords.p_to_real, this.coords.p_from_real, \"to\");\n this.coords.p_to_fake = this.convertToFakePercent(this.coords.p_to_real);\n break;\n case \"both_one\":\n if (this.options.from_fixed || this.options.to_fixed) {\n break;\n }\n var real_x = this.convertToRealPercent(handle_x),\n from = this.result.from_percent,\n to = this.result.to_percent,\n full = to - from,\n half = full / 2,\n new_from = real_x - half,\n new_to = real_x + half;\n if (new_from < 0) {\n new_from = 0;\n new_to = new_from + full;\n }\n if (new_to > 100) {\n new_to = 100;\n new_from = new_to - full;\n }\n this.coords.p_from_real = this.calcWithStep(new_from);\n this.coords.p_from_real = this.checkDiapason(this.coords.p_from_real, this.options.from_min, this.options.from_max);\n this.coords.p_from_fake = this.convertToFakePercent(this.coords.p_from_real);\n this.coords.p_to_real = this.calcWithStep(new_to);\n this.coords.p_to_real = this.checkDiapason(this.coords.p_to_real, this.options.to_min, this.options.to_max);\n this.coords.p_to_fake = this.convertToFakePercent(this.coords.p_to_real);\n break;\n }\n if (this.options.type === \"single\") {\n this.coords.p_bar_x = this.coords.p_handle / 2;\n this.coords.p_bar_w = this.coords.p_single_fake;\n this.result.from_percent = this.coords.p_single_real;\n this.result.from = this.convertToValue(this.coords.p_single_real);\n this.result.from_pretty = this._prettify(this.result.from);\n if (this.options.values.length) {\n this.result.from_value = this.options.values[this.result.from];\n }\n } else {\n this.coords.p_bar_x = this.toFixed(this.coords.p_from_fake + this.coords.p_handle / 2);\n this.coords.p_bar_w = this.toFixed(this.coords.p_to_fake - this.coords.p_from_fake);\n this.result.from_percent = this.coords.p_from_real;\n this.result.from = this.convertToValue(this.coords.p_from_real);\n this.result.from_pretty = this._prettify(this.result.from);\n this.result.to_percent = this.coords.p_to_real;\n this.result.to = this.convertToValue(this.coords.p_to_real);\n this.result.to_pretty = this._prettify(this.result.to);\n if (this.options.values.length) {\n this.result.from_value = this.options.values[this.result.from];\n this.result.to_value = this.options.values[this.result.to];\n }\n }\n this.calcMinMax();\n this.calcLabels();\n },\n /**\n * calculates pointer X in percent\n */\n calcPointerPercent: function () {\n if (!this.coords.w_rs) {\n this.coords.p_pointer = 0;\n return;\n }\n if (this.coords.x_pointer < 0 || isNaN(this.coords.x_pointer)) {\n this.coords.x_pointer = 0;\n } else if (this.coords.x_pointer > this.coords.w_rs) {\n this.coords.x_pointer = this.coords.w_rs;\n }\n this.coords.p_pointer = this.toFixed(this.coords.x_pointer / this.coords.w_rs * 100);\n },\n convertToRealPercent: function (fake) {\n var full = 100 - this.coords.p_handle;\n return fake / full * 100;\n },\n convertToFakePercent: function (real) {\n var full = 100 - this.coords.p_handle;\n return real / 100 * full;\n },\n getHandleX: function () {\n var max = 100 - this.coords.p_handle,\n x = this.toFixed(this.coords.p_pointer - this.coords.p_gap);\n if (x < 0) {\n x = 0;\n } else if (x > max) {\n x = max;\n }\n return x;\n },\n calcHandlePercent: function () {\n if (this.options.type === \"single\") {\n this.coords.w_handle = this.$cache.s_single.outerWidth(false);\n } else {\n this.coords.w_handle = this.$cache.s_from.outerWidth(false);\n }\n this.coords.p_handle = this.toFixed(this.coords.w_handle / this.coords.w_rs * 100);\n },\n /**\n * Find closest handle to pointer click\n *\n * @param real_x {Number}\n * @returns {String}\n */\n chooseHandle: function (real_x) {\n if (this.options.type === \"single\") {\n return \"single\";\n } else {\n var m_point = this.coords.p_from_real + (this.coords.p_to_real - this.coords.p_from_real) / 2;\n if (real_x >= m_point) {\n return this.options.to_fixed ? \"from\" : \"to\";\n } else {\n return this.options.from_fixed ? \"to\" : \"from\";\n }\n }\n },\n /**\n * Measure Min and Max labels width in percent\n */\n calcMinMax: function () {\n if (!this.coords.w_rs) {\n return;\n }\n this.labels.p_min = this.labels.w_min / this.coords.w_rs * 100;\n this.labels.p_max = this.labels.w_max / this.coords.w_rs * 100;\n },\n /**\n * Measure labels width and X in percent\n */\n calcLabels: function () {\n if (!this.coords.w_rs || this.options.hide_from_to) {\n return;\n }\n if (this.options.type === \"single\") {\n this.labels.w_single = this.$cache.single.outerWidth(false);\n this.labels.p_single_fake = this.labels.w_single / this.coords.w_rs * 100;\n this.labels.p_single_left = this.coords.p_single_fake + this.coords.p_handle / 2 - this.labels.p_single_fake / 2;\n this.labels.p_single_left = this.checkEdges(this.labels.p_single_left, this.labels.p_single_fake);\n } else {\n this.labels.w_from = this.$cache.from.outerWidth(false);\n this.labels.p_from_fake = this.labels.w_from / this.coords.w_rs * 100;\n this.labels.p_from_left = this.coords.p_from_fake + this.coords.p_handle / 2 - this.labels.p_from_fake / 2;\n this.labels.p_from_left = this.toFixed(this.labels.p_from_left);\n this.labels.p_from_left = this.checkEdges(this.labels.p_from_left, this.labels.p_from_fake);\n this.labels.w_to = this.$cache.to.outerWidth(false);\n this.labels.p_to_fake = this.labels.w_to / this.coords.w_rs * 100;\n this.labels.p_to_left = this.coords.p_to_fake + this.coords.p_handle / 2 - this.labels.p_to_fake / 2;\n this.labels.p_to_left = this.toFixed(this.labels.p_to_left);\n this.labels.p_to_left = this.checkEdges(this.labels.p_to_left, this.labels.p_to_fake);\n this.labels.w_single = this.$cache.single.outerWidth(false);\n this.labels.p_single_fake = this.labels.w_single / this.coords.w_rs * 100;\n this.labels.p_single_left = (this.labels.p_from_left + this.labels.p_to_left + this.labels.p_to_fake) / 2 - this.labels.p_single_fake / 2;\n this.labels.p_single_left = this.toFixed(this.labels.p_single_left);\n this.labels.p_single_left = this.checkEdges(this.labels.p_single_left, this.labels.p_single_fake);\n }\n },\n // =============================================================================================================\n // Drawings\n\n /**\n * Main function called in request animation frame\n * to update everything\n */\n updateScene: function () {\n if (this.raf_id) {\n cancelAnimationFrame(this.raf_id);\n this.raf_id = null;\n }\n clearTimeout(this.update_tm);\n this.update_tm = null;\n if (!this.options) {\n return;\n }\n this.drawHandles();\n if (this.is_active) {\n this.raf_id = requestAnimationFrame(this.updateScene.bind(this));\n } else {\n this.update_tm = setTimeout(this.updateScene.bind(this), 300);\n }\n },\n /**\n * Draw handles\n */\n drawHandles: function () {\n this.coords.w_rs = this.$cache.rs.outerWidth(false);\n if (!this.coords.w_rs) {\n return;\n }\n if (this.coords.w_rs !== this.coords.w_rs_old) {\n this.target = \"base\";\n this.is_resize = true;\n }\n if (this.coords.w_rs !== this.coords.w_rs_old || this.force_redraw) {\n this.setMinMax();\n this.calc(true);\n this.drawLabels();\n if (this.options.grid) {\n this.calcGridMargin();\n this.calcGridLabels();\n }\n this.force_redraw = true;\n this.coords.w_rs_old = this.coords.w_rs;\n this.drawShadow();\n }\n if (!this.coords.w_rs) {\n return;\n }\n if (!this.dragging && !this.force_redraw && !this.is_key) {\n return;\n }\n if (this.old_from !== this.result.from || this.old_to !== this.result.to || this.force_redraw || this.is_key) {\n this.drawLabels();\n this.$cache.bar[0].style.left = this.coords.p_bar_x + \"%\";\n this.$cache.bar[0].style.width = this.coords.p_bar_w + \"%\";\n if (this.options.type === \"single\") {\n this.$cache.bar[0].style.left = 0;\n this.$cache.bar[0].style.width = this.coords.p_bar_w + this.coords.p_bar_x + \"%\";\n this.$cache.s_single[0].style.left = this.coords.p_single_fake + \"%\";\n this.$cache.single[0].style.left = this.labels.p_single_left + \"%\";\n } else {\n this.$cache.s_from[0].style.left = this.coords.p_from_fake + \"%\";\n this.$cache.s_to[0].style.left = this.coords.p_to_fake + \"%\";\n if (this.old_from !== this.result.from || this.force_redraw) {\n this.$cache.from[0].style.left = this.labels.p_from_left + \"%\";\n }\n if (this.old_to !== this.result.to || this.force_redraw) {\n this.$cache.to[0].style.left = this.labels.p_to_left + \"%\";\n }\n this.$cache.single[0].style.left = this.labels.p_single_left + \"%\";\n }\n this.writeToInput();\n if ((this.old_from !== this.result.from || this.old_to !== this.result.to) && !this.is_start) {\n this.$cache.input.trigger(\"change\");\n this.$cache.input.trigger(\"input\");\n }\n this.old_from = this.result.from;\n this.old_to = this.result.to;\n\n // callbacks call\n if (!this.is_resize && !this.is_update && !this.is_start && !this.is_finish) {\n this.callOnChange();\n }\n if (this.is_key || this.is_click) {\n this.is_key = false;\n this.is_click = false;\n this.callOnFinish();\n }\n this.is_update = false;\n this.is_resize = false;\n this.is_finish = false;\n }\n this.is_start = false;\n this.is_key = false;\n this.is_click = false;\n this.force_redraw = false;\n },\n /**\n * Draw labels\n * measure labels collisions\n * collapse close labels\n */\n drawLabels: function () {\n if (!this.options) {\n return;\n }\n var values_num = this.options.values.length;\n var p_values = this.options.p_values;\n var text_single;\n var text_from;\n var text_to;\n var from_pretty;\n var to_pretty;\n if (this.options.hide_from_to) {\n return;\n }\n if (this.options.type === \"single\") {\n if (values_num) {\n text_single = this.decorate(p_values[this.result.from]);\n this.$cache.single.html(text_single);\n } else {\n from_pretty = this._prettify(this.result.from);\n text_single = this.decorate(from_pretty, this.result.from);\n this.$cache.single.html(text_single);\n }\n this.calcLabels();\n if (this.labels.p_single_left < this.labels.p_min + 1) {\n this.$cache.min[0].style.visibility = \"hidden\";\n } else {\n this.$cache.min[0].style.visibility = \"visible\";\n }\n if (this.labels.p_single_left + this.labels.p_single_fake > 100 - this.labels.p_max - 1) {\n this.$cache.max[0].style.visibility = \"hidden\";\n } else {\n this.$cache.max[0].style.visibility = \"visible\";\n }\n } else {\n if (values_num) {\n if (this.options.decorate_both) {\n text_single = this.decorate(p_values[this.result.from]);\n text_single += this.options.values_separator;\n text_single += this.decorate(p_values[this.result.to]);\n } else {\n text_single = this.decorate(p_values[this.result.from] + this.options.values_separator + p_values[this.result.to]);\n }\n text_from = this.decorate(p_values[this.result.from]);\n text_to = this.decorate(p_values[this.result.to]);\n this.$cache.single.html(text_single);\n this.$cache.from.html(text_from);\n this.$cache.to.html(text_to);\n } else {\n from_pretty = this._prettify(this.result.from);\n to_pretty = this._prettify(this.result.to);\n if (this.options.decorate_both) {\n text_single = this.decorate(from_pretty, this.result.from);\n text_single += this.options.values_separator;\n text_single += this.decorate(to_pretty, this.result.to);\n } else {\n text_single = this.decorate(from_pretty + this.options.values_separator + to_pretty, this.result.to);\n }\n text_from = this.decorate(from_pretty, this.result.from);\n text_to = this.decorate(to_pretty, this.result.to);\n this.$cache.single.html(text_single);\n this.$cache.from.html(text_from);\n this.$cache.to.html(text_to);\n }\n this.calcLabels();\n var min = Math.min(this.labels.p_single_left, this.labels.p_from_left),\n single_left = this.labels.p_single_left + this.labels.p_single_fake,\n to_left = this.labels.p_to_left + this.labels.p_to_fake,\n max = Math.max(single_left, to_left);\n if (this.labels.p_from_left + this.labels.p_from_fake >= this.labels.p_to_left) {\n this.$cache.from[0].style.visibility = \"hidden\";\n this.$cache.to[0].style.visibility = \"hidden\";\n this.$cache.single[0].style.visibility = \"visible\";\n if (this.result.from === this.result.to) {\n if (this.target === \"from\") {\n this.$cache.from[0].style.visibility = \"visible\";\n } else if (this.target === \"to\") {\n this.$cache.to[0].style.visibility = \"visible\";\n } else if (!this.target) {\n this.$cache.from[0].style.visibility = \"visible\";\n }\n this.$cache.single[0].style.visibility = \"hidden\";\n max = to_left;\n } else {\n this.$cache.from[0].style.visibility = \"hidden\";\n this.$cache.to[0].style.visibility = \"hidden\";\n this.$cache.single[0].style.visibility = \"visible\";\n max = Math.max(single_left, to_left);\n }\n } else {\n this.$cache.from[0].style.visibility = \"visible\";\n this.$cache.to[0].style.visibility = \"visible\";\n this.$cache.single[0].style.visibility = \"hidden\";\n }\n if (min < this.labels.p_min + 1) {\n this.$cache.min[0].style.visibility = \"hidden\";\n } else {\n this.$cache.min[0].style.visibility = \"visible\";\n }\n if (max > 100 - this.labels.p_max - 1) {\n this.$cache.max[0].style.visibility = \"hidden\";\n } else {\n this.$cache.max[0].style.visibility = \"visible\";\n }\n }\n },\n /**\n * Draw shadow intervals\n */\n drawShadow: function () {\n var o = this.options,\n c = this.$cache,\n is_from_min = typeof o.from_min === \"number\" && !isNaN(o.from_min),\n is_from_max = typeof o.from_max === \"number\" && !isNaN(o.from_max),\n is_to_min = typeof o.to_min === \"number\" && !isNaN(o.to_min),\n is_to_max = typeof o.to_max === \"number\" && !isNaN(o.to_max),\n from_min,\n from_max,\n to_min,\n to_max;\n if (o.type === \"single\") {\n if (o.from_shadow && (is_from_min || is_from_max)) {\n from_min = this.convertToPercent(is_from_min ? o.from_min : o.min);\n from_max = this.convertToPercent(is_from_max ? o.from_max : o.max) - from_min;\n from_min = this.toFixed(from_min - this.coords.p_handle / 100 * from_min);\n from_max = this.toFixed(from_max - this.coords.p_handle / 100 * from_max);\n from_min = from_min + this.coords.p_handle / 2;\n c.shad_single[0].style.display = \"block\";\n c.shad_single[0].style.left = from_min + \"%\";\n c.shad_single[0].style.width = from_max + \"%\";\n } else {\n c.shad_single[0].style.display = \"none\";\n }\n } else {\n if (o.from_shadow && (is_from_min || is_from_max)) {\n from_min = this.convertToPercent(is_from_min ? o.from_min : o.min);\n from_max = this.convertToPercent(is_from_max ? o.from_max : o.max) - from_min;\n from_min = this.toFixed(from_min - this.coords.p_handle / 100 * from_min);\n from_max = this.toFixed(from_max - this.coords.p_handle / 100 * from_max);\n from_min = from_min + this.coords.p_handle / 2;\n c.shad_from[0].style.display = \"block\";\n c.shad_from[0].style.left = from_min + \"%\";\n c.shad_from[0].style.width = from_max + \"%\";\n } else {\n c.shad_from[0].style.display = \"none\";\n }\n if (o.to_shadow && (is_to_min || is_to_max)) {\n to_min = this.convertToPercent(is_to_min ? o.to_min : o.min);\n to_max = this.convertToPercent(is_to_max ? o.to_max : o.max) - to_min;\n to_min = this.toFixed(to_min - this.coords.p_handle / 100 * to_min);\n to_max = this.toFixed(to_max - this.coords.p_handle / 100 * to_max);\n to_min = to_min + this.coords.p_handle / 2;\n c.shad_to[0].style.display = \"block\";\n c.shad_to[0].style.left = to_min + \"%\";\n c.shad_to[0].style.width = to_max + \"%\";\n } else {\n c.shad_to[0].style.display = \"none\";\n }\n }\n },\n /**\n * Write values to input element\n */\n writeToInput: function () {\n if (this.options.type === \"single\") {\n if (this.options.values.length) {\n this.$cache.input.prop(\"value\", this.result.from_value);\n } else {\n this.$cache.input.prop(\"value\", this.result.from);\n }\n this.$cache.input.data(\"from\", this.result.from);\n } else {\n if (this.options.values.length) {\n this.$cache.input.prop(\"value\", this.result.from_value + this.options.input_values_separator + this.result.to_value);\n } else {\n this.$cache.input.prop(\"value\", this.result.from + this.options.input_values_separator + this.result.to);\n }\n this.$cache.input.data(\"from\", this.result.from);\n this.$cache.input.data(\"to\", this.result.to);\n }\n },\n // =============================================================================================================\n // Callbacks\n\n callOnStart: function () {\n this.writeToInput();\n if (this.options.onStart && typeof this.options.onStart === \"function\") {\n if (this.options.scope) {\n this.options.onStart.call(this.options.scope, this.result);\n } else {\n this.options.onStart(this.result);\n }\n }\n },\n callOnChange: function () {\n this.writeToInput();\n if (this.options.onChange && typeof this.options.onChange === \"function\") {\n if (this.options.scope) {\n this.options.onChange.call(this.options.scope, this.result);\n } else {\n this.options.onChange(this.result);\n }\n }\n },\n callOnFinish: function () {\n this.writeToInput();\n if (this.options.onFinish && typeof this.options.onFinish === \"function\") {\n if (this.options.scope) {\n this.options.onFinish.call(this.options.scope, this.result);\n } else {\n this.options.onFinish(this.result);\n }\n }\n },\n callOnUpdate: function () {\n this.writeToInput();\n if (this.options.onUpdate && typeof this.options.onUpdate === \"function\") {\n if (this.options.scope) {\n this.options.onUpdate.call(this.options.scope, this.result);\n } else {\n this.options.onUpdate(this.result);\n }\n }\n },\n // =============================================================================================================\n // Service methods\n\n toggleInput: function () {\n this.$cache.input.toggleClass(\"irs-hidden-input\");\n if (this.has_tab_index) {\n this.$cache.input.prop(\"tabindex\", -1);\n } else {\n this.$cache.input.removeProp(\"tabindex\");\n }\n this.has_tab_index = !this.has_tab_index;\n },\n /**\n * Convert real value to percent\n *\n * @param value {Number} X in real\n * @param no_min {boolean=} don't use min value\n * @returns {Number} X in percent\n */\n convertToPercent: function (value, no_min) {\n var diapason = this.options.max - this.options.min,\n one_percent = diapason / 100,\n val,\n percent;\n if (!diapason) {\n this.no_diapason = true;\n return 0;\n }\n if (no_min) {\n val = value;\n } else {\n val = value - this.options.min;\n }\n percent = val / one_percent;\n return this.toFixed(percent);\n },\n /**\n * Convert percent to real values\n *\n * @param percent {Number} X in percent\n * @returns {Number} X in real\n */\n convertToValue: function (percent) {\n var min = this.options.min,\n max = this.options.max,\n min_decimals = min.toString().split(\".\")[1],\n max_decimals = max.toString().split(\".\")[1],\n min_length,\n max_length,\n avg_decimals = 0,\n abs = 0;\n if (percent === 0) {\n return this.options.min;\n }\n if (percent === 100) {\n return this.options.max;\n }\n if (min_decimals) {\n min_length = min_decimals.length;\n avg_decimals = min_length;\n }\n if (max_decimals) {\n max_length = max_decimals.length;\n avg_decimals = max_length;\n }\n if (min_length && max_length) {\n avg_decimals = min_length >= max_length ? min_length : max_length;\n }\n if (min < 0) {\n abs = Math.abs(min);\n min = +(min + abs).toFixed(avg_decimals);\n max = +(max + abs).toFixed(avg_decimals);\n }\n var number = (max - min) / 100 * percent + min,\n string = this.options.step.toString().split(\".\")[1],\n result;\n if (string) {\n number = +number.toFixed(string.length);\n } else {\n number = number / this.options.step;\n number = number * this.options.step;\n number = +number.toFixed(0);\n }\n if (abs) {\n number -= abs;\n }\n if (string) {\n result = +number.toFixed(string.length);\n } else {\n result = this.toFixed(number);\n }\n if (result < this.options.min) {\n result = this.options.min;\n } else if (result > this.options.max) {\n result = this.options.max;\n }\n return result;\n },\n /**\n * Round percent value with step\n *\n * @param percent {Number}\n * @returns percent {Number} rounded\n */\n calcWithStep: function (percent) {\n var rounded = Math.round(percent / this.coords.p_step) * this.coords.p_step;\n if (rounded > 100) {\n rounded = 100;\n }\n if (percent === 100) {\n rounded = 100;\n }\n return this.toFixed(rounded);\n },\n checkMinInterval: function (p_current, p_next, type) {\n var o = this.options,\n current,\n next;\n if (!o.min_interval) {\n return p_current;\n }\n current = this.convertToValue(p_current);\n next = this.convertToValue(p_next);\n if (type === \"from\") {\n if (next - current < o.min_interval) {\n current = next - o.min_interval;\n }\n } else {\n if (current - next < o.min_interval) {\n current = next + o.min_interval;\n }\n }\n return this.convertToPercent(current);\n },\n checkMaxInterval: function (p_current, p_next, type) {\n var o = this.options,\n current,\n next;\n if (!o.max_interval) {\n return p_current;\n }\n current = this.convertToValue(p_current);\n next = this.convertToValue(p_next);\n if (type === \"from\") {\n if (next - current > o.max_interval) {\n current = next - o.max_interval;\n }\n } else {\n if (current - next > o.max_interval) {\n current = next + o.max_interval;\n }\n }\n return this.convertToPercent(current);\n },\n checkDiapason: function (p_num, min, max) {\n var num = this.convertToValue(p_num),\n o = this.options;\n if (typeof min !== \"number\") {\n min = o.min;\n }\n if (typeof max !== \"number\") {\n max = o.max;\n }\n if (num < min) {\n num = min;\n }\n if (num > max) {\n num = max;\n }\n return this.convertToPercent(num);\n },\n toFixed: function (num) {\n num = num.toFixed(20);\n return +num;\n },\n _prettify: function (num) {\n if (!this.options.prettify_enabled) {\n return num;\n }\n if (this.options.prettify && typeof this.options.prettify === \"function\") {\n return this.options.prettify(num);\n } else {\n return this.prettify(num);\n }\n },\n prettify: function (num) {\n var n = num.toString();\n return n.replace(/(\\d{1,3}(?=(?:\\d\\d\\d)+(?!\\d)))/g, \"$1\" + this.options.prettify_separator);\n },\n checkEdges: function (left, width) {\n if (!this.options.force_edges) {\n return this.toFixed(left);\n }\n if (left < 0) {\n left = 0;\n } else if (left > 100 - width) {\n left = 100 - width;\n }\n return this.toFixed(left);\n },\n validate: function () {\n var o = this.options,\n r = this.result,\n v = o.values,\n vl = v.length,\n value,\n i;\n if (typeof o.min === \"string\") o.min = +o.min;\n if (typeof o.max === \"string\") o.max = +o.max;\n if (typeof o.from === \"string\") o.from = +o.from;\n if (typeof o.to === \"string\") o.to = +o.to;\n if (typeof o.step === \"string\") o.step = +o.step;\n if (typeof o.from_min === \"string\") o.from_min = +o.from_min;\n if (typeof o.from_max === \"string\") o.from_max = +o.from_max;\n if (typeof o.to_min === \"string\") o.to_min = +o.to_min;\n if (typeof o.to_max === \"string\") o.to_max = +o.to_max;\n if (typeof o.grid_num === \"string\") o.grid_num = +o.grid_num;\n if (o.max < o.min) {\n o.max = o.min;\n }\n if (vl) {\n o.p_values = [];\n o.min = 0;\n o.max = vl - 1;\n o.step = 1;\n o.grid_num = o.max;\n o.grid_snap = true;\n for (i = 0; i < vl; i++) {\n value = +v[i];\n if (!isNaN(value)) {\n v[i] = value;\n value = this._prettify(value);\n } else {\n value = v[i];\n }\n o.p_values.push(value);\n }\n }\n if (typeof o.from !== \"number\" || isNaN(o.from)) {\n o.from = o.min;\n }\n if (typeof o.to !== \"number\" || isNaN(o.to)) {\n o.to = o.max;\n }\n if (o.type === \"single\") {\n if (o.from < o.min) o.from = o.min;\n if (o.from > o.max) o.from = o.max;\n } else {\n if (o.from < o.min) o.from = o.min;\n if (o.from > o.max) o.from = o.max;\n if (o.to < o.min) o.to = o.min;\n if (o.to > o.max) o.to = o.max;\n if (this.update_check.from) {\n if (this.update_check.from !== o.from) {\n if (o.from > o.to) o.from = o.to;\n }\n if (this.update_check.to !== o.to) {\n if (o.to < o.from) o.to = o.from;\n }\n }\n if (o.from > o.to) o.from = o.to;\n if (o.to < o.from) o.to = o.from;\n }\n if (typeof o.step !== \"number\" || isNaN(o.step) || !o.step || o.step < 0) {\n o.step = 1;\n }\n if (typeof o.from_min === \"number\" && o.from < o.from_min) {\n o.from = o.from_min;\n }\n if (typeof o.from_max === \"number\" && o.from > o.from_max) {\n o.from = o.from_max;\n }\n if (typeof o.to_min === \"number\" && o.to < o.to_min) {\n o.to = o.to_min;\n }\n if (typeof o.to_max === \"number\" && o.from > o.to_max) {\n o.to = o.to_max;\n }\n if (r) {\n if (r.min !== o.min) {\n r.min = o.min;\n }\n if (r.max !== o.max) {\n r.max = o.max;\n }\n if (r.from < r.min || r.from > r.max) {\n r.from = o.from;\n }\n if (r.to < r.min || r.to > r.max) {\n r.to = o.to;\n }\n }\n if (typeof o.min_interval !== \"number\" || isNaN(o.min_interval) || !o.min_interval || o.min_interval < 0) {\n o.min_interval = 0;\n }\n if (typeof o.max_interval !== \"number\" || isNaN(o.max_interval) || !o.max_interval || o.max_interval < 0) {\n o.max_interval = 0;\n }\n if (o.min_interval && o.min_interval > o.max - o.min) {\n o.min_interval = o.max - o.min;\n }\n if (o.max_interval && o.max_interval > o.max - o.min) {\n o.max_interval = o.max - o.min;\n }\n },\n decorate: function (num, original) {\n var decorated = \"\",\n o = this.options;\n if (o.prefix) {\n decorated += o.prefix;\n }\n decorated += num;\n if (o.max_postfix) {\n if (o.values.length && num === o.p_values[o.max]) {\n decorated += o.max_postfix;\n if (o.postfix) {\n decorated += \" \";\n }\n } else if (original === o.max) {\n decorated += o.max_postfix;\n if (o.postfix) {\n decorated += \" \";\n }\n }\n }\n if (o.postfix) {\n decorated += o.postfix;\n }\n return decorated;\n },\n updateFrom: function () {\n this.result.from = this.options.from;\n this.result.from_percent = this.convertToPercent(this.result.from);\n this.result.from_pretty = this._prettify(this.result.from);\n if (this.options.values) {\n this.result.from_value = this.options.values[this.result.from];\n }\n },\n updateTo: function () {\n this.result.to = this.options.to;\n this.result.to_percent = this.convertToPercent(this.result.to);\n this.result.to_pretty = this._prettify(this.result.to);\n if (this.options.values) {\n this.result.to_value = this.options.values[this.result.to];\n }\n },\n updateResult: function () {\n this.result.min = this.options.min;\n this.result.max = this.options.max;\n this.updateFrom();\n this.updateTo();\n },\n // =============================================================================================================\n // Grid\n\n appendGrid: function () {\n if (!this.options.grid) {\n return;\n }\n var o = this.options,\n i,\n z,\n total = o.max - o.min,\n big_num = o.grid_num,\n big_p = 0,\n big_w = 0,\n small_max = 4,\n local_small_max,\n small_p,\n small_w = 0,\n result,\n html = '';\n this.calcGridMargin();\n if (o.grid_snap) {\n big_num = total / o.step;\n }\n if (big_num > 50) big_num = 50;\n big_p = this.toFixed(100 / big_num);\n if (big_num > 4) {\n small_max = 3;\n }\n if (big_num > 7) {\n small_max = 2;\n }\n if (big_num > 14) {\n small_max = 1;\n }\n if (big_num > 28) {\n small_max = 0;\n }\n for (i = 0; i < big_num + 1; i++) {\n local_small_max = small_max;\n big_w = this.toFixed(big_p * i);\n if (big_w > 100) {\n big_w = 100;\n }\n this.coords.big[i] = big_w;\n small_p = (big_w - big_p * (i - 1)) / (local_small_max + 1);\n for (z = 1; z <= local_small_max; z++) {\n if (big_w === 0) {\n break;\n }\n small_w = this.toFixed(big_w - small_p * z);\n html += '<span class=\"irs-grid-pol small\" style=\"left: ' + small_w + '%\"></span>';\n }\n html += '<span class=\"irs-grid-pol\" style=\"left: ' + big_w + '%\"></span>';\n result = this.convertToValue(big_w);\n if (o.values.length) {\n result = o.p_values[result];\n } else {\n result = this._prettify(result);\n }\n html += '<span class=\"irs-grid-text js-grid-text-' + i + '\" style=\"left: ' + big_w + '%\">' + result + '</span>';\n }\n this.coords.big_num = Math.ceil(big_num + 1);\n this.$cache.cont.addClass(\"irs-with-grid\");\n this.$cache.grid.html(html);\n this.cacheGridLabels();\n },\n cacheGridLabels: function () {\n var $label,\n i,\n num = this.coords.big_num;\n for (i = 0; i < num; i++) {\n $label = this.$cache.grid.find(\".js-grid-text-\" + i);\n this.$cache.grid_labels.push($label);\n }\n this.calcGridLabels();\n },\n calcGridLabels: function () {\n var i,\n label,\n start = [],\n finish = [],\n num = this.coords.big_num;\n for (i = 0; i < num; i++) {\n this.coords.big_w[i] = this.$cache.grid_labels[i].outerWidth(false);\n this.coords.big_p[i] = this.toFixed(this.coords.big_w[i] / this.coords.w_rs * 100);\n this.coords.big_x[i] = this.toFixed(this.coords.big_p[i] / 2);\n start[i] = this.toFixed(this.coords.big[i] - this.coords.big_x[i]);\n finish[i] = this.toFixed(start[i] + this.coords.big_p[i]);\n }\n if (this.options.force_edges) {\n if (start[0] < -this.coords.grid_gap) {\n start[0] = -this.coords.grid_gap;\n finish[0] = this.toFixed(start[0] + this.coords.big_p[0]);\n this.coords.big_x[0] = this.coords.grid_gap;\n }\n if (finish[num - 1] > 100 + this.coords.grid_gap) {\n finish[num - 1] = 100 + this.coords.grid_gap;\n start[num - 1] = this.toFixed(finish[num - 1] - this.coords.big_p[num - 1]);\n this.coords.big_x[num - 1] = this.toFixed(this.coords.big_p[num - 1] - this.coords.grid_gap);\n }\n }\n this.calcGridCollision(2, start, finish);\n this.calcGridCollision(4, start, finish);\n for (i = 0; i < num; i++) {\n label = this.$cache.grid_labels[i][0];\n if (this.coords.big_x[i] !== Number.POSITIVE_INFINITY) {\n label.style.marginLeft = -this.coords.big_x[i] + \"%\";\n }\n }\n },\n // Collisions Calc Beta\n // TODO: Refactor then have plenty of time\n calcGridCollision: function (step, start, finish) {\n var i,\n next_i,\n label,\n num = this.coords.big_num;\n for (i = 0; i < num; i += step) {\n next_i = i + step / 2;\n if (next_i >= num) {\n break;\n }\n label = this.$cache.grid_labels[next_i][0];\n if (finish[i] <= start[next_i]) {\n label.style.visibility = \"visible\";\n } else {\n label.style.visibility = \"hidden\";\n }\n }\n },\n calcGridMargin: function () {\n if (!this.options.grid_margin) {\n return;\n }\n this.coords.w_rs = this.$cache.rs.outerWidth(false);\n if (!this.coords.w_rs) {\n return;\n }\n if (this.options.type === \"single\") {\n this.coords.w_handle = this.$cache.s_single.outerWidth(false);\n } else {\n this.coords.w_handle = this.$cache.s_from.outerWidth(false);\n }\n this.coords.p_handle = this.toFixed(this.coords.w_handle / this.coords.w_rs * 100);\n this.coords.grid_gap = this.toFixed(this.coords.p_handle / 2 - 0.1);\n this.$cache.grid[0].style.width = this.toFixed(100 - this.coords.p_handle) + \"%\";\n this.$cache.grid[0].style.left = this.coords.grid_gap + \"%\";\n },\n // =============================================================================================================\n // Public methods\n\n update: function (options) {\n if (!this.input) {\n return;\n }\n this.is_update = true;\n this.options.from = this.result.from;\n this.options.to = this.result.to;\n this.update_check.from = this.result.from;\n this.update_check.to = this.result.to;\n this.options = $.extend(this.options, options);\n this.validate();\n this.updateResult(options);\n this.toggleInput();\n this.remove();\n this.init(true);\n },\n reset: function () {\n if (!this.input) {\n return;\n }\n this.updateResult();\n this.update();\n },\n destroy: function () {\n if (!this.input) {\n return;\n }\n this.toggleInput();\n this.$cache.input.prop(\"readonly\", false);\n $.data(this.input, \"ionRangeSlider\", null);\n this.remove();\n this.input = null;\n this.options = null;\n }\n };\n $.fn.ionRangeSlider = function (options) {\n return this.each(function () {\n if (!$.data(this, \"ionRangeSlider\")) {\n $.data(this, \"ionRangeSlider\", new IonRangeSlider(this, options, plugin_count++));\n }\n });\n };\n\n // =================================================================================================================\n // http://paulirish.com/2011/requestanimationframe-for-smart-animating/\n // http://my.opera.com/emoller/blog/2011/12/20/requestanimationframe-for-smart-er-animating\n\n // requestAnimationFrame polyfill by Erik Möller. fixes from Paul Irish and Tino Zijdel\n\n // MIT license\n\n (function () {\n var lastTime = 0;\n var vendors = ['ms', 'moz', 'webkit', 'o'];\n for (var x = 0; x < vendors.length && !window.requestAnimationFrame; ++x) {\n window.requestAnimationFrame = window[vendors[x] + 'RequestAnimationFrame'];\n window.cancelAnimationFrame = window[vendors[x] + 'CancelAnimationFrame'] || window[vendors[x] + 'CancelRequestAnimationFrame'];\n }\n if (!window.requestAnimationFrame) window.requestAnimationFrame = function (callback, element) {\n var currTime = new Date().getTime();\n var timeToCall = Math.max(0, 16 - (currTime - lastTime));\n var id = window.setTimeout(function () {\n callback(currTime + timeToCall);\n }, timeToCall);\n lastTime = currTime + timeToCall;\n return id;\n };\n if (!window.cancelAnimationFrame) window.cancelAnimationFrame = function (id) {\n clearTimeout(id);\n };\n })();\n});","/* globals __webpack_amd_options__ */\nmodule.exports = __webpack_amd_options__;\n","$(function() {\n // Note: In future store this in local storage\n var ProductComparison = [];\n\n $('[data-js-compare-add]').on('change', function(e) {\n updateSelectedProducts(e.target);\n $('[data-js-compare]').toggleClass('is-hidden', no_selection());\n $('[data-js-compare-trigger]').attr('disabled', nothing_to_compare());\n $('[data-js-compare-count]').text(ProductComparison.length);\n });\n\n $('[data-js-compare-trigger]').on('click', function(e) {\n var payload = {\n category: e.target.getAttribute('data-js-compare-trigger'),\n ids: ProductComparison\n }\n\n $.get('/product_comparison', payload, function(response) {\n $('[data-js-screen]').removeClass('is-hidden')\n $('[data-js-screen-body]').html(response);\n });\n });\n\n $('[data-js-compare-cancel]').on('click', function() {\n ProductComparison = [];\n $('[data-js-compare]').addClass('is-hidden');\n $('[data-js-compare-add]').prop('checked', false);\n });\n\n $('[data-js-screen-close]').on('click', function() {\n $('[data-js-screen]').addClass('is-hidden');\n });\n\n function updateSelectedProducts(product) {\n // Add product to state\n if (product.checked) {\n ProductComparison.push(product.id);\n return;\n }\n\n // Remove product from state\n ProductComparison = ProductComparison.filter(function(productId) {\n return productId !== product.id;\n });\n }\n\n function no_selection() {\n return ProductComparison.length < 1;\n }\n\n function nothing_to_compare() {\n return ProductComparison.length < 2;\n }\n});\n","/*! Hammer.JS - v2.0.7 - 2016-04-22\n * http://hammerjs.github.io/\n *\n * Copyright (c) 2016 Jorik Tangelder;\n * Licensed under the MIT license */\n(function (window, document, exportName, undefined) {\n 'use strict';\n\n var VENDOR_PREFIXES = ['', 'webkit', 'Moz', 'MS', 'ms', 'o'];\n var TEST_ELEMENT = document.createElement('div');\n var TYPE_FUNCTION = 'function';\n var round = Math.round;\n var abs = Math.abs;\n var now = Date.now;\n\n /**\n * set a timeout with a given scope\n * @param {Function} fn\n * @param {Number} timeout\n * @param {Object} context\n * @returns {number}\n */\n function setTimeoutContext(fn, timeout, context) {\n return setTimeout(bindFn(fn, context), timeout);\n }\n\n /**\n * if the argument is an array, we want to execute the fn on each entry\n * if it aint an array we don't want to do a thing.\n * this is used by all the methods that accept a single and array argument.\n * @param {*|Array} arg\n * @param {String} fn\n * @param {Object} [context]\n * @returns {Boolean}\n */\n function invokeArrayArg(arg, fn, context) {\n if (Array.isArray(arg)) {\n each(arg, context[fn], context);\n return true;\n }\n return false;\n }\n\n /**\n * walk objects and arrays\n * @param {Object} obj\n * @param {Function} iterator\n * @param {Object} context\n */\n function each(obj, iterator, context) {\n var i;\n if (!obj) {\n return;\n }\n if (obj.forEach) {\n obj.forEach(iterator, context);\n } else if (obj.length !== undefined) {\n i = 0;\n while (i < obj.length) {\n iterator.call(context, obj[i], i, obj);\n i++;\n }\n } else {\n for (i in obj) {\n obj.hasOwnProperty(i) && iterator.call(context, obj[i], i, obj);\n }\n }\n }\n\n /**\n * wrap a method with a deprecation warning and stack trace\n * @param {Function} method\n * @param {String} name\n * @param {String} message\n * @returns {Function} A new function wrapping the supplied method.\n */\n function deprecate(method, name, message) {\n var deprecationMessage = 'DEPRECATED METHOD: ' + name + '\\n' + message + ' AT \\n';\n return function () {\n var e = new Error('get-stack-trace');\n var stack = e && e.stack ? e.stack.replace(/^[^\\(]+?[\\n$]/gm, '').replace(/^\\s+at\\s+/gm, '').replace(/^Object.<anonymous>\\s*\\(/gm, '{anonymous}()@') : 'Unknown Stack Trace';\n var log = window.console && (window.console.warn || window.console.log);\n if (log) {\n log.call(window.console, deprecationMessage, stack);\n }\n return method.apply(this, arguments);\n };\n }\n\n /**\n * extend object.\n * means that properties in dest will be overwritten by the ones in src.\n * @param {Object} target\n * @param {...Object} objects_to_assign\n * @returns {Object} target\n */\n var assign;\n if (typeof Object.assign !== 'function') {\n assign = function assign(target) {\n if (target === undefined || target === null) {\n throw new TypeError('Cannot convert undefined or null to object');\n }\n var output = Object(target);\n for (var index = 1; index < arguments.length; index++) {\n var source = arguments[index];\n if (source !== undefined && source !== null) {\n for (var nextKey in source) {\n if (source.hasOwnProperty(nextKey)) {\n output[nextKey] = source[nextKey];\n }\n }\n }\n }\n return output;\n };\n } else {\n assign = Object.assign;\n }\n\n /**\n * extend object.\n * means that properties in dest will be overwritten by the ones in src.\n * @param {Object} dest\n * @param {Object} src\n * @param {Boolean} [merge=false]\n * @returns {Object} dest\n */\n var extend = deprecate(function extend(dest, src, merge) {\n var keys = Object.keys(src);\n var i = 0;\n while (i < keys.length) {\n if (!merge || merge && dest[keys[i]] === undefined) {\n dest[keys[i]] = src[keys[i]];\n }\n i++;\n }\n return dest;\n }, 'extend', 'Use `assign`.');\n\n /**\n * merge the values from src in the dest.\n * means that properties that exist in dest will not be overwritten by src\n * @param {Object} dest\n * @param {Object} src\n * @returns {Object} dest\n */\n var merge = deprecate(function merge(dest, src) {\n return extend(dest, src, true);\n }, 'merge', 'Use `assign`.');\n\n /**\n * simple class inheritance\n * @param {Function} child\n * @param {Function} base\n * @param {Object} [properties]\n */\n function inherit(child, base, properties) {\n var baseP = base.prototype,\n childP;\n childP = child.prototype = Object.create(baseP);\n childP.constructor = child;\n childP._super = baseP;\n if (properties) {\n assign(childP, properties);\n }\n }\n\n /**\n * simple function bind\n * @param {Function} fn\n * @param {Object} context\n * @returns {Function}\n */\n function bindFn(fn, context) {\n return function boundFn() {\n return fn.apply(context, arguments);\n };\n }\n\n /**\n * let a boolean value also be a function that must return a boolean\n * this first item in args will be used as the context\n * @param {Boolean|Function} val\n * @param {Array} [args]\n * @returns {Boolean}\n */\n function boolOrFn(val, args) {\n if (typeof val == TYPE_FUNCTION) {\n return val.apply(args ? args[0] || undefined : undefined, args);\n }\n return val;\n }\n\n /**\n * use the val2 when val1 is undefined\n * @param {*} val1\n * @param {*} val2\n * @returns {*}\n */\n function ifUndefined(val1, val2) {\n return val1 === undefined ? val2 : val1;\n }\n\n /**\n * addEventListener with multiple events at once\n * @param {EventTarget} target\n * @param {String} types\n * @param {Function} handler\n */\n function addEventListeners(target, types, handler) {\n each(splitStr(types), function (type) {\n target.addEventListener(type, handler, false);\n });\n }\n\n /**\n * removeEventListener with multiple events at once\n * @param {EventTarget} target\n * @param {String} types\n * @param {Function} handler\n */\n function removeEventListeners(target, types, handler) {\n each(splitStr(types), function (type) {\n target.removeEventListener(type, handler, false);\n });\n }\n\n /**\n * find if a node is in the given parent\n * @method hasParent\n * @param {HTMLElement} node\n * @param {HTMLElement} parent\n * @return {Boolean} found\n */\n function hasParent(node, parent) {\n while (node) {\n if (node == parent) {\n return true;\n }\n node = node.parentNode;\n }\n return false;\n }\n\n /**\n * small indexOf wrapper\n * @param {String} str\n * @param {String} find\n * @returns {Boolean} found\n */\n function inStr(str, find) {\n return str.indexOf(find) > -1;\n }\n\n /**\n * split string on whitespace\n * @param {String} str\n * @returns {Array} words\n */\n function splitStr(str) {\n return str.trim().split(/\\s+/g);\n }\n\n /**\n * find if a array contains the object using indexOf or a simple polyFill\n * @param {Array} src\n * @param {String} find\n * @param {String} [findByKey]\n * @return {Boolean|Number} false when not found, or the index\n */\n function inArray(src, find, findByKey) {\n if (src.indexOf && !findByKey) {\n return src.indexOf(find);\n } else {\n var i = 0;\n while (i < src.length) {\n if (findByKey && src[i][findByKey] == find || !findByKey && src[i] === find) {\n return i;\n }\n i++;\n }\n return -1;\n }\n }\n\n /**\n * convert array-like objects to real arrays\n * @param {Object} obj\n * @returns {Array}\n */\n function toArray(obj) {\n return Array.prototype.slice.call(obj, 0);\n }\n\n /**\n * unique array with objects based on a key (like 'id') or just by the array's value\n * @param {Array} src [{id:1},{id:2},{id:1}]\n * @param {String} [key]\n * @param {Boolean} [sort=False]\n * @returns {Array} [{id:1},{id:2}]\n */\n function uniqueArray(src, key, sort) {\n var results = [];\n var values = [];\n var i = 0;\n while (i < src.length) {\n var val = key ? src[i][key] : src[i];\n if (inArray(values, val) < 0) {\n results.push(src[i]);\n }\n values[i] = val;\n i++;\n }\n if (sort) {\n if (!key) {\n results = results.sort();\n } else {\n results = results.sort(function sortUniqueArray(a, b) {\n return a[key] > b[key];\n });\n }\n }\n return results;\n }\n\n /**\n * get the prefixed property\n * @param {Object} obj\n * @param {String} property\n * @returns {String|Undefined} prefixed\n */\n function prefixed(obj, property) {\n var prefix, prop;\n var camelProp = property[0].toUpperCase() + property.slice(1);\n var i = 0;\n while (i < VENDOR_PREFIXES.length) {\n prefix = VENDOR_PREFIXES[i];\n prop = prefix ? prefix + camelProp : property;\n if (prop in obj) {\n return prop;\n }\n i++;\n }\n return undefined;\n }\n\n /**\n * get a unique id\n * @returns {number} uniqueId\n */\n var _uniqueId = 1;\n function uniqueId() {\n return _uniqueId++;\n }\n\n /**\n * get the window object of an element\n * @param {HTMLElement} element\n * @returns {DocumentView|Window}\n */\n function getWindowForElement(element) {\n var doc = element.ownerDocument || element;\n return doc.defaultView || doc.parentWindow || window;\n }\n var MOBILE_REGEX = /mobile|tablet|ip(ad|hone|od)|android/i;\n var SUPPORT_TOUCH = ('ontouchstart' in window);\n var SUPPORT_POINTER_EVENTS = prefixed(window, 'PointerEvent') !== undefined;\n var SUPPORT_ONLY_TOUCH = SUPPORT_TOUCH && MOBILE_REGEX.test(navigator.userAgent);\n var INPUT_TYPE_TOUCH = 'touch';\n var INPUT_TYPE_PEN = 'pen';\n var INPUT_TYPE_MOUSE = 'mouse';\n var INPUT_TYPE_KINECT = 'kinect';\n var COMPUTE_INTERVAL = 25;\n var INPUT_START = 1;\n var INPUT_MOVE = 2;\n var INPUT_END = 4;\n var INPUT_CANCEL = 8;\n var DIRECTION_NONE = 1;\n var DIRECTION_LEFT = 2;\n var DIRECTION_RIGHT = 4;\n var DIRECTION_UP = 8;\n var DIRECTION_DOWN = 16;\n var DIRECTION_HORIZONTAL = DIRECTION_LEFT | DIRECTION_RIGHT;\n var DIRECTION_VERTICAL = DIRECTION_UP | DIRECTION_DOWN;\n var DIRECTION_ALL = DIRECTION_HORIZONTAL | DIRECTION_VERTICAL;\n var PROPS_XY = ['x', 'y'];\n var PROPS_CLIENT_XY = ['clientX', 'clientY'];\n\n /**\n * create new input type manager\n * @param {Manager} manager\n * @param {Function} callback\n * @returns {Input}\n * @constructor\n */\n function Input(manager, callback) {\n var self = this;\n this.manager = manager;\n this.callback = callback;\n this.element = manager.element;\n this.target = manager.options.inputTarget;\n\n // smaller wrapper around the handler, for the scope and the enabled state of the manager,\n // so when disabled the input events are completely bypassed.\n this.domHandler = function (ev) {\n if (boolOrFn(manager.options.enable, [manager])) {\n self.handler(ev);\n }\n };\n this.init();\n }\n Input.prototype = {\n /**\n * should handle the inputEvent data and trigger the callback\n * @virtual\n */\n handler: function () {},\n /**\n * bind the events\n */\n init: function () {\n this.evEl && addEventListeners(this.element, this.evEl, this.domHandler);\n this.evTarget && addEventListeners(this.target, this.evTarget, this.domHandler);\n this.evWin && addEventListeners(getWindowForElement(this.element), this.evWin, this.domHandler);\n },\n /**\n * unbind the events\n */\n destroy: function () {\n this.evEl && removeEventListeners(this.element, this.evEl, this.domHandler);\n this.evTarget && removeEventListeners(this.target, this.evTarget, this.domHandler);\n this.evWin && removeEventListeners(getWindowForElement(this.element), this.evWin, this.domHandler);\n }\n };\n\n /**\n * create new input type manager\n * called by the Manager constructor\n * @param {Hammer} manager\n * @returns {Input}\n */\n function createInputInstance(manager) {\n var Type;\n var inputClass = manager.options.inputClass;\n if (inputClass) {\n Type = inputClass;\n } else if (SUPPORT_POINTER_EVENTS) {\n Type = PointerEventInput;\n } else if (SUPPORT_ONLY_TOUCH) {\n Type = TouchInput;\n } else if (!SUPPORT_TOUCH) {\n Type = MouseInput;\n } else {\n Type = TouchMouseInput;\n }\n return new Type(manager, inputHandler);\n }\n\n /**\n * handle input events\n * @param {Manager} manager\n * @param {String} eventType\n * @param {Object} input\n */\n function inputHandler(manager, eventType, input) {\n var pointersLen = input.pointers.length;\n var changedPointersLen = input.changedPointers.length;\n var isFirst = eventType & INPUT_START && pointersLen - changedPointersLen === 0;\n var isFinal = eventType & (INPUT_END | INPUT_CANCEL) && pointersLen - changedPointersLen === 0;\n input.isFirst = !!isFirst;\n input.isFinal = !!isFinal;\n if (isFirst) {\n manager.session = {};\n }\n\n // source event is the normalized value of the domEvents\n // like 'touchstart, mouseup, pointerdown'\n input.eventType = eventType;\n\n // compute scale, rotation etc\n computeInputData(manager, input);\n\n // emit secret event\n manager.emit('hammer.input', input);\n manager.recognize(input);\n manager.session.prevInput = input;\n }\n\n /**\n * extend the data with some usable properties like scale, rotate, velocity etc\n * @param {Object} manager\n * @param {Object} input\n */\n function computeInputData(manager, input) {\n var session = manager.session;\n var pointers = input.pointers;\n var pointersLength = pointers.length;\n\n // store the first input to calculate the distance and direction\n if (!session.firstInput) {\n session.firstInput = simpleCloneInputData(input);\n }\n\n // to compute scale and rotation we need to store the multiple touches\n if (pointersLength > 1 && !session.firstMultiple) {\n session.firstMultiple = simpleCloneInputData(input);\n } else if (pointersLength === 1) {\n session.firstMultiple = false;\n }\n var firstInput = session.firstInput;\n var firstMultiple = session.firstMultiple;\n var offsetCenter = firstMultiple ? firstMultiple.center : firstInput.center;\n var center = input.center = getCenter(pointers);\n input.timeStamp = now();\n input.deltaTime = input.timeStamp - firstInput.timeStamp;\n input.angle = getAngle(offsetCenter, center);\n input.distance = getDistance(offsetCenter, center);\n computeDeltaXY(session, input);\n input.offsetDirection = getDirection(input.deltaX, input.deltaY);\n var overallVelocity = getVelocity(input.deltaTime, input.deltaX, input.deltaY);\n input.overallVelocityX = overallVelocity.x;\n input.overallVelocityY = overallVelocity.y;\n input.overallVelocity = abs(overallVelocity.x) > abs(overallVelocity.y) ? overallVelocity.x : overallVelocity.y;\n input.scale = firstMultiple ? getScale(firstMultiple.pointers, pointers) : 1;\n input.rotation = firstMultiple ? getRotation(firstMultiple.pointers, pointers) : 0;\n input.maxPointers = !session.prevInput ? input.pointers.length : input.pointers.length > session.prevInput.maxPointers ? input.pointers.length : session.prevInput.maxPointers;\n computeIntervalInputData(session, input);\n\n // find the correct target\n var target = manager.element;\n if (hasParent(input.srcEvent.target, target)) {\n target = input.srcEvent.target;\n }\n input.target = target;\n }\n function computeDeltaXY(session, input) {\n var center = input.center;\n var offset = session.offsetDelta || {};\n var prevDelta = session.prevDelta || {};\n var prevInput = session.prevInput || {};\n if (input.eventType === INPUT_START || prevInput.eventType === INPUT_END) {\n prevDelta = session.prevDelta = {\n x: prevInput.deltaX || 0,\n y: prevInput.deltaY || 0\n };\n offset = session.offsetDelta = {\n x: center.x,\n y: center.y\n };\n }\n input.deltaX = prevDelta.x + (center.x - offset.x);\n input.deltaY = prevDelta.y + (center.y - offset.y);\n }\n\n /**\n * velocity is calculated every x ms\n * @param {Object} session\n * @param {Object} input\n */\n function computeIntervalInputData(session, input) {\n var last = session.lastInterval || input,\n deltaTime = input.timeStamp - last.timeStamp,\n velocity,\n velocityX,\n velocityY,\n direction;\n if (input.eventType != INPUT_CANCEL && (deltaTime > COMPUTE_INTERVAL || last.velocity === undefined)) {\n var deltaX = input.deltaX - last.deltaX;\n var deltaY = input.deltaY - last.deltaY;\n var v = getVelocity(deltaTime, deltaX, deltaY);\n velocityX = v.x;\n velocityY = v.y;\n velocity = abs(v.x) > abs(v.y) ? v.x : v.y;\n direction = getDirection(deltaX, deltaY);\n session.lastInterval = input;\n } else {\n // use latest velocity info if it doesn't overtake a minimum period\n velocity = last.velocity;\n velocityX = last.velocityX;\n velocityY = last.velocityY;\n direction = last.direction;\n }\n input.velocity = velocity;\n input.velocityX = velocityX;\n input.velocityY = velocityY;\n input.direction = direction;\n }\n\n /**\n * create a simple clone from the input used for storage of firstInput and firstMultiple\n * @param {Object} input\n * @returns {Object} clonedInputData\n */\n function simpleCloneInputData(input) {\n // make a simple copy of the pointers because we will get a reference if we don't\n // we only need clientXY for the calculations\n var pointers = [];\n var i = 0;\n while (i < input.pointers.length) {\n pointers[i] = {\n clientX: round(input.pointers[i].clientX),\n clientY: round(input.pointers[i].clientY)\n };\n i++;\n }\n return {\n timeStamp: now(),\n pointers: pointers,\n center: getCenter(pointers),\n deltaX: input.deltaX,\n deltaY: input.deltaY\n };\n }\n\n /**\n * get the center of all the pointers\n * @param {Array} pointers\n * @return {Object} center contains `x` and `y` properties\n */\n function getCenter(pointers) {\n var pointersLength = pointers.length;\n\n // no need to loop when only one touch\n if (pointersLength === 1) {\n return {\n x: round(pointers[0].clientX),\n y: round(pointers[0].clientY)\n };\n }\n var x = 0,\n y = 0,\n i = 0;\n while (i < pointersLength) {\n x += pointers[i].clientX;\n y += pointers[i].clientY;\n i++;\n }\n return {\n x: round(x / pointersLength),\n y: round(y / pointersLength)\n };\n }\n\n /**\n * calculate the velocity between two points. unit is in px per ms.\n * @param {Number} deltaTime\n * @param {Number} x\n * @param {Number} y\n * @return {Object} velocity `x` and `y`\n */\n function getVelocity(deltaTime, x, y) {\n return {\n x: x / deltaTime || 0,\n y: y / deltaTime || 0\n };\n }\n\n /**\n * get the direction between two points\n * @param {Number} x\n * @param {Number} y\n * @return {Number} direction\n */\n function getDirection(x, y) {\n if (x === y) {\n return DIRECTION_NONE;\n }\n if (abs(x) >= abs(y)) {\n return x < 0 ? DIRECTION_LEFT : DIRECTION_RIGHT;\n }\n return y < 0 ? DIRECTION_UP : DIRECTION_DOWN;\n }\n\n /**\n * calculate the absolute distance between two points\n * @param {Object} p1 {x, y}\n * @param {Object} p2 {x, y}\n * @param {Array} [props] containing x and y keys\n * @return {Number} distance\n */\n function getDistance(p1, p2, props) {\n if (!props) {\n props = PROPS_XY;\n }\n var x = p2[props[0]] - p1[props[0]],\n y = p2[props[1]] - p1[props[1]];\n return Math.sqrt(x * x + y * y);\n }\n\n /**\n * calculate the angle between two coordinates\n * @param {Object} p1\n * @param {Object} p2\n * @param {Array} [props] containing x and y keys\n * @return {Number} angle\n */\n function getAngle(p1, p2, props) {\n if (!props) {\n props = PROPS_XY;\n }\n var x = p2[props[0]] - p1[props[0]],\n y = p2[props[1]] - p1[props[1]];\n return Math.atan2(y, x) * 180 / Math.PI;\n }\n\n /**\n * calculate the rotation degrees between two pointersets\n * @param {Array} start array of pointers\n * @param {Array} end array of pointers\n * @return {Number} rotation\n */\n function getRotation(start, end) {\n return getAngle(end[1], end[0], PROPS_CLIENT_XY) + getAngle(start[1], start[0], PROPS_CLIENT_XY);\n }\n\n /**\n * calculate the scale factor between two pointersets\n * no scale is 1, and goes down to 0 when pinched together, and bigger when pinched out\n * @param {Array} start array of pointers\n * @param {Array} end array of pointers\n * @return {Number} scale\n */\n function getScale(start, end) {\n return getDistance(end[0], end[1], PROPS_CLIENT_XY) / getDistance(start[0], start[1], PROPS_CLIENT_XY);\n }\n var MOUSE_INPUT_MAP = {\n mousedown: INPUT_START,\n mousemove: INPUT_MOVE,\n mouseup: INPUT_END\n };\n var MOUSE_ELEMENT_EVENTS = 'mousedown';\n var MOUSE_WINDOW_EVENTS = 'mousemove mouseup';\n\n /**\n * Mouse events input\n * @constructor\n * @extends Input\n */\n function MouseInput() {\n this.evEl = MOUSE_ELEMENT_EVENTS;\n this.evWin = MOUSE_WINDOW_EVENTS;\n this.pressed = false; // mousedown state\n\n Input.apply(this, arguments);\n }\n inherit(MouseInput, Input, {\n /**\n * handle mouse events\n * @param {Object} ev\n */\n handler: function MEhandler(ev) {\n var eventType = MOUSE_INPUT_MAP[ev.type];\n\n // on start we want to have the left mouse button down\n if (eventType & INPUT_START && ev.button === 0) {\n this.pressed = true;\n }\n if (eventType & INPUT_MOVE && ev.which !== 1) {\n eventType = INPUT_END;\n }\n\n // mouse must be down\n if (!this.pressed) {\n return;\n }\n if (eventType & INPUT_END) {\n this.pressed = false;\n }\n this.callback(this.manager, eventType, {\n pointers: [ev],\n changedPointers: [ev],\n pointerType: INPUT_TYPE_MOUSE,\n srcEvent: ev\n });\n }\n });\n var POINTER_INPUT_MAP = {\n pointerdown: INPUT_START,\n pointermove: INPUT_MOVE,\n pointerup: INPUT_END,\n pointercancel: INPUT_CANCEL,\n pointerout: INPUT_CANCEL\n };\n\n // in IE10 the pointer types is defined as an enum\n var IE10_POINTER_TYPE_ENUM = {\n 2: INPUT_TYPE_TOUCH,\n 3: INPUT_TYPE_PEN,\n 4: INPUT_TYPE_MOUSE,\n 5: INPUT_TYPE_KINECT // see https://twitter.com/jacobrossi/status/480596438489890816\n };\n var POINTER_ELEMENT_EVENTS = 'pointerdown';\n var POINTER_WINDOW_EVENTS = 'pointermove pointerup pointercancel';\n\n // IE10 has prefixed support, and case-sensitive\n if (window.MSPointerEvent && !window.PointerEvent) {\n POINTER_ELEMENT_EVENTS = 'MSPointerDown';\n POINTER_WINDOW_EVENTS = 'MSPointerMove MSPointerUp MSPointerCancel';\n }\n\n /**\n * Pointer events input\n * @constructor\n * @extends Input\n */\n function PointerEventInput() {\n this.evEl = POINTER_ELEMENT_EVENTS;\n this.evWin = POINTER_WINDOW_EVENTS;\n Input.apply(this, arguments);\n this.store = this.manager.session.pointerEvents = [];\n }\n inherit(PointerEventInput, Input, {\n /**\n * handle mouse events\n * @param {Object} ev\n */\n handler: function PEhandler(ev) {\n var store = this.store;\n var removePointer = false;\n var eventTypeNormalized = ev.type.toLowerCase().replace('ms', '');\n var eventType = POINTER_INPUT_MAP[eventTypeNormalized];\n var pointerType = IE10_POINTER_TYPE_ENUM[ev.pointerType] || ev.pointerType;\n var isTouch = pointerType == INPUT_TYPE_TOUCH;\n\n // get index of the event in the store\n var storeIndex = inArray(store, ev.pointerId, 'pointerId');\n\n // start and mouse must be down\n if (eventType & INPUT_START && (ev.button === 0 || isTouch)) {\n if (storeIndex < 0) {\n store.push(ev);\n storeIndex = store.length - 1;\n }\n } else if (eventType & (INPUT_END | INPUT_CANCEL)) {\n removePointer = true;\n }\n\n // it not found, so the pointer hasn't been down (so it's probably a hover)\n if (storeIndex < 0) {\n return;\n }\n\n // update the event in the store\n store[storeIndex] = ev;\n this.callback(this.manager, eventType, {\n pointers: store,\n changedPointers: [ev],\n pointerType: pointerType,\n srcEvent: ev\n });\n if (removePointer) {\n // remove from the store\n store.splice(storeIndex, 1);\n }\n }\n });\n var SINGLE_TOUCH_INPUT_MAP = {\n touchstart: INPUT_START,\n touchmove: INPUT_MOVE,\n touchend: INPUT_END,\n touchcancel: INPUT_CANCEL\n };\n var SINGLE_TOUCH_TARGET_EVENTS = 'touchstart';\n var SINGLE_TOUCH_WINDOW_EVENTS = 'touchstart touchmove touchend touchcancel';\n\n /**\n * Touch events input\n * @constructor\n * @extends Input\n */\n function SingleTouchInput() {\n this.evTarget = SINGLE_TOUCH_TARGET_EVENTS;\n this.evWin = SINGLE_TOUCH_WINDOW_EVENTS;\n this.started = false;\n Input.apply(this, arguments);\n }\n inherit(SingleTouchInput, Input, {\n handler: function TEhandler(ev) {\n var type = SINGLE_TOUCH_INPUT_MAP[ev.type];\n\n // should we handle the touch events?\n if (type === INPUT_START) {\n this.started = true;\n }\n if (!this.started) {\n return;\n }\n var touches = normalizeSingleTouches.call(this, ev, type);\n\n // when done, reset the started state\n if (type & (INPUT_END | INPUT_CANCEL) && touches[0].length - touches[1].length === 0) {\n this.started = false;\n }\n this.callback(this.manager, type, {\n pointers: touches[0],\n changedPointers: touches[1],\n pointerType: INPUT_TYPE_TOUCH,\n srcEvent: ev\n });\n }\n });\n\n /**\n * @this {TouchInput}\n * @param {Object} ev\n * @param {Number} type flag\n * @returns {undefined|Array} [all, changed]\n */\n function normalizeSingleTouches(ev, type) {\n var all = toArray(ev.touches);\n var changed = toArray(ev.changedTouches);\n if (type & (INPUT_END | INPUT_CANCEL)) {\n all = uniqueArray(all.concat(changed), 'identifier', true);\n }\n return [all, changed];\n }\n var TOUCH_INPUT_MAP = {\n touchstart: INPUT_START,\n touchmove: INPUT_MOVE,\n touchend: INPUT_END,\n touchcancel: INPUT_CANCEL\n };\n var TOUCH_TARGET_EVENTS = 'touchstart touchmove touchend touchcancel';\n\n /**\n * Multi-user touch events input\n * @constructor\n * @extends Input\n */\n function TouchInput() {\n this.evTarget = TOUCH_TARGET_EVENTS;\n this.targetIds = {};\n Input.apply(this, arguments);\n }\n inherit(TouchInput, Input, {\n handler: function MTEhandler(ev) {\n var type = TOUCH_INPUT_MAP[ev.type];\n var touches = getTouches.call(this, ev, type);\n if (!touches) {\n return;\n }\n this.callback(this.manager, type, {\n pointers: touches[0],\n changedPointers: touches[1],\n pointerType: INPUT_TYPE_TOUCH,\n srcEvent: ev\n });\n }\n });\n\n /**\n * @this {TouchInput}\n * @param {Object} ev\n * @param {Number} type flag\n * @returns {undefined|Array} [all, changed]\n */\n function getTouches(ev, type) {\n var allTouches = toArray(ev.touches);\n var targetIds = this.targetIds;\n\n // when there is only one touch, the process can be simplified\n if (type & (INPUT_START | INPUT_MOVE) && allTouches.length === 1) {\n targetIds[allTouches[0].identifier] = true;\n return [allTouches, allTouches];\n }\n var i,\n targetTouches,\n changedTouches = toArray(ev.changedTouches),\n changedTargetTouches = [],\n target = this.target;\n\n // get target touches from touches\n targetTouches = allTouches.filter(function (touch) {\n return hasParent(touch.target, target);\n });\n\n // collect touches\n if (type === INPUT_START) {\n i = 0;\n while (i < targetTouches.length) {\n targetIds[targetTouches[i].identifier] = true;\n i++;\n }\n }\n\n // filter changed touches to only contain touches that exist in the collected target ids\n i = 0;\n while (i < changedTouches.length) {\n if (targetIds[changedTouches[i].identifier]) {\n changedTargetTouches.push(changedTouches[i]);\n }\n\n // cleanup removed touches\n if (type & (INPUT_END | INPUT_CANCEL)) {\n delete targetIds[changedTouches[i].identifier];\n }\n i++;\n }\n if (!changedTargetTouches.length) {\n return;\n }\n return [\n // merge targetTouches with changedTargetTouches so it contains ALL touches, including 'end' and 'cancel'\n uniqueArray(targetTouches.concat(changedTargetTouches), 'identifier', true), changedTargetTouches];\n }\n\n /**\n * Combined touch and mouse input\n *\n * Touch has a higher priority then mouse, and while touching no mouse events are allowed.\n * This because touch devices also emit mouse events while doing a touch.\n *\n * @constructor\n * @extends Input\n */\n\n var DEDUP_TIMEOUT = 2500;\n var DEDUP_DISTANCE = 25;\n function TouchMouseInput() {\n Input.apply(this, arguments);\n var handler = bindFn(this.handler, this);\n this.touch = new TouchInput(this.manager, handler);\n this.mouse = new MouseInput(this.manager, handler);\n this.primaryTouch = null;\n this.lastTouches = [];\n }\n inherit(TouchMouseInput, Input, {\n /**\n * handle mouse and touch events\n * @param {Hammer} manager\n * @param {String} inputEvent\n * @param {Object} inputData\n */\n handler: function TMEhandler(manager, inputEvent, inputData) {\n var isTouch = inputData.pointerType == INPUT_TYPE_TOUCH,\n isMouse = inputData.pointerType == INPUT_TYPE_MOUSE;\n if (isMouse && inputData.sourceCapabilities && inputData.sourceCapabilities.firesTouchEvents) {\n return;\n }\n\n // when we're in a touch event, record touches to de-dupe synthetic mouse event\n if (isTouch) {\n recordTouches.call(this, inputEvent, inputData);\n } else if (isMouse && isSyntheticEvent.call(this, inputData)) {\n return;\n }\n this.callback(manager, inputEvent, inputData);\n },\n /**\n * remove the event listeners\n */\n destroy: function destroy() {\n this.touch.destroy();\n this.mouse.destroy();\n }\n });\n function recordTouches(eventType, eventData) {\n if (eventType & INPUT_START) {\n this.primaryTouch = eventData.changedPointers[0].identifier;\n setLastTouch.call(this, eventData);\n } else if (eventType & (INPUT_END | INPUT_CANCEL)) {\n setLastTouch.call(this, eventData);\n }\n }\n function setLastTouch(eventData) {\n var touch = eventData.changedPointers[0];\n if (touch.identifier === this.primaryTouch) {\n var lastTouch = {\n x: touch.clientX,\n y: touch.clientY\n };\n this.lastTouches.push(lastTouch);\n var lts = this.lastTouches;\n var removeLastTouch = function () {\n var i = lts.indexOf(lastTouch);\n if (i > -1) {\n lts.splice(i, 1);\n }\n };\n setTimeout(removeLastTouch, DEDUP_TIMEOUT);\n }\n }\n function isSyntheticEvent(eventData) {\n var x = eventData.srcEvent.clientX,\n y = eventData.srcEvent.clientY;\n for (var i = 0; i < this.lastTouches.length; i++) {\n var t = this.lastTouches[i];\n var dx = Math.abs(x - t.x),\n dy = Math.abs(y - t.y);\n if (dx <= DEDUP_DISTANCE && dy <= DEDUP_DISTANCE) {\n return true;\n }\n }\n return false;\n }\n var PREFIXED_TOUCH_ACTION = prefixed(TEST_ELEMENT.style, 'touchAction');\n var NATIVE_TOUCH_ACTION = PREFIXED_TOUCH_ACTION !== undefined;\n\n // magical touchAction value\n var TOUCH_ACTION_COMPUTE = 'compute';\n var TOUCH_ACTION_AUTO = 'auto';\n var TOUCH_ACTION_MANIPULATION = 'manipulation'; // not implemented\n var TOUCH_ACTION_NONE = 'none';\n var TOUCH_ACTION_PAN_X = 'pan-x';\n var TOUCH_ACTION_PAN_Y = 'pan-y';\n var TOUCH_ACTION_MAP = getTouchActionProps();\n\n /**\n * Touch Action\n * sets the touchAction property or uses the js alternative\n * @param {Manager} manager\n * @param {String} value\n * @constructor\n */\n function TouchAction(manager, value) {\n this.manager = manager;\n this.set(value);\n }\n TouchAction.prototype = {\n /**\n * set the touchAction value on the element or enable the polyfill\n * @param {String} value\n */\n set: function (value) {\n // find out the touch-action by the event handlers\n if (value == TOUCH_ACTION_COMPUTE) {\n value = this.compute();\n }\n if (NATIVE_TOUCH_ACTION && this.manager.element.style && TOUCH_ACTION_MAP[value]) {\n this.manager.element.style[PREFIXED_TOUCH_ACTION] = value;\n }\n this.actions = value.toLowerCase().trim();\n },\n /**\n * just re-set the touchAction value\n */\n update: function () {\n this.set(this.manager.options.touchAction);\n },\n /**\n * compute the value for the touchAction property based on the recognizer's settings\n * @returns {String} value\n */\n compute: function () {\n var actions = [];\n each(this.manager.recognizers, function (recognizer) {\n if (boolOrFn(recognizer.options.enable, [recognizer])) {\n actions = actions.concat(recognizer.getTouchAction());\n }\n });\n return cleanTouchActions(actions.join(' '));\n },\n /**\n * this method is called on each input cycle and provides the preventing of the browser behavior\n * @param {Object} input\n */\n preventDefaults: function (input) {\n var srcEvent = input.srcEvent;\n var direction = input.offsetDirection;\n\n // if the touch action did prevented once this session\n if (this.manager.session.prevented) {\n srcEvent.preventDefault();\n return;\n }\n var actions = this.actions;\n var hasNone = inStr(actions, TOUCH_ACTION_NONE) && !TOUCH_ACTION_MAP[TOUCH_ACTION_NONE];\n var hasPanY = inStr(actions, TOUCH_ACTION_PAN_Y) && !TOUCH_ACTION_MAP[TOUCH_ACTION_PAN_Y];\n var hasPanX = inStr(actions, TOUCH_ACTION_PAN_X) && !TOUCH_ACTION_MAP[TOUCH_ACTION_PAN_X];\n if (hasNone) {\n //do not prevent defaults if this is a tap gesture\n\n var isTapPointer = input.pointers.length === 1;\n var isTapMovement = input.distance < 2;\n var isTapTouchTime = input.deltaTime < 250;\n if (isTapPointer && isTapMovement && isTapTouchTime) {\n return;\n }\n }\n if (hasPanX && hasPanY) {\n // `pan-x pan-y` means browser handles all scrolling/panning, do not prevent\n return;\n }\n if (hasNone || hasPanY && direction & DIRECTION_HORIZONTAL || hasPanX && direction & DIRECTION_VERTICAL) {\n return this.preventSrc(srcEvent);\n }\n },\n /**\n * call preventDefault to prevent the browser's default behavior (scrolling in most cases)\n * @param {Object} srcEvent\n */\n preventSrc: function (srcEvent) {\n this.manager.session.prevented = true;\n srcEvent.preventDefault();\n }\n };\n\n /**\n * when the touchActions are collected they are not a valid value, so we need to clean things up. *\n * @param {String} actions\n * @returns {*}\n */\n function cleanTouchActions(actions) {\n // none\n if (inStr(actions, TOUCH_ACTION_NONE)) {\n return TOUCH_ACTION_NONE;\n }\n var hasPanX = inStr(actions, TOUCH_ACTION_PAN_X);\n var hasPanY = inStr(actions, TOUCH_ACTION_PAN_Y);\n\n // if both pan-x and pan-y are set (different recognizers\n // for different directions, e.g. horizontal pan but vertical swipe?)\n // we need none (as otherwise with pan-x pan-y combined none of these\n // recognizers will work, since the browser would handle all panning\n if (hasPanX && hasPanY) {\n return TOUCH_ACTION_NONE;\n }\n\n // pan-x OR pan-y\n if (hasPanX || hasPanY) {\n return hasPanX ? TOUCH_ACTION_PAN_X : TOUCH_ACTION_PAN_Y;\n }\n\n // manipulation\n if (inStr(actions, TOUCH_ACTION_MANIPULATION)) {\n return TOUCH_ACTION_MANIPULATION;\n }\n return TOUCH_ACTION_AUTO;\n }\n function getTouchActionProps() {\n if (!NATIVE_TOUCH_ACTION) {\n return false;\n }\n var touchMap = {};\n var cssSupports = window.CSS && window.CSS.supports;\n ['auto', 'manipulation', 'pan-y', 'pan-x', 'pan-x pan-y', 'none'].forEach(function (val) {\n // If css.supports is not supported but there is native touch-action assume it supports\n // all values. This is the case for IE 10 and 11.\n touchMap[val] = cssSupports ? window.CSS.supports('touch-action', val) : true;\n });\n return touchMap;\n }\n\n /**\n * Recognizer flow explained; *\n * All recognizers have the initial state of POSSIBLE when a input session starts.\n * The definition of a input session is from the first input until the last input, with all it's movement in it. *\n * Example session for mouse-input: mousedown -> mousemove -> mouseup\n *\n * On each recognizing cycle (see Manager.recognize) the .recognize() method is executed\n * which determines with state it should be.\n *\n * If the recognizer has the state FAILED, CANCELLED or RECOGNIZED (equals ENDED), it is reset to\n * POSSIBLE to give it another change on the next cycle.\n *\n * Possible\n * |\n * +-----+---------------+\n * | |\n * +-----+-----+ |\n * | | |\n * Failed Cancelled |\n * +-------+------+\n * | |\n * Recognized Began\n * |\n * Changed\n * |\n * Ended/Recognized\n */\n var STATE_POSSIBLE = 1;\n var STATE_BEGAN = 2;\n var STATE_CHANGED = 4;\n var STATE_ENDED = 8;\n var STATE_RECOGNIZED = STATE_ENDED;\n var STATE_CANCELLED = 16;\n var STATE_FAILED = 32;\n\n /**\n * Recognizer\n * Every recognizer needs to extend from this class.\n * @constructor\n * @param {Object} options\n */\n function Recognizer(options) {\n this.options = assign({}, this.defaults, options || {});\n this.id = uniqueId();\n this.manager = null;\n\n // default is enable true\n this.options.enable = ifUndefined(this.options.enable, true);\n this.state = STATE_POSSIBLE;\n this.simultaneous = {};\n this.requireFail = [];\n }\n Recognizer.prototype = {\n /**\n * @virtual\n * @type {Object}\n */\n defaults: {},\n /**\n * set options\n * @param {Object} options\n * @return {Recognizer}\n */\n set: function (options) {\n assign(this.options, options);\n\n // also update the touchAction, in case something changed about the directions/enabled state\n this.manager && this.manager.touchAction.update();\n return this;\n },\n /**\n * recognize simultaneous with an other recognizer.\n * @param {Recognizer} otherRecognizer\n * @returns {Recognizer} this\n */\n recognizeWith: function (otherRecognizer) {\n if (invokeArrayArg(otherRecognizer, 'recognizeWith', this)) {\n return this;\n }\n var simultaneous = this.simultaneous;\n otherRecognizer = getRecognizerByNameIfManager(otherRecognizer, this);\n if (!simultaneous[otherRecognizer.id]) {\n simultaneous[otherRecognizer.id] = otherRecognizer;\n otherRecognizer.recognizeWith(this);\n }\n return this;\n },\n /**\n * drop the simultaneous link. it doesnt remove the link on the other recognizer.\n * @param {Recognizer} otherRecognizer\n * @returns {Recognizer} this\n */\n dropRecognizeWith: function (otherRecognizer) {\n if (invokeArrayArg(otherRecognizer, 'dropRecognizeWith', this)) {\n return this;\n }\n otherRecognizer = getRecognizerByNameIfManager(otherRecognizer, this);\n delete this.simultaneous[otherRecognizer.id];\n return this;\n },\n /**\n * recognizer can only run when an other is failing\n * @param {Recognizer} otherRecognizer\n * @returns {Recognizer} this\n */\n requireFailure: function (otherRecognizer) {\n if (invokeArrayArg(otherRecognizer, 'requireFailure', this)) {\n return this;\n }\n var requireFail = this.requireFail;\n otherRecognizer = getRecognizerByNameIfManager(otherRecognizer, this);\n if (inArray(requireFail, otherRecognizer) === -1) {\n requireFail.push(otherRecognizer);\n otherRecognizer.requireFailure(this);\n }\n return this;\n },\n /**\n * drop the requireFailure link. it does not remove the link on the other recognizer.\n * @param {Recognizer} otherRecognizer\n * @returns {Recognizer} this\n */\n dropRequireFailure: function (otherRecognizer) {\n if (invokeArrayArg(otherRecognizer, 'dropRequireFailure', this)) {\n return this;\n }\n otherRecognizer = getRecognizerByNameIfManager(otherRecognizer, this);\n var index = inArray(this.requireFail, otherRecognizer);\n if (index > -1) {\n this.requireFail.splice(index, 1);\n }\n return this;\n },\n /**\n * has require failures boolean\n * @returns {boolean}\n */\n hasRequireFailures: function () {\n return this.requireFail.length > 0;\n },\n /**\n * if the recognizer can recognize simultaneous with an other recognizer\n * @param {Recognizer} otherRecognizer\n * @returns {Boolean}\n */\n canRecognizeWith: function (otherRecognizer) {\n return !!this.simultaneous[otherRecognizer.id];\n },\n /**\n * You should use `tryEmit` instead of `emit` directly to check\n * that all the needed recognizers has failed before emitting.\n * @param {Object} input\n */\n emit: function (input) {\n var self = this;\n var state = this.state;\n function emit(event) {\n self.manager.emit(event, input);\n }\n\n // 'panstart' and 'panmove'\n if (state < STATE_ENDED) {\n emit(self.options.event + stateStr(state));\n }\n emit(self.options.event); // simple 'eventName' events\n\n if (input.additionalEvent) {\n // additional event(panleft, panright, pinchin, pinchout...)\n emit(input.additionalEvent);\n }\n\n // panend and pancancel\n if (state >= STATE_ENDED) {\n emit(self.options.event + stateStr(state));\n }\n },\n /**\n * Check that all the require failure recognizers has failed,\n * if true, it emits a gesture event,\n * otherwise, setup the state to FAILED.\n * @param {Object} input\n */\n tryEmit: function (input) {\n if (this.canEmit()) {\n return this.emit(input);\n }\n // it's failing anyway\n this.state = STATE_FAILED;\n },\n /**\n * can we emit?\n * @returns {boolean}\n */\n canEmit: function () {\n var i = 0;\n while (i < this.requireFail.length) {\n if (!(this.requireFail[i].state & (STATE_FAILED | STATE_POSSIBLE))) {\n return false;\n }\n i++;\n }\n return true;\n },\n /**\n * update the recognizer\n * @param {Object} inputData\n */\n recognize: function (inputData) {\n // make a new copy of the inputData\n // so we can change the inputData without messing up the other recognizers\n var inputDataClone = assign({}, inputData);\n\n // is is enabled and allow recognizing?\n if (!boolOrFn(this.options.enable, [this, inputDataClone])) {\n this.reset();\n this.state = STATE_FAILED;\n return;\n }\n\n // reset when we've reached the end\n if (this.state & (STATE_RECOGNIZED | STATE_CANCELLED | STATE_FAILED)) {\n this.state = STATE_POSSIBLE;\n }\n this.state = this.process(inputDataClone);\n\n // the recognizer has recognized a gesture\n // so trigger an event\n if (this.state & (STATE_BEGAN | STATE_CHANGED | STATE_ENDED | STATE_CANCELLED)) {\n this.tryEmit(inputDataClone);\n }\n },\n /**\n * return the state of the recognizer\n * the actual recognizing happens in this method\n * @virtual\n * @param {Object} inputData\n * @returns {Const} STATE\n */\n process: function (inputData) {},\n // jshint ignore:line\n\n /**\n * return the preferred touch-action\n * @virtual\n * @returns {Array}\n */\n getTouchAction: function () {},\n /**\n * called when the gesture isn't allowed to recognize\n * like when another is being recognized or it is disabled\n * @virtual\n */\n reset: function () {}\n };\n\n /**\n * get a usable string, used as event postfix\n * @param {Const} state\n * @returns {String} state\n */\n function stateStr(state) {\n if (state & STATE_CANCELLED) {\n return 'cancel';\n } else if (state & STATE_ENDED) {\n return 'end';\n } else if (state & STATE_CHANGED) {\n return 'move';\n } else if (state & STATE_BEGAN) {\n return 'start';\n }\n return '';\n }\n\n /**\n * direction cons to string\n * @param {Const} direction\n * @returns {String}\n */\n function directionStr(direction) {\n if (direction == DIRECTION_DOWN) {\n return 'down';\n } else if (direction == DIRECTION_UP) {\n return 'up';\n } else if (direction == DIRECTION_LEFT) {\n return 'left';\n } else if (direction == DIRECTION_RIGHT) {\n return 'right';\n }\n return '';\n }\n\n /**\n * get a recognizer by name if it is bound to a manager\n * @param {Recognizer|String} otherRecognizer\n * @param {Recognizer} recognizer\n * @returns {Recognizer}\n */\n function getRecognizerByNameIfManager(otherRecognizer, recognizer) {\n var manager = recognizer.manager;\n if (manager) {\n return manager.get(otherRecognizer);\n }\n return otherRecognizer;\n }\n\n /**\n * This recognizer is just used as a base for the simple attribute recognizers.\n * @constructor\n * @extends Recognizer\n */\n function AttrRecognizer() {\n Recognizer.apply(this, arguments);\n }\n inherit(AttrRecognizer, Recognizer, {\n /**\n * @namespace\n * @memberof AttrRecognizer\n */\n defaults: {\n /**\n * @type {Number}\n * @default 1\n */\n pointers: 1\n },\n /**\n * Used to check if it the recognizer receives valid input, like input.distance > 10.\n * @memberof AttrRecognizer\n * @param {Object} input\n * @returns {Boolean} recognized\n */\n attrTest: function (input) {\n var optionPointers = this.options.pointers;\n return optionPointers === 0 || input.pointers.length === optionPointers;\n },\n /**\n * Process the input and return the state for the recognizer\n * @memberof AttrRecognizer\n * @param {Object} input\n * @returns {*} State\n */\n process: function (input) {\n var state = this.state;\n var eventType = input.eventType;\n var isRecognized = state & (STATE_BEGAN | STATE_CHANGED);\n var isValid = this.attrTest(input);\n\n // on cancel input and we've recognized before, return STATE_CANCELLED\n if (isRecognized && (eventType & INPUT_CANCEL || !isValid)) {\n return state | STATE_CANCELLED;\n } else if (isRecognized || isValid) {\n if (eventType & INPUT_END) {\n return state | STATE_ENDED;\n } else if (!(state & STATE_BEGAN)) {\n return STATE_BEGAN;\n }\n return state | STATE_CHANGED;\n }\n return STATE_FAILED;\n }\n });\n\n /**\n * Pan\n * Recognized when the pointer is down and moved in the allowed direction.\n * @constructor\n * @extends AttrRecognizer\n */\n function PanRecognizer() {\n AttrRecognizer.apply(this, arguments);\n this.pX = null;\n this.pY = null;\n }\n inherit(PanRecognizer, AttrRecognizer, {\n /**\n * @namespace\n * @memberof PanRecognizer\n */\n defaults: {\n event: 'pan',\n threshold: 10,\n pointers: 1,\n direction: DIRECTION_ALL\n },\n getTouchAction: function () {\n var direction = this.options.direction;\n var actions = [];\n if (direction & DIRECTION_HORIZONTAL) {\n actions.push(TOUCH_ACTION_PAN_Y);\n }\n if (direction & DIRECTION_VERTICAL) {\n actions.push(TOUCH_ACTION_PAN_X);\n }\n return actions;\n },\n directionTest: function (input) {\n var options = this.options;\n var hasMoved = true;\n var distance = input.distance;\n var direction = input.direction;\n var x = input.deltaX;\n var y = input.deltaY;\n\n // lock to axis?\n if (!(direction & options.direction)) {\n if (options.direction & DIRECTION_HORIZONTAL) {\n direction = x === 0 ? DIRECTION_NONE : x < 0 ? DIRECTION_LEFT : DIRECTION_RIGHT;\n hasMoved = x != this.pX;\n distance = Math.abs(input.deltaX);\n } else {\n direction = y === 0 ? DIRECTION_NONE : y < 0 ? DIRECTION_UP : DIRECTION_DOWN;\n hasMoved = y != this.pY;\n distance = Math.abs(input.deltaY);\n }\n }\n input.direction = direction;\n return hasMoved && distance > options.threshold && direction & options.direction;\n },\n attrTest: function (input) {\n return AttrRecognizer.prototype.attrTest.call(this, input) && (this.state & STATE_BEGAN || !(this.state & STATE_BEGAN) && this.directionTest(input));\n },\n emit: function (input) {\n this.pX = input.deltaX;\n this.pY = input.deltaY;\n var direction = directionStr(input.direction);\n if (direction) {\n input.additionalEvent = this.options.event + direction;\n }\n this._super.emit.call(this, input);\n }\n });\n\n /**\n * Pinch\n * Recognized when two or more pointers are moving toward (zoom-in) or away from each other (zoom-out).\n * @constructor\n * @extends AttrRecognizer\n */\n function PinchRecognizer() {\n AttrRecognizer.apply(this, arguments);\n }\n inherit(PinchRecognizer, AttrRecognizer, {\n /**\n * @namespace\n * @memberof PinchRecognizer\n */\n defaults: {\n event: 'pinch',\n threshold: 0,\n pointers: 2\n },\n getTouchAction: function () {\n return [TOUCH_ACTION_NONE];\n },\n attrTest: function (input) {\n return this._super.attrTest.call(this, input) && (Math.abs(input.scale - 1) > this.options.threshold || this.state & STATE_BEGAN);\n },\n emit: function (input) {\n if (input.scale !== 1) {\n var inOut = input.scale < 1 ? 'in' : 'out';\n input.additionalEvent = this.options.event + inOut;\n }\n this._super.emit.call(this, input);\n }\n });\n\n /**\n * Press\n * Recognized when the pointer is down for x ms without any movement.\n * @constructor\n * @extends Recognizer\n */\n function PressRecognizer() {\n Recognizer.apply(this, arguments);\n this._timer = null;\n this._input = null;\n }\n inherit(PressRecognizer, Recognizer, {\n /**\n * @namespace\n * @memberof PressRecognizer\n */\n defaults: {\n event: 'press',\n pointers: 1,\n time: 251,\n // minimal time of the pointer to be pressed\n threshold: 9 // a minimal movement is ok, but keep it low\n },\n getTouchAction: function () {\n return [TOUCH_ACTION_AUTO];\n },\n process: function (input) {\n var options = this.options;\n var validPointers = input.pointers.length === options.pointers;\n var validMovement = input.distance < options.threshold;\n var validTime = input.deltaTime > options.time;\n this._input = input;\n\n // we only allow little movement\n // and we've reached an end event, so a tap is possible\n if (!validMovement || !validPointers || input.eventType & (INPUT_END | INPUT_CANCEL) && !validTime) {\n this.reset();\n } else if (input.eventType & INPUT_START) {\n this.reset();\n this._timer = setTimeoutContext(function () {\n this.state = STATE_RECOGNIZED;\n this.tryEmit();\n }, options.time, this);\n } else if (input.eventType & INPUT_END) {\n return STATE_RECOGNIZED;\n }\n return STATE_FAILED;\n },\n reset: function () {\n clearTimeout(this._timer);\n },\n emit: function (input) {\n if (this.state !== STATE_RECOGNIZED) {\n return;\n }\n if (input && input.eventType & INPUT_END) {\n this.manager.emit(this.options.event + 'up', input);\n } else {\n this._input.timeStamp = now();\n this.manager.emit(this.options.event, this._input);\n }\n }\n });\n\n /**\n * Rotate\n * Recognized when two or more pointer are moving in a circular motion.\n * @constructor\n * @extends AttrRecognizer\n */\n function RotateRecognizer() {\n AttrRecognizer.apply(this, arguments);\n }\n inherit(RotateRecognizer, AttrRecognizer, {\n /**\n * @namespace\n * @memberof RotateRecognizer\n */\n defaults: {\n event: 'rotate',\n threshold: 0,\n pointers: 2\n },\n getTouchAction: function () {\n return [TOUCH_ACTION_NONE];\n },\n attrTest: function (input) {\n return this._super.attrTest.call(this, input) && (Math.abs(input.rotation) > this.options.threshold || this.state & STATE_BEGAN);\n }\n });\n\n /**\n * Swipe\n * Recognized when the pointer is moving fast (velocity), with enough distance in the allowed direction.\n * @constructor\n * @extends AttrRecognizer\n */\n function SwipeRecognizer() {\n AttrRecognizer.apply(this, arguments);\n }\n inherit(SwipeRecognizer, AttrRecognizer, {\n /**\n * @namespace\n * @memberof SwipeRecognizer\n */\n defaults: {\n event: 'swipe',\n threshold: 10,\n velocity: 0.3,\n direction: DIRECTION_HORIZONTAL | DIRECTION_VERTICAL,\n pointers: 1\n },\n getTouchAction: function () {\n return PanRecognizer.prototype.getTouchAction.call(this);\n },\n attrTest: function (input) {\n var direction = this.options.direction;\n var velocity;\n if (direction & (DIRECTION_HORIZONTAL | DIRECTION_VERTICAL)) {\n velocity = input.overallVelocity;\n } else if (direction & DIRECTION_HORIZONTAL) {\n velocity = input.overallVelocityX;\n } else if (direction & DIRECTION_VERTICAL) {\n velocity = input.overallVelocityY;\n }\n return this._super.attrTest.call(this, input) && direction & input.offsetDirection && input.distance > this.options.threshold && input.maxPointers == this.options.pointers && abs(velocity) > this.options.velocity && input.eventType & INPUT_END;\n },\n emit: function (input) {\n var direction = directionStr(input.offsetDirection);\n if (direction) {\n this.manager.emit(this.options.event + direction, input);\n }\n this.manager.emit(this.options.event, input);\n }\n });\n\n /**\n * A tap is ecognized when the pointer is doing a small tap/click. Multiple taps are recognized if they occur\n * between the given interval and position. The delay option can be used to recognize multi-taps without firing\n * a single tap.\n *\n * The eventData from the emitted event contains the property `tapCount`, which contains the amount of\n * multi-taps being recognized.\n * @constructor\n * @extends Recognizer\n */\n function TapRecognizer() {\n Recognizer.apply(this, arguments);\n\n // previous time and center,\n // used for tap counting\n this.pTime = false;\n this.pCenter = false;\n this._timer = null;\n this._input = null;\n this.count = 0;\n }\n inherit(TapRecognizer, Recognizer, {\n /**\n * @namespace\n * @memberof PinchRecognizer\n */\n defaults: {\n event: 'tap',\n pointers: 1,\n taps: 1,\n interval: 300,\n // max time between the multi-tap taps\n time: 250,\n // max time of the pointer to be down (like finger on the screen)\n threshold: 9,\n // a minimal movement is ok, but keep it low\n posThreshold: 10 // a multi-tap can be a bit off the initial position\n },\n getTouchAction: function () {\n return [TOUCH_ACTION_MANIPULATION];\n },\n process: function (input) {\n var options = this.options;\n var validPointers = input.pointers.length === options.pointers;\n var validMovement = input.distance < options.threshold;\n var validTouchTime = input.deltaTime < options.time;\n this.reset();\n if (input.eventType & INPUT_START && this.count === 0) {\n return this.failTimeout();\n }\n\n // we only allow little movement\n // and we've reached an end event, so a tap is possible\n if (validMovement && validTouchTime && validPointers) {\n if (input.eventType != INPUT_END) {\n return this.failTimeout();\n }\n var validInterval = this.pTime ? input.timeStamp - this.pTime < options.interval : true;\n var validMultiTap = !this.pCenter || getDistance(this.pCenter, input.center) < options.posThreshold;\n this.pTime = input.timeStamp;\n this.pCenter = input.center;\n if (!validMultiTap || !validInterval) {\n this.count = 1;\n } else {\n this.count += 1;\n }\n this._input = input;\n\n // if tap count matches we have recognized it,\n // else it has began recognizing...\n var tapCount = this.count % options.taps;\n if (tapCount === 0) {\n // no failing requirements, immediately trigger the tap event\n // or wait as long as the multitap interval to trigger\n if (!this.hasRequireFailures()) {\n return STATE_RECOGNIZED;\n } else {\n this._timer = setTimeoutContext(function () {\n this.state = STATE_RECOGNIZED;\n this.tryEmit();\n }, options.interval, this);\n return STATE_BEGAN;\n }\n }\n }\n return STATE_FAILED;\n },\n failTimeout: function () {\n this._timer = setTimeoutContext(function () {\n this.state = STATE_FAILED;\n }, this.options.interval, this);\n return STATE_FAILED;\n },\n reset: function () {\n clearTimeout(this._timer);\n },\n emit: function () {\n if (this.state == STATE_RECOGNIZED) {\n this._input.tapCount = this.count;\n this.manager.emit(this.options.event, this._input);\n }\n }\n });\n\n /**\n * Simple way to create a manager with a default set of recognizers.\n * @param {HTMLElement} element\n * @param {Object} [options]\n * @constructor\n */\n function Hammer(element, options) {\n options = options || {};\n options.recognizers = ifUndefined(options.recognizers, Hammer.defaults.preset);\n return new Manager(element, options);\n }\n\n /**\n * @const {string}\n */\n Hammer.VERSION = '2.0.7';\n\n /**\n * default settings\n * @namespace\n */\n Hammer.defaults = {\n /**\n * set if DOM events are being triggered.\n * But this is slower and unused by simple implementations, so disabled by default.\n * @type {Boolean}\n * @default false\n */\n domEvents: false,\n /**\n * The value for the touchAction property/fallback.\n * When set to `compute` it will magically set the correct value based on the added recognizers.\n * @type {String}\n * @default compute\n */\n touchAction: TOUCH_ACTION_COMPUTE,\n /**\n * @type {Boolean}\n * @default true\n */\n enable: true,\n /**\n * EXPERIMENTAL FEATURE -- can be removed/changed\n * Change the parent input target element.\n * If Null, then it is being set the to main element.\n * @type {Null|EventTarget}\n * @default null\n */\n inputTarget: null,\n /**\n * force an input class\n * @type {Null|Function}\n * @default null\n */\n inputClass: null,\n /**\n * Default recognizer setup when calling `Hammer()`\n * When creating a new Manager these will be skipped.\n * @type {Array}\n */\n preset: [\n // RecognizerClass, options, [recognizeWith, ...], [requireFailure, ...]\n [RotateRecognizer, {\n enable: false\n }], [PinchRecognizer, {\n enable: false\n }, ['rotate']], [SwipeRecognizer, {\n direction: DIRECTION_HORIZONTAL\n }], [PanRecognizer, {\n direction: DIRECTION_HORIZONTAL\n }, ['swipe']], [TapRecognizer], [TapRecognizer, {\n event: 'doubletap',\n taps: 2\n }, ['tap']], [PressRecognizer]],\n /**\n * Some CSS properties can be used to improve the working of Hammer.\n * Add them to this method and they will be set when creating a new Manager.\n * @namespace\n */\n cssProps: {\n /**\n * Disables text selection to improve the dragging gesture. Mainly for desktop browsers.\n * @type {String}\n * @default 'none'\n */\n userSelect: 'none',\n /**\n * Disable the Windows Phone grippers when pressing an element.\n * @type {String}\n * @default 'none'\n */\n touchSelect: 'none',\n /**\n * Disables the default callout shown when you touch and hold a touch target.\n * On iOS, when you touch and hold a touch target such as a link, Safari displays\n * a callout containing information about the link. This property allows you to disable that callout.\n * @type {String}\n * @default 'none'\n */\n touchCallout: 'none',\n /**\n * Specifies whether zooming is enabled. Used by IE10>\n * @type {String}\n * @default 'none'\n */\n contentZooming: 'none',\n /**\n * Specifies that an entire element should be draggable instead of its contents. Mainly for desktop browsers.\n * @type {String}\n * @default 'none'\n */\n userDrag: 'none',\n /**\n * Overrides the highlight color shown when the user taps a link or a JavaScript\n * clickable element in iOS. This property obeys the alpha value, if specified.\n * @type {String}\n * @default 'rgba(0,0,0,0)'\n */\n tapHighlightColor: 'rgba(0,0,0,0)'\n }\n };\n var STOP = 1;\n var FORCED_STOP = 2;\n\n /**\n * Manager\n * @param {HTMLElement} element\n * @param {Object} [options]\n * @constructor\n */\n function Manager(element, options) {\n this.options = assign({}, Hammer.defaults, options || {});\n this.options.inputTarget = this.options.inputTarget || element;\n this.handlers = {};\n this.session = {};\n this.recognizers = [];\n this.oldCssProps = {};\n this.element = element;\n this.input = createInputInstance(this);\n this.touchAction = new TouchAction(this, this.options.touchAction);\n toggleCssProps(this, true);\n each(this.options.recognizers, function (item) {\n var recognizer = this.add(new item[0](item[1]));\n item[2] && recognizer.recognizeWith(item[2]);\n item[3] && recognizer.requireFailure(item[3]);\n }, this);\n }\n Manager.prototype = {\n /**\n * set options\n * @param {Object} options\n * @returns {Manager}\n */\n set: function (options) {\n assign(this.options, options);\n\n // Options that need a little more setup\n if (options.touchAction) {\n this.touchAction.update();\n }\n if (options.inputTarget) {\n // Clean up existing event listeners and reinitialize\n this.input.destroy();\n this.input.target = options.inputTarget;\n this.input.init();\n }\n return this;\n },\n /**\n * stop recognizing for this session.\n * This session will be discarded, when a new [input]start event is fired.\n * When forced, the recognizer cycle is stopped immediately.\n * @param {Boolean} [force]\n */\n stop: function (force) {\n this.session.stopped = force ? FORCED_STOP : STOP;\n },\n /**\n * run the recognizers!\n * called by the inputHandler function on every movement of the pointers (touches)\n * it walks through all the recognizers and tries to detect the gesture that is being made\n * @param {Object} inputData\n */\n recognize: function (inputData) {\n var session = this.session;\n if (session.stopped) {\n return;\n }\n\n // run the touch-action polyfill\n this.touchAction.preventDefaults(inputData);\n var recognizer;\n var recognizers = this.recognizers;\n\n // this holds the recognizer that is being recognized.\n // so the recognizer's state needs to be BEGAN, CHANGED, ENDED or RECOGNIZED\n // if no recognizer is detecting a thing, it is set to `null`\n var curRecognizer = session.curRecognizer;\n\n // reset when the last recognizer is recognized\n // or when we're in a new session\n if (!curRecognizer || curRecognizer && curRecognizer.state & STATE_RECOGNIZED) {\n curRecognizer = session.curRecognizer = null;\n }\n var i = 0;\n while (i < recognizers.length) {\n recognizer = recognizers[i];\n\n // find out if we are allowed try to recognize the input for this one.\n // 1. allow if the session is NOT forced stopped (see the .stop() method)\n // 2. allow if we still haven't recognized a gesture in this session, or the this recognizer is the one\n // that is being recognized.\n // 3. allow if the recognizer is allowed to run simultaneous with the current recognized recognizer.\n // this can be setup with the `recognizeWith()` method on the recognizer.\n if (session.stopped !== FORCED_STOP && (\n // 1\n !curRecognizer || recognizer == curRecognizer ||\n // 2\n recognizer.canRecognizeWith(curRecognizer))) {\n // 3\n recognizer.recognize(inputData);\n } else {\n recognizer.reset();\n }\n\n // if the recognizer has been recognizing the input as a valid gesture, we want to store this one as the\n // current active recognizer. but only if we don't already have an active recognizer\n if (!curRecognizer && recognizer.state & (STATE_BEGAN | STATE_CHANGED | STATE_ENDED)) {\n curRecognizer = session.curRecognizer = recognizer;\n }\n i++;\n }\n },\n /**\n * get a recognizer by its event name.\n * @param {Recognizer|String} recognizer\n * @returns {Recognizer|Null}\n */\n get: function (recognizer) {\n if (recognizer instanceof Recognizer) {\n return recognizer;\n }\n var recognizers = this.recognizers;\n for (var i = 0; i < recognizers.length; i++) {\n if (recognizers[i].options.event == recognizer) {\n return recognizers[i];\n }\n }\n return null;\n },\n /**\n * add a recognizer to the manager\n * existing recognizers with the same event name will be removed\n * @param {Recognizer} recognizer\n * @returns {Recognizer|Manager}\n */\n add: function (recognizer) {\n if (invokeArrayArg(recognizer, 'add', this)) {\n return this;\n }\n\n // remove existing\n var existing = this.get(recognizer.options.event);\n if (existing) {\n this.remove(existing);\n }\n this.recognizers.push(recognizer);\n recognizer.manager = this;\n this.touchAction.update();\n return recognizer;\n },\n /**\n * remove a recognizer by name or instance\n * @param {Recognizer|String} recognizer\n * @returns {Manager}\n */\n remove: function (recognizer) {\n if (invokeArrayArg(recognizer, 'remove', this)) {\n return this;\n }\n recognizer = this.get(recognizer);\n\n // let's make sure this recognizer exists\n if (recognizer) {\n var recognizers = this.recognizers;\n var index = inArray(recognizers, recognizer);\n if (index !== -1) {\n recognizers.splice(index, 1);\n this.touchAction.update();\n }\n }\n return this;\n },\n /**\n * bind event\n * @param {String} events\n * @param {Function} handler\n * @returns {EventEmitter} this\n */\n on: function (events, handler) {\n if (events === undefined) {\n return;\n }\n if (handler === undefined) {\n return;\n }\n var handlers = this.handlers;\n each(splitStr(events), function (event) {\n handlers[event] = handlers[event] || [];\n handlers[event].push(handler);\n });\n return this;\n },\n /**\n * unbind event, leave emit blank to remove all handlers\n * @param {String} events\n * @param {Function} [handler]\n * @returns {EventEmitter} this\n */\n off: function (events, handler) {\n if (events === undefined) {\n return;\n }\n var handlers = this.handlers;\n each(splitStr(events), function (event) {\n if (!handler) {\n delete handlers[event];\n } else {\n handlers[event] && handlers[event].splice(inArray(handlers[event], handler), 1);\n }\n });\n return this;\n },\n /**\n * emit event to the listeners\n * @param {String} event\n * @param {Object} data\n */\n emit: function (event, data) {\n // we also want to trigger dom events\n if (this.options.domEvents) {\n triggerDomEvent(event, data);\n }\n\n // no handlers, so skip it all\n var handlers = this.handlers[event] && this.handlers[event].slice();\n if (!handlers || !handlers.length) {\n return;\n }\n data.type = event;\n data.preventDefault = function () {\n data.srcEvent.preventDefault();\n };\n var i = 0;\n while (i < handlers.length) {\n handlers[i](data);\n i++;\n }\n },\n /**\n * destroy the manager and unbinds all events\n * it doesn't unbind dom events, that is the user own responsibility\n */\n destroy: function () {\n this.element && toggleCssProps(this, false);\n this.handlers = {};\n this.session = {};\n this.input.destroy();\n this.element = null;\n }\n };\n\n /**\n * add/remove the css properties as defined in manager.options.cssProps\n * @param {Manager} manager\n * @param {Boolean} add\n */\n function toggleCssProps(manager, add) {\n var element = manager.element;\n if (!element.style) {\n return;\n }\n var prop;\n each(manager.options.cssProps, function (value, name) {\n prop = prefixed(element.style, name);\n if (add) {\n manager.oldCssProps[prop] = element.style[prop];\n element.style[prop] = value;\n } else {\n element.style[prop] = manager.oldCssProps[prop] || '';\n }\n });\n if (!add) {\n manager.oldCssProps = {};\n }\n }\n\n /**\n * trigger dom event\n * @param {String} event\n * @param {Object} data\n */\n function triggerDomEvent(event, data) {\n var gestureEvent = document.createEvent('Event');\n gestureEvent.initEvent(event, true, true);\n gestureEvent.gesture = data;\n data.target.dispatchEvent(gestureEvent);\n }\n assign(Hammer, {\n INPUT_START: INPUT_START,\n INPUT_MOVE: INPUT_MOVE,\n INPUT_END: INPUT_END,\n INPUT_CANCEL: INPUT_CANCEL,\n STATE_POSSIBLE: STATE_POSSIBLE,\n STATE_BEGAN: STATE_BEGAN,\n STATE_CHANGED: STATE_CHANGED,\n STATE_ENDED: STATE_ENDED,\n STATE_RECOGNIZED: STATE_RECOGNIZED,\n STATE_CANCELLED: STATE_CANCELLED,\n STATE_FAILED: STATE_FAILED,\n DIRECTION_NONE: DIRECTION_NONE,\n DIRECTION_LEFT: DIRECTION_LEFT,\n DIRECTION_RIGHT: DIRECTION_RIGHT,\n DIRECTION_UP: DIRECTION_UP,\n DIRECTION_DOWN: DIRECTION_DOWN,\n DIRECTION_HORIZONTAL: DIRECTION_HORIZONTAL,\n DIRECTION_VERTICAL: DIRECTION_VERTICAL,\n DIRECTION_ALL: DIRECTION_ALL,\n Manager: Manager,\n Input: Input,\n TouchAction: TouchAction,\n TouchInput: TouchInput,\n MouseInput: MouseInput,\n PointerEventInput: PointerEventInput,\n TouchMouseInput: TouchMouseInput,\n SingleTouchInput: SingleTouchInput,\n Recognizer: Recognizer,\n AttrRecognizer: AttrRecognizer,\n Tap: TapRecognizer,\n Pan: PanRecognizer,\n Swipe: SwipeRecognizer,\n Pinch: PinchRecognizer,\n Rotate: RotateRecognizer,\n Press: PressRecognizer,\n on: addEventListeners,\n off: removeEventListeners,\n each: each,\n merge: merge,\n extend: extend,\n assign: assign,\n inherit: inherit,\n bindFn: bindFn,\n prefixed: prefixed\n });\n\n // this prevents errors when Hammer is loaded in the presence of an AMD\n // style loader but by script tag, not by the loader.\n var freeGlobal = typeof window !== 'undefined' ? window : typeof self !== 'undefined' ? self : {}; // jshint ignore:line\n freeGlobal.Hammer = Hammer;\n if (typeof define === 'function' && define.amd) {\n define(function () {\n return Hammer;\n });\n } else if (typeof module != 'undefined' && module.exports) {\n module.exports = Hammer;\n } else {\n window[exportName] = Hammer;\n }\n})(window, document, 'Hammer');","document.addEventListener('DOMContentLoaded', init)\n\nfunction init() {\n [...document.querySelectorAll('[data-show-more-next-page]')].map(element => {\n onClickLoadMoreProducts(element)\n })\n}\n\nfunction onClickLoadMoreProducts(element) {\n displayLoadMoreButton()\n element.addEventListener('click', function (event) {\n event.preventDefault()\n loadMoreProducts(element)\n })\n}\n\nasync function loadMoreProducts(element) {\n // Find nearby element with data-show-more attribute where new items will be appended\n const gridElement = document.querySelector('[data-show-more]')\n\n // Convert element.dataset.nextPage to integer and add 1\n const loadMoreButton = element\n const nextPageNumber = parseInt(loadMoreButton.dataset.showMoreNextPage) + 1\n\n // Build URL with new page number page=${nextPageNumber}\n let nextPageUrl = new URL(window.location, window.location)\n let pageParam = element.dataset.showMoreParam || 'page'\n\n nextPageUrl.searchParams.set(pageParam, nextPageNumber)\n\n const response = await fetch(nextPageUrl, {headers: {'Accept': 'application/json'}})\n if (!response.ok) {\n console.error(response.statusText)\n return\n }\n const htmlContent = await response.text();\n\n gridElement.insertAdjacentHTML('beforeend', htmlContent)\n\n element.dataset.showMoreNextPage = nextPageNumber\n displayLoadMoreButton()\n}\n\nfunction displayLoadMoreButton() {\n const loadMoreButton = document.querySelector('[data-show-more-next-page]')\n\n if (loadMoreButton.dataset.showMoreTotalPages !== undefined && loadMoreButton.dataset.showMoreTotalPages !== '') {\n const currentPageNumber = parseInt(loadMoreButton.dataset.showMoreNextPage)\n const totalPages = parseInt(loadMoreButton.dataset.showMoreTotalPages)\n\n if (currentPageNumber >= totalPages) {\n loadMoreButton.classList.add('hidden', 'is-hidden')\n } else {\n loadMoreButton.classList.remove('hidden', 'is-hidden')\n }\n }\n}\n","document.addEventListener('DOMContentLoaded', init);\n\nfunction init() {\n [...document.querySelectorAll('a[data-search-nav-source]')].map(linkElement => {\n setupNavLink(linkElement);\n })\n}\n\nfunction setupNavLink(linkElement) {\n const source = linkElement.dataset.searchNavSource;\n const linkHref = linkElement.getAttribute('href');\n // add/replace ?source=... in the link href using URL lib\n const url = new URL(linkHref, window.location.origin);\n url.searchParams.set('source', source);\n linkElement.setAttribute('href', url.href);\n}\n","window.StoreConnectUI = window.StoreConnectUI || {};\n\nwindow.StoreConnectUI.Sort = function() {\n document.addEventListener('DOMContentLoaded', function() {\n const input = document.querySelector('form[data-filters] input[name=sort]');\n\n if (input) {\n document.querySelector('[data-sort] input[name=sort][value=' + input.value + ']').setAttribute('checked', true);\n }\n });\n\n return {\n update: id => {\n document.querySelector('form[data-filters] input[name=sort]').value = id;\n document.querySelector('form[data-filters]').submit();\n }\n }\n}();\n","$(function() {\n // TODO: Remove implementation\n\n function toggleActiveState () {\n var target = $(this).data('jsToggleActiveTrigger');\n\n if (target) {\n $('[data-js-toggle-active-target=' + target + ']').toggleClass('is-active');\n }\n }\n\n $('input[type=checkbox][data-js-toggle-active-trigger]').change(toggleActiveState);\n $('[data-js-toggle-active-trigger]:not(input[type=checkbox])').click(toggleActiveState);\n});\n","document.addEventListener('DOMContentLoaded', function() {\n const triggers = document.querySelectorAll('[data-toggle-visibility]');\n\n [...triggers].map(trigger => trigger.addEventListener('click', toggle));\n});\n\nfunction toggle(event) {\n const id = event.currentTarget.getAttribute('data-toggle-visibility');\n const targets = document.querySelectorAll('[data-toggle-visibility-target=' + id + ']');\n\n [...targets].map(target => target.classList.toggle('is-hidden'));\n event.currentTarget.classList.toggle('target-hidden')\n}\n","const Cart = (() => {\n const TEASE_INTERVAL = 7000;\n\n $(function() {\n if (document.querySelector('[data-cart-tease]')) {\n Cart.tease();\n }\n });\n\n function closeCartIfClicked(e) {\n let target = e.target,\n parents = [];\n\n while (target) {\n parents.unshift(target);\n target = target.parentElement;\n }\n\n parents.map(parent => {\n if (!parent.hasAttribute('data-nav=cart')) {\n Cart.close();\n }\n });\n }\n\n return {\n open: () => {\n const cart = document.querySelector('[data-nav=cart]');\n if (cart) { cart.classList.add('is-active'); }\n },\n\n close: () => {\n document.querySelector('body').removeEventListener('click', closeCartIfClicked);\n const cart = document.querySelector('[data-nav=cart]');\n if (cart) { cart.classList.remove('is-active'); }\n },\n\n tease: () => {\n const cart = document.querySelector('[data-nav=cart]');\n\n if (cart) {\n Cart.open();\n setTimeout(() => cart.classList.remove('is-active'), TEASE_INTERVAL);\n }\n document.querySelector('body').addEventListener('click', closeCartIfClicked);\n }\n }\n})();\n\nwindow.StoreConnect = window.StoreConnect || {};\nwindow.StoreConnect.Cart = Cart;\n","window.StoreConnectUI = window.StoreConnectUI || {};\n\nwindow.StoreConnectUI.PricePicker = (function () {\n let picker, prevPicker;\n\n function open() {\n const list = picker.querySelector('[data-price-picker-list]');\n\n prevPicker = picker;\n list.classList.add('is-active');\n list.setAttribute('aria-hidden', false);\n }\n\n function close(picker) {\n const list = picker.querySelector('[data-price-picker-list]');\n\n list.classList.remove('is-active');\n list.setAttribute('aria-hidden', true);\n }\n\n function closeIfClickElsewhere(e) {\n if (!picker.contains(e.target)) { close(picker); }\n }\n\n return {\n init: (e) => {\n const parent = e.target.parentNode,\n buttons = [...parent.querySelectorAll('[data-price-picker-btn]')];\n\n picker = parent;\n\n if (prevPicker) {close(prevPicker);}\n\n open(picker);\n buttons.map(button => button.addEventListener('click', PricePicker.set));\n document.addEventListener('click', closeIfClickElsewhere);\n },\n\n set: (e) => {\n const input = picker.querySelector('[data-price-picker-input]');\n\n input.value = e.target.value;\n picker.querySelector('[data-price-picker-value]').innerText = e.target.innerText;\n if (input.value) input.dispatchEvent(new Event('change'));\n close(picker);\n },\n\n manualEntry: () => {\n const input = picker.querySelector('[data-price-picker-input]');\n\n input.classList.add('is-active')\n input.focus();\n picker.querySelector('[data-price-picker-trigger]').classList.add('is-hidden');\n close(picker);\n }\n }\n})();\n\n// Deprecated:\n// Projects using webpacker should import functions\n// directly as ES6 modules.\nconst PricePicker = window.StoreConnectUI.PricePicker;\n","document.addEventListener('DOMContentLoaded', init)\n\nexport default function init() {\n [...document.querySelectorAll('[data-accordion-trigger]')].map(trigger => {\n trigger.addEventListener('click', toggleActiveState)\n })\n}\n\nfunction toggleActiveState(e) {\n const parent = e.currentTarget.parentNode\n const target = parent.querySelector('[data-accordion-target]')\n const icons = parent.querySelectorAll('[data-accordion-icon]')\n\n if (target.getAttribute('aria-expanded') === 'true') {\n target.setAttribute('aria-expanded', 'false')\n } else {\n target.setAttribute('aria-expanded', 'true')\n }\n\n [...icons].map(icon => icon.classList.toggle('is-active'))\n parent.classList.toggle('is-active')\n target.classList.toggle('is-expanded')\n}\n","export function formatDate(d) {\n const date = new Date(d);\n var dateString = new Date(date.getTime() - (date.getTimezoneOffset() * 60000))\n .toISOString()\n .split(\"T\")[0];\n return dateString;\n}\n","document.addEventListener('DOMContentLoaded', init);\n\nfunction init() {\n [...document.querySelectorAll('[data-modal-trigger]')].map(trigger => {\n trigger.addEventListener('click', toggle);\n });\n}\n\nfunction toggle(event) {\n const id = event.currentTarget.getAttribute('data-modal-trigger'),\n modal = document.querySelector(`[data-modal=\"${id}\"]`);\n\n if (modal.classList.contains('is-active')) {\n modal.classList.remove('is-active');\n document.querySelector('body').style.overflow = 'visible';\n } else {\n modal.classList.add('is-active');\n document.querySelector('body').style.overflow = 'hidden';\n }\n}\n\nexport default init;\n","import Rails from '@rails/ujs';\n\nconst RANGE = [1, 2, 3, 4, 5, 6, 7, 8, 9];\nconst MIN_DEFAULT = 1;\nconst MANUAL_OPTION = 'manual_option';\n\nlet activePicker = null;\n\ndocument.addEventListener('DOMContentLoaded', () => {\n const pickers = getQtyPickers();\n\n initQtyPickers(pickers);\n});\n\n\n/**\n * Initialises all quantity pickers on the page either on load or\n * when called externally within our core javascript (typically in\n * cases where HTML is returned from the backend and injected into\n * DOM without a page refresh)\n */\n\nexport function initQtyPickers(pickers = []) {\n pickers.forEach((picker) => {\n resetQtyPicker(picker);\n initQtyPicker(picker);\n });\n}\n\n\n/**\n * Initalises a quanity picker by create options based on the range\n * and min/max thresholds (optionally set on the input field).\n * Handles click events to show the quantity picker menu and update\n * the quantity based on selected option.\n */\n\nexport function initQtyPicker(picker) {\n const initBtn = getQtyPickerTrigger(picker);\n const inputElem = getQtyPickerInput(picker);\n const labelElem = getQtyPickerLabel(picker);\n const updateBtn = getQtyPickerUpdateButton(picker);\n const customQtyLabels = getQtyPickerLabels(picker);\n const { min, max, range } = getQtyPickerRange(picker);\n\n // Shows the quantity picker menu\n initBtn.addEventListener('click', () => {\n if (activePicker) hideQtyPickerOptions(activePicker);\n showQtyPickerOptions(picker);\n listenForOutsideClick(picker);\n });\n\n const options = [\n // Options (quantities) based on the range and input min/max thresholds\n ...createRangeOptions(min, max, range, customQtyLabels),\n // An option for manual quantity input when the desired\n // quantity is greater than the visible menu of options.\n createManualEntryOption(min, max, range),\n ]\n\n options.forEach(optionListItem => {\n if (optionListItem === null || optionListItem == undefined) return;\n\n const optionBtn = optionListItem.querySelector('button');\n const menuElem = getQtyPickerMenu(picker);\n\n // Click quantity option\n optionBtn.addEventListener('click', (event) => {\n hideQtyPickerOptions(picker);\n if (optionBtn.value === MANUAL_OPTION) {\n setDisplayHidden(initBtn);\n setDisplayVisible(updateBtn);\n setDisplayVisible(inputElem);\n inputElem.focus();\n inputElem.select();\n } else {\n labelElem.innerText = optionBtn.innerText;\n inputElem.value = optionBtn.value;\n inputElem.dispatchEvent(new Event('change'));\n if (shouldSubmitOnChange(inputElem.form)) {\n Rails.fire(event.target.form, 'submit');\n }\n }\n });\n\n menuElem.append(optionListItem);\n })\n}\n\n\n/* Create quantity picker options */\n\nfunction createRangeOptions(min, max, range = [], customQtyLabels = {}) {\n return range.map((quantity) => {\n const customLabel = customQtyLabels[quantity];\n\n return createOption({\n value: quantity,\n label: customLabel || quantity,\n hint: (() => {\n switch (quantity) {\n case 0:\n return '(Remove)';\n case max:\n return '(Max)';\n case min:\n return '(Min)';\n default:\n return null;\n }\n })()\n });\n })\n}\n\nfunction createManualEntryOption(min, max = Infinity, range = []) {\n if (max > range.length) return createOption({\n value: MANUAL_OPTION,\n label: (min === 0 ? range.length : range.length + 1) + '+',\n })\n}\n\nfunction createOption({ value, label = null, hint = null }) {\n const listItemElem = document.createElement('li');\n const optionButton = document.createElement('button');\n\n optionButton.type = 'button';\n optionButton.value = value;\n optionButton.innerText = label || value;\n\n optionButton.style.display = 'flex';\n optionButton.style.alignItems = 'center';\n optionButton.style.gap = 'var(--sc-spacing-tiny)';\n optionButton.classList.add('sc-focus:outline','sc-focus:bg-lightest');\n\n listItemElem.append(optionButton);\n if (hint === null) return listItemElem;\n\n const optionHintElem = document.createElement('span');\n\n optionHintElem.classList.add('sc-font-tiny', 'sc-shade-neutral');\n optionHintElem.innerText = hint;\n optionHintElem.style.pointerEvents = 'none';\n optionButton.append(optionHintElem);\n return listItemElem;\n}\n\n\n/* Quantity picker range */\n\nfunction getQtyPickerRange(picker) {\n const input = getQtyPickerInput(picker);\n const min = getMin(input);\n const max = getMax(input);\n const range = createRange(min, max);\n\n return { range, min, max };\n}\n\nfunction getMin(input) {\n if (input.getAttribute('min') === null) return MIN_DEFAULT;\n return parseInt(input.min);\n}\n\nfunction getMax(input) {\n if (input.getAttribute('max') === null) return Infinity;\n return parseInt(input.max);\n}\n\nfunction createRange(min = MIN_DEFAULT, max = Infinity) {\n if (max > RANGE.length && max < Infinity)\n return [...Array(max)].map((_, index) => min === 0 ? index : index + 1);\n else {\n if (min === 0) return [0, ...RANGE.slice(min, max)];\n else return RANGE.slice(min - 1, max);\n }\n}\n\n\n/**\n * By default we initalise the quantity picker on every page\n * load. When a product represents a booking with timeslots\n * we need to reset the quantity picker options based on the\n * availability of any chosen timeslot. See the timeslot\n * event listener in app/assets/javascripts/theme/booking.js\n */\n\nexport function resetQtyPicker(picker) {\n const initBtn = getQtyPickerTrigger(picker);\n const menuElem = getQtyPickerMenu(picker);\n const inputElem = getQtyPickerInput(picker);\n const labelElem = getQtyPickerLabel(picker);\n const { min, max } = getQtyPickerRange(picker);\n\n setDisplayHidden(inputElem);\n setDisplayVisible(initBtn);\n menuElem.innerHTML = '';\n if (parseInt(inputElem.value) > max || parseInt(inputElem.value) < min) {\n labelElem.innerText = min\n }\n}\n\n\n/* Handle outside click */\n\nfunction listenForOutsideClick(picker) {\n document.addEventListener('click', handleOutsideClick);\n picker.addEventListener('clickOutside', () => {\n hideQtyPickerOptions(picker);\n document.removeEventListener('click', handleOutsideClick);\n });\n}\n\nfunction handleOutsideClick(event) {\n const clickedPicker = event.target.closest('[data-qty-picker]');\n\n if (clickedPicker) {\n if (isMenuVisible(clickedPicker)) {\n return hideQtyPickerOptions(clickedPicker)\n } else {\n return showQtyPickerOptions(clickedPicker);\n }\n } else if (activePicker) {\n activePicker.dispatchEvent(new Event('clickOutside'));\n }\n}\n\n\n/* Show/hide quantity picker options */\n\nfunction showQtyPickerOptions(picker) {\n const menuElem = getQtyPickerMenu(picker);\n const inputElem = getQtyPickerInput(picker);\n const currentValue = parseInt(inputElem.value);\n\n activePicker = picker;\n menuElem.style.display = 'block';\n menuElem.setAttribute('aria-hidden', false);\n const selectedItem = menuElem.querySelector(`button[value=\"${currentValue}\"]`);\n if (selectedItem) {\n selectedItem.focus();\n }\n}\n\nfunction hideQtyPickerOptions(picker) {\n const menuElem = getQtyPickerMenu(picker);\n\n activePicker = null;\n menuElem.style.display = 'none';\n menuElem.setAttribute('aria-hidden', true);\n}\n\n\n/* Helpers */\n\nfunction isCartPage() {\n return document.querySelector('[data-sc-cart-page]');\n}\n\nfunction shouldSubmitOnChange(form) {\n return form.getAttribute('data-submit-on-change') === 'true';\n}\n\nfunction getQtyPickerLabels(picker) {\n const input = getQtyPickerInput(picker);\n const labels = input.dataset.labels;\n\n return labels ? JSON.parse(labels) : {};\n}\n\nfunction setDisplayVisible(elem = null) {\n if (elem === null) return;\n return elem.style.display = 'block';\n}\n\nfunction setDisplayHidden(elem = null) {\n if (elem === null) return;\n return elem.style.display = 'none';\n}\n\nfunction isMenuVisible(picker) {\n return picker.querySelector('ul').getAttribute('aria-hidden') === 'true';\n}\n\n\n// DOM selectors\n\nexport function getQtyPickers() {\n return document.querySelectorAll('[data-qty-picker]');\n}\n\nfunction getQtyPickerMenu(picker) {\n return picker.querySelector('ul');\n}\n\nfunction getQtyPickerInput(picker) {\n return picker.querySelector('input[type=\"number\"]');\n}\n\nfunction getQtyPickerLabel(picker) {\n return picker.querySelector('[data-qty-picker-value]');\n}\n\nfunction getQtyPickerUpdateButton(picker) {\n return picker.querySelector('[data-qty-picker-update]');\n}\n\nfunction getQtyPickerTrigger(picker) {\n return picker.querySelector('[data-qty-picker-trigger]');\n}\n","import Litepicker from 'litepicker';\nimport {formatDate} from './utils/date';\nimport Loader from './loader';\nimport initModal from './modal';\nimport {initQtyPicker, resetQtyPicker} from './quantity-picker';\n\nconst BookingSelector = (function (node) {\n const productId = node.dataset.id;\n const dates = node.querySelector('[data-booking-dates]');\n const trigger = dates.closest(\".SC-DropdownPicker\");\n const picker = createPicker();\n let autoJump = false;\n let highlightTimeoutId;\n let lastMonthSelected;\n\n init();\n\n function init() {\n const locations = [...node.querySelectorAll('[data-bookable-location]')];\n let srtDate = getStartDate();\n let endDate = getEndDate();\n\n if (!srtDate && !endDate) {\n autoJump = true;\n }\n\n if (!srtDate || !endDate) {\n srtDate = srtDate || (endDate ? formatDate(Date.parse(endDate) - 7 * 24 * 60 * 60 * 1000) : formatDate(Date.now()));\n endDate = endDate || formatDate(Date.parse(srtDate) + 7 * 24 * 60 * 60 * 1000);\n }\n\n if (srtDate > endDate) {\n const start = Date.parse(srtDate)\n endDate = formatDate(start + 7 * 24 * 60 * 60 * 1000);\n }\n storeDates(srtDate, endDate);\n\n const storedLocationId = retrieveVariable('booking-location-id');\n\n if (storedLocationId) {\n const storedLocation = node.querySelector('[data-bookable-location][value=\"' + storedLocationId + '\"]');\n\n if (storedLocation)\n node.querySelector('[data-bookable-locations] span').innerText = storedLocation.dataset.name;\n }\n\n picker.on('show', () => {\n trigger.classList.add('is-active');\n });\n picker.on('hide', () => {\n trigger.classList.remove('is-active');\n });\n picker.on('selected', (first, second) => {\n handleDatesSelection(first, second);\n });\n picker.on('render', ui => {\n disablePastDates(ui);\n setCalendarWidth(ui);\n });\n picker.on('change:month', (date, calendarIdx) => {\n handleMonthChange(date, calendarIdx);\n });\n locations.map(option => {\n option.addEventListener('change', handleLocationSelection);\n });\n\n picker.setDateRange(srtDate, endDate, true);\n setHighlightDays();\n }\n\n function handleLocationSelection(event) {\n const locations = node.querySelector('[data-bookable-locations]');\n const srtDate = dates.getAttribute('data-start');\n const endDate = dates.getAttribute('data-end');\n const locationId = event.target.hasAttribute('value') ? event.target.value : null;\n\n storeVariables({ \"booking-location-id\": locationId })\n locations.querySelector('span').innerText = event.target.dataset.name;\n filterAvailabilities(srtDate, endDate, locationId);\n setHighlightDays();\n }\n\n function handleDatesSelection(first, second) {\n const srtDate = formatDate(first.dateInstance);\n const endDate = formatDate(second.dateInstance);\n\n storeDates(srtDate, endDate)\n dates.setAttribute('data-start', srtDate);\n dates.setAttribute('data-end', endDate);\n dates.querySelector('span').innerText = returnRangeAsString(srtDate, endDate);\n filterAvailabilities(srtDate, endDate, getLocationId());\n }\n\n function handleTimeslotSelection() {\n const form = node.closest('form');\n const locationInput = form.elements['product_bookable_location_id'];\n const startDateInput = form.elements['booking_start'];\n const endDateInput = form.elements['booking_end'];\n\n // Sets selected values to hidden inputs\n [...node.querySelectorAll('[data-booking-timeslot]')].map((timeslot) => {\n timeslot.addEventListener('change', (event) => {\n const buyNow = form.querySelector('[data-buy-now]');\n const addToCart = form.querySelector('[data-add-to-cart]');\n const qtyPickers = document.querySelectorAll('[data-qty-picker]');\n\n if (addToCart) addToCart.removeAttribute('disabled');\n if (buyNow) buyNow.removeAttribute('disabled');\n locationInput.value = event.target.dataset.location;\n startDateInput.value = event.target.dataset.start;\n endDateInput.value = event.target.dataset.end;\n\n qtyPickers.forEach(picker => {\n const input = picker.querySelector('input[name=\"quantity\"]');\n\n resetQtyPicker(picker);\n input.setAttribute('min', 1);\n input.setAttribute('max', event.target.dataset.available);\n initQtyPicker(picker);\n });\n });\n });\n }\n\n function handleMonthChange(dateInstance, _calendarIdx) {\n clearTimeout(highlightTimeoutId);\n\n const date = dateInstance.toJSDate();\n const direction = lastMonthSelected > date ? \"bwd\" : \"fwd\";\n\n lastMonthSelected = date;\n\n highlightTimeoutId = setTimeout(function () {\n highlightDays(date, direction);\n }, 400);\n }\n\n function setHighlightDays() {\n const pckrDate = picker.getStartDate().toJSDate();\n const monthStartDate = new Date(pckrDate.getFullYear(), pckrDate.getMonth(), 1);\n\n highlightDays(monthStartDate, \"both\");\n }\n\n function highlightDays(date, direction, preload = false) {\n const startDate = formatDate(date);\n const endDate = formatDate(new Date(date.getFullYear(), date.getMonth() + 1, 0));\n const slots = node.querySelector('[data-booking-timeslots]');\n const availabilitiesUrl = slots.dataset.bookingAvailabilitiesUrl;\n const locationId = getLocationId();\n const highlights = true\n const endpoint = returnEndPoint({ availabilitiesUrl, productId, startDate, endDate, locationId, highlights: highlights });\n\n fetchAvailabilities(endpoint, \"application/json\")\n .then((days) => {\n if (!preload) {\n picker.setHighlightedDays(JSON.parse(days));\n\n if (direction == \"fwd\" || direction == \"both\") {\n const nextDate = new Date(date.getFullYear(), date.getMonth() + 1, 1);\n highlightDays(nextDate, null, true);\n }\n\n if (direction == \"bwd\" || direction == \"both\") {\n const prevDate = new Date(date.getFullYear(), date.getMonth() - 1, 1);\n highlightDays(prevDate, null, true);\n }\n }\n })\n .catch((_) => {\n // no-op\n });\n }\n\n function filterAvailabilities(startDate, endDate, locationId) {\n const locations = node.querySelector('[data-bookable-locations]');\n const addToCart = node.closest('form').querySelector('[data-add-to-cart]');\n const buyNow = node.closest('form').querySelector('[data-buy-now]');\n const slots = node.querySelector('[data-booking-timeslots]');\n const availabilitiesUrl = slots.dataset.bookingAvailabilitiesUrl;\n const availabilitiesPartial = slots.dataset.bookingAvailabilitiesPartial;\n const fetchError = slots.dataset.bookingFetchError;\n const endpoint = returnEndPoint({ availabilitiesUrl, productId, startDate, endDate, locationId, partial: availabilitiesPartial });\n const loader = Loader({ target: slots, contextual: true });\n\n loader.on();\n locations.setAttribute('disabled', true);\n if (addToCart) addToCart.setAttribute('disabled', true);\n if (buyNow) buyNow.setAttribute('disabled', true);\n slots.scrollTop = 0;\n\n fetchAvailabilities(endpoint)\n .then((text) => {\n loader.off();\n locations.removeAttribute('disabled');\n slots.innerHTML = text;\n handleTimeslotSelection();\n initModal();\n handleClosestLinks();\n })\n .catch((_) => {\n loader.off();\n locations.removeAttribute('disabled');\n\n slots.innerHTML = `<div class=\"SC-Notice SC-Notice-alert sc-mt\">${fetchError}</div>`;\n handleTimeslotSelection();\n });\n }\n\n async function fetchAvailabilities(endpoint, format=\"text/html\") {\n const response = await fetch(endpoint, {\n headers: {\n \"Accept\": format,\n }\n });\n if (response.ok) {\n const availabilities = await response.text();\n return availabilities;\n } else {\n throw new Error(response.statusText);\n }\n }\n\n function returnEndPoint({ availabilitiesUrl, startDate, endDate, locationId, partial = null, highlights = false }) {\n if (!availabilitiesUrl)\n availabilitiesUrl = '/availabilities';\n\n let url = `${availabilitiesUrl}?product_id=${productId}&start_date=${startDate}&end_date=${endDate}`;\n\n if (locationId && locationId != \"on\")\n url = `${url}&product_bookable_location_id=${locationId}`\n\n if (partial)\n url = `${url}&partial=${partial}`\n\n if (highlights)\n url = `${url}&highlight=true`\n\n return url;\n }\n\n function returnRangeAsString(startDate, endDate) {\n const dateFormat = { day: 'numeric', month: 'short' };\n const dateTime = new Intl.DateTimeFormat('en-US', dateFormat);\n\n return (\n dateTime.format(new Date(startDate)) + ' - ' +\n dateTime.format(new Date(endDate))\n );\n }\n\n function disablePastDates(ui) {\n const today = ui.querySelector('.is-today');\n const days = [...ui.querySelectorAll('.day-item')];\n\n if (today === null) return;\n for (let i = 0; i < days.length; i++) {\n if (days[i] === today) break;\n days[i].classList.add('is-disabled');\n }\n }\n\n function getStartDate() {\n return retrieveVariable('booking-date-start')\n }\n\n function getEndDate() {\n return retrieveVariable('booking-date-end')\n }\n\n function getLocationId() {\n const locations = node.querySelector('[data-bookable-location]:checked');\n return locations ? locations.value : null;\n }\n\n function createPicker() {\n const icon = '<svg viewBox=\"0 0 100 100\"><path d=\"M56.7,75.75 L95.4,37.05 C98.8,33.65 98.8,28.05 95.4,24.65 C92,21.25 86.4,21.25 83,24.65 L50.5,57.05 L18,24.55 C14.6,21.15 9,21.15 5.6,24.55 C3.9,26.25 3,28.55 3,30.75 C3,33.05 3.9,35.25 5.6,36.95 L44.3,75.75 C47.7,79.15 53.3,79.15 56.7,75.75 Z\"></path></svg>';\n\n return new Litepicker({\n element: dates,\n singleMode: false,\n buttonText: { previousMonth: icon, nextMonth: icon },\n showTooltip: false,\n highlightedDaysFormat: \"YYYY-MM-DD\"\n });\n }\n\n function setCalendarWidth(ui) {\n ui.style.width = node.clientWidth + 'px';\n }\n\n function storeDates(srtDate, endDate) {\n storeVariables({ \"booking-date-start\": srtDate, \"booking-date-end\": endDate })\n }\n\n function storeVariables(hash) {\n const params = new URLSearchParams(window.location.search)\n\n for (const [key, value] of Object.entries(hash)) {\n params.delete(key)\n if (value !== null)\n params.append(key, value)\n }\n\n const url = new URL(window.location.href);\n url.search = params\n window.history.pushState({}, null, url);\n }\n\n function retrieveVariable(key) {\n const params = new URLSearchParams(window.location.search)\n return params.get(key);\n }\n\n function handleClosestLinks() {\n [...document.querySelectorAll('[data-booking-jump]')]\n .map(trigger => trigger.addEventListener('click', event => {\n const direction = event.target.getAttribute('data-booking-jump-direction')\n let start, end;\n\n if (direction == \"back\") {\n end = Date.parse(event.target.getAttribute('data-booking-jump'))\n start = end - 7 * 24 * 60 * 60 * 1000;\n } else {\n start = Date.parse(event.target.getAttribute('data-booking-jump'))\n end = start + 7 * 24 * 60 * 60 * 1000;\n }\n\n picker.setDateRange(start, end, true);\n setHighlightDays();\n })\n );\n\n if (autoJump) {\n autoJump = false;\n\n const firstJumpLink = document.querySelector('[data-booking-jump]');\n\n if (firstJumpLink) {\n firstJumpLink.click();\n }\n }\n }\n});\n\ndocument.addEventListener('DOMContentLoaded', function () {\n [...document.querySelectorAll('[data-booking]')]\n .forEach((node) => BookingSelector(node));\n});\n","import storePath from './store-path-url'\n\nconst CustomFormAnswerSelector = (function (node) {\n initEditLink()\n initEditContainer()\n\n function initEditLink() {\n node.addEventListener('click', function (event) {\n const { target } = event\n\n if(target.tagName === 'A' && target.hasAttribute(\"data-custom-form-answer-id\")) {\n event.preventDefault()\n event.stopPropagation()\n\n const answerId = target.getAttribute(\"data-custom-form-answer-id\")\n\n fetchForm(answerId)\n }\n })\n }\n\n function initEditContainer() {\n node.addEventListener('submit', function (event) {\n const { target } = event\n\n if(node.querySelector('input[type=\"submit\"]')) {\n event.preventDefault()\n event.stopPropagation()\n\n submitForm()\n }\n })\n\n node.addEventListener('change', function (event) {\n const { target } = event\n\n if(target.tagName === 'SELECT' || (target.getAttribute('type') === 'checkbox' && !node.querySelector('input[type=\"submit\"]'))) {\n event.preventDefault()\n event.stopPropagation()\n\n const form = node.querySelector('form')\n const data = new URLSearchParams(new FormData(form))\n const answerId = form.getAttribute('data-custom-form-answer-id')\n\n submitForm()\n }\n })\n\n node.addEventListener('keypress', function (event) {\n const { target } = event\n\n if(event.key === 'Enter' && target.tagName === 'INPUT') {\n event.preventDefault()\n event.stopPropagation()\n\n submitForm()\n }\n })\n }\n\n function fetchForm(answerId) {\n fetch(storePath(`/async/custom_form_answers/${answerId}`))\n .then((response) => response.text())\n .then((text) => {\n node.innerHTML = text\n })\n }\n\n function submitForm() {\n const form = node.querySelector('form')\n const data = new URLSearchParams(new FormData(form))\n const answerId = form.getAttribute('data-custom-form-answer-id')\n\n fetch(storePath(`/async/custom_form_answers/${answerId}`), {\n method: 'PUT',\n body: data\n })\n .then((response) => response.text())\n .then((text) => {\n node.innerHTML = text\n })\n }\n})\n\ndocument.addEventListener('DOMContentLoaded', function () {\n [...document.querySelectorAll('[data-custom-form-answer]')]\n .forEach((node) => CustomFormAnswerSelector(node))\n})\n\n","import * as Pikaday from 'pikaday'\n\ndocument.addEventListener('DOMContentLoaded', () => {\n [...document.querySelectorAll('[data-date-picker]')]\n .map(elem => new Pikaday({ field: elem }))\n})\n","import Litepicker from 'litepicker'\nimport {formatDate} from './utils/date';\n\nconst DeliveryOptionsSelector = (function (node) {\n const pickerNode = node.querySelector('[data-available-delivery-dates]')\n const dayOptions = node.querySelector('[data-delivery-days]')\n const lineItemId = node.getAttribute('data-delivery-options')\n\n let availableDeliveryDates, deliveryDateNode, picker, selection = {}\n\n const deliveryTimeSlotsNode = node.querySelector('[data-delivery-time-slots]')\n const submitButton = document.querySelector('[data-fulfilment-button]')\n const form = submitButton.closest('form')\n\n if (isByDate()) {\n availableDeliveryDates = pickerNode.getAttribute('data-available-delivery-dates').split(',')\n deliveryDateNode = pickerNode.querySelector(\"span\")\n picker = createPicker()\n initDatePicker()\n }\n\n if (isByDay()) {\n initDayPicker()\n }\n\n function initDatePicker() {\n picker.on('render', ui => {\n ui.style.width = (pickerNode.parentElement.clientWidth * 1) + 'px'\n })\n\n picker.on('selected', (datetime, _) => {\n const date = formatDate(datetime.toJSDate())\n\n selectDate(date)\n renderDeliveryOptions()\n })\n\n if(availableDeliveryDates.length >= 1) {\n picker.gotoDate(availableDeliveryDates[0])\n }\n\n if (deliveryTimeSlotsNode) {\n deliveryTimeSlotsNode.addEventListener('change', validateForm)\n }\n\n renderDeliveryOptions()\n }\n\n function initDayPicker() {\n dayOptions.addEventListener('change', (e) => {\n selectDay(e.target.value)\n renderDeliveryOptions()\n })\n\n if (deliveryTimeSlotsNode) {\n deliveryTimeSlotsNode.addEventListener('change', validateForm)\n }\n\n renderDeliveryOptions()\n }\n\n function createPicker() {\n const icon = '<svg viewBox=\"0 0 100 100\"><path d=\"M56.7,75.75 L95.4,37.05 C98.8,33.65 98.8,28.05 95.4,24.65 C92,21.25 86.4,21.25 83,24.65 L50.5,57.05 L18,24.55 C14.6,21.15 9,21.15 5.6,24.55 C3.9,26.25 3,28.55 3,30.75 C3,33.05 3.9,35.25 5.6,36.95 L44.3,75.75 C47.7,79.15 53.3,79.15 56.7,75.75 Z\"></path></svg>'\n\n return new Litepicker({\n element: pickerNode,\n singleMode: true,\n buttonText: { previousMonth: icon, nextMonth: icon },\n showTooltip: false,\n highlightedDaysFormat: \"YYYY-MM-DD\",\n highlightedDays: availableDeliveryDates,\n startDate: deliveryDateNode.innerText,\n lockDaysFilter: (datetime) => {\n const date = formatDate(datetime.toJSDate())\n\n return !availableDeliveryDates.includes(date)\n }\n })\n }\n\n function selectDate(date) {\n deliveryDateNode.innerText = date\n selection[\"date\"] = date\n const input = node.querySelector(`[data-delivery-date-input=\"${lineItemId}\"]`)\n if (input) {\n input.value = date\n }\n }\n\n function selectedDate() {\n return selection[\"date\"]\n }\n\n function selectDay(day) {\n selection[\"day\"] = day\n }\n\n function selectedDay() {\n return selection[\"day\"]\n }\n\n function renderDeliveryOptions() {\n fetchDeliveryOptions()\n .then((text) => {\n node.removeAttribute('data-delivery-options-pending')\n deliveryTimeSlotsNode.innerHTML = text\n })\n .catch((_) => {\n node.setAttribute('data-delivery-options-pending', true)\n deliveryTimeSlotsNode.innerHTML = ''\n })\n .finally(() => {\n validateForm()\n })\n }\n\n function validateForm() {\n if (isValid()) {\n node.setAttribute('data-valid', true)\n } else {\n node.removeAttribute('data-valid')\n }\n checkValidity()\n }\n\n function isValid() {\n return hasSelection() && hasTimeslotSelection()\n }\n\n function checkValidity() {\n if (form.checkValidity() && form.querySelector('[name=method]:checked') && allValid()) {\n submitButton.removeAttribute('disabled');\n } else {\n submitButton.setAttribute('disabled', 'disabled')\n }\n }\n\n function allValid() {\n return [...document.querySelectorAll('[data-delivery-options]')].every((node) => node.hasAttribute('data-valid'))\n }\n\n async function fetchDeliveryOptions() {\n if (!lineItemId || !hasSelection()) {\n return \"\"\n }\n\n const response = await fetch(\n `/async/delivery_options?${queryParam()}&line_item_id=${lineItemId}`,\n { headers: { 'Accept': 'application/json' } },\n )\n\n if (response.ok) {\n const text = await response.text()\n return text\n } else {\n throw new Error(response.statusText)\n }\n }\n\n function queryParam() {\n if (isByDate()) {\n return `date=${selectedDate()}`\n }\n if (isByDay()) {\n return `day=${selectedDay()}`\n }\n }\n\n function hasSelection() {\n return isByDate() ? selectedDate() : selectedDay()\n }\n\n function hasTimeslotSelection() {\n if (deliveryTimeSlotsNode) {\n if (deliveryTimeSlotsNode.querySelector(\"input\")) {\n return deliveryTimeSlotsNode.querySelector(\"input:checked\")\n }\n }\n return true\n }\n\n function isByDate() {\n return pickerNode ? true : false\n }\n\n function isByDay() {\n return dayOptions ? true : false\n }\n})\n\ndocument.addEventListener('DOMContentLoaded', function () {\n [...document.querySelectorAll('[data-delivery-options]')]\n .forEach((node) => DeliveryOptionsSelector(node))\n})\n","import { mediumAndUp } from './viewport'\nimport Loader from './loader'\n\nwindow.StoreConnectUI = window.StoreConnectUI || {};\n\nwindow.StoreConnectUI.Filters = function() {\n\nlet isVisible, loader;\n\ndocument.addEventListener('DOMContentLoaded', () => {\n isVisible = mediumAndUp() ? true : false;\n loader = Loader({target: null, contextual: false});\n\n if (mediumAndUp() && document.querySelector('[data-filters-trigger]')) {\n document.querySelector('[data-filters-trigger] span').innerText = \"Hide\";\n }\n});\n\nfunction show() {\n isVisible = true;\n\n if (mediumAndUp()) {\n document.querySelector('[data-product-sidebar]').classList.remove('is-hidden');\n document.querySelector('[data-product-grid]').classList.remove('is-expanded');\n document.querySelector('[data-filters-trigger] span').innerText = \"Hide\";\n\n if (document.querySelector('[data-card-grid]')) {\n document.querySelector('[data-card-grid]').classList.add('is-offset-by-sidebar');\n }\n\n } else {\n document.querySelector('[data-filters]').classList.add('is-active');\n }\n}\n\nfunction hide() {\n isVisible = false;\n\n if (mediumAndUp()) {\n document.querySelector('[data-product-sidebar]').classList.add('is-hidden');\n document.querySelector('[data-product-grid]').classList.add('is-expanded');\n document.querySelector('[data-filters-trigger] span').innerText = \"Show\";\n\n if (document.querySelector('[data-card-grid]')) {\n document.querySelector('[data-card-grid]').classList.remove('is-offset-by-sidebar')\n }\n\n } else {\n document.querySelector('[data-filters]').classList.remove('is-active');\n }\n}\n\nreturn {\n toggle: () => isVisible ? hide() : show(),\n\n reset: () => document.querySelector('[data-filters]').reset(),\n\n submit: () => {\n if (mediumAndUp()) {\n loader.on();\n document.querySelector('[data-filters]').submit();\n };\n }\n}\n}();\n","document.addEventListener('DOMContentLoaded', initPtsToggles);\n\nexport function initPtsToggles() {\n [...document.querySelectorAll('[data-pts-toggle] input')].map(toggle => {\n toggle.addEventListener('change', () => changeToggle(toggle));\n });\n}\n\nfunction changeToggle(toggle) {\n toggle.form.requestSubmit();\n}\n","import {initQtyPickers} from './quantity-picker';\nimport {initPtsToggles} from './points-toggle';\n\ndocument.addEventListener('DOMContentLoaded', () => {\n const quantityPickers = document.querySelectorAll(\"form[data-submit-on-change=true] [data-qty-picker]\");\n const pointsToggles = document.querySelectorAll(\"form[data-submit-on-change=true] [data-pts-toggle] input\");\n\n if (quantityPickers.length > 0) {\n document.body.addEventListener(\"ajax:success\", () => initQtyPickers(quantityPickers));\n }\n\n if (pointsToggles.length > 0) {\n document.body.addEventListener(\"ajax:success\", initPtsToggles);\n }\n});\n","import hoverintent from 'hoverintent/dist/hoverintent.min'\nimport { largeAndUp } from './viewport'\n\ndocument.addEventListener('DOMContentLoaded', init);\n\n\n/**\n * Initialise event listeners\n */\n\nfunction init() {\n const triggers = [...document.querySelectorAll('[data-menu-init]')];\n const backBtns = [...document.querySelectorAll('[data-menu-x]')];\n\n backBtns.map(btn => btn.addEventListener('click', close));\n\n // Desktop events\n if (largeAndUp()) {\n triggers.map(trigger => {\n hoverintent(trigger.closest('li'), show, hide)\n });\n }\n\n // Handheld events\n else {\n triggers.map(trigger => {\n trigger.addEventListener('click', open)\n });\n }\n}\n\n\n/**\n * Desktop event handlers\n */\n\nfunction show(event) {\n const group = event.target.closest('li');\n const menu = group.querySelector('[data-menu]');\n\n if (menu) {\n group.classList.add('is-active');\n menu.classList.add('is-active');\n }\n}\n\nfunction hide(event) {\n const group = event.target.closest('li')\n const menu = group.querySelector('[data-menu]');\n\n if (menu) {\n group.classList.remove('is-active');\n menu.classList.remove('is-active');\n }\n}\n\n\n/**\n * Handheld event handlers\n */\n\nfunction open(event) {\n const menuId = event.target.getAttribute('data-menu-init');\n const menu = document.querySelector(`[data-menu=\"${menuId}\"]`);\n\n if (menu) {\n event.preventDefault();\n menu.classList.add('is-active');\n document.querySelector('body').style.overflow = \"hidden\";\n }\n}\n\nfunction close(event) {\n const body = document.querySelector('body');\n const menu = event.target.closest('[data-menu]');\n const isRoot = menu.classList.contains('tier1');\n\n menu.classList.remove('is-active');\n if (isRoot) body.style.overflow = 'visible';\n}\n","// Deprecated: Use menu.js\n\nimport hoverintent from 'hoverintent/dist/hoverintent.min'\nimport { largeAndUp } from './viewport'\n\nlet prevNav\n\ndocument.addEventListener('DOMContentLoaded', init)\n\n\n/**\n * Initialise event listeners\n */\n\nfunction init() {\n const triggers = [...document.querySelectorAll('[data-nav-trigger]')]\n\n if (largeAndUp()) {\n triggers.map(trigger => {\n hoverintent(trigger.parentNode, show, hide)\n })\n } else {\n triggers.map(trigger => {\n trigger.addEventListener('click', open)\n })\n }\n\n [...document.querySelectorAll('[data-nav-close]')].map(btn => {\n btn.addEventListener('click', close)\n })\n}\n\n\n/**\n * Desktop event handlers\n */\n\nfunction show(e) {\n const rootNav = document.querySelector('[data-nav=root]')\n const navTrigger = e.target.parentNode\n const nav = navTrigger.querySelector('[data-nav]') || rootNav\n\n // Unset previously active\n if (prevNav) prevNav.classList.remove('is-active')\n prevNav = nav\n\n e.target.classList.add('is-active')\n nav.classList.add('is-active')\n navTrigger.classList.add('is-active')\n}\n\nfunction hide(e) {\n prevNav.classList.remove('is-active')\n e.target.parentNode.classList.remove('is-active')\n e.target.parentNode.querySelector('[data-nav-trigger]')\n .classList.remove('is-active')\n}\n\n\n/**\n * Handheld event handlers\n */\n\nfunction open(event) {\n const navTrigger = event.target\n const navId = navTrigger.getAttribute('data-nav-trigger')\n const nav = document.querySelector('[data-nav=\"' + navId + '\"]')\n\n if (nav) {\n event.preventDefault()\n prevNav = nav\n nav.classList.add('is-active')\n document.querySelector('body').style.overflow = \"hidden\"\n }\n}\n\nfunction close(event) {\n const prevNavId = event.target.getAttribute('data-nav-close')\n\n prevNav.classList.remove('is-active')\n\n if (prevNavId) {\n prevNav = document.querySelector('[data-nav=\"' + prevNavId + '\"]')\n } else {\n prevNav = null\n document.querySelector('body').style.overflow = 'visible'\n }\n}\n","window.StoreConnect = window.StoreConnect || {};\n\nwindow.StoreConnect.PrivacySettings = {\n close: closePrivacySettings,\n open: showPrivacySettings\n}\n\ndocument.addEventListener('DOMContentLoaded', init);\n\nexport default function init() {\n\n if (document.querySelector('[data-privacy-settings-form]')) {\n const banner = document.querySelector('[data-privacy-settings-banner]');\n const customTrigger = document.querySelector('.sc-show-privacy-settings')\n\n if (banner) {\n if (customTrigger) {\n customTrigger.classList.add('sc-hide');\n }\n document.querySelector('[data-privacy-settings-form-open]').addEventListener('click', showPrivacySettings);\n } else {\n if (customTrigger) {\n customTrigger.addEventListener('click', (e) => { e.preventDefault(); showPrivacySettings(); });\n }\n }\n [...document.querySelectorAll('[data-privacy-group-optional]')].map(group => {\n group.querySelector('input[type=checkbox]').addEventListener('change', enableOrDisableAllCookies);\n });\n [...document.querySelectorAll('[data-cookie-optional]')].map(cookie => {\n cookie.querySelector('input[type=checkbox]').addEventListener('change', enableOrDisableCookie);\n });\n\n document.querySelector('[data-privacy-settings-form-close]').addEventListener('click', closePrivacySettings);\n }\n}\n\nfunction showPrivacySettings() {\n document.querySelector('[data-privacy-settings-form]').classList.add('is-active');\n}\n\nfunction closePrivacySettings() {\n document.querySelector('[data-privacy-settings-form]').classList.remove('is-active');\n}\n\nfunction enableOrDisableAllCookies(event) {\n const groupId = event.target.id;\n const group = document.querySelector('[data-privacy-group=\"' + groupId + '\"]');\n const cookies = group.querySelectorAll('[data-cookie-optional]');\n const cookieLabels = group.querySelectorAll('[data-cookie-label]');\n const label = group.querySelector('label[for=\"' + groupId + '\"]');\n\n if (event.target.checked === true) {\n event.target.checked = true;\n label.innerText = label.dataset.disableLabel;\n [...cookieLabels].map(label => label.innerText = label.dataset.enabledLabel);\n } else {\n event.target.checked = false;\n label.innerText = label.dataset.enableLabel;\n [...cookieLabels].map(label => label.innerText = label.dataset.disabledLabel);\n }\n\n [...cookies].map(cookie => {\n const input = cookie.querySelector('input[type=checkbox]');\n input.checked = event.target.checked ? true : false;\n });\n}\n\nfunction enableOrDisableCookie(event) {\n const groupId = event.target.dataset.group;\n const group = document.querySelector('[data-privacy-group=\"' + groupId + '\"]');\n const cookie = event.target.closest('[data-cookie]');\n const parentInput = group.querySelector('[data-privacy-group-optional] input[type=checkbox]');\n const parentLabel = group.querySelector('label[for=\"' + groupId + '\"]');\n const label = cookie.querySelector('[data-cookie-label]');\n\n label.innerText = event.target.checked ? label.dataset.enabledLabel : label.dataset.disabledLabel;\n parentInput.checked = false;\n parentLabel.innerText = parentLabel.dataset.enableLabel;\n}\n","import 'hammerjs';\n\nwindow.StoreConnectUI = window.StoreConnectUI || {};\n\nwindow.StoreConnectUI.ProductGallery = (function () {\n let isZoomed = false,\n lastPosX = 0,\n lastPosY = 0,\n hammer;\n\n const drag = (e, styleProps) => {\n const x = e.deltaX + lastPosX,\n y = e.deltaY + lastPosY;\n\n // Release the drag\n if (e.isFinal) {\n e.target.classList.remove('is-dragging');\n e.target.setAttribute('style', styleProps);\n return;\n }\n\n // Move image position with cursor/touch position\n e.target.classList.add('is-dragging');\n e.target.setAttribute('style',\n 'transition: none;' +\n 'transform: translateX(calc(-50% + ' + x + 'px)) translateY(calc(-50% + ' + y + 'px));'\n );\n }\n\n function init(imageUrl) {\n const image = document.querySelector('[data-product-gallery-image]');\n const closeButton = document.querySelector('[data-product-gallery-close]');\n const viewportProps = document.querySelector('meta[name=viewport]').getAttribute('content');\n\n hammer = new Hammer(image);\n\n // Show the gallery modal and disable scrolling and viewport zooming\n document.querySelector('[data-product-gallery]').classList.add('is-active');\n document.querySelector('body').classList.add('is-not-scrollable');\n document.querySelector('meta[name=viewport]').setAttribute('content', `${viewportProps}, user-scalable=0`);\n // Load the 'huge' image size\n image.setAttribute('src', imageUrl);\n // The modal can be closed by swiping down or clicking the close button\n closeButton.addEventListener('click', close);\n // Toggle zoom mode on click\n image.addEventListener('click', toggleZoom);\n }\n\n function close() {\n // Reset zoom, close the gallery modal, and restore <body> scrolling\n exitZoom();\n document.querySelector('[data-product-gallery]').classList.remove('is-active');\n document.querySelector('body').classList.remove('is-not-scrollable');\n }\n\n function enterZoom() {\n const image = document.querySelector('[data-product-gallery-image'),\n imageStyleProps = image.getAttribute('style');\n\n isZoomed = true;\n hammer.on('pan', (e) => drag(e, imageStyleProps));\n image.classList.add('is-zoomed');\n }\n\n function exitZoom() {\n isZoomed = false;\n hammer.off('pan');\n document.querySelector('[data-product-gallery-image').classList.remove('is-zoomed');\n }\n\n function toggleZoom() {\n isZoomed ? exitZoom() : enterZoom();\n }\n\n return {\n init: (imageUrl) => init(imageUrl),\n }\n}());\n\n// Deprecated:\n// Projects using webpacker should import functions\n// directly as ES6 modules.\nconst ProductGallery = window.StoreConnectUI.ProductGallery;\n","let currentThumbnail, mainImage, mainVideo, thumbnails, cache = {};\n\ndocument.addEventListener('DOMContentLoaded', () => {\n if (document.querySelector('[data-product-image-container]')) {\n init();\n }\n});\n\nexport default function init() {\n mainImage = document.querySelector('[data-product-image]');\n mainVideo = document.querySelector('[data-product-video]');\n thumbnails = document.querySelectorAll('[data-product-thumbnail]');\n\n const container = document.querySelector('[data-product-image-container]');\n if (container === null) return;\n\n set(thumbnails[0]);\n\n if (thumbnails.length > 1) {\n document.querySelector('[data-product-thumbnails-container]').classList.remove('sc-hide');\n\n for (const thumb of thumbnails) {\n thumb.addEventListener('click', () => set(thumb));\n }\n }\n\n container.addEventListener('click', (e) => {\n if (e.target.tagName.toLowerCase() !== \"img\") return;\n\n const zoomUrl = mainImage.getAttribute('data-src-zoom');\n if (zoomUrl === null) return;\n\n window.StoreConnectUI.ProductGallery.init(zoomUrl)\n });\n}\n\nexport function set(thumbnail) {\n if (thumbnail === currentThumbnail) return;\n\n currentThumbnail = thumbnail;\n\n if (thumbnail.tagName.toLowerCase() == \"video\") {\n mainImage.classList.add('sc-hide');\n transferVideoAttributes(thumbnail, mainVideo);\n mainVideo.classList.remove('sc-hide');\n } else {\n mainVideo.classList.add('sc-hide');\n transferImageAttributes(thumbnail, mainImage);\n mainImage.classList.remove('sc-hide');\n }\n\n if (thumbnails.length > 0) {\n for (const thumb of thumbnails) {\n currentThumbnail == thumbnail ?\n thumb.classList.add('is-active') :\n thumb.classList.remove('is-active');\n }\n }\n}\n\nfunction transferImageAttributes(source, target) {\n target.src = source.getAttribute('data-src');\n target.alt = source.alt;\n target.setAttribute('data-product-image', source.getAttribute('data-product-thumbnail'));\n target.setAttribute('data-src-zoom', source.getAttribute('data-src-zoom'));\n}\n\nfunction transferVideoAttributes(source, target) {\n target.src = source.getAttribute('data-src');\n}\n","import { startLoader, stopLoader } from './loader';\n\ndocument.addEventListener('DOMContentLoaded', init);\nwindow.addEventListener('popstate', popVariantPathFromHistory);\n\nlet clearButton, resetButton, selectionPrompt;\n\nexport default function init() {\n const variantOptions = [...document.querySelectorAll('[data-variant-option]')];\n clearButton = document.querySelector('[data-variant-clear-button]');\n resetButton = document.querySelector('[data-variant-reset-button]');\n selectionPrompt = document.querySelector('[data-variant-selection-prompt]');\n\n // Event listeners\n variantOptions.map(option => {\n option.addEventListener('change', event => {\n configureOptions(event.target);\n });\n });\n\n document.querySelectorAll('[data-variant-type] select').forEach(selectElem => {\n selectElem.addEventListener('change', event => {\n configureOptions(event.target);\n });\n })\n\n if (clearButton) {\n clearButton.addEventListener('click', () => {\n clearSelectedOptions();\n if (resetButton) resetButton.classList.remove('is-hidden');\n if (selectionPrompt) selectionPrompt.classList.remove('is-hidden');\n });\n }\n\n if (resetButton) {\n resetButton.addEventListener('click', () => {\n resetSelectedOptions();\n configureOptions();\n resetButton.classList.add('is-hidden');\n if (selectionPrompt) selectionPrompt.classList.remove('is-hidden');\n });\n }\n\n configureOptions();\n}\n\nfunction configureOptions(target = null) {\n if (!window.variantData) return;\n\n const targetType = target ? target.dataset.type : null;\n\n const selectedOptions = getSelectedOptions();\n if (Object.keys(selectedOptions).length == 0) return;\n\n const types = window.variantData[\"types\"];\n const products = window.variantData[\"products\"].filter(product => {\n for (const selectedOption of selectedOptions) {\n if (product[selectedOption.type] != selectedOption.value) {\n return false;\n }\n }\n return true;\n })\n\n const enabledValuesByType = {};\n for (const product of products) {\n for (const availableType of types) {\n if (target && targetType == availableType) continue;\n enabledValuesByType[availableType] = enabledValuesByType[availableType] || new Set();\n enabledValuesByType[availableType].add(product[availableType]);\n }\n }\n\n if (types.length > 1) {\n for (const enabledType of Object.keys(enabledValuesByType)) {\n document.querySelectorAll(`[data-variant-type=\"${enabledType}\"] [data-variant-option]`).forEach(optElem => {\n disable(optElem, !enabledValuesByType[enabledType].has(optElem.value));\n });\n }\n }\n\n const selectedProduct = checkForSelectedProduct(selectedOptions);\n if (selectedProduct) {\n load(selectedProduct.path);\n } else {\n if (resetButton) resetButton.classList.remove('is-hidden');\n if (selectionPrompt) selectionPrompt.classList.add('is-hidden');\n }\n}\n\nfunction getSelectedOptions() {\n const selectedOptions = [];\n document.querySelectorAll('[data-variant-type] [data-variant-option]').forEach(option => {\n if (option.selected || option.checked) {\n selectedOptions.push({ type: option.dataset.type, value: option.value });\n }\n });\n return selectedOptions;\n}\n\nfunction clearSelectedOptions() {\n const path = document.querySelector('[data-variant-clear-button]').dataset.clearPath;\n if (path) {\n load(path);\n } else {\n document.querySelectorAll('[data-variant-type] [data-variant-option]').forEach(option => {\n if (option.selected != undefined) {\n const select = option.closest(\"select\");\n if (select) {\n const options = select.querySelectorAll(\"option\");\n if (options.length > 0)\n options[0].selected = true;\n }\n }\n if (option.checked != undefined) {\n option.checked = false;\n }\n disable(option, false);\n });\n }\n}\n\nfunction resetSelectedOptions() {\n document.querySelectorAll('[data-variant-type] [data-variant-option]').forEach(option => {\n if (option.selected != undefined) {\n option.selected = option.dataset.selected == \"true\";\n }\n if (option.checked != undefined) {\n option.checked = option.dataset.checked == \"true\";\n }\n disable(option, false);\n });\n}\n\nfunction checkForSelectedProduct(selectedOptions) {\n const types = window.variantData[\"types\"];\n const products = window.variantData[\"products\"];\n\n for (const type of types) {\n if (!selectedOptions.find(option => option.type == type)) {\n return false;\n }\n }\n\n const selectedProduct = products.find(product => {\n for (const option of selectedOptions) {\n if (product[option.type] != option.value) {\n return false;\n }\n }\n return true;\n });\n\n return selectedProduct;\n}\n\nfunction load(path, callback) {\n if (window.location.pathname != path) {\n if (path == null) {\n path = window.location.pathname;\n }\n\n const element = document.querySelector('[data-remote-target=\"product\"]');\n setTimeout(() => {\n startLoader(element);\n }, 500);\n\n fetch(path, {\n headers: {\n \"Accept\": \"application/json\",\n },\n }).then(response => {\n return response.json();\n }).then(json => {\n pushVariantPathToHistory(path);\n\n if (element) element.innerHTML = json[\"html\"];\n\n const body = document.querySelector('body');\n body.replaceWith(body.cloneNode(true));\n\n document.dispatchEvent(new Event('DOMContentLoaded'));\n callback && callback();\n }).catch(error => console.log(error)).finally(() => {\n stopLoader(element);\n });\n }\n}\n\nfunction pushVariantPathToHistory(path) {\n if (window.location.pathname === path) { return }\n window.history.pushState(path, null, path);\n}\n\nfunction popVariantPathFromHistory(_event) {\n load(null)\n}\n\nfunction disable(option, bool) {\n option.disabled = bool;\n}\n","var win = window;\nexport var raf = win.requestAnimationFrame || win.webkitRequestAnimationFrame || win.mozRequestAnimationFrame || win.msRequestAnimationFrame || function (cb) {\n return setTimeout(cb, 16);\n};","var win = window;\nexport var caf = win.cancelAnimationFrame || win.mozCancelAnimationFrame || function (id) {\n clearTimeout(id);\n};","export function extend() {\n var obj,\n name,\n copy,\n target = arguments[0] || {},\n i = 1,\n length = arguments.length;\n for (; i < length; i++) {\n if ((obj = arguments[i]) !== null) {\n for (name in obj) {\n copy = obj[name];\n if (target === copy) {\n continue;\n } else if (copy !== undefined) {\n target[name] = copy;\n }\n }\n }\n }\n return target;\n}","export function checkStorageValue(value) {\n return ['true', 'false'].indexOf(value) >= 0 ? JSON.parse(value) : value;\n}","export function setLocalStorage(storage, key, value, access) {\n if (access) {\n try {\n storage.setItem(key, value);\n } catch (e) {}\n }\n return value;\n}","export function getBody() {\n var doc = document,\n body = doc.body;\n if (!body) {\n body = doc.createElement('body');\n body.fake = true;\n }\n return body;\n}","export var docElement = document.documentElement;","import { docElement } from './docElement.js';\nexport function setFakeBody(body) {\n var docOverflow = '';\n if (body.fake) {\n docOverflow = docElement.style.overflow;\n //avoid crashing IE8, if background image is used\n body.style.background = '';\n //Safari 5.13/5.1.4 OSX stops loading if ::-webkit-scrollbar is used and scrollbars are visible\n body.style.overflow = docElement.style.overflow = 'hidden';\n docElement.appendChild(body);\n }\n return docOverflow;\n}","import { docElement } from './docElement.js';\nexport function resetFakeBody(body, docOverflow) {\n if (body.fake) {\n body.remove();\n docElement.style.overflow = docOverflow;\n // Trigger layout so kinetic scrolling isn't disabled in iOS6+\n // eslint-disable-next-line\n docElement.offsetHeight;\n }\n}","// cross browsers addRule method\nimport { raf } from './raf.js';\nexport function addCSSRule(sheet, selector, rules, index) {\n // return raf(function() {\n 'insertRule' in sheet ? sheet.insertRule(selector + '{' + rules + '}', index) : sheet.addRule(selector, rules, index);\n // });\n}","export function getCssRulesLength(sheet) {\n var rule = 'insertRule' in sheet ? sheet.cssRules : sheet.rules;\n return rule.length;\n}","// https://toddmotto.com/ditch-the-array-foreach-call-nodelist-hack/\nexport function forEach(arr, callback, scope) {\n for (var i = 0, l = arr.length; i < l; i++) {\n callback.call(scope, arr[i], i);\n }\n}","export var classListSupport = ('classList' in document.createElement('_'));","import { classListSupport } from './classListSupport.js';\nvar hasClass = classListSupport ? function (el, str) {\n return el.classList.contains(str);\n} : function (el, str) {\n return el.className.indexOf(str) >= 0;\n};\nexport { classListSupport, hasClass };","import { classListSupport, hasClass } from './hasClass.js';\nvar addClass = classListSupport ? function (el, str) {\n if (!hasClass(el, str)) {\n el.classList.add(str);\n }\n} : function (el, str) {\n if (!hasClass(el, str)) {\n el.className += ' ' + str;\n }\n};\nexport { addClass };","import { classListSupport, hasClass } from './hasClass.js';\nvar removeClass = classListSupport ? function (el, str) {\n if (hasClass(el, str)) {\n el.classList.remove(str);\n }\n} : function (el, str) {\n if (hasClass(el, str)) {\n el.className = el.className.replace(str, '');\n }\n};\nexport { removeClass };","export function hasAttr(el, attr) {\n return el.hasAttribute(attr);\n}","export function getAttr(el, attr) {\n return el.getAttribute(attr);\n}","export function isNodeList(el) {\n // Only NodeList has the \"item()\" function\n return typeof el.item !== \"undefined\";\n}","import { isNodeList } from \"./isNodeList.js\";\nexport function setAttrs(els, attrs) {\n els = isNodeList(els) || els instanceof Array ? els : [els];\n if (Object.prototype.toString.call(attrs) !== '[object Object]') {\n return;\n }\n for (var i = els.length; i--;) {\n for (var key in attrs) {\n els[i].setAttribute(key, attrs[key]);\n }\n }\n}","import { isNodeList } from \"./isNodeList.js\";\nexport function removeAttrs(els, attrs) {\n els = isNodeList(els) || els instanceof Array ? els : [els];\n attrs = attrs instanceof Array ? attrs : [attrs];\n var attrLength = attrs.length;\n for (var i = els.length; i--;) {\n for (var j = attrLength; j--;) {\n els[i].removeAttribute(attrs[j]);\n }\n }\n}","export function arrayFromNodeList(nl) {\n var arr = [];\n for (var i = 0, l = nl.length; i < l; i++) {\n arr.push(nl[i]);\n }\n return arr;\n}","export function hideElement(el, forceHide) {\n if (el.style.display !== 'none') {\n el.style.display = 'none';\n }\n}","export function showElement(el, forceHide) {\n if (el.style.display === 'none') {\n el.style.display = '';\n }\n}","export function isVisible(el) {\n return window.getComputedStyle(el).display !== 'none';\n}","export function whichProperty(props) {\n if (typeof props === 'string') {\n var arr = [props],\n Props = props.charAt(0).toUpperCase() + props.substr(1),\n prefixes = ['Webkit', 'Moz', 'ms', 'O'];\n prefixes.forEach(function (prefix) {\n if (prefix !== 'ms' || props === 'transform') {\n arr.push(prefix + Props);\n }\n });\n props = arr;\n }\n var el = document.createElement('fakeelement'),\n len = props.length;\n for (var i = 0; i < props.length; i++) {\n var prop = props[i];\n if (el.style[prop] !== undefined) {\n return prop;\n }\n }\n return false; // explicit for ie9-\n}","// get transitionend, animationend based on transitionDuration\n// @propin: string\n// @propOut: string, first-letter uppercase\n// Usage: getEndProperty('WebkitTransitionDuration', 'Transition') => webkitTransitionEnd\nexport function getEndProperty(propIn, propOut) {\n var endProp = false;\n if (/^Webkit/.test(propIn)) {\n endProp = 'webkit' + propOut + 'End';\n } else if (/^O/.test(propIn)) {\n endProp = 'o' + propOut + 'End';\n } else if (propIn) {\n endProp = propOut.toLowerCase() + 'end';\n }\n return endProp;\n}","// Test via a getter in the options object to see if the passive property is accessed\nvar supportsPassive = false;\ntry {\n var opts = Object.defineProperty({}, 'passive', {\n get: function () {\n supportsPassive = true;\n }\n });\n window.addEventListener(\"test\", null, opts);\n} catch (e) {}\nexport var passiveOption = supportsPassive ? {\n passive: true\n} : false;","import { passiveOption } from './passiveOption.js';\nexport function addEvents(el, obj, preventScrolling) {\n for (var prop in obj) {\n var option = ['touchstart', 'touchmove'].indexOf(prop) >= 0 && !preventScrolling ? passiveOption : false;\n el.addEventListener(prop, obj[prop], option);\n }\n}","import { passiveOption } from './passiveOption.js';\nexport function removeEvents(el, obj) {\n for (var prop in obj) {\n var option = ['touchstart', 'touchmove'].indexOf(prop) >= 0 ? passiveOption : false;\n el.removeEventListener(prop, obj[prop], option);\n }\n}","export function Events() {\n return {\n topics: {},\n on: function (eventName, fn) {\n this.topics[eventName] = this.topics[eventName] || [];\n this.topics[eventName].push(fn);\n },\n off: function (eventName, fn) {\n if (this.topics[eventName]) {\n for (var i = 0; i < this.topics[eventName].length; i++) {\n if (this.topics[eventName][i] === fn) {\n this.topics[eventName].splice(i, 1);\n break;\n }\n }\n }\n },\n emit: function (eventName, data) {\n data.type = eventName;\n if (this.topics[eventName]) {\n this.topics[eventName].forEach(function (fn) {\n fn(data, eventName);\n });\n }\n }\n };\n}\n;","// Object.keys\nif (!Object.keys) {\n Object.keys = function (object) {\n var keys = [];\n for (var name in object) {\n if (Object.prototype.hasOwnProperty.call(object, name)) {\n keys.push(name);\n }\n }\n return keys;\n };\n}\n\n// ChildNode.remove\nif (!(\"remove\" in Element.prototype)) {\n Element.prototype.remove = function () {\n if (this.parentNode) {\n this.parentNode.removeChild(this);\n }\n };\n}\nimport { raf } from './helpers/raf.js';\nimport { caf } from './helpers/caf.js';\nimport { extend } from './helpers/extend.js';\nimport { checkStorageValue } from './helpers/checkStorageValue.js';\nimport { setLocalStorage } from './helpers/setLocalStorage.js';\nimport { getSlideId } from './helpers/getSlideId.js';\nimport { calc } from './helpers/calc.js';\nimport { percentageLayout } from './helpers/percentageLayout.js';\nimport { mediaquerySupport } from './helpers/mediaquerySupport.js';\nimport { createStyleSheet } from './helpers/createStyleSheet.js';\nimport { addCSSRule } from './helpers/addCSSRule.js';\nimport { removeCSSRule } from './helpers/removeCSSRule.js';\nimport { getCssRulesLength } from './helpers/getCssRulesLength.js';\nimport { toDegree } from './helpers/toDegree.js';\nimport { getTouchDirection } from './helpers/getTouchDirection.js';\nimport { forEach } from './helpers/forEach.js';\nimport { hasClass } from './helpers/hasClass.js';\nimport { addClass } from './helpers/addClass.js';\nimport { removeClass } from './helpers/removeClass.js';\nimport { hasAttr } from './helpers/hasAttr.js';\nimport { getAttr } from './helpers/getAttr.js';\nimport { setAttrs } from './helpers/setAttrs.js';\nimport { removeAttrs } from './helpers/removeAttrs.js';\nimport { arrayFromNodeList } from './helpers/arrayFromNodeList.js';\nimport { hideElement } from './helpers/hideElement.js';\nimport { showElement } from './helpers/showElement.js';\nimport { isVisible } from './helpers/isVisible.js';\nimport { whichProperty } from './helpers/whichProperty.js';\nimport { has3DTransforms } from './helpers/has3DTransforms.js';\nimport { getEndProperty } from './helpers/getEndProperty.js';\nimport { addEvents } from './helpers/addEvents.js';\nimport { removeEvents } from './helpers/removeEvents.js';\nimport { Events } from './helpers/events.js';\nimport { jsTransform } from './helpers/jsTransform.js';\nexport var tns = function (options) {\n options = extend({\n container: '.slider',\n mode: 'carousel',\n axis: 'horizontal',\n items: 1,\n gutter: 0,\n edgePadding: 0,\n fixedWidth: false,\n autoWidth: false,\n viewportMax: false,\n slideBy: 1,\n center: false,\n controls: true,\n controlsPosition: 'top',\n controlsText: ['prev', 'next'],\n controlsContainer: false,\n prevButton: false,\n nextButton: false,\n nav: true,\n navPosition: 'top',\n navContainer: false,\n navAsThumbnails: false,\n arrowKeys: false,\n speed: 300,\n autoplay: false,\n autoplayPosition: 'top',\n autoplayTimeout: 5000,\n autoplayDirection: 'forward',\n autoplayText: ['start', 'stop'],\n autoplayHoverPause: false,\n autoplayButton: false,\n autoplayButtonOutput: true,\n autoplayResetOnVisibility: true,\n animateIn: 'tns-fadeIn',\n animateOut: 'tns-fadeOut',\n animateNormal: 'tns-normal',\n animateDelay: false,\n loop: true,\n rewind: false,\n autoHeight: false,\n responsive: false,\n lazyload: false,\n lazyloadSelector: '.tns-lazy-img',\n touch: true,\n mouseDrag: false,\n swipeAngle: 15,\n nested: false,\n preventActionWhenRunning: false,\n preventScrollOnTouch: false,\n freezable: true,\n onInit: false,\n useLocalStorage: true,\n nonce: false\n }, options || {});\n var doc = document,\n win = window,\n KEYS = {\n ENTER: 13,\n SPACE: 32,\n LEFT: 37,\n RIGHT: 39\n },\n tnsStorage = {},\n localStorageAccess = options.useLocalStorage;\n if (localStorageAccess) {\n // check browser version and local storage access\n var browserInfo = navigator.userAgent;\n var uid = new Date();\n try {\n tnsStorage = win.localStorage;\n if (tnsStorage) {\n tnsStorage.setItem(uid, uid);\n localStorageAccess = tnsStorage.getItem(uid) == uid;\n tnsStorage.removeItem(uid);\n } else {\n localStorageAccess = false;\n }\n if (!localStorageAccess) {\n tnsStorage = {};\n }\n } catch (e) {\n localStorageAccess = false;\n }\n if (localStorageAccess) {\n // remove storage when browser version changes\n if (tnsStorage['tnsApp'] && tnsStorage['tnsApp'] !== browserInfo) {\n ['tC', 'tPL', 'tMQ', 'tTf', 't3D', 'tTDu', 'tTDe', 'tADu', 'tADe', 'tTE', 'tAE'].forEach(function (item) {\n tnsStorage.removeItem(item);\n });\n }\n // update browserInfo\n localStorage['tnsApp'] = browserInfo;\n }\n }\n var CALC = tnsStorage['tC'] ? checkStorageValue(tnsStorage['tC']) : setLocalStorage(tnsStorage, 'tC', calc(), localStorageAccess),\n PERCENTAGELAYOUT = tnsStorage['tPL'] ? checkStorageValue(tnsStorage['tPL']) : setLocalStorage(tnsStorage, 'tPL', percentageLayout(), localStorageAccess),\n CSSMQ = tnsStorage['tMQ'] ? checkStorageValue(tnsStorage['tMQ']) : setLocalStorage(tnsStorage, 'tMQ', mediaquerySupport(), localStorageAccess),\n TRANSFORM = tnsStorage['tTf'] ? checkStorageValue(tnsStorage['tTf']) : setLocalStorage(tnsStorage, 'tTf', whichProperty('transform'), localStorageAccess),\n HAS3DTRANSFORMS = tnsStorage['t3D'] ? checkStorageValue(tnsStorage['t3D']) : setLocalStorage(tnsStorage, 't3D', has3DTransforms(TRANSFORM), localStorageAccess),\n TRANSITIONDURATION = tnsStorage['tTDu'] ? checkStorageValue(tnsStorage['tTDu']) : setLocalStorage(tnsStorage, 'tTDu', whichProperty('transitionDuration'), localStorageAccess),\n TRANSITIONDELAY = tnsStorage['tTDe'] ? checkStorageValue(tnsStorage['tTDe']) : setLocalStorage(tnsStorage, 'tTDe', whichProperty('transitionDelay'), localStorageAccess),\n ANIMATIONDURATION = tnsStorage['tADu'] ? checkStorageValue(tnsStorage['tADu']) : setLocalStorage(tnsStorage, 'tADu', whichProperty('animationDuration'), localStorageAccess),\n ANIMATIONDELAY = tnsStorage['tADe'] ? checkStorageValue(tnsStorage['tADe']) : setLocalStorage(tnsStorage, 'tADe', whichProperty('animationDelay'), localStorageAccess),\n TRANSITIONEND = tnsStorage['tTE'] ? checkStorageValue(tnsStorage['tTE']) : setLocalStorage(tnsStorage, 'tTE', getEndProperty(TRANSITIONDURATION, 'Transition'), localStorageAccess),\n ANIMATIONEND = tnsStorage['tAE'] ? checkStorageValue(tnsStorage['tAE']) : setLocalStorage(tnsStorage, 'tAE', getEndProperty(ANIMATIONDURATION, 'Animation'), localStorageAccess);\n\n // get element nodes from selectors\n var supportConsoleWarn = win.console && typeof win.console.warn === \"function\",\n tnsList = ['container', 'controlsContainer', 'prevButton', 'nextButton', 'navContainer', 'autoplayButton'],\n optionsElements = {};\n tnsList.forEach(function (item) {\n if (typeof options[item] === 'string') {\n var str = options[item],\n el = doc.querySelector(str);\n optionsElements[item] = str;\n if (el && el.nodeName) {\n options[item] = el;\n } else {\n if (supportConsoleWarn) {\n console.warn('Can\\'t find', options[item]);\n }\n return;\n }\n }\n });\n\n // make sure at least 1 slide\n if (options.container.children.length < 1) {\n if (supportConsoleWarn) {\n console.warn('No slides found in', options.container);\n }\n return;\n }\n\n // update options\n var responsive = options.responsive,\n nested = options.nested,\n carousel = options.mode === 'carousel' ? true : false;\n if (responsive) {\n // apply responsive[0] to options and remove it\n if (0 in responsive) {\n options = extend(options, responsive[0]);\n delete responsive[0];\n }\n var responsiveTem = {};\n for (var key in responsive) {\n var val = responsive[key];\n // update responsive\n // from: 300: 2\n // to:\n // 300: {\n // items: 2\n // }\n val = typeof val === 'number' ? {\n items: val\n } : val;\n responsiveTem[key] = val;\n }\n responsive = responsiveTem;\n responsiveTem = null;\n }\n\n // update options\n function updateOptions(obj) {\n for (var key in obj) {\n if (!carousel) {\n if (key === 'slideBy') {\n obj[key] = 'page';\n }\n if (key === 'edgePadding') {\n obj[key] = false;\n }\n if (key === 'autoHeight') {\n obj[key] = false;\n }\n }\n\n // update responsive options\n if (key === 'responsive') {\n updateOptions(obj[key]);\n }\n }\n }\n if (!carousel) {\n updateOptions(options);\n }\n\n // === define and set variables ===\n if (!carousel) {\n options.axis = 'horizontal';\n options.slideBy = 'page';\n options.edgePadding = false;\n var animateIn = options.animateIn,\n animateOut = options.animateOut,\n animateDelay = options.animateDelay,\n animateNormal = options.animateNormal;\n }\n var horizontal = options.axis === 'horizontal' ? true : false,\n outerWrapper = doc.createElement('div'),\n innerWrapper = doc.createElement('div'),\n middleWrapper,\n container = options.container,\n containerParent = container.parentNode,\n containerHTML = container.outerHTML,\n slideItems = container.children,\n slideCount = slideItems.length,\n breakpointZone,\n windowWidth = getWindowWidth(),\n isOn = false;\n if (responsive) {\n setBreakpointZone();\n }\n if (carousel) {\n container.className += ' tns-vpfix';\n }\n\n // fixedWidth: viewport > rightBoundary > indexMax\n var autoWidth = options.autoWidth,\n fixedWidth = getOption('fixedWidth'),\n edgePadding = getOption('edgePadding'),\n gutter = getOption('gutter'),\n viewport = getViewportWidth(),\n center = getOption('center'),\n items = !autoWidth ? Math.floor(getOption('items')) : 1,\n slideBy = getOption('slideBy'),\n viewportMax = options.viewportMax || options.fixedWidthViewportWidth,\n arrowKeys = getOption('arrowKeys'),\n speed = getOption('speed'),\n rewind = options.rewind,\n loop = rewind ? false : options.loop,\n autoHeight = getOption('autoHeight'),\n controls = getOption('controls'),\n controlsText = getOption('controlsText'),\n nav = getOption('nav'),\n touch = getOption('touch'),\n mouseDrag = getOption('mouseDrag'),\n autoplay = getOption('autoplay'),\n autoplayTimeout = getOption('autoplayTimeout'),\n autoplayText = getOption('autoplayText'),\n autoplayHoverPause = getOption('autoplayHoverPause'),\n autoplayResetOnVisibility = getOption('autoplayResetOnVisibility'),\n sheet = createStyleSheet(null, getOption('nonce')),\n lazyload = options.lazyload,\n lazyloadSelector = options.lazyloadSelector,\n slidePositions,\n // collection of slide positions\n slideItemsOut = [],\n cloneCount = loop ? getCloneCountForLoop() : 0,\n slideCountNew = !carousel ? slideCount + cloneCount : slideCount + cloneCount * 2,\n hasRightDeadZone = (fixedWidth || autoWidth) && !loop ? true : false,\n rightBoundary = fixedWidth ? getRightBoundary() : null,\n updateIndexBeforeTransform = !carousel || !loop ? true : false,\n // transform\n transformAttr = horizontal ? 'left' : 'top',\n transformPrefix = '',\n transformPostfix = '',\n // index\n getIndexMax = function () {\n if (fixedWidth) {\n return function () {\n return center && !loop ? slideCount - 1 : Math.ceil(-rightBoundary / (fixedWidth + gutter));\n };\n } else if (autoWidth) {\n return function () {\n for (var i = 0; i < slideCountNew; i++) {\n if (slidePositions[i] >= -rightBoundary) {\n return i;\n }\n }\n };\n } else {\n return function () {\n if (center && carousel && !loop) {\n return slideCount - 1;\n } else {\n return loop || carousel ? Math.max(0, slideCountNew - Math.ceil(items)) : slideCountNew - 1;\n }\n };\n }\n }(),\n index = getStartIndex(getOption('startIndex')),\n indexCached = index,\n displayIndex = getCurrentSlide(),\n indexMin = 0,\n indexMax = !autoWidth ? getIndexMax() : null,\n // resize\n resizeTimer,\n preventActionWhenRunning = options.preventActionWhenRunning,\n swipeAngle = options.swipeAngle,\n moveDirectionExpected = swipeAngle ? '?' : true,\n running = false,\n onInit = options.onInit,\n events = new Events(),\n // id, class\n newContainerClasses = ' tns-slider tns-' + options.mode,\n slideId = container.id || getSlideId(),\n disable = getOption('disable'),\n disabled = false,\n freezable = options.freezable,\n freeze = freezable && !autoWidth ? getFreeze() : false,\n frozen = false,\n controlsEvents = {\n 'click': onControlsClick,\n 'keydown': onControlsKeydown\n },\n navEvents = {\n 'click': onNavClick,\n 'keydown': onNavKeydown\n },\n hoverEvents = {\n 'mouseover': mouseoverPause,\n 'mouseout': mouseoutRestart\n },\n visibilityEvent = {\n 'visibilitychange': onVisibilityChange\n },\n docmentKeydownEvent = {\n 'keydown': onDocumentKeydown\n },\n touchEvents = {\n 'touchstart': onPanStart,\n 'touchmove': onPanMove,\n 'touchend': onPanEnd,\n 'touchcancel': onPanEnd\n },\n dragEvents = {\n 'mousedown': onPanStart,\n 'mousemove': onPanMove,\n 'mouseup': onPanEnd,\n 'mouseleave': onPanEnd\n },\n hasControls = hasOption('controls'),\n hasNav = hasOption('nav'),\n navAsThumbnails = autoWidth ? true : options.navAsThumbnails,\n hasAutoplay = hasOption('autoplay'),\n hasTouch = hasOption('touch'),\n hasMouseDrag = hasOption('mouseDrag'),\n slideActiveClass = 'tns-slide-active',\n slideClonedClass = 'tns-slide-cloned',\n imgCompleteClass = 'tns-complete',\n imgEvents = {\n 'load': onImgLoaded,\n 'error': onImgFailed\n },\n imgsComplete,\n liveregionCurrent,\n preventScroll = options.preventScrollOnTouch === 'force' ? true : false;\n\n // controls\n if (hasControls) {\n var controlsContainer = options.controlsContainer,\n controlsContainerHTML = options.controlsContainer ? options.controlsContainer.outerHTML : '',\n prevButton = options.prevButton,\n nextButton = options.nextButton,\n prevButtonHTML = options.prevButton ? options.prevButton.outerHTML : '',\n nextButtonHTML = options.nextButton ? options.nextButton.outerHTML : '',\n prevIsButton,\n nextIsButton;\n }\n\n // nav\n if (hasNav) {\n var navContainer = options.navContainer,\n navContainerHTML = options.navContainer ? options.navContainer.outerHTML : '',\n navItems,\n pages = autoWidth ? slideCount : getPages(),\n pagesCached = 0,\n navClicked = -1,\n navCurrentIndex = getCurrentNavIndex(),\n navCurrentIndexCached = navCurrentIndex,\n navActiveClass = 'tns-nav-active',\n navStr = 'Carousel Page ',\n navStrCurrent = ' (Current Slide)';\n }\n\n // autoplay\n if (hasAutoplay) {\n var autoplayDirection = options.autoplayDirection === 'forward' ? 1 : -1,\n autoplayButton = options.autoplayButton,\n autoplayButtonHTML = options.autoplayButton ? options.autoplayButton.outerHTML : '',\n autoplayHtmlStrings = ['<span class=\\'tns-visually-hidden\\'>', ' animation</span>'],\n autoplayTimer,\n animating,\n autoplayHoverPaused,\n autoplayUserPaused,\n autoplayVisibilityPaused;\n }\n if (hasTouch || hasMouseDrag) {\n var initPosition = {},\n lastPosition = {},\n translateInit,\n disX,\n disY,\n panStart = false,\n rafIndex,\n getDist = horizontal ? function (a, b) {\n return a.x - b.x;\n } : function (a, b) {\n return a.y - b.y;\n };\n }\n\n // disable slider when slidecount <= items\n if (!autoWidth) {\n resetVariblesWhenDisable(disable || freeze);\n }\n if (TRANSFORM) {\n transformAttr = TRANSFORM;\n transformPrefix = 'translate';\n if (HAS3DTRANSFORMS) {\n transformPrefix += horizontal ? '3d(' : '3d(0px, ';\n transformPostfix = horizontal ? ', 0px, 0px)' : ', 0px)';\n } else {\n transformPrefix += horizontal ? 'X(' : 'Y(';\n transformPostfix = ')';\n }\n }\n if (carousel) {\n container.className = container.className.replace('tns-vpfix', '');\n }\n initStructure();\n initSheet();\n initSliderTransform();\n\n // === COMMON FUNCTIONS === //\n function resetVariblesWhenDisable(condition) {\n if (condition) {\n controls = nav = touch = mouseDrag = arrowKeys = autoplay = autoplayHoverPause = autoplayResetOnVisibility = false;\n }\n }\n function getCurrentSlide() {\n var tem = carousel ? index - cloneCount : index;\n while (tem < 0) {\n tem += slideCount;\n }\n return tem % slideCount + 1;\n }\n function getStartIndex(ind) {\n ind = ind ? Math.max(0, Math.min(loop ? slideCount - 1 : slideCount - items, ind)) : 0;\n return carousel ? ind + cloneCount : ind;\n }\n function getAbsIndex(i) {\n if (i == null) {\n i = index;\n }\n if (carousel) {\n i -= cloneCount;\n }\n while (i < 0) {\n i += slideCount;\n }\n return Math.floor(i % slideCount);\n }\n function getCurrentNavIndex() {\n var absIndex = getAbsIndex(),\n result;\n result = navAsThumbnails ? absIndex : fixedWidth || autoWidth ? Math.ceil((absIndex + 1) * pages / slideCount - 1) : Math.floor(absIndex / items);\n\n // set active nav to the last one when reaches the right edge\n if (!loop && carousel && index === indexMax) {\n result = pages - 1;\n }\n return result;\n }\n function getItemsMax() {\n // fixedWidth or autoWidth while viewportMax is not available\n if (autoWidth || fixedWidth && !viewportMax) {\n return slideCount - 1;\n // most cases\n } else {\n var str = fixedWidth ? 'fixedWidth' : 'items',\n arr = [];\n if (fixedWidth || options[str] < slideCount) {\n arr.push(options[str]);\n }\n if (responsive) {\n for (var bp in responsive) {\n var tem = responsive[bp][str];\n if (tem && (fixedWidth || tem < slideCount)) {\n arr.push(tem);\n }\n }\n }\n if (!arr.length) {\n arr.push(0);\n }\n return Math.ceil(fixedWidth ? viewportMax / Math.min.apply(null, arr) : Math.max.apply(null, arr));\n }\n }\n function getCloneCountForLoop() {\n var itemsMax = getItemsMax(),\n result = carousel ? Math.ceil((itemsMax * 5 - slideCount) / 2) : itemsMax * 4 - slideCount;\n result = Math.max(itemsMax, result);\n return hasOption('edgePadding') ? result + 1 : result;\n }\n function getWindowWidth() {\n return win.innerWidth || doc.documentElement.clientWidth || doc.body.clientWidth;\n }\n function getInsertPosition(pos) {\n return pos === 'top' ? 'afterbegin' : 'beforeend';\n }\n function getClientWidth(el) {\n if (el == null) {\n return;\n }\n var div = doc.createElement('div'),\n rect,\n width;\n el.appendChild(div);\n rect = div.getBoundingClientRect();\n width = rect.right - rect.left;\n div.remove();\n return width || getClientWidth(el.parentNode);\n }\n function getViewportWidth() {\n var gap = edgePadding ? edgePadding * 2 - gutter : 0;\n return getClientWidth(containerParent) - gap;\n }\n function hasOption(item) {\n if (options[item]) {\n return true;\n } else {\n if (responsive) {\n for (var bp in responsive) {\n if (responsive[bp][item]) {\n return true;\n }\n }\n }\n return false;\n }\n }\n\n // get option:\n // fixed width: viewport, fixedWidth, gutter => items\n // others: window width => all variables\n // all: items => slideBy\n function getOption(item, ww) {\n if (ww == null) {\n ww = windowWidth;\n }\n if (item === 'items' && fixedWidth) {\n return Math.floor((viewport + gutter) / (fixedWidth + gutter)) || 1;\n } else {\n var result = options[item];\n if (responsive) {\n for (var bp in responsive) {\n // bp: convert string to number\n if (ww >= parseInt(bp)) {\n if (item in responsive[bp]) {\n result = responsive[bp][item];\n }\n }\n }\n }\n if (item === 'slideBy' && result === 'page') {\n result = getOption('items');\n }\n if (!carousel && (item === 'slideBy' || item === 'items')) {\n result = Math.floor(result);\n }\n return result;\n }\n }\n function getSlideMarginLeft(i) {\n return CALC ? CALC + '(' + i * 100 + '% / ' + slideCountNew + ')' : i * 100 / slideCountNew + '%';\n }\n function getInnerWrapperStyles(edgePaddingTem, gutterTem, fixedWidthTem, speedTem, autoHeightBP) {\n var str = '';\n if (edgePaddingTem !== undefined) {\n var gap = edgePaddingTem;\n if (gutterTem) {\n gap -= gutterTem;\n }\n str = horizontal ? 'margin: 0 ' + gap + 'px 0 ' + edgePaddingTem + 'px;' : 'margin: ' + edgePaddingTem + 'px 0 ' + gap + 'px 0;';\n } else if (gutterTem && !fixedWidthTem) {\n var gutterTemUnit = '-' + gutterTem + 'px',\n dir = horizontal ? gutterTemUnit + ' 0 0' : '0 ' + gutterTemUnit + ' 0';\n str = 'margin: 0 ' + dir + ';';\n }\n if (!carousel && autoHeightBP && TRANSITIONDURATION && speedTem) {\n str += getTransitionDurationStyle(speedTem);\n }\n return str;\n }\n function getContainerWidth(fixedWidthTem, gutterTem, itemsTem) {\n if (fixedWidthTem) {\n return (fixedWidthTem + gutterTem) * slideCountNew + 'px';\n } else {\n return CALC ? CALC + '(' + slideCountNew * 100 + '% / ' + itemsTem + ')' : slideCountNew * 100 / itemsTem + '%';\n }\n }\n function getSlideWidthStyle(fixedWidthTem, gutterTem, itemsTem) {\n var width;\n if (fixedWidthTem) {\n width = fixedWidthTem + gutterTem + 'px';\n } else {\n if (!carousel) {\n itemsTem = Math.floor(itemsTem);\n }\n var dividend = carousel ? slideCountNew : itemsTem;\n width = CALC ? CALC + '(100% / ' + dividend + ')' : 100 / dividend + '%';\n }\n width = 'width:' + width;\n\n // inner slider: overwrite outer slider styles\n return nested !== 'inner' ? width + ';' : width + ' !important;';\n }\n function getSlideGutterStyle(gutterTem) {\n var str = '';\n\n // gutter maybe interger || 0\n // so can't use 'if (gutter)'\n if (gutterTem !== false) {\n var prop = horizontal ? 'padding-' : 'margin-',\n dir = horizontal ? 'right' : 'bottom';\n str = prop + dir + ': ' + gutterTem + 'px;';\n }\n return str;\n }\n function getCSSPrefix(name, num) {\n var prefix = name.substring(0, name.length - num).toLowerCase();\n if (prefix) {\n prefix = '-' + prefix + '-';\n }\n return prefix;\n }\n function getTransitionDurationStyle(speed) {\n return getCSSPrefix(TRANSITIONDURATION, 18) + 'transition-duration:' + speed / 1000 + 's;';\n }\n function getAnimationDurationStyle(speed) {\n return getCSSPrefix(ANIMATIONDURATION, 17) + 'animation-duration:' + speed / 1000 + 's;';\n }\n function initStructure() {\n var classOuter = 'tns-outer',\n classInner = 'tns-inner',\n hasGutter = hasOption('gutter');\n outerWrapper.className = classOuter;\n innerWrapper.className = classInner;\n outerWrapper.id = slideId + '-ow';\n innerWrapper.id = slideId + '-iw';\n\n // set container properties\n if (container.id === '') {\n container.id = slideId;\n }\n newContainerClasses += PERCENTAGELAYOUT || autoWidth ? ' tns-subpixel' : ' tns-no-subpixel';\n newContainerClasses += CALC ? ' tns-calc' : ' tns-no-calc';\n if (autoWidth) {\n newContainerClasses += ' tns-autowidth';\n }\n newContainerClasses += ' tns-' + options.axis;\n container.className += newContainerClasses;\n\n // add constrain layer for carousel\n if (carousel) {\n middleWrapper = doc.createElement('div');\n middleWrapper.id = slideId + '-mw';\n middleWrapper.className = 'tns-ovh';\n outerWrapper.appendChild(middleWrapper);\n middleWrapper.appendChild(innerWrapper);\n } else {\n outerWrapper.appendChild(innerWrapper);\n }\n if (autoHeight) {\n var wp = middleWrapper ? middleWrapper : innerWrapper;\n wp.className += ' tns-ah';\n }\n containerParent.insertBefore(outerWrapper, container);\n innerWrapper.appendChild(container);\n\n // add id, class, aria attributes\n // before clone slides\n forEach(slideItems, function (item, i) {\n addClass(item, 'tns-item');\n if (!item.id) {\n item.id = slideId + '-item' + i;\n }\n if (!carousel && animateNormal) {\n addClass(item, animateNormal);\n }\n setAttrs(item, {\n 'aria-hidden': 'true',\n 'tabindex': '-1'\n });\n });\n\n // ## clone slides\n // carousel: n + slides + n\n // gallery: slides + n\n if (cloneCount) {\n var fragmentBefore = doc.createDocumentFragment(),\n fragmentAfter = doc.createDocumentFragment();\n for (var j = cloneCount; j--;) {\n var num = j % slideCount,\n cloneFirst = slideItems[num].cloneNode(true);\n addClass(cloneFirst, slideClonedClass);\n removeAttrs(cloneFirst, 'id');\n fragmentAfter.insertBefore(cloneFirst, fragmentAfter.firstChild);\n if (carousel) {\n var cloneLast = slideItems[slideCount - 1 - num].cloneNode(true);\n addClass(cloneLast, slideClonedClass);\n removeAttrs(cloneLast, 'id');\n fragmentBefore.appendChild(cloneLast);\n }\n }\n container.insertBefore(fragmentBefore, container.firstChild);\n container.appendChild(fragmentAfter);\n slideItems = container.children;\n }\n }\n function initSliderTransform() {\n // ## images loaded/failed\n if (hasOption('autoHeight') || autoWidth || !horizontal) {\n var imgs = container.querySelectorAll('img');\n\n // add img load event listener\n forEach(imgs, function (img) {\n var src = img.src;\n if (!lazyload) {\n // not data img\n if (src && src.indexOf('data:image') < 0) {\n img.src = '';\n addEvents(img, imgEvents);\n addClass(img, 'loading');\n img.src = src;\n // data img\n } else {\n imgLoaded(img);\n }\n }\n });\n\n // set imgsComplete\n raf(function () {\n imgsLoadedCheck(arrayFromNodeList(imgs), function () {\n imgsComplete = true;\n });\n });\n\n // reset imgs for auto height: check visible imgs only\n if (hasOption('autoHeight')) {\n imgs = getImageArray(index, Math.min(index + items - 1, slideCountNew - 1));\n }\n lazyload ? initSliderTransformStyleCheck() : raf(function () {\n imgsLoadedCheck(arrayFromNodeList(imgs), initSliderTransformStyleCheck);\n });\n } else {\n // set container transform property\n if (carousel) {\n doContainerTransformSilent();\n }\n\n // update slider tools and events\n initTools();\n initEvents();\n }\n }\n function initSliderTransformStyleCheck() {\n if (autoWidth && slideCount > 1) {\n // check styles application\n var num = loop ? index : slideCount - 1;\n (function stylesApplicationCheck() {\n var left = slideItems[num].getBoundingClientRect().left;\n var right = slideItems[num - 1].getBoundingClientRect().right;\n Math.abs(left - right) <= 1 ? initSliderTransformCore() : setTimeout(function () {\n stylesApplicationCheck();\n }, 16);\n })();\n } else {\n initSliderTransformCore();\n }\n }\n function initSliderTransformCore() {\n // run Fn()s which are rely on image loading\n if (!horizontal || autoWidth) {\n setSlidePositions();\n if (autoWidth) {\n rightBoundary = getRightBoundary();\n if (freezable) {\n freeze = getFreeze();\n }\n indexMax = getIndexMax(); // <= slidePositions, rightBoundary <=\n resetVariblesWhenDisable(disable || freeze);\n } else {\n updateContentWrapperHeight();\n }\n }\n\n // set container transform property\n if (carousel) {\n doContainerTransformSilent();\n }\n\n // update slider tools and events\n initTools();\n initEvents();\n }\n function initSheet() {\n // gallery:\n // set animation classes and left value for gallery slider\n if (!carousel) {\n for (var i = index, l = index + Math.min(slideCount, items); i < l; i++) {\n var item = slideItems[i];\n item.style.left = (i - index) * 100 / items + '%';\n addClass(item, animateIn);\n removeClass(item, animateNormal);\n }\n }\n\n // #### LAYOUT\n\n // ## INLINE-BLOCK VS FLOAT\n\n // ## PercentageLayout:\n // slides: inline-block\n // remove blank space between slides by set font-size: 0\n\n // ## Non PercentageLayout:\n // slides: float\n // margin-right: -100%\n // margin-left: ~\n\n // Resource: https://docs.google.com/spreadsheets/d/147up245wwTXeQYve3BRSAD4oVcvQmuGsFteJOeA5xNQ/edit?usp=sharing\n if (horizontal) {\n if (PERCENTAGELAYOUT || autoWidth) {\n addCSSRule(sheet, '#' + slideId + ' > .tns-item', 'font-size:' + win.getComputedStyle(slideItems[0]).fontSize + ';', getCssRulesLength(sheet));\n addCSSRule(sheet, '#' + slideId, 'font-size:0;', getCssRulesLength(sheet));\n } else if (carousel) {\n forEach(slideItems, function (slide, i) {\n slide.style.marginLeft = getSlideMarginLeft(i);\n });\n }\n }\n\n // ## BASIC STYLES\n if (CSSMQ) {\n // middle wrapper style\n if (TRANSITIONDURATION) {\n var str = middleWrapper && options.autoHeight ? getTransitionDurationStyle(options.speed) : '';\n addCSSRule(sheet, '#' + slideId + '-mw', str, getCssRulesLength(sheet));\n }\n\n // inner wrapper styles\n str = getInnerWrapperStyles(options.edgePadding, options.gutter, options.fixedWidth, options.speed, options.autoHeight);\n addCSSRule(sheet, '#' + slideId + '-iw', str, getCssRulesLength(sheet));\n\n // container styles\n if (carousel) {\n str = horizontal && !autoWidth ? 'width:' + getContainerWidth(options.fixedWidth, options.gutter, options.items) + ';' : '';\n if (TRANSITIONDURATION) {\n str += getTransitionDurationStyle(speed);\n }\n addCSSRule(sheet, '#' + slideId, str, getCssRulesLength(sheet));\n }\n\n // slide styles\n str = horizontal && !autoWidth ? getSlideWidthStyle(options.fixedWidth, options.gutter, options.items) : '';\n if (options.gutter) {\n str += getSlideGutterStyle(options.gutter);\n }\n // set gallery items transition-duration\n if (!carousel) {\n if (TRANSITIONDURATION) {\n str += getTransitionDurationStyle(speed);\n }\n if (ANIMATIONDURATION) {\n str += getAnimationDurationStyle(speed);\n }\n }\n if (str) {\n addCSSRule(sheet, '#' + slideId + ' > .tns-item', str, getCssRulesLength(sheet));\n }\n\n // non CSS mediaqueries: IE8\n // ## update inner wrapper, container, slides if needed\n // set inline styles for inner wrapper & container\n // insert stylesheet (one line) for slides only (since slides are many)\n } else {\n // middle wrapper styles\n update_carousel_transition_duration();\n\n // inner wrapper styles\n innerWrapper.style.cssText = getInnerWrapperStyles(edgePadding, gutter, fixedWidth, autoHeight);\n\n // container styles\n if (carousel && horizontal && !autoWidth) {\n container.style.width = getContainerWidth(fixedWidth, gutter, items);\n }\n\n // slide styles\n var str = horizontal && !autoWidth ? getSlideWidthStyle(fixedWidth, gutter, items) : '';\n if (gutter) {\n str += getSlideGutterStyle(gutter);\n }\n\n // append to the last line\n if (str) {\n addCSSRule(sheet, '#' + slideId + ' > .tns-item', str, getCssRulesLength(sheet));\n }\n }\n\n // ## MEDIAQUERIES\n if (responsive && CSSMQ) {\n for (var bp in responsive) {\n // bp: convert string to number\n bp = parseInt(bp);\n var opts = responsive[bp],\n str = '',\n middleWrapperStr = '',\n innerWrapperStr = '',\n containerStr = '',\n slideStr = '',\n itemsBP = !autoWidth ? getOption('items', bp) : null,\n fixedWidthBP = getOption('fixedWidth', bp),\n speedBP = getOption('speed', bp),\n edgePaddingBP = getOption('edgePadding', bp),\n autoHeightBP = getOption('autoHeight', bp),\n gutterBP = getOption('gutter', bp);\n\n // middle wrapper string\n if (TRANSITIONDURATION && middleWrapper && getOption('autoHeight', bp) && 'speed' in opts) {\n middleWrapperStr = '#' + slideId + '-mw{' + getTransitionDurationStyle(speedBP) + '}';\n }\n\n // inner wrapper string\n if ('edgePadding' in opts || 'gutter' in opts) {\n innerWrapperStr = '#' + slideId + '-iw{' + getInnerWrapperStyles(edgePaddingBP, gutterBP, fixedWidthBP, speedBP, autoHeightBP) + '}';\n }\n\n // container string\n if (carousel && horizontal && !autoWidth && ('fixedWidth' in opts || 'items' in opts || fixedWidth && 'gutter' in opts)) {\n containerStr = 'width:' + getContainerWidth(fixedWidthBP, gutterBP, itemsBP) + ';';\n }\n if (TRANSITIONDURATION && 'speed' in opts) {\n containerStr += getTransitionDurationStyle(speedBP);\n }\n if (containerStr) {\n containerStr = '#' + slideId + '{' + containerStr + '}';\n }\n\n // slide string\n if ('fixedWidth' in opts || fixedWidth && 'gutter' in opts || !carousel && 'items' in opts) {\n slideStr += getSlideWidthStyle(fixedWidthBP, gutterBP, itemsBP);\n }\n if ('gutter' in opts) {\n slideStr += getSlideGutterStyle(gutterBP);\n }\n // set gallery items transition-duration\n if (!carousel && 'speed' in opts) {\n if (TRANSITIONDURATION) {\n slideStr += getTransitionDurationStyle(speedBP);\n }\n if (ANIMATIONDURATION) {\n slideStr += getAnimationDurationStyle(speedBP);\n }\n }\n if (slideStr) {\n slideStr = '#' + slideId + ' > .tns-item{' + slideStr + '}';\n }\n\n // add up\n str = middleWrapperStr + innerWrapperStr + containerStr + slideStr;\n if (str) {\n sheet.insertRule('@media (min-width: ' + bp / 16 + 'em) {' + str + '}', sheet.cssRules.length);\n }\n }\n }\n }\n function initTools() {\n // == slides ==\n updateSlideStatus();\n\n // == live region ==\n outerWrapper.insertAdjacentHTML('afterbegin', '<div class=\"tns-liveregion tns-visually-hidden\" aria-live=\"polite\" aria-atomic=\"true\">slide <span class=\"current\">' + getLiveRegionStr() + '</span> of ' + slideCount + '</div>');\n liveregionCurrent = outerWrapper.querySelector('.tns-liveregion .current');\n\n // == autoplayInit ==\n if (hasAutoplay) {\n var txt = autoplay ? 'stop' : 'start';\n if (autoplayButton) {\n setAttrs(autoplayButton, {\n 'data-action': txt\n });\n } else if (options.autoplayButtonOutput) {\n outerWrapper.insertAdjacentHTML(getInsertPosition(options.autoplayPosition), '<button type=\"button\" data-action=\"' + txt + '\">' + autoplayHtmlStrings[0] + txt + autoplayHtmlStrings[1] + autoplayText[0] + '</button>');\n autoplayButton = outerWrapper.querySelector('[data-action]');\n }\n\n // add event\n if (autoplayButton) {\n addEvents(autoplayButton, {\n 'click': toggleAutoplay\n });\n }\n if (autoplay) {\n startAutoplay();\n if (autoplayHoverPause) {\n addEvents(container, hoverEvents);\n }\n if (autoplayResetOnVisibility) {\n addEvents(container, visibilityEvent);\n }\n }\n }\n\n // == navInit ==\n if (hasNav) {\n var initIndex = !carousel ? 0 : cloneCount;\n // customized nav\n // will not hide the navs in case they're thumbnails\n if (navContainer) {\n setAttrs(navContainer, {\n 'aria-label': 'Carousel Pagination'\n });\n navItems = navContainer.children;\n forEach(navItems, function (item, i) {\n setAttrs(item, {\n 'data-nav': i,\n 'tabindex': '-1',\n 'aria-label': navStr + (i + 1),\n 'aria-controls': slideId\n });\n });\n\n // generated nav\n } else {\n var navHtml = '',\n hiddenStr = navAsThumbnails ? '' : 'style=\"display:none\"';\n for (var i = 0; i < slideCount; i++) {\n // hide nav items by default\n navHtml += '<button type=\"button\" data-nav=\"' + i + '\" tabindex=\"-1\" aria-controls=\"' + slideId + '\" ' + hiddenStr + ' aria-label=\"' + navStr + (i + 1) + '\"></button>';\n }\n navHtml = '<div class=\"tns-nav\" aria-label=\"Carousel Pagination\">' + navHtml + '</div>';\n outerWrapper.insertAdjacentHTML(getInsertPosition(options.navPosition), navHtml);\n navContainer = outerWrapper.querySelector('.tns-nav');\n navItems = navContainer.children;\n }\n updateNavVisibility();\n\n // add transition\n if (TRANSITIONDURATION) {\n var prefix = TRANSITIONDURATION.substring(0, TRANSITIONDURATION.length - 18).toLowerCase(),\n str = 'transition: all ' + speed / 1000 + 's';\n if (prefix) {\n str = '-' + prefix + '-' + str;\n }\n addCSSRule(sheet, '[aria-controls^=' + slideId + '-item]', str, getCssRulesLength(sheet));\n }\n setAttrs(navItems[navCurrentIndex], {\n 'aria-label': navStr + (navCurrentIndex + 1) + navStrCurrent\n });\n removeAttrs(navItems[navCurrentIndex], 'tabindex');\n addClass(navItems[navCurrentIndex], navActiveClass);\n\n // add events\n addEvents(navContainer, navEvents);\n }\n\n // == controlsInit ==\n if (hasControls) {\n if (!controlsContainer && (!prevButton || !nextButton)) {\n outerWrapper.insertAdjacentHTML(getInsertPosition(options.controlsPosition), '<div class=\"tns-controls\" aria-label=\"Carousel Navigation\" tabindex=\"0\"><button type=\"button\" data-controls=\"prev\" tabindex=\"-1\" aria-controls=\"' + slideId + '\">' + controlsText[0] + '</button><button type=\"button\" data-controls=\"next\" tabindex=\"-1\" aria-controls=\"' + slideId + '\">' + controlsText[1] + '</button></div>');\n controlsContainer = outerWrapper.querySelector('.tns-controls');\n }\n if (!prevButton || !nextButton) {\n prevButton = controlsContainer.children[0];\n nextButton = controlsContainer.children[1];\n }\n if (options.controlsContainer) {\n setAttrs(controlsContainer, {\n 'aria-label': 'Carousel Navigation',\n 'tabindex': '0'\n });\n }\n if (options.controlsContainer || options.prevButton && options.nextButton) {\n setAttrs([prevButton, nextButton], {\n 'aria-controls': slideId,\n 'tabindex': '-1'\n });\n }\n if (options.controlsContainer || options.prevButton && options.nextButton) {\n setAttrs(prevButton, {\n 'data-controls': 'prev'\n });\n setAttrs(nextButton, {\n 'data-controls': 'next'\n });\n }\n prevIsButton = isButton(prevButton);\n nextIsButton = isButton(nextButton);\n updateControlsStatus();\n\n // add events\n if (controlsContainer) {\n addEvents(controlsContainer, controlsEvents);\n } else {\n addEvents(prevButton, controlsEvents);\n addEvents(nextButton, controlsEvents);\n }\n }\n\n // hide tools if needed\n disableUI();\n }\n function initEvents() {\n // add events\n if (carousel && TRANSITIONEND) {\n var eve = {};\n eve[TRANSITIONEND] = onTransitionEnd;\n addEvents(container, eve);\n }\n if (touch) {\n addEvents(container, touchEvents, options.preventScrollOnTouch);\n }\n if (mouseDrag) {\n addEvents(container, dragEvents);\n }\n if (arrowKeys) {\n addEvents(doc, docmentKeydownEvent);\n }\n if (nested === 'inner') {\n events.on('outerResized', function () {\n resizeTasks();\n events.emit('innerLoaded', info());\n });\n } else if (responsive || fixedWidth || autoWidth || autoHeight || !horizontal) {\n addEvents(win, {\n 'resize': onResize\n });\n }\n if (autoHeight) {\n if (nested === 'outer') {\n events.on('innerLoaded', doAutoHeight);\n } else if (!disable) {\n doAutoHeight();\n }\n }\n doLazyLoad();\n if (disable) {\n disableSlider();\n } else if (freeze) {\n freezeSlider();\n }\n events.on('indexChanged', additionalUpdates);\n if (nested === 'inner') {\n events.emit('innerLoaded', info());\n }\n if (typeof onInit === 'function') {\n onInit(info());\n }\n isOn = true;\n }\n function destroy() {\n // sheet\n sheet.disabled = true;\n if (sheet.ownerNode) {\n sheet.ownerNode.remove();\n }\n\n // remove win event listeners\n removeEvents(win, {\n 'resize': onResize\n });\n\n // arrowKeys, controls, nav\n if (arrowKeys) {\n removeEvents(doc, docmentKeydownEvent);\n }\n if (controlsContainer) {\n removeEvents(controlsContainer, controlsEvents);\n }\n if (navContainer) {\n removeEvents(navContainer, navEvents);\n }\n\n // autoplay\n removeEvents(container, hoverEvents);\n removeEvents(container, visibilityEvent);\n if (autoplayButton) {\n removeEvents(autoplayButton, {\n 'click': toggleAutoplay\n });\n }\n if (autoplay) {\n clearInterval(autoplayTimer);\n }\n\n // container\n if (carousel && TRANSITIONEND) {\n var eve = {};\n eve[TRANSITIONEND] = onTransitionEnd;\n removeEvents(container, eve);\n }\n if (touch) {\n removeEvents(container, touchEvents);\n }\n if (mouseDrag) {\n removeEvents(container, dragEvents);\n }\n\n // cache Object values in options && reset HTML\n var htmlList = [containerHTML, controlsContainerHTML, prevButtonHTML, nextButtonHTML, navContainerHTML, autoplayButtonHTML];\n tnsList.forEach(function (item, i) {\n var el = item === 'container' ? outerWrapper : options[item];\n if (typeof el === 'object' && el) {\n var prevEl = el.previousElementSibling ? el.previousElementSibling : false,\n parentEl = el.parentNode;\n el.outerHTML = htmlList[i];\n options[item] = prevEl ? prevEl.nextElementSibling : parentEl.firstElementChild;\n }\n });\n\n // reset variables\n tnsList = animateIn = animateOut = animateDelay = animateNormal = horizontal = outerWrapper = innerWrapper = container = containerParent = containerHTML = slideItems = slideCount = breakpointZone = windowWidth = autoWidth = fixedWidth = edgePadding = gutter = viewport = items = slideBy = viewportMax = arrowKeys = speed = rewind = loop = autoHeight = sheet = lazyload = slidePositions = slideItemsOut = cloneCount = slideCountNew = hasRightDeadZone = rightBoundary = updateIndexBeforeTransform = transformAttr = transformPrefix = transformPostfix = getIndexMax = index = indexCached = indexMin = indexMax = resizeTimer = swipeAngle = moveDirectionExpected = running = onInit = events = newContainerClasses = slideId = disable = disabled = freezable = freeze = frozen = controlsEvents = navEvents = hoverEvents = visibilityEvent = docmentKeydownEvent = touchEvents = dragEvents = hasControls = hasNav = navAsThumbnails = hasAutoplay = hasTouch = hasMouseDrag = slideActiveClass = imgCompleteClass = imgEvents = imgsComplete = controls = controlsText = controlsContainer = controlsContainerHTML = prevButton = nextButton = prevIsButton = nextIsButton = nav = navContainer = navContainerHTML = navItems = pages = pagesCached = navClicked = navCurrentIndex = navCurrentIndexCached = navActiveClass = navStr = navStrCurrent = autoplay = autoplayTimeout = autoplayDirection = autoplayText = autoplayHoverPause = autoplayButton = autoplayButtonHTML = autoplayResetOnVisibility = autoplayHtmlStrings = autoplayTimer = animating = autoplayHoverPaused = autoplayUserPaused = autoplayVisibilityPaused = initPosition = lastPosition = translateInit = disX = disY = panStart = rafIndex = getDist = touch = mouseDrag = null;\n // check variables\n // [animateIn, animateOut, animateDelay, animateNormal, horizontal, outerWrapper, innerWrapper, container, containerParent, containerHTML, slideItems, slideCount, breakpointZone, windowWidth, autoWidth, fixedWidth, edgePadding, gutter, viewport, items, slideBy, viewportMax, arrowKeys, speed, rewind, loop, autoHeight, sheet, lazyload, slidePositions, slideItemsOut, cloneCount, slideCountNew, hasRightDeadZone, rightBoundary, updateIndexBeforeTransform, transformAttr, transformPrefix, transformPostfix, getIndexMax, index, indexCached, indexMin, indexMax, resizeTimer, swipeAngle, moveDirectionExpected, running, onInit, events, newContainerClasses, slideId, disable, disabled, freezable, freeze, frozen, controlsEvents, navEvents, hoverEvents, visibilityEvent, docmentKeydownEvent, touchEvents, dragEvents, hasControls, hasNav, navAsThumbnails, hasAutoplay, hasTouch, hasMouseDrag, slideActiveClass, imgCompleteClass, imgEvents, imgsComplete, controls, controlsText, controlsContainer, controlsContainerHTML, prevButton, nextButton, prevIsButton, nextIsButton, nav, navContainer, navContainerHTML, navItems, pages, pagesCached, navClicked, navCurrentIndex, navCurrentIndexCached, navActiveClass, navStr, navStrCurrent, autoplay, autoplayTimeout, autoplayDirection, autoplayText, autoplayHoverPause, autoplayButton, autoplayButtonHTML, autoplayResetOnVisibility, autoplayHtmlStrings, autoplayTimer, animating, autoplayHoverPaused, autoplayUserPaused, autoplayVisibilityPaused, initPosition, lastPosition, translateInit, disX, disY, panStart, rafIndex, getDist, touch, mouseDrag ].forEach(function(item) { if (item !== null) { console.log(item); } });\n\n for (var a in this) {\n if (a !== 'rebuild') {\n this[a] = null;\n }\n }\n isOn = false;\n }\n\n // === ON RESIZE ===\n // responsive || fixedWidth || autoWidth || !horizontal\n function onResize(e) {\n raf(function () {\n resizeTasks(getEvent(e));\n });\n }\n function resizeTasks(e) {\n if (!isOn) {\n return;\n }\n if (nested === 'outer') {\n events.emit('outerResized', info(e));\n }\n windowWidth = getWindowWidth();\n var bpChanged,\n breakpointZoneTem = breakpointZone,\n needContainerTransform = false;\n if (responsive) {\n setBreakpointZone();\n bpChanged = breakpointZoneTem !== breakpointZone;\n // if (hasRightDeadZone) { needContainerTransform = true; } // *?\n if (bpChanged) {\n events.emit('newBreakpointStart', info(e));\n }\n }\n var indChanged,\n itemsChanged,\n itemsTem = items,\n disableTem = disable,\n freezeTem = freeze,\n arrowKeysTem = arrowKeys,\n controlsTem = controls,\n navTem = nav,\n touchTem = touch,\n mouseDragTem = mouseDrag,\n autoplayTem = autoplay,\n autoplayHoverPauseTem = autoplayHoverPause,\n autoplayResetOnVisibilityTem = autoplayResetOnVisibility,\n indexTem = index;\n if (bpChanged) {\n var fixedWidthTem = fixedWidth,\n autoHeightTem = autoHeight,\n controlsTextTem = controlsText,\n centerTem = center,\n autoplayTextTem = autoplayText;\n if (!CSSMQ) {\n var gutterTem = gutter,\n edgePaddingTem = edgePadding;\n }\n }\n\n // get option:\n // fixed width: viewport, fixedWidth, gutter => items\n // others: window width => all variables\n // all: items => slideBy\n arrowKeys = getOption('arrowKeys');\n controls = getOption('controls');\n nav = getOption('nav');\n touch = getOption('touch');\n center = getOption('center');\n mouseDrag = getOption('mouseDrag');\n autoplay = getOption('autoplay');\n autoplayHoverPause = getOption('autoplayHoverPause');\n autoplayResetOnVisibility = getOption('autoplayResetOnVisibility');\n if (bpChanged) {\n disable = getOption('disable');\n fixedWidth = getOption('fixedWidth');\n speed = getOption('speed');\n autoHeight = getOption('autoHeight');\n controlsText = getOption('controlsText');\n autoplayText = getOption('autoplayText');\n autoplayTimeout = getOption('autoplayTimeout');\n if (!CSSMQ) {\n edgePadding = getOption('edgePadding');\n gutter = getOption('gutter');\n }\n }\n // update options\n resetVariblesWhenDisable(disable);\n viewport = getViewportWidth(); // <= edgePadding, gutter\n if ((!horizontal || autoWidth) && !disable) {\n setSlidePositions();\n if (!horizontal) {\n updateContentWrapperHeight(); // <= setSlidePositions\n needContainerTransform = true;\n }\n }\n if (fixedWidth || autoWidth) {\n rightBoundary = getRightBoundary(); // autoWidth: <= viewport, slidePositions, gutter\n // fixedWidth: <= viewport, fixedWidth, gutter\n indexMax = getIndexMax(); // autoWidth: <= rightBoundary, slidePositions\n // fixedWidth: <= rightBoundary, fixedWidth, gutter\n }\n if (bpChanged || fixedWidth) {\n items = getOption('items');\n slideBy = getOption('slideBy');\n itemsChanged = items !== itemsTem;\n if (itemsChanged) {\n if (!fixedWidth && !autoWidth) {\n indexMax = getIndexMax();\n } // <= items\n // check index before transform in case\n // slider reach the right edge then items become bigger\n updateIndex();\n }\n }\n if (bpChanged) {\n if (disable !== disableTem) {\n if (disable) {\n disableSlider();\n } else {\n enableSlider(); // <= slidePositions, rightBoundary, indexMax\n }\n }\n }\n if (freezable && (bpChanged || fixedWidth || autoWidth)) {\n freeze = getFreeze(); // <= autoWidth: slidePositions, gutter, viewport, rightBoundary\n // <= fixedWidth: fixedWidth, gutter, rightBoundary\n // <= others: items\n\n if (freeze !== freezeTem) {\n if (freeze) {\n doContainerTransform(getContainerTransformValue(getStartIndex(0)));\n freezeSlider();\n } else {\n unfreezeSlider();\n needContainerTransform = true;\n }\n }\n }\n resetVariblesWhenDisable(disable || freeze); // controls, nav, touch, mouseDrag, arrowKeys, autoplay, autoplayHoverPause, autoplayResetOnVisibility\n if (!autoplay) {\n autoplayHoverPause = autoplayResetOnVisibility = false;\n }\n if (arrowKeys !== arrowKeysTem) {\n arrowKeys ? addEvents(doc, docmentKeydownEvent) : removeEvents(doc, docmentKeydownEvent);\n }\n if (controls !== controlsTem) {\n if (controls) {\n if (controlsContainer) {\n showElement(controlsContainer);\n } else {\n if (prevButton) {\n showElement(prevButton);\n }\n if (nextButton) {\n showElement(nextButton);\n }\n }\n } else {\n if (controlsContainer) {\n hideElement(controlsContainer);\n } else {\n if (prevButton) {\n hideElement(prevButton);\n }\n if (nextButton) {\n hideElement(nextButton);\n }\n }\n }\n }\n if (nav !== navTem) {\n if (nav) {\n showElement(navContainer);\n updateNavVisibility();\n } else {\n hideElement(navContainer);\n }\n }\n if (touch !== touchTem) {\n touch ? addEvents(container, touchEvents, options.preventScrollOnTouch) : removeEvents(container, touchEvents);\n }\n if (mouseDrag !== mouseDragTem) {\n mouseDrag ? addEvents(container, dragEvents) : removeEvents(container, dragEvents);\n }\n if (autoplay !== autoplayTem) {\n if (autoplay) {\n if (autoplayButton) {\n showElement(autoplayButton);\n }\n if (!animating && !autoplayUserPaused) {\n startAutoplay();\n }\n } else {\n if (autoplayButton) {\n hideElement(autoplayButton);\n }\n if (animating) {\n stopAutoplay();\n }\n }\n }\n if (autoplayHoverPause !== autoplayHoverPauseTem) {\n autoplayHoverPause ? addEvents(container, hoverEvents) : removeEvents(container, hoverEvents);\n }\n if (autoplayResetOnVisibility !== autoplayResetOnVisibilityTem) {\n autoplayResetOnVisibility ? addEvents(doc, visibilityEvent) : removeEvents(doc, visibilityEvent);\n }\n if (bpChanged) {\n if (fixedWidth !== fixedWidthTem || center !== centerTem) {\n needContainerTransform = true;\n }\n if (autoHeight !== autoHeightTem) {\n if (!autoHeight) {\n innerWrapper.style.height = '';\n }\n }\n if (controls && controlsText !== controlsTextTem) {\n prevButton.innerHTML = controlsText[0];\n nextButton.innerHTML = controlsText[1];\n }\n if (autoplayButton && autoplayText !== autoplayTextTem) {\n var i = autoplay ? 1 : 0,\n html = autoplayButton.innerHTML,\n len = html.length - autoplayTextTem[i].length;\n if (html.substring(len) === autoplayTextTem[i]) {\n autoplayButton.innerHTML = html.substring(0, len) + autoplayText[i];\n }\n }\n } else {\n if (center && (fixedWidth || autoWidth)) {\n needContainerTransform = true;\n }\n }\n if (itemsChanged || fixedWidth && !autoWidth) {\n pages = getPages();\n updateNavVisibility();\n }\n indChanged = index !== indexTem;\n if (indChanged) {\n events.emit('indexChanged', info());\n needContainerTransform = true;\n } else if (itemsChanged) {\n if (!indChanged) {\n additionalUpdates();\n }\n } else if (fixedWidth || autoWidth) {\n doLazyLoad();\n updateSlideStatus();\n updateLiveRegion();\n }\n if (itemsChanged && !carousel) {\n updateGallerySlidePositions();\n }\n if (!disable && !freeze) {\n // non-mediaqueries: IE8\n if (bpChanged && !CSSMQ) {\n // middle wrapper styles\n\n // inner wrapper styles\n if (edgePadding !== edgePaddingTem || gutter !== gutterTem) {\n innerWrapper.style.cssText = getInnerWrapperStyles(edgePadding, gutter, fixedWidth, speed, autoHeight);\n }\n if (horizontal) {\n // container styles\n if (carousel) {\n container.style.width = getContainerWidth(fixedWidth, gutter, items);\n }\n\n // slide styles\n var str = getSlideWidthStyle(fixedWidth, gutter, items) + getSlideGutterStyle(gutter);\n\n // remove the last line and\n // add new styles\n removeCSSRule(sheet, getCssRulesLength(sheet) - 1);\n addCSSRule(sheet, '#' + slideId + ' > .tns-item', str, getCssRulesLength(sheet));\n }\n }\n\n // auto height\n if (autoHeight) {\n doAutoHeight();\n }\n if (needContainerTransform) {\n doContainerTransformSilent();\n indexCached = index;\n }\n }\n if (bpChanged) {\n events.emit('newBreakpointEnd', info(e));\n }\n }\n\n // === INITIALIZATION FUNCTIONS === //\n function getFreeze() {\n if (!fixedWidth && !autoWidth) {\n var a = center ? items - (items - 1) / 2 : items;\n return slideCount <= a;\n }\n var width = fixedWidth ? (fixedWidth + gutter) * slideCount : slidePositions[slideCount],\n vp = edgePadding ? viewport + edgePadding * 2 : viewport + gutter;\n if (center) {\n vp -= fixedWidth ? (viewport - fixedWidth) / 2 : (viewport - (slidePositions[index + 1] - slidePositions[index] - gutter)) / 2;\n }\n return width <= vp;\n }\n function setBreakpointZone() {\n breakpointZone = 0;\n for (var bp in responsive) {\n bp = parseInt(bp); // convert string to number\n if (windowWidth >= bp) {\n breakpointZone = bp;\n }\n }\n }\n\n // (slideBy, indexMin, indexMax) => index\n var updateIndex = function () {\n return loop ? carousel ?\n // loop + carousel\n function () {\n var leftEdge = indexMin,\n rightEdge = indexMax;\n leftEdge += slideBy;\n rightEdge -= slideBy;\n\n // adjust edges when has edge paddings\n // or fixed-width slider with extra space on the right side\n if (edgePadding) {\n leftEdge += 1;\n rightEdge -= 1;\n } else if (fixedWidth) {\n if ((viewport + gutter) % (fixedWidth + gutter)) {\n rightEdge -= 1;\n }\n }\n if (cloneCount) {\n if (index > rightEdge) {\n index -= slideCount;\n } else if (index < leftEdge) {\n index += slideCount;\n }\n }\n } :\n // loop + gallery\n function () {\n if (index > indexMax) {\n while (index >= indexMin + slideCount) {\n index -= slideCount;\n }\n } else if (index < indexMin) {\n while (index <= indexMax - slideCount) {\n index += slideCount;\n }\n }\n } :\n // non-loop\n function () {\n index = Math.max(indexMin, Math.min(indexMax, index));\n };\n }();\n function disableUI() {\n if (!autoplay && autoplayButton) {\n hideElement(autoplayButton);\n }\n if (!nav && navContainer) {\n hideElement(navContainer);\n }\n if (!controls) {\n if (controlsContainer) {\n hideElement(controlsContainer);\n } else {\n if (prevButton) {\n hideElement(prevButton);\n }\n if (nextButton) {\n hideElement(nextButton);\n }\n }\n }\n }\n function enableUI() {\n if (autoplay && autoplayButton) {\n showElement(autoplayButton);\n }\n if (nav && navContainer) {\n showElement(navContainer);\n }\n if (controls) {\n if (controlsContainer) {\n showElement(controlsContainer);\n } else {\n if (prevButton) {\n showElement(prevButton);\n }\n if (nextButton) {\n showElement(nextButton);\n }\n }\n }\n }\n function freezeSlider() {\n if (frozen) {\n return;\n }\n\n // remove edge padding from inner wrapper\n if (edgePadding) {\n innerWrapper.style.margin = '0px';\n }\n\n // add class tns-transparent to cloned slides\n if (cloneCount) {\n var str = 'tns-transparent';\n for (var i = cloneCount; i--;) {\n if (carousel) {\n addClass(slideItems[i], str);\n }\n addClass(slideItems[slideCountNew - i - 1], str);\n }\n }\n\n // update tools\n disableUI();\n frozen = true;\n }\n function unfreezeSlider() {\n if (!frozen) {\n return;\n }\n\n // restore edge padding for inner wrapper\n // for mordern browsers\n if (edgePadding && CSSMQ) {\n innerWrapper.style.margin = '';\n }\n\n // remove class tns-transparent to cloned slides\n if (cloneCount) {\n var str = 'tns-transparent';\n for (var i = cloneCount; i--;) {\n if (carousel) {\n removeClass(slideItems[i], str);\n }\n removeClass(slideItems[slideCountNew - i - 1], str);\n }\n }\n\n // update tools\n enableUI();\n frozen = false;\n }\n function disableSlider() {\n if (disabled) {\n return;\n }\n sheet.disabled = true;\n container.className = container.className.replace(newContainerClasses.substring(1), '');\n removeAttrs(container, ['style']);\n if (loop) {\n for (var j = cloneCount; j--;) {\n if (carousel) {\n hideElement(slideItems[j]);\n }\n hideElement(slideItems[slideCountNew - j - 1]);\n }\n }\n\n // vertical slider\n if (!horizontal || !carousel) {\n removeAttrs(innerWrapper, ['style']);\n }\n\n // gallery\n if (!carousel) {\n for (var i = index, l = index + slideCount; i < l; i++) {\n var item = slideItems[i];\n removeAttrs(item, ['style']);\n removeClass(item, animateIn);\n removeClass(item, animateNormal);\n }\n }\n\n // update tools\n disableUI();\n disabled = true;\n }\n function enableSlider() {\n if (!disabled) {\n return;\n }\n sheet.disabled = false;\n container.className += newContainerClasses;\n doContainerTransformSilent();\n if (loop) {\n for (var j = cloneCount; j--;) {\n if (carousel) {\n showElement(slideItems[j]);\n }\n showElement(slideItems[slideCountNew - j - 1]);\n }\n }\n\n // gallery\n if (!carousel) {\n for (var i = index, l = index + slideCount; i < l; i++) {\n var item = slideItems[i],\n classN = i < index + items ? animateIn : animateNormal;\n item.style.left = (i - index) * 100 / items + '%';\n addClass(item, classN);\n }\n }\n\n // update tools\n enableUI();\n disabled = false;\n }\n function updateLiveRegion() {\n var str = getLiveRegionStr();\n if (liveregionCurrent.innerHTML !== str) {\n liveregionCurrent.innerHTML = str;\n }\n }\n function getLiveRegionStr() {\n var arr = getVisibleSlideRange(),\n start = arr[0] + 1,\n end = arr[1] + 1;\n return start === end ? start + '' : start + ' to ' + end;\n }\n function getVisibleSlideRange(val) {\n if (val == null) {\n val = getContainerTransformValue();\n }\n var start = index,\n end,\n rangestart,\n rangeend;\n\n // get range start, range end for autoWidth and fixedWidth\n if (center || edgePadding) {\n if (autoWidth || fixedWidth) {\n rangestart = -(parseFloat(val) + edgePadding);\n rangeend = rangestart + viewport + edgePadding * 2;\n }\n } else {\n if (autoWidth) {\n rangestart = slidePositions[index];\n rangeend = rangestart + viewport;\n }\n }\n\n // get start, end\n // - check auto width\n if (autoWidth) {\n slidePositions.forEach(function (point, i) {\n if (i < slideCountNew) {\n if ((center || edgePadding) && point <= rangestart + 0.5) {\n start = i;\n }\n if (rangeend - point >= 0.5) {\n end = i;\n }\n }\n });\n\n // - check percentage width, fixed width\n } else {\n if (fixedWidth) {\n var cell = fixedWidth + gutter;\n if (center || edgePadding) {\n start = Math.floor(rangestart / cell);\n end = Math.ceil(rangeend / cell - 1);\n } else {\n end = start + Math.ceil(viewport / cell) - 1;\n }\n } else {\n if (center || edgePadding) {\n var a = items - 1;\n if (center) {\n start -= a / 2;\n end = index + a / 2;\n } else {\n end = index + a;\n }\n if (edgePadding) {\n var b = edgePadding * items / viewport;\n start -= b;\n end += b;\n }\n start = Math.floor(start);\n end = Math.ceil(end);\n } else {\n end = start + items - 1;\n }\n }\n start = Math.max(start, 0);\n end = Math.min(end, slideCountNew - 1);\n }\n return [start, end];\n }\n function doLazyLoad() {\n if (lazyload && !disable) {\n var arg = getVisibleSlideRange();\n arg.push(lazyloadSelector);\n getImageArray.apply(null, arg).forEach(function (img) {\n if (!hasClass(img, imgCompleteClass)) {\n // stop propagation transitionend event to container\n var eve = {};\n eve[TRANSITIONEND] = function (e) {\n e.stopPropagation();\n };\n addEvents(img, eve);\n addEvents(img, imgEvents);\n\n // update src\n img.src = getAttr(img, 'data-src');\n\n // update srcset\n var srcset = getAttr(img, 'data-srcset');\n if (srcset) {\n img.srcset = srcset;\n }\n addClass(img, 'loading');\n }\n });\n }\n }\n function onImgLoaded(e) {\n imgLoaded(getTarget(e));\n }\n function onImgFailed(e) {\n imgFailed(getTarget(e));\n }\n function imgLoaded(img) {\n addClass(img, 'loaded');\n imgCompleted(img);\n }\n function imgFailed(img) {\n addClass(img, 'failed');\n imgCompleted(img);\n }\n function imgCompleted(img) {\n addClass(img, imgCompleteClass);\n removeClass(img, 'loading');\n removeEvents(img, imgEvents);\n }\n function getImageArray(start, end, imgSelector) {\n var imgs = [];\n if (!imgSelector) {\n imgSelector = 'img';\n }\n while (start <= end) {\n forEach(slideItems[start].querySelectorAll(imgSelector), function (img) {\n imgs.push(img);\n });\n start++;\n }\n return imgs;\n }\n\n // check if all visible images are loaded\n // and update container height if it's done\n function doAutoHeight() {\n var imgs = getImageArray.apply(null, getVisibleSlideRange());\n raf(function () {\n imgsLoadedCheck(imgs, updateInnerWrapperHeight);\n });\n }\n function imgsLoadedCheck(imgs, cb) {\n // execute callback function if all images are complete\n if (imgsComplete) {\n return cb();\n }\n\n // check image classes\n imgs.forEach(function (img, index) {\n if (!lazyload && img.complete) {\n imgCompleted(img);\n } // Check image.complete\n if (hasClass(img, imgCompleteClass)) {\n imgs.splice(index, 1);\n }\n });\n\n // execute callback function if selected images are all complete\n if (!imgs.length) {\n return cb();\n }\n\n // otherwise execute this functiona again\n raf(function () {\n imgsLoadedCheck(imgs, cb);\n });\n }\n function additionalUpdates() {\n doLazyLoad();\n updateSlideStatus();\n updateLiveRegion();\n updateControlsStatus();\n updateNavStatus();\n }\n function update_carousel_transition_duration() {\n if (carousel && autoHeight) {\n middleWrapper.style[TRANSITIONDURATION] = speed / 1000 + 's';\n }\n }\n function getMaxSlideHeight(slideStart, slideRange) {\n var heights = [];\n for (var i = slideStart, l = Math.min(slideStart + slideRange, slideCountNew); i < l; i++) {\n heights.push(slideItems[i].offsetHeight);\n }\n return Math.max.apply(null, heights);\n }\n\n // update inner wrapper height\n // 1. get the max-height of the visible slides\n // 2. set transitionDuration to speed\n // 3. update inner wrapper height to max-height\n // 4. set transitionDuration to 0s after transition done\n function updateInnerWrapperHeight() {\n var maxHeight = autoHeight ? getMaxSlideHeight(index, items) : getMaxSlideHeight(cloneCount, slideCount),\n wp = middleWrapper ? middleWrapper : innerWrapper;\n if (wp.style.height !== maxHeight) {\n wp.style.height = maxHeight + 'px';\n }\n }\n\n // get the distance from the top edge of the first slide to each slide\n // (init) => slidePositions\n function setSlidePositions() {\n slidePositions = [0];\n var attr = horizontal ? 'left' : 'top',\n attr2 = horizontal ? 'right' : 'bottom',\n base = slideItems[0].getBoundingClientRect()[attr];\n forEach(slideItems, function (item, i) {\n // skip the first slide\n if (i) {\n slidePositions.push(item.getBoundingClientRect()[attr] - base);\n }\n // add the end edge\n if (i === slideCountNew - 1) {\n slidePositions.push(item.getBoundingClientRect()[attr2] - base);\n }\n });\n }\n\n // update slide\n function updateSlideStatus() {\n var range = getVisibleSlideRange(),\n start = range[0],\n end = range[1];\n forEach(slideItems, function (item, i) {\n // show slides\n if (i >= start && i <= end) {\n if (hasAttr(item, 'aria-hidden')) {\n removeAttrs(item, ['aria-hidden', 'tabindex']);\n addClass(item, slideActiveClass);\n }\n // hide slides\n } else {\n if (!hasAttr(item, 'aria-hidden')) {\n setAttrs(item, {\n 'aria-hidden': 'true',\n 'tabindex': '-1'\n });\n removeClass(item, slideActiveClass);\n }\n }\n });\n }\n\n // gallery: update slide position\n function updateGallerySlidePositions() {\n var l = index + Math.min(slideCount, items);\n for (var i = slideCountNew; i--;) {\n var item = slideItems[i];\n if (i >= index && i < l) {\n // add transitions to visible slides when adjusting their positions\n addClass(item, 'tns-moving');\n item.style.left = (i - index) * 100 / items + '%';\n addClass(item, animateIn);\n removeClass(item, animateNormal);\n } else if (item.style.left) {\n item.style.left = '';\n addClass(item, animateNormal);\n removeClass(item, animateIn);\n }\n\n // remove outlet animation\n removeClass(item, animateOut);\n }\n\n // removing '.tns-moving'\n setTimeout(function () {\n forEach(slideItems, function (el) {\n removeClass(el, 'tns-moving');\n });\n }, 300);\n }\n\n // set tabindex on Nav\n function updateNavStatus() {\n // get current nav\n if (nav) {\n navCurrentIndex = navClicked >= 0 ? navClicked : getCurrentNavIndex();\n navClicked = -1;\n if (navCurrentIndex !== navCurrentIndexCached) {\n var navPrev = navItems[navCurrentIndexCached],\n navCurrent = navItems[navCurrentIndex];\n setAttrs(navPrev, {\n 'tabindex': '-1',\n 'aria-label': navStr + (navCurrentIndexCached + 1)\n });\n removeClass(navPrev, navActiveClass);\n setAttrs(navCurrent, {\n 'aria-label': navStr + (navCurrentIndex + 1) + navStrCurrent\n });\n removeAttrs(navCurrent, 'tabindex');\n addClass(navCurrent, navActiveClass);\n navCurrentIndexCached = navCurrentIndex;\n }\n }\n }\n function getLowerCaseNodeName(el) {\n return el.nodeName.toLowerCase();\n }\n function isButton(el) {\n return getLowerCaseNodeName(el) === 'button';\n }\n function isAriaDisabled(el) {\n return el.getAttribute('aria-disabled') === 'true';\n }\n function disEnableElement(isButton, el, val) {\n if (isButton) {\n el.disabled = val;\n } else {\n el.setAttribute('aria-disabled', val.toString());\n }\n }\n\n // set 'disabled' to true on controls when reach the edges\n function updateControlsStatus() {\n if (!controls || rewind || loop) {\n return;\n }\n var prevDisabled = prevIsButton ? prevButton.disabled : isAriaDisabled(prevButton),\n nextDisabled = nextIsButton ? nextButton.disabled : isAriaDisabled(nextButton),\n disablePrev = index <= indexMin ? true : false,\n disableNext = !rewind && index >= indexMax ? true : false;\n if (disablePrev && !prevDisabled) {\n disEnableElement(prevIsButton, prevButton, true);\n }\n if (!disablePrev && prevDisabled) {\n disEnableElement(prevIsButton, prevButton, false);\n }\n if (disableNext && !nextDisabled) {\n disEnableElement(nextIsButton, nextButton, true);\n }\n if (!disableNext && nextDisabled) {\n disEnableElement(nextIsButton, nextButton, false);\n }\n }\n\n // set duration\n function resetDuration(el, str) {\n if (TRANSITIONDURATION) {\n el.style[TRANSITIONDURATION] = str;\n }\n }\n function getSliderWidth() {\n return fixedWidth ? (fixedWidth + gutter) * slideCountNew : slidePositions[slideCountNew];\n }\n function getCenterGap(num) {\n if (num == null) {\n num = index;\n }\n var gap = edgePadding ? gutter : 0;\n return autoWidth ? (viewport - gap - (slidePositions[num + 1] - slidePositions[num] - gutter)) / 2 : fixedWidth ? (viewport - fixedWidth) / 2 : (items - 1) / 2;\n }\n function getRightBoundary() {\n var gap = edgePadding ? gutter : 0,\n result = viewport + gap - getSliderWidth();\n if (center && !loop) {\n result = fixedWidth ? -(fixedWidth + gutter) * (slideCountNew - 1) - getCenterGap() : getCenterGap(slideCountNew - 1) - slidePositions[slideCountNew - 1];\n }\n if (result > 0) {\n result = 0;\n }\n return result;\n }\n function getContainerTransformValue(num) {\n if (num == null) {\n num = index;\n }\n var val;\n if (horizontal && !autoWidth) {\n if (fixedWidth) {\n val = -(fixedWidth + gutter) * num;\n if (center) {\n val += getCenterGap();\n }\n } else {\n var denominator = TRANSFORM ? slideCountNew : items;\n if (center) {\n num -= getCenterGap();\n }\n val = -num * 100 / denominator;\n }\n } else {\n val = -slidePositions[num];\n if (center && autoWidth) {\n val += getCenterGap();\n }\n }\n if (hasRightDeadZone) {\n val = Math.max(val, rightBoundary);\n }\n val += horizontal && !autoWidth && !fixedWidth ? '%' : 'px';\n return val;\n }\n function doContainerTransformSilent(val) {\n resetDuration(container, '0s');\n doContainerTransform(val);\n }\n function doContainerTransform(val) {\n if (val == null) {\n val = getContainerTransformValue();\n }\n container.style[transformAttr] = transformPrefix + val + transformPostfix;\n }\n function animateSlide(number, classOut, classIn, isOut) {\n var l = number + items;\n if (!loop) {\n l = Math.min(l, slideCountNew);\n }\n for (var i = number; i < l; i++) {\n var item = slideItems[i];\n\n // set item positions\n if (!isOut) {\n item.style.left = (i - index) * 100 / items + '%';\n }\n if (animateDelay && TRANSITIONDELAY) {\n item.style[TRANSITIONDELAY] = item.style[ANIMATIONDELAY] = animateDelay * (i - number) / 1000 + 's';\n }\n removeClass(item, classOut);\n addClass(item, classIn);\n if (isOut) {\n slideItemsOut.push(item);\n }\n }\n }\n\n // make transfer after click/drag:\n // 1. change 'transform' property for mordern browsers\n // 2. change 'left' property for legacy browsers\n var transformCore = function () {\n return carousel ? function () {\n resetDuration(container, '');\n if (TRANSITIONDURATION || !speed) {\n // for morden browsers with non-zero duration or\n // zero duration for all browsers\n doContainerTransform();\n // run fallback function manually\n // when duration is 0 / container is hidden\n if (!speed || !isVisible(container)) {\n onTransitionEnd();\n }\n } else {\n // for old browser with non-zero duration\n jsTransform(container, transformAttr, transformPrefix, transformPostfix, getContainerTransformValue(), speed, onTransitionEnd);\n }\n if (!horizontal) {\n updateContentWrapperHeight();\n }\n } : function () {\n slideItemsOut = [];\n var eve = {};\n eve[TRANSITIONEND] = eve[ANIMATIONEND] = onTransitionEnd;\n removeEvents(slideItems[indexCached], eve);\n addEvents(slideItems[index], eve);\n animateSlide(indexCached, animateIn, animateOut, true);\n animateSlide(index, animateNormal, animateIn);\n\n // run fallback function manually\n // when transition or animation not supported / duration is 0\n if (!TRANSITIONEND || !ANIMATIONEND || !speed || !isVisible(container)) {\n onTransitionEnd();\n }\n };\n }();\n function render(e, sliderMoved) {\n if (updateIndexBeforeTransform) {\n updateIndex();\n }\n\n // render when slider was moved (touch or drag) even though index may not change\n if (index !== indexCached || sliderMoved) {\n // events\n events.emit('indexChanged', info());\n events.emit('transitionStart', info());\n if (autoHeight) {\n doAutoHeight();\n }\n\n // pause autoplay when click or keydown from user\n if (animating && e && ['click', 'keydown'].indexOf(e.type) >= 0) {\n stopAutoplay();\n }\n running = true;\n transformCore();\n }\n }\n\n /*\n * Transfer prefixed properties to the same format\n * CSS: -Webkit-Transform => webkittransform\n * JS: WebkitTransform => webkittransform\n * @param {string} str - property\n *\n */\n function strTrans(str) {\n return str.toLowerCase().replace(/-/g, '');\n }\n\n // AFTER TRANSFORM\n // Things need to be done after a transfer:\n // 1. check index\n // 2. add classes to visible slide\n // 3. disable controls buttons when reach the first/last slide in non-loop slider\n // 4. update nav status\n // 5. lazyload images\n // 6. update container height\n function onTransitionEnd(event) {\n // check running on gallery mode\n // make sure trantionend/animationend events run only once\n if (carousel || running) {\n events.emit('transitionEnd', info(event));\n if (!carousel && slideItemsOut.length > 0) {\n for (var i = 0; i < slideItemsOut.length; i++) {\n var item = slideItemsOut[i];\n // set item positions\n item.style.left = '';\n if (ANIMATIONDELAY && TRANSITIONDELAY) {\n item.style[ANIMATIONDELAY] = '';\n item.style[TRANSITIONDELAY] = '';\n }\n removeClass(item, animateOut);\n addClass(item, animateNormal);\n }\n }\n\n /* update slides, nav, controls after checking ...\n * => legacy browsers who don't support 'event'\n * have to check event first, otherwise event.target will cause an error\n * => or 'gallery' mode:\n * + event target is slide item\n * => or 'carousel' mode:\n * + event target is container,\n * + event.property is the same with transform attribute\n */\n if (!event || !carousel && event.target.parentNode === container || event.target === container && strTrans(event.propertyName) === strTrans(transformAttr)) {\n if (!updateIndexBeforeTransform) {\n var indexTem = index;\n updateIndex();\n if (index !== indexTem) {\n events.emit('indexChanged', info());\n doContainerTransformSilent();\n }\n }\n if (nested === 'inner') {\n events.emit('innerLoaded', info());\n }\n running = false;\n indexCached = index;\n }\n }\n }\n\n // # ACTIONS\n function goTo(targetIndex, e) {\n if (freeze) {\n return;\n }\n\n // prev slideBy\n if (targetIndex === 'prev') {\n onControlsClick(e, -1);\n\n // next slideBy\n } else if (targetIndex === 'next') {\n onControlsClick(e, 1);\n\n // go to exact slide\n } else {\n if (running) {\n if (preventActionWhenRunning) {\n return;\n } else {\n onTransitionEnd();\n }\n }\n var absIndex = getAbsIndex(),\n indexGap = 0;\n if (targetIndex === 'first') {\n indexGap = -absIndex;\n } else if (targetIndex === 'last') {\n indexGap = carousel ? slideCount - items - absIndex : slideCount - 1 - absIndex;\n } else {\n if (typeof targetIndex !== 'number') {\n targetIndex = parseInt(targetIndex);\n }\n if (!isNaN(targetIndex)) {\n // from directly called goTo function\n if (!e) {\n targetIndex = Math.max(0, Math.min(slideCount - 1, targetIndex));\n }\n indexGap = targetIndex - absIndex;\n }\n }\n\n // gallery: make sure new page won't overlap with current page\n if (!carousel && indexGap && Math.abs(indexGap) < items) {\n var factor = indexGap > 0 ? 1 : -1;\n indexGap += index + indexGap - slideCount >= indexMin ? slideCount * factor : slideCount * 2 * factor * -1;\n }\n index += indexGap;\n\n // make sure index is in range\n if (carousel && loop) {\n if (index < indexMin) {\n index += slideCount;\n }\n if (index > indexMax) {\n index -= slideCount;\n }\n }\n\n // if index is changed, start rendering\n if (getAbsIndex(index) !== getAbsIndex(indexCached)) {\n render(e);\n }\n }\n }\n\n // on controls click\n function onControlsClick(e, dir) {\n if (running) {\n if (preventActionWhenRunning) {\n return;\n } else {\n onTransitionEnd();\n }\n }\n var passEventObject;\n if (!dir) {\n e = getEvent(e);\n var target = getTarget(e);\n while (target !== controlsContainer && [prevButton, nextButton].indexOf(target) < 0) {\n target = target.parentNode;\n }\n var targetIn = [prevButton, nextButton].indexOf(target);\n if (targetIn >= 0) {\n passEventObject = true;\n dir = targetIn === 0 ? -1 : 1;\n }\n }\n if (rewind) {\n if (index === indexMin && dir === -1) {\n goTo('last', e);\n return;\n } else if (index === indexMax && dir === 1) {\n goTo('first', e);\n return;\n }\n }\n if (dir) {\n index += slideBy * dir;\n if (autoWidth) {\n index = Math.floor(index);\n }\n // pass e when click control buttons or keydown\n render(passEventObject || e && e.type === 'keydown' ? e : null);\n }\n }\n\n // on nav click\n function onNavClick(e) {\n if (running) {\n if (preventActionWhenRunning) {\n return;\n } else {\n onTransitionEnd();\n }\n }\n e = getEvent(e);\n var target = getTarget(e),\n navIndex;\n\n // find the clicked nav item\n while (target !== navContainer && !hasAttr(target, 'data-nav')) {\n target = target.parentNode;\n }\n if (hasAttr(target, 'data-nav')) {\n var navIndex = navClicked = Number(getAttr(target, 'data-nav')),\n targetIndexBase = fixedWidth || autoWidth ? navIndex * slideCount / pages : navIndex * items,\n targetIndex = navAsThumbnails ? navIndex : Math.min(Math.ceil(targetIndexBase), slideCount - 1);\n goTo(targetIndex, e);\n if (navCurrentIndex === navIndex) {\n if (animating) {\n stopAutoplay();\n }\n navClicked = -1; // reset navClicked\n }\n }\n }\n\n // autoplay functions\n function setAutoplayTimer() {\n autoplayTimer = setInterval(function () {\n onControlsClick(null, autoplayDirection);\n }, autoplayTimeout);\n animating = true;\n }\n function stopAutoplayTimer() {\n clearInterval(autoplayTimer);\n animating = false;\n }\n function updateAutoplayButton(action, txt) {\n setAttrs(autoplayButton, {\n 'data-action': action\n });\n autoplayButton.innerHTML = autoplayHtmlStrings[0] + action + autoplayHtmlStrings[1] + txt;\n }\n function startAutoplay() {\n setAutoplayTimer();\n if (autoplayButton) {\n updateAutoplayButton('stop', autoplayText[1]);\n }\n }\n function stopAutoplay() {\n stopAutoplayTimer();\n if (autoplayButton) {\n updateAutoplayButton('start', autoplayText[0]);\n }\n }\n\n // programaitcally play/pause the slider\n function play() {\n if (autoplay && !animating) {\n startAutoplay();\n autoplayUserPaused = false;\n }\n }\n function pause() {\n if (animating) {\n stopAutoplay();\n autoplayUserPaused = true;\n }\n }\n function toggleAutoplay() {\n if (animating) {\n stopAutoplay();\n autoplayUserPaused = true;\n } else {\n startAutoplay();\n autoplayUserPaused = false;\n }\n }\n function onVisibilityChange() {\n if (doc.hidden) {\n if (animating) {\n stopAutoplayTimer();\n autoplayVisibilityPaused = true;\n }\n } else if (autoplayVisibilityPaused) {\n setAutoplayTimer();\n autoplayVisibilityPaused = false;\n }\n }\n function mouseoverPause() {\n if (animating) {\n stopAutoplayTimer();\n autoplayHoverPaused = true;\n }\n }\n function mouseoutRestart() {\n if (autoplayHoverPaused) {\n setAutoplayTimer();\n autoplayHoverPaused = false;\n }\n }\n\n // keydown events on document\n function onDocumentKeydown(e) {\n e = getEvent(e);\n var keyIndex = [KEYS.LEFT, KEYS.RIGHT].indexOf(e.keyCode);\n if (keyIndex >= 0) {\n onControlsClick(e, keyIndex === 0 ? -1 : 1);\n }\n }\n\n // on key control\n function onControlsKeydown(e) {\n e = getEvent(e);\n var keyIndex = [KEYS.LEFT, KEYS.RIGHT].indexOf(e.keyCode);\n if (keyIndex >= 0) {\n if (keyIndex === 0) {\n if (!prevButton.disabled) {\n onControlsClick(e, -1);\n }\n } else if (!nextButton.disabled) {\n onControlsClick(e, 1);\n }\n }\n }\n\n // set focus\n function setFocus(el) {\n el.focus();\n }\n\n // on key nav\n function onNavKeydown(e) {\n e = getEvent(e);\n var curElement = doc.activeElement;\n if (!hasAttr(curElement, 'data-nav')) {\n return;\n }\n\n // var code = e.keyCode,\n var keyIndex = [KEYS.LEFT, KEYS.RIGHT, KEYS.ENTER, KEYS.SPACE].indexOf(e.keyCode),\n navIndex = Number(getAttr(curElement, 'data-nav'));\n if (keyIndex >= 0) {\n if (keyIndex === 0) {\n if (navIndex > 0) {\n setFocus(navItems[navIndex - 1]);\n }\n } else if (keyIndex === 1) {\n if (navIndex < pages - 1) {\n setFocus(navItems[navIndex + 1]);\n }\n } else {\n navClicked = navIndex;\n goTo(navIndex, e);\n }\n }\n }\n function getEvent(e) {\n e = e || win.event;\n return isTouchEvent(e) ? e.changedTouches[0] : e;\n }\n function getTarget(e) {\n return e.target || win.event.srcElement;\n }\n function isTouchEvent(e) {\n return e.type.indexOf('touch') >= 0;\n }\n function preventDefaultBehavior(e) {\n e.preventDefault ? e.preventDefault() : e.returnValue = false;\n }\n function getMoveDirectionExpected() {\n return getTouchDirection(toDegree(lastPosition.y - initPosition.y, lastPosition.x - initPosition.x), swipeAngle) === options.axis;\n }\n function onPanStart(e) {\n if (running) {\n if (preventActionWhenRunning) {\n return;\n } else {\n onTransitionEnd();\n }\n }\n if (autoplay && animating) {\n stopAutoplayTimer();\n }\n panStart = true;\n if (rafIndex) {\n caf(rafIndex);\n rafIndex = null;\n }\n var $ = getEvent(e);\n events.emit(isTouchEvent(e) ? 'touchStart' : 'dragStart', info(e));\n if (!isTouchEvent(e) && ['img', 'a'].indexOf(getLowerCaseNodeName(getTarget(e))) >= 0) {\n preventDefaultBehavior(e);\n }\n lastPosition.x = initPosition.x = $.clientX;\n lastPosition.y = initPosition.y = $.clientY;\n if (carousel) {\n translateInit = parseFloat(container.style[transformAttr].replace(transformPrefix, ''));\n resetDuration(container, '0s');\n }\n }\n function onPanMove(e) {\n if (panStart) {\n var $ = getEvent(e);\n lastPosition.x = $.clientX;\n lastPosition.y = $.clientY;\n if (carousel) {\n if (!rafIndex) {\n rafIndex = raf(function () {\n panUpdate(e);\n });\n }\n } else {\n if (moveDirectionExpected === '?') {\n moveDirectionExpected = getMoveDirectionExpected();\n }\n if (moveDirectionExpected) {\n preventScroll = true;\n }\n }\n if ((typeof e.cancelable !== 'boolean' || e.cancelable) && preventScroll) {\n e.preventDefault();\n }\n }\n }\n function panUpdate(e) {\n if (!moveDirectionExpected) {\n panStart = false;\n return;\n }\n caf(rafIndex);\n if (panStart) {\n rafIndex = raf(function () {\n panUpdate(e);\n });\n }\n if (moveDirectionExpected === '?') {\n moveDirectionExpected = getMoveDirectionExpected();\n }\n if (moveDirectionExpected) {\n if (!preventScroll && isTouchEvent(e)) {\n preventScroll = true;\n }\n try {\n if (e.type) {\n events.emit(isTouchEvent(e) ? 'touchMove' : 'dragMove', info(e));\n }\n } catch (err) {}\n var x = translateInit,\n dist = getDist(lastPosition, initPosition);\n if (!horizontal || fixedWidth || autoWidth) {\n x += dist;\n x += 'px';\n } else {\n var percentageX = TRANSFORM ? dist * items * 100 / ((viewport + gutter) * slideCountNew) : dist * 100 / (viewport + gutter);\n x += percentageX;\n x += '%';\n }\n container.style[transformAttr] = transformPrefix + x + transformPostfix;\n }\n }\n function onPanEnd(e) {\n if (panStart) {\n if (rafIndex) {\n caf(rafIndex);\n rafIndex = null;\n }\n if (carousel) {\n resetDuration(container, '');\n }\n panStart = false;\n var $ = getEvent(e);\n lastPosition.x = $.clientX;\n lastPosition.y = $.clientY;\n var dist = getDist(lastPosition, initPosition);\n if (Math.abs(dist)) {\n // drag vs click\n if (!isTouchEvent(e)) {\n // prevent \"click\"\n var target = getTarget(e);\n addEvents(target, {\n 'click': function preventClick(e) {\n preventDefaultBehavior(e);\n removeEvents(target, {\n 'click': preventClick\n });\n }\n });\n }\n if (carousel) {\n rafIndex = raf(function () {\n if (horizontal && !autoWidth) {\n var indexMoved = -dist * items / (viewport + gutter);\n indexMoved = dist > 0 ? Math.floor(indexMoved) : Math.ceil(indexMoved);\n index += indexMoved;\n } else {\n var moved = -(translateInit + dist);\n if (moved <= 0) {\n index = indexMin;\n } else if (moved >= slidePositions[slideCountNew - 1]) {\n index = indexMax;\n } else {\n var i = 0;\n while (i < slideCountNew && moved >= slidePositions[i]) {\n index = i;\n if (moved > slidePositions[i] && dist < 0) {\n index += 1;\n }\n i++;\n }\n }\n }\n render(e, dist);\n events.emit(isTouchEvent(e) ? 'touchEnd' : 'dragEnd', info(e));\n });\n } else {\n if (moveDirectionExpected) {\n onControlsClick(e, dist > 0 ? -1 : 1);\n }\n }\n }\n }\n\n // reset\n if (options.preventScrollOnTouch === 'auto') {\n preventScroll = false;\n }\n if (swipeAngle) {\n moveDirectionExpected = '?';\n }\n if (autoplay && !animating) {\n setAutoplayTimer();\n }\n }\n\n // === RESIZE FUNCTIONS === //\n // (slidePositions, index, items) => vertical_conentWrapper.height\n function updateContentWrapperHeight() {\n var wp = middleWrapper ? middleWrapper : innerWrapper;\n wp.style.height = slidePositions[index + items] - slidePositions[index] + 'px';\n }\n function getPages() {\n var rough = fixedWidth ? (fixedWidth + gutter) * slideCount / viewport : slideCount / items;\n return Math.min(Math.ceil(rough), slideCount);\n }\n\n /*\n * 1. update visible nav items list\n * 2. add \"hidden\" attributes to previous visible nav items\n * 3. remove \"hidden\" attrubutes to new visible nav items\n */\n function updateNavVisibility() {\n if (!nav || navAsThumbnails) {\n return;\n }\n if (pages !== pagesCached) {\n var min = pagesCached,\n max = pages,\n fn = showElement;\n if (pagesCached > pages) {\n min = pages;\n max = pagesCached;\n fn = hideElement;\n }\n while (min < max) {\n fn(navItems[min]);\n min++;\n }\n\n // cache pages\n pagesCached = pages;\n }\n }\n function info(e) {\n return {\n container: container,\n slideItems: slideItems,\n navContainer: navContainer,\n navItems: navItems,\n controlsContainer: controlsContainer,\n hasControls: hasControls,\n prevButton: prevButton,\n nextButton: nextButton,\n items: items,\n slideBy: slideBy,\n cloneCount: cloneCount,\n slideCount: slideCount,\n slideCountNew: slideCountNew,\n index: index,\n indexCached: indexCached,\n displayIndex: getCurrentSlide(),\n navCurrentIndex: navCurrentIndex,\n navCurrentIndexCached: navCurrentIndexCached,\n pages: pages,\n pagesCached: pagesCached,\n sheet: sheet,\n isOn: isOn,\n event: e || {}\n };\n }\n return {\n version: '2.9.4',\n getInfo: info,\n events: events,\n goTo: goTo,\n play: play,\n pause: pause,\n isOn: isOn,\n updateSliderHeight: updateInnerWrapperHeight,\n refresh: initSliderTransform,\n destroy: destroy,\n rebuild: function () {\n return tns(extend(options, optionsElements));\n }\n };\n};","// get css-calc \n// @return - false | calc | -webkit-calc | -moz-calc\n// @usage - var calc = getCalc(); \nimport { getBody } from './getBody.js';\nimport { setFakeBody } from './setFakeBody.js';\nimport { resetFakeBody } from './resetFakeBody.js';\nexport function calc() {\n var doc = document,\n body = getBody(),\n docOverflow = setFakeBody(body),\n div = doc.createElement('div'),\n result = false;\n body.appendChild(div);\n try {\n var str = '(10px * 10)',\n vals = ['calc' + str, '-moz-calc' + str, '-webkit-calc' + str],\n val;\n for (var i = 0; i < 3; i++) {\n val = vals[i];\n div.style.width = val;\n if (div.offsetWidth === 100) {\n result = val.replace(str, '');\n break;\n }\n }\n } catch (e) {}\n body.fake ? resetFakeBody(body, docOverflow) : div.remove();\n return result;\n}","// get subpixel support value\n// @return - boolean\nimport { getBody } from './getBody.js';\nimport { setFakeBody } from './setFakeBody.js';\nimport { resetFakeBody } from './resetFakeBody.js';\nexport function percentageLayout() {\n // check subpixel layout supporting\n var doc = document,\n body = getBody(),\n docOverflow = setFakeBody(body),\n wrapper = doc.createElement('div'),\n outer = doc.createElement('div'),\n str = '',\n count = 70,\n perPage = 3,\n supported = false;\n wrapper.className = \"tns-t-subp2\";\n outer.className = \"tns-t-ct\";\n for (var i = 0; i < count; i++) {\n str += '<div></div>';\n }\n outer.innerHTML = str;\n wrapper.appendChild(outer);\n body.appendChild(wrapper);\n supported = Math.abs(wrapper.getBoundingClientRect().left - outer.children[count - perPage].getBoundingClientRect().left) < 2;\n body.fake ? resetFakeBody(body, docOverflow) : wrapper.remove();\n return supported;\n}","import { getBody } from './getBody.js';\nimport { setFakeBody } from './setFakeBody.js';\nimport { resetFakeBody } from './resetFakeBody.js';\nexport function mediaquerySupport() {\n if (window.matchMedia || window.msMatchMedia) {\n return true;\n }\n var doc = document,\n body = getBody(),\n docOverflow = setFakeBody(body),\n div = doc.createElement('div'),\n style = doc.createElement('style'),\n rule = '@media all and (min-width:1px){.tns-mq-test{position:absolute}}',\n position;\n style.type = 'text/css';\n div.className = 'tns-mq-test';\n body.appendChild(style);\n body.appendChild(div);\n if (style.styleSheet) {\n style.styleSheet.cssText = rule;\n } else {\n style.appendChild(doc.createTextNode(rule));\n }\n position = window.getComputedStyle ? window.getComputedStyle(div).position : div.currentStyle['position'];\n body.fake ? resetFakeBody(body, docOverflow) : div.remove();\n return position === \"absolute\";\n}","import { getBody } from './getBody.js';\nimport { setFakeBody } from './setFakeBody.js';\nimport { resetFakeBody } from './resetFakeBody.js';\nexport function has3DTransforms(tf) {\n if (!tf) {\n return false;\n }\n if (!window.getComputedStyle) {\n return false;\n }\n var doc = document,\n body = getBody(),\n docOverflow = setFakeBody(body),\n el = doc.createElement('p'),\n has3d,\n cssTF = tf.length > 9 ? '-' + tf.slice(0, -9).toLowerCase() + '-' : '';\n cssTF += 'transform';\n\n // Add it to the body to get the computed style\n body.insertBefore(el, null);\n el.style[tf] = 'translate3d(1px,1px,1px)';\n has3d = window.getComputedStyle(el).getPropertyValue(cssTF);\n body.fake ? resetFakeBody(body, docOverflow) : el.remove();\n return has3d !== undefined && has3d.length > 0 && has3d !== \"none\";\n}","// create and append style sheet\nexport function createStyleSheet(media, nonce) {\n // Create the <style> tag\n var style = document.createElement(\"style\");\n // style.setAttribute(\"type\", \"text/css\");\n\n // Add a media (and/or media query) here if you'd like!\n // style.setAttribute(\"media\", \"screen\")\n // style.setAttribute(\"media\", \"only screen and (max-width : 1024px)\")\n if (media) {\n style.setAttribute(\"media\", media);\n }\n\n // Add nonce attribute for Content Security Policy\n if (nonce) {\n style.setAttribute(\"nonce\", nonce);\n }\n\n // WebKit hack :(\n // style.appendChild(document.createTextNode(\"\"));\n\n // Add the <style> element to the page\n document.querySelector('head').appendChild(style);\n return style.sheet ? style.sheet : style.styleSheet;\n}\n;","export function getSlideId() {\n var id = window.tnsId;\n window.tnsId = !id ? 1 : id + 1;\n return 'tns' + window.tnsId;\n}","export function jsTransform(element, attr, prefix, postfix, to, duration, callback) {\n var tick = Math.min(duration, 10),\n unit = to.indexOf('%') >= 0 ? '%' : 'px',\n to = to.replace(unit, ''),\n from = Number(element.style[attr].replace(prefix, '').replace(postfix, '').replace(unit, '')),\n positionTick = (to - from) / duration * tick,\n running;\n setTimeout(moveElement, tick);\n function moveElement() {\n duration -= tick;\n from += positionTick;\n element.style[attr] = prefix + from + unit + postfix;\n if (duration > 0) {\n setTimeout(moveElement, tick);\n } else {\n callback();\n }\n }\n}","// cross browsers addRule method\nimport { raf } from './raf.js';\nexport function removeCSSRule(sheet, index) {\n // return raf(function() {\n 'deleteRule' in sheet ? sheet.deleteRule(index) : sheet.removeRule(index);\n // });\n}","export function toDegree(y, x) {\n return Math.atan2(y, x) * (180 / Math.PI);\n}","export function getTouchDirection(angle, range) {\n var direction = false,\n gap = Math.abs(90 - Math.abs(angle));\n if (gap >= 90 - range) {\n direction = 'horizontal';\n } else if (gap <= range) {\n direction = 'vertical';\n }\n return direction;\n}","import { tns } from \"tiny-slider/src/tiny-slider\"\n\nconst DEFAULT_PARAMS = {\n autoplay: true,\n autoplayHoverPause: true,\n autoplayButtonOutput: false,\n arrowKeys: true,\n autoHeight: true,\n center: true,\n controlsText: ['', '']\n}\n\nlet slideshows = []\n\ndocument.addEventListener('DOMContentLoaded', init)\n\nexport default function init(params) {\n if (document.querySelectorAll('[data-slideshow]')) {\n [...document.querySelectorAll('[data-slideshow]')].map(slideshowEl => {\n const container = {container: '[data-slideshow=' + slideshowEl.getAttribute('data-slideshow') + ']'}\n const slideshow = tns({...DEFAULT_PARAMS, ...params, ...container})\n\n let resizeId\n\n slideshows.push(slideshowEl)\n window.addEventListener('resize', () => {\n clearTimeout(resizeId)\n resizeId = setTimeout(() => slideshow.updateSliderHeight(), 300)\n })\n })\n }\n}\n","let selectedCategories = [];\nlet selectedBrands = [];\n\nfunction init() {\n [...document.querySelectorAll('[data-bundle-filter-option]')].map(option => {\n option.addEventListener('click', event => {\n updateSelectedState(event.target);\n filterProductList();\n });\n });\n}\n\nfunction updateSelectedState(option) {\n const brand = option.getAttribute('data-brand');\n const category = option.getAttribute('data-category');\n\n if (option.checked) {\n if (brand && !selectedBrands.includes(brand)) {\n selectedBrands.push(brand);\n }\n if (category && !selectedCategories.includes(category)) {\n selectedCategories.push(category);\n }\n } else {\n if (brand && selectedBrands.includes(brand)) {\n removeFromArray(brand, selectedBrands);\n }\n if (category && selectedCategories.includes(category)) {\n removeFromArray(category, selectedCategories);\n }\n }\n}\n\nfunction filterProductList() {\n const container = document.querySelector('[data-bundle-filterable]');\n\n [...container.querySelectorAll('[data-product-option-sfid]')].map(product => {\n const brandId = product.getAttribute('data-product-brand-sfid');\n const categoryIds = product.getAttribute('data-category-sfid') ? product.getAttribute('data-category-sfid').split(';') : [];\n\n if (selectedCategories.length === 0 && selectedBrands.length === 0) {\n product.classList.remove('is-hidden');\n } else if (\n (selectedBrands.includes(brandId) || selectedBrands.length === 0) &&\n (selectedCategories.filter(value => categoryIds.includes(value)).length > 0 || selectedCategories.length === 0)\n ) {\n product.classList.remove('is-hidden');\n } else {\n product.classList.add('is-hidden');\n }\n });\n}\n\nfunction removeFromArray(item, array) {\n const index = array.indexOf(item);\n\n if (index > -1) { array.splice(index, 1); }\n}\n\nexport default init;\n","let sets = {};\n\ndocument.addEventListener('DOMContentLoaded', init);\n\nfunction init() {\n const tabSets = document.querySelectorAll('[data-tabs]');\n\n if (tabSets.length > 0) {\n [...tabSets].map(set => {\n const setId = set.getAttribute('data-tabs');\n const tabsInSet = [...set.querySelectorAll('[data-tab]')];\n const triggersInSet = [...set.querySelectorAll('[data-tab-trigger]')];\n const activeTabInSet = getActiveTabElem(tabsInSet);\n\n sets[setId] = {\n tabs: tabsInSet,\n triggers: triggersInSet,\n active: activeTabInSet\n }\n\n if (tabsInSet.length === 0) {\n return;\n }\n // Activate the first tab if none are already active\n if (activeTabInSet === undefined) {\n const firstTabId = getId(tabsInSet[0]);\n\n activate(firstTabId, setId);\n }\n\n // Attach click handlers\n triggersInSet.map(trigger => trigger.addEventListener('click', () => {\n const tabId = trigger.getAttribute('data-tab-trigger');\n\n deactivateAllTabs(setId);\n activate(tabId, setId);\n }));\n\n // Adds 'is-last' class to last tab in set\n setClassForLastTab(setId);\n });\n }\n}\n\nfunction activate(tabId, setId) {\n const set = document.querySelector(`[data-tabs='${setId}']`);\n const tabInSet = getTabElem(tabId, set);\n const triggerInSet = getTriggerElem(tabId, set);\n\n sets[setId].active = tabInSet;\n tabInSet.classList.remove('sc-hide');\n if (triggerInSet) {\n triggerInSet.classList.toggle('is-active');\n }\n}\n\nfunction deactivateAllTabs(setId) {\n sets[setId].tabs.map(tab => tab.classList.add('sc-hide'));\n sets[setId].triggers.map(trigger => trigger.classList.remove('is-active'));\n}\n\nfunction getId(tab) {\n return tab.getAttribute('data-tab');\n}\n\nfunction getTabElem(id, set) {\n return set.querySelector(`[data-tab='${id}']`);\n}\n\nfunction getTriggerElem(id, set) {\n return set.querySelector(`[data-tab-trigger='${id}']`);\n}\n\nfunction getActiveTabElem(tabsInSet) {\n return tabsInSet.filter(tab => !tab.classList.contains('sc-hide'))[0];\n}\n\nfunction setClassForLastTab(setId) {\n const tabsInSet = sets[setId].tabs;\n const lastTabInSet = tabsInSet[tabsInSet.length - 1];\n\n lastTabInSet.classList.add('is-last');\n}\n\nfunction returnNextTab() {\n return tabs[tabs.indexOf(active) + 1];\n}\n\nfunction returnPrevTab() {\n return tabs[tabs.indexOf(active) - 1];\n}\n\nfunction next() {\n const id = returnNextTab().getAttribute('data-tab');\n\n deactivateAllTabs();\n activate(id);\n}\n\nfunction prev() {\n const id = returnPrevTab().getAttribute('data-tab');\n\n deactivateAllTabs();\n activate(id);\n}\n\nexport default init;\n","import { addOrUpdateProductOption } from './bundle';\n\nlet triggers, inputs, prevSubset;\n\nfunction init(onChangeCallback) {\n triggers = [...document.querySelectorAll('[data-option-card-trigger]')];\n inputs = [...document.querySelectorAll('[data-single-option-radio-input]')];\n\n inputs.map(input => {\n input.addEventListener('change', event => {\n const id = event.currentTarget.value;\n const option = document.querySelector(`[data-single-option=\"${id}\"]`);\n const qtyInputs = [...document.querySelectorAll('[data-qty-picker] input')];\n const input = option.querySelector('[data-qty-picker] input');\n\n if (input) {\n qtyInputs.map(input => input.value = 0);\n input.value = 1;\n\n addOrUpdateProductOption(input.id, input.name + \"=\" + input.value);\n }\n });\n });\n\n triggers.map(trigger => {\n trigger.addEventListener('click', (event) => {\n choose(event, onChangeCallback);\n });\n });\n}\n\nfunction choose(event, onChangeCallback) {\n const choice = event.currentTarget.parentNode;\n const subset = choice.querySelector('[data-option-card-subset]');\n\n // We manually handle checking inputs\n // to avoid multiple events firing\n event.preventDefault();\n\n // Unselect other options\n triggers.map(trigger => {\n trigger.parentNode.classList.remove('is-selected')\n });\n\n // If there is a previously opened subset of options\n // we close it when a new choice is made\n if (prevSubset && !prevSubset.contains(choice)) {\n prevSubset.classList.remove('is-active');\n prevSubset.parentNode.classList.remove('is-active');\n }\n\n // If our chosen option has a subset of options\n // we open the subset\n if (subset) {\n subset.classList.add('is-active');\n subset.parentNode.classList.add('is-active');\n prevSubset = subset;\n\n\n // Otherwise, we select the option\n } else {\n const input = choice.querySelector('input[type=radio]');\n\n choice.classList.add('is-selected');\n input.checked = true;\n triggerChangeEvent(input);\n }\n\n onChangeCallback(event);\n}\n\nfunction triggerChangeEvent(input) {\n const event = document.createEvent(\"HTMLEvents\");\n\n event.initEvent(\"change\", false, true);\n input.dispatchEvent(event);\n}\n\nexport default init;\n","import Rails from '@rails/ujs';\nimport initAccordion from './accordion';\nimport initBundleFilters from './bundle-filters';\nimport initModal from './modal';\nimport initTabs from './tabs';\nimport initOptionCard from './option-card';\nimport { initQtyPickers, getQtyPickers } from './quantity-picker';\nimport storePathUrl from './store-path-url';\n\nlet container, bundleId;\n\ndocument.addEventListener('DOMContentLoaded', () => {\n container = document.querySelector('[data-bundle]');\n\n if (container) {\n bundleId = container.getAttribute(\"data-bundle\");\n\n Rails.ajax({\n url: storePathUrl('/cpq/bundles'),\n type: 'POST',\n data: 'lead_product_sfid=' + bundleId,\n success: init,\n });\n }\n});\n\nconst init = () => {\n const removeBtns = [...container.querySelectorAll('[data-feature-remove]')];\n const featureOptions = [...container.querySelectorAll('[data-feature-option]')];\n const addToBundleBtns = document.querySelectorAll(\"[data-add-option-to-bundle]\");\n const pickers = getQtyPickers();\n\n // Init imported components\n initBundleFilters();\n initAccordion();\n initModal();\n initTabs();\n initOptionCard(enableAddToBundleButton);\n initVariants();\n initQtyPickers(pickers);\n\n // Update UI to reflected saved selections\n featureOptions.filter(option => option.dataset.selected).map(option => {\n const productId = option.dataset.selected;\n\n container.querySelector(`input[value=\"${productId}\"]`).checked = true;\n updateFeatureOptionCard(option, productId);\n });\n\n // Event listener: Add product to bundle\n [...addToBundleBtns].map(button => {\n button.addEventListener(\"click\", event => {\n const form = event.target.form;\n const selectedInput = form.querySelector('[data-single-option-radio-input]:checked');\n\n event.preventDefault();\n chooseFeatureOption(form, selectedInput.value);\n })\n });\n\n\n // Event listener: Remove product from bundle\n removeBtns.map(removeBtn => {\n removeBtn.addEventListener('click', event => {\n const featureOption = event.currentTarget.closest('[data-feature-option]');\n const featureId = featureOption.dataset.featureOption;\n const productId = featureOption.dataset.selected;\n const loader = featureOption.querySelector('[data-loader]');\n\n loader.classList.add('is-active');\n\n addOrUpdateProductOption(productId, featureId, 0, true, success => {\n loader.classList.remove('is-active');\n container.querySelector(`input[value=\"${productId}\"]`).checked = false;\n updateFeatureOptionCard(featureOption, null);\n });\n });\n });\n\n // Event listener: Quantity change\n [...container.querySelectorAll('[data-qty-picker] input')]\n .map(input => input.addEventListener('change', updateQuantity));\n\n // Event listener: Select product variant\n [...container.querySelectorAll('[data-variant-option]')]\n .map(option => option.addEventListener('change', chooseProductVariant));\n\n document.querySelectorAll('[data-variant-group] select').forEach(selectElem => {\n selectElem.addEventListener('change', chooseProductVariant)\n })\n}\n\nfunction initVariants() {\n const variants = document.querySelectorAll('[data-variant-id]');\n if (variants.length === 0) return;\n\n const resetButton = document.querySelector('[data-variant-options-reset-button]');\n const variantOptions = [...document.querySelectorAll('[data-variant-option]')];\n const selectedOptions = returnSelectedVariantOptions(variantOptions);\n\n // If selected options exist upon initialisation we\n // select them so the appropriate content is shown\n if (selectedOptions.length > 0) {\n selectedOptions.map(option => {\n select(option, variantOptions, selectedOptions);\n });\n }\n else {\n restoreSessionSelections(variantOptions);\n }\n\n // Event listeners\n variantOptions.map(option => {\n option.addEventListener('change', event => {\n select(event.target, variantOptions);\n storeSessionSelections(variantOptions);\n });\n });\n\n document.querySelectorAll('[data-variant-group] select').forEach(selectElem => {\n selectElem.addEventListener('change', event => {\n const option = [...event.target.querySelectorAll('option')].filter(o => o.selected)[0];\n\n select(option, variantOptions);\n storeSessionSelections(variantOptions);\n })\n })\n\n if (resetButton) {\n resetButton.addEventListener('click', () => {\n reset(variantOptions);\n });\n }\n\n //Temporarily show all hidden content from old selector\n [...document.querySelectorAll('[data-variant-selector]')].map(node => {\n node.style.display = 'block';\n });\n\n}\n\nexport const addOrUpdateProductOption = (productId, featureId, qty, isSingleOption, onSuccessCallback) => {\n const button = document.querySelector('[data-bundle-add-to-cart]');\n const payload = generatePayload(productId, featureId, qty, isSingleOption);\n\n if (button) {\n button.disabled = true;\n button.value = \"Updating...\";\n }\n\n Rails.ajax({\n url: storePathUrl('/cpq/bundles/' + bundleId + '/product_options/' + productId),\n type: 'PATCH',\n data: payload,\n success: () => onSuccessCallback(),\n });\n}\n\nfunction chooseFeatureOption(form, productId) {\n const isOptional = form.dataset.optional == \"true\";\n const featureId = form.id;\n const featureOptionCard = container.querySelector(`[data-feature-option=\"${featureId}\"]`);\n const prevSelectedProductId = featureOptionCard.dataset.selected;\n const loader = featureOptionCard.querySelector('[data-loader]');\n\n loader.classList.add('is-active');\n\n // If a product is optional we must first remove the existing selection\n // before adding a new one.\n // Note: to simplify the logic here this could be handled in the backend\n if (isOptional && prevSelectedProductId) {\n addOrUpdateProductOption(prevSelectedProductId, featureId, 0, true, success => {\n addOrUpdateProductOption(productId, featureId, 1, true, success => {\n loader.classList.remove('is-active');\n updateFeatureOptionCard(featureOptionCard, productId);\n });\n });\n } else {\n addOrUpdateProductOption(productId, featureId, 1, true, success => {\n loader.classList.remove('is-active');\n updateFeatureOptionCard(featureOptionCard, productId);\n });\n }\n}\n\nfunction updateFeatureOptionCard(card, productId) {\n const img = card.querySelector('[data-feature-img]');\n const headline = card.querySelector('[data-feature-headline]');\n const subheadline = card.querySelector('[data-feature-subheadline]');\n const remove = card.querySelector('[data-feature-remove]');\n const trigger = card.querySelector('[data-modal-trigger]');\n\n let data = {\n headline: headline.dataset.featureHeadline,\n subheadline: subheadline.dataset.featureSubheadline,\n imageUrl: img ? img.dataset.featureImg : null\n }\n\n card.dataset.selected = \"\";\n\n if (productId) {\n const input = document.querySelector(`input[value=\"${productId}\"]`);\n const productCard = input.form.querySelector(`[data-single-option=\"${input.value}\"]`);\n const optionCard = input.form.querySelector(`[data-product-option-sfid=\"${input.dataset.optionId}\"]`);\n const subHeadline = productCard.querySelector('[data-single-option-subheading]');\n const image = optionCard.querySelector('[data-single-option-image]');\n\n let subHeadlineText, imageUrl;\n\n if (subHeadline) subHeadlineText = subHeadline.innerHTML;\n if (image) imageUrl = image.src;\n\n data = {\n headline: returnHeadline(optionCard, productCard),\n subheadline: subHeadlineText,\n imageUrl: imageUrl\n };\n\n card.dataset.selected = productId;\n trigger.querySelector('span').innerText = trigger.dataset.edit;\n\n if (data.imageUrl) {\n img.src = data.imageUrl;\n img.classList.remove('sc-hide');\n } else img.classList.add('sc-hide');\n\n if (remove) {\n remove.classList.remove('sc-hide');\n trigger.classList.add('sc-hide');\n }\n } else {\n img.classList.add('sc-hide');\n trigger.querySelector('span').innerText = trigger.dataset.add;\n if (remove) {\n remove.classList.add('sc-hide');\n trigger.classList.remove('sc-hide');\n }\n }\n\n headline.innerText = data.headline;\n subheadline.innerHTML = data.subheadline;\n}\n\nfunction returnHeadline(optionCard, productCard) {\n return optionCard.querySelector('[data-option-card-subset]') ?\n productCard.querySelector('[data-single-option-heading]').innerText :\n optionCard.querySelector('[data-single-option-heading]').innerText;\n}\n\nfunction chooseProductVariant(e) {\n const id = e.target.form.id;\n const featureId = e.target.form.querySelector('[data-feature]').value;\n const price = e.target.getAttribute('data-price');\n const priceEl = e.target.form.querySelector('[data-bundle-product-option-price]');\n const clearOption = document.querySelector(`[data-clear-product-option=\"${id}]\"`);\n const payload = generateVariantPayload(e.target.name, e.target.value, featureId);\n const variantSelector = e.target.value;\n\n if (clearOption) {\n clearOption.checked = false;\n }\n\n Rails.ajax({\n url: storePathUrl('/cpq/bundles/' + bundleId + '/product_options/' + id),\n type: 'PATCH',\n data: payload,\n success: () => {\n if (priceEl) {\n priceEl.innerText = price;\n }\n }\n });\n}\n\nfunction updateQuantity(e) {\n const featureId = e.target.form.id;\n const productId = e.target.form.dataset.productOptionSfid;\n const qty = e.target.form.querySelector('[data-qty-picker] input').value;\n\n if (productId) {\n addOrUpdateProductOption(productId, featureId, qty, false, () => {});\n }\n}\n\nfunction enableAddToBundleButton(event) {\n const button = event.currentTarget.closest('.SC-Modal').querySelector('[data-add-option-to-bundle]');\n\n if (button.hasAttribute('disabled')) {\n button.removeAttribute('disabled');\n }\n}\n\nfunction generatePayload(optionId, featureId, qty, isSingleOption) {\n const payload = \"product_option[sfid]=\" + optionId +\n \"&product_option[quantity]=\" + qty +\n \"&product_option[feature]=\" + featureId;\n\n if (isSingleOption) {\n return payload + \"&product_option[single_option]=1\";\n }\n\n return payload;\n}\n\nfunction generateVariantPayload(name, value, featureId) {\n // Because we are re-using the `variant_options` partial, we need to massage\n // the data slightly to match what the CPQ::ProductOptionsController expects\n if (name.startsWith('variant[')) {\n const variants = name.replace('variant[', 'variants][');\n\n return `product_option[${variants}[${value}][quantity]=1&product_option[feature]=${featureId}`;\n }\n\n else {\n const payload = name.includes('quantity') ?\n `${name}=${value}` :\n `${name}[${value}][quantity]=1`;\n\n // to avoid duplicate names, inputs have the product option sfid as a prefix,\n // here we strip out the sfid (and its trailing underscore) when constructing the payload\n return payload.substring(id.length + 1) + \"&product_option[feature]=\" + featureId;\n }\n}\n\n\n\n\n\nfunction returnSelectedVariantOptions(variantOptions) {\n return variantOptions\n .filter(opt => opt.checked || opt.selected)\n .sort((a, b) => {\n if (a.dataset.type < b.dataset.type) return -1;\n if (a.dataset.type > b.dataset.type) return 1;\n return 0;\n });\n}\n\nfunction select(option, options) {\n disableOrEnableVariantOptions(option, options);\n\n const variants = document.querySelectorAll('[data-variant-id]');\n const leadProduct = document.querySelector('[data-lead-product]');\n const opts = [...leadProduct.querySelectorAll('[data-variant-option]')];\n const selectedOptions = returnSelectedVariantOptions(opts);\n const requiredSelections = document.querySelectorAll('[data-variant-group]').length;\n const selectedVariant = returnSelectedVariantAsString(selectedOptions, requiredSelections);\n const leadProductImage = document.querySelector('[data-lead-product-image]');\n\n [...variants].map(variant => {\n if (variant.dataset.variantId === selectedVariant) {\n variant.classList.remove('is-hidden');\n if (variant.getAttribute('data-variant-image-src') && leadProductImage) {\n leadProductImage.src = variant.getAttribute('data-variant-image-src');\n }\n return;\n }\n variant.classList.add('is-hidden');\n });\n}\n\nfunction disableOrEnableVariantOptions(option, variantOptions) {\n const allowedOptions = option.dataset.variantAllowedOptions;\n const optionType = option.dataset.type;\n\n if (!allowedOptions || allowedOptions === \"{}\") return;\n\n [...document.querySelectorAll('[data-variant-option]')].map(group => {\n const groupType = group.dataset.type;\n const optionsInGroup = variantOptions.filter(o => o.dataset.type === groupType);\n\n if (groupType === optionType) return;\n optionsInGroup.map(option => {\n option.disabled = !JSON.parse(allowedOptions)[groupType].includes(option.value);\n });\n });\n}\n\nfunction returnSelectedVariantAsString(selectedOptions, requiredSelections) {\n if (selectedOptions.length === requiredSelections) {\n return selectedOptions.map(option => option.value).join(' ');\n }\n}\n\nfunction restoreSessionSelections(variantOptions) {\n const selectorNode = document.querySelector('[data-variant-option-selector]');\n if (!selectorNode) { return; }\n const masterId = selectorNode.dataset.masterId;\n const selectedVariantIds = JSON.parse(window.sessionStorage.getItem(`${masterId}:selected-variants`));\n selectSelectedIds(variantOptions, selectedVariantIds);\n}\n\n// Selected IDs is something like ['color-multi', 'size-37']\nfunction selectSelectedIds(variantOptions, selectedVariantIds) {\n let selectedIds = null;\n\n // Parse the array and clean it of nulls and empty strings if they exist\n if (Array.isArray(selectedVariantIds)) {\n selectedIds = selectedVariantIds.filter(x => x);\n }\n\n if (selectedIds) {\n selectedIds.forEach(id => {\n var option = document.querySelector(`#${id}`);\n\n if (!option) return\n\n if (option.tagName === 'OPTION') {\n option.selected = true;\n select(option, variantOptions);\n } else {\n option.checked = true;\n select(option, variantOptions);\n }\n });\n }\n}\n\nfunction storeSessionSelections(variantOptions) {\n const selectorNode = document.querySelector('[data-variant-option-selector]');\n const masterId = selectorNode.dataset.masterId;\n const selectedIds = returnSelectedVariantOptions(variantOptions).map(elem => elem.id);\n window.sessionStorage.setItem(`${masterId}:selected-variants`, JSON.stringify(selectedIds));\n}\n\nfunction reset(variantOptions) {\n // Unselect all the options and checkboxes\n variantOptions.map(optionInput => {\n if (optionInput.tagName === 'OPTION') optionInput.selected = false;\n if (optionInput.tagName === 'INPUT') optionInput.checked = false;\n optionInput.disabled = false;\n });\n // Reset all select boxes to the null state\n [...document.querySelectorAll('[data-variant-group] select')].map(selectInput => {\n [...selectInput.querySelectorAll('option[disabled]')].map(optionInput => {\n optionInput.selected = true;\n });\n });\n disableAddToCart();\n showOrHideVariantContent();\n clearSessionSelections();\n}\n\nfunction disableAddToCart() {\n [...document.querySelectorAll('[data-bundle-add-to-cart]')].map(selectInput => {\n selectInput.disabled = 'disabled';\n })\n}\n\nfunction showOrHideVariantContent(selectedVariant) {\n [...document.querySelectorAll('[data-variant-id]')].map(node => {\n const isMaster = !node.dataset.variantId;\n const isSelected = isMaster ?\n selectedVariant === undefined :\n node.dataset.variantId === selectedVariant;\n\n node.classList.toggle('is-hidden', !isSelected);\n });\n}\n\nfunction clearSessionSelections() {\n const selectorNode = document.querySelector('[data-variant-option-selector]');\n const masterId = selectorNode.dataset.masterId;\n window.sessionStorage.removeItem(`${masterId}:selected-variants`);\n}\n","import Rails from '@rails/ujs';\nimport storePathUrl from './store-path-url';\n\nconst CustomerMetadata = (() => {\n document.addEventListener('DOMContentLoaded', function() {\n if (document.querySelector('[data-customer-metadata]')) {\n updateCart();\n }\n });\n\n const timeZone = () => {\n return Intl.DateTimeFormat().resolvedOptions().timeZone;\n }\n\n const screenResolution = () => {\n return `${window.screen.width * window.devicePixelRatio} X ${window.screen.height * window.devicePixelRatio}`;\n }\n\n const language = () => {\n return window.navigator.language;\n }\n\n const updateCart = () => {\n const data = {\n timezone: timeZone(),\n language: language(),\n screen_resolution: screenResolution()\n }\n Rails.ajax({\n url: storePathUrl(\"/cart/customer_metadata\"),\n type: 'POST',\n dataType: 'json',\n data: new URLSearchParams(data).toString(),\n });\n }\n})();\n"],"sourceRoot":""}