{"version":3,"sources":["webpack:///javascripts/user-page-js/default.page.js","webpack:///./~/moment/moment.js?cbd3*****","webpack:///(webpack)/buildin/module.js?c3c2******************","webpack:///./~/moment/locale/ja.js?6e4b*****","webpack:///./~/moment/locale/af.js?88c9*****","webpack:///./~/moment/locale/ar-dz.js?1fc7*****","webpack:///./~/moment/locale/ar-kw.js?46da*****","webpack:///./~/moment/locale/ar-ly.js?cf11*****","webpack:///./~/moment/locale/ar-ma.js?0c05*****","webpack:///./~/moment/locale/ar-sa.js?040a*****","webpack:///./~/moment/locale/ar-tn.js?4a03*****","webpack:///./~/moment/locale/ar.js?cb78*****","webpack:///./~/moment/locale/az.js?9c7c*****","webpack:///./~/moment/locale/be.js?935d*****","webpack:///./~/moment/locale/bg.js?fad3*****","webpack:///./~/moment/locale/bm.js?c16d*****","webpack:///./~/moment/locale/bn-bd.js?37ec*****","webpack:///./~/moment/locale/bn.js?4fa3*****","webpack:///./~/moment/locale/bo.js?eca6*****","webpack:///./~/moment/locale/br.js?17cd*****","webpack:///./~/moment/locale/bs.js?82b9*****","webpack:///./~/moment/locale/ca.js?a990*****","webpack:///./~/moment/locale/cs.js?888d*****","webpack:///./~/moment/locale/cv.js?63c7*****","webpack:///./~/moment/locale/cy.js?8cbf*****","webpack:///./~/moment/locale/da.js?dd92*****","webpack:///./~/moment/locale/de-at.js?f117*****","webpack:///./~/moment/locale/de-ch.js?0dd0*****","webpack:///./~/moment/locale/de.js?f66f*****","webpack:///./~/moment/locale/dv.js?00e2*****","webpack:///./~/moment/locale/el.js?09c7*****","webpack:///./~/moment/locale/en-au.js?9fc6*****","webpack:///./~/moment/locale/en-ca.js?009a*****","webpack:///./~/moment/locale/en-gb.js?997b*****","webpack:///./~/moment/locale/en-ie.js?56c8*****","webpack:///./~/moment/locale/en-il.js?0702*****","webpack:///./~/moment/locale/en-in.js?ba48*****","webpack:///./~/moment/locale/en-nz.js?bef6*****","webpack:///./~/moment/locale/en-sg.js?5b63*****","webpack:///./~/moment/locale/eo.js?f700*****","webpack:///./~/moment/locale/es-do.js?0bc5*****","webpack:///./~/moment/locale/es-mx.js?14b0*****","webpack:///./~/moment/locale/es-us.js?1877*****","webpack:///./~/moment/locale/es.js?5b5d*****","webpack:///./~/moment/locale/et.js?828a*****","webpack:///./~/moment/locale/eu.js?d3ef*****","webpack:///./~/moment/locale/fa.js?e144*****","webpack:///./~/moment/locale/fi.js?88ad*****","webpack:///./~/moment/locale/fil.js?c410*****","webpack:///./~/moment/locale/fo.js?173d*****","webpack:///./~/moment/locale/fr-ca.js?398b*****","webpack:///./~/moment/locale/fr-ch.js?7dd3*****","webpack:///./~/moment/locale/fr.js?a8db*****","webpack:///./~/moment/locale/fy.js?683e*****","webpack:///./~/moment/locale/ga.js?4641*****","webpack:///./~/moment/locale/gd.js?6030*****","webpack:///./~/moment/locale/gl.js?278f*****","webpack:///./~/moment/locale/gom-deva.js?115c*****","webpack:///./~/moment/locale/gom-latn.js?b269*****","webpack:///./~/moment/locale/gu.js?3c6f*****","webpack:///./~/moment/locale/he.js?f6c7*****","webpack:///./~/moment/locale/hi.js?3e7b*****","webpack:///./~/moment/locale/hr.js?8e0c*****","webpack:///./~/moment/locale/hu.js?2007*****","webpack:///./~/moment/locale/hy-am.js?7cf3*****","webpack:///./~/moment/locale/id.js?1386*****","webpack:///./~/moment/locale/is.js?cd1e*****","webpack:///./~/moment/locale/it-ch.js?f023*****","webpack:///./~/moment/locale/it.js?b7cc*****","webpack:///./~/moment/locale/jv.js?b85f*****","webpack:///./~/moment/locale/ka.js?4117*****","webpack:///./~/moment/locale/kk.js?53ef*****","webpack:///./~/moment/locale/km.js?c43a*****","webpack:///./~/moment/locale/kn.js?be60*****","webpack:///./~/moment/locale/ko.js?8bd6*****","webpack:///./~/moment/locale/ku.js?cba2*****","webpack:///./~/moment/locale/ky.js?3035*****","webpack:///./~/moment/locale/lb.js?ee29*****","webpack:///./~/moment/locale/lo.js?c195*****","webpack:///./~/moment/locale/lt.js?22e3*****","webpack:///./~/moment/locale/lv.js?d612*****","webpack:///./~/moment/locale/me.js?e63a*****","webpack:///./~/moment/locale/mi.js?d16a*****","webpack:///./~/moment/locale/mk.js?718b*****","webpack:///./~/moment/locale/ml.js?1509*****","webpack:///./~/moment/locale/mn.js?76fb*****","webpack:///./~/moment/locale/mr.js?665a*****","webpack:///./~/moment/locale/ms-my.js?ce83*****","webpack:///./~/moment/locale/ms.js?d5f9*****","webpack:///./~/moment/locale/mt.js?46ee*****","webpack:///./~/moment/locale/my.js?cbc9*****","webpack:///./~/moment/locale/nb.js?192d*****","webpack:///./~/moment/locale/ne.js?b65c*****","webpack:///./~/moment/locale/nl-be.js?195f*****","webpack:///./~/moment/locale/nl.js?acf5*****","webpack:///./~/moment/locale/nn.js?cdba*****","webpack:///./~/moment/locale/oc-lnc.js?7f24*****","webpack:///./~/moment/locale/pa-in.js?c9ab*****","webpack:///./~/moment/locale/pl.js?bbb5*****","webpack:///./~/moment/locale/pt-br.js?8e38*****","webpack:///./~/moment/locale/pt.js?5f67*****","webpack:///./~/moment/locale/ro.js?2022*****","webpack:///./~/moment/locale/ru.js?2e3a*****","webpack:///./~/moment/locale/sd.js?4713*****","webpack:///./~/moment/locale/se.js?321a*****","webpack:///./~/moment/locale/si.js?e232*****","webpack:///./~/moment/locale/sk.js?1782*****","webpack:///./~/moment/locale/sl.js?2e01*****","webpack:///./~/moment/locale/sq.js?9127*****","webpack:///./~/moment/locale/sr-cyrl.js?41e5*****","webpack:///./~/moment/locale/sr.js?d15b*****","webpack:///./~/moment/locale/ss.js?5738*****","webpack:///./~/moment/locale/sv.js?c031*****","webpack:///./~/moment/locale/sw.js?83c9*****","webpack:///./~/moment/locale/ta.js?5593*****","webpack:///./~/moment/locale/te.js?921d*****","webpack:///./~/moment/locale/tet.js?68db*****","webpack:///./~/moment/locale/tg.js?7e22*****","webpack:///./~/moment/locale/th.js?4e53*****","webpack:///./~/moment/locale/tk.js?4b0d*****","webpack:///./~/moment/locale/tl-ph.js?5e27*****","webpack:///./~/moment/locale/tlh.js?8171*****","webpack:///./~/moment/locale/tr.js?e160*****","webpack:///./~/moment/locale/tzl.js?6135*****","webpack:///./~/moment/locale/tzm-latn.js?1d9f*****","webpack:///./~/moment/locale/tzm.js?315b*****","webpack:///./~/moment/locale/ug-cn.js?6ff7*****","webpack:///./~/moment/locale/uk.js?c903*****","webpack:///./~/moment/locale/ur.js?2d75*****","webpack:///./~/moment/locale/uz-latn.js?ef34*****","webpack:///./~/moment/locale/uz.js?15dd*****","webpack:///./~/moment/locale/vi.js?6a6b*****","webpack:///./~/moment/locale/x-pseudo.js?c800*****","webpack:///./~/moment/locale/yo.js?967d*****","webpack:///./~/moment/locale/zh-cn.js?27b2*****","webpack:///./~/moment/locale/zh-hk.js?8c1d*****","webpack:///./~/moment/locale/zh-mo.js?6e36*****","webpack:///./~/moment/locale/zh-tw.js?20cb*****","webpack:///./~/moment/locale ^\\.\\/.*$?cbbd*****","webpack:///./es6/user-common-js/legacy/utilizationtimeInfo.js","webpack:///./es6/user-page-js/default.page.js","webpack:///./source/javascripts/main.js","webpack:///./source/javascripts/vendor/fullcalendar-2.9.1/fullcalendar.js"],"names":["webpackJsonp","0","module","exports","__webpack_require__","1","require","console","global","factory","this","hooks","hookCallback","apply","arguments","setHookCallback","callback","isArray","input","Array","Object","prototype","toString","call","isObject","hasOwnProp","a","b","hasOwnProperty","isObjectEmpty","obj","getOwnPropertyNames","length","k","isUndefined","isNumber","isDate","Date","map","arr","fn","i","res","push","extend","valueOf","createUTC","format","locale","strict","createLocalOrUTC","utc","defaultParsingFlags","empty","unusedTokens","unusedInput","overflow","charsLeftOver","nullInput","invalidEra","invalidMonth","invalidFormat","userInvalidated","iso","parsedDateParts","era","meridiem","rfc2822","weekdayMismatch","getParsingFlags","m","_pf","isValid","_isValid","flags","parsedParts","some","isNowValid","isNaN","_d","getTime","invalidWeekday","_strict","undefined","bigHour","isFrozen","createInvalid","NaN","copyConfig","to","from","prop","val","_isAMomentObject","_i","_f","_l","_tzm","_isUTC","_offset","_locale","momentProperties","Moment","config","updateInProgress","updateOffset","isMoment","warn","msg","suppressDeprecationWarnings","deprecate","firstTime","deprecationHandler","arg","key","args","slice","join","Error","stack","deprecateSimple","name","deprecations","isFunction","Function","set","_config","_dayOfMonthOrdinalParseLenient","RegExp","_dayOfMonthOrdinalParse","source","_ordinalParse","mergeConfigs","parentConfig","childConfig","Locale","calendar","mom","now","output","_calendar","zeroFill","number","targetLength","forceSign","absNumber","Math","abs","zerosToFill","sign","pow","max","substr","addFormatToken","token","padded","ordinal","func","formatTokenFunctions","localeData","removeFormattingTokens","match","replace","makeFormatFunction","array","formattingTokens","formatMoment","expandFormat","formatFunctions","invalidDate","replaceLongDateFormatTokens","longDateFormat","localFormattingTokens","lastIndex","test","_longDateFormat","formatUpper","toUpperCase","tok","_invalidDate","_ordinal","relativeTime","withoutSuffix","string","isFuture","_relativeTime","pastFuture","diff","addUnitAlias","unit","shorthand","lowerCase","toLowerCase","aliases","normalizeUnits","units","normalizeObjectUnits","inputObject","normalizedProp","normalizedInput","addUnitPriority","priority","priorities","getPrioritizedUnits","unitsObj","u","sort","isLeapYear","year","absFloor","ceil","floor","toInt","argumentForCoercion","coercedNumber","value","isFinite","makeGetSet","keepTime","set$1","get","month","date","daysInMonth","stringGet","stringSet","prioritized","addRegexToken","regex","strictRegex","regexes","isStrict","getParseRegexForToken","unescapeFormat","s","regexEscape","matched","p1","p2","p3","p4","addParseToken","tokens","addWeekParseToken","_w","addTimeToArrayFromToken","_a","mod","n","x","modMonth","localeMonths","_months","isFormat","MONTHS_IN_FORMAT","localeMonthsShort","_monthsShort","handleStrictParse","monthName","ii","llc","toLocaleLowerCase","_monthsParse","_longMonthsParse","_shortMonthsParse","monthsShort","months","indexOf","localeMonthsParse","_monthsParseExact","setMonth","dayOfMonth","monthsParse","min","getSetMonth","getDaysInMonth","monthsShortRegex","computeMonthsParse","_monthsShortStrictRegex","_monthsShortRegex","defaultMonthsShortRegex","monthsRegex","_monthsStrictRegex","_monthsRegex","defaultMonthsRegex","cmpLenRev","shortPieces","longPieces","mixedPieces","daysInYear","getIsLeapYear","createDate","y","d","h","M","ms","getFullYear","setFullYear","createUTCDate","UTC","getUTCFullYear","setUTCFullYear","firstWeekOffset","dow","doy","fwd","fwdlw","getUTCDay","dayOfYearFromWeeks","week","weekday","resYear","resDayOfYear","localWeekday","weekOffset","dayOfYear","weekOfYear","resWeek","weeksInYear","weekOffsetNext","localeWeek","_week","localeFirstDayOfWeek","localeFirstDayOfYear","getSetWeek","add","getSetISOWeek","parseWeekday","weekdaysParse","parseInt","parseIsoWeekday","shiftWeekdays","ws","concat","localeWeekdays","weekdays","_weekdays","day","localeWeekdaysShort","_weekdaysShort","localeWeekdaysMin","_weekdaysMin","handleStrictParse$1","weekdayName","_weekdaysParse","_shortWeekdaysParse","_minWeekdaysParse","weekdaysMin","weekdaysShort","localeWeekdaysParse","_weekdaysParseExact","_fullWeekdaysParse","getSetDayOfWeek","getDay","getSetLocaleDayOfWeek","getSetISODayOfWeek","weekdaysRegex","computeWeekdaysParse","_weekdaysStrictRegex","_weekdaysRegex","defaultWeekdaysRegex","weekdaysShortRegex","_weekdaysShortStrictRegex","_weekdaysShortRegex","defaultWeekdaysShortRegex","weekdaysMinRegex","_weekdaysMinStrictRegex","_weekdaysMinRegex","defaultWeekdaysMinRegex","minp","shortp","longp","minPieces","hFormat","hours","kFormat","lowercase","minutes","matchMeridiem","_meridiemParse","localeIsPM","charAt","localeMeridiem","isLower","commonPrefix","arr1","arr2","minl","normalizeLocale","chooseLocale","names","j","next","split","loadLocale","globalLocale","aliasedRequire","oldLocale","locales","_abbr","getSetGlobalLocale","e","values","data","getLocale","defineLocale","baseConfig","abbr","parentLocale","localeFamilies","forEach","updateLocale","tmpLocale","listLocales","keys","checkOverflow","MONTH","DATE","YEAR","HOUR","MINUTE","SECOND","MILLISECOND","_overflowDayOfYear","_overflowWeeks","WEEK","_overflowWeekday","WEEKDAY","configFromISO","l","allowTime","dateFormat","timeFormat","tzFormat","extendedIsoRegex","exec","basicIsoRegex","isoDates","isoTimes","tzRegex","configFromStringAndFormat","extractFromRFC2822Strings","yearStr","monthStr","dayStr","hourStr","minuteStr","secondStr","result","untruncateYear","defaultLocaleMonthsShort","preprocessRFC2822","checkWeekday","weekdayStr","parsedInput","weekdayProvided","defaultLocaleWeekdaysShort","weekdayActual","calculateOffset","obsOffset","militaryOffset","numOffset","obsOffsets","hm","configFromRFC2822","parsedArray","setUTCMinutes","getUTCMinutes","configFromString","aspNetJsonRegex","createFromInputFallback","defaults","c","currentDateArray","nowValue","_useUTC","getUTCMonth","getUTCDate","getMonth","getDate","configFromArray","currentDate","expectedWeekday","yearToUse","dayOfYearFromWeekInfo","_dayOfYear","_nextDay","w","weekYear","temp","weekdayOverflow","curWeek","GG","W","E","createLocal","gg","ISO_8601","RFC_2822","skipped","stringLength","totalParsedInputLength","_meridiem","meridiemFixWrap","erasConvertYear","hour","isPm","meridiemHour","isPM","configFromStringAndArray","tempConfig","bestMoment","scoreToBeat","currentScore","validFormatFound","bestFormatIsValid","score","configFromObject","dayOrDate","minute","second","millisecond","createFromConfig","prepareConfig","preparse","configFromInput","isUTC","pickBy","moments","isDurationValid","unitHasDecimal","ordering","parseFloat","isValid$1","createInvalid$1","createDuration","Duration","duration","years","quarters","quarter","weeks","isoWeek","days","seconds","milliseconds","_milliseconds","_days","_data","_bubble","isDuration","absRound","round","compareArrays","array1","array2","dontConvert","len","lengthDiff","diffs","offset","separator","utcOffset","offsetFromString","matcher","chunk","parts","matches","chunkOffset","cloneWithOffset","model","clone","setTime","local","getDateOffset","getTimezoneOffset","getSetOffset","keepLocalTime","keepMinutes","localAdjust","matchShortOffset","_changeInProgress","addSubtract","getSetZone","setOffsetToUTC","setOffsetToLocal","subtract","setOffsetToParsedOffset","tZone","matchOffset","hasAlignedHourOffset","isDaylightSavingTime","isDaylightSavingTimeShifted","_isDSTShifted","other","toArray","isLocal","isUtcOffset","isUtc","ret","diffRes","aspNetRegex","isoRegex","parseIso","momentsDifference","inp","positiveMomentsDifference","base","isAfter","isBefore","createAdder","direction","period","dur","tmp","isAdding","isString","String","isMomentInput","isNumberOrStringArray","isMomentInputObject","property","objectTest","propertyTest","properties","arrayTest","dataTypeTest","filter","item","isCalendarSpec","getCalendarFormat","myMoment","calendar$1","time","formats","sod","startOf","calendarFormat","localInput","endOf","isBetween","inclusivity","localFrom","localTo","isSame","inputMs","isSameOrAfter","isSameOrBefore","asFloat","that","zoneDelta","monthDiff","anchor2","adjust","wholeMonthDiff","anchor","toISOString","keepOffset","toDate","inspect","prefix","datetime","suffix","zone","inputString","defaultFormatUtc","defaultFormat","postformat","humanize","fromNow","toNow","newLocaleData","mod$1","dividend","divisor","localStartOfDate","MS_PER_400_YEARS","utcStartOfDate","startOfDate","isoWeekday","MS_PER_MINUTE","MS_PER_HOUR","MS_PER_SECOND","unix","toObject","toJSON","isValid$2","parsingFlags","invalidAt","creationData","localeEras","eras","_eras","since","until","Infinity","localeErasParse","eraName","narrow","localeErasConvertYear","dir","getEraName","getEraNarrow","getEraAbbr","getEraYear","erasNameRegex","computeErasParse","_erasNameRegex","_erasRegex","erasAbbrRegex","_erasAbbrRegex","erasNarrowRegex","_erasNarrowRegex","matchEraAbbr","matchEraName","matchEraNarrow","matchEraYearOrdinal","_eraYearOrdinalRegex","matchUnsigned","abbrPieces","namePieces","narrowPieces","addWeekYearFormatToken","getter","getSetWeekYear","getSetWeekYearHelper","getSetISOWeekYear","getISOWeeksInYear","getISOWeeksInISOWeekYear","isoWeekYear","getWeeksInYear","weekInfo","getWeeksInWeekYear","weeksTarget","setWeekAll","dayOfYearData","getSetQuarter","getSetDayOfYear","parseMs","getZoneAbbr","getZoneName","createUnix","createInZone","parseZone","preParsePostFormat","get$1","index","field","setter","listMonthsImpl","out","listWeekdaysImpl","localeSorted","shift","listMonths","listMonthsShort","listWeekdays","listWeekdaysShort","listWeekdaysMin","mathAbs","addSubtract$1","add$1","subtract$1","absCeil","bubble","monthsFromDays","monthsToDays","daysToMonths","as","valueOf$1","makeAs","alias","clone$1","get$2","makeGetter","substituteTimeAgo","relativeTime$1","posNegDuration","thresholds","ss","getSetRelativeTimeRounding","roundingFunction","getSetRelativeTimeThreshold","threshold","limit","argWithSuffix","argThresholds","withSuffix","th","assign","toISOString$1","totalSign","ymSign","daysSign","hmsSign","abs$1","total","asSeconds","toFixed","fun","t","defaultCalendar","sameDay","nextDay","nextWeek","lastDay","lastWeek","sameElse","defaultLongDateFormat","LTS","LT","L","LL","LLL","LLLL","defaultInvalidDate","defaultOrdinal","defaultDayOfMonthOrdinalParse","defaultRelativeTime","future","past","mm","hh","dd","ww","MM","yy","match1","match2","match3","match4","match6","match1to2","match3to4","match5to6","match1to3","match1to4","match1to6","matchSigned","matchTimestamp","matchWord","o","defaultLocaleMonths","parseTwoDigitYear","getSetYear","defaultLocaleWeek","defaultLocaleWeekdays","defaultLocaleWeekdaysMin","kInput","_isPm","pos","pos1","pos2","defaultLocaleMeridiemParse","getSetHour","dayOfMonthOrdinalParse","meridiemParse","UT","GMT","EDT","EST","CDT","CST","MDT","MST","PDT","PST","prototypeMin","prototypeMax","invalid","lang","erasParse","eraYearOrdinalParse","getSetDayOfMonth","getSetMinute","getSetSecond","getSetMillisecond","proto","Symbol","for","eraNarrow","eraAbbr","eraYear","isoWeeks","weeksInWeekYear","isoWeeksInYear","isoWeeksInISOWeekYear","isDST","zoneAbbr","zoneName","dates","isDSTShifted","proto$1","firstDayOfYear","firstDayOfWeek","langData","asMilliseconds","asMinutes","asHours","asDays","asWeeks","asMonths","asQuarters","asYears","proto$2","toIsoString","version","relativeTimeRounding","relativeTimeThreshold","HTML5_FMT","DATETIME_LOCAL","DATETIME_LOCAL_SECONDS","DATETIME_LOCAL_MS","TIME","TIME_SECONDS","TIME_MS","94","webpackPolyfill","paths","children","286","moment","ja","eraYearOrdinalRegex","ll","lll","llll","306","af","307","pluralForm","plurals","pluralize","f","str","arDz","weekdaysParseExact","308","arKw","309","symbolMap","2","3","4","5","6","7","8","9","arLy","310","arMa","311","numberMap","١","٢","٣","٤","٥","٦","٧","٨","٩","٠","arSa","312","arTn","313","ar","314","suffixes","70","80","20","50","100","10","30","60","90","az","315","plural","word","num","forms","relativeTimeWithPlural","be","standalone","316","bg","lastDigit","last2Digits","317","bm","318","১","২","৩","৪","৫","৬","৭","৮","৯","০","bnBd","319","bn","320","༡","༢","༣","༤","༥","༦","༧","༨","༩","༠","bo","monthsParseExact","321","relativeTimeWithMutation","mutation","specialMutationForYears","lastNumber","text","softMutation","mutationTable","substring","monthsStrictRegex","monthsShortStrictRegex","fullWeekdaysParse","shortWeekdaysParse","minWeekdaysParse","br","longMonthsParse","shortMonthsParse","322","translate","bs","323","ca","324","cs","325","cv","affix","326","cy","lookup","327","da","328","processRelativeTime","deAt","329","deCh","330","de","331","dv","332","el","monthsNominativeEl","monthsGenitiveEl","momentToFormat","_monthsGenitiveEl","_monthsNominativeEl","calendarEl","_calendarEl","333","enAu","334","enCa","335","enGb","336","enIe","337","enIl","338","enIn","339","enNz","340","enSg","341","eo","342","monthsShortDot","esDo","343","esMx","344","esUs","345","es","346","et","347","eu","348","۱","۲","۳","۴","۵","۶","۷","۸","۹","۰","fa","349","verbalNumber","numbersFuture","numbersPast","fi","350","fil","351","fo","352","frCa","353","frCh","354","fr","355","monthsShortWithDots","monthsShortWithoutDots","fy","356","ga","357","gd","358","gl","359","gomDeva","360","gomLatn","361","૧","૨","૩","૪","૫","૬","૭","૮","૯","૦","gu","362","he","363","१","२","३","४","५","६","७","८","९","०","hi","364","hr","365","weekEndings","hu","366","hyAm","367","id","368","is","369","itCh","370","it","371","jv","372","ka","$0","$1","$2","373","40","kk","374","១","២","៣","៤","៥","៦","៧","៨","៩","០","km","375","೧","೨","೩","೪","೫","೬","೭","೮","೯","೦","kn","376","ko","isUpper","377","ku","378","ky","379","processFutureTime","eifelerRegelAppliesToNumber","processPastTime","firstDigit","lb","380","lo","381","translateSeconds","translateSingular","special","lt","382","relativeTimeWithSingular","relativeSeconds","lv","383","translator","words","correctGrammaticalCase","wordKey","me","lastWeekDays","384","mi","385","mk","386","ml","387","mn","388","relativeTimeMr","mr","389","msMy","390","391","mt","392","၁","၂","၃","၄","၅","၆","၇","၈","၉","၀","my","393","nb","394","ne","395","nlBe","396","nl","397","nn","398","ocLnc","399","੧","੨","੩","੪","੫","੬","੭","੮","੯","੦","paIn","400","monthsNominative","monthsSubjective","pl","401","ptBr","402","pt","403","ro","404","ru","405","sd","406","se","407","si","408","sk","409","sl","410","sq","411","srCyrl","412","sr","413","414","sv","415","sw","416","௧","௨","௩","௪","௫","௬","௭","௮","௯","௦","ta","417","te","418","tet","419","12","13","tg","420","421","tk","422","tlPh","423","translateFuture","translatePast","numberNoun","numberAsNoun","hundred","ten","one","numbersNouns","tlh","424","tr","425","tzl","426","tzmLatn","427","tzm","428","ugCn","429","weekdaysCaseReplace","nounCase","nominative","accusative","genitive","processHoursFunction","uk","430","ur","431","uzLatn","432","uz","433","vi","434","xPseudo","435","yo","436","zhCn","437","zhHk","438","zhMo","439","zhTw","467","webpackContext","req","webpackContextResolve","./af","./af.js","./ar","./ar-dz","./ar-dz.js","./ar-kw","./ar-kw.js","./ar-ly","./ar-ly.js","./ar-ma","./ar-ma.js","./ar-sa","./ar-sa.js","./ar-tn","./ar-tn.js","./ar.js","./az","./az.js","./be","./be.js","./bg","./bg.js","./bm","./bm.js","./bn","./bn-bd","./bn-bd.js","./bn.js","./bo","./bo.js","./br","./br.js","./bs","./bs.js","./ca","./ca.js","./cs","./cs.js","./cv","./cv.js","./cy","./cy.js","./da","./da.js","./de","./de-at","./de-at.js","./de-ch","./de-ch.js","./de.js","./dv","./dv.js","./el","./el.js","./en-au","./en-au.js","./en-ca","./en-ca.js","./en-gb","./en-gb.js","./en-ie","./en-ie.js","./en-il","./en-il.js","./en-in","./en-in.js","./en-nz","./en-nz.js","./en-sg","./en-sg.js","./eo","./eo.js","./es","./es-do","./es-do.js","./es-mx","./es-mx.js","./es-us","./es-us.js","./es.js","./et","./et.js","./eu","./eu.js","./fa","./fa.js","./fi","./fi.js","./fil","./fil.js","./fo","./fo.js","./fr","./fr-ca","./fr-ca.js","./fr-ch","./fr-ch.js","./fr.js","./fy","./fy.js","./ga","./ga.js","./gd","./gd.js","./gl","./gl.js","./gom-deva","./gom-deva.js","./gom-latn","./gom-latn.js","./gu","./gu.js","./he","./he.js","./hi","./hi.js","./hr","./hr.js","./hu","./hu.js","./hy-am","./hy-am.js","./id","./id.js","./is","./is.js","./it","./it-ch","./it-ch.js","./it.js","./ja","./ja.js","./jv","./jv.js","./ka","./ka.js","./kk","./kk.js","./km","./km.js","./kn","./kn.js","./ko","./ko.js","./ku","./ku.js","./ky","./ky.js","./lb","./lb.js","./lo","./lo.js","./lt","./lt.js","./lv","./lv.js","./me","./me.js","./mi","./mi.js","./mk","./mk.js","./ml","./ml.js","./mn","./mn.js","./mr","./mr.js","./ms","./ms-my","./ms-my.js","./ms.js","./mt","./mt.js","./my","./my.js","./nb","./nb.js","./ne","./ne.js","./nl","./nl-be","./nl-be.js","./nl.js","./nn","./nn.js","./oc-lnc","./oc-lnc.js","./pa-in","./pa-in.js","./pl","./pl.js","./pt","./pt-br","./pt-br.js","./pt.js","./ro","./ro.js","./ru","./ru.js","./sd","./sd.js","./se","./se.js","./si","./si.js","./sk","./sk.js","./sl","./sl.js","./sq","./sq.js","./sr","./sr-cyrl","./sr-cyrl.js","./sr.js","./ss","./ss.js","./sv","./sv.js","./sw","./sw.js","./ta","./ta.js","./te","./te.js","./tet","./tet.js","./tg","./tg.js","./th","./th.js","./tk","./tk.js","./tl-ph","./tl-ph.js","./tlh","./tlh.js","./tr","./tr.js","./tzl","./tzl.js","./tzm","./tzm-latn","./tzm-latn.js","./tzm.js","./ug-cn","./ug-cn.js","./uk","./uk.js","./ur","./ur.js","./uz","./uz-latn","./uz-latn.js","./uz.js","./vi","./vi.js","./x-pseudo","./x-pseudo.js","./yo","./yo.js","./zh-cn","./zh-cn.js","./zh-hk","./zh-hk.js","./zh-mo","./zh-mo.js","./zh-tw","./zh-tw.js","resolve","885","$","document","ready","window","getUtilizationTimeInfo","ajax","url","type","dataType","success","log","logout","location","logout_url","alert","error","890","1140","popover","on","preventDefault","1142","1146","__WEBPACK_AMD_DEFINE_FACTORY__","__WEBPACK_AMD_DEFINE_ARRAY__","__WEBPACK_AMD_DEFINE_RESULT__","mergeOptions","optionObjs","mergeProps","complexOptions","massageOverrides","subObj","overrides","views","each","isPlainObject","inArray","subName","subVal","compensateScroll","rowEls","scrollbarWidths","left","css","border-left-width","margin-left","right","border-right-width","margin-right","uncompensateScroll","disableCursor","addClass","enableCursor","removeClass","distributeHeight","els","availableHeight","shouldRedistribute","minOffset1","minOffset2","flexEls","flexOffsets","flexHeights","usedHeight","undistributeHeight","minOffset","naturalOffset","outerHeight","height","naturalHeight","newHeight","matchCellWidths","maxInnerWidth","find","innerEl","innerWidth","outerWidth","width","subtractInnerElHeight","outerEl","both","position","getScrollParent","scrollParent","parents","parent","eq","ownerDocument","getOuterRect","origin","top","bottom","getClientRect","getScrollbarWidths","getCssFloat","clientWidth","clientHeight","getContentRect","leftRightWidth","widths","innerHeight","getIsLeftRtlScrollbars","_isLeftRtlScrollbars","computeIsLeftRtlScrollbars","border","padding","appendTo","remove","isPrimaryMouseButton","ev","which","ctrlKey","getEvX","pageX","touches","originalEvent","getEvY","pageY","getEvIsTouch","preventSelection","bindAnyScroll","handler","addEventListener","unbindAnyScroll","removeEventListener","intersectRects","rect1","rect2","constrainPoint","point","rect","getRectCenter","diffPoints","point1","point2","parseFieldSpecs","specs","order","compareByFieldSpecs","obj1","obj2","fieldSpecs","cmp","compareByFieldSpec","fieldSpec","flexibleCompare","localeCompare","intersectRanges","subjectRange","constraintRange","segStart","segEnd","isStart","isEnd","subjectStart","start","subjectEnd","end","constraintStart","constraintEnd","diffDayTime","stripTime","diffDay","diffByUnit","computeIntervalUnit","intervalUnits","computeRangeAs","isInt","divideRangeByDuration","durationHasTime","divideDurationByDuration","dur1","dur2","months1","months2","multiplyDuration","Boolean","isNativeDate","isTimeString","propObjs","complexProps","complexObjs","props","dest","unshift","createObject","copyOwnProps","src","copyNativeMethods","hasOwnPropMethod","isAtomic","applyAll","functions","thisObj","firstDefined","htmlEscape","stripHtmlEntities","cssToStr","cssProps","statements","capitaliseFirstLetter","compareNumbers","proxy","methodName","method","debounce","wait","immediate","timeout","context","timestamp","later","last","setTimeout","callNow","syncThen","promise","thenFunc","then","state","when","makeMoment","parseAsUTC","isAmbigTime","isAmbigZone","ambigMatch","isSingleString","transferAmbigs","ambigDateOfMonthRegex","ambigTimeOrZoneRegex","_ambigTime","_ambigZone","_fullCalendar","commonlyAmbiguate","inputs","preserveTime","anyAmbigTime","anyAmbigZone","moms","FC","stripZone","setMomentValues","oldMomentFormat","formatStr","oldMomentProto","formatDate","formatDateWithChunks","getFormatStringChunks","chunks","formatDateWithChunk","maybeStr","tokenOverrides","maybe","formatRange","date1","date2","isRTL","formatRangeWithChunks","chunkStr","leftI","rightI","middleI","unzonedDate1","unzonedDate2","leftStr","rightStr","middleStr1","middleStr2","middleStr","formatSimilarChunk","similarUnitMap","formatStringChunkCache","chunkFormatString","chunker","Class","extendClass","superClass","members","subClass","constructor","mixIntoClass","theClass","isHitsEqual","hit0","hit1","component","isHitPropsWithin","subHit","superHit","propName","isBgEvent","event","rendering","getEventRendering","isInverseBgEvent","groupEventsById","events","eventsById","_id","compareRanges","range1","range2","getDraggedElMeta","eventProps","startTime","stick","dataAttrPrefix","isDaySegCollision","seg","otherSegs","otherSeg","leftCol","rightCol","compareDaySegCols","buildSlotSegLevels","segs","levels","computeSlotSegCollisions","level","computeForwardSlotSegs","forwardSegs","computeSlotSegPressures","forwardSeg","forwardPressure","results","isSlotSegCollision","seg1","seg2","Calendar_constructor","element","localizeMoment","_lang","render","content","elementVisible","calcSize","renderView","initialRender","bindOption","theme","tm","toggleClass","bindOptions","prependTo","header","Header","renderHeader","options","defaultView","handleWindowResize","windowResizeProxy","windowResize","windowResizeDelay","resize","prepend","destroy","currentView","removeElement","unbind","viewType","explicitScrollState","ignoreWindowResize","freezeContentHeight","clearView","view","viewsByType","instantiateView","setElement","activateButton","massageCurrentDate","displaying","isWithin","intervalStart","intervalEnd","display","unfreezeContentHeight","updateHeaderTitle","updateTodayButton","getAndRenderEvents","deactivateButton","reinitView","scrollState","queryScroll","updateSize","shouldRecalc","_calcSize","contentHeightInput","contentHeight","heightInput","suggestedViewHeight","queryHeaderHeight","aspectRatio","target","trigger","_element","refetchEvents","fetchAndRenderEvents","refetchEventSources","matchInputs","fetchEventSources","getEventSourcesByMatchArray","renderEvents","displayEvents","lazyFetching","isFetchNeeded","fetchEvents","reportEvents","_events","reportEventChange","updateTitle","title","getNow","disableButton","enableButton","select","zonedStartInput","zonedEndInput","buildSelectSpan","unselect","prev","computePrevDate","computeNextDate","prevYear","nextYear","today","gotoDate","zonedDateInput","incrementDate","delta","zoomTo","newDate","spec","getViewSpec","getUnitViewSpec","applyTimezone","getCalendar","getView","option","newOptionHash","setOptions","optionName","optionCnt","dynamicOverrides","viewSpecCache","populateOptionsHash","triggerOptionHandlers","unrenderBusinessHours","renderBusinessHours","rezoneArrayEventSources","triggerWith","rerenderEvents","changeView","optionHandlers","monthNames","monthNamesShort","dayNames","dayNamesShort","firstDay","weekNumberCalculation","getMomentLocaleData","_fullCalendar_weekCalc","defaultAllDayEventDuration","defaultTimedEventDuration","timezone","hasTime","getIsAmbigTimezone","adjustedZonedDate","zonedDate","timeAdjust","getEventEnd","getDefaultEventEnd","allDay","zonedStart","humanizeDuration","EventManager","defaultDate","getSuggestedViewHeight","isHeightAuto","initialize","populateInstanceComputableOptions","instanceComputableOptions","langCode","sections","append","renderSection","sectionEl","buttonStr","groupEl","groupChildren","isOnlyButtons","buttonName","customButtonProps","viewSpec","buttonClick","overrideText","defaultText","themeIcon","normalIcon","innerHtml","classes","button","customButtons","click","viewsWithButtons","buttonTextOverride","buttonTextDefault","buttonText","themeButtonIcons","icon","buttonIcons","hasClass","mousedown","not","mouseup","hover","first","getViewsWithButtons","rangeStart","rangeEnd","sources","specificSources","specialFetchType","cache","excludeEventsBySources","_status","pendingSourceCnt","_fetchId","tryFetchEventSource","fetchId","_fetchEventSource","eventInputs","eventInput","abstractEvent","isArraySource","buildEventFromInput","expandEvent","decrementPendingSourceCnt","rejectEventSource","wasPending","fetchers","sourceFetchers","pushLoading","popLoading","customData","complete","startParam","endParam","timezoneParam","ajaxDefaults","addEventSource","sourceInput","buildEventSource","normalizers","sourceNormalizers","className","origArray","removeEventSource","matchInput","removeSpecificEventSources","getEventSourcesByMatch","removeEventSources","targetSources","isAll","grep","getEventSources","getEventSourceById","matchingSources","isSourcesEquivalent","source1","source2","getSourcePrimitive","googleCalendarId","specificEvents","updateEvent","mutateEvent","getMiscEventProps","isMiscEventPropName","renderEvent","stickySource","removeEvents","eventID","clientEvents","rezoneEventDates","backupEventDates","eventDataTransform","eventGUID","_recurring","allDayDefault","assignDatesToEvent","normalizeEvent","normalizeEventDates","normalizeEventTimes","forceEventDuration","_rangeStart","_rangeEnd","dowHash","endTime","newProps","largeUnit","diffDates","date0","oldProps","clearEnd","startDelta","endDelta","durationDelta","undoFunc","miscProps","_start","_end","_allDay","mutateEvents","dateDelta","undo","isAmbigTimezone","undoFunctions","isEventSpanAllowed","span","constraint","eventConstraint","overlap","eventOverlap","isSpanAllowed","isExternalSpanAllowed","eventSpan","eventLocation","isSelectionSpanAllowed","selectConstraint","selectOverlap","constraintEvents","anyContainment","peerEvents","peerEvent","peerOverlap","constraintToEvents","spanContainsSpan","getPeerEvents","eventIntersectsRange","constraintInput","getCurrentBusinessHourEvents","range","eventStart","eventEnd","eventSources","getEventCache","fullCalendar","internalApiVersion","fcViews","singleRes","removeData","Calendar","dayIDs","allowValueOptimization","setUTCValues","setLocalValues","newMomentProto","weekCalc","dayHours","wasAmbigTime","hasZone","wasAmbigZone","tzo","T","Y","D","A","H","mixin","EmitterMixin","types","intercept","extra","guid","off","triggerHandler","ListenerMixin","listenerId","listenTo","eventName","getListenerNamespace","stopListeningTo","MouseIgnorerMixin","isIgnoringMouse","delayUnignoreMouse","initMouseIgnoring","delay","tempIgnoreMouse","unignoreMouse","Popover","isHidden","margin","show","hide","_this","parentEl","autoHide","documentMousedown","closest","viewportTop","viewportLeft","viewportOffset","offsetParent","windowEl","viewportEl","scrollTop","scrollLeft","viewportConstrain","CoordCache","forcedOffsetParentEl","boundingRect","isHorizontal","isVertical","lefts","rights","tops","bottoms","build","offsetParentEl","queryBoundingRect","buildElHorizontals","buildElVerticals","clear","ensureBuilt","node","getHorizontalIndex","leftOffset","getVerticalIndex","topOffset","getLeftOffset","leftIndex","getLeftPosition","getRightOffset","getRightPosition","getWidth","getTopOffset","topIndex","getTopPosition","getBottomOffset","getBottomPosition","getHeight","scrollParentEl","isPointInBounds","isLeftInBounds","isTopInBounds","DragListener","subjectEl","subjectHref","originX","originY","scrollEl","isInteracting","isDistanceSurpassed","isDelayEnded","isDragging","isTouch","delayTimeoutId","minDistance","handleTouchScrollProxy","startInteraction","extraOptions","distance","bindHandlers","initAutoScroll","handleInteractionStart","startDelay","handleDistanceSurpassed","endInteraction","isCancelled","endDrag","clearTimeout","destroyAutoScroll","unbindHandlers","handleInteractionEnd","touchStartIgnores","touchmove","handleTouchMove","touchend","touchcancel","touchstart","handleTouchScroll","mousemove","handleMouseMove","selectstart","contextmenu","startDrag","handleDragStart","initHrefHack","handleMove","distanceSq","dx","dy","handleDrag","updateAutoScroll","handleDragEnd","destroyHrefHack","initialEv","handleDelayEnd","attr","removeAttr","isAutoScroll","scrollBounds","scrollTopVel","scrollLeftVel","scrollIntervalId","scrollSensitivity","scrollSpeed","scrollIntervalMs","scroll","handleDebouncedScroll","endAutoScroll","computeScrollBounds","topCloseness","bottomCloseness","leftCloseness","rightCloseness","sensitivity","bounds","topVel","leftVel","setScrollVel","constrainScrollVel","setInterval","scrollHeight","scrollWidth","scrollIntervalFunc","frac","clearInterval","handleScrollEnd","HitDragListener","origHit","hit","coordAdjust","subjectRect","origPoint","computeCoords","queryHit","subjectCenter","prepareHits","handleHitOver","handleHitOut","handleHitDone","isOrig","releaseHits","MouseFollower","sourceEl","top0","left0","y0","x0","topDelta","leftDelta","isFollowing","isAnimating","updatePosition","stop","shouldRevert","revertDuration","animate","getEl","additionalClass","visibility","opacity","zIndex","sourceOffset","Grid","elsByFill","eventTimeFormat","displayEventTime","displayEventEnd","minResizeDuration","dayDragListener","segDragListener","segResizeListener","externalDragListener","opt","buildDayDragListener","computeEventTimeFormat","computeDisplayEventTime","computeDisplayEventEnd","setRange","rangeUpdated","processRangeOptions","spanToSegs","getHitSpan","getHitEl","bindDayHandler","dayTouchStart","dayMousedown","bindSegHandlers","bindGlobalHandlers","unbindGlobalHandlers","clearDragListeners","renderSkeleton","renderDates","unrenderDates","dragstart","externalDragStart","sortstart","isSelected","selectedEvent","dayClickHit","selectionSpan","isSelectable","dragListener","interactionStart","dragStart","hitOver","computeSelection","renderSelection","hitOut","unrenderSelection","hitDone","interactionEnd","triggerDayClick","reportSelection","renderEventLocationHelper","sourceSeg","fakeEvent","fabricateHelperEvent","renderHelper","editable","unrenderHelper","renderHighlight","unrenderHighlight","span0","span1","computeSelectionSpan","renderFill","unrenderFill","highlightSegClasses","getNowIndicatorUnit","renderNowIndicator","unrenderNowIndicator","renderFillSegEls","segElMethod","html","renderedSegs","fillSegHtml","fillSegTag","classesMethod","cssMethod","getDayClasses","intervalDuration","highlightStateClass","mousedOverSeg","isDraggingSeg","isResizingSeg","isDraggingExternal","bgEvents","fgEvents","renderBgEvents","renderFgEvents","eventsToSegs","renderBgSegs","renderFgSegs","unrenderEvents","handleSegMouseout","unrenderFgSegs","unrenderBgSegs","getEventSegs","renderFgSegEls","disableResizing","fgSegHtml","resolveEventEl","bgEventSegEl","bgEventSegClasses","bgEventSegCss","background-color","getSegSkinCss","businessHoursSegClasses","buildBusinessHourSegs","wholeDay","businessHours","BUSINESS_HOUR_EVENT_DEFAULTS","bindSegHandlersToEl","bindSegHandlerToEl","handleSegTouchStart","handleSegTouchEnd","handleSegMouseover","handleSegMousedown","handleSegClick","isResizing","startSegResize","isEventDraggable","buildSegDragListener","isEventSelected","isDraggable","isResizable","isEventResizable","buildSegSelectListener","dragOptions","buildSegResizeListener","mouseFollower","dropLocation","selectEvent","segDragStart","hideEvent","dragHelperEls","computeEventDrop","eventToSpan","renderDrag","applyDragOpacity","unrenderDrag","showEvent","segDragStop","reportEventDrop","startSpan","endSpan","dragEnd","style","ui","accept","listenToExternalDrag","meta","computeExternalDrop","reportExternalDrop","resizeLocation","segResizeStart","origHitSpan","hitSpan","computeEventStartResize","computeEventEndResize","renderEventResize","unrenderEventResize","segResizeStop","reportEventResize","computeEventResize","defaultDuration","getEventTimeText","displayEnd","getSegClasses","eventColor","color","sourceColor","optionColor","backgroundColor","border-color","borderColor","textColor","eventToSegs","eventToSpans","eventToRange","eventRangeToSpans","allEvents","segSliceFunc","ranges","invertRanges","eventRangeToSegs","spans","eventSpanToSegs","eventStartMS","eventDurationMS","viewStart","viewEnd","inverseRanges","sortEventSegs","compareEventSegs","eventOrderSpecs","DayTableMixin","breakOnWeeks","dayDates","dayIndices","daysPerRow","rowCnt","colCnt","colHeadFormat","updateDayTable","dayIndex","isHiddenDay","updateDayTableCols","computeColCnt","computeColHeadFormat","getCellDate","row","col","getCellDayIndex","getCellRange","getColDayIndex","getDateDayIndex","dayOffset","sliceRangeByRow","rowFirst","rowLast","segFirst","segLast","normalRange","computeDayRange","rangeFirst","rangeLast","firstRowDayIndex","lastRowDayIndex","sliceRangeByDay","renderHeadHtml","widgetHeaderClass","renderHeadTrHtml","renderHeadIntroHtml","renderIntroHtml","renderHeadDateCellsHtml","htmls","renderHeadDateCellHtml","colspan","otherAttrs","renderBgTrHtml","renderBgIntroHtml","renderBgCellsHtml","renderBgCellHtml","widgetContentClass","bookendCells","trEl","introHtml","DayGrid","numbersVisible","bottomCoordPadding","cellEls","helperEls","rowCoordCache","colCoordCache","isRigid","renderDayRowHtml","getCellEl","removeSegPopover","renderNumberTrHtml","renderNumberIntroHtml","renderNumberCellsHtml","renderNumberCellHtml","dayNumbersVisible","getCellHit","rowStructs","helperNodes","renderSegRows","rowNode","skeletonTop","rowEl","skeletonEl","tbodyEl","nodes","renderFillRow","startCol","endCol","popoverSegs","allDaySegs","rowStruct","pop","segRows","groupSegRows","renderSegRow","timeText","titleHtml","isResizableFromStart","isEventResizableFromStart","isResizableFromEnd","isEventResizableFromEnd","skinCss","timeHtml","rowSegs","emptyCellsUntil","td","loneCellMatrix","cellMatrix","levelSegs","segLevels","buildSegLevels","levelCnt","tbody","segMatrix","segPopover","limitRows","levelLimit","rowLevelLimit","unlimitRow","computeRowLevelLimit","limitRow","iterInnerHeights","childNode","trHeight","rowHeight","trEls","segsBelow","getCellSegs","moreLink","renderMoreLink","moreWrap","moreNodes","limitedNodes","totalSegsBelow","colSegsBelow","rowspan","segMoreNodes","moreTd","after","moreEls","limitedEls","hiddenSegs","getMoreLinkText","clickOption","moreEl","dayEl","allSegs","reslicedAllSegs","resliceDaySegs","reslicedHiddenSegs","showSegPopover","topEl","renderSegPopoverContent","isTheme","segContainer","dayDate","dayStart","dayEnd","dayRange","startLevel","TimeGrid","slotDuration","snapDuration","snapsPerSlot","minTime","maxTime","labelFormat","labelInterval","colEls","slatContainerEl","slatEls","nowIndicatorEls","slatCoordCache","processOptions","renderHtml","renderContentSkeleton","renderSlatRowHtml","slotDate","isLabeled","axisHtml","slotTime","axisStyleAttr","computeLabelInterval","slotsPerLabel","AGENDA_STOCK_SUB_DURATIONS","colIndex","slatIndex","slatTop","slatHeight","partial","localSnapIndex","snapIndex","snapTop","snapBottom","snap","computeSnapTime","sliceRangeByTimes","isResize","updateSegVerticals","fgSegs","bgSegs","businessSegs","getTotalSlatHeight","computeDateTop","startOfDayDate","computeTimeTop","slatRemainder","slatCoverage","renderHelperSegs","unrenderHelperSegs","renderBusinessSegs","unrenderBusinessSegs","colContainerEls","renderHighlightSegs","unrenderHighlightSegs","fgContainerEls","bgContainerEls","helperContainerEls","highlightContainerEls","businessContainerEls","helperSegs","highlightSegs","cellHtml","renderFgSegsIntoContainers","unrenderNamedSegs","attachSegsByCol","groupSegsByCol","segsByCol","containerEls","updateFgSegCoords","fullTimeText","startTimeText","isMultiDayEvent","computeSegVerticals","assignSegVerticals","generateSegVerticalCss","computeFgSegHorizontals","assignFgSegHorizontals","level0","computeFgSegForwardBack","seriesBackwardPressure","seriesBackwardCoord","forwardCoord","sortForwardSegs","backwardCoord","compareForwardSegs","generateFgSegHorizontalCss","shouldOverlap","View","isSkeletonRendered","isEventsRendered","intervalUnit","nextDayThreshold","isHiddenDayHash","isNowIndicatorRendered","initialNowDate","initialNowQueriedMs","nowIndicatorTimeoutID","nowIndicatorIntervalID","initThemingProps","initHiddenDays","setDate","computeRange","skipHiddenDays","computeTitle","computeTitleFormat","unrenderSkeleton","prevScrollState","displayView","setScroll","forceScroll","computeInitialScroll","triggerRender","clearEvents","startNowIndicator","stopNowIndicator","triggerUnrender","handleDocumentMousedown","processUnselect","update","updateNowIndicator","updateHeight","updateWidth","setHeight","isAuto","previousScrollState","triggerEventRender","triggerEventUnrender","destroyEvents","renderedEventSegEach","custom","startEditable","mutateResult","triggerEventDrop","triggerExternalDrop","durationEditable","triggerEventResize","triggerSelect","destroySelection","unselectEvent","processRangeUnselect","processEventUnselect","ignore","hiddenDays","dayCnt","inc","isExclusive","endTimeMS","startDay","endDay","Scroller","overflowX","overflowY","renderEl","applyOverflow","overflow-x","overflow-y","lockOverflow","getScrollTop","setScrollTop","getClientWidth","getClientHeight","dirDefaults","langDefaults","loadingLevel","langOptionHash","rtlDefaults","buildViewSpec","viewTypes","singleUnit","requestedViewType","viewOverrides","specChain","defaultsChain","overridesChain","class","buildViewSpecOptions","buildViewSpecButtonText","queryButtonText","isValidViewType","handlerFunc","optionNames","handlerObj","registerOptionHandlerObj","triggerOptionHandlerObj","handlerObjs","optionValues","titleRangeSeparator","monthYearFormat","center","weekends","weekNumbers","weekNumberTitle","scrollTime","dragOpacity","dragRevertDuration","dragScroll","unselectAuto","dropAccept","eventOrder","eventLimit","eventLimitText","eventLimitClick","dayPopoverFormat","longPressDelay","englishDefaults","langs","datepickerLang","dpLangCode","dpOptions","fcOptions","weekHeader","dpComputableOptions","datepicker","regional","en","setDefaults","newFcOptions","momOptions","momComputableOptions","prevText","nextText","currentText","showMonthAfterYear","yearSuffix","dayOfMonthFormat","mediumTimeFormat","smallTimeFormat","extraSmallTimeFormat","hourFormat","noMeridiemTimeFormat","smallDayDateFormat","weekFormat","smallWeekFormat","outerSpan","innerSpan","otherEvent","computeBusinessHourEvents","expandBusinessHourEvents","ignoreNoDow","BasicView","scroller","dayGridClass","dayGrid","weekNumbersVisible","weekNumberWidth","headContainerEl","headRowEl","instantiateDayGrid","subclass","basicDayGridMethods","renderSkeletonHtml","renderHead","dayGridContainerEl","dayGridEl","hasRigidRows","weekNumberStyleAttr","totalHeight","scrollerHeight","computeScrollerHeight","setGridHeight","MonthView","isFixedWeeks","weekMode","basic","basicDay","basicWeek","fixedWeekCount","AgendaView","timeGridClass","timeGrid","axisWidth","noScrollRowEls","bottomRuleEl","instantiateTimeGrid","agendaTimeGridMethods","agendaDayGridMethods","timeGridWrapEl","timeGridEl","AGENDA_ALL_DAY_EVENT_LIMIT","timedSegs","dayEvents","timedEvents","daySegs","weekText","agenda","allDaySlot","allDayText","slotEventOverlap","agendaDay","agendaWeek"],"mappings":"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AA,cACAC,IAAA,oBACAC,KAAA,0BAEAvqB,UACA2pB,QAAA,wBACAC,QAAA,sBACAC,SAAA,uBACAC,QAAA,sBACAC,SAAA,uBACAC,SAAA,KAEAnnB,cACA+nB,OAAA,QACAC,KAAA,SACA3kB,EAAA,OACAkiB,GAAA,WACAtsB,EAAA,QACAgvB,GAAA,WACAhhB,EAAA,OACAihB,GAAA,WACAlhB,EAAA,MACAmhB,GAAA,UACAjhB,EAAA,MACAmhB,GAAA,UACAthB,EAAA,MACAuhB,GAAA,YAEArgB,MACAN,IAAA,EACAC,IAAA,KAIA,OAAA0nB,MN4/LMC,IACA,SAAU16B,EAAQC,EAASC,IOvjMhC,SAAAI,EAAAC,GAEDA,EAAAL,EAAA,KAGCM,KAAA,SAAAg5B,GAA2B;;AAI5B,GAAAmB,IACAx6B,EAAA,IACAy6B,EAAA,IACAC,EAAA,IACAC,EAAA,IACAC,EAAA,IACAC,EAAA,IACAC,EAAA,IACAC,EAAA,IACAC,EAAA,IACAp7B,EAAA,KAEAk6B,EAAA,SAAA3qB,GACA,WAAAA,EACA,EACA,IAAAA,EACA,EACA,IAAAA,EACA,EACAA,EAAA,QAAAA,EAAA,QACA,EACAA,EAAA,QACA,EACA,GAEA4qB,GACA1rB,GACA,eACA,eACA,qBACA,UACA,WACA,YAEApK,GACA,eACA,eACA,qBACA,WACA,WACA,YAEAgO,GACA,cACA,cACA,mBACA,WACA,UACA,WAEAD,GACA,aACA,YACA,iBACA,UACA,WACA,UAEAE,GACA,aACA,YACA,iBACA,UACA,UACA,UAEAH,GACA,aACA,YACA,iBACA,WACA,WACA,WAGAioB,EAAA,SAAAxtB,GACA,gBAAA/D,EAAAwC,EAAAC,EAAAC,GACA,GAAA8uB,GAAAH,EAAArxB,GACAyxB,EAAAH,EAAAvtB,GAAAstB,EAAArxB,GAIA,OAHA,KAAAwxB,IACAC,IAAAjvB,EAAA,MAEAivB,EAAArwB,QAAA,MAAApB,KAGA4H,GACA,QACA,SACA,OACA,QACA,OACA,QACA,QACA,QACA,SACA,SACA,SACA,UAGA4qB,EAAA5B,EAAApgB,aAAA,SACA5I,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C,UAAA,IACAC,aAAA,IACAC,UAAA,IACAC,aAAA,IACAC,UAAA,IACAC,aAAA,IACAC,OAAA,IACAC,UAAA,IACAC,OAAA,IACAC,UAAA,IACAC,aAAA,IACAC,UAAA,IACAC,aAAA,IACAC,UAAA,IACAC,aAAA,IACAC,UAAA,IACAC,OAAA,IACAC,UAAA,IACAC,OAAA,IACAC,UAAA,IACAC,OAAA,IACAC,UAAA,IACAC,OAAA,IACAC,UAAA,IACAC,QAAA,IACAC,WAAA,IACAC,OAAA,IACAC,UAAA,IACAC,OAAA,IACAC,UAAA,IACAC,aAAA,IACAC,UAAA,IACAC,aAAA,IACAC,UAAA,IACAC,OAAA,IACAC,UAAA,IACAC,OAAA,IACAC,UAAA,IACAC,OAAA,IACAC,UAAA,IACAC,OAAA,IACAC,UAAA,IACAC,aAAA,IACAC,gBAAA,IACAC,aAAA,IACAC,gBAAA,IACAC,OAAA,IACAC,UAAA,IACAC,OAAA,IACAC,UAAA,IACAC,OAAA,IACAC,UAAA,IACAC,OAAA,IACAC,UAAA,IACAC,OAAA,IACAC,UAAA,IACAC,UAAA,IACAC,aAAA,IACAC,OAAA,IACAC,UAAA,IACAC,OAAA,IACAC,UAAA,IACAC,OAAA,IACAC,UAAA,IACAC,aAAA,IACAC,UAAA,IACAC,OAAA,IACAC,UAAA,IACAC,OAAA,IACAC,UAAA,IACAC,OAAA,IACAC,UAAA,IACAC,OAAA,IACAC,UAAA,IACAC,OAAA,IACAC,UAAA,IACAC,OAAA,IACAC,UAAA,IACAC,OAAA,IACAC,UAAA,IACAC,OAAA,IACAC,UAAA,IACAC,OAAA,IACAC,UAAA,IACAC,OAAA,IACAC,UAAA,IACAC,OAAA,IACAC,UAAA,IACAC,OAAA,IACAC,UAAA,IACAC,OAAA,IACAC,UAAA,IACAC,OAAA,IACAC,UAAA,IACAC,OAAA,IACAC,UAAA,IACAC,OAAA,IACAC,UAAA,IACAC,OAAA,IACAC,UAAA,IACAC,OAAA,IACAC,UAAA,IACAC,OAAA,IACAC,UAAA,IACAC,OAAA,IACAC,UAAA,IACAC,aAAA,IACAC,UAAA,IACAC,OAAA,IAC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","file":"javascripts/user-page-js/default.page.js","sourcesContent":["webpackJsonp([160],{\n\n/***/ 0:\n/***/ (function(module, exports, __webpack_require__) {\n\n\tmodule.exports = __webpack_require__(890);\n\n\n/***/ }),\n\n/***/ 1:\n/***/ (function(module, exports, __webpack_require__) {\n\n\tvar require;/* WEBPACK VAR INJECTION */(function(console, module) {//! moment.js\n\t//! version : 2.29.1\n\t//! authors : Tim Wood, Iskren Chernev, Moment.js contributors\n\t//! license : MIT\n\t//! momentjs.com\n\t\n\t;(function (global, factory) {\n\t true ? module.exports = factory() :\n\t typeof define === 'function' && define.amd ? define(factory) :\n\t global.moment = factory()\n\t}(this, (function () { 'use strict';\n\t\n\t var hookCallback;\n\t\n\t function hooks() {\n\t return hookCallback.apply(null, arguments);\n\t }\n\t\n\t // This is done to register the method called with moment()\n\t // without creating circular dependencies.\n\t function setHookCallback(callback) {\n\t hookCallback = callback;\n\t }\n\t\n\t function isArray(input) {\n\t return (\n\t input instanceof Array ||\n\t Object.prototype.toString.call(input) === '[object Array]'\n\t );\n\t }\n\t\n\t function isObject(input) {\n\t // IE8 will treat undefined and null as object if it wasn't for\n\t // input != null\n\t return (\n\t input != null &&\n\t Object.prototype.toString.call(input) === '[object Object]'\n\t );\n\t }\n\t\n\t function hasOwnProp(a, b) {\n\t return Object.prototype.hasOwnProperty.call(a, b);\n\t }\n\t\n\t function isObjectEmpty(obj) {\n\t if (Object.getOwnPropertyNames) {\n\t return Object.getOwnPropertyNames(obj).length === 0;\n\t } else {\n\t var k;\n\t for (k in obj) {\n\t if (hasOwnProp(obj, k)) {\n\t return false;\n\t }\n\t }\n\t return true;\n\t }\n\t }\n\t\n\t function isUndefined(input) {\n\t return input === void 0;\n\t }\n\t\n\t function isNumber(input) {\n\t return (\n\t typeof input === 'number' ||\n\t Object.prototype.toString.call(input) === '[object Number]'\n\t );\n\t }\n\t\n\t function isDate(input) {\n\t return (\n\t input instanceof Date ||\n\t Object.prototype.toString.call(input) === '[object Date]'\n\t );\n\t }\n\t\n\t function map(arr, fn) {\n\t var res = [],\n\t i;\n\t for (i = 0; i < arr.length; ++i) {\n\t res.push(fn(arr[i], i));\n\t }\n\t return res;\n\t }\n\t\n\t function extend(a, b) {\n\t for (var i in b) {\n\t if (hasOwnProp(b, i)) {\n\t a[i] = b[i];\n\t }\n\t }\n\t\n\t if (hasOwnProp(b, 'toString')) {\n\t a.toString = b.toString;\n\t }\n\t\n\t if (hasOwnProp(b, 'valueOf')) {\n\t a.valueOf = b.valueOf;\n\t }\n\t\n\t return a;\n\t }\n\t\n\t function createUTC(input, format, locale, strict) {\n\t return createLocalOrUTC(input, format, locale, strict, true).utc();\n\t }\n\t\n\t function defaultParsingFlags() {\n\t // We need to deep clone this object.\n\t return {\n\t empty: false,\n\t unusedTokens: [],\n\t unusedInput: [],\n\t overflow: -2,\n\t charsLeftOver: 0,\n\t nullInput: false,\n\t invalidEra: null,\n\t invalidMonth: null,\n\t invalidFormat: false,\n\t userInvalidated: false,\n\t iso: false,\n\t parsedDateParts: [],\n\t era: null,\n\t meridiem: null,\n\t rfc2822: false,\n\t weekdayMismatch: false,\n\t };\n\t }\n\t\n\t function getParsingFlags(m) {\n\t if (m._pf == null) {\n\t m._pf = defaultParsingFlags();\n\t }\n\t return m._pf;\n\t }\n\t\n\t var some;\n\t if (Array.prototype.some) {\n\t some = Array.prototype.some;\n\t } else {\n\t some = function (fun) {\n\t var t = Object(this),\n\t len = t.length >>> 0,\n\t i;\n\t\n\t for (i = 0; i < len; i++) {\n\t if (i in t && fun.call(this, t[i], i, t)) {\n\t return true;\n\t }\n\t }\n\t\n\t return false;\n\t };\n\t }\n\t\n\t function isValid(m) {\n\t if (m._isValid == null) {\n\t var flags = getParsingFlags(m),\n\t parsedParts = some.call(flags.parsedDateParts, function (i) {\n\t return i != null;\n\t }),\n\t isNowValid =\n\t !isNaN(m._d.getTime()) &&\n\t flags.overflow < 0 &&\n\t !flags.empty &&\n\t !flags.invalidEra &&\n\t !flags.invalidMonth &&\n\t !flags.invalidWeekday &&\n\t !flags.weekdayMismatch &&\n\t !flags.nullInput &&\n\t !flags.invalidFormat &&\n\t !flags.userInvalidated &&\n\t (!flags.meridiem || (flags.meridiem && parsedParts));\n\t\n\t if (m._strict) {\n\t isNowValid =\n\t isNowValid &&\n\t flags.charsLeftOver === 0 &&\n\t flags.unusedTokens.length === 0 &&\n\t flags.bigHour === undefined;\n\t }\n\t\n\t if (Object.isFrozen == null || !Object.isFrozen(m)) {\n\t m._isValid = isNowValid;\n\t } else {\n\t return isNowValid;\n\t }\n\t }\n\t return m._isValid;\n\t }\n\t\n\t function createInvalid(flags) {\n\t var m = createUTC(NaN);\n\t if (flags != null) {\n\t extend(getParsingFlags(m), flags);\n\t } else {\n\t getParsingFlags(m).userInvalidated = true;\n\t }\n\t\n\t return m;\n\t }\n\t\n\t // Plugins that add properties should also add the key here (null value),\n\t // so we can properly clone ourselves.\n\t var momentProperties = (hooks.momentProperties = []),\n\t updateInProgress = false;\n\t\n\t function copyConfig(to, from) {\n\t var i, prop, val;\n\t\n\t if (!isUndefined(from._isAMomentObject)) {\n\t to._isAMomentObject = from._isAMomentObject;\n\t }\n\t if (!isUndefined(from._i)) {\n\t to._i = from._i;\n\t }\n\t if (!isUndefined(from._f)) {\n\t to._f = from._f;\n\t }\n\t if (!isUndefined(from._l)) {\n\t to._l = from._l;\n\t }\n\t if (!isUndefined(from._strict)) {\n\t to._strict = from._strict;\n\t }\n\t if (!isUndefined(from._tzm)) {\n\t to._tzm = from._tzm;\n\t }\n\t if (!isUndefined(from._isUTC)) {\n\t to._isUTC = from._isUTC;\n\t }\n\t if (!isUndefined(from._offset)) {\n\t to._offset = from._offset;\n\t }\n\t if (!isUndefined(from._pf)) {\n\t to._pf = getParsingFlags(from);\n\t }\n\t if (!isUndefined(from._locale)) {\n\t to._locale = from._locale;\n\t }\n\t\n\t if (momentProperties.length > 0) {\n\t for (i = 0; i < momentProperties.length; i++) {\n\t prop = momentProperties[i];\n\t val = from[prop];\n\t if (!isUndefined(val)) {\n\t to[prop] = val;\n\t }\n\t }\n\t }\n\t\n\t return to;\n\t }\n\t\n\t // Moment prototype object\n\t function Moment(config) {\n\t copyConfig(this, config);\n\t this._d = new Date(config._d != null ? config._d.getTime() : NaN);\n\t if (!this.isValid()) {\n\t this._d = new Date(NaN);\n\t }\n\t // Prevent infinite loop in case updateOffset creates new moment\n\t // objects.\n\t if (updateInProgress === false) {\n\t updateInProgress = true;\n\t hooks.updateOffset(this);\n\t updateInProgress = false;\n\t }\n\t }\n\t\n\t function isMoment(obj) {\n\t return (\n\t obj instanceof Moment || (obj != null && obj._isAMomentObject != null)\n\t );\n\t }\n\t\n\t function warn(msg) {\n\t if (\n\t hooks.suppressDeprecationWarnings === false &&\n\t typeof console !== 'undefined' &&\n\t console.warn\n\t ) {\n\t console.warn('Deprecation warning: ' + msg);\n\t }\n\t }\n\t\n\t function deprecate(msg, fn) {\n\t var firstTime = true;\n\t\n\t return extend(function () {\n\t if (hooks.deprecationHandler != null) {\n\t hooks.deprecationHandler(null, msg);\n\t }\n\t if (firstTime) {\n\t var args = [],\n\t arg,\n\t i,\n\t key;\n\t for (i = 0; i < arguments.length; i++) {\n\t arg = '';\n\t if (typeof arguments[i] === 'object') {\n\t arg += '\\n[' + i + '] ';\n\t for (key in arguments[0]) {\n\t if (hasOwnProp(arguments[0], key)) {\n\t arg += key + ': ' + arguments[0][key] + ', ';\n\t }\n\t }\n\t arg = arg.slice(0, -2); // Remove trailing comma and space\n\t } else {\n\t arg = arguments[i];\n\t }\n\t args.push(arg);\n\t }\n\t warn(\n\t msg +\n\t '\\nArguments: ' +\n\t Array.prototype.slice.call(args).join('') +\n\t '\\n' +\n\t new Error().stack\n\t );\n\t firstTime = false;\n\t }\n\t return fn.apply(this, arguments);\n\t }, fn);\n\t }\n\t\n\t var deprecations = {};\n\t\n\t function deprecateSimple(name, msg) {\n\t if (hooks.deprecationHandler != null) {\n\t hooks.deprecationHandler(name, msg);\n\t }\n\t if (!deprecations[name]) {\n\t warn(msg);\n\t deprecations[name] = true;\n\t }\n\t }\n\t\n\t hooks.suppressDeprecationWarnings = false;\n\t hooks.deprecationHandler = null;\n\t\n\t function isFunction(input) {\n\t return (\n\t (typeof Function !== 'undefined' && input instanceof Function) ||\n\t Object.prototype.toString.call(input) === '[object Function]'\n\t );\n\t }\n\t\n\t function set(config) {\n\t var prop, i;\n\t for (i in config) {\n\t if (hasOwnProp(config, i)) {\n\t prop = config[i];\n\t if (isFunction(prop)) {\n\t this[i] = prop;\n\t } else {\n\t this['_' + i] = prop;\n\t }\n\t }\n\t }\n\t this._config = config;\n\t // Lenient ordinal parsing accepts just a number in addition to\n\t // number + (possibly) stuff coming from _dayOfMonthOrdinalParse.\n\t // TODO: Remove \"ordinalParse\" fallback in next major release.\n\t this._dayOfMonthOrdinalParseLenient = new RegExp(\n\t (this._dayOfMonthOrdinalParse.source || this._ordinalParse.source) +\n\t '|' +\n\t /\\d{1,2}/.source\n\t );\n\t }\n\t\n\t function mergeConfigs(parentConfig, childConfig) {\n\t var res = extend({}, parentConfig),\n\t prop;\n\t for (prop in childConfig) {\n\t if (hasOwnProp(childConfig, prop)) {\n\t if (isObject(parentConfig[prop]) && isObject(childConfig[prop])) {\n\t res[prop] = {};\n\t extend(res[prop], parentConfig[prop]);\n\t extend(res[prop], childConfig[prop]);\n\t } else if (childConfig[prop] != null) {\n\t res[prop] = childConfig[prop];\n\t } else {\n\t delete res[prop];\n\t }\n\t }\n\t }\n\t for (prop in parentConfig) {\n\t if (\n\t hasOwnProp(parentConfig, prop) &&\n\t !hasOwnProp(childConfig, prop) &&\n\t isObject(parentConfig[prop])\n\t ) {\n\t // make sure changes to properties don't modify parent config\n\t res[prop] = extend({}, res[prop]);\n\t }\n\t }\n\t return res;\n\t }\n\t\n\t function Locale(config) {\n\t if (config != null) {\n\t this.set(config);\n\t }\n\t }\n\t\n\t var keys;\n\t\n\t if (Object.keys) {\n\t keys = Object.keys;\n\t } else {\n\t keys = function (obj) {\n\t var i,\n\t res = [];\n\t for (i in obj) {\n\t if (hasOwnProp(obj, i)) {\n\t res.push(i);\n\t }\n\t }\n\t return res;\n\t };\n\t }\n\t\n\t var defaultCalendar = {\n\t sameDay: '[Today at] LT',\n\t nextDay: '[Tomorrow at] LT',\n\t nextWeek: 'dddd [at] LT',\n\t lastDay: '[Yesterday at] LT',\n\t lastWeek: '[Last] dddd [at] LT',\n\t sameElse: 'L',\n\t };\n\t\n\t function calendar(key, mom, now) {\n\t var output = this._calendar[key] || this._calendar['sameElse'];\n\t return isFunction(output) ? output.call(mom, now) : output;\n\t }\n\t\n\t function zeroFill(number, targetLength, forceSign) {\n\t var absNumber = '' + Math.abs(number),\n\t zerosToFill = targetLength - absNumber.length,\n\t sign = number >= 0;\n\t return (\n\t (sign ? (forceSign ? '+' : '') : '-') +\n\t Math.pow(10, Math.max(0, zerosToFill)).toString().substr(1) +\n\t absNumber\n\t );\n\t }\n\t\n\t 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\t localFormattingTokens = /(\\[[^\\[]*\\])|(\\\\)?(LTS|LT|LL?L?L?|l{1,4})/g,\n\t formatFunctions = {},\n\t formatTokenFunctions = {};\n\t\n\t // token: 'M'\n\t // padded: ['MM', 2]\n\t // ordinal: 'Mo'\n\t // callback: function () { this.month() + 1 }\n\t function addFormatToken(token, padded, ordinal, callback) {\n\t var func = callback;\n\t if (typeof callback === 'string') {\n\t func = function () {\n\t return this[callback]();\n\t };\n\t }\n\t if (token) {\n\t formatTokenFunctions[token] = func;\n\t }\n\t if (padded) {\n\t formatTokenFunctions[padded[0]] = function () {\n\t return zeroFill(func.apply(this, arguments), padded[1], padded[2]);\n\t };\n\t }\n\t if (ordinal) {\n\t formatTokenFunctions[ordinal] = function () {\n\t return this.localeData().ordinal(\n\t func.apply(this, arguments),\n\t token\n\t );\n\t };\n\t }\n\t }\n\t\n\t function removeFormattingTokens(input) {\n\t if (input.match(/\\[[\\s\\S]/)) {\n\t return input.replace(/^\\[|\\]$/g, '');\n\t }\n\t return input.replace(/\\\\/g, '');\n\t }\n\t\n\t function makeFormatFunction(format) {\n\t var array = format.match(formattingTokens),\n\t i,\n\t length;\n\t\n\t for (i = 0, length = array.length; i < length; i++) {\n\t if (formatTokenFunctions[array[i]]) {\n\t array[i] = formatTokenFunctions[array[i]];\n\t } else {\n\t array[i] = removeFormattingTokens(array[i]);\n\t }\n\t }\n\t\n\t return function (mom) {\n\t var output = '',\n\t i;\n\t for (i = 0; i < length; i++) {\n\t output += isFunction(array[i])\n\t ? array[i].call(mom, format)\n\t : array[i];\n\t }\n\t return output;\n\t };\n\t }\n\t\n\t // format date using native date object\n\t function formatMoment(m, format) {\n\t if (!m.isValid()) {\n\t return m.localeData().invalidDate();\n\t }\n\t\n\t format = expandFormat(format, m.localeData());\n\t formatFunctions[format] =\n\t formatFunctions[format] || makeFormatFunction(format);\n\t\n\t return formatFunctions[format](m);\n\t }\n\t\n\t function expandFormat(format, locale) {\n\t var i = 5;\n\t\n\t function replaceLongDateFormatTokens(input) {\n\t return locale.longDateFormat(input) || input;\n\t }\n\t\n\t localFormattingTokens.lastIndex = 0;\n\t while (i >= 0 && localFormattingTokens.test(format)) {\n\t format = format.replace(\n\t localFormattingTokens,\n\t replaceLongDateFormatTokens\n\t );\n\t localFormattingTokens.lastIndex = 0;\n\t i -= 1;\n\t }\n\t\n\t return format;\n\t }\n\t\n\t var defaultLongDateFormat = {\n\t LTS: 'h:mm:ss A',\n\t LT: 'h:mm A',\n\t L: 'MM/DD/YYYY',\n\t LL: 'MMMM D, YYYY',\n\t LLL: 'MMMM D, YYYY h:mm A',\n\t LLLL: 'dddd, MMMM D, YYYY h:mm A',\n\t };\n\t\n\t function longDateFormat(key) {\n\t var format = this._longDateFormat[key],\n\t formatUpper = this._longDateFormat[key.toUpperCase()];\n\t\n\t if (format || !formatUpper) {\n\t return format;\n\t }\n\t\n\t this._longDateFormat[key] = formatUpper\n\t .match(formattingTokens)\n\t .map(function (tok) {\n\t if (\n\t tok === 'MMMM' ||\n\t tok === 'MM' ||\n\t tok === 'DD' ||\n\t tok === 'dddd'\n\t ) {\n\t return tok.slice(1);\n\t }\n\t return tok;\n\t })\n\t .join('');\n\t\n\t return this._longDateFormat[key];\n\t }\n\t\n\t var defaultInvalidDate = 'Invalid date';\n\t\n\t function invalidDate() {\n\t return this._invalidDate;\n\t }\n\t\n\t var defaultOrdinal = '%d',\n\t defaultDayOfMonthOrdinalParse = /\\d{1,2}/;\n\t\n\t function ordinal(number) {\n\t return this._ordinal.replace('%d', number);\n\t }\n\t\n\t var defaultRelativeTime = {\n\t future: 'in %s',\n\t past: '%s ago',\n\t s: 'a few seconds',\n\t ss: '%d seconds',\n\t m: 'a minute',\n\t mm: '%d minutes',\n\t h: 'an hour',\n\t hh: '%d hours',\n\t d: 'a day',\n\t dd: '%d days',\n\t w: 'a week',\n\t ww: '%d weeks',\n\t M: 'a month',\n\t MM: '%d months',\n\t y: 'a year',\n\t yy: '%d years',\n\t };\n\t\n\t function relativeTime(number, withoutSuffix, string, isFuture) {\n\t var output = this._relativeTime[string];\n\t return isFunction(output)\n\t ? output(number, withoutSuffix, string, isFuture)\n\t : output.replace(/%d/i, number);\n\t }\n\t\n\t function pastFuture(diff, output) {\n\t var format = this._relativeTime[diff > 0 ? 'future' : 'past'];\n\t return isFunction(format) ? format(output) : format.replace(/%s/i, output);\n\t }\n\t\n\t var aliases = {};\n\t\n\t function addUnitAlias(unit, shorthand) {\n\t var lowerCase = unit.toLowerCase();\n\t aliases[lowerCase] = aliases[lowerCase + 's'] = aliases[shorthand] = unit;\n\t }\n\t\n\t function normalizeUnits(units) {\n\t return typeof units === 'string'\n\t ? aliases[units] || aliases[units.toLowerCase()]\n\t : undefined;\n\t }\n\t\n\t function normalizeObjectUnits(inputObject) {\n\t var normalizedInput = {},\n\t normalizedProp,\n\t prop;\n\t\n\t for (prop in inputObject) {\n\t if (hasOwnProp(inputObject, prop)) {\n\t normalizedProp = normalizeUnits(prop);\n\t if (normalizedProp) {\n\t normalizedInput[normalizedProp] = inputObject[prop];\n\t }\n\t }\n\t }\n\t\n\t return normalizedInput;\n\t }\n\t\n\t var priorities = {};\n\t\n\t function addUnitPriority(unit, priority) {\n\t priorities[unit] = priority;\n\t }\n\t\n\t function getPrioritizedUnits(unitsObj) {\n\t var units = [],\n\t u;\n\t for (u in unitsObj) {\n\t if (hasOwnProp(unitsObj, u)) {\n\t units.push({ unit: u, priority: priorities[u] });\n\t }\n\t }\n\t units.sort(function (a, b) {\n\t return a.priority - b.priority;\n\t });\n\t return units;\n\t }\n\t\n\t function isLeapYear(year) {\n\t return (year % 4 === 0 && year % 100 !== 0) || year % 400 === 0;\n\t }\n\t\n\t function absFloor(number) {\n\t if (number < 0) {\n\t // -0 -> 0\n\t return Math.ceil(number) || 0;\n\t } else {\n\t return Math.floor(number);\n\t }\n\t }\n\t\n\t function toInt(argumentForCoercion) {\n\t var coercedNumber = +argumentForCoercion,\n\t value = 0;\n\t\n\t if (coercedNumber !== 0 && isFinite(coercedNumber)) {\n\t value = absFloor(coercedNumber);\n\t }\n\t\n\t return value;\n\t }\n\t\n\t function makeGetSet(unit, keepTime) {\n\t return function (value) {\n\t if (value != null) {\n\t set$1(this, unit, value);\n\t hooks.updateOffset(this, keepTime);\n\t return this;\n\t } else {\n\t return get(this, unit);\n\t }\n\t };\n\t }\n\t\n\t function get(mom, unit) {\n\t return mom.isValid()\n\t ? mom._d['get' + (mom._isUTC ? 'UTC' : '') + unit]()\n\t : NaN;\n\t }\n\t\n\t function set$1(mom, unit, value) {\n\t if (mom.isValid() && !isNaN(value)) {\n\t if (\n\t unit === 'FullYear' &&\n\t isLeapYear(mom.year()) &&\n\t mom.month() === 1 &&\n\t mom.date() === 29\n\t ) {\n\t value = toInt(value);\n\t mom._d['set' + (mom._isUTC ? 'UTC' : '') + unit](\n\t value,\n\t mom.month(),\n\t daysInMonth(value, mom.month())\n\t );\n\t } else {\n\t mom._d['set' + (mom._isUTC ? 'UTC' : '') + unit](value);\n\t }\n\t }\n\t }\n\t\n\t // MOMENTS\n\t\n\t function stringGet(units) {\n\t units = normalizeUnits(units);\n\t if (isFunction(this[units])) {\n\t return this[units]();\n\t }\n\t return this;\n\t }\n\t\n\t function stringSet(units, value) {\n\t if (typeof units === 'object') {\n\t units = normalizeObjectUnits(units);\n\t var prioritized = getPrioritizedUnits(units),\n\t i;\n\t for (i = 0; i < prioritized.length; i++) {\n\t this[prioritized[i].unit](units[prioritized[i].unit]);\n\t }\n\t } else {\n\t units = normalizeUnits(units);\n\t if (isFunction(this[units])) {\n\t return this[units](value);\n\t }\n\t }\n\t return this;\n\t }\n\t\n\t var match1 = /\\d/, // 0 - 9\n\t match2 = /\\d\\d/, // 00 - 99\n\t match3 = /\\d{3}/, // 000 - 999\n\t match4 = /\\d{4}/, // 0000 - 9999\n\t match6 = /[+-]?\\d{6}/, // -999999 - 999999\n\t match1to2 = /\\d\\d?/, // 0 - 99\n\t match3to4 = /\\d\\d\\d\\d?/, // 999 - 9999\n\t match5to6 = /\\d\\d\\d\\d\\d\\d?/, // 99999 - 999999\n\t match1to3 = /\\d{1,3}/, // 0 - 999\n\t match1to4 = /\\d{1,4}/, // 0 - 9999\n\t match1to6 = /[+-]?\\d{1,6}/, // -999999 - 999999\n\t matchUnsigned = /\\d+/, // 0 - inf\n\t matchSigned = /[+-]?\\d+/, // -inf - inf\n\t matchOffset = /Z|[+-]\\d\\d:?\\d\\d/gi, // +00:00 -00:00 +0000 -0000 or Z\n\t matchShortOffset = /Z|[+-]\\d\\d(?::?\\d\\d)?/gi, // +00 -00 +00:00 -00:00 +0000 -0000 or Z\n\t matchTimestamp = /[+-]?\\d+(\\.\\d{1,3})?/, // 123456789 123456789.123\n\t // any word (or two) characters or numbers including two/three word month in arabic.\n\t // includes scottish gaelic two word and hyphenated months\n\t 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\t regexes;\n\t\n\t regexes = {};\n\t\n\t function addRegexToken(token, regex, strictRegex) {\n\t regexes[token] = isFunction(regex)\n\t ? regex\n\t : function (isStrict, localeData) {\n\t return isStrict && strictRegex ? strictRegex : regex;\n\t };\n\t }\n\t\n\t function getParseRegexForToken(token, config) {\n\t if (!hasOwnProp(regexes, token)) {\n\t return new RegExp(unescapeFormat(token));\n\t }\n\t\n\t return regexes[token](config._strict, config._locale);\n\t }\n\t\n\t // Code from http://stackoverflow.com/questions/3561493/is-there-a-regexp-escape-function-in-javascript\n\t function unescapeFormat(s) {\n\t return regexEscape(\n\t s\n\t .replace('\\\\', '')\n\t .replace(/\\\\(\\[)|\\\\(\\])|\\[([^\\]\\[]*)\\]|\\\\(.)/g, function (\n\t matched,\n\t p1,\n\t p2,\n\t p3,\n\t p4\n\t ) {\n\t return p1 || p2 || p3 || p4;\n\t })\n\t );\n\t }\n\t\n\t function regexEscape(s) {\n\t return s.replace(/[-\\/\\\\^$*+?.()|[\\]{}]/g, '\\\\$&');\n\t }\n\t\n\t var tokens = {};\n\t\n\t function addParseToken(token, callback) {\n\t var i,\n\t func = callback;\n\t if (typeof token === 'string') {\n\t token = [token];\n\t }\n\t if (isNumber(callback)) {\n\t func = function (input, array) {\n\t array[callback] = toInt(input);\n\t };\n\t }\n\t for (i = 0; i < token.length; i++) {\n\t tokens[token[i]] = func;\n\t }\n\t }\n\t\n\t function addWeekParseToken(token, callback) {\n\t addParseToken(token, function (input, array, config, token) {\n\t config._w = config._w || {};\n\t callback(input, config._w, config, token);\n\t });\n\t }\n\t\n\t function addTimeToArrayFromToken(token, input, config) {\n\t if (input != null && hasOwnProp(tokens, token)) {\n\t tokens[token](input, config._a, config, token);\n\t }\n\t }\n\t\n\t var YEAR = 0,\n\t MONTH = 1,\n\t DATE = 2,\n\t HOUR = 3,\n\t MINUTE = 4,\n\t SECOND = 5,\n\t MILLISECOND = 6,\n\t WEEK = 7,\n\t WEEKDAY = 8;\n\t\n\t function mod(n, x) {\n\t return ((n % x) + x) % x;\n\t }\n\t\n\t var indexOf;\n\t\n\t if (Array.prototype.indexOf) {\n\t indexOf = Array.prototype.indexOf;\n\t } else {\n\t indexOf = function (o) {\n\t // I know\n\t var i;\n\t for (i = 0; i < this.length; ++i) {\n\t if (this[i] === o) {\n\t return i;\n\t }\n\t }\n\t return -1;\n\t };\n\t }\n\t\n\t function daysInMonth(year, month) {\n\t if (isNaN(year) || isNaN(month)) {\n\t return NaN;\n\t }\n\t var modMonth = mod(month, 12);\n\t year += (month - modMonth) / 12;\n\t return modMonth === 1\n\t ? isLeapYear(year)\n\t ? 29\n\t : 28\n\t : 31 - ((modMonth % 7) % 2);\n\t }\n\t\n\t // FORMATTING\n\t\n\t addFormatToken('M', ['MM', 2], 'Mo', function () {\n\t return this.month() + 1;\n\t });\n\t\n\t addFormatToken('MMM', 0, 0, function (format) {\n\t return this.localeData().monthsShort(this, format);\n\t });\n\t\n\t addFormatToken('MMMM', 0, 0, function (format) {\n\t return this.localeData().months(this, format);\n\t });\n\t\n\t // ALIASES\n\t\n\t addUnitAlias('month', 'M');\n\t\n\t // PRIORITY\n\t\n\t addUnitPriority('month', 8);\n\t\n\t // PARSING\n\t\n\t addRegexToken('M', match1to2);\n\t addRegexToken('MM', match1to2, match2);\n\t addRegexToken('MMM', function (isStrict, locale) {\n\t return locale.monthsShortRegex(isStrict);\n\t });\n\t addRegexToken('MMMM', function (isStrict, locale) {\n\t return locale.monthsRegex(isStrict);\n\t });\n\t\n\t addParseToken(['M', 'MM'], function (input, array) {\n\t array[MONTH] = toInt(input) - 1;\n\t });\n\t\n\t addParseToken(['MMM', 'MMMM'], function (input, array, config, token) {\n\t var month = config._locale.monthsParse(input, token, config._strict);\n\t // if we didn't find a month name, mark the date as invalid.\n\t if (month != null) {\n\t array[MONTH] = month;\n\t } else {\n\t getParsingFlags(config).invalidMonth = input;\n\t }\n\t });\n\t\n\t // LOCALES\n\t\n\t var defaultLocaleMonths = 'January_February_March_April_May_June_July_August_September_October_November_December'.split(\n\t '_'\n\t ),\n\t defaultLocaleMonthsShort = 'Jan_Feb_Mar_Apr_May_Jun_Jul_Aug_Sep_Oct_Nov_Dec'.split(\n\t '_'\n\t ),\n\t MONTHS_IN_FORMAT = /D[oD]?(\\[[^\\[\\]]*\\]|\\s)+MMMM?/,\n\t defaultMonthsShortRegex = matchWord,\n\t defaultMonthsRegex = matchWord;\n\t\n\t function localeMonths(m, format) {\n\t if (!m) {\n\t return isArray(this._months)\n\t ? this._months\n\t : this._months['standalone'];\n\t }\n\t return isArray(this._months)\n\t ? this._months[m.month()]\n\t : this._months[\n\t (this._months.isFormat || MONTHS_IN_FORMAT).test(format)\n\t ? 'format'\n\t : 'standalone'\n\t ][m.month()];\n\t }\n\t\n\t function localeMonthsShort(m, format) {\n\t if (!m) {\n\t return isArray(this._monthsShort)\n\t ? this._monthsShort\n\t : this._monthsShort['standalone'];\n\t }\n\t return isArray(this._monthsShort)\n\t ? this._monthsShort[m.month()]\n\t : this._monthsShort[\n\t MONTHS_IN_FORMAT.test(format) ? 'format' : 'standalone'\n\t ][m.month()];\n\t }\n\t\n\t function handleStrictParse(monthName, format, strict) {\n\t var i,\n\t ii,\n\t mom,\n\t llc = monthName.toLocaleLowerCase();\n\t if (!this._monthsParse) {\n\t // this is not used\n\t this._monthsParse = [];\n\t this._longMonthsParse = [];\n\t this._shortMonthsParse = [];\n\t for (i = 0; i < 12; ++i) {\n\t mom = createUTC([2000, i]);\n\t this._shortMonthsParse[i] = this.monthsShort(\n\t mom,\n\t ''\n\t ).toLocaleLowerCase();\n\t this._longMonthsParse[i] = this.months(mom, '').toLocaleLowerCase();\n\t }\n\t }\n\t\n\t if (strict) {\n\t if (format === 'MMM') {\n\t ii = indexOf.call(this._shortMonthsParse, llc);\n\t return ii !== -1 ? ii : null;\n\t } else {\n\t ii = indexOf.call(this._longMonthsParse, llc);\n\t return ii !== -1 ? ii : null;\n\t }\n\t } else {\n\t if (format === 'MMM') {\n\t ii = indexOf.call(this._shortMonthsParse, llc);\n\t if (ii !== -1) {\n\t return ii;\n\t }\n\t ii = indexOf.call(this._longMonthsParse, llc);\n\t return ii !== -1 ? ii : null;\n\t } else {\n\t ii = indexOf.call(this._longMonthsParse, llc);\n\t if (ii !== -1) {\n\t return ii;\n\t }\n\t ii = indexOf.call(this._shortMonthsParse, llc);\n\t return ii !== -1 ? ii : null;\n\t }\n\t }\n\t }\n\t\n\t function localeMonthsParse(monthName, format, strict) {\n\t var i, mom, regex;\n\t\n\t if (this._monthsParseExact) {\n\t return handleStrictParse.call(this, monthName, format, strict);\n\t }\n\t\n\t if (!this._monthsParse) {\n\t this._monthsParse = [];\n\t this._longMonthsParse = [];\n\t this._shortMonthsParse = [];\n\t }\n\t\n\t // TODO: add sorting\n\t // Sorting makes sure if one month (or abbr) is a prefix of another\n\t // see sorting in computeMonthsParse\n\t for (i = 0; i < 12; i++) {\n\t // make the regex if we don't have it already\n\t mom = createUTC([2000, i]);\n\t if (strict && !this._longMonthsParse[i]) {\n\t this._longMonthsParse[i] = new RegExp(\n\t '^' + this.months(mom, '').replace('.', '') + '$',\n\t 'i'\n\t );\n\t this._shortMonthsParse[i] = new RegExp(\n\t '^' + this.monthsShort(mom, '').replace('.', '') + '$',\n\t 'i'\n\t );\n\t }\n\t if (!strict && !this._monthsParse[i]) {\n\t regex =\n\t '^' + this.months(mom, '') + '|^' + this.monthsShort(mom, '');\n\t this._monthsParse[i] = new RegExp(regex.replace('.', ''), 'i');\n\t }\n\t // test the regex\n\t if (\n\t strict &&\n\t format === 'MMMM' &&\n\t this._longMonthsParse[i].test(monthName)\n\t ) {\n\t return i;\n\t } else if (\n\t strict &&\n\t format === 'MMM' &&\n\t this._shortMonthsParse[i].test(monthName)\n\t ) {\n\t return i;\n\t } else if (!strict && this._monthsParse[i].test(monthName)) {\n\t return i;\n\t }\n\t }\n\t }\n\t\n\t // MOMENTS\n\t\n\t function setMonth(mom, value) {\n\t var dayOfMonth;\n\t\n\t if (!mom.isValid()) {\n\t // No op\n\t return mom;\n\t }\n\t\n\t if (typeof value === 'string') {\n\t if (/^\\d+$/.test(value)) {\n\t value = toInt(value);\n\t } else {\n\t value = mom.localeData().monthsParse(value);\n\t // TODO: Another silent failure?\n\t if (!isNumber(value)) {\n\t return mom;\n\t }\n\t }\n\t }\n\t\n\t dayOfMonth = Math.min(mom.date(), daysInMonth(mom.year(), value));\n\t mom._d['set' + (mom._isUTC ? 'UTC' : '') + 'Month'](value, dayOfMonth);\n\t return mom;\n\t }\n\t\n\t function getSetMonth(value) {\n\t if (value != null) {\n\t setMonth(this, value);\n\t hooks.updateOffset(this, true);\n\t return this;\n\t } else {\n\t return get(this, 'Month');\n\t }\n\t }\n\t\n\t function getDaysInMonth() {\n\t return daysInMonth(this.year(), this.month());\n\t }\n\t\n\t function monthsShortRegex(isStrict) {\n\t if (this._monthsParseExact) {\n\t if (!hasOwnProp(this, '_monthsRegex')) {\n\t computeMonthsParse.call(this);\n\t }\n\t if (isStrict) {\n\t return this._monthsShortStrictRegex;\n\t } else {\n\t return this._monthsShortRegex;\n\t }\n\t } else {\n\t if (!hasOwnProp(this, '_monthsShortRegex')) {\n\t this._monthsShortRegex = defaultMonthsShortRegex;\n\t }\n\t return this._monthsShortStrictRegex && isStrict\n\t ? this._monthsShortStrictRegex\n\t : this._monthsShortRegex;\n\t }\n\t }\n\t\n\t function monthsRegex(isStrict) {\n\t if (this._monthsParseExact) {\n\t if (!hasOwnProp(this, '_monthsRegex')) {\n\t computeMonthsParse.call(this);\n\t }\n\t if (isStrict) {\n\t return this._monthsStrictRegex;\n\t } else {\n\t return this._monthsRegex;\n\t }\n\t } else {\n\t if (!hasOwnProp(this, '_monthsRegex')) {\n\t this._monthsRegex = defaultMonthsRegex;\n\t }\n\t return this._monthsStrictRegex && isStrict\n\t ? this._monthsStrictRegex\n\t : this._monthsRegex;\n\t }\n\t }\n\t\n\t function computeMonthsParse() {\n\t function cmpLenRev(a, b) {\n\t return b.length - a.length;\n\t }\n\t\n\t var shortPieces = [],\n\t longPieces = [],\n\t mixedPieces = [],\n\t i,\n\t mom;\n\t for (i = 0; i < 12; i++) {\n\t // make the regex if we don't have it already\n\t mom = createUTC([2000, i]);\n\t shortPieces.push(this.monthsShort(mom, ''));\n\t longPieces.push(this.months(mom, ''));\n\t mixedPieces.push(this.months(mom, ''));\n\t mixedPieces.push(this.monthsShort(mom, ''));\n\t }\n\t // Sorting makes sure if one month (or abbr) is a prefix of another it\n\t // will match the longer piece.\n\t shortPieces.sort(cmpLenRev);\n\t longPieces.sort(cmpLenRev);\n\t mixedPieces.sort(cmpLenRev);\n\t for (i = 0; i < 12; i++) {\n\t shortPieces[i] = regexEscape(shortPieces[i]);\n\t longPieces[i] = regexEscape(longPieces[i]);\n\t }\n\t for (i = 0; i < 24; i++) {\n\t mixedPieces[i] = regexEscape(mixedPieces[i]);\n\t }\n\t\n\t this._monthsRegex = new RegExp('^(' + mixedPieces.join('|') + ')', 'i');\n\t this._monthsShortRegex = this._monthsRegex;\n\t this._monthsStrictRegex = new RegExp(\n\t '^(' + longPieces.join('|') + ')',\n\t 'i'\n\t );\n\t this._monthsShortStrictRegex = new RegExp(\n\t '^(' + shortPieces.join('|') + ')',\n\t 'i'\n\t );\n\t }\n\t\n\t // FORMATTING\n\t\n\t addFormatToken('Y', 0, 0, function () {\n\t var y = this.year();\n\t return y <= 9999 ? zeroFill(y, 4) : '+' + y;\n\t });\n\t\n\t addFormatToken(0, ['YY', 2], 0, function () {\n\t return this.year() % 100;\n\t });\n\t\n\t addFormatToken(0, ['YYYY', 4], 0, 'year');\n\t addFormatToken(0, ['YYYYY', 5], 0, 'year');\n\t addFormatToken(0, ['YYYYYY', 6, true], 0, 'year');\n\t\n\t // ALIASES\n\t\n\t addUnitAlias('year', 'y');\n\t\n\t // PRIORITIES\n\t\n\t addUnitPriority('year', 1);\n\t\n\t // PARSING\n\t\n\t addRegexToken('Y', matchSigned);\n\t addRegexToken('YY', match1to2, match2);\n\t addRegexToken('YYYY', match1to4, match4);\n\t addRegexToken('YYYYY', match1to6, match6);\n\t addRegexToken('YYYYYY', match1to6, match6);\n\t\n\t addParseToken(['YYYYY', 'YYYYYY'], YEAR);\n\t addParseToken('YYYY', function (input, array) {\n\t array[YEAR] =\n\t input.length === 2 ? hooks.parseTwoDigitYear(input) : toInt(input);\n\t });\n\t addParseToken('YY', function (input, array) {\n\t array[YEAR] = hooks.parseTwoDigitYear(input);\n\t });\n\t addParseToken('Y', function (input, array) {\n\t array[YEAR] = parseInt(input, 10);\n\t });\n\t\n\t // HELPERS\n\t\n\t function daysInYear(year) {\n\t return isLeapYear(year) ? 366 : 365;\n\t }\n\t\n\t // HOOKS\n\t\n\t hooks.parseTwoDigitYear = function (input) {\n\t return toInt(input) + (toInt(input) > 68 ? 1900 : 2000);\n\t };\n\t\n\t // MOMENTS\n\t\n\t var getSetYear = makeGetSet('FullYear', true);\n\t\n\t function getIsLeapYear() {\n\t return isLeapYear(this.year());\n\t }\n\t\n\t function createDate(y, m, d, h, M, s, ms) {\n\t // can't just apply() to create a date:\n\t // https://stackoverflow.com/q/181348\n\t var date;\n\t // the date constructor remaps years 0-99 to 1900-1999\n\t if (y < 100 && y >= 0) {\n\t // preserve leap years using a full 400 year cycle, then reset\n\t date = new Date(y + 400, m, d, h, M, s, ms);\n\t if (isFinite(date.getFullYear())) {\n\t date.setFullYear(y);\n\t }\n\t } else {\n\t date = new Date(y, m, d, h, M, s, ms);\n\t }\n\t\n\t return date;\n\t }\n\t\n\t function createUTCDate(y) {\n\t var date, args;\n\t // the Date.UTC function remaps years 0-99 to 1900-1999\n\t if (y < 100 && y >= 0) {\n\t args = Array.prototype.slice.call(arguments);\n\t // preserve leap years using a full 400 year cycle, then reset\n\t args[0] = y + 400;\n\t date = new Date(Date.UTC.apply(null, args));\n\t if (isFinite(date.getUTCFullYear())) {\n\t date.setUTCFullYear(y);\n\t }\n\t } else {\n\t date = new Date(Date.UTC.apply(null, arguments));\n\t }\n\t\n\t return date;\n\t }\n\t\n\t // start-of-first-week - start-of-year\n\t function firstWeekOffset(year, dow, doy) {\n\t var // first-week day -- which january is always in the first week (4 for iso, 1 for other)\n\t fwd = 7 + dow - doy,\n\t // first-week day local weekday -- which local weekday is fwd\n\t fwdlw = (7 + createUTCDate(year, 0, fwd).getUTCDay() - dow) % 7;\n\t\n\t return -fwdlw + fwd - 1;\n\t }\n\t\n\t // https://en.wikipedia.org/wiki/ISO_week_date#Calculating_a_date_given_the_year.2C_week_number_and_weekday\n\t function dayOfYearFromWeeks(year, week, weekday, dow, doy) {\n\t var localWeekday = (7 + weekday - dow) % 7,\n\t weekOffset = firstWeekOffset(year, dow, doy),\n\t dayOfYear = 1 + 7 * (week - 1) + localWeekday + weekOffset,\n\t resYear,\n\t resDayOfYear;\n\t\n\t if (dayOfYear <= 0) {\n\t resYear = year - 1;\n\t resDayOfYear = daysInYear(resYear) + dayOfYear;\n\t } else if (dayOfYear > daysInYear(year)) {\n\t resYear = year + 1;\n\t resDayOfYear = dayOfYear - daysInYear(year);\n\t } else {\n\t resYear = year;\n\t resDayOfYear = dayOfYear;\n\t }\n\t\n\t return {\n\t year: resYear,\n\t dayOfYear: resDayOfYear,\n\t };\n\t }\n\t\n\t function weekOfYear(mom, dow, doy) {\n\t var weekOffset = firstWeekOffset(mom.year(), dow, doy),\n\t week = Math.floor((mom.dayOfYear() - weekOffset - 1) / 7) + 1,\n\t resWeek,\n\t resYear;\n\t\n\t if (week < 1) {\n\t resYear = mom.year() - 1;\n\t resWeek = week + weeksInYear(resYear, dow, doy);\n\t } else if (week > weeksInYear(mom.year(), dow, doy)) {\n\t resWeek = week - weeksInYear(mom.year(), dow, doy);\n\t resYear = mom.year() + 1;\n\t } else {\n\t resYear = mom.year();\n\t resWeek = week;\n\t }\n\t\n\t return {\n\t week: resWeek,\n\t year: resYear,\n\t };\n\t }\n\t\n\t function weeksInYear(year, dow, doy) {\n\t var weekOffset = firstWeekOffset(year, dow, doy),\n\t weekOffsetNext = firstWeekOffset(year + 1, dow, doy);\n\t return (daysInYear(year) - weekOffset + weekOffsetNext) / 7;\n\t }\n\t\n\t // FORMATTING\n\t\n\t addFormatToken('w', ['ww', 2], 'wo', 'week');\n\t addFormatToken('W', ['WW', 2], 'Wo', 'isoWeek');\n\t\n\t // ALIASES\n\t\n\t addUnitAlias('week', 'w');\n\t addUnitAlias('isoWeek', 'W');\n\t\n\t // PRIORITIES\n\t\n\t addUnitPriority('week', 5);\n\t addUnitPriority('isoWeek', 5);\n\t\n\t // PARSING\n\t\n\t addRegexToken('w', match1to2);\n\t addRegexToken('ww', match1to2, match2);\n\t addRegexToken('W', match1to2);\n\t addRegexToken('WW', match1to2, match2);\n\t\n\t addWeekParseToken(['w', 'ww', 'W', 'WW'], function (\n\t input,\n\t week,\n\t config,\n\t token\n\t ) {\n\t week[token.substr(0, 1)] = toInt(input);\n\t });\n\t\n\t // HELPERS\n\t\n\t // LOCALES\n\t\n\t function localeWeek(mom) {\n\t return weekOfYear(mom, this._week.dow, this._week.doy).week;\n\t }\n\t\n\t var defaultLocaleWeek = {\n\t dow: 0, // Sunday is the first day of the week.\n\t doy: 6, // The week that contains Jan 6th is the first week of the year.\n\t };\n\t\n\t function localeFirstDayOfWeek() {\n\t return this._week.dow;\n\t }\n\t\n\t function localeFirstDayOfYear() {\n\t return this._week.doy;\n\t }\n\t\n\t // MOMENTS\n\t\n\t function getSetWeek(input) {\n\t var week = this.localeData().week(this);\n\t return input == null ? week : this.add((input - week) * 7, 'd');\n\t }\n\t\n\t function getSetISOWeek(input) {\n\t var week = weekOfYear(this, 1, 4).week;\n\t return input == null ? week : this.add((input - week) * 7, 'd');\n\t }\n\t\n\t // FORMATTING\n\t\n\t addFormatToken('d', 0, 'do', 'day');\n\t\n\t addFormatToken('dd', 0, 0, function (format) {\n\t return this.localeData().weekdaysMin(this, format);\n\t });\n\t\n\t addFormatToken('ddd', 0, 0, function (format) {\n\t return this.localeData().weekdaysShort(this, format);\n\t });\n\t\n\t addFormatToken('dddd', 0, 0, function (format) {\n\t return this.localeData().weekdays(this, format);\n\t });\n\t\n\t addFormatToken('e', 0, 0, 'weekday');\n\t addFormatToken('E', 0, 0, 'isoWeekday');\n\t\n\t // ALIASES\n\t\n\t addUnitAlias('day', 'd');\n\t addUnitAlias('weekday', 'e');\n\t addUnitAlias('isoWeekday', 'E');\n\t\n\t // PRIORITY\n\t addUnitPriority('day', 11);\n\t addUnitPriority('weekday', 11);\n\t addUnitPriority('isoWeekday', 11);\n\t\n\t // PARSING\n\t\n\t addRegexToken('d', match1to2);\n\t addRegexToken('e', match1to2);\n\t addRegexToken('E', match1to2);\n\t addRegexToken('dd', function (isStrict, locale) {\n\t return locale.weekdaysMinRegex(isStrict);\n\t });\n\t addRegexToken('ddd', function (isStrict, locale) {\n\t return locale.weekdaysShortRegex(isStrict);\n\t });\n\t addRegexToken('dddd', function (isStrict, locale) {\n\t return locale.weekdaysRegex(isStrict);\n\t });\n\t\n\t addWeekParseToken(['dd', 'ddd', 'dddd'], function (input, week, config, token) {\n\t var weekday = config._locale.weekdaysParse(input, token, config._strict);\n\t // if we didn't get a weekday name, mark the date as invalid\n\t if (weekday != null) {\n\t week.d = weekday;\n\t } else {\n\t getParsingFlags(config).invalidWeekday = input;\n\t }\n\t });\n\t\n\t addWeekParseToken(['d', 'e', 'E'], function (input, week, config, token) {\n\t week[token] = toInt(input);\n\t });\n\t\n\t // HELPERS\n\t\n\t function parseWeekday(input, locale) {\n\t if (typeof input !== 'string') {\n\t return input;\n\t }\n\t\n\t if (!isNaN(input)) {\n\t return parseInt(input, 10);\n\t }\n\t\n\t input = locale.weekdaysParse(input);\n\t if (typeof input === 'number') {\n\t return input;\n\t }\n\t\n\t return null;\n\t }\n\t\n\t function parseIsoWeekday(input, locale) {\n\t if (typeof input === 'string') {\n\t return locale.weekdaysParse(input) % 7 || 7;\n\t }\n\t return isNaN(input) ? null : input;\n\t }\n\t\n\t // LOCALES\n\t function shiftWeekdays(ws, n) {\n\t return ws.slice(n, 7).concat(ws.slice(0, n));\n\t }\n\t\n\t var defaultLocaleWeekdays = 'Sunday_Monday_Tuesday_Wednesday_Thursday_Friday_Saturday'.split(\n\t '_'\n\t ),\n\t defaultLocaleWeekdaysShort = 'Sun_Mon_Tue_Wed_Thu_Fri_Sat'.split('_'),\n\t defaultLocaleWeekdaysMin = 'Su_Mo_Tu_We_Th_Fr_Sa'.split('_'),\n\t defaultWeekdaysRegex = matchWord,\n\t defaultWeekdaysShortRegex = matchWord,\n\t defaultWeekdaysMinRegex = matchWord;\n\t\n\t function localeWeekdays(m, format) {\n\t var weekdays = isArray(this._weekdays)\n\t ? this._weekdays\n\t : this._weekdays[\n\t m && m !== true && this._weekdays.isFormat.test(format)\n\t ? 'format'\n\t : 'standalone'\n\t ];\n\t return m === true\n\t ? shiftWeekdays(weekdays, this._week.dow)\n\t : m\n\t ? weekdays[m.day()]\n\t : weekdays;\n\t }\n\t\n\t function localeWeekdaysShort(m) {\n\t return m === true\n\t ? shiftWeekdays(this._weekdaysShort, this._week.dow)\n\t : m\n\t ? this._weekdaysShort[m.day()]\n\t : this._weekdaysShort;\n\t }\n\t\n\t function localeWeekdaysMin(m) {\n\t return m === true\n\t ? shiftWeekdays(this._weekdaysMin, this._week.dow)\n\t : m\n\t ? this._weekdaysMin[m.day()]\n\t : this._weekdaysMin;\n\t }\n\t\n\t function handleStrictParse$1(weekdayName, format, strict) {\n\t var i,\n\t ii,\n\t mom,\n\t llc = weekdayName.toLocaleLowerCase();\n\t if (!this._weekdaysParse) {\n\t this._weekdaysParse = [];\n\t this._shortWeekdaysParse = [];\n\t this._minWeekdaysParse = [];\n\t\n\t for (i = 0; i < 7; ++i) {\n\t mom = createUTC([2000, 1]).day(i);\n\t this._minWeekdaysParse[i] = this.weekdaysMin(\n\t mom,\n\t ''\n\t ).toLocaleLowerCase();\n\t this._shortWeekdaysParse[i] = this.weekdaysShort(\n\t mom,\n\t ''\n\t ).toLocaleLowerCase();\n\t this._weekdaysParse[i] = this.weekdays(mom, '').toLocaleLowerCase();\n\t }\n\t }\n\t\n\t if (strict) {\n\t if (format === 'dddd') {\n\t ii = indexOf.call(this._weekdaysParse, llc);\n\t return ii !== -1 ? ii : null;\n\t } else if (format === 'ddd') {\n\t ii = indexOf.call(this._shortWeekdaysParse, llc);\n\t return ii !== -1 ? ii : null;\n\t } else {\n\t ii = indexOf.call(this._minWeekdaysParse, llc);\n\t return ii !== -1 ? ii : null;\n\t }\n\t } else {\n\t if (format === 'dddd') {\n\t ii = indexOf.call(this._weekdaysParse, llc);\n\t if (ii !== -1) {\n\t return ii;\n\t }\n\t ii = indexOf.call(this._shortWeekdaysParse, llc);\n\t if (ii !== -1) {\n\t return ii;\n\t }\n\t ii = indexOf.call(this._minWeekdaysParse, llc);\n\t return ii !== -1 ? ii : null;\n\t } else if (format === 'ddd') {\n\t ii = indexOf.call(this._shortWeekdaysParse, llc);\n\t if (ii !== -1) {\n\t return ii;\n\t }\n\t ii = indexOf.call(this._weekdaysParse, llc);\n\t if (ii !== -1) {\n\t return ii;\n\t }\n\t ii = indexOf.call(this._minWeekdaysParse, llc);\n\t return ii !== -1 ? ii : null;\n\t } else {\n\t ii = indexOf.call(this._minWeekdaysParse, llc);\n\t if (ii !== -1) {\n\t return ii;\n\t }\n\t ii = indexOf.call(this._weekdaysParse, llc);\n\t if (ii !== -1) {\n\t return ii;\n\t }\n\t ii = indexOf.call(this._shortWeekdaysParse, llc);\n\t return ii !== -1 ? ii : null;\n\t }\n\t }\n\t }\n\t\n\t function localeWeekdaysParse(weekdayName, format, strict) {\n\t var i, mom, regex;\n\t\n\t if (this._weekdaysParseExact) {\n\t return handleStrictParse$1.call(this, weekdayName, format, strict);\n\t }\n\t\n\t if (!this._weekdaysParse) {\n\t this._weekdaysParse = [];\n\t this._minWeekdaysParse = [];\n\t this._shortWeekdaysParse = [];\n\t this._fullWeekdaysParse = [];\n\t }\n\t\n\t for (i = 0; i < 7; i++) {\n\t // make the regex if we don't have it already\n\t\n\t mom = createUTC([2000, 1]).day(i);\n\t if (strict && !this._fullWeekdaysParse[i]) {\n\t this._fullWeekdaysParse[i] = new RegExp(\n\t '^' + this.weekdays(mom, '').replace('.', '\\\\.?') + '$',\n\t 'i'\n\t );\n\t this._shortWeekdaysParse[i] = new RegExp(\n\t '^' + this.weekdaysShort(mom, '').replace('.', '\\\\.?') + '$',\n\t 'i'\n\t );\n\t this._minWeekdaysParse[i] = new RegExp(\n\t '^' + this.weekdaysMin(mom, '').replace('.', '\\\\.?') + '$',\n\t 'i'\n\t );\n\t }\n\t if (!this._weekdaysParse[i]) {\n\t regex =\n\t '^' +\n\t this.weekdays(mom, '') +\n\t '|^' +\n\t this.weekdaysShort(mom, '') +\n\t '|^' +\n\t this.weekdaysMin(mom, '');\n\t this._weekdaysParse[i] = new RegExp(regex.replace('.', ''), 'i');\n\t }\n\t // test the regex\n\t if (\n\t strict &&\n\t format === 'dddd' &&\n\t this._fullWeekdaysParse[i].test(weekdayName)\n\t ) {\n\t return i;\n\t } else if (\n\t strict &&\n\t format === 'ddd' &&\n\t this._shortWeekdaysParse[i].test(weekdayName)\n\t ) {\n\t return i;\n\t } else if (\n\t strict &&\n\t format === 'dd' &&\n\t this._minWeekdaysParse[i].test(weekdayName)\n\t ) {\n\t return i;\n\t } else if (!strict && this._weekdaysParse[i].test(weekdayName)) {\n\t return i;\n\t }\n\t }\n\t }\n\t\n\t // MOMENTS\n\t\n\t function getSetDayOfWeek(input) {\n\t if (!this.isValid()) {\n\t return input != null ? this : NaN;\n\t }\n\t var day = this._isUTC ? this._d.getUTCDay() : this._d.getDay();\n\t if (input != null) {\n\t input = parseWeekday(input, this.localeData());\n\t return this.add(input - day, 'd');\n\t } else {\n\t return day;\n\t }\n\t }\n\t\n\t function getSetLocaleDayOfWeek(input) {\n\t if (!this.isValid()) {\n\t return input != null ? this : NaN;\n\t }\n\t var weekday = (this.day() + 7 - this.localeData()._week.dow) % 7;\n\t return input == null ? weekday : this.add(input - weekday, 'd');\n\t }\n\t\n\t function getSetISODayOfWeek(input) {\n\t if (!this.isValid()) {\n\t return input != null ? this : NaN;\n\t }\n\t\n\t // behaves the same as moment#day except\n\t // as a getter, returns 7 instead of 0 (1-7 range instead of 0-6)\n\t // as a setter, sunday should belong to the previous week.\n\t\n\t if (input != null) {\n\t var weekday = parseIsoWeekday(input, this.localeData());\n\t return this.day(this.day() % 7 ? weekday : weekday - 7);\n\t } else {\n\t return this.day() || 7;\n\t }\n\t }\n\t\n\t function weekdaysRegex(isStrict) {\n\t if (this._weekdaysParseExact) {\n\t if (!hasOwnProp(this, '_weekdaysRegex')) {\n\t computeWeekdaysParse.call(this);\n\t }\n\t if (isStrict) {\n\t return this._weekdaysStrictRegex;\n\t } else {\n\t return this._weekdaysRegex;\n\t }\n\t } else {\n\t if (!hasOwnProp(this, '_weekdaysRegex')) {\n\t this._weekdaysRegex = defaultWeekdaysRegex;\n\t }\n\t return this._weekdaysStrictRegex && isStrict\n\t ? this._weekdaysStrictRegex\n\t : this._weekdaysRegex;\n\t }\n\t }\n\t\n\t function weekdaysShortRegex(isStrict) {\n\t if (this._weekdaysParseExact) {\n\t if (!hasOwnProp(this, '_weekdaysRegex')) {\n\t computeWeekdaysParse.call(this);\n\t }\n\t if (isStrict) {\n\t return this._weekdaysShortStrictRegex;\n\t } else {\n\t return this._weekdaysShortRegex;\n\t }\n\t } else {\n\t if (!hasOwnProp(this, '_weekdaysShortRegex')) {\n\t this._weekdaysShortRegex = defaultWeekdaysShortRegex;\n\t }\n\t return this._weekdaysShortStrictRegex && isStrict\n\t ? this._weekdaysShortStrictRegex\n\t : this._weekdaysShortRegex;\n\t }\n\t }\n\t\n\t function weekdaysMinRegex(isStrict) {\n\t if (this._weekdaysParseExact) {\n\t if (!hasOwnProp(this, '_weekdaysRegex')) {\n\t computeWeekdaysParse.call(this);\n\t }\n\t if (isStrict) {\n\t return this._weekdaysMinStrictRegex;\n\t } else {\n\t return this._weekdaysMinRegex;\n\t }\n\t } else {\n\t if (!hasOwnProp(this, '_weekdaysMinRegex')) {\n\t this._weekdaysMinRegex = defaultWeekdaysMinRegex;\n\t }\n\t return this._weekdaysMinStrictRegex && isStrict\n\t ? this._weekdaysMinStrictRegex\n\t : this._weekdaysMinRegex;\n\t }\n\t }\n\t\n\t function computeWeekdaysParse() {\n\t function cmpLenRev(a, b) {\n\t return b.length - a.length;\n\t }\n\t\n\t var minPieces = [],\n\t shortPieces = [],\n\t longPieces = [],\n\t mixedPieces = [],\n\t i,\n\t mom,\n\t minp,\n\t shortp,\n\t longp;\n\t for (i = 0; i < 7; i++) {\n\t // make the regex if we don't have it already\n\t mom = createUTC([2000, 1]).day(i);\n\t minp = regexEscape(this.weekdaysMin(mom, ''));\n\t shortp = regexEscape(this.weekdaysShort(mom, ''));\n\t longp = regexEscape(this.weekdays(mom, ''));\n\t minPieces.push(minp);\n\t shortPieces.push(shortp);\n\t longPieces.push(longp);\n\t mixedPieces.push(minp);\n\t mixedPieces.push(shortp);\n\t mixedPieces.push(longp);\n\t }\n\t // Sorting makes sure if one weekday (or abbr) is a prefix of another it\n\t // will match the longer piece.\n\t minPieces.sort(cmpLenRev);\n\t shortPieces.sort(cmpLenRev);\n\t longPieces.sort(cmpLenRev);\n\t mixedPieces.sort(cmpLenRev);\n\t\n\t this._weekdaysRegex = new RegExp('^(' + mixedPieces.join('|') + ')', 'i');\n\t this._weekdaysShortRegex = this._weekdaysRegex;\n\t this._weekdaysMinRegex = this._weekdaysRegex;\n\t\n\t this._weekdaysStrictRegex = new RegExp(\n\t '^(' + longPieces.join('|') + ')',\n\t 'i'\n\t );\n\t this._weekdaysShortStrictRegex = new RegExp(\n\t '^(' + shortPieces.join('|') + ')',\n\t 'i'\n\t );\n\t this._weekdaysMinStrictRegex = new RegExp(\n\t '^(' + minPieces.join('|') + ')',\n\t 'i'\n\t );\n\t }\n\t\n\t // FORMATTING\n\t\n\t function hFormat() {\n\t return this.hours() % 12 || 12;\n\t }\n\t\n\t function kFormat() {\n\t return this.hours() || 24;\n\t }\n\t\n\t addFormatToken('H', ['HH', 2], 0, 'hour');\n\t addFormatToken('h', ['hh', 2], 0, hFormat);\n\t addFormatToken('k', ['kk', 2], 0, kFormat);\n\t\n\t addFormatToken('hmm', 0, 0, function () {\n\t return '' + hFormat.apply(this) + zeroFill(this.minutes(), 2);\n\t });\n\t\n\t addFormatToken('hmmss', 0, 0, function () {\n\t return (\n\t '' +\n\t hFormat.apply(this) +\n\t zeroFill(this.minutes(), 2) +\n\t zeroFill(this.seconds(), 2)\n\t );\n\t });\n\t\n\t addFormatToken('Hmm', 0, 0, function () {\n\t return '' + this.hours() + zeroFill(this.minutes(), 2);\n\t });\n\t\n\t addFormatToken('Hmmss', 0, 0, function () {\n\t return (\n\t '' +\n\t this.hours() +\n\t zeroFill(this.minutes(), 2) +\n\t zeroFill(this.seconds(), 2)\n\t );\n\t });\n\t\n\t function meridiem(token, lowercase) {\n\t addFormatToken(token, 0, 0, function () {\n\t return this.localeData().meridiem(\n\t this.hours(),\n\t this.minutes(),\n\t lowercase\n\t );\n\t });\n\t }\n\t\n\t meridiem('a', true);\n\t meridiem('A', false);\n\t\n\t // ALIASES\n\t\n\t addUnitAlias('hour', 'h');\n\t\n\t // PRIORITY\n\t addUnitPriority('hour', 13);\n\t\n\t // PARSING\n\t\n\t function matchMeridiem(isStrict, locale) {\n\t return locale._meridiemParse;\n\t }\n\t\n\t addRegexToken('a', matchMeridiem);\n\t addRegexToken('A', matchMeridiem);\n\t addRegexToken('H', match1to2);\n\t addRegexToken('h', match1to2);\n\t addRegexToken('k', match1to2);\n\t addRegexToken('HH', match1to2, match2);\n\t addRegexToken('hh', match1to2, match2);\n\t addRegexToken('kk', match1to2, match2);\n\t\n\t addRegexToken('hmm', match3to4);\n\t addRegexToken('hmmss', match5to6);\n\t addRegexToken('Hmm', match3to4);\n\t addRegexToken('Hmmss', match5to6);\n\t\n\t addParseToken(['H', 'HH'], HOUR);\n\t addParseToken(['k', 'kk'], function (input, array, config) {\n\t var kInput = toInt(input);\n\t array[HOUR] = kInput === 24 ? 0 : kInput;\n\t });\n\t addParseToken(['a', 'A'], function (input, array, config) {\n\t config._isPm = config._locale.isPM(input);\n\t config._meridiem = input;\n\t });\n\t addParseToken(['h', 'hh'], function (input, array, config) {\n\t array[HOUR] = toInt(input);\n\t getParsingFlags(config).bigHour = true;\n\t });\n\t addParseToken('hmm', function (input, array, config) {\n\t var pos = input.length - 2;\n\t array[HOUR] = toInt(input.substr(0, pos));\n\t array[MINUTE] = toInt(input.substr(pos));\n\t getParsingFlags(config).bigHour = true;\n\t });\n\t addParseToken('hmmss', function (input, array, config) {\n\t var pos1 = input.length - 4,\n\t pos2 = input.length - 2;\n\t array[HOUR] = toInt(input.substr(0, pos1));\n\t array[MINUTE] = toInt(input.substr(pos1, 2));\n\t array[SECOND] = toInt(input.substr(pos2));\n\t getParsingFlags(config).bigHour = true;\n\t });\n\t addParseToken('Hmm', function (input, array, config) {\n\t var pos = input.length - 2;\n\t array[HOUR] = toInt(input.substr(0, pos));\n\t array[MINUTE] = toInt(input.substr(pos));\n\t });\n\t addParseToken('Hmmss', function (input, array, config) {\n\t var pos1 = input.length - 4,\n\t pos2 = input.length - 2;\n\t array[HOUR] = toInt(input.substr(0, pos1));\n\t array[MINUTE] = toInt(input.substr(pos1, 2));\n\t array[SECOND] = toInt(input.substr(pos2));\n\t });\n\t\n\t // LOCALES\n\t\n\t function localeIsPM(input) {\n\t // IE8 Quirks Mode & IE7 Standards Mode do not allow accessing strings like arrays\n\t // Using charAt should be more compatible.\n\t return (input + '').toLowerCase().charAt(0) === 'p';\n\t }\n\t\n\t var defaultLocaleMeridiemParse = /[ap]\\.?m?\\.?/i,\n\t // Setting the hour should keep the time, because the user explicitly\n\t // specified which hour they want. So trying to maintain the same hour (in\n\t // a new timezone) makes sense. Adding/subtracting hours does not follow\n\t // this rule.\n\t getSetHour = makeGetSet('Hours', true);\n\t\n\t function localeMeridiem(hours, minutes, isLower) {\n\t if (hours > 11) {\n\t return isLower ? 'pm' : 'PM';\n\t } else {\n\t return isLower ? 'am' : 'AM';\n\t }\n\t }\n\t\n\t var baseConfig = {\n\t calendar: defaultCalendar,\n\t longDateFormat: defaultLongDateFormat,\n\t invalidDate: defaultInvalidDate,\n\t ordinal: defaultOrdinal,\n\t dayOfMonthOrdinalParse: defaultDayOfMonthOrdinalParse,\n\t relativeTime: defaultRelativeTime,\n\t\n\t months: defaultLocaleMonths,\n\t monthsShort: defaultLocaleMonthsShort,\n\t\n\t week: defaultLocaleWeek,\n\t\n\t weekdays: defaultLocaleWeekdays,\n\t weekdaysMin: defaultLocaleWeekdaysMin,\n\t weekdaysShort: defaultLocaleWeekdaysShort,\n\t\n\t meridiemParse: defaultLocaleMeridiemParse,\n\t };\n\t\n\t // internal storage for locale config files\n\t var locales = {},\n\t localeFamilies = {},\n\t globalLocale;\n\t\n\t function commonPrefix(arr1, arr2) {\n\t var i,\n\t minl = Math.min(arr1.length, arr2.length);\n\t for (i = 0; i < minl; i += 1) {\n\t if (arr1[i] !== arr2[i]) {\n\t return i;\n\t }\n\t }\n\t return minl;\n\t }\n\t\n\t function normalizeLocale(key) {\n\t return key ? key.toLowerCase().replace('_', '-') : key;\n\t }\n\t\n\t // pick the locale from the array\n\t // try ['en-au', 'en-gb'] as 'en-au', 'en-gb', 'en', as in move through the list trying each\n\t // 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\t function chooseLocale(names) {\n\t var i = 0,\n\t j,\n\t next,\n\t locale,\n\t split;\n\t\n\t while (i < names.length) {\n\t split = normalizeLocale(names[i]).split('-');\n\t j = split.length;\n\t next = normalizeLocale(names[i + 1]);\n\t next = next ? next.split('-') : null;\n\t while (j > 0) {\n\t locale = loadLocale(split.slice(0, j).join('-'));\n\t if (locale) {\n\t return locale;\n\t }\n\t if (\n\t next &&\n\t next.length >= j &&\n\t commonPrefix(split, next) >= j - 1\n\t ) {\n\t //the next array item is better than a shallower substring of this one\n\t break;\n\t }\n\t j--;\n\t }\n\t i++;\n\t }\n\t return globalLocale;\n\t }\n\t\n\t function loadLocale(name) {\n\t var oldLocale = null,\n\t aliasedRequire;\n\t // TODO: Find a better way to register and load all the locales in Node\n\t if (\n\t locales[name] === undefined &&\n\t typeof module !== 'undefined' &&\n\t module &&\n\t module.exports\n\t ) {\n\t try {\n\t oldLocale = globalLocale._abbr;\n\t aliasedRequire = require;\n\t __webpack_require__(467)(\"./\" + name);\n\t getSetGlobalLocale(oldLocale);\n\t } catch (e) {\n\t // mark as not found to avoid repeating expensive file require call causing high CPU\n\t // when trying to find en-US, en_US, en-us for every format call\n\t locales[name] = null; // null means not found\n\t }\n\t }\n\t return locales[name];\n\t }\n\t\n\t // This function will load locale and then set the global locale. If\n\t // no arguments are passed in, it will simply return the current global\n\t // locale key.\n\t function getSetGlobalLocale(key, values) {\n\t var data;\n\t if (key) {\n\t if (isUndefined(values)) {\n\t data = getLocale(key);\n\t } else {\n\t data = defineLocale(key, values);\n\t }\n\t\n\t if (data) {\n\t // moment.duration._locale = moment._locale = data;\n\t globalLocale = data;\n\t } else {\n\t if (typeof console !== 'undefined' && console.warn) {\n\t //warn user if arguments are passed but the locale could not be set\n\t console.warn(\n\t 'Locale ' + key + ' not found. Did you forget to load it?'\n\t );\n\t }\n\t }\n\t }\n\t\n\t return globalLocale._abbr;\n\t }\n\t\n\t function defineLocale(name, config) {\n\t if (config !== null) {\n\t var locale,\n\t parentConfig = baseConfig;\n\t config.abbr = name;\n\t if (locales[name] != null) {\n\t deprecateSimple(\n\t 'defineLocaleOverride',\n\t 'use moment.updateLocale(localeName, config) to change ' +\n\t 'an existing locale. moment.defineLocale(localeName, ' +\n\t 'config) should only be used for creating a new locale ' +\n\t 'See http://momentjs.com/guides/#/warnings/define-locale/ for more info.'\n\t );\n\t parentConfig = locales[name]._config;\n\t } else if (config.parentLocale != null) {\n\t if (locales[config.parentLocale] != null) {\n\t parentConfig = locales[config.parentLocale]._config;\n\t } else {\n\t locale = loadLocale(config.parentLocale);\n\t if (locale != null) {\n\t parentConfig = locale._config;\n\t } else {\n\t if (!localeFamilies[config.parentLocale]) {\n\t localeFamilies[config.parentLocale] = [];\n\t }\n\t localeFamilies[config.parentLocale].push({\n\t name: name,\n\t config: config,\n\t });\n\t return null;\n\t }\n\t }\n\t }\n\t locales[name] = new Locale(mergeConfigs(parentConfig, config));\n\t\n\t if (localeFamilies[name]) {\n\t localeFamilies[name].forEach(function (x) {\n\t defineLocale(x.name, x.config);\n\t });\n\t }\n\t\n\t // backwards compat for now: also set the locale\n\t // make sure we set the locale AFTER all child locales have been\n\t // created, so we won't end up with the child locale set.\n\t getSetGlobalLocale(name);\n\t\n\t return locales[name];\n\t } else {\n\t // useful for testing\n\t delete locales[name];\n\t return null;\n\t }\n\t }\n\t\n\t function updateLocale(name, config) {\n\t if (config != null) {\n\t var locale,\n\t tmpLocale,\n\t parentConfig = baseConfig;\n\t\n\t if (locales[name] != null && locales[name].parentLocale != null) {\n\t // Update existing child locale in-place to avoid memory-leaks\n\t locales[name].set(mergeConfigs(locales[name]._config, config));\n\t } else {\n\t // MERGE\n\t tmpLocale = loadLocale(name);\n\t if (tmpLocale != null) {\n\t parentConfig = tmpLocale._config;\n\t }\n\t config = mergeConfigs(parentConfig, config);\n\t if (tmpLocale == null) {\n\t // updateLocale is called for creating a new locale\n\t // Set abbr so it will have a name (getters return\n\t // undefined otherwise).\n\t config.abbr = name;\n\t }\n\t locale = new Locale(config);\n\t locale.parentLocale = locales[name];\n\t locales[name] = locale;\n\t }\n\t\n\t // backwards compat for now: also set the locale\n\t getSetGlobalLocale(name);\n\t } else {\n\t // pass null for config to unupdate, useful for tests\n\t if (locales[name] != null) {\n\t if (locales[name].parentLocale != null) {\n\t locales[name] = locales[name].parentLocale;\n\t if (name === getSetGlobalLocale()) {\n\t getSetGlobalLocale(name);\n\t }\n\t } else if (locales[name] != null) {\n\t delete locales[name];\n\t }\n\t }\n\t }\n\t return locales[name];\n\t }\n\t\n\t // returns locale data\n\t function getLocale(key) {\n\t var locale;\n\t\n\t if (key && key._locale && key._locale._abbr) {\n\t key = key._locale._abbr;\n\t }\n\t\n\t if (!key) {\n\t return globalLocale;\n\t }\n\t\n\t if (!isArray(key)) {\n\t //short-circuit everything else\n\t locale = loadLocale(key);\n\t if (locale) {\n\t return locale;\n\t }\n\t key = [key];\n\t }\n\t\n\t return chooseLocale(key);\n\t }\n\t\n\t function listLocales() {\n\t return keys(locales);\n\t }\n\t\n\t function checkOverflow(m) {\n\t var overflow,\n\t a = m._a;\n\t\n\t if (a && getParsingFlags(m).overflow === -2) {\n\t overflow =\n\t a[MONTH] < 0 || a[MONTH] > 11\n\t ? MONTH\n\t : a[DATE] < 1 || a[DATE] > daysInMonth(a[YEAR], a[MONTH])\n\t ? DATE\n\t : a[HOUR] < 0 ||\n\t a[HOUR] > 24 ||\n\t (a[HOUR] === 24 &&\n\t (a[MINUTE] !== 0 ||\n\t a[SECOND] !== 0 ||\n\t a[MILLISECOND] !== 0))\n\t ? HOUR\n\t : a[MINUTE] < 0 || a[MINUTE] > 59\n\t ? MINUTE\n\t : a[SECOND] < 0 || a[SECOND] > 59\n\t ? SECOND\n\t : a[MILLISECOND] < 0 || a[MILLISECOND] > 999\n\t ? MILLISECOND\n\t : -1;\n\t\n\t if (\n\t getParsingFlags(m)._overflowDayOfYear &&\n\t (overflow < YEAR || overflow > DATE)\n\t ) {\n\t overflow = DATE;\n\t }\n\t if (getParsingFlags(m)._overflowWeeks && overflow === -1) {\n\t overflow = WEEK;\n\t }\n\t if (getParsingFlags(m)._overflowWeekday && overflow === -1) {\n\t overflow = WEEKDAY;\n\t }\n\t\n\t getParsingFlags(m).overflow = overflow;\n\t }\n\t\n\t return m;\n\t }\n\t\n\t // iso 8601 regex\n\t // 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\t 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\t 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\t tzRegex = /Z|[+-]\\d\\d(?::?\\d\\d)?/,\n\t isoDates = [\n\t ['YYYYYY-MM-DD', /[+-]\\d{6}-\\d\\d-\\d\\d/],\n\t ['YYYY-MM-DD', /\\d{4}-\\d\\d-\\d\\d/],\n\t ['GGGG-[W]WW-E', /\\d{4}-W\\d\\d-\\d/],\n\t ['GGGG-[W]WW', /\\d{4}-W\\d\\d/, false],\n\t ['YYYY-DDD', /\\d{4}-\\d{3}/],\n\t ['YYYY-MM', /\\d{4}-\\d\\d/, false],\n\t ['YYYYYYMMDD', /[+-]\\d{10}/],\n\t ['YYYYMMDD', /\\d{8}/],\n\t ['GGGG[W]WWE', /\\d{4}W\\d{3}/],\n\t ['GGGG[W]WW', /\\d{4}W\\d{2}/, false],\n\t ['YYYYDDD', /\\d{7}/],\n\t ['YYYYMM', /\\d{6}/, false],\n\t ['YYYY', /\\d{4}/, false],\n\t ],\n\t // iso time formats and regexes\n\t isoTimes = [\n\t ['HH:mm:ss.SSSS', /\\d\\d:\\d\\d:\\d\\d\\.\\d+/],\n\t ['HH:mm:ss,SSSS', /\\d\\d:\\d\\d:\\d\\d,\\d+/],\n\t ['HH:mm:ss', /\\d\\d:\\d\\d:\\d\\d/],\n\t ['HH:mm', /\\d\\d:\\d\\d/],\n\t ['HHmmss.SSSS', /\\d\\d\\d\\d\\d\\d\\.\\d+/],\n\t ['HHmmss,SSSS', /\\d\\d\\d\\d\\d\\d,\\d+/],\n\t ['HHmmss', /\\d\\d\\d\\d\\d\\d/],\n\t ['HHmm', /\\d\\d\\d\\d/],\n\t ['HH', /\\d\\d/],\n\t ],\n\t aspNetJsonRegex = /^\\/?Date\\((-?\\d+)/i,\n\t // RFC 2822 regex: For details see https://tools.ietf.org/html/rfc2822#section-3.3\n\t 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\t obsOffsets = {\n\t UT: 0,\n\t GMT: 0,\n\t EDT: -4 * 60,\n\t EST: -5 * 60,\n\t CDT: -5 * 60,\n\t CST: -6 * 60,\n\t MDT: -6 * 60,\n\t MST: -7 * 60,\n\t PDT: -7 * 60,\n\t PST: -8 * 60,\n\t };\n\t\n\t // date from iso format\n\t function configFromISO(config) {\n\t var i,\n\t l,\n\t string = config._i,\n\t match = extendedIsoRegex.exec(string) || basicIsoRegex.exec(string),\n\t allowTime,\n\t dateFormat,\n\t timeFormat,\n\t tzFormat;\n\t\n\t if (match) {\n\t getParsingFlags(config).iso = true;\n\t\n\t for (i = 0, l = isoDates.length; i < l; i++) {\n\t if (isoDates[i][1].exec(match[1])) {\n\t dateFormat = isoDates[i][0];\n\t allowTime = isoDates[i][2] !== false;\n\t break;\n\t }\n\t }\n\t if (dateFormat == null) {\n\t config._isValid = false;\n\t return;\n\t }\n\t if (match[3]) {\n\t for (i = 0, l = isoTimes.length; i < l; i++) {\n\t if (isoTimes[i][1].exec(match[3])) {\n\t // match[2] should be 'T' or space\n\t timeFormat = (match[2] || ' ') + isoTimes[i][0];\n\t break;\n\t }\n\t }\n\t if (timeFormat == null) {\n\t config._isValid = false;\n\t return;\n\t }\n\t }\n\t if (!allowTime && timeFormat != null) {\n\t config._isValid = false;\n\t return;\n\t }\n\t if (match[4]) {\n\t if (tzRegex.exec(match[4])) {\n\t tzFormat = 'Z';\n\t } else {\n\t config._isValid = false;\n\t return;\n\t }\n\t }\n\t config._f = dateFormat + (timeFormat || '') + (tzFormat || '');\n\t configFromStringAndFormat(config);\n\t } else {\n\t config._isValid = false;\n\t }\n\t }\n\t\n\t function extractFromRFC2822Strings(\n\t yearStr,\n\t monthStr,\n\t dayStr,\n\t hourStr,\n\t minuteStr,\n\t secondStr\n\t ) {\n\t var result = [\n\t untruncateYear(yearStr),\n\t defaultLocaleMonthsShort.indexOf(monthStr),\n\t parseInt(dayStr, 10),\n\t parseInt(hourStr, 10),\n\t parseInt(minuteStr, 10),\n\t ];\n\t\n\t if (secondStr) {\n\t result.push(parseInt(secondStr, 10));\n\t }\n\t\n\t return result;\n\t }\n\t\n\t function untruncateYear(yearStr) {\n\t var year = parseInt(yearStr, 10);\n\t if (year <= 49) {\n\t return 2000 + year;\n\t } else if (year <= 999) {\n\t return 1900 + year;\n\t }\n\t return year;\n\t }\n\t\n\t function preprocessRFC2822(s) {\n\t // Remove comments and folding whitespace and replace multiple-spaces with a single space\n\t return s\n\t .replace(/\\([^)]*\\)|[\\n\\t]/g, ' ')\n\t .replace(/(\\s\\s+)/g, ' ')\n\t .replace(/^\\s\\s*/, '')\n\t .replace(/\\s\\s*$/, '');\n\t }\n\t\n\t function checkWeekday(weekdayStr, parsedInput, config) {\n\t if (weekdayStr) {\n\t // TODO: Replace the vanilla JS Date object with an independent day-of-week check.\n\t var weekdayProvided = defaultLocaleWeekdaysShort.indexOf(weekdayStr),\n\t weekdayActual = new Date(\n\t parsedInput[0],\n\t parsedInput[1],\n\t parsedInput[2]\n\t ).getDay();\n\t if (weekdayProvided !== weekdayActual) {\n\t getParsingFlags(config).weekdayMismatch = true;\n\t config._isValid = false;\n\t return false;\n\t }\n\t }\n\t return true;\n\t }\n\t\n\t function calculateOffset(obsOffset, militaryOffset, numOffset) {\n\t if (obsOffset) {\n\t return obsOffsets[obsOffset];\n\t } else if (militaryOffset) {\n\t // the only allowed military tz is Z\n\t return 0;\n\t } else {\n\t var hm = parseInt(numOffset, 10),\n\t m = hm % 100,\n\t h = (hm - m) / 100;\n\t return h * 60 + m;\n\t }\n\t }\n\t\n\t // date and time from ref 2822 format\n\t function configFromRFC2822(config) {\n\t var match = rfc2822.exec(preprocessRFC2822(config._i)),\n\t parsedArray;\n\t if (match) {\n\t parsedArray = extractFromRFC2822Strings(\n\t match[4],\n\t match[3],\n\t match[2],\n\t match[5],\n\t match[6],\n\t match[7]\n\t );\n\t if (!checkWeekday(match[1], parsedArray, config)) {\n\t return;\n\t }\n\t\n\t config._a = parsedArray;\n\t config._tzm = calculateOffset(match[8], match[9], match[10]);\n\t\n\t config._d = createUTCDate.apply(null, config._a);\n\t config._d.setUTCMinutes(config._d.getUTCMinutes() - config._tzm);\n\t\n\t getParsingFlags(config).rfc2822 = true;\n\t } else {\n\t config._isValid = false;\n\t }\n\t }\n\t\n\t // date from 1) ASP.NET, 2) ISO, 3) RFC 2822 formats, or 4) optional fallback if parsing isn't strict\n\t function configFromString(config) {\n\t var matched = aspNetJsonRegex.exec(config._i);\n\t if (matched !== null) {\n\t config._d = new Date(+matched[1]);\n\t return;\n\t }\n\t\n\t configFromISO(config);\n\t if (config._isValid === false) {\n\t delete config._isValid;\n\t } else {\n\t return;\n\t }\n\t\n\t configFromRFC2822(config);\n\t if (config._isValid === false) {\n\t delete config._isValid;\n\t } else {\n\t return;\n\t }\n\t\n\t if (config._strict) {\n\t config._isValid = false;\n\t } else {\n\t // Final attempt, use Input Fallback\n\t hooks.createFromInputFallback(config);\n\t }\n\t }\n\t\n\t hooks.createFromInputFallback = deprecate(\n\t 'value provided is not in a recognized RFC2822 or ISO format. moment construction falls back to js Date(), ' +\n\t 'which is not reliable across all browsers and versions. Non RFC2822/ISO date formats are ' +\n\t 'discouraged. Please refer to http://momentjs.com/guides/#/warnings/js-date/ for more info.',\n\t function (config) {\n\t config._d = new Date(config._i + (config._useUTC ? ' UTC' : ''));\n\t }\n\t );\n\t\n\t // Pick the first defined of two or three arguments.\n\t function defaults(a, b, c) {\n\t if (a != null) {\n\t return a;\n\t }\n\t if (b != null) {\n\t return b;\n\t }\n\t return c;\n\t }\n\t\n\t function currentDateArray(config) {\n\t // hooks is actually the exported moment object\n\t var nowValue = new Date(hooks.now());\n\t if (config._useUTC) {\n\t return [\n\t nowValue.getUTCFullYear(),\n\t nowValue.getUTCMonth(),\n\t nowValue.getUTCDate(),\n\t ];\n\t }\n\t return [nowValue.getFullYear(), nowValue.getMonth(), nowValue.getDate()];\n\t }\n\t\n\t // convert an array to a date.\n\t // the array should mirror the parameters below\n\t // note: all values past the year are optional and will default to the lowest possible value.\n\t // [year, month, day , hour, minute, second, millisecond]\n\t function configFromArray(config) {\n\t var i,\n\t date,\n\t input = [],\n\t currentDate,\n\t expectedWeekday,\n\t yearToUse;\n\t\n\t if (config._d) {\n\t return;\n\t }\n\t\n\t currentDate = currentDateArray(config);\n\t\n\t //compute day of the year from weeks and weekdays\n\t if (config._w && config._a[DATE] == null && config._a[MONTH] == null) {\n\t dayOfYearFromWeekInfo(config);\n\t }\n\t\n\t //if the day of the year is set, figure out what it is\n\t if (config._dayOfYear != null) {\n\t yearToUse = defaults(config._a[YEAR], currentDate[YEAR]);\n\t\n\t if (\n\t config._dayOfYear > daysInYear(yearToUse) ||\n\t config._dayOfYear === 0\n\t ) {\n\t getParsingFlags(config)._overflowDayOfYear = true;\n\t }\n\t\n\t date = createUTCDate(yearToUse, 0, config._dayOfYear);\n\t config._a[MONTH] = date.getUTCMonth();\n\t config._a[DATE] = date.getUTCDate();\n\t }\n\t\n\t // Default to current date.\n\t // * if no year, month, day of month are given, default to today\n\t // * if day of month is given, default month and year\n\t // * if month is given, default only year\n\t // * if year is given, don't default anything\n\t for (i = 0; i < 3 && config._a[i] == null; ++i) {\n\t config._a[i] = input[i] = currentDate[i];\n\t }\n\t\n\t // Zero out whatever was not defaulted, including time\n\t for (; i < 7; i++) {\n\t config._a[i] = input[i] =\n\t config._a[i] == null ? (i === 2 ? 1 : 0) : config._a[i];\n\t }\n\t\n\t // Check for 24:00:00.000\n\t if (\n\t config._a[HOUR] === 24 &&\n\t config._a[MINUTE] === 0 &&\n\t config._a[SECOND] === 0 &&\n\t config._a[MILLISECOND] === 0\n\t ) {\n\t config._nextDay = true;\n\t config._a[HOUR] = 0;\n\t }\n\t\n\t config._d = (config._useUTC ? createUTCDate : createDate).apply(\n\t null,\n\t input\n\t );\n\t expectedWeekday = config._useUTC\n\t ? config._d.getUTCDay()\n\t : config._d.getDay();\n\t\n\t // Apply timezone offset from input. The actual utcOffset can be changed\n\t // with parseZone.\n\t if (config._tzm != null) {\n\t config._d.setUTCMinutes(config._d.getUTCMinutes() - config._tzm);\n\t }\n\t\n\t if (config._nextDay) {\n\t config._a[HOUR] = 24;\n\t }\n\t\n\t // check for mismatching day of week\n\t if (\n\t config._w &&\n\t typeof config._w.d !== 'undefined' &&\n\t config._w.d !== expectedWeekday\n\t ) {\n\t getParsingFlags(config).weekdayMismatch = true;\n\t }\n\t }\n\t\n\t function dayOfYearFromWeekInfo(config) {\n\t var w, weekYear, week, weekday, dow, doy, temp, weekdayOverflow, curWeek;\n\t\n\t w = config._w;\n\t if (w.GG != null || w.W != null || w.E != null) {\n\t dow = 1;\n\t doy = 4;\n\t\n\t // TODO: We need to take the current isoWeekYear, but that depends on\n\t // how we interpret now (local, utc, fixed offset). So create\n\t // a now version of current config (take local/utc/offset flags, and\n\t // create now).\n\t weekYear = defaults(\n\t w.GG,\n\t config._a[YEAR],\n\t weekOfYear(createLocal(), 1, 4).year\n\t );\n\t week = defaults(w.W, 1);\n\t weekday = defaults(w.E, 1);\n\t if (weekday < 1 || weekday > 7) {\n\t weekdayOverflow = true;\n\t }\n\t } else {\n\t dow = config._locale._week.dow;\n\t doy = config._locale._week.doy;\n\t\n\t curWeek = weekOfYear(createLocal(), dow, doy);\n\t\n\t weekYear = defaults(w.gg, config._a[YEAR], curWeek.year);\n\t\n\t // Default to current week.\n\t week = defaults(w.w, curWeek.week);\n\t\n\t if (w.d != null) {\n\t // weekday -- low day numbers are considered next week\n\t weekday = w.d;\n\t if (weekday < 0 || weekday > 6) {\n\t weekdayOverflow = true;\n\t }\n\t } else if (w.e != null) {\n\t // local weekday -- counting starts from beginning of week\n\t weekday = w.e + dow;\n\t if (w.e < 0 || w.e > 6) {\n\t weekdayOverflow = true;\n\t }\n\t } else {\n\t // default to beginning of week\n\t weekday = dow;\n\t }\n\t }\n\t if (week < 1 || week > weeksInYear(weekYear, dow, doy)) {\n\t getParsingFlags(config)._overflowWeeks = true;\n\t } else if (weekdayOverflow != null) {\n\t getParsingFlags(config)._overflowWeekday = true;\n\t } else {\n\t temp = dayOfYearFromWeeks(weekYear, week, weekday, dow, doy);\n\t config._a[YEAR] = temp.year;\n\t config._dayOfYear = temp.dayOfYear;\n\t }\n\t }\n\t\n\t // constant that refers to the ISO standard\n\t hooks.ISO_8601 = function () {};\n\t\n\t // constant that refers to the RFC 2822 form\n\t hooks.RFC_2822 = function () {};\n\t\n\t // date from string and format string\n\t function configFromStringAndFormat(config) {\n\t // TODO: Move this to another part of the creation flow to prevent circular deps\n\t if (config._f === hooks.ISO_8601) {\n\t configFromISO(config);\n\t return;\n\t }\n\t if (config._f === hooks.RFC_2822) {\n\t configFromRFC2822(config);\n\t return;\n\t }\n\t config._a = [];\n\t getParsingFlags(config).empty = true;\n\t\n\t // This array is used to make a Date, either with `new Date` or `Date.UTC`\n\t var string = '' + config._i,\n\t i,\n\t parsedInput,\n\t tokens,\n\t token,\n\t skipped,\n\t stringLength = string.length,\n\t totalParsedInputLength = 0,\n\t era;\n\t\n\t tokens =\n\t expandFormat(config._f, config._locale).match(formattingTokens) || [];\n\t\n\t for (i = 0; i < tokens.length; i++) {\n\t token = tokens[i];\n\t parsedInput = (string.match(getParseRegexForToken(token, config)) ||\n\t [])[0];\n\t if (parsedInput) {\n\t skipped = string.substr(0, string.indexOf(parsedInput));\n\t if (skipped.length > 0) {\n\t getParsingFlags(config).unusedInput.push(skipped);\n\t }\n\t string = string.slice(\n\t string.indexOf(parsedInput) + parsedInput.length\n\t );\n\t totalParsedInputLength += parsedInput.length;\n\t }\n\t // don't parse if it's not a known token\n\t if (formatTokenFunctions[token]) {\n\t if (parsedInput) {\n\t getParsingFlags(config).empty = false;\n\t } else {\n\t getParsingFlags(config).unusedTokens.push(token);\n\t }\n\t addTimeToArrayFromToken(token, parsedInput, config);\n\t } else if (config._strict && !parsedInput) {\n\t getParsingFlags(config).unusedTokens.push(token);\n\t }\n\t }\n\t\n\t // add remaining unparsed input length to the string\n\t getParsingFlags(config).charsLeftOver =\n\t stringLength - totalParsedInputLength;\n\t if (string.length > 0) {\n\t getParsingFlags(config).unusedInput.push(string);\n\t }\n\t\n\t // clear _12h flag if hour is <= 12\n\t if (\n\t config._a[HOUR] <= 12 &&\n\t getParsingFlags(config).bigHour === true &&\n\t config._a[HOUR] > 0\n\t ) {\n\t getParsingFlags(config).bigHour = undefined;\n\t }\n\t\n\t getParsingFlags(config).parsedDateParts = config._a.slice(0);\n\t getParsingFlags(config).meridiem = config._meridiem;\n\t // handle meridiem\n\t config._a[HOUR] = meridiemFixWrap(\n\t config._locale,\n\t config._a[HOUR],\n\t config._meridiem\n\t );\n\t\n\t // handle era\n\t era = getParsingFlags(config).era;\n\t if (era !== null) {\n\t config._a[YEAR] = config._locale.erasConvertYear(era, config._a[YEAR]);\n\t }\n\t\n\t configFromArray(config);\n\t checkOverflow(config);\n\t }\n\t\n\t function meridiemFixWrap(locale, hour, meridiem) {\n\t var isPm;\n\t\n\t if (meridiem == null) {\n\t // nothing to do\n\t return hour;\n\t }\n\t if (locale.meridiemHour != null) {\n\t return locale.meridiemHour(hour, meridiem);\n\t } else if (locale.isPM != null) {\n\t // Fallback\n\t isPm = locale.isPM(meridiem);\n\t if (isPm && hour < 12) {\n\t hour += 12;\n\t }\n\t if (!isPm && hour === 12) {\n\t hour = 0;\n\t }\n\t return hour;\n\t } else {\n\t // this is not supposed to happen\n\t return hour;\n\t }\n\t }\n\t\n\t // date from string and array of format strings\n\t function configFromStringAndArray(config) {\n\t var tempConfig,\n\t bestMoment,\n\t scoreToBeat,\n\t i,\n\t currentScore,\n\t validFormatFound,\n\t bestFormatIsValid = false;\n\t\n\t if (config._f.length === 0) {\n\t getParsingFlags(config).invalidFormat = true;\n\t config._d = new Date(NaN);\n\t return;\n\t }\n\t\n\t for (i = 0; i < config._f.length; i++) {\n\t currentScore = 0;\n\t validFormatFound = false;\n\t tempConfig = copyConfig({}, config);\n\t if (config._useUTC != null) {\n\t tempConfig._useUTC = config._useUTC;\n\t }\n\t tempConfig._f = config._f[i];\n\t configFromStringAndFormat(tempConfig);\n\t\n\t if (isValid(tempConfig)) {\n\t validFormatFound = true;\n\t }\n\t\n\t // if there is any input that was not parsed add a penalty for that format\n\t currentScore += getParsingFlags(tempConfig).charsLeftOver;\n\t\n\t //or tokens\n\t currentScore += getParsingFlags(tempConfig).unusedTokens.length * 10;\n\t\n\t getParsingFlags(tempConfig).score = currentScore;\n\t\n\t if (!bestFormatIsValid) {\n\t if (\n\t scoreToBeat == null ||\n\t currentScore < scoreToBeat ||\n\t validFormatFound\n\t ) {\n\t scoreToBeat = currentScore;\n\t bestMoment = tempConfig;\n\t if (validFormatFound) {\n\t bestFormatIsValid = true;\n\t }\n\t }\n\t } else {\n\t if (currentScore < scoreToBeat) {\n\t scoreToBeat = currentScore;\n\t bestMoment = tempConfig;\n\t }\n\t }\n\t }\n\t\n\t extend(config, bestMoment || tempConfig);\n\t }\n\t\n\t function configFromObject(config) {\n\t if (config._d) {\n\t return;\n\t }\n\t\n\t var i = normalizeObjectUnits(config._i),\n\t dayOrDate = i.day === undefined ? i.date : i.day;\n\t config._a = map(\n\t [i.year, i.month, dayOrDate, i.hour, i.minute, i.second, i.millisecond],\n\t function (obj) {\n\t return obj && parseInt(obj, 10);\n\t }\n\t );\n\t\n\t configFromArray(config);\n\t }\n\t\n\t function createFromConfig(config) {\n\t var res = new Moment(checkOverflow(prepareConfig(config)));\n\t if (res._nextDay) {\n\t // Adding is smart enough around DST\n\t res.add(1, 'd');\n\t res._nextDay = undefined;\n\t }\n\t\n\t return res;\n\t }\n\t\n\t function prepareConfig(config) {\n\t var input = config._i,\n\t format = config._f;\n\t\n\t config._locale = config._locale || getLocale(config._l);\n\t\n\t if (input === null || (format === undefined && input === '')) {\n\t return createInvalid({ nullInput: true });\n\t }\n\t\n\t if (typeof input === 'string') {\n\t config._i = input = config._locale.preparse(input);\n\t }\n\t\n\t if (isMoment(input)) {\n\t return new Moment(checkOverflow(input));\n\t } else if (isDate(input)) {\n\t config._d = input;\n\t } else if (isArray(format)) {\n\t configFromStringAndArray(config);\n\t } else if (format) {\n\t configFromStringAndFormat(config);\n\t } else {\n\t configFromInput(config);\n\t }\n\t\n\t if (!isValid(config)) {\n\t config._d = null;\n\t }\n\t\n\t return config;\n\t }\n\t\n\t function configFromInput(config) {\n\t var input = config._i;\n\t if (isUndefined(input)) {\n\t config._d = new Date(hooks.now());\n\t } else if (isDate(input)) {\n\t config._d = new Date(input.valueOf());\n\t } else if (typeof input === 'string') {\n\t configFromString(config);\n\t } else if (isArray(input)) {\n\t config._a = map(input.slice(0), function (obj) {\n\t return parseInt(obj, 10);\n\t });\n\t configFromArray(config);\n\t } else if (isObject(input)) {\n\t configFromObject(config);\n\t } else if (isNumber(input)) {\n\t // from milliseconds\n\t config._d = new Date(input);\n\t } else {\n\t hooks.createFromInputFallback(config);\n\t }\n\t }\n\t\n\t function createLocalOrUTC(input, format, locale, strict, isUTC) {\n\t var c = {};\n\t\n\t if (format === true || format === false) {\n\t strict = format;\n\t format = undefined;\n\t }\n\t\n\t if (locale === true || locale === false) {\n\t strict = locale;\n\t locale = undefined;\n\t }\n\t\n\t if (\n\t (isObject(input) && isObjectEmpty(input)) ||\n\t (isArray(input) && input.length === 0)\n\t ) {\n\t input = undefined;\n\t }\n\t // object construction must be done this way.\n\t // https://github.com/moment/moment/issues/1423\n\t c._isAMomentObject = true;\n\t c._useUTC = c._isUTC = isUTC;\n\t c._l = locale;\n\t c._i = input;\n\t c._f = format;\n\t c._strict = strict;\n\t\n\t return createFromConfig(c);\n\t }\n\t\n\t function createLocal(input, format, locale, strict) {\n\t return createLocalOrUTC(input, format, locale, strict, false);\n\t }\n\t\n\t var prototypeMin = deprecate(\n\t 'moment().min is deprecated, use moment.max instead. http://momentjs.com/guides/#/warnings/min-max/',\n\t function () {\n\t var other = createLocal.apply(null, arguments);\n\t if (this.isValid() && other.isValid()) {\n\t return other < this ? this : other;\n\t } else {\n\t return createInvalid();\n\t }\n\t }\n\t ),\n\t prototypeMax = deprecate(\n\t 'moment().max is deprecated, use moment.min instead. http://momentjs.com/guides/#/warnings/min-max/',\n\t function () {\n\t var other = createLocal.apply(null, arguments);\n\t if (this.isValid() && other.isValid()) {\n\t return other > this ? this : other;\n\t } else {\n\t return createInvalid();\n\t }\n\t }\n\t );\n\t\n\t // Pick a moment m from moments so that m[fn](other) is true for all\n\t // other. This relies on the function fn to be transitive.\n\t //\n\t // moments should either be an array of moment objects or an array, whose\n\t // first element is an array of moment objects.\n\t function pickBy(fn, moments) {\n\t var res, i;\n\t if (moments.length === 1 && isArray(moments[0])) {\n\t moments = moments[0];\n\t }\n\t if (!moments.length) {\n\t return createLocal();\n\t }\n\t res = moments[0];\n\t for (i = 1; i < moments.length; ++i) {\n\t if (!moments[i].isValid() || moments[i][fn](res)) {\n\t res = moments[i];\n\t }\n\t }\n\t return res;\n\t }\n\t\n\t // TODO: Use [].sort instead?\n\t function min() {\n\t var args = [].slice.call(arguments, 0);\n\t\n\t return pickBy('isBefore', args);\n\t }\n\t\n\t function max() {\n\t var args = [].slice.call(arguments, 0);\n\t\n\t return pickBy('isAfter', args);\n\t }\n\t\n\t var now = function () {\n\t return Date.now ? Date.now() : +new Date();\n\t };\n\t\n\t var ordering = [\n\t 'year',\n\t 'quarter',\n\t 'month',\n\t 'week',\n\t 'day',\n\t 'hour',\n\t 'minute',\n\t 'second',\n\t 'millisecond',\n\t ];\n\t\n\t function isDurationValid(m) {\n\t var key,\n\t unitHasDecimal = false,\n\t i;\n\t for (key in m) {\n\t if (\n\t hasOwnProp(m, key) &&\n\t !(\n\t indexOf.call(ordering, key) !== -1 &&\n\t (m[key] == null || !isNaN(m[key]))\n\t )\n\t ) {\n\t return false;\n\t }\n\t }\n\t\n\t for (i = 0; i < ordering.length; ++i) {\n\t if (m[ordering[i]]) {\n\t if (unitHasDecimal) {\n\t return false; // only allow non-integers for smallest unit\n\t }\n\t if (parseFloat(m[ordering[i]]) !== toInt(m[ordering[i]])) {\n\t unitHasDecimal = true;\n\t }\n\t }\n\t }\n\t\n\t return true;\n\t }\n\t\n\t function isValid$1() {\n\t return this._isValid;\n\t }\n\t\n\t function createInvalid$1() {\n\t return createDuration(NaN);\n\t }\n\t\n\t function Duration(duration) {\n\t var normalizedInput = normalizeObjectUnits(duration),\n\t years = normalizedInput.year || 0,\n\t quarters = normalizedInput.quarter || 0,\n\t months = normalizedInput.month || 0,\n\t weeks = normalizedInput.week || normalizedInput.isoWeek || 0,\n\t days = normalizedInput.day || 0,\n\t hours = normalizedInput.hour || 0,\n\t minutes = normalizedInput.minute || 0,\n\t seconds = normalizedInput.second || 0,\n\t milliseconds = normalizedInput.millisecond || 0;\n\t\n\t this._isValid = isDurationValid(normalizedInput);\n\t\n\t // representation for dateAddRemove\n\t this._milliseconds =\n\t +milliseconds +\n\t seconds * 1e3 + // 1000\n\t minutes * 6e4 + // 1000 * 60\n\t 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\t // Because of dateAddRemove treats 24 hours as different from a\n\t // day when working around DST, we need to store them separately\n\t this._days = +days + weeks * 7;\n\t // It is impossible to translate months into days without knowing\n\t // which months you are are talking about, so we have to store\n\t // it separately.\n\t this._months = +months + quarters * 3 + years * 12;\n\t\n\t this._data = {};\n\t\n\t this._locale = getLocale();\n\t\n\t this._bubble();\n\t }\n\t\n\t function isDuration(obj) {\n\t return obj instanceof Duration;\n\t }\n\t\n\t function absRound(number) {\n\t if (number < 0) {\n\t return Math.round(-1 * number) * -1;\n\t } else {\n\t return Math.round(number);\n\t }\n\t }\n\t\n\t // compare two arrays, return the number of differences\n\t function compareArrays(array1, array2, dontConvert) {\n\t var len = Math.min(array1.length, array2.length),\n\t lengthDiff = Math.abs(array1.length - array2.length),\n\t diffs = 0,\n\t i;\n\t for (i = 0; i < len; i++) {\n\t if (\n\t (dontConvert && array1[i] !== array2[i]) ||\n\t (!dontConvert && toInt(array1[i]) !== toInt(array2[i]))\n\t ) {\n\t diffs++;\n\t }\n\t }\n\t return diffs + lengthDiff;\n\t }\n\t\n\t // FORMATTING\n\t\n\t function offset(token, separator) {\n\t addFormatToken(token, 0, 0, function () {\n\t var offset = this.utcOffset(),\n\t sign = '+';\n\t if (offset < 0) {\n\t offset = -offset;\n\t sign = '-';\n\t }\n\t return (\n\t sign +\n\t zeroFill(~~(offset / 60), 2) +\n\t separator +\n\t zeroFill(~~offset % 60, 2)\n\t );\n\t });\n\t }\n\t\n\t offset('Z', ':');\n\t offset('ZZ', '');\n\t\n\t // PARSING\n\t\n\t addRegexToken('Z', matchShortOffset);\n\t addRegexToken('ZZ', matchShortOffset);\n\t addParseToken(['Z', 'ZZ'], function (input, array, config) {\n\t config._useUTC = true;\n\t config._tzm = offsetFromString(matchShortOffset, input);\n\t });\n\t\n\t // HELPERS\n\t\n\t // timezone chunker\n\t // '+10:00' > ['10', '00']\n\t // '-1530' > ['-15', '30']\n\t var chunkOffset = /([\\+\\-]|\\d\\d)/gi;\n\t\n\t function offsetFromString(matcher, string) {\n\t var matches = (string || '').match(matcher),\n\t chunk,\n\t parts,\n\t minutes;\n\t\n\t if (matches === null) {\n\t return null;\n\t }\n\t\n\t chunk = matches[matches.length - 1] || [];\n\t parts = (chunk + '').match(chunkOffset) || ['-', 0, 0];\n\t minutes = +(parts[1] * 60) + toInt(parts[2]);\n\t\n\t return minutes === 0 ? 0 : parts[0] === '+' ? minutes : -minutes;\n\t }\n\t\n\t // Return a moment from input, that is local/utc/zone equivalent to model.\n\t function cloneWithOffset(input, model) {\n\t var res, diff;\n\t if (model._isUTC) {\n\t res = model.clone();\n\t diff =\n\t (isMoment(input) || isDate(input)\n\t ? input.valueOf()\n\t : createLocal(input).valueOf()) - res.valueOf();\n\t // Use low-level api, because this fn is low-level api.\n\t res._d.setTime(res._d.valueOf() + diff);\n\t hooks.updateOffset(res, false);\n\t return res;\n\t } else {\n\t return createLocal(input).local();\n\t }\n\t }\n\t\n\t function getDateOffset(m) {\n\t // On Firefox.24 Date#getTimezoneOffset returns a floating point.\n\t // https://github.com/moment/moment/pull/1871\n\t return -Math.round(m._d.getTimezoneOffset());\n\t }\n\t\n\t // HOOKS\n\t\n\t // This function will be called whenever a moment is mutated.\n\t // It is intended to keep the offset in sync with the timezone.\n\t hooks.updateOffset = function () {};\n\t\n\t // MOMENTS\n\t\n\t // keepLocalTime = true means only change the timezone, without\n\t // affecting the local hour. So 5:31:26 +0300 --[utcOffset(2, true)]-->\n\t // 5:31:26 +0200 It is possible that 5:31:26 doesn't exist with offset\n\t // +0200, so we adjust the time as needed, to be valid.\n\t //\n\t // Keeping the time actually adds/subtracts (one hour)\n\t // from the actual represented time. That is why we call updateOffset\n\t // a second time. In case it wants us to change the offset again\n\t // _changeInProgress == true case, then we have to adjust, because\n\t // there is no such time in the given timezone.\n\t function getSetOffset(input, keepLocalTime, keepMinutes) {\n\t var offset = this._offset || 0,\n\t localAdjust;\n\t if (!this.isValid()) {\n\t return input != null ? this : NaN;\n\t }\n\t if (input != null) {\n\t if (typeof input === 'string') {\n\t input = offsetFromString(matchShortOffset, input);\n\t if (input === null) {\n\t return this;\n\t }\n\t } else if (Math.abs(input) < 16 && !keepMinutes) {\n\t input = input * 60;\n\t }\n\t if (!this._isUTC && keepLocalTime) {\n\t localAdjust = getDateOffset(this);\n\t }\n\t this._offset = input;\n\t this._isUTC = true;\n\t if (localAdjust != null) {\n\t this.add(localAdjust, 'm');\n\t }\n\t if (offset !== input) {\n\t if (!keepLocalTime || this._changeInProgress) {\n\t addSubtract(\n\t this,\n\t createDuration(input - offset, 'm'),\n\t 1,\n\t false\n\t );\n\t } else if (!this._changeInProgress) {\n\t this._changeInProgress = true;\n\t hooks.updateOffset(this, true);\n\t this._changeInProgress = null;\n\t }\n\t }\n\t return this;\n\t } else {\n\t return this._isUTC ? offset : getDateOffset(this);\n\t }\n\t }\n\t\n\t function getSetZone(input, keepLocalTime) {\n\t if (input != null) {\n\t if (typeof input !== 'string') {\n\t input = -input;\n\t }\n\t\n\t this.utcOffset(input, keepLocalTime);\n\t\n\t return this;\n\t } else {\n\t return -this.utcOffset();\n\t }\n\t }\n\t\n\t function setOffsetToUTC(keepLocalTime) {\n\t return this.utcOffset(0, keepLocalTime);\n\t }\n\t\n\t function setOffsetToLocal(keepLocalTime) {\n\t if (this._isUTC) {\n\t this.utcOffset(0, keepLocalTime);\n\t this._isUTC = false;\n\t\n\t if (keepLocalTime) {\n\t this.subtract(getDateOffset(this), 'm');\n\t }\n\t }\n\t return this;\n\t }\n\t\n\t function setOffsetToParsedOffset() {\n\t if (this._tzm != null) {\n\t this.utcOffset(this._tzm, false, true);\n\t } else if (typeof this._i === 'string') {\n\t var tZone = offsetFromString(matchOffset, this._i);\n\t if (tZone != null) {\n\t this.utcOffset(tZone);\n\t } else {\n\t this.utcOffset(0, true);\n\t }\n\t }\n\t return this;\n\t }\n\t\n\t function hasAlignedHourOffset(input) {\n\t if (!this.isValid()) {\n\t return false;\n\t }\n\t input = input ? createLocal(input).utcOffset() : 0;\n\t\n\t return (this.utcOffset() - input) % 60 === 0;\n\t }\n\t\n\t function isDaylightSavingTime() {\n\t return (\n\t this.utcOffset() > this.clone().month(0).utcOffset() ||\n\t this.utcOffset() > this.clone().month(5).utcOffset()\n\t );\n\t }\n\t\n\t function isDaylightSavingTimeShifted() {\n\t if (!isUndefined(this._isDSTShifted)) {\n\t return this._isDSTShifted;\n\t }\n\t\n\t var c = {},\n\t other;\n\t\n\t copyConfig(c, this);\n\t c = prepareConfig(c);\n\t\n\t if (c._a) {\n\t other = c._isUTC ? createUTC(c._a) : createLocal(c._a);\n\t this._isDSTShifted =\n\t this.isValid() && compareArrays(c._a, other.toArray()) > 0;\n\t } else {\n\t this._isDSTShifted = false;\n\t }\n\t\n\t return this._isDSTShifted;\n\t }\n\t\n\t function isLocal() {\n\t return this.isValid() ? !this._isUTC : false;\n\t }\n\t\n\t function isUtcOffset() {\n\t return this.isValid() ? this._isUTC : false;\n\t }\n\t\n\t function isUtc() {\n\t return this.isValid() ? this._isUTC && this._offset === 0 : false;\n\t }\n\t\n\t // ASP.NET json date format regex\n\t var aspNetRegex = /^(-|\\+)?(?:(\\d*)[. ])?(\\d+):(\\d+)(?::(\\d+)(\\.\\d*)?)?$/,\n\t // from http://docs.closure-library.googlecode.com/git/closure_goog_date_date.js.source.html\n\t // somewhat more in line with 4.4.3.2 2004 spec, but allows decimal anywhere\n\t // and further modified to allow for strings containing both week and day\n\t 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\t\n\t function createDuration(input, key) {\n\t var duration = input,\n\t // matching against regexp is expensive, do it on demand\n\t match = null,\n\t sign,\n\t ret,\n\t diffRes;\n\t\n\t if (isDuration(input)) {\n\t duration = {\n\t ms: input._milliseconds,\n\t d: input._days,\n\t M: input._months,\n\t };\n\t } else if (isNumber(input) || !isNaN(+input)) {\n\t duration = {};\n\t if (key) {\n\t duration[key] = +input;\n\t } else {\n\t duration.milliseconds = +input;\n\t }\n\t } else if ((match = aspNetRegex.exec(input))) {\n\t sign = match[1] === '-' ? -1 : 1;\n\t duration = {\n\t y: 0,\n\t d: toInt(match[DATE]) * sign,\n\t h: toInt(match[HOUR]) * sign,\n\t m: toInt(match[MINUTE]) * sign,\n\t s: toInt(match[SECOND]) * sign,\n\t ms: toInt(absRound(match[MILLISECOND] * 1000)) * sign, // the millisecond decimal point is included in the match\n\t };\n\t } else if ((match = isoRegex.exec(input))) {\n\t sign = match[1] === '-' ? -1 : 1;\n\t duration = {\n\t y: parseIso(match[2], sign),\n\t M: parseIso(match[3], sign),\n\t w: parseIso(match[4], sign),\n\t d: parseIso(match[5], sign),\n\t h: parseIso(match[6], sign),\n\t m: parseIso(match[7], sign),\n\t s: parseIso(match[8], sign),\n\t };\n\t } else if (duration == null) {\n\t // checks for null or undefined\n\t duration = {};\n\t } else if (\n\t typeof duration === 'object' &&\n\t ('from' in duration || 'to' in duration)\n\t ) {\n\t diffRes = momentsDifference(\n\t createLocal(duration.from),\n\t createLocal(duration.to)\n\t );\n\t\n\t duration = {};\n\t duration.ms = diffRes.milliseconds;\n\t duration.M = diffRes.months;\n\t }\n\t\n\t ret = new Duration(duration);\n\t\n\t if (isDuration(input) && hasOwnProp(input, '_locale')) {\n\t ret._locale = input._locale;\n\t }\n\t\n\t if (isDuration(input) && hasOwnProp(input, '_isValid')) {\n\t ret._isValid = input._isValid;\n\t }\n\t\n\t return ret;\n\t }\n\t\n\t createDuration.fn = Duration.prototype;\n\t createDuration.invalid = createInvalid$1;\n\t\n\t function parseIso(inp, sign) {\n\t // We'd normally use ~~inp for this, but unfortunately it also\n\t // converts floats to ints.\n\t // inp may be undefined, so careful calling replace on it.\n\t var res = inp && parseFloat(inp.replace(',', '.'));\n\t // apply sign while we're at it\n\t return (isNaN(res) ? 0 : res) * sign;\n\t }\n\t\n\t function positiveMomentsDifference(base, other) {\n\t var res = {};\n\t\n\t res.months =\n\t other.month() - base.month() + (other.year() - base.year()) * 12;\n\t if (base.clone().add(res.months, 'M').isAfter(other)) {\n\t --res.months;\n\t }\n\t\n\t res.milliseconds = +other - +base.clone().add(res.months, 'M');\n\t\n\t return res;\n\t }\n\t\n\t function momentsDifference(base, other) {\n\t var res;\n\t if (!(base.isValid() && other.isValid())) {\n\t return { milliseconds: 0, months: 0 };\n\t }\n\t\n\t other = cloneWithOffset(other, base);\n\t if (base.isBefore(other)) {\n\t res = positiveMomentsDifference(base, other);\n\t } else {\n\t res = positiveMomentsDifference(other, base);\n\t res.milliseconds = -res.milliseconds;\n\t res.months = -res.months;\n\t }\n\t\n\t return res;\n\t }\n\t\n\t // TODO: remove 'name' arg after deprecation is removed\n\t function createAdder(direction, name) {\n\t return function (val, period) {\n\t var dur, tmp;\n\t //invert the arguments, but complain about it\n\t if (period !== null && !isNaN(+period)) {\n\t deprecateSimple(\n\t name,\n\t 'moment().' +\n\t name +\n\t '(period, number) is deprecated. Please use moment().' +\n\t name +\n\t '(number, period). ' +\n\t 'See http://momentjs.com/guides/#/warnings/add-inverted-param/ for more info.'\n\t );\n\t tmp = val;\n\t val = period;\n\t period = tmp;\n\t }\n\t\n\t dur = createDuration(val, period);\n\t addSubtract(this, dur, direction);\n\t return this;\n\t };\n\t }\n\t\n\t function addSubtract(mom, duration, isAdding, updateOffset) {\n\t var milliseconds = duration._milliseconds,\n\t days = absRound(duration._days),\n\t months = absRound(duration._months);\n\t\n\t if (!mom.isValid()) {\n\t // No op\n\t return;\n\t }\n\t\n\t updateOffset = updateOffset == null ? true : updateOffset;\n\t\n\t if (months) {\n\t setMonth(mom, get(mom, 'Month') + months * isAdding);\n\t }\n\t if (days) {\n\t set$1(mom, 'Date', get(mom, 'Date') + days * isAdding);\n\t }\n\t if (milliseconds) {\n\t mom._d.setTime(mom._d.valueOf() + milliseconds * isAdding);\n\t }\n\t if (updateOffset) {\n\t hooks.updateOffset(mom, days || months);\n\t }\n\t }\n\t\n\t var add = createAdder(1, 'add'),\n\t subtract = createAdder(-1, 'subtract');\n\t\n\t function isString(input) {\n\t return typeof input === 'string' || input instanceof String;\n\t }\n\t\n\t // type MomentInput = Moment | Date | string | number | (number | string)[] | MomentInputObject | void; // null | undefined\n\t function isMomentInput(input) {\n\t return (\n\t isMoment(input) ||\n\t isDate(input) ||\n\t isString(input) ||\n\t isNumber(input) ||\n\t isNumberOrStringArray(input) ||\n\t isMomentInputObject(input) ||\n\t input === null ||\n\t input === undefined\n\t );\n\t }\n\t\n\t function isMomentInputObject(input) {\n\t var objectTest = isObject(input) && !isObjectEmpty(input),\n\t propertyTest = false,\n\t properties = [\n\t 'years',\n\t 'year',\n\t 'y',\n\t 'months',\n\t 'month',\n\t 'M',\n\t 'days',\n\t 'day',\n\t 'd',\n\t 'dates',\n\t 'date',\n\t 'D',\n\t 'hours',\n\t 'hour',\n\t 'h',\n\t 'minutes',\n\t 'minute',\n\t 'm',\n\t 'seconds',\n\t 'second',\n\t 's',\n\t 'milliseconds',\n\t 'millisecond',\n\t 'ms',\n\t ],\n\t i,\n\t property;\n\t\n\t for (i = 0; i < properties.length; i += 1) {\n\t property = properties[i];\n\t propertyTest = propertyTest || hasOwnProp(input, property);\n\t }\n\t\n\t return objectTest && propertyTest;\n\t }\n\t\n\t function isNumberOrStringArray(input) {\n\t var arrayTest = isArray(input),\n\t dataTypeTest = false;\n\t if (arrayTest) {\n\t dataTypeTest =\n\t input.filter(function (item) {\n\t return !isNumber(item) && isString(input);\n\t }).length === 0;\n\t }\n\t return arrayTest && dataTypeTest;\n\t }\n\t\n\t function isCalendarSpec(input) {\n\t var objectTest = isObject(input) && !isObjectEmpty(input),\n\t propertyTest = false,\n\t properties = [\n\t 'sameDay',\n\t 'nextDay',\n\t 'lastDay',\n\t 'nextWeek',\n\t 'lastWeek',\n\t 'sameElse',\n\t ],\n\t i,\n\t property;\n\t\n\t for (i = 0; i < properties.length; i += 1) {\n\t property = properties[i];\n\t propertyTest = propertyTest || hasOwnProp(input, property);\n\t }\n\t\n\t return objectTest && propertyTest;\n\t }\n\t\n\t function getCalendarFormat(myMoment, now) {\n\t var diff = myMoment.diff(now, 'days', true);\n\t return diff < -6\n\t ? 'sameElse'\n\t : diff < -1\n\t ? 'lastWeek'\n\t : diff < 0\n\t ? 'lastDay'\n\t : diff < 1\n\t ? 'sameDay'\n\t : diff < 2\n\t ? 'nextDay'\n\t : diff < 7\n\t ? 'nextWeek'\n\t : 'sameElse';\n\t }\n\t\n\t function calendar$1(time, formats) {\n\t // Support for single parameter, formats only overload to the calendar function\n\t if (arguments.length === 1) {\n\t if (!arguments[0]) {\n\t time = undefined;\n\t formats = undefined;\n\t } else if (isMomentInput(arguments[0])) {\n\t time = arguments[0];\n\t formats = undefined;\n\t } else if (isCalendarSpec(arguments[0])) {\n\t formats = arguments[0];\n\t time = undefined;\n\t }\n\t }\n\t // We want to compare the start of today, vs this.\n\t // Getting start-of-today depends on whether we're local/utc/offset or not.\n\t var now = time || createLocal(),\n\t sod = cloneWithOffset(now, this).startOf('day'),\n\t format = hooks.calendarFormat(this, sod) || 'sameElse',\n\t output =\n\t formats &&\n\t (isFunction(formats[format])\n\t ? formats[format].call(this, now)\n\t : formats[format]);\n\t\n\t return this.format(\n\t output || this.localeData().calendar(format, this, createLocal(now))\n\t );\n\t }\n\t\n\t function clone() {\n\t return new Moment(this);\n\t }\n\t\n\t function isAfter(input, units) {\n\t var localInput = isMoment(input) ? input : createLocal(input);\n\t if (!(this.isValid() && localInput.isValid())) {\n\t return false;\n\t }\n\t units = normalizeUnits(units) || 'millisecond';\n\t if (units === 'millisecond') {\n\t return this.valueOf() > localInput.valueOf();\n\t } else {\n\t return localInput.valueOf() < this.clone().startOf(units).valueOf();\n\t }\n\t }\n\t\n\t function isBefore(input, units) {\n\t var localInput = isMoment(input) ? input : createLocal(input);\n\t if (!(this.isValid() && localInput.isValid())) {\n\t return false;\n\t }\n\t units = normalizeUnits(units) || 'millisecond';\n\t if (units === 'millisecond') {\n\t return this.valueOf() < localInput.valueOf();\n\t } else {\n\t return this.clone().endOf(units).valueOf() < localInput.valueOf();\n\t }\n\t }\n\t\n\t function isBetween(from, to, units, inclusivity) {\n\t var localFrom = isMoment(from) ? from : createLocal(from),\n\t localTo = isMoment(to) ? to : createLocal(to);\n\t if (!(this.isValid() && localFrom.isValid() && localTo.isValid())) {\n\t return false;\n\t }\n\t inclusivity = inclusivity || '()';\n\t return (\n\t (inclusivity[0] === '('\n\t ? this.isAfter(localFrom, units)\n\t : !this.isBefore(localFrom, units)) &&\n\t (inclusivity[1] === ')'\n\t ? this.isBefore(localTo, units)\n\t : !this.isAfter(localTo, units))\n\t );\n\t }\n\t\n\t function isSame(input, units) {\n\t var localInput = isMoment(input) ? input : createLocal(input),\n\t inputMs;\n\t if (!(this.isValid() && localInput.isValid())) {\n\t return false;\n\t }\n\t units = normalizeUnits(units) || 'millisecond';\n\t if (units === 'millisecond') {\n\t return this.valueOf() === localInput.valueOf();\n\t } else {\n\t inputMs = localInput.valueOf();\n\t return (\n\t this.clone().startOf(units).valueOf() <= inputMs &&\n\t inputMs <= this.clone().endOf(units).valueOf()\n\t );\n\t }\n\t }\n\t\n\t function isSameOrAfter(input, units) {\n\t return this.isSame(input, units) || this.isAfter(input, units);\n\t }\n\t\n\t function isSameOrBefore(input, units) {\n\t return this.isSame(input, units) || this.isBefore(input, units);\n\t }\n\t\n\t function diff(input, units, asFloat) {\n\t var that, zoneDelta, output;\n\t\n\t if (!this.isValid()) {\n\t return NaN;\n\t }\n\t\n\t that = cloneWithOffset(input, this);\n\t\n\t if (!that.isValid()) {\n\t return NaN;\n\t }\n\t\n\t zoneDelta = (that.utcOffset() - this.utcOffset()) * 6e4;\n\t\n\t units = normalizeUnits(units);\n\t\n\t switch (units) {\n\t case 'year':\n\t output = monthDiff(this, that) / 12;\n\t break;\n\t case 'month':\n\t output = monthDiff(this, that);\n\t break;\n\t case 'quarter':\n\t output = monthDiff(this, that) / 3;\n\t break;\n\t case 'second':\n\t output = (this - that) / 1e3;\n\t break; // 1000\n\t case 'minute':\n\t output = (this - that) / 6e4;\n\t break; // 1000 * 60\n\t case 'hour':\n\t output = (this - that) / 36e5;\n\t break; // 1000 * 60 * 60\n\t case 'day':\n\t output = (this - that - zoneDelta) / 864e5;\n\t break; // 1000 * 60 * 60 * 24, negate dst\n\t case 'week':\n\t output = (this - that - zoneDelta) / 6048e5;\n\t break; // 1000 * 60 * 60 * 24 * 7, negate dst\n\t default:\n\t output = this - that;\n\t }\n\t\n\t return asFloat ? output : absFloor(output);\n\t }\n\t\n\t function monthDiff(a, b) {\n\t if (a.date() < b.date()) {\n\t // end-of-month calculations work correct when the start month has more\n\t // days than the end month.\n\t return -monthDiff(b, a);\n\t }\n\t // difference in months\n\t var wholeMonthDiff = (b.year() - a.year()) * 12 + (b.month() - a.month()),\n\t // b is in (anchor - 1 month, anchor + 1 month)\n\t anchor = a.clone().add(wholeMonthDiff, 'months'),\n\t anchor2,\n\t adjust;\n\t\n\t if (b - anchor < 0) {\n\t anchor2 = a.clone().add(wholeMonthDiff - 1, 'months');\n\t // linear across the month\n\t adjust = (b - anchor) / (anchor - anchor2);\n\t } else {\n\t anchor2 = a.clone().add(wholeMonthDiff + 1, 'months');\n\t // linear across the month\n\t adjust = (b - anchor) / (anchor2 - anchor);\n\t }\n\t\n\t //check for negative zero, return zero if negative zero\n\t return -(wholeMonthDiff + adjust) || 0;\n\t }\n\t\n\t hooks.defaultFormat = 'YYYY-MM-DDTHH:mm:ssZ';\n\t hooks.defaultFormatUtc = 'YYYY-MM-DDTHH:mm:ss[Z]';\n\t\n\t function toString() {\n\t return this.clone().locale('en').format('ddd MMM DD YYYY HH:mm:ss [GMT]ZZ');\n\t }\n\t\n\t function toISOString(keepOffset) {\n\t if (!this.isValid()) {\n\t return null;\n\t }\n\t var utc = keepOffset !== true,\n\t m = utc ? this.clone().utc() : this;\n\t if (m.year() < 0 || m.year() > 9999) {\n\t return formatMoment(\n\t m,\n\t utc\n\t ? 'YYYYYY-MM-DD[T]HH:mm:ss.SSS[Z]'\n\t : 'YYYYYY-MM-DD[T]HH:mm:ss.SSSZ'\n\t );\n\t }\n\t if (isFunction(Date.prototype.toISOString)) {\n\t // native implementation is ~50x faster, use it when we can\n\t if (utc) {\n\t return this.toDate().toISOString();\n\t } else {\n\t return new Date(this.valueOf() + this.utcOffset() * 60 * 1000)\n\t .toISOString()\n\t .replace('Z', formatMoment(m, 'Z'));\n\t }\n\t }\n\t return formatMoment(\n\t m,\n\t utc ? 'YYYY-MM-DD[T]HH:mm:ss.SSS[Z]' : 'YYYY-MM-DD[T]HH:mm:ss.SSSZ'\n\t );\n\t }\n\t\n\t /**\n\t * Return a human readable representation of a moment that can\n\t * also be evaluated to get a new moment which is the same\n\t *\n\t * @link https://nodejs.org/dist/latest/docs/api/util.html#util_custom_inspect_function_on_objects\n\t */\n\t function inspect() {\n\t if (!this.isValid()) {\n\t return 'moment.invalid(/* ' + this._i + ' */)';\n\t }\n\t var func = 'moment',\n\t zone = '',\n\t prefix,\n\t year,\n\t datetime,\n\t suffix;\n\t if (!this.isLocal()) {\n\t func = this.utcOffset() === 0 ? 'moment.utc' : 'moment.parseZone';\n\t zone = 'Z';\n\t }\n\t prefix = '[' + func + '(\"]';\n\t year = 0 <= this.year() && this.year() <= 9999 ? 'YYYY' : 'YYYYYY';\n\t datetime = '-MM-DD[T]HH:mm:ss.SSS';\n\t suffix = zone + '[\")]';\n\t\n\t return this.format(prefix + year + datetime + suffix);\n\t }\n\t\n\t function format(inputString) {\n\t if (!inputString) {\n\t inputString = this.isUtc()\n\t ? hooks.defaultFormatUtc\n\t : hooks.defaultFormat;\n\t }\n\t var output = formatMoment(this, inputString);\n\t return this.localeData().postformat(output);\n\t }\n\t\n\t function from(time, withoutSuffix) {\n\t if (\n\t this.isValid() &&\n\t ((isMoment(time) && time.isValid()) || createLocal(time).isValid())\n\t ) {\n\t return createDuration({ to: this, from: time })\n\t .locale(this.locale())\n\t .humanize(!withoutSuffix);\n\t } else {\n\t return this.localeData().invalidDate();\n\t }\n\t }\n\t\n\t function fromNow(withoutSuffix) {\n\t return this.from(createLocal(), withoutSuffix);\n\t }\n\t\n\t function to(time, withoutSuffix) {\n\t if (\n\t this.isValid() &&\n\t ((isMoment(time) && time.isValid()) || createLocal(time).isValid())\n\t ) {\n\t return createDuration({ from: this, to: time })\n\t .locale(this.locale())\n\t .humanize(!withoutSuffix);\n\t } else {\n\t return this.localeData().invalidDate();\n\t }\n\t }\n\t\n\t function toNow(withoutSuffix) {\n\t return this.to(createLocal(), withoutSuffix);\n\t }\n\t\n\t // If passed a locale key, it will set the locale for this\n\t // instance. Otherwise, it will return the locale configuration\n\t // variables for this instance.\n\t function locale(key) {\n\t var newLocaleData;\n\t\n\t if (key === undefined) {\n\t return this._locale._abbr;\n\t } else {\n\t newLocaleData = getLocale(key);\n\t if (newLocaleData != null) {\n\t this._locale = newLocaleData;\n\t }\n\t return this;\n\t }\n\t }\n\t\n\t var lang = deprecate(\n\t 'moment().lang() is deprecated. Instead, use moment().localeData() to get the language configuration. Use moment().locale() to change languages.',\n\t function (key) {\n\t if (key === undefined) {\n\t return this.localeData();\n\t } else {\n\t return this.locale(key);\n\t }\n\t }\n\t );\n\t\n\t function localeData() {\n\t return this._locale;\n\t }\n\t\n\t var MS_PER_SECOND = 1000,\n\t MS_PER_MINUTE = 60 * MS_PER_SECOND,\n\t MS_PER_HOUR = 60 * MS_PER_MINUTE,\n\t MS_PER_400_YEARS = (365 * 400 + 97) * 24 * MS_PER_HOUR;\n\t\n\t // actual modulo - handles negative numbers (for dates before 1970):\n\t function mod$1(dividend, divisor) {\n\t return ((dividend % divisor) + divisor) % divisor;\n\t }\n\t\n\t function localStartOfDate(y, m, d) {\n\t // the date constructor remaps years 0-99 to 1900-1999\n\t if (y < 100 && y >= 0) {\n\t // preserve leap years using a full 400 year cycle, then reset\n\t return new Date(y + 400, m, d) - MS_PER_400_YEARS;\n\t } else {\n\t return new Date(y, m, d).valueOf();\n\t }\n\t }\n\t\n\t function utcStartOfDate(y, m, d) {\n\t // Date.UTC remaps years 0-99 to 1900-1999\n\t if (y < 100 && y >= 0) {\n\t // preserve leap years using a full 400 year cycle, then reset\n\t return Date.UTC(y + 400, m, d) - MS_PER_400_YEARS;\n\t } else {\n\t return Date.UTC(y, m, d);\n\t }\n\t }\n\t\n\t function startOf(units) {\n\t var time, startOfDate;\n\t units = normalizeUnits(units);\n\t if (units === undefined || units === 'millisecond' || !this.isValid()) {\n\t return this;\n\t }\n\t\n\t startOfDate = this._isUTC ? utcStartOfDate : localStartOfDate;\n\t\n\t switch (units) {\n\t case 'year':\n\t time = startOfDate(this.year(), 0, 1);\n\t break;\n\t case 'quarter':\n\t time = startOfDate(\n\t this.year(),\n\t this.month() - (this.month() % 3),\n\t 1\n\t );\n\t break;\n\t case 'month':\n\t time = startOfDate(this.year(), this.month(), 1);\n\t break;\n\t case 'week':\n\t time = startOfDate(\n\t this.year(),\n\t this.month(),\n\t this.date() - this.weekday()\n\t );\n\t break;\n\t case 'isoWeek':\n\t time = startOfDate(\n\t this.year(),\n\t this.month(),\n\t this.date() - (this.isoWeekday() - 1)\n\t );\n\t break;\n\t case 'day':\n\t case 'date':\n\t time = startOfDate(this.year(), this.month(), this.date());\n\t break;\n\t case 'hour':\n\t time = this._d.valueOf();\n\t time -= mod$1(\n\t time + (this._isUTC ? 0 : this.utcOffset() * MS_PER_MINUTE),\n\t MS_PER_HOUR\n\t );\n\t break;\n\t case 'minute':\n\t time = this._d.valueOf();\n\t time -= mod$1(time, MS_PER_MINUTE);\n\t break;\n\t case 'second':\n\t time = this._d.valueOf();\n\t time -= mod$1(time, MS_PER_SECOND);\n\t break;\n\t }\n\t\n\t this._d.setTime(time);\n\t hooks.updateOffset(this, true);\n\t return this;\n\t }\n\t\n\t function endOf(units) {\n\t var time, startOfDate;\n\t units = normalizeUnits(units);\n\t if (units === undefined || units === 'millisecond' || !this.isValid()) {\n\t return this;\n\t }\n\t\n\t startOfDate = this._isUTC ? utcStartOfDate : localStartOfDate;\n\t\n\t switch (units) {\n\t case 'year':\n\t time = startOfDate(this.year() + 1, 0, 1) - 1;\n\t break;\n\t case 'quarter':\n\t time =\n\t startOfDate(\n\t this.year(),\n\t this.month() - (this.month() % 3) + 3,\n\t 1\n\t ) - 1;\n\t break;\n\t case 'month':\n\t time = startOfDate(this.year(), this.month() + 1, 1) - 1;\n\t break;\n\t case 'week':\n\t time =\n\t startOfDate(\n\t this.year(),\n\t this.month(),\n\t this.date() - this.weekday() + 7\n\t ) - 1;\n\t break;\n\t case 'isoWeek':\n\t time =\n\t startOfDate(\n\t this.year(),\n\t this.month(),\n\t this.date() - (this.isoWeekday() - 1) + 7\n\t ) - 1;\n\t break;\n\t case 'day':\n\t case 'date':\n\t time = startOfDate(this.year(), this.month(), this.date() + 1) - 1;\n\t break;\n\t case 'hour':\n\t time = this._d.valueOf();\n\t time +=\n\t MS_PER_HOUR -\n\t mod$1(\n\t time + (this._isUTC ? 0 : this.utcOffset() * MS_PER_MINUTE),\n\t MS_PER_HOUR\n\t ) -\n\t 1;\n\t break;\n\t case 'minute':\n\t time = this._d.valueOf();\n\t time += MS_PER_MINUTE - mod$1(time, MS_PER_MINUTE) - 1;\n\t break;\n\t case 'second':\n\t time = this._d.valueOf();\n\t time += MS_PER_SECOND - mod$1(time, MS_PER_SECOND) - 1;\n\t break;\n\t }\n\t\n\t this._d.setTime(time);\n\t hooks.updateOffset(this, true);\n\t return this;\n\t }\n\t\n\t function valueOf() {\n\t return this._d.valueOf() - (this._offset || 0) * 60000;\n\t }\n\t\n\t function unix() {\n\t return Math.floor(this.valueOf() / 1000);\n\t }\n\t\n\t function toDate() {\n\t return new Date(this.valueOf());\n\t }\n\t\n\t function toArray() {\n\t var m = this;\n\t return [\n\t m.year(),\n\t m.month(),\n\t m.date(),\n\t m.hour(),\n\t m.minute(),\n\t m.second(),\n\t m.millisecond(),\n\t ];\n\t }\n\t\n\t function toObject() {\n\t var m = this;\n\t return {\n\t years: m.year(),\n\t months: m.month(),\n\t date: m.date(),\n\t hours: m.hours(),\n\t minutes: m.minutes(),\n\t seconds: m.seconds(),\n\t milliseconds: m.milliseconds(),\n\t };\n\t }\n\t\n\t function toJSON() {\n\t // new Date(NaN).toJSON() === null\n\t return this.isValid() ? this.toISOString() : null;\n\t }\n\t\n\t function isValid$2() {\n\t return isValid(this);\n\t }\n\t\n\t function parsingFlags() {\n\t return extend({}, getParsingFlags(this));\n\t }\n\t\n\t function invalidAt() {\n\t return getParsingFlags(this).overflow;\n\t }\n\t\n\t function creationData() {\n\t return {\n\t input: this._i,\n\t format: this._f,\n\t locale: this._locale,\n\t isUTC: this._isUTC,\n\t strict: this._strict,\n\t };\n\t }\n\t\n\t addFormatToken('N', 0, 0, 'eraAbbr');\n\t addFormatToken('NN', 0, 0, 'eraAbbr');\n\t addFormatToken('NNN', 0, 0, 'eraAbbr');\n\t addFormatToken('NNNN', 0, 0, 'eraName');\n\t addFormatToken('NNNNN', 0, 0, 'eraNarrow');\n\t\n\t addFormatToken('y', ['y', 1], 'yo', 'eraYear');\n\t addFormatToken('y', ['yy', 2], 0, 'eraYear');\n\t addFormatToken('y', ['yyy', 3], 0, 'eraYear');\n\t addFormatToken('y', ['yyyy', 4], 0, 'eraYear');\n\t\n\t addRegexToken('N', matchEraAbbr);\n\t addRegexToken('NN', matchEraAbbr);\n\t addRegexToken('NNN', matchEraAbbr);\n\t addRegexToken('NNNN', matchEraName);\n\t addRegexToken('NNNNN', matchEraNarrow);\n\t\n\t addParseToken(['N', 'NN', 'NNN', 'NNNN', 'NNNNN'], function (\n\t input,\n\t array,\n\t config,\n\t token\n\t ) {\n\t var era = config._locale.erasParse(input, token, config._strict);\n\t if (era) {\n\t getParsingFlags(config).era = era;\n\t } else {\n\t getParsingFlags(config).invalidEra = input;\n\t }\n\t });\n\t\n\t addRegexToken('y', matchUnsigned);\n\t addRegexToken('yy', matchUnsigned);\n\t addRegexToken('yyy', matchUnsigned);\n\t addRegexToken('yyyy', matchUnsigned);\n\t addRegexToken('yo', matchEraYearOrdinal);\n\t\n\t addParseToken(['y', 'yy', 'yyy', 'yyyy'], YEAR);\n\t addParseToken(['yo'], function (input, array, config, token) {\n\t var match;\n\t if (config._locale._eraYearOrdinalRegex) {\n\t match = input.match(config._locale._eraYearOrdinalRegex);\n\t }\n\t\n\t if (config._locale.eraYearOrdinalParse) {\n\t array[YEAR] = config._locale.eraYearOrdinalParse(input, match);\n\t } else {\n\t array[YEAR] = parseInt(input, 10);\n\t }\n\t });\n\t\n\t function localeEras(m, format) {\n\t var i,\n\t l,\n\t date,\n\t eras = this._eras || getLocale('en')._eras;\n\t for (i = 0, l = eras.length; i < l; ++i) {\n\t switch (typeof eras[i].since) {\n\t case 'string':\n\t // truncate time\n\t date = hooks(eras[i].since).startOf('day');\n\t eras[i].since = date.valueOf();\n\t break;\n\t }\n\t\n\t switch (typeof eras[i].until) {\n\t case 'undefined':\n\t eras[i].until = +Infinity;\n\t break;\n\t case 'string':\n\t // truncate time\n\t date = hooks(eras[i].until).startOf('day').valueOf();\n\t eras[i].until = date.valueOf();\n\t break;\n\t }\n\t }\n\t return eras;\n\t }\n\t\n\t function localeErasParse(eraName, format, strict) {\n\t var i,\n\t l,\n\t eras = this.eras(),\n\t name,\n\t abbr,\n\t narrow;\n\t eraName = eraName.toUpperCase();\n\t\n\t for (i = 0, l = eras.length; i < l; ++i) {\n\t name = eras[i].name.toUpperCase();\n\t abbr = eras[i].abbr.toUpperCase();\n\t narrow = eras[i].narrow.toUpperCase();\n\t\n\t if (strict) {\n\t switch (format) {\n\t case 'N':\n\t case 'NN':\n\t case 'NNN':\n\t if (abbr === eraName) {\n\t return eras[i];\n\t }\n\t break;\n\t\n\t case 'NNNN':\n\t if (name === eraName) {\n\t return eras[i];\n\t }\n\t break;\n\t\n\t case 'NNNNN':\n\t if (narrow === eraName) {\n\t return eras[i];\n\t }\n\t break;\n\t }\n\t } else if ([name, abbr, narrow].indexOf(eraName) >= 0) {\n\t return eras[i];\n\t }\n\t }\n\t }\n\t\n\t function localeErasConvertYear(era, year) {\n\t var dir = era.since <= era.until ? +1 : -1;\n\t if (year === undefined) {\n\t return hooks(era.since).year();\n\t } else {\n\t return hooks(era.since).year() + (year - era.offset) * dir;\n\t }\n\t }\n\t\n\t function getEraName() {\n\t var i,\n\t l,\n\t val,\n\t eras = this.localeData().eras();\n\t for (i = 0, l = eras.length; i < l; ++i) {\n\t // truncate time\n\t val = this.clone().startOf('day').valueOf();\n\t\n\t if (eras[i].since <= val && val <= eras[i].until) {\n\t return eras[i].name;\n\t }\n\t if (eras[i].until <= val && val <= eras[i].since) {\n\t return eras[i].name;\n\t }\n\t }\n\t\n\t return '';\n\t }\n\t\n\t function getEraNarrow() {\n\t var i,\n\t l,\n\t val,\n\t eras = this.localeData().eras();\n\t for (i = 0, l = eras.length; i < l; ++i) {\n\t // truncate time\n\t val = this.clone().startOf('day').valueOf();\n\t\n\t if (eras[i].since <= val && val <= eras[i].until) {\n\t return eras[i].narrow;\n\t }\n\t if (eras[i].until <= val && val <= eras[i].since) {\n\t return eras[i].narrow;\n\t }\n\t }\n\t\n\t return '';\n\t }\n\t\n\t function getEraAbbr() {\n\t var i,\n\t l,\n\t val,\n\t eras = this.localeData().eras();\n\t for (i = 0, l = eras.length; i < l; ++i) {\n\t // truncate time\n\t val = this.clone().startOf('day').valueOf();\n\t\n\t if (eras[i].since <= val && val <= eras[i].until) {\n\t return eras[i].abbr;\n\t }\n\t if (eras[i].until <= val && val <= eras[i].since) {\n\t return eras[i].abbr;\n\t }\n\t }\n\t\n\t return '';\n\t }\n\t\n\t function getEraYear() {\n\t var i,\n\t l,\n\t dir,\n\t val,\n\t eras = this.localeData().eras();\n\t for (i = 0, l = eras.length; i < l; ++i) {\n\t dir = eras[i].since <= eras[i].until ? +1 : -1;\n\t\n\t // truncate time\n\t val = this.clone().startOf('day').valueOf();\n\t\n\t if (\n\t (eras[i].since <= val && val <= eras[i].until) ||\n\t (eras[i].until <= val && val <= eras[i].since)\n\t ) {\n\t return (\n\t (this.year() - hooks(eras[i].since).year()) * dir +\n\t eras[i].offset\n\t );\n\t }\n\t }\n\t\n\t return this.year();\n\t }\n\t\n\t function erasNameRegex(isStrict) {\n\t if (!hasOwnProp(this, '_erasNameRegex')) {\n\t computeErasParse.call(this);\n\t }\n\t return isStrict ? this._erasNameRegex : this._erasRegex;\n\t }\n\t\n\t function erasAbbrRegex(isStrict) {\n\t if (!hasOwnProp(this, '_erasAbbrRegex')) {\n\t computeErasParse.call(this);\n\t }\n\t return isStrict ? this._erasAbbrRegex : this._erasRegex;\n\t }\n\t\n\t function erasNarrowRegex(isStrict) {\n\t if (!hasOwnProp(this, '_erasNarrowRegex')) {\n\t computeErasParse.call(this);\n\t }\n\t return isStrict ? this._erasNarrowRegex : this._erasRegex;\n\t }\n\t\n\t function matchEraAbbr(isStrict, locale) {\n\t return locale.erasAbbrRegex(isStrict);\n\t }\n\t\n\t function matchEraName(isStrict, locale) {\n\t return locale.erasNameRegex(isStrict);\n\t }\n\t\n\t function matchEraNarrow(isStrict, locale) {\n\t return locale.erasNarrowRegex(isStrict);\n\t }\n\t\n\t function matchEraYearOrdinal(isStrict, locale) {\n\t return locale._eraYearOrdinalRegex || matchUnsigned;\n\t }\n\t\n\t function computeErasParse() {\n\t var abbrPieces = [],\n\t namePieces = [],\n\t narrowPieces = [],\n\t mixedPieces = [],\n\t i,\n\t l,\n\t eras = this.eras();\n\t\n\t for (i = 0, l = eras.length; i < l; ++i) {\n\t namePieces.push(regexEscape(eras[i].name));\n\t abbrPieces.push(regexEscape(eras[i].abbr));\n\t narrowPieces.push(regexEscape(eras[i].narrow));\n\t\n\t mixedPieces.push(regexEscape(eras[i].name));\n\t mixedPieces.push(regexEscape(eras[i].abbr));\n\t mixedPieces.push(regexEscape(eras[i].narrow));\n\t }\n\t\n\t this._erasRegex = new RegExp('^(' + mixedPieces.join('|') + ')', 'i');\n\t this._erasNameRegex = new RegExp('^(' + namePieces.join('|') + ')', 'i');\n\t this._erasAbbrRegex = new RegExp('^(' + abbrPieces.join('|') + ')', 'i');\n\t this._erasNarrowRegex = new RegExp(\n\t '^(' + narrowPieces.join('|') + ')',\n\t 'i'\n\t );\n\t }\n\t\n\t // FORMATTING\n\t\n\t addFormatToken(0, ['gg', 2], 0, function () {\n\t return this.weekYear() % 100;\n\t });\n\t\n\t addFormatToken(0, ['GG', 2], 0, function () {\n\t return this.isoWeekYear() % 100;\n\t });\n\t\n\t function addWeekYearFormatToken(token, getter) {\n\t addFormatToken(0, [token, token.length], 0, getter);\n\t }\n\t\n\t addWeekYearFormatToken('gggg', 'weekYear');\n\t addWeekYearFormatToken('ggggg', 'weekYear');\n\t addWeekYearFormatToken('GGGG', 'isoWeekYear');\n\t addWeekYearFormatToken('GGGGG', 'isoWeekYear');\n\t\n\t // ALIASES\n\t\n\t addUnitAlias('weekYear', 'gg');\n\t addUnitAlias('isoWeekYear', 'GG');\n\t\n\t // PRIORITY\n\t\n\t addUnitPriority('weekYear', 1);\n\t addUnitPriority('isoWeekYear', 1);\n\t\n\t // PARSING\n\t\n\t addRegexToken('G', matchSigned);\n\t addRegexToken('g', matchSigned);\n\t addRegexToken('GG', match1to2, match2);\n\t addRegexToken('gg', match1to2, match2);\n\t addRegexToken('GGGG', match1to4, match4);\n\t addRegexToken('gggg', match1to4, match4);\n\t addRegexToken('GGGGG', match1to6, match6);\n\t addRegexToken('ggggg', match1to6, match6);\n\t\n\t addWeekParseToken(['gggg', 'ggggg', 'GGGG', 'GGGGG'], function (\n\t input,\n\t week,\n\t config,\n\t token\n\t ) {\n\t week[token.substr(0, 2)] = toInt(input);\n\t });\n\t\n\t addWeekParseToken(['gg', 'GG'], function (input, week, config, token) {\n\t week[token] = hooks.parseTwoDigitYear(input);\n\t });\n\t\n\t // MOMENTS\n\t\n\t function getSetWeekYear(input) {\n\t return getSetWeekYearHelper.call(\n\t this,\n\t input,\n\t this.week(),\n\t this.weekday(),\n\t this.localeData()._week.dow,\n\t this.localeData()._week.doy\n\t );\n\t }\n\t\n\t function getSetISOWeekYear(input) {\n\t return getSetWeekYearHelper.call(\n\t this,\n\t input,\n\t this.isoWeek(),\n\t this.isoWeekday(),\n\t 1,\n\t 4\n\t );\n\t }\n\t\n\t function getISOWeeksInYear() {\n\t return weeksInYear(this.year(), 1, 4);\n\t }\n\t\n\t function getISOWeeksInISOWeekYear() {\n\t return weeksInYear(this.isoWeekYear(), 1, 4);\n\t }\n\t\n\t function getWeeksInYear() {\n\t var weekInfo = this.localeData()._week;\n\t return weeksInYear(this.year(), weekInfo.dow, weekInfo.doy);\n\t }\n\t\n\t function getWeeksInWeekYear() {\n\t var weekInfo = this.localeData()._week;\n\t return weeksInYear(this.weekYear(), weekInfo.dow, weekInfo.doy);\n\t }\n\t\n\t function getSetWeekYearHelper(input, week, weekday, dow, doy) {\n\t var weeksTarget;\n\t if (input == null) {\n\t return weekOfYear(this, dow, doy).year;\n\t } else {\n\t weeksTarget = weeksInYear(input, dow, doy);\n\t if (week > weeksTarget) {\n\t week = weeksTarget;\n\t }\n\t return setWeekAll.call(this, input, week, weekday, dow, doy);\n\t }\n\t }\n\t\n\t function setWeekAll(weekYear, week, weekday, dow, doy) {\n\t var dayOfYearData = dayOfYearFromWeeks(weekYear, week, weekday, dow, doy),\n\t date = createUTCDate(dayOfYearData.year, 0, dayOfYearData.dayOfYear);\n\t\n\t this.year(date.getUTCFullYear());\n\t this.month(date.getUTCMonth());\n\t this.date(date.getUTCDate());\n\t return this;\n\t }\n\t\n\t // FORMATTING\n\t\n\t addFormatToken('Q', 0, 'Qo', 'quarter');\n\t\n\t // ALIASES\n\t\n\t addUnitAlias('quarter', 'Q');\n\t\n\t // PRIORITY\n\t\n\t addUnitPriority('quarter', 7);\n\t\n\t // PARSING\n\t\n\t addRegexToken('Q', match1);\n\t addParseToken('Q', function (input, array) {\n\t array[MONTH] = (toInt(input) - 1) * 3;\n\t });\n\t\n\t // MOMENTS\n\t\n\t function getSetQuarter(input) {\n\t return input == null\n\t ? Math.ceil((this.month() + 1) / 3)\n\t : this.month((input - 1) * 3 + (this.month() % 3));\n\t }\n\t\n\t // FORMATTING\n\t\n\t addFormatToken('D', ['DD', 2], 'Do', 'date');\n\t\n\t // ALIASES\n\t\n\t addUnitAlias('date', 'D');\n\t\n\t // PRIORITY\n\t addUnitPriority('date', 9);\n\t\n\t // PARSING\n\t\n\t addRegexToken('D', match1to2);\n\t addRegexToken('DD', match1to2, match2);\n\t addRegexToken('Do', function (isStrict, locale) {\n\t // TODO: Remove \"ordinalParse\" fallback in next major release.\n\t return isStrict\n\t ? locale._dayOfMonthOrdinalParse || locale._ordinalParse\n\t : locale._dayOfMonthOrdinalParseLenient;\n\t });\n\t\n\t addParseToken(['D', 'DD'], DATE);\n\t addParseToken('Do', function (input, array) {\n\t array[DATE] = toInt(input.match(match1to2)[0]);\n\t });\n\t\n\t // MOMENTS\n\t\n\t var getSetDayOfMonth = makeGetSet('Date', true);\n\t\n\t // FORMATTING\n\t\n\t addFormatToken('DDD', ['DDDD', 3], 'DDDo', 'dayOfYear');\n\t\n\t // ALIASES\n\t\n\t addUnitAlias('dayOfYear', 'DDD');\n\t\n\t // PRIORITY\n\t addUnitPriority('dayOfYear', 4);\n\t\n\t // PARSING\n\t\n\t addRegexToken('DDD', match1to3);\n\t addRegexToken('DDDD', match3);\n\t addParseToken(['DDD', 'DDDD'], function (input, array, config) {\n\t config._dayOfYear = toInt(input);\n\t });\n\t\n\t // HELPERS\n\t\n\t // MOMENTS\n\t\n\t function getSetDayOfYear(input) {\n\t var dayOfYear =\n\t Math.round(\n\t (this.clone().startOf('day') - this.clone().startOf('year')) / 864e5\n\t ) + 1;\n\t return input == null ? dayOfYear : this.add(input - dayOfYear, 'd');\n\t }\n\t\n\t // FORMATTING\n\t\n\t addFormatToken('m', ['mm', 2], 0, 'minute');\n\t\n\t // ALIASES\n\t\n\t addUnitAlias('minute', 'm');\n\t\n\t // PRIORITY\n\t\n\t addUnitPriority('minute', 14);\n\t\n\t // PARSING\n\t\n\t addRegexToken('m', match1to2);\n\t addRegexToken('mm', match1to2, match2);\n\t addParseToken(['m', 'mm'], MINUTE);\n\t\n\t // MOMENTS\n\t\n\t var getSetMinute = makeGetSet('Minutes', false);\n\t\n\t // FORMATTING\n\t\n\t addFormatToken('s', ['ss', 2], 0, 'second');\n\t\n\t // ALIASES\n\t\n\t addUnitAlias('second', 's');\n\t\n\t // PRIORITY\n\t\n\t addUnitPriority('second', 15);\n\t\n\t // PARSING\n\t\n\t addRegexToken('s', match1to2);\n\t addRegexToken('ss', match1to2, match2);\n\t addParseToken(['s', 'ss'], SECOND);\n\t\n\t // MOMENTS\n\t\n\t var getSetSecond = makeGetSet('Seconds', false);\n\t\n\t // FORMATTING\n\t\n\t addFormatToken('S', 0, 0, function () {\n\t return ~~(this.millisecond() / 100);\n\t });\n\t\n\t addFormatToken(0, ['SS', 2], 0, function () {\n\t return ~~(this.millisecond() / 10);\n\t });\n\t\n\t addFormatToken(0, ['SSS', 3], 0, 'millisecond');\n\t addFormatToken(0, ['SSSS', 4], 0, function () {\n\t return this.millisecond() * 10;\n\t });\n\t addFormatToken(0, ['SSSSS', 5], 0, function () {\n\t return this.millisecond() * 100;\n\t });\n\t addFormatToken(0, ['SSSSSS', 6], 0, function () {\n\t return this.millisecond() * 1000;\n\t });\n\t addFormatToken(0, ['SSSSSSS', 7], 0, function () {\n\t return this.millisecond() * 10000;\n\t });\n\t addFormatToken(0, ['SSSSSSSS', 8], 0, function () {\n\t return this.millisecond() * 100000;\n\t });\n\t addFormatToken(0, ['SSSSSSSSS', 9], 0, function () {\n\t return this.millisecond() * 1000000;\n\t });\n\t\n\t // ALIASES\n\t\n\t addUnitAlias('millisecond', 'ms');\n\t\n\t // PRIORITY\n\t\n\t addUnitPriority('millisecond', 16);\n\t\n\t // PARSING\n\t\n\t addRegexToken('S', match1to3, match1);\n\t addRegexToken('SS', match1to3, match2);\n\t addRegexToken('SSS', match1to3, match3);\n\t\n\t var token, getSetMillisecond;\n\t for (token = 'SSSS'; token.length <= 9; token += 'S') {\n\t addRegexToken(token, matchUnsigned);\n\t }\n\t\n\t function parseMs(input, array) {\n\t array[MILLISECOND] = toInt(('0.' + input) * 1000);\n\t }\n\t\n\t for (token = 'S'; token.length <= 9; token += 'S') {\n\t addParseToken(token, parseMs);\n\t }\n\t\n\t getSetMillisecond = makeGetSet('Milliseconds', false);\n\t\n\t // FORMATTING\n\t\n\t addFormatToken('z', 0, 0, 'zoneAbbr');\n\t addFormatToken('zz', 0, 0, 'zoneName');\n\t\n\t // MOMENTS\n\t\n\t function getZoneAbbr() {\n\t return this._isUTC ? 'UTC' : '';\n\t }\n\t\n\t function getZoneName() {\n\t return this._isUTC ? 'Coordinated Universal Time' : '';\n\t }\n\t\n\t var proto = Moment.prototype;\n\t\n\t proto.add = add;\n\t proto.calendar = calendar$1;\n\t proto.clone = clone;\n\t proto.diff = diff;\n\t proto.endOf = endOf;\n\t proto.format = format;\n\t proto.from = from;\n\t proto.fromNow = fromNow;\n\t proto.to = to;\n\t proto.toNow = toNow;\n\t proto.get = stringGet;\n\t proto.invalidAt = invalidAt;\n\t proto.isAfter = isAfter;\n\t proto.isBefore = isBefore;\n\t proto.isBetween = isBetween;\n\t proto.isSame = isSame;\n\t proto.isSameOrAfter = isSameOrAfter;\n\t proto.isSameOrBefore = isSameOrBefore;\n\t proto.isValid = isValid$2;\n\t proto.lang = lang;\n\t proto.locale = locale;\n\t proto.localeData = localeData;\n\t proto.max = prototypeMax;\n\t proto.min = prototypeMin;\n\t proto.parsingFlags = parsingFlags;\n\t proto.set = stringSet;\n\t proto.startOf = startOf;\n\t proto.subtract = subtract;\n\t proto.toArray = toArray;\n\t proto.toObject = toObject;\n\t proto.toDate = toDate;\n\t proto.toISOString = toISOString;\n\t proto.inspect = inspect;\n\t if (typeof Symbol !== 'undefined' && Symbol.for != null) {\n\t proto[Symbol.for('nodejs.util.inspect.custom')] = function () {\n\t return 'Moment<' + this.format() + '>';\n\t };\n\t }\n\t proto.toJSON = toJSON;\n\t proto.toString = toString;\n\t proto.unix = unix;\n\t proto.valueOf = valueOf;\n\t proto.creationData = creationData;\n\t proto.eraName = getEraName;\n\t proto.eraNarrow = getEraNarrow;\n\t proto.eraAbbr = getEraAbbr;\n\t proto.eraYear = getEraYear;\n\t proto.year = getSetYear;\n\t proto.isLeapYear = getIsLeapYear;\n\t proto.weekYear = getSetWeekYear;\n\t proto.isoWeekYear = getSetISOWeekYear;\n\t proto.quarter = proto.quarters = getSetQuarter;\n\t proto.month = getSetMonth;\n\t proto.daysInMonth = getDaysInMonth;\n\t proto.week = proto.weeks = getSetWeek;\n\t proto.isoWeek = proto.isoWeeks = getSetISOWeek;\n\t proto.weeksInYear = getWeeksInYear;\n\t proto.weeksInWeekYear = getWeeksInWeekYear;\n\t proto.isoWeeksInYear = getISOWeeksInYear;\n\t proto.isoWeeksInISOWeekYear = getISOWeeksInISOWeekYear;\n\t proto.date = getSetDayOfMonth;\n\t proto.day = proto.days = getSetDayOfWeek;\n\t proto.weekday = getSetLocaleDayOfWeek;\n\t proto.isoWeekday = getSetISODayOfWeek;\n\t proto.dayOfYear = getSetDayOfYear;\n\t proto.hour = proto.hours = getSetHour;\n\t proto.minute = proto.minutes = getSetMinute;\n\t proto.second = proto.seconds = getSetSecond;\n\t proto.millisecond = proto.milliseconds = getSetMillisecond;\n\t proto.utcOffset = getSetOffset;\n\t proto.utc = setOffsetToUTC;\n\t proto.local = setOffsetToLocal;\n\t proto.parseZone = setOffsetToParsedOffset;\n\t proto.hasAlignedHourOffset = hasAlignedHourOffset;\n\t proto.isDST = isDaylightSavingTime;\n\t proto.isLocal = isLocal;\n\t proto.isUtcOffset = isUtcOffset;\n\t proto.isUtc = isUtc;\n\t proto.isUTC = isUtc;\n\t proto.zoneAbbr = getZoneAbbr;\n\t proto.zoneName = getZoneName;\n\t proto.dates = deprecate(\n\t 'dates accessor is deprecated. Use date instead.',\n\t getSetDayOfMonth\n\t );\n\t proto.months = deprecate(\n\t 'months accessor is deprecated. Use month instead',\n\t getSetMonth\n\t );\n\t proto.years = deprecate(\n\t 'years accessor is deprecated. Use year instead',\n\t getSetYear\n\t );\n\t proto.zone = deprecate(\n\t 'moment().zone is deprecated, use moment().utcOffset instead. http://momentjs.com/guides/#/warnings/zone/',\n\t getSetZone\n\t );\n\t proto.isDSTShifted = deprecate(\n\t 'isDSTShifted is deprecated. See http://momentjs.com/guides/#/warnings/dst-shifted/ for more information',\n\t isDaylightSavingTimeShifted\n\t );\n\t\n\t function createUnix(input) {\n\t return createLocal(input * 1000);\n\t }\n\t\n\t function createInZone() {\n\t return createLocal.apply(null, arguments).parseZone();\n\t }\n\t\n\t function preParsePostFormat(string) {\n\t return string;\n\t }\n\t\n\t var proto$1 = Locale.prototype;\n\t\n\t proto$1.calendar = calendar;\n\t proto$1.longDateFormat = longDateFormat;\n\t proto$1.invalidDate = invalidDate;\n\t proto$1.ordinal = ordinal;\n\t proto$1.preparse = preParsePostFormat;\n\t proto$1.postformat = preParsePostFormat;\n\t proto$1.relativeTime = relativeTime;\n\t proto$1.pastFuture = pastFuture;\n\t proto$1.set = set;\n\t proto$1.eras = localeEras;\n\t proto$1.erasParse = localeErasParse;\n\t proto$1.erasConvertYear = localeErasConvertYear;\n\t proto$1.erasAbbrRegex = erasAbbrRegex;\n\t proto$1.erasNameRegex = erasNameRegex;\n\t proto$1.erasNarrowRegex = erasNarrowRegex;\n\t\n\t proto$1.months = localeMonths;\n\t proto$1.monthsShort = localeMonthsShort;\n\t proto$1.monthsParse = localeMonthsParse;\n\t proto$1.monthsRegex = monthsRegex;\n\t proto$1.monthsShortRegex = monthsShortRegex;\n\t proto$1.week = localeWeek;\n\t proto$1.firstDayOfYear = localeFirstDayOfYear;\n\t proto$1.firstDayOfWeek = localeFirstDayOfWeek;\n\t\n\t proto$1.weekdays = localeWeekdays;\n\t proto$1.weekdaysMin = localeWeekdaysMin;\n\t proto$1.weekdaysShort = localeWeekdaysShort;\n\t proto$1.weekdaysParse = localeWeekdaysParse;\n\t\n\t proto$1.weekdaysRegex = weekdaysRegex;\n\t proto$1.weekdaysShortRegex = weekdaysShortRegex;\n\t proto$1.weekdaysMinRegex = weekdaysMinRegex;\n\t\n\t proto$1.isPM = localeIsPM;\n\t proto$1.meridiem = localeMeridiem;\n\t\n\t function get$1(format, index, field, setter) {\n\t var locale = getLocale(),\n\t utc = createUTC().set(setter, index);\n\t return locale[field](utc, format);\n\t }\n\t\n\t function listMonthsImpl(format, index, field) {\n\t if (isNumber(format)) {\n\t index = format;\n\t format = undefined;\n\t }\n\t\n\t format = format || '';\n\t\n\t if (index != null) {\n\t return get$1(format, index, field, 'month');\n\t }\n\t\n\t var i,\n\t out = [];\n\t for (i = 0; i < 12; i++) {\n\t out[i] = get$1(format, i, field, 'month');\n\t }\n\t return out;\n\t }\n\t\n\t // ()\n\t // (5)\n\t // (fmt, 5)\n\t // (fmt)\n\t // (true)\n\t // (true, 5)\n\t // (true, fmt, 5)\n\t // (true, fmt)\n\t function listWeekdaysImpl(localeSorted, format, index, field) {\n\t if (typeof localeSorted === 'boolean') {\n\t if (isNumber(format)) {\n\t index = format;\n\t format = undefined;\n\t }\n\t\n\t format = format || '';\n\t } else {\n\t format = localeSorted;\n\t index = format;\n\t localeSorted = false;\n\t\n\t if (isNumber(format)) {\n\t index = format;\n\t format = undefined;\n\t }\n\t\n\t format = format || '';\n\t }\n\t\n\t var locale = getLocale(),\n\t shift = localeSorted ? locale._week.dow : 0,\n\t i,\n\t out = [];\n\t\n\t if (index != null) {\n\t return get$1(format, (index + shift) % 7, field, 'day');\n\t }\n\t\n\t for (i = 0; i < 7; i++) {\n\t out[i] = get$1(format, (i + shift) % 7, field, 'day');\n\t }\n\t return out;\n\t }\n\t\n\t function listMonths(format, index) {\n\t return listMonthsImpl(format, index, 'months');\n\t }\n\t\n\t function listMonthsShort(format, index) {\n\t return listMonthsImpl(format, index, 'monthsShort');\n\t }\n\t\n\t function listWeekdays(localeSorted, format, index) {\n\t return listWeekdaysImpl(localeSorted, format, index, 'weekdays');\n\t }\n\t\n\t function listWeekdaysShort(localeSorted, format, index) {\n\t return listWeekdaysImpl(localeSorted, format, index, 'weekdaysShort');\n\t }\n\t\n\t function listWeekdaysMin(localeSorted, format, index) {\n\t return listWeekdaysImpl(localeSorted, format, index, 'weekdaysMin');\n\t }\n\t\n\t getSetGlobalLocale('en', {\n\t eras: [\n\t {\n\t since: '0001-01-01',\n\t until: +Infinity,\n\t offset: 1,\n\t name: 'Anno Domini',\n\t narrow: 'AD',\n\t abbr: 'AD',\n\t },\n\t {\n\t since: '0000-12-31',\n\t until: -Infinity,\n\t offset: 1,\n\t name: 'Before Christ',\n\t narrow: 'BC',\n\t abbr: 'BC',\n\t },\n\t ],\n\t dayOfMonthOrdinalParse: /\\d{1,2}(th|st|nd|rd)/,\n\t ordinal: function (number) {\n\t var b = number % 10,\n\t output =\n\t toInt((number % 100) / 10) === 1\n\t ? 'th'\n\t : b === 1\n\t ? 'st'\n\t : b === 2\n\t ? 'nd'\n\t : b === 3\n\t ? 'rd'\n\t : 'th';\n\t return number + output;\n\t },\n\t });\n\t\n\t // Side effect imports\n\t\n\t hooks.lang = deprecate(\n\t 'moment.lang is deprecated. Use moment.locale instead.',\n\t getSetGlobalLocale\n\t );\n\t hooks.langData = deprecate(\n\t 'moment.langData is deprecated. Use moment.localeData instead.',\n\t getLocale\n\t );\n\t\n\t var mathAbs = Math.abs;\n\t\n\t function abs() {\n\t var data = this._data;\n\t\n\t this._milliseconds = mathAbs(this._milliseconds);\n\t this._days = mathAbs(this._days);\n\t this._months = mathAbs(this._months);\n\t\n\t data.milliseconds = mathAbs(data.milliseconds);\n\t data.seconds = mathAbs(data.seconds);\n\t data.minutes = mathAbs(data.minutes);\n\t data.hours = mathAbs(data.hours);\n\t data.months = mathAbs(data.months);\n\t data.years = mathAbs(data.years);\n\t\n\t return this;\n\t }\n\t\n\t function addSubtract$1(duration, input, value, direction) {\n\t var other = createDuration(input, value);\n\t\n\t duration._milliseconds += direction * other._milliseconds;\n\t duration._days += direction * other._days;\n\t duration._months += direction * other._months;\n\t\n\t return duration._bubble();\n\t }\n\t\n\t // supports only 2.0-style add(1, 's') or add(duration)\n\t function add$1(input, value) {\n\t return addSubtract$1(this, input, value, 1);\n\t }\n\t\n\t // supports only 2.0-style subtract(1, 's') or subtract(duration)\n\t function subtract$1(input, value) {\n\t return addSubtract$1(this, input, value, -1);\n\t }\n\t\n\t function absCeil(number) {\n\t if (number < 0) {\n\t return Math.floor(number);\n\t } else {\n\t return Math.ceil(number);\n\t }\n\t }\n\t\n\t function bubble() {\n\t var milliseconds = this._milliseconds,\n\t days = this._days,\n\t months = this._months,\n\t data = this._data,\n\t seconds,\n\t minutes,\n\t hours,\n\t years,\n\t monthsFromDays;\n\t\n\t // if we have a mix of positive and negative values, bubble down first\n\t // check: https://github.com/moment/moment/issues/2166\n\t if (\n\t !(\n\t (milliseconds >= 0 && days >= 0 && months >= 0) ||\n\t (milliseconds <= 0 && days <= 0 && months <= 0)\n\t )\n\t ) {\n\t milliseconds += absCeil(monthsToDays(months) + days) * 864e5;\n\t days = 0;\n\t months = 0;\n\t }\n\t\n\t // The following code bubbles up values, see the tests for\n\t // examples of what that means.\n\t data.milliseconds = milliseconds % 1000;\n\t\n\t seconds = absFloor(milliseconds / 1000);\n\t data.seconds = seconds % 60;\n\t\n\t minutes = absFloor(seconds / 60);\n\t data.minutes = minutes % 60;\n\t\n\t hours = absFloor(minutes / 60);\n\t data.hours = hours % 24;\n\t\n\t days += absFloor(hours / 24);\n\t\n\t // convert days to months\n\t monthsFromDays = absFloor(daysToMonths(days));\n\t months += monthsFromDays;\n\t days -= absCeil(monthsToDays(monthsFromDays));\n\t\n\t // 12 months -> 1 year\n\t years = absFloor(months / 12);\n\t months %= 12;\n\t\n\t data.days = days;\n\t data.months = months;\n\t data.years = years;\n\t\n\t return this;\n\t }\n\t\n\t function daysToMonths(days) {\n\t // 400 years have 146097 days (taking into account leap year rules)\n\t // 400 years have 12 months === 4800\n\t return (days * 4800) / 146097;\n\t }\n\t\n\t function monthsToDays(months) {\n\t // the reverse of daysToMonths\n\t return (months * 146097) / 4800;\n\t }\n\t\n\t function as(units) {\n\t if (!this.isValid()) {\n\t return NaN;\n\t }\n\t var days,\n\t months,\n\t milliseconds = this._milliseconds;\n\t\n\t units = normalizeUnits(units);\n\t\n\t if (units === 'month' || units === 'quarter' || units === 'year') {\n\t days = this._days + milliseconds / 864e5;\n\t months = this._months + daysToMonths(days);\n\t switch (units) {\n\t case 'month':\n\t return months;\n\t case 'quarter':\n\t return months / 3;\n\t case 'year':\n\t return months / 12;\n\t }\n\t } else {\n\t // handle milliseconds separately because of floating point math errors (issue #1867)\n\t days = this._days + Math.round(monthsToDays(this._months));\n\t switch (units) {\n\t case 'week':\n\t return days / 7 + milliseconds / 6048e5;\n\t case 'day':\n\t return days + milliseconds / 864e5;\n\t case 'hour':\n\t return days * 24 + milliseconds / 36e5;\n\t case 'minute':\n\t return days * 1440 + milliseconds / 6e4;\n\t case 'second':\n\t return days * 86400 + milliseconds / 1000;\n\t // Math.floor prevents floating point math errors here\n\t case 'millisecond':\n\t return Math.floor(days * 864e5) + milliseconds;\n\t default:\n\t throw new Error('Unknown unit ' + units);\n\t }\n\t }\n\t }\n\t\n\t // TODO: Use this.as('ms')?\n\t function valueOf$1() {\n\t if (!this.isValid()) {\n\t return NaN;\n\t }\n\t return (\n\t this._milliseconds +\n\t this._days * 864e5 +\n\t (this._months % 12) * 2592e6 +\n\t toInt(this._months / 12) * 31536e6\n\t );\n\t }\n\t\n\t function makeAs(alias) {\n\t return function () {\n\t return this.as(alias);\n\t };\n\t }\n\t\n\t var asMilliseconds = makeAs('ms'),\n\t asSeconds = makeAs('s'),\n\t asMinutes = makeAs('m'),\n\t asHours = makeAs('h'),\n\t asDays = makeAs('d'),\n\t asWeeks = makeAs('w'),\n\t asMonths = makeAs('M'),\n\t asQuarters = makeAs('Q'),\n\t asYears = makeAs('y');\n\t\n\t function clone$1() {\n\t return createDuration(this);\n\t }\n\t\n\t function get$2(units) {\n\t units = normalizeUnits(units);\n\t return this.isValid() ? this[units + 's']() : NaN;\n\t }\n\t\n\t function makeGetter(name) {\n\t return function () {\n\t return this.isValid() ? this._data[name] : NaN;\n\t };\n\t }\n\t\n\t var milliseconds = makeGetter('milliseconds'),\n\t seconds = makeGetter('seconds'),\n\t minutes = makeGetter('minutes'),\n\t hours = makeGetter('hours'),\n\t days = makeGetter('days'),\n\t months = makeGetter('months'),\n\t years = makeGetter('years');\n\t\n\t function weeks() {\n\t return absFloor(this.days() / 7);\n\t }\n\t\n\t var round = Math.round,\n\t thresholds = {\n\t ss: 44, // a few seconds to seconds\n\t s: 45, // seconds to minute\n\t m: 45, // minutes to hour\n\t h: 22, // hours to day\n\t d: 26, // days to month/week\n\t w: null, // weeks to month\n\t M: 11, // months to year\n\t };\n\t\n\t // helper function for moment.fn.from, moment.fn.fromNow, and moment.duration.fn.humanize\n\t function substituteTimeAgo(string, number, withoutSuffix, isFuture, locale) {\n\t return locale.relativeTime(number || 1, !!withoutSuffix, string, isFuture);\n\t }\n\t\n\t function relativeTime$1(posNegDuration, withoutSuffix, thresholds, locale) {\n\t var duration = createDuration(posNegDuration).abs(),\n\t seconds = round(duration.as('s')),\n\t minutes = round(duration.as('m')),\n\t hours = round(duration.as('h')),\n\t days = round(duration.as('d')),\n\t months = round(duration.as('M')),\n\t weeks = round(duration.as('w')),\n\t years = round(duration.as('y')),\n\t a =\n\t (seconds <= thresholds.ss && ['s', seconds]) ||\n\t (seconds < thresholds.s && ['ss', seconds]) ||\n\t (minutes <= 1 && ['m']) ||\n\t (minutes < thresholds.m && ['mm', minutes]) ||\n\t (hours <= 1 && ['h']) ||\n\t (hours < thresholds.h && ['hh', hours]) ||\n\t (days <= 1 && ['d']) ||\n\t (days < thresholds.d && ['dd', days]);\n\t\n\t if (thresholds.w != null) {\n\t a =\n\t a ||\n\t (weeks <= 1 && ['w']) ||\n\t (weeks < thresholds.w && ['ww', weeks]);\n\t }\n\t a = a ||\n\t (months <= 1 && ['M']) ||\n\t (months < thresholds.M && ['MM', months]) ||\n\t (years <= 1 && ['y']) || ['yy', years];\n\t\n\t a[2] = withoutSuffix;\n\t a[3] = +posNegDuration > 0;\n\t a[4] = locale;\n\t return substituteTimeAgo.apply(null, a);\n\t }\n\t\n\t // This function allows you to set the rounding function for relative time strings\n\t function getSetRelativeTimeRounding(roundingFunction) {\n\t if (roundingFunction === undefined) {\n\t return round;\n\t }\n\t if (typeof roundingFunction === 'function') {\n\t round = roundingFunction;\n\t return true;\n\t }\n\t return false;\n\t }\n\t\n\t // This function allows you to set a threshold for relative time strings\n\t function getSetRelativeTimeThreshold(threshold, limit) {\n\t if (thresholds[threshold] === undefined) {\n\t return false;\n\t }\n\t if (limit === undefined) {\n\t return thresholds[threshold];\n\t }\n\t thresholds[threshold] = limit;\n\t if (threshold === 's') {\n\t thresholds.ss = limit - 1;\n\t }\n\t return true;\n\t }\n\t\n\t function humanize(argWithSuffix, argThresholds) {\n\t if (!this.isValid()) {\n\t return this.localeData().invalidDate();\n\t }\n\t\n\t var withSuffix = false,\n\t th = thresholds,\n\t locale,\n\t output;\n\t\n\t if (typeof argWithSuffix === 'object') {\n\t argThresholds = argWithSuffix;\n\t argWithSuffix = false;\n\t }\n\t if (typeof argWithSuffix === 'boolean') {\n\t withSuffix = argWithSuffix;\n\t }\n\t if (typeof argThresholds === 'object') {\n\t th = Object.assign({}, thresholds, argThresholds);\n\t if (argThresholds.s != null && argThresholds.ss == null) {\n\t th.ss = argThresholds.s - 1;\n\t }\n\t }\n\t\n\t locale = this.localeData();\n\t output = relativeTime$1(this, !withSuffix, th, locale);\n\t\n\t if (withSuffix) {\n\t output = locale.pastFuture(+this, output);\n\t }\n\t\n\t return locale.postformat(output);\n\t }\n\t\n\t var abs$1 = Math.abs;\n\t\n\t function sign(x) {\n\t return (x > 0) - (x < 0) || +x;\n\t }\n\t\n\t function toISOString$1() {\n\t // for ISO strings we do not use the normal bubbling rules:\n\t // * milliseconds bubble up until they become hours\n\t // * days do not bubble at all\n\t // * months bubble up until they become years\n\t // This is because there is no context-free conversion between hours and days\n\t // (think of clock changes)\n\t // and also not between days and months (28-31 days per month)\n\t if (!this.isValid()) {\n\t return this.localeData().invalidDate();\n\t }\n\t\n\t var seconds = abs$1(this._milliseconds) / 1000,\n\t days = abs$1(this._days),\n\t months = abs$1(this._months),\n\t minutes,\n\t hours,\n\t years,\n\t s,\n\t total = this.asSeconds(),\n\t totalSign,\n\t ymSign,\n\t daysSign,\n\t hmsSign;\n\t\n\t if (!total) {\n\t // this is the same as C#'s (Noda) and python (isodate)...\n\t // but not other JS (goog.date)\n\t return 'P0D';\n\t }\n\t\n\t // 3600 seconds -> 60 minutes -> 1 hour\n\t minutes = absFloor(seconds / 60);\n\t hours = absFloor(minutes / 60);\n\t seconds %= 60;\n\t minutes %= 60;\n\t\n\t // 12 months -> 1 year\n\t years = absFloor(months / 12);\n\t months %= 12;\n\t\n\t // inspired by https://github.com/dordille/moment-isoduration/blob/master/moment.isoduration.js\n\t s = seconds ? seconds.toFixed(3).replace(/\\.?0+$/, '') : '';\n\t\n\t totalSign = total < 0 ? '-' : '';\n\t ymSign = sign(this._months) !== sign(total) ? '-' : '';\n\t daysSign = sign(this._days) !== sign(total) ? '-' : '';\n\t hmsSign = sign(this._milliseconds) !== sign(total) ? '-' : '';\n\t\n\t return (\n\t totalSign +\n\t 'P' +\n\t (years ? ymSign + years + 'Y' : '') +\n\t (months ? ymSign + months + 'M' : '') +\n\t (days ? daysSign + days + 'D' : '') +\n\t (hours || minutes || seconds ? 'T' : '') +\n\t (hours ? hmsSign + hours + 'H' : '') +\n\t (minutes ? hmsSign + minutes + 'M' : '') +\n\t (seconds ? hmsSign + s + 'S' : '')\n\t );\n\t }\n\t\n\t var proto$2 = Duration.prototype;\n\t\n\t proto$2.isValid = isValid$1;\n\t proto$2.abs = abs;\n\t proto$2.add = add$1;\n\t proto$2.subtract = subtract$1;\n\t proto$2.as = as;\n\t proto$2.asMilliseconds = asMilliseconds;\n\t proto$2.asSeconds = asSeconds;\n\t proto$2.asMinutes = asMinutes;\n\t proto$2.asHours = asHours;\n\t proto$2.asDays = asDays;\n\t proto$2.asWeeks = asWeeks;\n\t proto$2.asMonths = asMonths;\n\t proto$2.asQuarters = asQuarters;\n\t proto$2.asYears = asYears;\n\t proto$2.valueOf = valueOf$1;\n\t proto$2._bubble = bubble;\n\t proto$2.clone = clone$1;\n\t proto$2.get = get$2;\n\t proto$2.milliseconds = milliseconds;\n\t proto$2.seconds = seconds;\n\t proto$2.minutes = minutes;\n\t proto$2.hours = hours;\n\t proto$2.days = days;\n\t proto$2.weeks = weeks;\n\t proto$2.months = months;\n\t proto$2.years = years;\n\t proto$2.humanize = humanize;\n\t proto$2.toISOString = toISOString$1;\n\t proto$2.toString = toISOString$1;\n\t proto$2.toJSON = toISOString$1;\n\t proto$2.locale = locale;\n\t proto$2.localeData = localeData;\n\t\n\t proto$2.toIsoString = deprecate(\n\t 'toIsoString() is deprecated. Please use toISOString() instead (notice the capitals)',\n\t toISOString$1\n\t );\n\t proto$2.lang = lang;\n\t\n\t // FORMATTING\n\t\n\t addFormatToken('X', 0, 0, 'unix');\n\t addFormatToken('x', 0, 0, 'valueOf');\n\t\n\t // PARSING\n\t\n\t addRegexToken('x', matchSigned);\n\t addRegexToken('X', matchTimestamp);\n\t addParseToken('X', function (input, array, config) {\n\t config._d = new Date(parseFloat(input) * 1000);\n\t });\n\t addParseToken('x', function (input, array, config) {\n\t config._d = new Date(toInt(input));\n\t });\n\t\n\t //! moment.js\n\t\n\t hooks.version = '2.29.1';\n\t\n\t setHookCallback(createLocal);\n\t\n\t hooks.fn = proto;\n\t hooks.min = min;\n\t hooks.max = max;\n\t hooks.now = now;\n\t hooks.utc = createUTC;\n\t hooks.unix = createUnix;\n\t hooks.months = listMonths;\n\t hooks.isDate = isDate;\n\t hooks.locale = getSetGlobalLocale;\n\t hooks.invalid = createInvalid;\n\t hooks.duration = createDuration;\n\t hooks.isMoment = isMoment;\n\t hooks.weekdays = listWeekdays;\n\t hooks.parseZone = createInZone;\n\t hooks.localeData = getLocale;\n\t hooks.isDuration = isDuration;\n\t hooks.monthsShort = listMonthsShort;\n\t hooks.weekdaysMin = listWeekdaysMin;\n\t hooks.defineLocale = defineLocale;\n\t hooks.updateLocale = updateLocale;\n\t hooks.locales = listLocales;\n\t hooks.weekdaysShort = listWeekdaysShort;\n\t hooks.normalizeUnits = normalizeUnits;\n\t hooks.relativeTimeRounding = getSetRelativeTimeRounding;\n\t hooks.relativeTimeThreshold = getSetRelativeTimeThreshold;\n\t hooks.calendarFormat = getCalendarFormat;\n\t hooks.prototype = proto;\n\t\n\t // currently HTML5 input type only supports 24-hour formats\n\t hooks.HTML5_FMT = {\n\t DATETIME_LOCAL: 'YYYY-MM-DDTHH:mm', // \n\t DATETIME_LOCAL_SECONDS: 'YYYY-MM-DDTHH:mm:ss', // \n\t DATETIME_LOCAL_MS: 'YYYY-MM-DDTHH:mm:ss.SSS', // \n\t DATE: 'YYYY-MM-DD', // \n\t TIME: 'HH:mm', // \n\t TIME_SECONDS: 'HH:mm:ss', // \n\t TIME_MS: 'HH:mm:ss.SSS', // \n\t WEEK: 'GGGG-[W]WW', // \n\t MONTH: 'YYYY-MM', // \n\t };\n\t\n\t return hooks;\n\t\n\t})));\n\t\n\t/* WEBPACK VAR INJECTION */}.call(exports, __webpack_require__(7), __webpack_require__(94)(module)))\n\n/***/ }),\n\n/***/ 94:\n/***/ (function(module, exports) {\n\n\tmodule.exports = function(module) {\r\n\t\tif(!module.webpackPolyfill) {\r\n\t\t\tmodule.deprecate = function() {};\r\n\t\t\tmodule.paths = [];\r\n\t\t\t// module.parent = undefined by default\r\n\t\t\tmodule.children = [];\r\n\t\t\tmodule.webpackPolyfill = 1;\r\n\t\t}\r\n\t\treturn module;\r\n\t}\r\n\n\n/***/ }),\n\n/***/ 286:\n/***/ (function(module, exports, __webpack_require__) {\n\n\t//! moment.js locale configuration\n\t//! locale : Japanese [ja]\n\t//! author : LI Long : https://github.com/baryon\n\t\n\t;(function (global, factory) {\n\t true ? factory(__webpack_require__(1)) :\n\t typeof define === 'function' && define.amd ? define(['../moment'], factory) :\n\t factory(global.moment)\n\t}(this, (function (moment) { 'use strict';\n\t\n\t //! moment.js locale configuration\n\t\n\t var ja = moment.defineLocale('ja', {\n\t eras: [\n\t {\n\t since: '2019-05-01',\n\t offset: 1,\n\t name: '令和',\n\t narrow: '㋿',\n\t abbr: 'R',\n\t },\n\t {\n\t since: '1989-01-08',\n\t until: '2019-04-30',\n\t offset: 1,\n\t name: '平成',\n\t narrow: '㍻',\n\t abbr: 'H',\n\t },\n\t {\n\t since: '1926-12-25',\n\t until: '1989-01-07',\n\t offset: 1,\n\t name: '昭和',\n\t narrow: '㍼',\n\t abbr: 'S',\n\t },\n\t {\n\t since: '1912-07-30',\n\t until: '1926-12-24',\n\t offset: 1,\n\t name: '大正',\n\t narrow: '㍽',\n\t abbr: 'T',\n\t },\n\t {\n\t since: '1873-01-01',\n\t until: '1912-07-29',\n\t offset: 6,\n\t name: '明治',\n\t narrow: '㍾',\n\t abbr: 'M',\n\t },\n\t {\n\t since: '0001-01-01',\n\t until: '1873-12-31',\n\t offset: 1,\n\t name: '西暦',\n\t narrow: 'AD',\n\t abbr: 'AD',\n\t },\n\t {\n\t since: '0000-12-31',\n\t until: -Infinity,\n\t offset: 1,\n\t name: '紀元前',\n\t narrow: 'BC',\n\t abbr: 'BC',\n\t },\n\t ],\n\t eraYearOrdinalRegex: /(元|\\d+)年/,\n\t eraYearOrdinalParse: function (input, match) {\n\t return match[1] === '元' ? 1 : parseInt(match[1] || input, 10);\n\t },\n\t months: '1月_2月_3月_4月_5月_6月_7月_8月_9月_10月_11月_12月'.split('_'),\n\t monthsShort: '1月_2月_3月_4月_5月_6月_7月_8月_9月_10月_11月_12月'.split(\n\t '_'\n\t ),\n\t weekdays: '日曜日_月曜日_火曜日_水曜日_木曜日_金曜日_土曜日'.split('_'),\n\t weekdaysShort: '日_月_火_水_木_金_土'.split('_'),\n\t weekdaysMin: '日_月_火_水_木_金_土'.split('_'),\n\t longDateFormat: {\n\t LT: 'HH:mm',\n\t LTS: 'HH:mm:ss',\n\t L: 'YYYY/MM/DD',\n\t LL: 'YYYY年M月D日',\n\t LLL: 'YYYY年M月D日 HH:mm',\n\t LLLL: 'YYYY年M月D日 dddd HH:mm',\n\t l: 'YYYY/MM/DD',\n\t ll: 'YYYY年M月D日',\n\t lll: 'YYYY年M月D日 HH:mm',\n\t llll: 'YYYY年M月D日(ddd) HH:mm',\n\t },\n\t meridiemParse: /午前|午後/i,\n\t isPM: function (input) {\n\t return input === '午後';\n\t },\n\t meridiem: function (hour, minute, isLower) {\n\t if (hour < 12) {\n\t return '午前';\n\t } else {\n\t return '午後';\n\t }\n\t },\n\t calendar: {\n\t sameDay: '[今日] LT',\n\t nextDay: '[明日] LT',\n\t nextWeek: function (now) {\n\t if (now.week() !== this.week()) {\n\t return '[来週]dddd LT';\n\t } else {\n\t return 'dddd LT';\n\t }\n\t },\n\t lastDay: '[昨日] LT',\n\t lastWeek: function (now) {\n\t if (this.week() !== now.week()) {\n\t return '[先週]dddd LT';\n\t } else {\n\t return 'dddd LT';\n\t }\n\t },\n\t sameElse: 'L',\n\t },\n\t dayOfMonthOrdinalParse: /\\d{1,2}日/,\n\t ordinal: function (number, period) {\n\t switch (period) {\n\t case 'y':\n\t return number === 1 ? '元年' : number + '年';\n\t case 'd':\n\t case 'D':\n\t case 'DDD':\n\t return number + '日';\n\t default:\n\t return number;\n\t }\n\t },\n\t relativeTime: {\n\t future: '%s後',\n\t past: '%s前',\n\t s: '数秒',\n\t ss: '%d秒',\n\t m: '1分',\n\t mm: '%d分',\n\t h: '1時間',\n\t hh: '%d時間',\n\t d: '1日',\n\t dd: '%d日',\n\t M: '1ヶ月',\n\t MM: '%dヶ月',\n\t y: '1年',\n\t yy: '%d年',\n\t },\n\t });\n\t\n\t return ja;\n\t\n\t})));\n\n\n/***/ }),\n\n/***/ 306:\n/***/ (function(module, exports, __webpack_require__) {\n\n\t//! moment.js locale configuration\n\t//! locale : Afrikaans [af]\n\t//! author : Werner Mollentze : https://github.com/wernerm\n\t\n\t;(function (global, factory) {\n\t true ? factory(__webpack_require__(1)) :\n\t typeof define === 'function' && define.amd ? define(['../moment'], factory) :\n\t factory(global.moment)\n\t}(this, (function (moment) { 'use strict';\n\t\n\t //! moment.js locale configuration\n\t\n\t var af = moment.defineLocale('af', {\n\t months: 'Januarie_Februarie_Maart_April_Mei_Junie_Julie_Augustus_September_Oktober_November_Desember'.split(\n\t '_'\n\t ),\n\t monthsShort: 'Jan_Feb_Mrt_Apr_Mei_Jun_Jul_Aug_Sep_Okt_Nov_Des'.split('_'),\n\t weekdays: 'Sondag_Maandag_Dinsdag_Woensdag_Donderdag_Vrydag_Saterdag'.split(\n\t '_'\n\t ),\n\t weekdaysShort: 'Son_Maa_Din_Woe_Don_Vry_Sat'.split('_'),\n\t weekdaysMin: 'So_Ma_Di_Wo_Do_Vr_Sa'.split('_'),\n\t meridiemParse: /vm|nm/i,\n\t isPM: function (input) {\n\t return /^nm$/i.test(input);\n\t },\n\t meridiem: function (hours, minutes, isLower) {\n\t if (hours < 12) {\n\t return isLower ? 'vm' : 'VM';\n\t } else {\n\t return isLower ? 'nm' : 'NM';\n\t }\n\t },\n\t longDateFormat: {\n\t LT: 'HH:mm',\n\t LTS: 'HH:mm:ss',\n\t L: 'DD/MM/YYYY',\n\t LL: 'D MMMM YYYY',\n\t LLL: 'D MMMM YYYY HH:mm',\n\t LLLL: 'dddd, D MMMM YYYY HH:mm',\n\t },\n\t calendar: {\n\t sameDay: '[Vandag om] LT',\n\t nextDay: '[Môre om] LT',\n\t nextWeek: 'dddd [om] LT',\n\t lastDay: '[Gister om] LT',\n\t lastWeek: '[Laas] dddd [om] LT',\n\t sameElse: 'L',\n\t },\n\t relativeTime: {\n\t future: 'oor %s',\n\t past: '%s gelede',\n\t s: \"'n paar sekondes\",\n\t ss: '%d sekondes',\n\t m: \"'n minuut\",\n\t mm: '%d minute',\n\t h: \"'n uur\",\n\t hh: '%d ure',\n\t d: \"'n dag\",\n\t dd: '%d dae',\n\t M: \"'n maand\",\n\t MM: '%d maande',\n\t y: \"'n jaar\",\n\t yy: '%d jaar',\n\t },\n\t dayOfMonthOrdinalParse: /\\d{1,2}(ste|de)/,\n\t ordinal: function (number) {\n\t return (\n\t number +\n\t (number === 1 || number === 8 || number >= 20 ? 'ste' : 'de')\n\t ); // Thanks to Joris Röling : https://github.com/jjupiter\n\t },\n\t week: {\n\t dow: 1, // Maandag is die eerste dag van die week.\n\t doy: 4, // Die week wat die 4de Januarie bevat is die eerste week van die jaar.\n\t },\n\t });\n\t\n\t return af;\n\t\n\t})));\n\n\n/***/ }),\n\n/***/ 307:\n/***/ (function(module, exports, __webpack_require__) {\n\n\t//! moment.js locale configuration\n\t//! locale : Arabic (Algeria) [ar-dz]\n\t//! author : Amine Roukh: https://github.com/Amine27\n\t//! author : Abdel Said: https://github.com/abdelsaid\n\t//! author : Ahmed Elkhatib\n\t//! author : forabi https://github.com/forabi\n\t//! author : Noureddine LOUAHEDJ : https://github.com/noureddinem\n\t\n\t;(function (global, factory) {\n\t true ? factory(__webpack_require__(1)) :\n\t typeof define === 'function' && define.amd ? define(['../moment'], factory) :\n\t factory(global.moment)\n\t}(this, (function (moment) { 'use strict';\n\t\n\t //! moment.js locale configuration\n\t\n\t var pluralForm = function (n) {\n\t return n === 0\n\t ? 0\n\t : n === 1\n\t ? 1\n\t : n === 2\n\t ? 2\n\t : n % 100 >= 3 && n % 100 <= 10\n\t ? 3\n\t : n % 100 >= 11\n\t ? 4\n\t : 5;\n\t },\n\t plurals = {\n\t s: [\n\t 'أقل من ثانية',\n\t 'ثانية واحدة',\n\t ['ثانيتان', 'ثانيتين'],\n\t '%d ثوان',\n\t '%d ثانية',\n\t '%d ثانية',\n\t ],\n\t m: [\n\t 'أقل من دقيقة',\n\t 'دقيقة واحدة',\n\t ['دقيقتان', 'دقيقتين'],\n\t '%d دقائق',\n\t '%d دقيقة',\n\t '%d دقيقة',\n\t ],\n\t h: [\n\t 'أقل من ساعة',\n\t 'ساعة واحدة',\n\t ['ساعتان', 'ساعتين'],\n\t '%d ساعات',\n\t '%d ساعة',\n\t '%d ساعة',\n\t ],\n\t d: [\n\t 'أقل من يوم',\n\t 'يوم واحد',\n\t ['يومان', 'يومين'],\n\t '%d أيام',\n\t '%d يومًا',\n\t '%d يوم',\n\t ],\n\t M: [\n\t 'أقل من شهر',\n\t 'شهر واحد',\n\t ['شهران', 'شهرين'],\n\t '%d أشهر',\n\t '%d شهرا',\n\t '%d شهر',\n\t ],\n\t y: [\n\t 'أقل من عام',\n\t 'عام واحد',\n\t ['عامان', 'عامين'],\n\t '%d أعوام',\n\t '%d عامًا',\n\t '%d عام',\n\t ],\n\t },\n\t pluralize = function (u) {\n\t return function (number, withoutSuffix, string, isFuture) {\n\t var f = pluralForm(number),\n\t str = plurals[u][pluralForm(number)];\n\t if (f === 2) {\n\t str = str[withoutSuffix ? 0 : 1];\n\t }\n\t return str.replace(/%d/i, number);\n\t };\n\t },\n\t months = [\n\t 'جانفي',\n\t 'فيفري',\n\t 'مارس',\n\t 'أفريل',\n\t 'ماي',\n\t 'جوان',\n\t 'جويلية',\n\t 'أوت',\n\t 'سبتمبر',\n\t 'أكتوبر',\n\t 'نوفمبر',\n\t 'ديسمبر',\n\t ];\n\t\n\t var arDz = moment.defineLocale('ar-dz', {\n\t months: months,\n\t monthsShort: months,\n\t weekdays: 'الأحد_الإثنين_الثلاثاء_الأربعاء_الخميس_الجمعة_السبت'.split('_'),\n\t weekdaysShort: 'أحد_إثنين_ثلاثاء_أربعاء_خميس_جمعة_سبت'.split('_'),\n\t weekdaysMin: 'ح_ن_ث_ر_خ_ج_س'.split('_'),\n\t weekdaysParseExact: true,\n\t longDateFormat: {\n\t LT: 'HH:mm',\n\t LTS: 'HH:mm:ss',\n\t L: 'D/\\u200FM/\\u200FYYYY',\n\t LL: 'D MMMM YYYY',\n\t LLL: 'D MMMM YYYY HH:mm',\n\t LLLL: 'dddd D MMMM YYYY HH:mm',\n\t },\n\t meridiemParse: /ص|م/,\n\t isPM: function (input) {\n\t return 'م' === input;\n\t },\n\t meridiem: function (hour, minute, isLower) {\n\t if (hour < 12) {\n\t return 'ص';\n\t } else {\n\t return 'م';\n\t }\n\t },\n\t calendar: {\n\t sameDay: '[اليوم عند الساعة] LT',\n\t nextDay: '[غدًا عند الساعة] LT',\n\t nextWeek: 'dddd [عند الساعة] LT',\n\t lastDay: '[أمس عند الساعة] LT',\n\t lastWeek: 'dddd [عند الساعة] LT',\n\t sameElse: 'L',\n\t },\n\t relativeTime: {\n\t future: 'بعد %s',\n\t past: 'منذ %s',\n\t s: pluralize('s'),\n\t ss: pluralize('s'),\n\t m: pluralize('m'),\n\t mm: pluralize('m'),\n\t h: pluralize('h'),\n\t hh: pluralize('h'),\n\t d: pluralize('d'),\n\t dd: pluralize('d'),\n\t M: pluralize('M'),\n\t MM: pluralize('M'),\n\t y: pluralize('y'),\n\t yy: pluralize('y'),\n\t },\n\t postformat: function (string) {\n\t return string.replace(/,/g, '،');\n\t },\n\t week: {\n\t dow: 0, // Sunday is the first day of the week.\n\t doy: 4, // The week that contains Jan 4th is the first week of the year.\n\t },\n\t });\n\t\n\t return arDz;\n\t\n\t})));\n\n\n/***/ }),\n\n/***/ 308:\n/***/ (function(module, exports, __webpack_require__) {\n\n\t//! moment.js locale configuration\n\t//! locale : Arabic (Kuwait) [ar-kw]\n\t//! author : Nusret Parlak: https://github.com/nusretparlak\n\t\n\t;(function (global, factory) {\n\t true ? factory(__webpack_require__(1)) :\n\t typeof define === 'function' && define.amd ? define(['../moment'], factory) :\n\t factory(global.moment)\n\t}(this, (function (moment) { 'use strict';\n\t\n\t //! moment.js locale configuration\n\t\n\t var arKw = moment.defineLocale('ar-kw', {\n\t months: 'يناير_فبراير_مارس_أبريل_ماي_يونيو_يوليوز_غشت_شتنبر_أكتوبر_نونبر_دجنبر'.split(\n\t '_'\n\t ),\n\t monthsShort: 'يناير_فبراير_مارس_أبريل_ماي_يونيو_يوليوز_غشت_شتنبر_أكتوبر_نونبر_دجنبر'.split(\n\t '_'\n\t ),\n\t weekdays: 'الأحد_الإتنين_الثلاثاء_الأربعاء_الخميس_الجمعة_السبت'.split('_'),\n\t weekdaysShort: 'احد_اتنين_ثلاثاء_اربعاء_خميس_جمعة_سبت'.split('_'),\n\t weekdaysMin: 'ح_ن_ث_ر_خ_ج_س'.split('_'),\n\t weekdaysParseExact: true,\n\t longDateFormat: {\n\t LT: 'HH:mm',\n\t LTS: 'HH:mm:ss',\n\t L: 'DD/MM/YYYY',\n\t LL: 'D MMMM YYYY',\n\t LLL: 'D MMMM YYYY HH:mm',\n\t LLLL: 'dddd D MMMM YYYY HH:mm',\n\t },\n\t calendar: {\n\t sameDay: '[اليوم على الساعة] LT',\n\t nextDay: '[غدا على الساعة] LT',\n\t nextWeek: 'dddd [على الساعة] LT',\n\t lastDay: '[أمس على الساعة] LT',\n\t lastWeek: 'dddd [على الساعة] LT',\n\t sameElse: 'L',\n\t },\n\t relativeTime: {\n\t future: 'في %s',\n\t past: 'منذ %s',\n\t s: 'ثوان',\n\t ss: '%d ثانية',\n\t m: 'دقيقة',\n\t mm: '%d دقائق',\n\t h: 'ساعة',\n\t hh: '%d ساعات',\n\t d: 'يوم',\n\t dd: '%d أيام',\n\t M: 'شهر',\n\t MM: '%d أشهر',\n\t y: 'سنة',\n\t yy: '%d سنوات',\n\t },\n\t week: {\n\t dow: 0, // Sunday is the first day of the week.\n\t doy: 12, // The week that contains Jan 12th is the first week of the year.\n\t },\n\t });\n\t\n\t return arKw;\n\t\n\t})));\n\n\n/***/ }),\n\n/***/ 309:\n/***/ (function(module, exports, __webpack_require__) {\n\n\t//! moment.js locale configuration\n\t//! locale : Arabic (Lybia) [ar-ly]\n\t//! author : Ali Hmer: https://github.com/kikoanis\n\t\n\t;(function (global, factory) {\n\t true ? factory(__webpack_require__(1)) :\n\t typeof define === 'function' && define.amd ? define(['../moment'], factory) :\n\t factory(global.moment)\n\t}(this, (function (moment) { 'use strict';\n\t\n\t //! moment.js locale configuration\n\t\n\t var symbolMap = {\n\t 1: '1',\n\t 2: '2',\n\t 3: '3',\n\t 4: '4',\n\t 5: '5',\n\t 6: '6',\n\t 7: '7',\n\t 8: '8',\n\t 9: '9',\n\t 0: '0',\n\t },\n\t pluralForm = function (n) {\n\t return n === 0\n\t ? 0\n\t : n === 1\n\t ? 1\n\t : n === 2\n\t ? 2\n\t : n % 100 >= 3 && n % 100 <= 10\n\t ? 3\n\t : n % 100 >= 11\n\t ? 4\n\t : 5;\n\t },\n\t plurals = {\n\t s: [\n\t 'أقل من ثانية',\n\t 'ثانية واحدة',\n\t ['ثانيتان', 'ثانيتين'],\n\t '%d ثوان',\n\t '%d ثانية',\n\t '%d ثانية',\n\t ],\n\t m: [\n\t 'أقل من دقيقة',\n\t 'دقيقة واحدة',\n\t ['دقيقتان', 'دقيقتين'],\n\t '%d دقائق',\n\t '%d دقيقة',\n\t '%d دقيقة',\n\t ],\n\t h: [\n\t 'أقل من ساعة',\n\t 'ساعة واحدة',\n\t ['ساعتان', 'ساعتين'],\n\t '%d ساعات',\n\t '%d ساعة',\n\t '%d ساعة',\n\t ],\n\t d: [\n\t 'أقل من يوم',\n\t 'يوم واحد',\n\t ['يومان', 'يومين'],\n\t '%d أيام',\n\t '%d يومًا',\n\t '%d يوم',\n\t ],\n\t M: [\n\t 'أقل من شهر',\n\t 'شهر واحد',\n\t ['شهران', 'شهرين'],\n\t '%d أشهر',\n\t '%d شهرا',\n\t '%d شهر',\n\t ],\n\t y: [\n\t 'أقل من عام',\n\t 'عام واحد',\n\t ['عامان', 'عامين'],\n\t '%d أعوام',\n\t '%d عامًا',\n\t '%d عام',\n\t ],\n\t },\n\t pluralize = function (u) {\n\t return function (number, withoutSuffix, string, isFuture) {\n\t var f = pluralForm(number),\n\t str = plurals[u][pluralForm(number)];\n\t if (f === 2) {\n\t str = str[withoutSuffix ? 0 : 1];\n\t }\n\t return str.replace(/%d/i, number);\n\t };\n\t },\n\t months = [\n\t 'يناير',\n\t 'فبراير',\n\t 'مارس',\n\t 'أبريل',\n\t 'مايو',\n\t 'يونيو',\n\t 'يوليو',\n\t 'أغسطس',\n\t 'سبتمبر',\n\t 'أكتوبر',\n\t 'نوفمبر',\n\t 'ديسمبر',\n\t ];\n\t\n\t var arLy = moment.defineLocale('ar-ly', {\n\t months: months,\n\t monthsShort: months,\n\t weekdays: 'الأحد_الإثنين_الثلاثاء_الأربعاء_الخميس_الجمعة_السبت'.split('_'),\n\t weekdaysShort: 'أحد_إثنين_ثلاثاء_أربعاء_خميس_جمعة_سبت'.split('_'),\n\t weekdaysMin: 'ح_ن_ث_ر_خ_ج_س'.split('_'),\n\t weekdaysParseExact: true,\n\t longDateFormat: {\n\t LT: 'HH:mm',\n\t LTS: 'HH:mm:ss',\n\t L: 'D/\\u200FM/\\u200FYYYY',\n\t LL: 'D MMMM YYYY',\n\t LLL: 'D MMMM YYYY HH:mm',\n\t LLLL: 'dddd D MMMM YYYY HH:mm',\n\t },\n\t meridiemParse: /ص|م/,\n\t isPM: function (input) {\n\t return 'م' === input;\n\t },\n\t meridiem: function (hour, minute, isLower) {\n\t if (hour < 12) {\n\t return 'ص';\n\t } else {\n\t return 'م';\n\t }\n\t },\n\t calendar: {\n\t sameDay: '[اليوم عند الساعة] LT',\n\t nextDay: '[غدًا عند الساعة] LT',\n\t nextWeek: 'dddd [عند الساعة] LT',\n\t lastDay: '[أمس عند الساعة] LT',\n\t lastWeek: 'dddd [عند الساعة] LT',\n\t sameElse: 'L',\n\t },\n\t relativeTime: {\n\t future: 'بعد %s',\n\t past: 'منذ %s',\n\t s: pluralize('s'),\n\t ss: pluralize('s'),\n\t m: pluralize('m'),\n\t mm: pluralize('m'),\n\t h: pluralize('h'),\n\t hh: pluralize('h'),\n\t d: pluralize('d'),\n\t dd: pluralize('d'),\n\t M: pluralize('M'),\n\t MM: pluralize('M'),\n\t y: pluralize('y'),\n\t yy: pluralize('y'),\n\t },\n\t preparse: function (string) {\n\t return string.replace(/،/g, ',');\n\t },\n\t postformat: function (string) {\n\t return string\n\t .replace(/\\d/g, function (match) {\n\t return symbolMap[match];\n\t })\n\t .replace(/,/g, '،');\n\t },\n\t week: {\n\t dow: 6, // Saturday is the first day of the week.\n\t doy: 12, // The week that contains Jan 12th is the first week of the year.\n\t },\n\t });\n\t\n\t return arLy;\n\t\n\t})));\n\n\n/***/ }),\n\n/***/ 310:\n/***/ (function(module, exports, __webpack_require__) {\n\n\t//! moment.js locale configuration\n\t//! locale : Arabic (Morocco) [ar-ma]\n\t//! author : ElFadili Yassine : https://github.com/ElFadiliY\n\t//! author : Abdel Said : https://github.com/abdelsaid\n\t\n\t;(function (global, factory) {\n\t true ? factory(__webpack_require__(1)) :\n\t typeof define === 'function' && define.amd ? define(['../moment'], factory) :\n\t factory(global.moment)\n\t}(this, (function (moment) { 'use strict';\n\t\n\t //! moment.js locale configuration\n\t\n\t var arMa = moment.defineLocale('ar-ma', {\n\t months: 'يناير_فبراير_مارس_أبريل_ماي_يونيو_يوليوز_غشت_شتنبر_أكتوبر_نونبر_دجنبر'.split(\n\t '_'\n\t ),\n\t monthsShort: 'يناير_فبراير_مارس_أبريل_ماي_يونيو_يوليوز_غشت_شتنبر_أكتوبر_نونبر_دجنبر'.split(\n\t '_'\n\t ),\n\t weekdays: 'الأحد_الإثنين_الثلاثاء_الأربعاء_الخميس_الجمعة_السبت'.split('_'),\n\t weekdaysShort: 'احد_اثنين_ثلاثاء_اربعاء_خميس_جمعة_سبت'.split('_'),\n\t weekdaysMin: 'ح_ن_ث_ر_خ_ج_س'.split('_'),\n\t weekdaysParseExact: true,\n\t longDateFormat: {\n\t LT: 'HH:mm',\n\t LTS: 'HH:mm:ss',\n\t L: 'DD/MM/YYYY',\n\t LL: 'D MMMM YYYY',\n\t LLL: 'D MMMM YYYY HH:mm',\n\t LLLL: 'dddd D MMMM YYYY HH:mm',\n\t },\n\t calendar: {\n\t sameDay: '[اليوم على الساعة] LT',\n\t nextDay: '[غدا على الساعة] LT',\n\t nextWeek: 'dddd [على الساعة] LT',\n\t lastDay: '[أمس على الساعة] LT',\n\t lastWeek: 'dddd [على الساعة] LT',\n\t sameElse: 'L',\n\t },\n\t relativeTime: {\n\t future: 'في %s',\n\t past: 'منذ %s',\n\t s: 'ثوان',\n\t ss: '%d ثانية',\n\t m: 'دقيقة',\n\t mm: '%d دقائق',\n\t h: 'ساعة',\n\t hh: '%d ساعات',\n\t d: 'يوم',\n\t dd: '%d أيام',\n\t M: 'شهر',\n\t MM: '%d أشهر',\n\t y: 'سنة',\n\t yy: '%d سنوات',\n\t },\n\t week: {\n\t dow: 1, // Monday is the first day of the week.\n\t doy: 4, // The week that contains Jan 4th is the first week of the year.\n\t },\n\t });\n\t\n\t return arMa;\n\t\n\t})));\n\n\n/***/ }),\n\n/***/ 311:\n/***/ (function(module, exports, __webpack_require__) {\n\n\t//! moment.js locale configuration\n\t//! locale : Arabic (Saudi Arabia) [ar-sa]\n\t//! author : Suhail Alkowaileet : https://github.com/xsoh\n\t\n\t;(function (global, factory) {\n\t true ? factory(__webpack_require__(1)) :\n\t typeof define === 'function' && define.amd ? define(['../moment'], factory) :\n\t factory(global.moment)\n\t}(this, (function (moment) { 'use strict';\n\t\n\t //! moment.js locale configuration\n\t\n\t var symbolMap = {\n\t 1: '١',\n\t 2: '٢',\n\t 3: '٣',\n\t 4: '٤',\n\t 5: '٥',\n\t 6: '٦',\n\t 7: '٧',\n\t 8: '٨',\n\t 9: '٩',\n\t 0: '٠',\n\t },\n\t numberMap = {\n\t '١': '1',\n\t '٢': '2',\n\t '٣': '3',\n\t '٤': '4',\n\t '٥': '5',\n\t '٦': '6',\n\t '٧': '7',\n\t '٨': '8',\n\t '٩': '9',\n\t '٠': '0',\n\t };\n\t\n\t var arSa = moment.defineLocale('ar-sa', {\n\t months: 'يناير_فبراير_مارس_أبريل_مايو_يونيو_يوليو_أغسطس_سبتمبر_أكتوبر_نوفمبر_ديسمبر'.split(\n\t '_'\n\t ),\n\t monthsShort: 'يناير_فبراير_مارس_أبريل_مايو_يونيو_يوليو_أغسطس_سبتمبر_أكتوبر_نوفمبر_ديسمبر'.split(\n\t '_'\n\t ),\n\t weekdays: 'الأحد_الإثنين_الثلاثاء_الأربعاء_الخميس_الجمعة_السبت'.split('_'),\n\t weekdaysShort: 'أحد_إثنين_ثلاثاء_أربعاء_خميس_جمعة_سبت'.split('_'),\n\t weekdaysMin: 'ح_ن_ث_ر_خ_ج_س'.split('_'),\n\t weekdaysParseExact: true,\n\t longDateFormat: {\n\t LT: 'HH:mm',\n\t LTS: 'HH:mm:ss',\n\t L: 'DD/MM/YYYY',\n\t LL: 'D MMMM YYYY',\n\t LLL: 'D MMMM YYYY HH:mm',\n\t LLLL: 'dddd D MMMM YYYY HH:mm',\n\t },\n\t meridiemParse: /ص|م/,\n\t isPM: function (input) {\n\t return 'م' === input;\n\t },\n\t meridiem: function (hour, minute, isLower) {\n\t if (hour < 12) {\n\t return 'ص';\n\t } else {\n\t return 'م';\n\t }\n\t },\n\t calendar: {\n\t sameDay: '[اليوم على الساعة] LT',\n\t nextDay: '[غدا على الساعة] LT',\n\t nextWeek: 'dddd [على الساعة] LT',\n\t lastDay: '[أمس على الساعة] LT',\n\t lastWeek: 'dddd [على الساعة] LT',\n\t sameElse: 'L',\n\t },\n\t relativeTime: {\n\t future: 'في %s',\n\t past: 'منذ %s',\n\t s: 'ثوان',\n\t ss: '%d ثانية',\n\t m: 'دقيقة',\n\t mm: '%d دقائق',\n\t h: 'ساعة',\n\t hh: '%d ساعات',\n\t d: 'يوم',\n\t dd: '%d أيام',\n\t M: 'شهر',\n\t MM: '%d أشهر',\n\t y: 'سنة',\n\t yy: '%d سنوات',\n\t },\n\t preparse: function (string) {\n\t return string\n\t .replace(/[١٢٣٤٥٦٧٨٩٠]/g, function (match) {\n\t return numberMap[match];\n\t })\n\t .replace(/،/g, ',');\n\t },\n\t postformat: function (string) {\n\t return string\n\t .replace(/\\d/g, function (match) {\n\t return symbolMap[match];\n\t })\n\t .replace(/,/g, '،');\n\t },\n\t week: {\n\t dow: 0, // Sunday is the first day of the week.\n\t doy: 6, // The week that contains Jan 6th is the first week of the year.\n\t },\n\t });\n\t\n\t return arSa;\n\t\n\t})));\n\n\n/***/ }),\n\n/***/ 312:\n/***/ (function(module, exports, __webpack_require__) {\n\n\t//! moment.js locale configuration\n\t//! locale : Arabic (Tunisia) [ar-tn]\n\t//! author : Nader Toukabri : https://github.com/naderio\n\t\n\t;(function (global, factory) {\n\t true ? factory(__webpack_require__(1)) :\n\t typeof define === 'function' && define.amd ? define(['../moment'], factory) :\n\t factory(global.moment)\n\t}(this, (function (moment) { 'use strict';\n\t\n\t //! moment.js locale configuration\n\t\n\t var arTn = moment.defineLocale('ar-tn', {\n\t months: 'جانفي_فيفري_مارس_أفريل_ماي_جوان_جويلية_أوت_سبتمبر_أكتوبر_نوفمبر_ديسمبر'.split(\n\t '_'\n\t ),\n\t monthsShort: 'جانفي_فيفري_مارس_أفريل_ماي_جوان_جويلية_أوت_سبتمبر_أكتوبر_نوفمبر_ديسمبر'.split(\n\t '_'\n\t ),\n\t weekdays: 'الأحد_الإثنين_الثلاثاء_الأربعاء_الخميس_الجمعة_السبت'.split('_'),\n\t weekdaysShort: 'أحد_إثنين_ثلاثاء_أربعاء_خميس_جمعة_سبت'.split('_'),\n\t weekdaysMin: 'ح_ن_ث_ر_خ_ج_س'.split('_'),\n\t weekdaysParseExact: true,\n\t longDateFormat: {\n\t LT: 'HH:mm',\n\t LTS: 'HH:mm:ss',\n\t L: 'DD/MM/YYYY',\n\t LL: 'D MMMM YYYY',\n\t LLL: 'D MMMM YYYY HH:mm',\n\t LLLL: 'dddd D MMMM YYYY HH:mm',\n\t },\n\t calendar: {\n\t sameDay: '[اليوم على الساعة] LT',\n\t nextDay: '[غدا على الساعة] LT',\n\t nextWeek: 'dddd [على الساعة] LT',\n\t lastDay: '[أمس على الساعة] LT',\n\t lastWeek: 'dddd [على الساعة] LT',\n\t sameElse: 'L',\n\t },\n\t relativeTime: {\n\t future: 'في %s',\n\t past: 'منذ %s',\n\t s: 'ثوان',\n\t ss: '%d ثانية',\n\t m: 'دقيقة',\n\t mm: '%d دقائق',\n\t h: 'ساعة',\n\t hh: '%d ساعات',\n\t d: 'يوم',\n\t dd: '%d أيام',\n\t M: 'شهر',\n\t MM: '%d أشهر',\n\t y: 'سنة',\n\t yy: '%d سنوات',\n\t },\n\t week: {\n\t dow: 1, // Monday is the first day of the week.\n\t doy: 4, // The week that contains Jan 4th is the first week of the year.\n\t },\n\t });\n\t\n\t return arTn;\n\t\n\t})));\n\n\n/***/ }),\n\n/***/ 313:\n/***/ (function(module, exports, __webpack_require__) {\n\n\t//! moment.js locale configuration\n\t//! locale : Arabic [ar]\n\t//! author : Abdel Said: https://github.com/abdelsaid\n\t//! author : Ahmed Elkhatib\n\t//! author : forabi https://github.com/forabi\n\t\n\t;(function (global, factory) {\n\t true ? factory(__webpack_require__(1)) :\n\t typeof define === 'function' && define.amd ? define(['../moment'], factory) :\n\t factory(global.moment)\n\t}(this, (function (moment) { 'use strict';\n\t\n\t //! moment.js locale configuration\n\t\n\t var symbolMap = {\n\t 1: '١',\n\t 2: '٢',\n\t 3: '٣',\n\t 4: '٤',\n\t 5: '٥',\n\t 6: '٦',\n\t 7: '٧',\n\t 8: '٨',\n\t 9: '٩',\n\t 0: '٠',\n\t },\n\t numberMap = {\n\t '١': '1',\n\t '٢': '2',\n\t '٣': '3',\n\t '٤': '4',\n\t '٥': '5',\n\t '٦': '6',\n\t '٧': '7',\n\t '٨': '8',\n\t '٩': '9',\n\t '٠': '0',\n\t },\n\t pluralForm = function (n) {\n\t return n === 0\n\t ? 0\n\t : n === 1\n\t ? 1\n\t : n === 2\n\t ? 2\n\t : n % 100 >= 3 && n % 100 <= 10\n\t ? 3\n\t : n % 100 >= 11\n\t ? 4\n\t : 5;\n\t },\n\t plurals = {\n\t s: [\n\t 'أقل من ثانية',\n\t 'ثانية واحدة',\n\t ['ثانيتان', 'ثانيتين'],\n\t '%d ثوان',\n\t '%d ثانية',\n\t '%d ثانية',\n\t ],\n\t m: [\n\t 'أقل من دقيقة',\n\t 'دقيقة واحدة',\n\t ['دقيقتان', 'دقيقتين'],\n\t '%d دقائق',\n\t '%d دقيقة',\n\t '%d دقيقة',\n\t ],\n\t h: [\n\t 'أقل من ساعة',\n\t 'ساعة واحدة',\n\t ['ساعتان', 'ساعتين'],\n\t '%d ساعات',\n\t '%d ساعة',\n\t '%d ساعة',\n\t ],\n\t d: [\n\t 'أقل من يوم',\n\t 'يوم واحد',\n\t ['يومان', 'يومين'],\n\t '%d أيام',\n\t '%d يومًا',\n\t '%d يوم',\n\t ],\n\t M: [\n\t 'أقل من شهر',\n\t 'شهر واحد',\n\t ['شهران', 'شهرين'],\n\t '%d أشهر',\n\t '%d شهرا',\n\t '%d شهر',\n\t ],\n\t y: [\n\t 'أقل من عام',\n\t 'عام واحد',\n\t ['عامان', 'عامين'],\n\t '%d أعوام',\n\t '%d عامًا',\n\t '%d عام',\n\t ],\n\t },\n\t pluralize = function (u) {\n\t return function (number, withoutSuffix, string, isFuture) {\n\t var f = pluralForm(number),\n\t str = plurals[u][pluralForm(number)];\n\t if (f === 2) {\n\t str = str[withoutSuffix ? 0 : 1];\n\t }\n\t return str.replace(/%d/i, number);\n\t };\n\t },\n\t months = [\n\t 'يناير',\n\t 'فبراير',\n\t 'مارس',\n\t 'أبريل',\n\t 'مايو',\n\t 'يونيو',\n\t 'يوليو',\n\t 'أغسطس',\n\t 'سبتمبر',\n\t 'أكتوبر',\n\t 'نوفمبر',\n\t 'ديسمبر',\n\t ];\n\t\n\t var ar = moment.defineLocale('ar', {\n\t months: months,\n\t monthsShort: months,\n\t weekdays: 'الأحد_الإثنين_الثلاثاء_الأربعاء_الخميس_الجمعة_السبت'.split('_'),\n\t weekdaysShort: 'أحد_إثنين_ثلاثاء_أربعاء_خميس_جمعة_سبت'.split('_'),\n\t weekdaysMin: 'ح_ن_ث_ر_خ_ج_س'.split('_'),\n\t weekdaysParseExact: true,\n\t longDateFormat: {\n\t LT: 'HH:mm',\n\t LTS: 'HH:mm:ss',\n\t L: 'D/\\u200FM/\\u200FYYYY',\n\t LL: 'D MMMM YYYY',\n\t LLL: 'D MMMM YYYY HH:mm',\n\t LLLL: 'dddd D MMMM YYYY HH:mm',\n\t },\n\t meridiemParse: /ص|م/,\n\t isPM: function (input) {\n\t return 'م' === input;\n\t },\n\t meridiem: function (hour, minute, isLower) {\n\t if (hour < 12) {\n\t return 'ص';\n\t } else {\n\t return 'م';\n\t }\n\t },\n\t calendar: {\n\t sameDay: '[اليوم عند الساعة] LT',\n\t nextDay: '[غدًا عند الساعة] LT',\n\t nextWeek: 'dddd [عند الساعة] LT',\n\t lastDay: '[أمس عند الساعة] LT',\n\t lastWeek: 'dddd [عند الساعة] LT',\n\t sameElse: 'L',\n\t },\n\t relativeTime: {\n\t future: 'بعد %s',\n\t past: 'منذ %s',\n\t s: pluralize('s'),\n\t ss: pluralize('s'),\n\t m: pluralize('m'),\n\t mm: pluralize('m'),\n\t h: pluralize('h'),\n\t hh: pluralize('h'),\n\t d: pluralize('d'),\n\t dd: pluralize('d'),\n\t M: pluralize('M'),\n\t MM: pluralize('M'),\n\t y: pluralize('y'),\n\t yy: pluralize('y'),\n\t },\n\t preparse: function (string) {\n\t return string\n\t .replace(/[١٢٣٤٥٦٧٨٩٠]/g, function (match) {\n\t return numberMap[match];\n\t })\n\t .replace(/،/g, ',');\n\t },\n\t postformat: function (string) {\n\t return string\n\t .replace(/\\d/g, function (match) {\n\t return symbolMap[match];\n\t })\n\t .replace(/,/g, '،');\n\t },\n\t week: {\n\t dow: 6, // Saturday is the first day of the week.\n\t doy: 12, // The week that contains Jan 12th is the first week of the year.\n\t },\n\t });\n\t\n\t return ar;\n\t\n\t})));\n\n\n/***/ }),\n\n/***/ 314:\n/***/ (function(module, exports, __webpack_require__) {\n\n\t//! moment.js locale configuration\n\t//! locale : Azerbaijani [az]\n\t//! author : topchiyev : https://github.com/topchiyev\n\t\n\t;(function (global, factory) {\n\t true ? factory(__webpack_require__(1)) :\n\t typeof define === 'function' && define.amd ? define(['../moment'], factory) :\n\t factory(global.moment)\n\t}(this, (function (moment) { 'use strict';\n\t\n\t //! moment.js locale configuration\n\t\n\t var suffixes = {\n\t 1: '-inci',\n\t 5: '-inci',\n\t 8: '-inci',\n\t 70: '-inci',\n\t 80: '-inci',\n\t 2: '-nci',\n\t 7: '-nci',\n\t 20: '-nci',\n\t 50: '-nci',\n\t 3: '-üncü',\n\t 4: '-üncü',\n\t 100: '-üncü',\n\t 6: '-ncı',\n\t 9: '-uncu',\n\t 10: '-uncu',\n\t 30: '-uncu',\n\t 60: '-ıncı',\n\t 90: '-ıncı',\n\t };\n\t\n\t var az = moment.defineLocale('az', {\n\t months: 'yanvar_fevral_mart_aprel_may_iyun_iyul_avqust_sentyabr_oktyabr_noyabr_dekabr'.split(\n\t '_'\n\t ),\n\t monthsShort: 'yan_fev_mar_apr_may_iyn_iyl_avq_sen_okt_noy_dek'.split('_'),\n\t weekdays: 'Bazar_Bazar ertəsi_Çərşənbə axşamı_Çərşənbə_Cümə axşamı_Cümə_Şənbə'.split(\n\t '_'\n\t ),\n\t weekdaysShort: 'Baz_BzE_ÇAx_Çər_CAx_Cüm_Şən'.split('_'),\n\t weekdaysMin: 'Bz_BE_ÇA_Çə_CA_Cü_Şə'.split('_'),\n\t weekdaysParseExact: true,\n\t longDateFormat: {\n\t LT: 'HH:mm',\n\t LTS: 'HH:mm:ss',\n\t L: 'DD.MM.YYYY',\n\t LL: 'D MMMM YYYY',\n\t LLL: 'D MMMM YYYY HH:mm',\n\t LLLL: 'dddd, D MMMM YYYY HH:mm',\n\t },\n\t calendar: {\n\t sameDay: '[bugün saat] LT',\n\t nextDay: '[sabah saat] LT',\n\t nextWeek: '[gələn həftə] dddd [saat] LT',\n\t lastDay: '[dünən] LT',\n\t lastWeek: '[keçən həftə] dddd [saat] LT',\n\t sameElse: 'L',\n\t },\n\t relativeTime: {\n\t future: '%s sonra',\n\t past: '%s əvvəl',\n\t s: 'bir neçə saniyə',\n\t ss: '%d saniyə',\n\t m: 'bir dəqiqə',\n\t mm: '%d dəqiqə',\n\t h: 'bir saat',\n\t hh: '%d saat',\n\t d: 'bir gün',\n\t dd: '%d gün',\n\t M: 'bir ay',\n\t MM: '%d ay',\n\t y: 'bir il',\n\t yy: '%d il',\n\t },\n\t meridiemParse: /gecə|səhər|gündüz|axşam/,\n\t isPM: function (input) {\n\t return /^(gündüz|axşam)$/.test(input);\n\t },\n\t meridiem: function (hour, minute, isLower) {\n\t if (hour < 4) {\n\t return 'gecə';\n\t } else if (hour < 12) {\n\t return 'səhər';\n\t } else if (hour < 17) {\n\t return 'gündüz';\n\t } else {\n\t return 'axşam';\n\t }\n\t },\n\t dayOfMonthOrdinalParse: /\\d{1,2}-(ıncı|inci|nci|üncü|ncı|uncu)/,\n\t ordinal: function (number) {\n\t if (number === 0) {\n\t // special case for zero\n\t return number + '-ıncı';\n\t }\n\t var a = number % 10,\n\t b = (number % 100) - a,\n\t c = number >= 100 ? 100 : null;\n\t return number + (suffixes[a] || suffixes[b] || suffixes[c]);\n\t },\n\t week: {\n\t dow: 1, // Monday is the first day of the week.\n\t doy: 7, // The week that contains Jan 7th is the first week of the year.\n\t },\n\t });\n\t\n\t return az;\n\t\n\t})));\n\n\n/***/ }),\n\n/***/ 315:\n/***/ (function(module, exports, __webpack_require__) {\n\n\t//! moment.js locale configuration\n\t//! locale : Belarusian [be]\n\t//! author : Dmitry Demidov : https://github.com/demidov91\n\t//! author: Praleska: http://praleska.pro/\n\t//! Author : Menelion Elensúle : https://github.com/Oire\n\t\n\t;(function (global, factory) {\n\t true ? factory(__webpack_require__(1)) :\n\t typeof define === 'function' && define.amd ? define(['../moment'], factory) :\n\t factory(global.moment)\n\t}(this, (function (moment) { 'use strict';\n\t\n\t //! moment.js locale configuration\n\t\n\t function plural(word, num) {\n\t var forms = word.split('_');\n\t return num % 10 === 1 && num % 100 !== 11\n\t ? forms[0]\n\t : num % 10 >= 2 && num % 10 <= 4 && (num % 100 < 10 || num % 100 >= 20)\n\t ? forms[1]\n\t : forms[2];\n\t }\n\t function relativeTimeWithPlural(number, withoutSuffix, key) {\n\t var format = {\n\t ss: withoutSuffix ? 'секунда_секунды_секунд' : 'секунду_секунды_секунд',\n\t mm: withoutSuffix ? 'хвіліна_хвіліны_хвілін' : 'хвіліну_хвіліны_хвілін',\n\t hh: withoutSuffix ? 'гадзіна_гадзіны_гадзін' : 'гадзіну_гадзіны_гадзін',\n\t dd: 'дзень_дні_дзён',\n\t MM: 'месяц_месяцы_месяцаў',\n\t yy: 'год_гады_гадоў',\n\t };\n\t if (key === 'm') {\n\t return withoutSuffix ? 'хвіліна' : 'хвіліну';\n\t } else if (key === 'h') {\n\t return withoutSuffix ? 'гадзіна' : 'гадзіну';\n\t } else {\n\t return number + ' ' + plural(format[key], +number);\n\t }\n\t }\n\t\n\t var be = moment.defineLocale('be', {\n\t months: {\n\t format: 'студзеня_лютага_сакавіка_красавіка_траўня_чэрвеня_ліпеня_жніўня_верасня_кастрычніка_лістапада_снежня'.split(\n\t '_'\n\t ),\n\t standalone: 'студзень_люты_сакавік_красавік_травень_чэрвень_ліпень_жнівень_верасень_кастрычнік_лістапад_снежань'.split(\n\t '_'\n\t ),\n\t },\n\t monthsShort: 'студ_лют_сак_крас_трав_чэрв_ліп_жнів_вер_каст_ліст_снеж'.split(\n\t '_'\n\t ),\n\t weekdays: {\n\t format: 'нядзелю_панядзелак_аўторак_сераду_чацвер_пятніцу_суботу'.split(\n\t '_'\n\t ),\n\t standalone: 'нядзеля_панядзелак_аўторак_серада_чацвер_пятніца_субота'.split(\n\t '_'\n\t ),\n\t isFormat: /\\[ ?[Ууў] ?(?:мінулую|наступную)? ?\\] ?dddd/,\n\t },\n\t weekdaysShort: 'нд_пн_ат_ср_чц_пт_сб'.split('_'),\n\t weekdaysMin: 'нд_пн_ат_ср_чц_пт_сб'.split('_'),\n\t longDateFormat: {\n\t LT: 'HH:mm',\n\t LTS: 'HH:mm:ss',\n\t L: 'DD.MM.YYYY',\n\t LL: 'D MMMM YYYY г.',\n\t LLL: 'D MMMM YYYY г., HH:mm',\n\t LLLL: 'dddd, D MMMM YYYY г., HH:mm',\n\t },\n\t calendar: {\n\t sameDay: '[Сёння ў] LT',\n\t nextDay: '[Заўтра ў] LT',\n\t lastDay: '[Учора ў] LT',\n\t nextWeek: function () {\n\t return '[У] dddd [ў] LT';\n\t },\n\t lastWeek: function () {\n\t switch (this.day()) {\n\t case 0:\n\t case 3:\n\t case 5:\n\t case 6:\n\t return '[У мінулую] dddd [ў] LT';\n\t case 1:\n\t case 2:\n\t case 4:\n\t return '[У мінулы] dddd [ў] LT';\n\t }\n\t },\n\t sameElse: 'L',\n\t },\n\t relativeTime: {\n\t future: 'праз %s',\n\t past: '%s таму',\n\t s: 'некалькі секунд',\n\t m: relativeTimeWithPlural,\n\t mm: relativeTimeWithPlural,\n\t h: relativeTimeWithPlural,\n\t hh: relativeTimeWithPlural,\n\t d: 'дзень',\n\t dd: relativeTimeWithPlural,\n\t M: 'месяц',\n\t MM: relativeTimeWithPlural,\n\t y: 'год',\n\t yy: relativeTimeWithPlural,\n\t },\n\t meridiemParse: /ночы|раніцы|дня|вечара/,\n\t isPM: function (input) {\n\t return /^(дня|вечара)$/.test(input);\n\t },\n\t meridiem: function (hour, minute, isLower) {\n\t if (hour < 4) {\n\t return 'ночы';\n\t } else if (hour < 12) {\n\t return 'раніцы';\n\t } else if (hour < 17) {\n\t return 'дня';\n\t } else {\n\t return 'вечара';\n\t }\n\t },\n\t dayOfMonthOrdinalParse: /\\d{1,2}-(і|ы|га)/,\n\t ordinal: function (number, period) {\n\t switch (period) {\n\t case 'M':\n\t case 'd':\n\t case 'DDD':\n\t case 'w':\n\t case 'W':\n\t return (number % 10 === 2 || number % 10 === 3) &&\n\t number % 100 !== 12 &&\n\t number % 100 !== 13\n\t ? number + '-і'\n\t : number + '-ы';\n\t case 'D':\n\t return number + '-га';\n\t default:\n\t return number;\n\t }\n\t },\n\t week: {\n\t dow: 1, // Monday is the first day of the week.\n\t doy: 7, // The week that contains Jan 7th is the first week of the year.\n\t },\n\t });\n\t\n\t return be;\n\t\n\t})));\n\n\n/***/ }),\n\n/***/ 316:\n/***/ (function(module, exports, __webpack_require__) {\n\n\t//! moment.js locale configuration\n\t//! locale : Bulgarian [bg]\n\t//! author : Krasen Borisov : https://github.com/kraz\n\t\n\t;(function (global, factory) {\n\t true ? factory(__webpack_require__(1)) :\n\t typeof define === 'function' && define.amd ? define(['../moment'], factory) :\n\t factory(global.moment)\n\t}(this, (function (moment) { 'use strict';\n\t\n\t //! moment.js locale configuration\n\t\n\t var bg = moment.defineLocale('bg', {\n\t months: 'януари_февруари_март_април_май_юни_юли_август_септември_октомври_ноември_декември'.split(\n\t '_'\n\t ),\n\t monthsShort: 'яну_фев_мар_апр_май_юни_юли_авг_сеп_окт_ное_дек'.split('_'),\n\t weekdays: 'неделя_понеделник_вторник_сряда_четвъртък_петък_събота'.split(\n\t '_'\n\t ),\n\t weekdaysShort: 'нед_пон_вто_сря_чет_пет_съб'.split('_'),\n\t weekdaysMin: 'нд_пн_вт_ср_чт_пт_сб'.split('_'),\n\t longDateFormat: {\n\t LT: 'H:mm',\n\t LTS: 'H:mm:ss',\n\t L: 'D.MM.YYYY',\n\t LL: 'D MMMM YYYY',\n\t LLL: 'D MMMM YYYY H:mm',\n\t LLLL: 'dddd, D MMMM YYYY H:mm',\n\t },\n\t calendar: {\n\t sameDay: '[Днес в] LT',\n\t nextDay: '[Утре в] LT',\n\t nextWeek: 'dddd [в] LT',\n\t lastDay: '[Вчера в] LT',\n\t lastWeek: function () {\n\t switch (this.day()) {\n\t case 0:\n\t case 3:\n\t case 6:\n\t return '[Миналата] dddd [в] LT';\n\t case 1:\n\t case 2:\n\t case 4:\n\t case 5:\n\t return '[Миналия] dddd [в] LT';\n\t }\n\t },\n\t sameElse: 'L',\n\t },\n\t relativeTime: {\n\t future: 'след %s',\n\t past: 'преди %s',\n\t s: 'няколко секунди',\n\t ss: '%d секунди',\n\t m: 'минута',\n\t mm: '%d минути',\n\t h: 'час',\n\t hh: '%d часа',\n\t d: 'ден',\n\t dd: '%d дена',\n\t w: 'седмица',\n\t ww: '%d седмици',\n\t M: 'месец',\n\t MM: '%d месеца',\n\t y: 'година',\n\t yy: '%d години',\n\t },\n\t dayOfMonthOrdinalParse: /\\d{1,2}-(ев|ен|ти|ви|ри|ми)/,\n\t ordinal: function (number) {\n\t var lastDigit = number % 10,\n\t last2Digits = number % 100;\n\t if (number === 0) {\n\t return number + '-ев';\n\t } else if (last2Digits === 0) {\n\t return number + '-ен';\n\t } else if (last2Digits > 10 && last2Digits < 20) {\n\t return number + '-ти';\n\t } else if (lastDigit === 1) {\n\t return number + '-ви';\n\t } else if (lastDigit === 2) {\n\t return number + '-ри';\n\t } else if (lastDigit === 7 || lastDigit === 8) {\n\t return number + '-ми';\n\t } else {\n\t return number + '-ти';\n\t }\n\t },\n\t week: {\n\t dow: 1, // Monday is the first day of the week.\n\t doy: 7, // The week that contains Jan 7th is the first week of the year.\n\t },\n\t });\n\t\n\t return bg;\n\t\n\t})));\n\n\n/***/ }),\n\n/***/ 317:\n/***/ (function(module, exports, __webpack_require__) {\n\n\t//! moment.js locale configuration\n\t//! locale : Bambara [bm]\n\t//! author : Estelle Comment : https://github.com/estellecomment\n\t\n\t;(function (global, factory) {\n\t true ? factory(__webpack_require__(1)) :\n\t typeof define === 'function' && define.amd ? define(['../moment'], factory) :\n\t factory(global.moment)\n\t}(this, (function (moment) { 'use strict';\n\t\n\t //! moment.js locale configuration\n\t\n\t var bm = moment.defineLocale('bm', {\n\t months: 'Zanwuyekalo_Fewuruyekalo_Marisikalo_Awirilikalo_Mɛkalo_Zuwɛnkalo_Zuluyekalo_Utikalo_Sɛtanburukalo_ɔkutɔburukalo_Nowanburukalo_Desanburukalo'.split(\n\t '_'\n\t ),\n\t monthsShort: 'Zan_Few_Mar_Awi_Mɛ_Zuw_Zul_Uti_Sɛt_ɔku_Now_Des'.split('_'),\n\t weekdays: 'Kari_Ntɛnɛn_Tarata_Araba_Alamisa_Juma_Sibiri'.split('_'),\n\t weekdaysShort: 'Kar_Ntɛ_Tar_Ara_Ala_Jum_Sib'.split('_'),\n\t weekdaysMin: 'Ka_Nt_Ta_Ar_Al_Ju_Si'.split('_'),\n\t longDateFormat: {\n\t LT: 'HH:mm',\n\t LTS: 'HH:mm:ss',\n\t L: 'DD/MM/YYYY',\n\t LL: 'MMMM [tile] D [san] YYYY',\n\t LLL: 'MMMM [tile] D [san] YYYY [lɛrɛ] HH:mm',\n\t LLLL: 'dddd MMMM [tile] D [san] YYYY [lɛrɛ] HH:mm',\n\t },\n\t calendar: {\n\t sameDay: '[Bi lɛrɛ] LT',\n\t nextDay: '[Sini lɛrɛ] LT',\n\t nextWeek: 'dddd [don lɛrɛ] LT',\n\t lastDay: '[Kunu lɛrɛ] LT',\n\t lastWeek: 'dddd [tɛmɛnen lɛrɛ] LT',\n\t sameElse: 'L',\n\t },\n\t relativeTime: {\n\t future: '%s kɔnɔ',\n\t past: 'a bɛ %s bɔ',\n\t s: 'sanga dama dama',\n\t ss: 'sekondi %d',\n\t m: 'miniti kelen',\n\t mm: 'miniti %d',\n\t h: 'lɛrɛ kelen',\n\t hh: 'lɛrɛ %d',\n\t d: 'tile kelen',\n\t dd: 'tile %d',\n\t M: 'kalo kelen',\n\t MM: 'kalo %d',\n\t y: 'san kelen',\n\t yy: 'san %d',\n\t },\n\t week: {\n\t dow: 1, // Monday is the first day of the week.\n\t doy: 4, // The week that contains Jan 4th is the first week of the year.\n\t },\n\t });\n\t\n\t return bm;\n\t\n\t})));\n\n\n/***/ }),\n\n/***/ 318:\n/***/ (function(module, exports, __webpack_require__) {\n\n\t//! moment.js locale configuration\n\t//! locale : Bengali (Bangladesh) [bn-bd]\n\t//! author : Asraf Hossain Patoary : https://github.com/ashwoolford\n\t\n\t;(function (global, factory) {\n\t true ? factory(__webpack_require__(1)) :\n\t typeof define === 'function' && define.amd ? define(['../moment'], factory) :\n\t factory(global.moment)\n\t}(this, (function (moment) { 'use strict';\n\t\n\t //! moment.js locale configuration\n\t\n\t var symbolMap = {\n\t 1: '১',\n\t 2: '২',\n\t 3: '৩',\n\t 4: '৪',\n\t 5: '৫',\n\t 6: '৬',\n\t 7: '৭',\n\t 8: '৮',\n\t 9: '৯',\n\t 0: '০',\n\t },\n\t numberMap = {\n\t '১': '1',\n\t '২': '2',\n\t '৩': '3',\n\t '৪': '4',\n\t '৫': '5',\n\t '৬': '6',\n\t '৭': '7',\n\t '৮': '8',\n\t '৯': '9',\n\t '০': '0',\n\t };\n\t\n\t var bnBd = moment.defineLocale('bn-bd', {\n\t months: 'জানুয়ারি_ফেব্রুয়ারি_মার্চ_এপ্রিল_মে_জুন_জুলাই_আগস্ট_সেপ্টেম্বর_অক্টোবর_নভেম্বর_ডিসেম্বর'.split(\n\t '_'\n\t ),\n\t monthsShort: 'জানু_ফেব্রু_মার্চ_এপ্রিল_মে_জুন_জুলাই_আগস্ট_সেপ্ট_অক্টো_নভে_ডিসে'.split(\n\t '_'\n\t ),\n\t weekdays: 'রবিবার_সোমবার_মঙ্গলবার_বুধবার_বৃহস্পতিবার_শুক্রবার_শনিবার'.split(\n\t '_'\n\t ),\n\t weekdaysShort: 'রবি_সোম_মঙ্গল_বুধ_বৃহস্পতি_শুক্র_শনি'.split('_'),\n\t weekdaysMin: 'রবি_সোম_মঙ্গল_বুধ_বৃহ_শুক্র_শনি'.split('_'),\n\t longDateFormat: {\n\t LT: 'A h:mm সময়',\n\t LTS: 'A h:mm:ss সময়',\n\t L: 'DD/MM/YYYY',\n\t LL: 'D MMMM YYYY',\n\t LLL: 'D MMMM YYYY, A h:mm সময়',\n\t LLLL: 'dddd, D MMMM YYYY, A h:mm সময়',\n\t },\n\t calendar: {\n\t sameDay: '[আজ] LT',\n\t nextDay: '[আগামীকাল] LT',\n\t nextWeek: 'dddd, LT',\n\t lastDay: '[গতকাল] LT',\n\t lastWeek: '[গত] dddd, LT',\n\t sameElse: 'L',\n\t },\n\t relativeTime: {\n\t future: '%s পরে',\n\t past: '%s আগে',\n\t s: 'কয়েক সেকেন্ড',\n\t ss: '%d সেকেন্ড',\n\t m: 'এক মিনিট',\n\t mm: '%d মিনিট',\n\t h: 'এক ঘন্টা',\n\t hh: '%d ঘন্টা',\n\t d: 'এক দিন',\n\t dd: '%d দিন',\n\t M: 'এক মাস',\n\t MM: '%d মাস',\n\t y: 'এক বছর',\n\t yy: '%d বছর',\n\t },\n\t preparse: function (string) {\n\t return string.replace(/[১২৩৪৫৬৭৮৯০]/g, function (match) {\n\t return numberMap[match];\n\t });\n\t },\n\t postformat: function (string) {\n\t return string.replace(/\\d/g, function (match) {\n\t return symbolMap[match];\n\t });\n\t },\n\t\n\t meridiemParse: /রাত|ভোর|সকাল|দুপুর|বিকাল|সন্ধ্যা|রাত/,\n\t meridiemHour: function (hour, meridiem) {\n\t if (hour === 12) {\n\t hour = 0;\n\t }\n\t if (meridiem === 'রাত') {\n\t return hour < 4 ? hour : hour + 12;\n\t } else if (meridiem === 'ভোর') {\n\t return hour;\n\t } else if (meridiem === 'সকাল') {\n\t return hour;\n\t } else if (meridiem === 'দুপুর') {\n\t return hour >= 3 ? hour : hour + 12;\n\t } else if (meridiem === 'বিকাল') {\n\t return hour + 12;\n\t } else if (meridiem === 'সন্ধ্যা') {\n\t return hour + 12;\n\t }\n\t },\n\t\n\t meridiem: function (hour, minute, isLower) {\n\t if (hour < 4) {\n\t return 'রাত';\n\t } else if (hour < 6) {\n\t return 'ভোর';\n\t } else if (hour < 12) {\n\t return 'সকাল';\n\t } else if (hour < 15) {\n\t return 'দুপুর';\n\t } else if (hour < 18) {\n\t return 'বিকাল';\n\t } else if (hour < 20) {\n\t return 'সন্ধ্যা';\n\t } else {\n\t return 'রাত';\n\t }\n\t },\n\t week: {\n\t dow: 0, // Sunday is the first day of the week.\n\t doy: 6, // The week that contains Jan 6th is the first week of the year.\n\t },\n\t });\n\t\n\t return bnBd;\n\t\n\t})));\n\n\n/***/ }),\n\n/***/ 319:\n/***/ (function(module, exports, __webpack_require__) {\n\n\t//! moment.js locale configuration\n\t//! locale : Bengali [bn]\n\t//! author : Kaushik Gandhi : https://github.com/kaushikgandhi\n\t\n\t;(function (global, factory) {\n\t true ? factory(__webpack_require__(1)) :\n\t typeof define === 'function' && define.amd ? define(['../moment'], factory) :\n\t factory(global.moment)\n\t}(this, (function (moment) { 'use strict';\n\t\n\t //! moment.js locale configuration\n\t\n\t var symbolMap = {\n\t 1: '১',\n\t 2: '২',\n\t 3: '৩',\n\t 4: '৪',\n\t 5: '৫',\n\t 6: '৬',\n\t 7: '৭',\n\t 8: '৮',\n\t 9: '৯',\n\t 0: '০',\n\t },\n\t numberMap = {\n\t '১': '1',\n\t '২': '2',\n\t '৩': '3',\n\t '৪': '4',\n\t '৫': '5',\n\t '৬': '6',\n\t '৭': '7',\n\t '৮': '8',\n\t '৯': '9',\n\t '০': '0',\n\t };\n\t\n\t var bn = moment.defineLocale('bn', {\n\t months: 'জানুয়ারি_ফেব্রুয়ারি_মার্চ_এপ্রিল_মে_জুন_জুলাই_আগস্ট_সেপ্টেম্বর_অক্টোবর_নভেম্বর_ডিসেম্বর'.split(\n\t '_'\n\t ),\n\t monthsShort: 'জানু_ফেব্রু_মার্চ_এপ্রিল_মে_জুন_জুলাই_আগস্ট_সেপ্ট_অক্টো_নভে_ডিসে'.split(\n\t '_'\n\t ),\n\t weekdays: 'রবিবার_সোমবার_মঙ্গলবার_বুধবার_বৃহস্পতিবার_শুক্রবার_শনিবার'.split(\n\t '_'\n\t ),\n\t weekdaysShort: 'রবি_সোম_মঙ্গল_বুধ_বৃহস্পতি_শুক্র_শনি'.split('_'),\n\t weekdaysMin: 'রবি_সোম_মঙ্গল_বুধ_বৃহ_শুক্র_শনি'.split('_'),\n\t longDateFormat: {\n\t LT: 'A h:mm সময়',\n\t LTS: 'A h:mm:ss সময়',\n\t L: 'DD/MM/YYYY',\n\t LL: 'D MMMM YYYY',\n\t LLL: 'D MMMM YYYY, A h:mm সময়',\n\t LLLL: 'dddd, D MMMM YYYY, A h:mm সময়',\n\t },\n\t calendar: {\n\t sameDay: '[আজ] LT',\n\t nextDay: '[আগামীকাল] LT',\n\t nextWeek: 'dddd, LT',\n\t lastDay: '[গতকাল] LT',\n\t lastWeek: '[গত] dddd, LT',\n\t sameElse: 'L',\n\t },\n\t relativeTime: {\n\t future: '%s পরে',\n\t past: '%s আগে',\n\t s: 'কয়েক সেকেন্ড',\n\t ss: '%d সেকেন্ড',\n\t m: 'এক মিনিট',\n\t mm: '%d মিনিট',\n\t h: 'এক ঘন্টা',\n\t hh: '%d ঘন্টা',\n\t d: 'এক দিন',\n\t dd: '%d দিন',\n\t M: 'এক মাস',\n\t MM: '%d মাস',\n\t y: 'এক বছর',\n\t yy: '%d বছর',\n\t },\n\t preparse: function (string) {\n\t return string.replace(/[১২৩৪৫৬৭৮৯০]/g, function (match) {\n\t return numberMap[match];\n\t });\n\t },\n\t postformat: function (string) {\n\t return string.replace(/\\d/g, function (match) {\n\t return symbolMap[match];\n\t });\n\t },\n\t meridiemParse: /রাত|সকাল|দুপুর|বিকাল|রাত/,\n\t meridiemHour: function (hour, meridiem) {\n\t if (hour === 12) {\n\t hour = 0;\n\t }\n\t if (\n\t (meridiem === 'রাত' && hour >= 4) ||\n\t (meridiem === 'দুপুর' && hour < 5) ||\n\t meridiem === 'বিকাল'\n\t ) {\n\t return hour + 12;\n\t } else {\n\t return hour;\n\t }\n\t },\n\t meridiem: function (hour, minute, isLower) {\n\t if (hour < 4) {\n\t return 'রাত';\n\t } else if (hour < 10) {\n\t return 'সকাল';\n\t } else if (hour < 17) {\n\t return 'দুপুর';\n\t } else if (hour < 20) {\n\t return 'বিকাল';\n\t } else {\n\t return 'রাত';\n\t }\n\t },\n\t week: {\n\t dow: 0, // Sunday is the first day of the week.\n\t doy: 6, // The week that contains Jan 6th is the first week of the year.\n\t },\n\t });\n\t\n\t return bn;\n\t\n\t})));\n\n\n/***/ }),\n\n/***/ 320:\n/***/ (function(module, exports, __webpack_require__) {\n\n\t//! moment.js locale configuration\n\t//! locale : Tibetan [bo]\n\t//! author : Thupten N. Chakrishar : https://github.com/vajradog\n\t\n\t;(function (global, factory) {\n\t true ? factory(__webpack_require__(1)) :\n\t typeof define === 'function' && define.amd ? define(['../moment'], factory) :\n\t factory(global.moment)\n\t}(this, (function (moment) { 'use strict';\n\t\n\t //! moment.js locale configuration\n\t\n\t var symbolMap = {\n\t 1: '༡',\n\t 2: '༢',\n\t 3: '༣',\n\t 4: '༤',\n\t 5: '༥',\n\t 6: '༦',\n\t 7: '༧',\n\t 8: '༨',\n\t 9: '༩',\n\t 0: '༠',\n\t },\n\t numberMap = {\n\t '༡': '1',\n\t '༢': '2',\n\t '༣': '3',\n\t '༤': '4',\n\t '༥': '5',\n\t '༦': '6',\n\t '༧': '7',\n\t '༨': '8',\n\t '༩': '9',\n\t '༠': '0',\n\t };\n\t\n\t var bo = moment.defineLocale('bo', {\n\t months: 'ཟླ་བ་དང་པོ_ཟླ་བ་གཉིས་པ_ཟླ་བ་གསུམ་པ_ཟླ་བ་བཞི་པ_ཟླ་བ་ལྔ་པ_ཟླ་བ་དྲུག་པ_ཟླ་བ་བདུན་པ_ཟླ་བ་བརྒྱད་པ_ཟླ་བ་དགུ་པ_ཟླ་བ་བཅུ་པ_ཟླ་བ་བཅུ་གཅིག་པ_ཟླ་བ་བཅུ་གཉིས་པ'.split(\n\t '_'\n\t ),\n\t monthsShort: 'ཟླ་1_ཟླ་2_ཟླ་3_ཟླ་4_ཟླ་5_ཟླ་6_ཟླ་7_ཟླ་8_ཟླ་9_ཟླ་10_ཟླ་11_ཟླ་12'.split(\n\t '_'\n\t ),\n\t monthsShortRegex: /^(ཟླ་\\d{1,2})/,\n\t monthsParseExact: true,\n\t weekdays: 'གཟའ་ཉི་མ་_གཟའ་ཟླ་བ་_གཟའ་མིག་དམར་_གཟའ་ལྷག་པ་_གཟའ་ཕུར་བུ_གཟའ་པ་སངས་_གཟའ་སྤེན་པ་'.split(\n\t '_'\n\t ),\n\t weekdaysShort: 'ཉི་མ་_ཟླ་བ་_མིག་དམར་_ལྷག་པ་_ཕུར་བུ_པ་སངས་_སྤེན་པ་'.split(\n\t '_'\n\t ),\n\t weekdaysMin: 'ཉི_ཟླ_མིག_ལྷག_ཕུར_སངས_སྤེན'.split('_'),\n\t longDateFormat: {\n\t LT: 'A h:mm',\n\t LTS: 'A h:mm:ss',\n\t L: 'DD/MM/YYYY',\n\t LL: 'D MMMM YYYY',\n\t LLL: 'D MMMM YYYY, A h:mm',\n\t LLLL: 'dddd, D MMMM YYYY, A h:mm',\n\t },\n\t calendar: {\n\t sameDay: '[དི་རིང] LT',\n\t nextDay: '[སང་ཉིན] LT',\n\t nextWeek: '[བདུན་ཕྲག་རྗེས་མ], LT',\n\t lastDay: '[ཁ་སང] LT',\n\t lastWeek: '[བདུན་ཕྲག་མཐའ་མ] dddd, LT',\n\t sameElse: 'L',\n\t },\n\t relativeTime: {\n\t future: '%s ལ་',\n\t past: '%s སྔན་ལ',\n\t s: 'ལམ་སང',\n\t ss: '%d སྐར་ཆ།',\n\t m: 'སྐར་མ་གཅིག',\n\t mm: '%d སྐར་མ',\n\t h: 'ཆུ་ཚོད་གཅིག',\n\t hh: '%d ཆུ་ཚོད',\n\t d: 'ཉིན་གཅིག',\n\t dd: '%d ཉིན་',\n\t M: 'ཟླ་བ་གཅིག',\n\t MM: '%d ཟླ་བ',\n\t y: 'ལོ་གཅིག',\n\t yy: '%d ལོ',\n\t },\n\t preparse: function (string) {\n\t return string.replace(/[༡༢༣༤༥༦༧༨༩༠]/g, function (match) {\n\t return numberMap[match];\n\t });\n\t },\n\t postformat: function (string) {\n\t return string.replace(/\\d/g, function (match) {\n\t return symbolMap[match];\n\t });\n\t },\n\t meridiemParse: /མཚན་མོ|ཞོགས་ཀས|ཉིན་གུང|དགོང་དག|མཚན་མོ/,\n\t meridiemHour: function (hour, meridiem) {\n\t if (hour === 12) {\n\t hour = 0;\n\t }\n\t if (\n\t (meridiem === 'མཚན་མོ' && hour >= 4) ||\n\t (meridiem === 'ཉིན་གུང' && hour < 5) ||\n\t meridiem === 'དགོང་དག'\n\t ) {\n\t return hour + 12;\n\t } else {\n\t return hour;\n\t }\n\t },\n\t meridiem: function (hour, minute, isLower) {\n\t if (hour < 4) {\n\t return 'མཚན་མོ';\n\t } else if (hour < 10) {\n\t return 'ཞོགས་ཀས';\n\t } else if (hour < 17) {\n\t return 'ཉིན་གུང';\n\t } else if (hour < 20) {\n\t return 'དགོང་དག';\n\t } else {\n\t return 'མཚན་མོ';\n\t }\n\t },\n\t week: {\n\t dow: 0, // Sunday is the first day of the week.\n\t doy: 6, // The week that contains Jan 6th is the first week of the year.\n\t },\n\t });\n\t\n\t return bo;\n\t\n\t})));\n\n\n/***/ }),\n\n/***/ 321:\n/***/ (function(module, exports, __webpack_require__) {\n\n\t//! moment.js locale configuration\n\t//! locale : Breton [br]\n\t//! author : Jean-Baptiste Le Duigou : https://github.com/jbleduigou\n\t\n\t;(function (global, factory) {\n\t true ? factory(__webpack_require__(1)) :\n\t typeof define === 'function' && define.amd ? define(['../moment'], factory) :\n\t factory(global.moment)\n\t}(this, (function (moment) { 'use strict';\n\t\n\t //! moment.js locale configuration\n\t\n\t function relativeTimeWithMutation(number, withoutSuffix, key) {\n\t var format = {\n\t mm: 'munutenn',\n\t MM: 'miz',\n\t dd: 'devezh',\n\t };\n\t return number + ' ' + mutation(format[key], number);\n\t }\n\t function specialMutationForYears(number) {\n\t switch (lastNumber(number)) {\n\t case 1:\n\t case 3:\n\t case 4:\n\t case 5:\n\t case 9:\n\t return number + ' bloaz';\n\t default:\n\t return number + ' vloaz';\n\t }\n\t }\n\t function lastNumber(number) {\n\t if (number > 9) {\n\t return lastNumber(number % 10);\n\t }\n\t return number;\n\t }\n\t function mutation(text, number) {\n\t if (number === 2) {\n\t return softMutation(text);\n\t }\n\t return text;\n\t }\n\t function softMutation(text) {\n\t var mutationTable = {\n\t m: 'v',\n\t b: 'v',\n\t d: 'z',\n\t };\n\t if (mutationTable[text.charAt(0)] === undefined) {\n\t return text;\n\t }\n\t return mutationTable[text.charAt(0)] + text.substring(1);\n\t }\n\t\n\t var monthsParse = [\n\t /^gen/i,\n\t /^c[ʼ\\']hwe/i,\n\t /^meu/i,\n\t /^ebr/i,\n\t /^mae/i,\n\t /^(mez|eve)/i,\n\t /^gou/i,\n\t /^eos/i,\n\t /^gwe/i,\n\t /^her/i,\n\t /^du/i,\n\t /^ker/i,\n\t ],\n\t 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\t monthsStrictRegex = /^(genver|c[ʼ\\']hwevrer|meurzh|ebrel|mae|mezheven|gouere|eost|gwengolo|here|du|kerzu)/i,\n\t monthsShortStrictRegex = /^(gen|c[ʼ\\']hwe|meu|ebr|mae|eve|gou|eos|gwe|her|du|ker)/i,\n\t fullWeekdaysParse = [\n\t /^sul/i,\n\t /^lun/i,\n\t /^meurzh/i,\n\t /^merc[ʼ\\']her/i,\n\t /^yaou/i,\n\t /^gwener/i,\n\t /^sadorn/i,\n\t ],\n\t shortWeekdaysParse = [\n\t /^Sul/i,\n\t /^Lun/i,\n\t /^Meu/i,\n\t /^Mer/i,\n\t /^Yao/i,\n\t /^Gwe/i,\n\t /^Sad/i,\n\t ],\n\t minWeekdaysParse = [\n\t /^Su/i,\n\t /^Lu/i,\n\t /^Me([^r]|$)/i,\n\t /^Mer/i,\n\t /^Ya/i,\n\t /^Gw/i,\n\t /^Sa/i,\n\t ];\n\t\n\t var br = moment.defineLocale('br', {\n\t months: 'Genver_Cʼhwevrer_Meurzh_Ebrel_Mae_Mezheven_Gouere_Eost_Gwengolo_Here_Du_Kerzu'.split(\n\t '_'\n\t ),\n\t monthsShort: 'Gen_Cʼhwe_Meu_Ebr_Mae_Eve_Gou_Eos_Gwe_Her_Du_Ker'.split('_'),\n\t weekdays: 'Sul_Lun_Meurzh_Mercʼher_Yaou_Gwener_Sadorn'.split('_'),\n\t weekdaysShort: 'Sul_Lun_Meu_Mer_Yao_Gwe_Sad'.split('_'),\n\t weekdaysMin: 'Su_Lu_Me_Mer_Ya_Gw_Sa'.split('_'),\n\t weekdaysParse: minWeekdaysParse,\n\t fullWeekdaysParse: fullWeekdaysParse,\n\t shortWeekdaysParse: shortWeekdaysParse,\n\t minWeekdaysParse: minWeekdaysParse,\n\t\n\t monthsRegex: monthsRegex,\n\t monthsShortRegex: monthsRegex,\n\t monthsStrictRegex: monthsStrictRegex,\n\t monthsShortStrictRegex: monthsShortStrictRegex,\n\t monthsParse: monthsParse,\n\t longMonthsParse: monthsParse,\n\t shortMonthsParse: monthsParse,\n\t\n\t longDateFormat: {\n\t LT: 'HH:mm',\n\t LTS: 'HH:mm:ss',\n\t L: 'DD/MM/YYYY',\n\t LL: 'D [a viz] MMMM YYYY',\n\t LLL: 'D [a viz] MMMM YYYY HH:mm',\n\t LLLL: 'dddd, D [a viz] MMMM YYYY HH:mm',\n\t },\n\t calendar: {\n\t sameDay: '[Hiziv da] LT',\n\t nextDay: '[Warcʼhoazh da] LT',\n\t nextWeek: 'dddd [da] LT',\n\t lastDay: '[Decʼh da] LT',\n\t lastWeek: 'dddd [paset da] LT',\n\t sameElse: 'L',\n\t },\n\t relativeTime: {\n\t future: 'a-benn %s',\n\t past: '%s ʼzo',\n\t s: 'un nebeud segondennoù',\n\t ss: '%d eilenn',\n\t m: 'ur vunutenn',\n\t mm: relativeTimeWithMutation,\n\t h: 'un eur',\n\t hh: '%d eur',\n\t d: 'un devezh',\n\t dd: relativeTimeWithMutation,\n\t M: 'ur miz',\n\t MM: relativeTimeWithMutation,\n\t y: 'ur bloaz',\n\t yy: specialMutationForYears,\n\t },\n\t dayOfMonthOrdinalParse: /\\d{1,2}(añ|vet)/,\n\t ordinal: function (number) {\n\t var output = number === 1 ? 'añ' : 'vet';\n\t return number + output;\n\t },\n\t week: {\n\t dow: 1, // Monday is the first day of the week.\n\t doy: 4, // The week that contains Jan 4th is the first week of the year.\n\t },\n\t meridiemParse: /a.m.|g.m./, // goude merenn | a-raok merenn\n\t isPM: function (token) {\n\t return token === 'g.m.';\n\t },\n\t meridiem: function (hour, minute, isLower) {\n\t return hour < 12 ? 'a.m.' : 'g.m.';\n\t },\n\t });\n\t\n\t return br;\n\t\n\t})));\n\n\n/***/ }),\n\n/***/ 322:\n/***/ (function(module, exports, __webpack_require__) {\n\n\t//! moment.js locale configuration\n\t//! locale : Bosnian [bs]\n\t//! author : Nedim Cholich : https://github.com/frontyard\n\t//! based on (hr) translation by Bojan Marković\n\t\n\t;(function (global, factory) {\n\t true ? factory(__webpack_require__(1)) :\n\t typeof define === 'function' && define.amd ? define(['../moment'], factory) :\n\t factory(global.moment)\n\t}(this, (function (moment) { 'use strict';\n\t\n\t //! moment.js locale configuration\n\t\n\t function translate(number, withoutSuffix, key) {\n\t var result = number + ' ';\n\t switch (key) {\n\t case 'ss':\n\t if (number === 1) {\n\t result += 'sekunda';\n\t } else if (number === 2 || number === 3 || number === 4) {\n\t result += 'sekunde';\n\t } else {\n\t result += 'sekundi';\n\t }\n\t return result;\n\t case 'm':\n\t return withoutSuffix ? 'jedna minuta' : 'jedne minute';\n\t case 'mm':\n\t if (number === 1) {\n\t result += 'minuta';\n\t } else if (number === 2 || number === 3 || number === 4) {\n\t result += 'minute';\n\t } else {\n\t result += 'minuta';\n\t }\n\t return result;\n\t case 'h':\n\t return withoutSuffix ? 'jedan sat' : 'jednog sata';\n\t case 'hh':\n\t if (number === 1) {\n\t result += 'sat';\n\t } else if (number === 2 || number === 3 || number === 4) {\n\t result += 'sata';\n\t } else {\n\t result += 'sati';\n\t }\n\t return result;\n\t case 'dd':\n\t if (number === 1) {\n\t result += 'dan';\n\t } else {\n\t result += 'dana';\n\t }\n\t return result;\n\t case 'MM':\n\t if (number === 1) {\n\t result += 'mjesec';\n\t } else if (number === 2 || number === 3 || number === 4) {\n\t result += 'mjeseca';\n\t } else {\n\t result += 'mjeseci';\n\t }\n\t return result;\n\t case 'yy':\n\t if (number === 1) {\n\t result += 'godina';\n\t } else if (number === 2 || number === 3 || number === 4) {\n\t result += 'godine';\n\t } else {\n\t result += 'godina';\n\t }\n\t return result;\n\t }\n\t }\n\t\n\t var bs = moment.defineLocale('bs', {\n\t months: 'januar_februar_mart_april_maj_juni_juli_august_septembar_oktobar_novembar_decembar'.split(\n\t '_'\n\t ),\n\t monthsShort: 'jan._feb._mar._apr._maj._jun._jul._aug._sep._okt._nov._dec.'.split(\n\t '_'\n\t ),\n\t monthsParseExact: true,\n\t weekdays: 'nedjelja_ponedjeljak_utorak_srijeda_četvrtak_petak_subota'.split(\n\t '_'\n\t ),\n\t weekdaysShort: 'ned._pon._uto._sri._čet._pet._sub.'.split('_'),\n\t weekdaysMin: 'ne_po_ut_sr_če_pe_su'.split('_'),\n\t weekdaysParseExact: true,\n\t longDateFormat: {\n\t LT: 'H:mm',\n\t LTS: 'H:mm:ss',\n\t L: 'DD.MM.YYYY',\n\t LL: 'D. MMMM YYYY',\n\t LLL: 'D. MMMM YYYY H:mm',\n\t LLLL: 'dddd, D. MMMM YYYY H:mm',\n\t },\n\t calendar: {\n\t sameDay: '[danas u] LT',\n\t nextDay: '[sutra u] LT',\n\t nextWeek: function () {\n\t switch (this.day()) {\n\t case 0:\n\t return '[u] [nedjelju] [u] LT';\n\t case 3:\n\t return '[u] [srijedu] [u] LT';\n\t case 6:\n\t return '[u] [subotu] [u] LT';\n\t case 1:\n\t case 2:\n\t case 4:\n\t case 5:\n\t return '[u] dddd [u] LT';\n\t }\n\t },\n\t lastDay: '[jučer u] LT',\n\t lastWeek: function () {\n\t switch (this.day()) {\n\t case 0:\n\t case 3:\n\t return '[prošlu] dddd [u] LT';\n\t case 6:\n\t return '[prošle] [subote] [u] LT';\n\t case 1:\n\t case 2:\n\t case 4:\n\t case 5:\n\t return '[prošli] dddd [u] LT';\n\t }\n\t },\n\t sameElse: 'L',\n\t },\n\t relativeTime: {\n\t future: 'za %s',\n\t past: 'prije %s',\n\t s: 'par sekundi',\n\t ss: translate,\n\t m: translate,\n\t mm: translate,\n\t h: translate,\n\t hh: translate,\n\t d: 'dan',\n\t dd: translate,\n\t M: 'mjesec',\n\t MM: translate,\n\t y: 'godinu',\n\t yy: translate,\n\t },\n\t dayOfMonthOrdinalParse: /\\d{1,2}\\./,\n\t ordinal: '%d.',\n\t week: {\n\t dow: 1, // Monday is the first day of the week.\n\t doy: 7, // The week that contains Jan 7th is the first week of the year.\n\t },\n\t });\n\t\n\t return bs;\n\t\n\t})));\n\n\n/***/ }),\n\n/***/ 323:\n/***/ (function(module, exports, __webpack_require__) {\n\n\t//! moment.js locale configuration\n\t//! locale : Catalan [ca]\n\t//! author : Juan G. Hurtado : https://github.com/juanghurtado\n\t\n\t;(function (global, factory) {\n\t true ? factory(__webpack_require__(1)) :\n\t typeof define === 'function' && define.amd ? define(['../moment'], factory) :\n\t factory(global.moment)\n\t}(this, (function (moment) { 'use strict';\n\t\n\t //! moment.js locale configuration\n\t\n\t var ca = moment.defineLocale('ca', {\n\t months: {\n\t standalone: 'gener_febrer_març_abril_maig_juny_juliol_agost_setembre_octubre_novembre_desembre'.split(\n\t '_'\n\t ),\n\t 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\t '_'\n\t ),\n\t isFormat: /D[oD]?(\\s)+MMMM/,\n\t },\n\t monthsShort: 'gen._febr._març_abr._maig_juny_jul._ag._set._oct._nov._des.'.split(\n\t '_'\n\t ),\n\t monthsParseExact: true,\n\t weekdays: 'diumenge_dilluns_dimarts_dimecres_dijous_divendres_dissabte'.split(\n\t '_'\n\t ),\n\t weekdaysShort: 'dg._dl._dt._dc._dj._dv._ds.'.split('_'),\n\t weekdaysMin: 'dg_dl_dt_dc_dj_dv_ds'.split('_'),\n\t weekdaysParseExact: true,\n\t longDateFormat: {\n\t LT: 'H:mm',\n\t LTS: 'H:mm:ss',\n\t L: 'DD/MM/YYYY',\n\t LL: 'D MMMM [de] YYYY',\n\t ll: 'D MMM YYYY',\n\t LLL: 'D MMMM [de] YYYY [a les] H:mm',\n\t lll: 'D MMM YYYY, H:mm',\n\t LLLL: 'dddd D MMMM [de] YYYY [a les] H:mm',\n\t llll: 'ddd D MMM YYYY, H:mm',\n\t },\n\t calendar: {\n\t sameDay: function () {\n\t return '[avui a ' + (this.hours() !== 1 ? 'les' : 'la') + '] LT';\n\t },\n\t nextDay: function () {\n\t return '[demà a ' + (this.hours() !== 1 ? 'les' : 'la') + '] LT';\n\t },\n\t nextWeek: function () {\n\t return 'dddd [a ' + (this.hours() !== 1 ? 'les' : 'la') + '] LT';\n\t },\n\t lastDay: function () {\n\t return '[ahir a ' + (this.hours() !== 1 ? 'les' : 'la') + '] LT';\n\t },\n\t lastWeek: function () {\n\t return (\n\t '[el] dddd [passat a ' +\n\t (this.hours() !== 1 ? 'les' : 'la') +\n\t '] LT'\n\t );\n\t },\n\t sameElse: 'L',\n\t },\n\t relativeTime: {\n\t future: \"d'aquí %s\",\n\t past: 'fa %s',\n\t s: 'uns segons',\n\t ss: '%d segons',\n\t m: 'un minut',\n\t mm: '%d minuts',\n\t h: 'una hora',\n\t hh: '%d hores',\n\t d: 'un dia',\n\t dd: '%d dies',\n\t M: 'un mes',\n\t MM: '%d mesos',\n\t y: 'un any',\n\t yy: '%d anys',\n\t },\n\t dayOfMonthOrdinalParse: /\\d{1,2}(r|n|t|è|a)/,\n\t ordinal: function (number, period) {\n\t var output =\n\t number === 1\n\t ? 'r'\n\t : number === 2\n\t ? 'n'\n\t : number === 3\n\t ? 'r'\n\t : number === 4\n\t ? 't'\n\t : 'è';\n\t if (period === 'w' || period === 'W') {\n\t output = 'a';\n\t }\n\t return number + output;\n\t },\n\t week: {\n\t dow: 1, // Monday is the first day of the week.\n\t doy: 4, // The week that contains Jan 4th is the first week of the year.\n\t },\n\t });\n\t\n\t return ca;\n\t\n\t})));\n\n\n/***/ }),\n\n/***/ 324:\n/***/ (function(module, exports, __webpack_require__) {\n\n\t//! moment.js locale configuration\n\t//! locale : Czech [cs]\n\t//! author : petrbela : https://github.com/petrbela\n\t\n\t;(function (global, factory) {\n\t true ? factory(__webpack_require__(1)) :\n\t typeof define === 'function' && define.amd ? define(['../moment'], factory) :\n\t factory(global.moment)\n\t}(this, (function (moment) { 'use strict';\n\t\n\t //! moment.js locale configuration\n\t\n\t var months = 'leden_únor_březen_duben_květen_červen_červenec_srpen_září_říjen_listopad_prosinec'.split(\n\t '_'\n\t ),\n\t monthsShort = 'led_úno_bře_dub_kvě_čvn_čvc_srp_zář_říj_lis_pro'.split('_'),\n\t monthsParse = [\n\t /^led/i,\n\t /^úno/i,\n\t /^bře/i,\n\t /^dub/i,\n\t /^kvě/i,\n\t /^(čvn|červen$|června)/i,\n\t /^(čvc|červenec|července)/i,\n\t /^srp/i,\n\t /^zář/i,\n\t /^říj/i,\n\t /^lis/i,\n\t /^pro/i,\n\t ],\n\t // NOTE: 'červen' is substring of 'červenec'; therefore 'červenec' must precede 'červen' in the regex to be fully matched.\n\t // Otherwise parser matches '1. červenec' as '1. červen' + 'ec'.\n\t 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\t\n\t function plural(n) {\n\t return n > 1 && n < 5 && ~~(n / 10) !== 1;\n\t }\n\t function translate(number, withoutSuffix, key, isFuture) {\n\t var result = number + ' ';\n\t switch (key) {\n\t case 's': // a few seconds / in a few seconds / a few seconds ago\n\t return withoutSuffix || isFuture ? 'pár sekund' : 'pár sekundami';\n\t case 'ss': // 9 seconds / in 9 seconds / 9 seconds ago\n\t if (withoutSuffix || isFuture) {\n\t return result + (plural(number) ? 'sekundy' : 'sekund');\n\t } else {\n\t return result + 'sekundami';\n\t }\n\t case 'm': // a minute / in a minute / a minute ago\n\t return withoutSuffix ? 'minuta' : isFuture ? 'minutu' : 'minutou';\n\t case 'mm': // 9 minutes / in 9 minutes / 9 minutes ago\n\t if (withoutSuffix || isFuture) {\n\t return result + (plural(number) ? 'minuty' : 'minut');\n\t } else {\n\t return result + 'minutami';\n\t }\n\t case 'h': // an hour / in an hour / an hour ago\n\t return withoutSuffix ? 'hodina' : isFuture ? 'hodinu' : 'hodinou';\n\t case 'hh': // 9 hours / in 9 hours / 9 hours ago\n\t if (withoutSuffix || isFuture) {\n\t return result + (plural(number) ? 'hodiny' : 'hodin');\n\t } else {\n\t return result + 'hodinami';\n\t }\n\t case 'd': // a day / in a day / a day ago\n\t return withoutSuffix || isFuture ? 'den' : 'dnem';\n\t case 'dd': // 9 days / in 9 days / 9 days ago\n\t if (withoutSuffix || isFuture) {\n\t return result + (plural(number) ? 'dny' : 'dní');\n\t } else {\n\t return result + 'dny';\n\t }\n\t case 'M': // a month / in a month / a month ago\n\t return withoutSuffix || isFuture ? 'měsíc' : 'měsícem';\n\t case 'MM': // 9 months / in 9 months / 9 months ago\n\t if (withoutSuffix || isFuture) {\n\t return result + (plural(number) ? 'měsíce' : 'měsíců');\n\t } else {\n\t return result + 'měsíci';\n\t }\n\t case 'y': // a year / in a year / a year ago\n\t return withoutSuffix || isFuture ? 'rok' : 'rokem';\n\t case 'yy': // 9 years / in 9 years / 9 years ago\n\t if (withoutSuffix || isFuture) {\n\t return result + (plural(number) ? 'roky' : 'let');\n\t } else {\n\t return result + 'lety';\n\t }\n\t }\n\t }\n\t\n\t var cs = moment.defineLocale('cs', {\n\t months: months,\n\t monthsShort: monthsShort,\n\t monthsRegex: monthsRegex,\n\t monthsShortRegex: monthsRegex,\n\t // NOTE: 'červen' is substring of 'červenec'; therefore 'červenec' must precede 'červen' in the regex to be fully matched.\n\t // Otherwise parser matches '1. červenec' as '1. červen' + 'ec'.\n\t 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\t monthsShortStrictRegex: /^(led|úno|bře|dub|kvě|čvn|čvc|srp|zář|říj|lis|pro)/i,\n\t monthsParse: monthsParse,\n\t longMonthsParse: monthsParse,\n\t shortMonthsParse: monthsParse,\n\t weekdays: 'neděle_pondělí_úterý_středa_čtvrtek_pátek_sobota'.split('_'),\n\t weekdaysShort: 'ne_po_út_st_čt_pá_so'.split('_'),\n\t weekdaysMin: 'ne_po_út_st_čt_pá_so'.split('_'),\n\t longDateFormat: {\n\t LT: 'H:mm',\n\t LTS: 'H:mm:ss',\n\t L: 'DD.MM.YYYY',\n\t LL: 'D. MMMM YYYY',\n\t LLL: 'D. MMMM YYYY H:mm',\n\t LLLL: 'dddd D. MMMM YYYY H:mm',\n\t l: 'D. M. YYYY',\n\t },\n\t calendar: {\n\t sameDay: '[dnes v] LT',\n\t nextDay: '[zítra v] LT',\n\t nextWeek: function () {\n\t switch (this.day()) {\n\t case 0:\n\t return '[v neděli v] LT';\n\t case 1:\n\t case 2:\n\t return '[v] dddd [v] LT';\n\t case 3:\n\t return '[ve středu v] LT';\n\t case 4:\n\t return '[ve čtvrtek v] LT';\n\t case 5:\n\t return '[v pátek v] LT';\n\t case 6:\n\t return '[v sobotu v] LT';\n\t }\n\t },\n\t lastDay: '[včera v] LT',\n\t lastWeek: function () {\n\t switch (this.day()) {\n\t case 0:\n\t return '[minulou neděli v] LT';\n\t case 1:\n\t case 2:\n\t return '[minulé] dddd [v] LT';\n\t case 3:\n\t return '[minulou středu v] LT';\n\t case 4:\n\t case 5:\n\t return '[minulý] dddd [v] LT';\n\t case 6:\n\t return '[minulou sobotu v] LT';\n\t }\n\t },\n\t sameElse: 'L',\n\t },\n\t relativeTime: {\n\t future: 'za %s',\n\t past: 'před %s',\n\t s: translate,\n\t ss: translate,\n\t m: translate,\n\t mm: translate,\n\t h: translate,\n\t hh: translate,\n\t d: translate,\n\t dd: translate,\n\t M: translate,\n\t MM: translate,\n\t y: translate,\n\t yy: translate,\n\t },\n\t dayOfMonthOrdinalParse: /\\d{1,2}\\./,\n\t ordinal: '%d.',\n\t week: {\n\t dow: 1, // Monday is the first day of the week.\n\t doy: 4, // The week that contains Jan 4th is the first week of the year.\n\t },\n\t });\n\t\n\t return cs;\n\t\n\t})));\n\n\n/***/ }),\n\n/***/ 325:\n/***/ (function(module, exports, __webpack_require__) {\n\n\t//! moment.js locale configuration\n\t//! locale : Chuvash [cv]\n\t//! author : Anatoly Mironov : https://github.com/mirontoli\n\t\n\t;(function (global, factory) {\n\t true ? factory(__webpack_require__(1)) :\n\t typeof define === 'function' && define.amd ? define(['../moment'], factory) :\n\t factory(global.moment)\n\t}(this, (function (moment) { 'use strict';\n\t\n\t //! moment.js locale configuration\n\t\n\t var cv = moment.defineLocale('cv', {\n\t months: 'кӑрлач_нарӑс_пуш_ака_май_ҫӗртме_утӑ_ҫурла_авӑн_юпа_чӳк_раштав'.split(\n\t '_'\n\t ),\n\t monthsShort: 'кӑр_нар_пуш_ака_май_ҫӗр_утӑ_ҫур_авн_юпа_чӳк_раш'.split('_'),\n\t weekdays: 'вырсарникун_тунтикун_ытларикун_юнкун_кӗҫнерникун_эрнекун_шӑматкун'.split(\n\t '_'\n\t ),\n\t weekdaysShort: 'выр_тун_ытл_юн_кӗҫ_эрн_шӑм'.split('_'),\n\t weekdaysMin: 'вр_тн_ыт_юн_кҫ_эр_шм'.split('_'),\n\t longDateFormat: {\n\t LT: 'HH:mm',\n\t LTS: 'HH:mm:ss',\n\t L: 'DD-MM-YYYY',\n\t LL: 'YYYY [ҫулхи] MMMM [уйӑхӗн] D[-мӗшӗ]',\n\t LLL: 'YYYY [ҫулхи] MMMM [уйӑхӗн] D[-мӗшӗ], HH:mm',\n\t LLLL: 'dddd, YYYY [ҫулхи] MMMM [уйӑхӗн] D[-мӗшӗ], HH:mm',\n\t },\n\t calendar: {\n\t sameDay: '[Паян] LT [сехетре]',\n\t nextDay: '[Ыран] LT [сехетре]',\n\t lastDay: '[Ӗнер] LT [сехетре]',\n\t nextWeek: '[Ҫитес] dddd LT [сехетре]',\n\t lastWeek: '[Иртнӗ] dddd LT [сехетре]',\n\t sameElse: 'L',\n\t },\n\t relativeTime: {\n\t future: function (output) {\n\t var affix = /сехет$/i.exec(output)\n\t ? 'рен'\n\t : /ҫул$/i.exec(output)\n\t ? 'тан'\n\t : 'ран';\n\t return output + affix;\n\t },\n\t past: '%s каялла',\n\t s: 'пӗр-ик ҫеккунт',\n\t ss: '%d ҫеккунт',\n\t m: 'пӗр минут',\n\t mm: '%d минут',\n\t h: 'пӗр сехет',\n\t hh: '%d сехет',\n\t d: 'пӗр кун',\n\t dd: '%d кун',\n\t M: 'пӗр уйӑх',\n\t MM: '%d уйӑх',\n\t y: 'пӗр ҫул',\n\t yy: '%d ҫул',\n\t },\n\t dayOfMonthOrdinalParse: /\\d{1,2}-мӗш/,\n\t ordinal: '%d-мӗш',\n\t week: {\n\t dow: 1, // Monday is the first day of the week.\n\t doy: 7, // The week that contains Jan 7th is the first week of the year.\n\t },\n\t });\n\t\n\t return cv;\n\t\n\t})));\n\n\n/***/ }),\n\n/***/ 326:\n/***/ (function(module, exports, __webpack_require__) {\n\n\t//! moment.js locale configuration\n\t//! locale : Welsh [cy]\n\t//! author : Robert Allen : https://github.com/robgallen\n\t//! author : https://github.com/ryangreaves\n\t\n\t;(function (global, factory) {\n\t true ? factory(__webpack_require__(1)) :\n\t typeof define === 'function' && define.amd ? define(['../moment'], factory) :\n\t factory(global.moment)\n\t}(this, (function (moment) { 'use strict';\n\t\n\t //! moment.js locale configuration\n\t\n\t var cy = moment.defineLocale('cy', {\n\t months: 'Ionawr_Chwefror_Mawrth_Ebrill_Mai_Mehefin_Gorffennaf_Awst_Medi_Hydref_Tachwedd_Rhagfyr'.split(\n\t '_'\n\t ),\n\t monthsShort: 'Ion_Chwe_Maw_Ebr_Mai_Meh_Gor_Aws_Med_Hyd_Tach_Rhag'.split(\n\t '_'\n\t ),\n\t weekdays: 'Dydd Sul_Dydd Llun_Dydd Mawrth_Dydd Mercher_Dydd Iau_Dydd Gwener_Dydd Sadwrn'.split(\n\t '_'\n\t ),\n\t weekdaysShort: 'Sul_Llun_Maw_Mer_Iau_Gwe_Sad'.split('_'),\n\t weekdaysMin: 'Su_Ll_Ma_Me_Ia_Gw_Sa'.split('_'),\n\t weekdaysParseExact: true,\n\t // time formats are the same as en-gb\n\t longDateFormat: {\n\t LT: 'HH:mm',\n\t LTS: 'HH:mm:ss',\n\t L: 'DD/MM/YYYY',\n\t LL: 'D MMMM YYYY',\n\t LLL: 'D MMMM YYYY HH:mm',\n\t LLLL: 'dddd, D MMMM YYYY HH:mm',\n\t },\n\t calendar: {\n\t sameDay: '[Heddiw am] LT',\n\t nextDay: '[Yfory am] LT',\n\t nextWeek: 'dddd [am] LT',\n\t lastDay: '[Ddoe am] LT',\n\t lastWeek: 'dddd [diwethaf am] LT',\n\t sameElse: 'L',\n\t },\n\t relativeTime: {\n\t future: 'mewn %s',\n\t past: '%s yn ôl',\n\t s: 'ychydig eiliadau',\n\t ss: '%d eiliad',\n\t m: 'munud',\n\t mm: '%d munud',\n\t h: 'awr',\n\t hh: '%d awr',\n\t d: 'diwrnod',\n\t dd: '%d diwrnod',\n\t M: 'mis',\n\t MM: '%d mis',\n\t y: 'blwyddyn',\n\t yy: '%d flynedd',\n\t },\n\t dayOfMonthOrdinalParse: /\\d{1,2}(fed|ain|af|il|ydd|ed|eg)/,\n\t // traditional ordinal numbers above 31 are not commonly used in colloquial Welsh\n\t ordinal: function (number) {\n\t var b = number,\n\t output = '',\n\t lookup = [\n\t '',\n\t 'af',\n\t 'il',\n\t 'ydd',\n\t 'ydd',\n\t 'ed',\n\t 'ed',\n\t 'ed',\n\t 'fed',\n\t 'fed',\n\t 'fed', // 1af to 10fed\n\t 'eg',\n\t 'fed',\n\t 'eg',\n\t 'eg',\n\t 'fed',\n\t 'eg',\n\t 'eg',\n\t 'fed',\n\t 'eg',\n\t 'fed', // 11eg to 20fed\n\t ];\n\t if (b > 20) {\n\t if (b === 40 || b === 50 || b === 60 || b === 80 || b === 100) {\n\t output = 'fed'; // not 30ain, 70ain or 90ain\n\t } else {\n\t output = 'ain';\n\t }\n\t } else if (b > 0) {\n\t output = lookup[b];\n\t }\n\t return number + output;\n\t },\n\t week: {\n\t dow: 1, // Monday is the first day of the week.\n\t doy: 4, // The week that contains Jan 4th is the first week of the year.\n\t },\n\t });\n\t\n\t return cy;\n\t\n\t})));\n\n\n/***/ }),\n\n/***/ 327:\n/***/ (function(module, exports, __webpack_require__) {\n\n\t//! moment.js locale configuration\n\t//! locale : Danish [da]\n\t//! author : Ulrik Nielsen : https://github.com/mrbase\n\t\n\t;(function (global, factory) {\n\t true ? factory(__webpack_require__(1)) :\n\t typeof define === 'function' && define.amd ? define(['../moment'], factory) :\n\t factory(global.moment)\n\t}(this, (function (moment) { 'use strict';\n\t\n\t //! moment.js locale configuration\n\t\n\t var da = moment.defineLocale('da', {\n\t months: 'januar_februar_marts_april_maj_juni_juli_august_september_oktober_november_december'.split(\n\t '_'\n\t ),\n\t monthsShort: 'jan_feb_mar_apr_maj_jun_jul_aug_sep_okt_nov_dec'.split('_'),\n\t weekdays: 'søndag_mandag_tirsdag_onsdag_torsdag_fredag_lørdag'.split('_'),\n\t weekdaysShort: 'søn_man_tir_ons_tor_fre_lør'.split('_'),\n\t weekdaysMin: 'sø_ma_ti_on_to_fr_lø'.split('_'),\n\t longDateFormat: {\n\t LT: 'HH:mm',\n\t LTS: 'HH:mm:ss',\n\t L: 'DD.MM.YYYY',\n\t LL: 'D. MMMM YYYY',\n\t LLL: 'D. MMMM YYYY HH:mm',\n\t LLLL: 'dddd [d.] D. MMMM YYYY [kl.] HH:mm',\n\t },\n\t calendar: {\n\t sameDay: '[i dag kl.] LT',\n\t nextDay: '[i morgen kl.] LT',\n\t nextWeek: 'på dddd [kl.] LT',\n\t lastDay: '[i går kl.] LT',\n\t lastWeek: '[i] dddd[s kl.] LT',\n\t sameElse: 'L',\n\t },\n\t relativeTime: {\n\t future: 'om %s',\n\t past: '%s siden',\n\t s: 'få sekunder',\n\t ss: '%d sekunder',\n\t m: 'et minut',\n\t mm: '%d minutter',\n\t h: 'en time',\n\t hh: '%d timer',\n\t d: 'en dag',\n\t dd: '%d dage',\n\t M: 'en måned',\n\t MM: '%d måneder',\n\t y: 'et år',\n\t yy: '%d år',\n\t },\n\t dayOfMonthOrdinalParse: /\\d{1,2}\\./,\n\t ordinal: '%d.',\n\t week: {\n\t dow: 1, // Monday is the first day of the week.\n\t doy: 4, // The week that contains Jan 4th is the first week of the year.\n\t },\n\t });\n\t\n\t return da;\n\t\n\t})));\n\n\n/***/ }),\n\n/***/ 328:\n/***/ (function(module, exports, __webpack_require__) {\n\n\t//! moment.js locale configuration\n\t//! locale : German (Austria) [de-at]\n\t//! author : lluchs : https://github.com/lluchs\n\t//! author: Menelion Elensúle: https://github.com/Oire\n\t//! author : Martin Groller : https://github.com/MadMG\n\t//! author : Mikolaj Dadela : https://github.com/mik01aj\n\t\n\t;(function (global, factory) {\n\t true ? factory(__webpack_require__(1)) :\n\t typeof define === 'function' && define.amd ? define(['../moment'], factory) :\n\t factory(global.moment)\n\t}(this, (function (moment) { 'use strict';\n\t\n\t //! moment.js locale configuration\n\t\n\t function processRelativeTime(number, withoutSuffix, key, isFuture) {\n\t var format = {\n\t m: ['eine Minute', 'einer Minute'],\n\t h: ['eine Stunde', 'einer Stunde'],\n\t d: ['ein Tag', 'einem Tag'],\n\t dd: [number + ' Tage', number + ' Tagen'],\n\t w: ['eine Woche', 'einer Woche'],\n\t M: ['ein Monat', 'einem Monat'],\n\t MM: [number + ' Monate', number + ' Monaten'],\n\t y: ['ein Jahr', 'einem Jahr'],\n\t yy: [number + ' Jahre', number + ' Jahren'],\n\t };\n\t return withoutSuffix ? format[key][0] : format[key][1];\n\t }\n\t\n\t var deAt = moment.defineLocale('de-at', {\n\t months: 'Jänner_Februar_März_April_Mai_Juni_Juli_August_September_Oktober_November_Dezember'.split(\n\t '_'\n\t ),\n\t monthsShort: 'Jän._Feb._März_Apr._Mai_Juni_Juli_Aug._Sep._Okt._Nov._Dez.'.split(\n\t '_'\n\t ),\n\t monthsParseExact: true,\n\t weekdays: 'Sonntag_Montag_Dienstag_Mittwoch_Donnerstag_Freitag_Samstag'.split(\n\t '_'\n\t ),\n\t weekdaysShort: 'So._Mo._Di._Mi._Do._Fr._Sa.'.split('_'),\n\t weekdaysMin: 'So_Mo_Di_Mi_Do_Fr_Sa'.split('_'),\n\t weekdaysParseExact: true,\n\t longDateFormat: {\n\t LT: 'HH:mm',\n\t LTS: 'HH:mm:ss',\n\t L: 'DD.MM.YYYY',\n\t LL: 'D. MMMM YYYY',\n\t LLL: 'D. MMMM YYYY HH:mm',\n\t LLLL: 'dddd, D. MMMM YYYY HH:mm',\n\t },\n\t calendar: {\n\t sameDay: '[heute um] LT [Uhr]',\n\t sameElse: 'L',\n\t nextDay: '[morgen um] LT [Uhr]',\n\t nextWeek: 'dddd [um] LT [Uhr]',\n\t lastDay: '[gestern um] LT [Uhr]',\n\t lastWeek: '[letzten] dddd [um] LT [Uhr]',\n\t },\n\t relativeTime: {\n\t future: 'in %s',\n\t past: 'vor %s',\n\t s: 'ein paar Sekunden',\n\t ss: '%d Sekunden',\n\t m: processRelativeTime,\n\t mm: '%d Minuten',\n\t h: processRelativeTime,\n\t hh: '%d Stunden',\n\t d: processRelativeTime,\n\t dd: processRelativeTime,\n\t w: processRelativeTime,\n\t ww: '%d Wochen',\n\t M: processRelativeTime,\n\t MM: processRelativeTime,\n\t y: processRelativeTime,\n\t yy: processRelativeTime,\n\t },\n\t dayOfMonthOrdinalParse: /\\d{1,2}\\./,\n\t ordinal: '%d.',\n\t week: {\n\t dow: 1, // Monday is the first day of the week.\n\t doy: 4, // The week that contains Jan 4th is the first week of the year.\n\t },\n\t });\n\t\n\t return deAt;\n\t\n\t})));\n\n\n/***/ }),\n\n/***/ 329:\n/***/ (function(module, exports, __webpack_require__) {\n\n\t//! moment.js locale configuration\n\t//! locale : German (Switzerland) [de-ch]\n\t//! author : sschueller : https://github.com/sschueller\n\t\n\t;(function (global, factory) {\n\t true ? factory(__webpack_require__(1)) :\n\t typeof define === 'function' && define.amd ? define(['../moment'], factory) :\n\t factory(global.moment)\n\t}(this, (function (moment) { 'use strict';\n\t\n\t //! moment.js locale configuration\n\t\n\t function processRelativeTime(number, withoutSuffix, key, isFuture) {\n\t var format = {\n\t m: ['eine Minute', 'einer Minute'],\n\t h: ['eine Stunde', 'einer Stunde'],\n\t d: ['ein Tag', 'einem Tag'],\n\t dd: [number + ' Tage', number + ' Tagen'],\n\t w: ['eine Woche', 'einer Woche'],\n\t M: ['ein Monat', 'einem Monat'],\n\t MM: [number + ' Monate', number + ' Monaten'],\n\t y: ['ein Jahr', 'einem Jahr'],\n\t yy: [number + ' Jahre', number + ' Jahren'],\n\t };\n\t return withoutSuffix ? format[key][0] : format[key][1];\n\t }\n\t\n\t var deCh = moment.defineLocale('de-ch', {\n\t months: 'Januar_Februar_März_April_Mai_Juni_Juli_August_September_Oktober_November_Dezember'.split(\n\t '_'\n\t ),\n\t monthsShort: 'Jan._Feb._März_Apr._Mai_Juni_Juli_Aug._Sep._Okt._Nov._Dez.'.split(\n\t '_'\n\t ),\n\t monthsParseExact: true,\n\t weekdays: 'Sonntag_Montag_Dienstag_Mittwoch_Donnerstag_Freitag_Samstag'.split(\n\t '_'\n\t ),\n\t weekdaysShort: 'So_Mo_Di_Mi_Do_Fr_Sa'.split('_'),\n\t weekdaysMin: 'So_Mo_Di_Mi_Do_Fr_Sa'.split('_'),\n\t weekdaysParseExact: true,\n\t longDateFormat: {\n\t LT: 'HH:mm',\n\t LTS: 'HH:mm:ss',\n\t L: 'DD.MM.YYYY',\n\t LL: 'D. MMMM YYYY',\n\t LLL: 'D. MMMM YYYY HH:mm',\n\t LLLL: 'dddd, D. MMMM YYYY HH:mm',\n\t },\n\t calendar: {\n\t sameDay: '[heute um] LT [Uhr]',\n\t sameElse: 'L',\n\t nextDay: '[morgen um] LT [Uhr]',\n\t nextWeek: 'dddd [um] LT [Uhr]',\n\t lastDay: '[gestern um] LT [Uhr]',\n\t lastWeek: '[letzten] dddd [um] LT [Uhr]',\n\t },\n\t relativeTime: {\n\t future: 'in %s',\n\t past: 'vor %s',\n\t s: 'ein paar Sekunden',\n\t ss: '%d Sekunden',\n\t m: processRelativeTime,\n\t mm: '%d Minuten',\n\t h: processRelativeTime,\n\t hh: '%d Stunden',\n\t d: processRelativeTime,\n\t dd: processRelativeTime,\n\t w: processRelativeTime,\n\t ww: '%d Wochen',\n\t M: processRelativeTime,\n\t MM: processRelativeTime,\n\t y: processRelativeTime,\n\t yy: processRelativeTime,\n\t },\n\t dayOfMonthOrdinalParse: /\\d{1,2}\\./,\n\t ordinal: '%d.',\n\t week: {\n\t dow: 1, // Monday is the first day of the week.\n\t doy: 4, // The week that contains Jan 4th is the first week of the year.\n\t },\n\t });\n\t\n\t return deCh;\n\t\n\t})));\n\n\n/***/ }),\n\n/***/ 330:\n/***/ (function(module, exports, __webpack_require__) {\n\n\t//! moment.js locale configuration\n\t//! locale : German [de]\n\t//! author : lluchs : https://github.com/lluchs\n\t//! author: Menelion Elensúle: https://github.com/Oire\n\t//! author : Mikolaj Dadela : https://github.com/mik01aj\n\t\n\t;(function (global, factory) {\n\t true ? factory(__webpack_require__(1)) :\n\t typeof define === 'function' && define.amd ? define(['../moment'], factory) :\n\t factory(global.moment)\n\t}(this, (function (moment) { 'use strict';\n\t\n\t //! moment.js locale configuration\n\t\n\t function processRelativeTime(number, withoutSuffix, key, isFuture) {\n\t var format = {\n\t m: ['eine Minute', 'einer Minute'],\n\t h: ['eine Stunde', 'einer Stunde'],\n\t d: ['ein Tag', 'einem Tag'],\n\t dd: [number + ' Tage', number + ' Tagen'],\n\t w: ['eine Woche', 'einer Woche'],\n\t M: ['ein Monat', 'einem Monat'],\n\t MM: [number + ' Monate', number + ' Monaten'],\n\t y: ['ein Jahr', 'einem Jahr'],\n\t yy: [number + ' Jahre', number + ' Jahren'],\n\t };\n\t return withoutSuffix ? format[key][0] : format[key][1];\n\t }\n\t\n\t var de = moment.defineLocale('de', {\n\t months: 'Januar_Februar_März_April_Mai_Juni_Juli_August_September_Oktober_November_Dezember'.split(\n\t '_'\n\t ),\n\t monthsShort: 'Jan._Feb._März_Apr._Mai_Juni_Juli_Aug._Sep._Okt._Nov._Dez.'.split(\n\t '_'\n\t ),\n\t monthsParseExact: true,\n\t weekdays: 'Sonntag_Montag_Dienstag_Mittwoch_Donnerstag_Freitag_Samstag'.split(\n\t '_'\n\t ),\n\t weekdaysShort: 'So._Mo._Di._Mi._Do._Fr._Sa.'.split('_'),\n\t weekdaysMin: 'So_Mo_Di_Mi_Do_Fr_Sa'.split('_'),\n\t weekdaysParseExact: true,\n\t longDateFormat: {\n\t LT: 'HH:mm',\n\t LTS: 'HH:mm:ss',\n\t L: 'DD.MM.YYYY',\n\t LL: 'D. MMMM YYYY',\n\t LLL: 'D. MMMM YYYY HH:mm',\n\t LLLL: 'dddd, D. MMMM YYYY HH:mm',\n\t },\n\t calendar: {\n\t sameDay: '[heute um] LT [Uhr]',\n\t sameElse: 'L',\n\t nextDay: '[morgen um] LT [Uhr]',\n\t nextWeek: 'dddd [um] LT [Uhr]',\n\t lastDay: '[gestern um] LT [Uhr]',\n\t lastWeek: '[letzten] dddd [um] LT [Uhr]',\n\t },\n\t relativeTime: {\n\t future: 'in %s',\n\t past: 'vor %s',\n\t s: 'ein paar Sekunden',\n\t ss: '%d Sekunden',\n\t m: processRelativeTime,\n\t mm: '%d Minuten',\n\t h: processRelativeTime,\n\t hh: '%d Stunden',\n\t d: processRelativeTime,\n\t dd: processRelativeTime,\n\t w: processRelativeTime,\n\t ww: '%d Wochen',\n\t M: processRelativeTime,\n\t MM: processRelativeTime,\n\t y: processRelativeTime,\n\t yy: processRelativeTime,\n\t },\n\t dayOfMonthOrdinalParse: /\\d{1,2}\\./,\n\t ordinal: '%d.',\n\t week: {\n\t dow: 1, // Monday is the first day of the week.\n\t doy: 4, // The week that contains Jan 4th is the first week of the year.\n\t },\n\t });\n\t\n\t return de;\n\t\n\t})));\n\n\n/***/ }),\n\n/***/ 331:\n/***/ (function(module, exports, __webpack_require__) {\n\n\t//! moment.js locale configuration\n\t//! locale : Maldivian [dv]\n\t//! author : Jawish Hameed : https://github.com/jawish\n\t\n\t;(function (global, factory) {\n\t true ? factory(__webpack_require__(1)) :\n\t typeof define === 'function' && define.amd ? define(['../moment'], factory) :\n\t factory(global.moment)\n\t}(this, (function (moment) { 'use strict';\n\t\n\t //! moment.js locale configuration\n\t\n\t var months = [\n\t 'ޖެނުއަރީ',\n\t 'ފެބްރުއަރީ',\n\t 'މާރިޗު',\n\t 'އޭޕްރީލު',\n\t 'މޭ',\n\t 'ޖޫން',\n\t 'ޖުލައި',\n\t 'އޯގަސްޓު',\n\t 'ސެޕްޓެމްބަރު',\n\t 'އޮކްޓޯބަރު',\n\t 'ނޮވެމްބަރު',\n\t 'ޑިސެމްބަރު',\n\t ],\n\t weekdays = [\n\t 'އާދިއްތަ',\n\t 'ހޯމަ',\n\t 'އަންގާރަ',\n\t 'ބުދަ',\n\t 'ބުރާސްފަތި',\n\t 'ހުކުރު',\n\t 'ހޮނިހިރު',\n\t ];\n\t\n\t var dv = moment.defineLocale('dv', {\n\t months: months,\n\t monthsShort: months,\n\t weekdays: weekdays,\n\t weekdaysShort: weekdays,\n\t weekdaysMin: 'އާދި_ހޯމަ_އަން_ބުދަ_ބުރާ_ހުކު_ހޮނި'.split('_'),\n\t longDateFormat: {\n\t LT: 'HH:mm',\n\t LTS: 'HH:mm:ss',\n\t L: 'D/M/YYYY',\n\t LL: 'D MMMM YYYY',\n\t LLL: 'D MMMM YYYY HH:mm',\n\t LLLL: 'dddd D MMMM YYYY HH:mm',\n\t },\n\t meridiemParse: /މކ|މފ/,\n\t isPM: function (input) {\n\t return 'މފ' === input;\n\t },\n\t meridiem: function (hour, minute, isLower) {\n\t if (hour < 12) {\n\t return 'މކ';\n\t } else {\n\t return 'މފ';\n\t }\n\t },\n\t calendar: {\n\t sameDay: '[މިއަދު] LT',\n\t nextDay: '[މާދަމާ] LT',\n\t nextWeek: 'dddd LT',\n\t lastDay: '[އިއްޔެ] LT',\n\t lastWeek: '[ފާއިތުވި] dddd LT',\n\t sameElse: 'L',\n\t },\n\t relativeTime: {\n\t future: 'ތެރޭގައި %s',\n\t past: 'ކުރިން %s',\n\t s: 'ސިކުންތުކޮޅެއް',\n\t ss: 'd% ސިކުންތު',\n\t m: 'މިނިޓެއް',\n\t mm: 'މިނިޓު %d',\n\t h: 'ގަޑިއިރެއް',\n\t hh: 'ގަޑިއިރު %d',\n\t d: 'ދުވަހެއް',\n\t dd: 'ދުވަސް %d',\n\t M: 'މަހެއް',\n\t MM: 'މަސް %d',\n\t y: 'އަހަރެއް',\n\t yy: 'އަހަރު %d',\n\t },\n\t preparse: function (string) {\n\t return string.replace(/،/g, ',');\n\t },\n\t postformat: function (string) {\n\t return string.replace(/,/g, '،');\n\t },\n\t week: {\n\t dow: 7, // Sunday is the first day of the week.\n\t doy: 12, // The week that contains Jan 12th is the first week of the year.\n\t },\n\t });\n\t\n\t return dv;\n\t\n\t})));\n\n\n/***/ }),\n\n/***/ 332:\n/***/ (function(module, exports, __webpack_require__) {\n\n\t//! moment.js locale configuration\n\t//! locale : Greek [el]\n\t//! author : Aggelos Karalias : https://github.com/mehiel\n\t\n\t;(function (global, factory) {\n\t true ? factory(__webpack_require__(1)) :\n\t typeof define === 'function' && define.amd ? define(['../moment'], factory) :\n\t factory(global.moment)\n\t}(this, (function (moment) { 'use strict';\n\t\n\t //! moment.js locale configuration\n\t\n\t function isFunction(input) {\n\t return (\n\t (typeof Function !== 'undefined' && input instanceof Function) ||\n\t Object.prototype.toString.call(input) === '[object Function]'\n\t );\n\t }\n\t\n\t var el = moment.defineLocale('el', {\n\t monthsNominativeEl: 'Ιανουάριος_Φεβρουάριος_Μάρτιος_Απρίλιος_Μάιος_Ιούνιος_Ιούλιος_Αύγουστος_Σεπτέμβριος_Οκτώβριος_Νοέμβριος_Δεκέμβριος'.split(\n\t '_'\n\t ),\n\t monthsGenitiveEl: 'Ιανουαρίου_Φεβρουαρίου_Μαρτίου_Απριλίου_Μαΐου_Ιουνίου_Ιουλίου_Αυγούστου_Σεπτεμβρίου_Οκτωβρίου_Νοεμβρίου_Δεκεμβρίου'.split(\n\t '_'\n\t ),\n\t months: function (momentToFormat, format) {\n\t if (!momentToFormat) {\n\t return this._monthsNominativeEl;\n\t } else if (\n\t typeof format === 'string' &&\n\t /D/.test(format.substring(0, format.indexOf('MMMM')))\n\t ) {\n\t // if there is a day number before 'MMMM'\n\t return this._monthsGenitiveEl[momentToFormat.month()];\n\t } else {\n\t return this._monthsNominativeEl[momentToFormat.month()];\n\t }\n\t },\n\t monthsShort: 'Ιαν_Φεβ_Μαρ_Απρ_Μαϊ_Ιουν_Ιουλ_Αυγ_Σεπ_Οκτ_Νοε_Δεκ'.split('_'),\n\t weekdays: 'Κυριακή_Δευτέρα_Τρίτη_Τετάρτη_Πέμπτη_Παρασκευή_Σάββατο'.split(\n\t '_'\n\t ),\n\t weekdaysShort: 'Κυρ_Δευ_Τρι_Τετ_Πεμ_Παρ_Σαβ'.split('_'),\n\t weekdaysMin: 'Κυ_Δε_Τρ_Τε_Πε_Πα_Σα'.split('_'),\n\t meridiem: function (hours, minutes, isLower) {\n\t if (hours > 11) {\n\t return isLower ? 'μμ' : 'ΜΜ';\n\t } else {\n\t return isLower ? 'πμ' : 'ΠΜ';\n\t }\n\t },\n\t isPM: function (input) {\n\t return (input + '').toLowerCase()[0] === 'μ';\n\t },\n\t meridiemParse: /[ΠΜ]\\.?Μ?\\.?/i,\n\t longDateFormat: {\n\t LT: 'h:mm A',\n\t LTS: 'h:mm:ss A',\n\t L: 'DD/MM/YYYY',\n\t LL: 'D MMMM YYYY',\n\t LLL: 'D MMMM YYYY h:mm A',\n\t LLLL: 'dddd, D MMMM YYYY h:mm A',\n\t },\n\t calendarEl: {\n\t sameDay: '[Σήμερα {}] LT',\n\t nextDay: '[Αύριο {}] LT',\n\t nextWeek: 'dddd [{}] LT',\n\t lastDay: '[Χθες {}] LT',\n\t lastWeek: function () {\n\t switch (this.day()) {\n\t case 6:\n\t return '[το προηγούμενο] dddd [{}] LT';\n\t default:\n\t return '[την προηγούμενη] dddd [{}] LT';\n\t }\n\t },\n\t sameElse: 'L',\n\t },\n\t calendar: function (key, mom) {\n\t var output = this._calendarEl[key],\n\t hours = mom && mom.hours();\n\t if (isFunction(output)) {\n\t output = output.apply(mom);\n\t }\n\t return output.replace('{}', hours % 12 === 1 ? 'στη' : 'στις');\n\t },\n\t relativeTime: {\n\t future: 'σε %s',\n\t past: '%s πριν',\n\t s: 'λίγα δευτερόλεπτα',\n\t ss: '%d δευτερόλεπτα',\n\t m: 'ένα λεπτό',\n\t mm: '%d λεπτά',\n\t h: 'μία ώρα',\n\t hh: '%d ώρες',\n\t d: 'μία μέρα',\n\t dd: '%d μέρες',\n\t M: 'ένας μήνας',\n\t MM: '%d μήνες',\n\t y: 'ένας χρόνος',\n\t yy: '%d χρόνια',\n\t },\n\t dayOfMonthOrdinalParse: /\\d{1,2}η/,\n\t ordinal: '%dη',\n\t week: {\n\t dow: 1, // Monday is the first day of the week.\n\t doy: 4, // The week that contains Jan 4st is the first week of the year.\n\t },\n\t });\n\t\n\t return el;\n\t\n\t})));\n\n\n/***/ }),\n\n/***/ 333:\n/***/ (function(module, exports, __webpack_require__) {\n\n\t//! moment.js locale configuration\n\t//! locale : English (Australia) [en-au]\n\t//! author : Jared Morse : https://github.com/jarcoal\n\t\n\t;(function (global, factory) {\n\t true ? factory(__webpack_require__(1)) :\n\t typeof define === 'function' && define.amd ? define(['../moment'], factory) :\n\t factory(global.moment)\n\t}(this, (function (moment) { 'use strict';\n\t\n\t //! moment.js locale configuration\n\t\n\t var enAu = moment.defineLocale('en-au', {\n\t months: 'January_February_March_April_May_June_July_August_September_October_November_December'.split(\n\t '_'\n\t ),\n\t monthsShort: 'Jan_Feb_Mar_Apr_May_Jun_Jul_Aug_Sep_Oct_Nov_Dec'.split('_'),\n\t weekdays: 'Sunday_Monday_Tuesday_Wednesday_Thursday_Friday_Saturday'.split(\n\t '_'\n\t ),\n\t weekdaysShort: 'Sun_Mon_Tue_Wed_Thu_Fri_Sat'.split('_'),\n\t weekdaysMin: 'Su_Mo_Tu_We_Th_Fr_Sa'.split('_'),\n\t longDateFormat: {\n\t LT: 'h:mm A',\n\t LTS: 'h:mm:ss A',\n\t L: 'DD/MM/YYYY',\n\t LL: 'D MMMM YYYY',\n\t LLL: 'D MMMM YYYY h:mm A',\n\t LLLL: 'dddd, D MMMM YYYY h:mm A',\n\t },\n\t calendar: {\n\t sameDay: '[Today at] LT',\n\t nextDay: '[Tomorrow at] LT',\n\t nextWeek: 'dddd [at] LT',\n\t lastDay: '[Yesterday at] LT',\n\t lastWeek: '[Last] dddd [at] LT',\n\t sameElse: 'L',\n\t },\n\t relativeTime: {\n\t future: 'in %s',\n\t past: '%s ago',\n\t s: 'a few seconds',\n\t ss: '%d seconds',\n\t m: 'a minute',\n\t mm: '%d minutes',\n\t h: 'an hour',\n\t hh: '%d hours',\n\t d: 'a day',\n\t dd: '%d days',\n\t M: 'a month',\n\t MM: '%d months',\n\t y: 'a year',\n\t yy: '%d years',\n\t },\n\t dayOfMonthOrdinalParse: /\\d{1,2}(st|nd|rd|th)/,\n\t ordinal: function (number) {\n\t var b = number % 10,\n\t output =\n\t ~~((number % 100) / 10) === 1\n\t ? 'th'\n\t : b === 1\n\t ? 'st'\n\t : b === 2\n\t ? 'nd'\n\t : b === 3\n\t ? 'rd'\n\t : 'th';\n\t return number + output;\n\t },\n\t week: {\n\t dow: 0, // Sunday is the first day of the week.\n\t doy: 4, // The week that contains Jan 4th is the first week of the year.\n\t },\n\t });\n\t\n\t return enAu;\n\t\n\t})));\n\n\n/***/ }),\n\n/***/ 334:\n/***/ (function(module, exports, __webpack_require__) {\n\n\t//! moment.js locale configuration\n\t//! locale : English (Canada) [en-ca]\n\t//! author : Jonathan Abourbih : https://github.com/jonbca\n\t\n\t;(function (global, factory) {\n\t true ? factory(__webpack_require__(1)) :\n\t typeof define === 'function' && define.amd ? define(['../moment'], factory) :\n\t factory(global.moment)\n\t}(this, (function (moment) { 'use strict';\n\t\n\t //! moment.js locale configuration\n\t\n\t var enCa = moment.defineLocale('en-ca', {\n\t months: 'January_February_March_April_May_June_July_August_September_October_November_December'.split(\n\t '_'\n\t ),\n\t monthsShort: 'Jan_Feb_Mar_Apr_May_Jun_Jul_Aug_Sep_Oct_Nov_Dec'.split('_'),\n\t weekdays: 'Sunday_Monday_Tuesday_Wednesday_Thursday_Friday_Saturday'.split(\n\t '_'\n\t ),\n\t weekdaysShort: 'Sun_Mon_Tue_Wed_Thu_Fri_Sat'.split('_'),\n\t weekdaysMin: 'Su_Mo_Tu_We_Th_Fr_Sa'.split('_'),\n\t longDateFormat: {\n\t LT: 'h:mm A',\n\t LTS: 'h:mm:ss A',\n\t L: 'YYYY-MM-DD',\n\t LL: 'MMMM D, YYYY',\n\t LLL: 'MMMM D, YYYY h:mm A',\n\t LLLL: 'dddd, MMMM D, YYYY h:mm A',\n\t },\n\t calendar: {\n\t sameDay: '[Today at] LT',\n\t nextDay: '[Tomorrow at] LT',\n\t nextWeek: 'dddd [at] LT',\n\t lastDay: '[Yesterday at] LT',\n\t lastWeek: '[Last] dddd [at] LT',\n\t sameElse: 'L',\n\t },\n\t relativeTime: {\n\t future: 'in %s',\n\t past: '%s ago',\n\t s: 'a few seconds',\n\t ss: '%d seconds',\n\t m: 'a minute',\n\t mm: '%d minutes',\n\t h: 'an hour',\n\t hh: '%d hours',\n\t d: 'a day',\n\t dd: '%d days',\n\t M: 'a month',\n\t MM: '%d months',\n\t y: 'a year',\n\t yy: '%d years',\n\t },\n\t dayOfMonthOrdinalParse: /\\d{1,2}(st|nd|rd|th)/,\n\t ordinal: function (number) {\n\t var b = number % 10,\n\t output =\n\t ~~((number % 100) / 10) === 1\n\t ? 'th'\n\t : b === 1\n\t ? 'st'\n\t : b === 2\n\t ? 'nd'\n\t : b === 3\n\t ? 'rd'\n\t : 'th';\n\t return number + output;\n\t },\n\t });\n\t\n\t return enCa;\n\t\n\t})));\n\n\n/***/ }),\n\n/***/ 335:\n/***/ (function(module, exports, __webpack_require__) {\n\n\t//! moment.js locale configuration\n\t//! locale : English (United Kingdom) [en-gb]\n\t//! author : Chris Gedrim : https://github.com/chrisgedrim\n\t\n\t;(function (global, factory) {\n\t true ? factory(__webpack_require__(1)) :\n\t typeof define === 'function' && define.amd ? define(['../moment'], factory) :\n\t factory(global.moment)\n\t}(this, (function (moment) { 'use strict';\n\t\n\t //! moment.js locale configuration\n\t\n\t var enGb = moment.defineLocale('en-gb', {\n\t months: 'January_February_March_April_May_June_July_August_September_October_November_December'.split(\n\t '_'\n\t ),\n\t monthsShort: 'Jan_Feb_Mar_Apr_May_Jun_Jul_Aug_Sep_Oct_Nov_Dec'.split('_'),\n\t weekdays: 'Sunday_Monday_Tuesday_Wednesday_Thursday_Friday_Saturday'.split(\n\t '_'\n\t ),\n\t weekdaysShort: 'Sun_Mon_Tue_Wed_Thu_Fri_Sat'.split('_'),\n\t weekdaysMin: 'Su_Mo_Tu_We_Th_Fr_Sa'.split('_'),\n\t longDateFormat: {\n\t LT: 'HH:mm',\n\t LTS: 'HH:mm:ss',\n\t L: 'DD/MM/YYYY',\n\t LL: 'D MMMM YYYY',\n\t LLL: 'D MMMM YYYY HH:mm',\n\t LLLL: 'dddd, D MMMM YYYY HH:mm',\n\t },\n\t calendar: {\n\t sameDay: '[Today at] LT',\n\t nextDay: '[Tomorrow at] LT',\n\t nextWeek: 'dddd [at] LT',\n\t lastDay: '[Yesterday at] LT',\n\t lastWeek: '[Last] dddd [at] LT',\n\t sameElse: 'L',\n\t },\n\t relativeTime: {\n\t future: 'in %s',\n\t past: '%s ago',\n\t s: 'a few seconds',\n\t ss: '%d seconds',\n\t m: 'a minute',\n\t mm: '%d minutes',\n\t h: 'an hour',\n\t hh: '%d hours',\n\t d: 'a day',\n\t dd: '%d days',\n\t M: 'a month',\n\t MM: '%d months',\n\t y: 'a year',\n\t yy: '%d years',\n\t },\n\t dayOfMonthOrdinalParse: /\\d{1,2}(st|nd|rd|th)/,\n\t ordinal: function (number) {\n\t var b = number % 10,\n\t output =\n\t ~~((number % 100) / 10) === 1\n\t ? 'th'\n\t : b === 1\n\t ? 'st'\n\t : b === 2\n\t ? 'nd'\n\t : b === 3\n\t ? 'rd'\n\t : 'th';\n\t return number + output;\n\t },\n\t week: {\n\t dow: 1, // Monday is the first day of the week.\n\t doy: 4, // The week that contains Jan 4th is the first week of the year.\n\t },\n\t });\n\t\n\t return enGb;\n\t\n\t})));\n\n\n/***/ }),\n\n/***/ 336:\n/***/ (function(module, exports, __webpack_require__) {\n\n\t//! moment.js locale configuration\n\t//! locale : English (Ireland) [en-ie]\n\t//! author : Chris Cartlidge : https://github.com/chriscartlidge\n\t\n\t;(function (global, factory) {\n\t true ? factory(__webpack_require__(1)) :\n\t typeof define === 'function' && define.amd ? define(['../moment'], factory) :\n\t factory(global.moment)\n\t}(this, (function (moment) { 'use strict';\n\t\n\t //! moment.js locale configuration\n\t\n\t var enIe = moment.defineLocale('en-ie', {\n\t months: 'January_February_March_April_May_June_July_August_September_October_November_December'.split(\n\t '_'\n\t ),\n\t monthsShort: 'Jan_Feb_Mar_Apr_May_Jun_Jul_Aug_Sep_Oct_Nov_Dec'.split('_'),\n\t weekdays: 'Sunday_Monday_Tuesday_Wednesday_Thursday_Friday_Saturday'.split(\n\t '_'\n\t ),\n\t weekdaysShort: 'Sun_Mon_Tue_Wed_Thu_Fri_Sat'.split('_'),\n\t weekdaysMin: 'Su_Mo_Tu_We_Th_Fr_Sa'.split('_'),\n\t longDateFormat: {\n\t LT: 'HH:mm',\n\t LTS: 'HH:mm:ss',\n\t L: 'DD/MM/YYYY',\n\t LL: 'D MMMM YYYY',\n\t LLL: 'D MMMM YYYY HH:mm',\n\t LLLL: 'dddd D MMMM YYYY HH:mm',\n\t },\n\t calendar: {\n\t sameDay: '[Today at] LT',\n\t nextDay: '[Tomorrow at] LT',\n\t nextWeek: 'dddd [at] LT',\n\t lastDay: '[Yesterday at] LT',\n\t lastWeek: '[Last] dddd [at] LT',\n\t sameElse: 'L',\n\t },\n\t relativeTime: {\n\t future: 'in %s',\n\t past: '%s ago',\n\t s: 'a few seconds',\n\t ss: '%d seconds',\n\t m: 'a minute',\n\t mm: '%d minutes',\n\t h: 'an hour',\n\t hh: '%d hours',\n\t d: 'a day',\n\t dd: '%d days',\n\t M: 'a month',\n\t MM: '%d months',\n\t y: 'a year',\n\t yy: '%d years',\n\t },\n\t dayOfMonthOrdinalParse: /\\d{1,2}(st|nd|rd|th)/,\n\t ordinal: function (number) {\n\t var b = number % 10,\n\t output =\n\t ~~((number % 100) / 10) === 1\n\t ? 'th'\n\t : b === 1\n\t ? 'st'\n\t : b === 2\n\t ? 'nd'\n\t : b === 3\n\t ? 'rd'\n\t : 'th';\n\t return number + output;\n\t },\n\t week: {\n\t dow: 1, // Monday is the first day of the week.\n\t doy: 4, // The week that contains Jan 4th is the first week of the year.\n\t },\n\t });\n\t\n\t return enIe;\n\t\n\t})));\n\n\n/***/ }),\n\n/***/ 337:\n/***/ (function(module, exports, __webpack_require__) {\n\n\t//! moment.js locale configuration\n\t//! locale : English (Israel) [en-il]\n\t//! author : Chris Gedrim : https://github.com/chrisgedrim\n\t\n\t;(function (global, factory) {\n\t true ? factory(__webpack_require__(1)) :\n\t typeof define === 'function' && define.amd ? define(['../moment'], factory) :\n\t factory(global.moment)\n\t}(this, (function (moment) { 'use strict';\n\t\n\t //! moment.js locale configuration\n\t\n\t var enIl = moment.defineLocale('en-il', {\n\t months: 'January_February_March_April_May_June_July_August_September_October_November_December'.split(\n\t '_'\n\t ),\n\t monthsShort: 'Jan_Feb_Mar_Apr_May_Jun_Jul_Aug_Sep_Oct_Nov_Dec'.split('_'),\n\t weekdays: 'Sunday_Monday_Tuesday_Wednesday_Thursday_Friday_Saturday'.split(\n\t '_'\n\t ),\n\t weekdaysShort: 'Sun_Mon_Tue_Wed_Thu_Fri_Sat'.split('_'),\n\t weekdaysMin: 'Su_Mo_Tu_We_Th_Fr_Sa'.split('_'),\n\t longDateFormat: {\n\t LT: 'HH:mm',\n\t LTS: 'HH:mm:ss',\n\t L: 'DD/MM/YYYY',\n\t LL: 'D MMMM YYYY',\n\t LLL: 'D MMMM YYYY HH:mm',\n\t LLLL: 'dddd, D MMMM YYYY HH:mm',\n\t },\n\t calendar: {\n\t sameDay: '[Today at] LT',\n\t nextDay: '[Tomorrow at] LT',\n\t nextWeek: 'dddd [at] LT',\n\t lastDay: '[Yesterday at] LT',\n\t lastWeek: '[Last] dddd [at] LT',\n\t sameElse: 'L',\n\t },\n\t relativeTime: {\n\t future: 'in %s',\n\t past: '%s ago',\n\t s: 'a few seconds',\n\t ss: '%d seconds',\n\t m: 'a minute',\n\t mm: '%d minutes',\n\t h: 'an hour',\n\t hh: '%d hours',\n\t d: 'a day',\n\t dd: '%d days',\n\t M: 'a month',\n\t MM: '%d months',\n\t y: 'a year',\n\t yy: '%d years',\n\t },\n\t dayOfMonthOrdinalParse: /\\d{1,2}(st|nd|rd|th)/,\n\t ordinal: function (number) {\n\t var b = number % 10,\n\t output =\n\t ~~((number % 100) / 10) === 1\n\t ? 'th'\n\t : b === 1\n\t ? 'st'\n\t : b === 2\n\t ? 'nd'\n\t : b === 3\n\t ? 'rd'\n\t : 'th';\n\t return number + output;\n\t },\n\t });\n\t\n\t return enIl;\n\t\n\t})));\n\n\n/***/ }),\n\n/***/ 338:\n/***/ (function(module, exports, __webpack_require__) {\n\n\t//! moment.js locale configuration\n\t//! locale : English (India) [en-in]\n\t//! author : Jatin Agrawal : https://github.com/jatinag22\n\t\n\t;(function (global, factory) {\n\t true ? factory(__webpack_require__(1)) :\n\t typeof define === 'function' && define.amd ? define(['../moment'], factory) :\n\t factory(global.moment)\n\t}(this, (function (moment) { 'use strict';\n\t\n\t //! moment.js locale configuration\n\t\n\t var enIn = moment.defineLocale('en-in', {\n\t months: 'January_February_March_April_May_June_July_August_September_October_November_December'.split(\n\t '_'\n\t ),\n\t monthsShort: 'Jan_Feb_Mar_Apr_May_Jun_Jul_Aug_Sep_Oct_Nov_Dec'.split('_'),\n\t weekdays: 'Sunday_Monday_Tuesday_Wednesday_Thursday_Friday_Saturday'.split(\n\t '_'\n\t ),\n\t weekdaysShort: 'Sun_Mon_Tue_Wed_Thu_Fri_Sat'.split('_'),\n\t weekdaysMin: 'Su_Mo_Tu_We_Th_Fr_Sa'.split('_'),\n\t longDateFormat: {\n\t LT: 'h:mm A',\n\t LTS: 'h:mm:ss A',\n\t L: 'DD/MM/YYYY',\n\t LL: 'D MMMM YYYY',\n\t LLL: 'D MMMM YYYY h:mm A',\n\t LLLL: 'dddd, D MMMM YYYY h:mm A',\n\t },\n\t calendar: {\n\t sameDay: '[Today at] LT',\n\t nextDay: '[Tomorrow at] LT',\n\t nextWeek: 'dddd [at] LT',\n\t lastDay: '[Yesterday at] LT',\n\t lastWeek: '[Last] dddd [at] LT',\n\t sameElse: 'L',\n\t },\n\t relativeTime: {\n\t future: 'in %s',\n\t past: '%s ago',\n\t s: 'a few seconds',\n\t ss: '%d seconds',\n\t m: 'a minute',\n\t mm: '%d minutes',\n\t h: 'an hour',\n\t hh: '%d hours',\n\t d: 'a day',\n\t dd: '%d days',\n\t M: 'a month',\n\t MM: '%d months',\n\t y: 'a year',\n\t yy: '%d years',\n\t },\n\t dayOfMonthOrdinalParse: /\\d{1,2}(st|nd|rd|th)/,\n\t ordinal: function (number) {\n\t var b = number % 10,\n\t output =\n\t ~~((number % 100) / 10) === 1\n\t ? 'th'\n\t : b === 1\n\t ? 'st'\n\t : b === 2\n\t ? 'nd'\n\t : b === 3\n\t ? 'rd'\n\t : 'th';\n\t return number + output;\n\t },\n\t week: {\n\t dow: 0, // Sunday is the first day of the week.\n\t doy: 6, // The week that contains Jan 1st is the first week of the year.\n\t },\n\t });\n\t\n\t return enIn;\n\t\n\t})));\n\n\n/***/ }),\n\n/***/ 339:\n/***/ (function(module, exports, __webpack_require__) {\n\n\t//! moment.js locale configuration\n\t//! locale : English (New Zealand) [en-nz]\n\t//! author : Luke McGregor : https://github.com/lukemcgregor\n\t\n\t;(function (global, factory) {\n\t true ? factory(__webpack_require__(1)) :\n\t typeof define === 'function' && define.amd ? define(['../moment'], factory) :\n\t factory(global.moment)\n\t}(this, (function (moment) { 'use strict';\n\t\n\t //! moment.js locale configuration\n\t\n\t var enNz = moment.defineLocale('en-nz', {\n\t months: 'January_February_March_April_May_June_July_August_September_October_November_December'.split(\n\t '_'\n\t ),\n\t monthsShort: 'Jan_Feb_Mar_Apr_May_Jun_Jul_Aug_Sep_Oct_Nov_Dec'.split('_'),\n\t weekdays: 'Sunday_Monday_Tuesday_Wednesday_Thursday_Friday_Saturday'.split(\n\t '_'\n\t ),\n\t weekdaysShort: 'Sun_Mon_Tue_Wed_Thu_Fri_Sat'.split('_'),\n\t weekdaysMin: 'Su_Mo_Tu_We_Th_Fr_Sa'.split('_'),\n\t longDateFormat: {\n\t LT: 'h:mm A',\n\t LTS: 'h:mm:ss A',\n\t L: 'DD/MM/YYYY',\n\t LL: 'D MMMM YYYY',\n\t LLL: 'D MMMM YYYY h:mm A',\n\t LLLL: 'dddd, D MMMM YYYY h:mm A',\n\t },\n\t calendar: {\n\t sameDay: '[Today at] LT',\n\t nextDay: '[Tomorrow at] LT',\n\t nextWeek: 'dddd [at] LT',\n\t lastDay: '[Yesterday at] LT',\n\t lastWeek: '[Last] dddd [at] LT',\n\t sameElse: 'L',\n\t },\n\t relativeTime: {\n\t future: 'in %s',\n\t past: '%s ago',\n\t s: 'a few seconds',\n\t ss: '%d seconds',\n\t m: 'a minute',\n\t mm: '%d minutes',\n\t h: 'an hour',\n\t hh: '%d hours',\n\t d: 'a day',\n\t dd: '%d days',\n\t M: 'a month',\n\t MM: '%d months',\n\t y: 'a year',\n\t yy: '%d years',\n\t },\n\t dayOfMonthOrdinalParse: /\\d{1,2}(st|nd|rd|th)/,\n\t ordinal: function (number) {\n\t var b = number % 10,\n\t output =\n\t ~~((number % 100) / 10) === 1\n\t ? 'th'\n\t : b === 1\n\t ? 'st'\n\t : b === 2\n\t ? 'nd'\n\t : b === 3\n\t ? 'rd'\n\t : 'th';\n\t return number + output;\n\t },\n\t week: {\n\t dow: 1, // Monday is the first day of the week.\n\t doy: 4, // The week that contains Jan 4th is the first week of the year.\n\t },\n\t });\n\t\n\t return enNz;\n\t\n\t})));\n\n\n/***/ }),\n\n/***/ 340:\n/***/ (function(module, exports, __webpack_require__) {\n\n\t//! moment.js locale configuration\n\t//! locale : English (Singapore) [en-sg]\n\t//! author : Matthew Castrillon-Madrigal : https://github.com/techdimension\n\t\n\t;(function (global, factory) {\n\t true ? factory(__webpack_require__(1)) :\n\t typeof define === 'function' && define.amd ? define(['../moment'], factory) :\n\t factory(global.moment)\n\t}(this, (function (moment) { 'use strict';\n\t\n\t //! moment.js locale configuration\n\t\n\t var enSg = moment.defineLocale('en-sg', {\n\t months: 'January_February_March_April_May_June_July_August_September_October_November_December'.split(\n\t '_'\n\t ),\n\t monthsShort: 'Jan_Feb_Mar_Apr_May_Jun_Jul_Aug_Sep_Oct_Nov_Dec'.split('_'),\n\t weekdays: 'Sunday_Monday_Tuesday_Wednesday_Thursday_Friday_Saturday'.split(\n\t '_'\n\t ),\n\t weekdaysShort: 'Sun_Mon_Tue_Wed_Thu_Fri_Sat'.split('_'),\n\t weekdaysMin: 'Su_Mo_Tu_We_Th_Fr_Sa'.split('_'),\n\t longDateFormat: {\n\t LT: 'HH:mm',\n\t LTS: 'HH:mm:ss',\n\t L: 'DD/MM/YYYY',\n\t LL: 'D MMMM YYYY',\n\t LLL: 'D MMMM YYYY HH:mm',\n\t LLLL: 'dddd, D MMMM YYYY HH:mm',\n\t },\n\t calendar: {\n\t sameDay: '[Today at] LT',\n\t nextDay: '[Tomorrow at] LT',\n\t nextWeek: 'dddd [at] LT',\n\t lastDay: '[Yesterday at] LT',\n\t lastWeek: '[Last] dddd [at] LT',\n\t sameElse: 'L',\n\t },\n\t relativeTime: {\n\t future: 'in %s',\n\t past: '%s ago',\n\t s: 'a few seconds',\n\t ss: '%d seconds',\n\t m: 'a minute',\n\t mm: '%d minutes',\n\t h: 'an hour',\n\t hh: '%d hours',\n\t d: 'a day',\n\t dd: '%d days',\n\t M: 'a month',\n\t MM: '%d months',\n\t y: 'a year',\n\t yy: '%d years',\n\t },\n\t dayOfMonthOrdinalParse: /\\d{1,2}(st|nd|rd|th)/,\n\t ordinal: function (number) {\n\t var b = number % 10,\n\t output =\n\t ~~((number % 100) / 10) === 1\n\t ? 'th'\n\t : b === 1\n\t ? 'st'\n\t : b === 2\n\t ? 'nd'\n\t : b === 3\n\t ? 'rd'\n\t : 'th';\n\t return number + output;\n\t },\n\t week: {\n\t dow: 1, // Monday is the first day of the week.\n\t doy: 4, // The week that contains Jan 4th is the first week of the year.\n\t },\n\t });\n\t\n\t return enSg;\n\t\n\t})));\n\n\n/***/ }),\n\n/***/ 341:\n/***/ (function(module, exports, __webpack_require__) {\n\n\t//! moment.js locale configuration\n\t//! locale : Esperanto [eo]\n\t//! author : Colin Dean : https://github.com/colindean\n\t//! author : Mia Nordentoft Imperatori : https://github.com/miestasmia\n\t//! comment : miestasmia corrected the translation by colindean\n\t//! comment : Vivakvo corrected the translation by colindean and miestasmia\n\t\n\t;(function (global, factory) {\n\t true ? factory(__webpack_require__(1)) :\n\t typeof define === 'function' && define.amd ? define(['../moment'], factory) :\n\t factory(global.moment)\n\t}(this, (function (moment) { 'use strict';\n\t\n\t //! moment.js locale configuration\n\t\n\t var eo = moment.defineLocale('eo', {\n\t months: 'januaro_februaro_marto_aprilo_majo_junio_julio_aŭgusto_septembro_oktobro_novembro_decembro'.split(\n\t '_'\n\t ),\n\t monthsShort: 'jan_feb_mart_apr_maj_jun_jul_aŭg_sept_okt_nov_dec'.split('_'),\n\t weekdays: 'dimanĉo_lundo_mardo_merkredo_ĵaŭdo_vendredo_sabato'.split('_'),\n\t weekdaysShort: 'dim_lun_mard_merk_ĵaŭ_ven_sab'.split('_'),\n\t weekdaysMin: 'di_lu_ma_me_ĵa_ve_sa'.split('_'),\n\t longDateFormat: {\n\t LT: 'HH:mm',\n\t LTS: 'HH:mm:ss',\n\t L: 'YYYY-MM-DD',\n\t LL: '[la] D[-an de] MMMM, YYYY',\n\t LLL: '[la] D[-an de] MMMM, YYYY HH:mm',\n\t LLLL: 'dddd[n], [la] D[-an de] MMMM, YYYY HH:mm',\n\t llll: 'ddd, [la] D[-an de] MMM, YYYY HH:mm',\n\t },\n\t meridiemParse: /[ap]\\.t\\.m/i,\n\t isPM: function (input) {\n\t return input.charAt(0).toLowerCase() === 'p';\n\t },\n\t meridiem: function (hours, minutes, isLower) {\n\t if (hours > 11) {\n\t return isLower ? 'p.t.m.' : 'P.T.M.';\n\t } else {\n\t return isLower ? 'a.t.m.' : 'A.T.M.';\n\t }\n\t },\n\t calendar: {\n\t sameDay: '[Hodiaŭ je] LT',\n\t nextDay: '[Morgaŭ je] LT',\n\t nextWeek: 'dddd[n je] LT',\n\t lastDay: '[Hieraŭ je] LT',\n\t lastWeek: '[pasintan] dddd[n je] LT',\n\t sameElse: 'L',\n\t },\n\t relativeTime: {\n\t future: 'post %s',\n\t past: 'antaŭ %s',\n\t s: 'kelkaj sekundoj',\n\t ss: '%d sekundoj',\n\t m: 'unu minuto',\n\t mm: '%d minutoj',\n\t h: 'unu horo',\n\t hh: '%d horoj',\n\t d: 'unu tago', //ne 'diurno', ĉar estas uzita por proksimumo\n\t dd: '%d tagoj',\n\t M: 'unu monato',\n\t MM: '%d monatoj',\n\t y: 'unu jaro',\n\t yy: '%d jaroj',\n\t },\n\t dayOfMonthOrdinalParse: /\\d{1,2}a/,\n\t ordinal: '%da',\n\t week: {\n\t dow: 1, // Monday is the first day of the week.\n\t doy: 7, // The week that contains Jan 7th is the first week of the year.\n\t },\n\t });\n\t\n\t return eo;\n\t\n\t})));\n\n\n/***/ }),\n\n/***/ 342:\n/***/ (function(module, exports, __webpack_require__) {\n\n\t//! moment.js locale configuration\n\t//! locale : Spanish (Dominican Republic) [es-do]\n\t\n\t;(function (global, factory) {\n\t true ? factory(__webpack_require__(1)) :\n\t typeof define === 'function' && define.amd ? define(['../moment'], factory) :\n\t factory(global.moment)\n\t}(this, (function (moment) { 'use strict';\n\t\n\t //! moment.js locale configuration\n\t\n\t var monthsShortDot = 'ene._feb._mar._abr._may._jun._jul._ago._sep._oct._nov._dic.'.split(\n\t '_'\n\t ),\n\t monthsShort = 'ene_feb_mar_abr_may_jun_jul_ago_sep_oct_nov_dic'.split('_'),\n\t monthsParse = [\n\t /^ene/i,\n\t /^feb/i,\n\t /^mar/i,\n\t /^abr/i,\n\t /^may/i,\n\t /^jun/i,\n\t /^jul/i,\n\t /^ago/i,\n\t /^sep/i,\n\t /^oct/i,\n\t /^nov/i,\n\t /^dic/i,\n\t ],\n\t 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\t\n\t var esDo = moment.defineLocale('es-do', {\n\t months: 'enero_febrero_marzo_abril_mayo_junio_julio_agosto_septiembre_octubre_noviembre_diciembre'.split(\n\t '_'\n\t ),\n\t monthsShort: function (m, format) {\n\t if (!m) {\n\t return monthsShortDot;\n\t } else if (/-MMM-/.test(format)) {\n\t return monthsShort[m.month()];\n\t } else {\n\t return monthsShortDot[m.month()];\n\t }\n\t },\n\t monthsRegex: monthsRegex,\n\t monthsShortRegex: monthsRegex,\n\t monthsStrictRegex: /^(enero|febrero|marzo|abril|mayo|junio|julio|agosto|septiembre|octubre|noviembre|diciembre)/i,\n\t monthsShortStrictRegex: /^(ene\\.?|feb\\.?|mar\\.?|abr\\.?|may\\.?|jun\\.?|jul\\.?|ago\\.?|sep\\.?|oct\\.?|nov\\.?|dic\\.?)/i,\n\t monthsParse: monthsParse,\n\t longMonthsParse: monthsParse,\n\t shortMonthsParse: monthsParse,\n\t weekdays: 'domingo_lunes_martes_miércoles_jueves_viernes_sábado'.split('_'),\n\t weekdaysShort: 'dom._lun._mar._mié._jue._vie._sáb.'.split('_'),\n\t weekdaysMin: 'do_lu_ma_mi_ju_vi_sá'.split('_'),\n\t weekdaysParseExact: true,\n\t longDateFormat: {\n\t LT: 'h:mm A',\n\t LTS: 'h:mm:ss A',\n\t L: 'DD/MM/YYYY',\n\t LL: 'D [de] MMMM [de] YYYY',\n\t LLL: 'D [de] MMMM [de] YYYY h:mm A',\n\t LLLL: 'dddd, D [de] MMMM [de] YYYY h:mm A',\n\t },\n\t calendar: {\n\t sameDay: function () {\n\t return '[hoy a la' + (this.hours() !== 1 ? 's' : '') + '] LT';\n\t },\n\t nextDay: function () {\n\t return '[mañana a la' + (this.hours() !== 1 ? 's' : '') + '] LT';\n\t },\n\t nextWeek: function () {\n\t return 'dddd [a la' + (this.hours() !== 1 ? 's' : '') + '] LT';\n\t },\n\t lastDay: function () {\n\t return '[ayer a la' + (this.hours() !== 1 ? 's' : '') + '] LT';\n\t },\n\t lastWeek: function () {\n\t return (\n\t '[el] dddd [pasado a la' +\n\t (this.hours() !== 1 ? 's' : '') +\n\t '] LT'\n\t );\n\t },\n\t sameElse: 'L',\n\t },\n\t relativeTime: {\n\t future: 'en %s',\n\t past: 'hace %s',\n\t s: 'unos segundos',\n\t ss: '%d segundos',\n\t m: 'un minuto',\n\t mm: '%d minutos',\n\t h: 'una hora',\n\t hh: '%d horas',\n\t d: 'un día',\n\t dd: '%d días',\n\t w: 'una semana',\n\t ww: '%d semanas',\n\t M: 'un mes',\n\t MM: '%d meses',\n\t y: 'un año',\n\t yy: '%d años',\n\t },\n\t dayOfMonthOrdinalParse: /\\d{1,2}º/,\n\t ordinal: '%dº',\n\t week: {\n\t dow: 1, // Monday is the first day of the week.\n\t doy: 4, // The week that contains Jan 4th is the first week of the year.\n\t },\n\t });\n\t\n\t return esDo;\n\t\n\t})));\n\n\n/***/ }),\n\n/***/ 343:\n/***/ (function(module, exports, __webpack_require__) {\n\n\t//! moment.js locale configuration\n\t//! locale : Spanish (Mexico) [es-mx]\n\t//! author : JC Franco : https://github.com/jcfranco\n\t\n\t;(function (global, factory) {\n\t true ? factory(__webpack_require__(1)) :\n\t typeof define === 'function' && define.amd ? define(['../moment'], factory) :\n\t factory(global.moment)\n\t}(this, (function (moment) { 'use strict';\n\t\n\t //! moment.js locale configuration\n\t\n\t var monthsShortDot = 'ene._feb._mar._abr._may._jun._jul._ago._sep._oct._nov._dic.'.split(\n\t '_'\n\t ),\n\t monthsShort = 'ene_feb_mar_abr_may_jun_jul_ago_sep_oct_nov_dic'.split('_'),\n\t monthsParse = [\n\t /^ene/i,\n\t /^feb/i,\n\t /^mar/i,\n\t /^abr/i,\n\t /^may/i,\n\t /^jun/i,\n\t /^jul/i,\n\t /^ago/i,\n\t /^sep/i,\n\t /^oct/i,\n\t /^nov/i,\n\t /^dic/i,\n\t ],\n\t 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\t\n\t var esMx = moment.defineLocale('es-mx', {\n\t months: 'enero_febrero_marzo_abril_mayo_junio_julio_agosto_septiembre_octubre_noviembre_diciembre'.split(\n\t '_'\n\t ),\n\t monthsShort: function (m, format) {\n\t if (!m) {\n\t return monthsShortDot;\n\t } else if (/-MMM-/.test(format)) {\n\t return monthsShort[m.month()];\n\t } else {\n\t return monthsShortDot[m.month()];\n\t }\n\t },\n\t monthsRegex: monthsRegex,\n\t monthsShortRegex: monthsRegex,\n\t monthsStrictRegex: /^(enero|febrero|marzo|abril|mayo|junio|julio|agosto|septiembre|octubre|noviembre|diciembre)/i,\n\t monthsShortStrictRegex: /^(ene\\.?|feb\\.?|mar\\.?|abr\\.?|may\\.?|jun\\.?|jul\\.?|ago\\.?|sep\\.?|oct\\.?|nov\\.?|dic\\.?)/i,\n\t monthsParse: monthsParse,\n\t longMonthsParse: monthsParse,\n\t shortMonthsParse: monthsParse,\n\t weekdays: 'domingo_lunes_martes_miércoles_jueves_viernes_sábado'.split('_'),\n\t weekdaysShort: 'dom._lun._mar._mié._jue._vie._sáb.'.split('_'),\n\t weekdaysMin: 'do_lu_ma_mi_ju_vi_sá'.split('_'),\n\t weekdaysParseExact: true,\n\t longDateFormat: {\n\t LT: 'H:mm',\n\t LTS: 'H:mm:ss',\n\t L: 'DD/MM/YYYY',\n\t LL: 'D [de] MMMM [de] YYYY',\n\t LLL: 'D [de] MMMM [de] YYYY H:mm',\n\t LLLL: 'dddd, D [de] MMMM [de] YYYY H:mm',\n\t },\n\t calendar: {\n\t sameDay: function () {\n\t return '[hoy a la' + (this.hours() !== 1 ? 's' : '') + '] LT';\n\t },\n\t nextDay: function () {\n\t return '[mañana a la' + (this.hours() !== 1 ? 's' : '') + '] LT';\n\t },\n\t nextWeek: function () {\n\t return 'dddd [a la' + (this.hours() !== 1 ? 's' : '') + '] LT';\n\t },\n\t lastDay: function () {\n\t return '[ayer a la' + (this.hours() !== 1 ? 's' : '') + '] LT';\n\t },\n\t lastWeek: function () {\n\t return (\n\t '[el] dddd [pasado a la' +\n\t (this.hours() !== 1 ? 's' : '') +\n\t '] LT'\n\t );\n\t },\n\t sameElse: 'L',\n\t },\n\t relativeTime: {\n\t future: 'en %s',\n\t past: 'hace %s',\n\t s: 'unos segundos',\n\t ss: '%d segundos',\n\t m: 'un minuto',\n\t mm: '%d minutos',\n\t h: 'una hora',\n\t hh: '%d horas',\n\t d: 'un día',\n\t dd: '%d días',\n\t w: 'una semana',\n\t ww: '%d semanas',\n\t M: 'un mes',\n\t MM: '%d meses',\n\t y: 'un año',\n\t yy: '%d años',\n\t },\n\t dayOfMonthOrdinalParse: /\\d{1,2}º/,\n\t ordinal: '%dº',\n\t week: {\n\t dow: 0, // Sunday is the first day of the week.\n\t doy: 4, // The week that contains Jan 4th is the first week of the year.\n\t },\n\t invalidDate: 'Fecha inválida',\n\t });\n\t\n\t return esMx;\n\t\n\t})));\n\n\n/***/ }),\n\n/***/ 344:\n/***/ (function(module, exports, __webpack_require__) {\n\n\t//! moment.js locale configuration\n\t//! locale : Spanish (United States) [es-us]\n\t//! author : bustta : https://github.com/bustta\n\t//! author : chrisrodz : https://github.com/chrisrodz\n\t\n\t;(function (global, factory) {\n\t true ? factory(__webpack_require__(1)) :\n\t typeof define === 'function' && define.amd ? define(['../moment'], factory) :\n\t factory(global.moment)\n\t}(this, (function (moment) { 'use strict';\n\t\n\t //! moment.js locale configuration\n\t\n\t var monthsShortDot = 'ene._feb._mar._abr._may._jun._jul._ago._sep._oct._nov._dic.'.split(\n\t '_'\n\t ),\n\t monthsShort = 'ene_feb_mar_abr_may_jun_jul_ago_sep_oct_nov_dic'.split('_'),\n\t monthsParse = [\n\t /^ene/i,\n\t /^feb/i,\n\t /^mar/i,\n\t /^abr/i,\n\t /^may/i,\n\t /^jun/i,\n\t /^jul/i,\n\t /^ago/i,\n\t /^sep/i,\n\t /^oct/i,\n\t /^nov/i,\n\t /^dic/i,\n\t ],\n\t 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\t\n\t var esUs = moment.defineLocale('es-us', {\n\t months: 'enero_febrero_marzo_abril_mayo_junio_julio_agosto_septiembre_octubre_noviembre_diciembre'.split(\n\t '_'\n\t ),\n\t monthsShort: function (m, format) {\n\t if (!m) {\n\t return monthsShortDot;\n\t } else if (/-MMM-/.test(format)) {\n\t return monthsShort[m.month()];\n\t } else {\n\t return monthsShortDot[m.month()];\n\t }\n\t },\n\t monthsRegex: monthsRegex,\n\t monthsShortRegex: monthsRegex,\n\t monthsStrictRegex: /^(enero|febrero|marzo|abril|mayo|junio|julio|agosto|septiembre|octubre|noviembre|diciembre)/i,\n\t monthsShortStrictRegex: /^(ene\\.?|feb\\.?|mar\\.?|abr\\.?|may\\.?|jun\\.?|jul\\.?|ago\\.?|sep\\.?|oct\\.?|nov\\.?|dic\\.?)/i,\n\t monthsParse: monthsParse,\n\t longMonthsParse: monthsParse,\n\t shortMonthsParse: monthsParse,\n\t weekdays: 'domingo_lunes_martes_miércoles_jueves_viernes_sábado'.split('_'),\n\t weekdaysShort: 'dom._lun._mar._mié._jue._vie._sáb.'.split('_'),\n\t weekdaysMin: 'do_lu_ma_mi_ju_vi_sá'.split('_'),\n\t weekdaysParseExact: true,\n\t longDateFormat: {\n\t LT: 'h:mm A',\n\t LTS: 'h:mm:ss A',\n\t L: 'MM/DD/YYYY',\n\t LL: 'D [de] MMMM [de] YYYY',\n\t LLL: 'D [de] MMMM [de] YYYY h:mm A',\n\t LLLL: 'dddd, D [de] MMMM [de] YYYY h:mm A',\n\t },\n\t calendar: {\n\t sameDay: function () {\n\t return '[hoy a la' + (this.hours() !== 1 ? 's' : '') + '] LT';\n\t },\n\t nextDay: function () {\n\t return '[mañana a la' + (this.hours() !== 1 ? 's' : '') + '] LT';\n\t },\n\t nextWeek: function () {\n\t return 'dddd [a la' + (this.hours() !== 1 ? 's' : '') + '] LT';\n\t },\n\t lastDay: function () {\n\t return '[ayer a la' + (this.hours() !== 1 ? 's' : '') + '] LT';\n\t },\n\t lastWeek: function () {\n\t return (\n\t '[el] dddd [pasado a la' +\n\t (this.hours() !== 1 ? 's' : '') +\n\t '] LT'\n\t );\n\t },\n\t sameElse: 'L',\n\t },\n\t relativeTime: {\n\t future: 'en %s',\n\t past: 'hace %s',\n\t s: 'unos segundos',\n\t ss: '%d segundos',\n\t m: 'un minuto',\n\t mm: '%d minutos',\n\t h: 'una hora',\n\t hh: '%d horas',\n\t d: 'un día',\n\t dd: '%d días',\n\t w: 'una semana',\n\t ww: '%d semanas',\n\t M: 'un mes',\n\t MM: '%d meses',\n\t y: 'un año',\n\t yy: '%d años',\n\t },\n\t dayOfMonthOrdinalParse: /\\d{1,2}º/,\n\t ordinal: '%dº',\n\t week: {\n\t dow: 0, // Sunday is the first day of the week.\n\t doy: 6, // The week that contains Jan 6th is the first week of the year.\n\t },\n\t });\n\t\n\t return esUs;\n\t\n\t})));\n\n\n/***/ }),\n\n/***/ 345:\n/***/ (function(module, exports, __webpack_require__) {\n\n\t//! moment.js locale configuration\n\t//! locale : Spanish [es]\n\t//! author : Julio Napurí : https://github.com/julionc\n\t\n\t;(function (global, factory) {\n\t true ? factory(__webpack_require__(1)) :\n\t typeof define === 'function' && define.amd ? define(['../moment'], factory) :\n\t factory(global.moment)\n\t}(this, (function (moment) { 'use strict';\n\t\n\t //! moment.js locale configuration\n\t\n\t var monthsShortDot = 'ene._feb._mar._abr._may._jun._jul._ago._sep._oct._nov._dic.'.split(\n\t '_'\n\t ),\n\t monthsShort = 'ene_feb_mar_abr_may_jun_jul_ago_sep_oct_nov_dic'.split('_'),\n\t monthsParse = [\n\t /^ene/i,\n\t /^feb/i,\n\t /^mar/i,\n\t /^abr/i,\n\t /^may/i,\n\t /^jun/i,\n\t /^jul/i,\n\t /^ago/i,\n\t /^sep/i,\n\t /^oct/i,\n\t /^nov/i,\n\t /^dic/i,\n\t ],\n\t 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\t\n\t var es = moment.defineLocale('es', {\n\t months: 'enero_febrero_marzo_abril_mayo_junio_julio_agosto_septiembre_octubre_noviembre_diciembre'.split(\n\t '_'\n\t ),\n\t monthsShort: function (m, format) {\n\t if (!m) {\n\t return monthsShortDot;\n\t } else if (/-MMM-/.test(format)) {\n\t return monthsShort[m.month()];\n\t } else {\n\t return monthsShortDot[m.month()];\n\t }\n\t },\n\t monthsRegex: monthsRegex,\n\t monthsShortRegex: monthsRegex,\n\t monthsStrictRegex: /^(enero|febrero|marzo|abril|mayo|junio|julio|agosto|septiembre|octubre|noviembre|diciembre)/i,\n\t monthsShortStrictRegex: /^(ene\\.?|feb\\.?|mar\\.?|abr\\.?|may\\.?|jun\\.?|jul\\.?|ago\\.?|sep\\.?|oct\\.?|nov\\.?|dic\\.?)/i,\n\t monthsParse: monthsParse,\n\t longMonthsParse: monthsParse,\n\t shortMonthsParse: monthsParse,\n\t weekdays: 'domingo_lunes_martes_miércoles_jueves_viernes_sábado'.split('_'),\n\t weekdaysShort: 'dom._lun._mar._mié._jue._vie._sáb.'.split('_'),\n\t weekdaysMin: 'do_lu_ma_mi_ju_vi_sá'.split('_'),\n\t weekdaysParseExact: true,\n\t longDateFormat: {\n\t LT: 'H:mm',\n\t LTS: 'H:mm:ss',\n\t L: 'DD/MM/YYYY',\n\t LL: 'D [de] MMMM [de] YYYY',\n\t LLL: 'D [de] MMMM [de] YYYY H:mm',\n\t LLLL: 'dddd, D [de] MMMM [de] YYYY H:mm',\n\t },\n\t calendar: {\n\t sameDay: function () {\n\t return '[hoy a la' + (this.hours() !== 1 ? 's' : '') + '] LT';\n\t },\n\t nextDay: function () {\n\t return '[mañana a la' + (this.hours() !== 1 ? 's' : '') + '] LT';\n\t },\n\t nextWeek: function () {\n\t return 'dddd [a la' + (this.hours() !== 1 ? 's' : '') + '] LT';\n\t },\n\t lastDay: function () {\n\t return '[ayer a la' + (this.hours() !== 1 ? 's' : '') + '] LT';\n\t },\n\t lastWeek: function () {\n\t return (\n\t '[el] dddd [pasado a la' +\n\t (this.hours() !== 1 ? 's' : '') +\n\t '] LT'\n\t );\n\t },\n\t sameElse: 'L',\n\t },\n\t relativeTime: {\n\t future: 'en %s',\n\t past: 'hace %s',\n\t s: 'unos segundos',\n\t ss: '%d segundos',\n\t m: 'un minuto',\n\t mm: '%d minutos',\n\t h: 'una hora',\n\t hh: '%d horas',\n\t d: 'un día',\n\t dd: '%d días',\n\t w: 'una semana',\n\t ww: '%d semanas',\n\t M: 'un mes',\n\t MM: '%d meses',\n\t y: 'un año',\n\t yy: '%d años',\n\t },\n\t dayOfMonthOrdinalParse: /\\d{1,2}º/,\n\t ordinal: '%dº',\n\t week: {\n\t dow: 1, // Monday is the first day of the week.\n\t doy: 4, // The week that contains Jan 4th is the first week of the year.\n\t },\n\t invalidDate: 'Fecha inválida',\n\t });\n\t\n\t return es;\n\t\n\t})));\n\n\n/***/ }),\n\n/***/ 346:\n/***/ (function(module, exports, __webpack_require__) {\n\n\t//! moment.js locale configuration\n\t//! locale : Estonian [et]\n\t//! author : Henry Kehlmann : https://github.com/madhenry\n\t//! improvements : Illimar Tambek : https://github.com/ragulka\n\t\n\t;(function (global, factory) {\n\t true ? factory(__webpack_require__(1)) :\n\t typeof define === 'function' && define.amd ? define(['../moment'], factory) :\n\t factory(global.moment)\n\t}(this, (function (moment) { 'use strict';\n\t\n\t //! moment.js locale configuration\n\t\n\t function processRelativeTime(number, withoutSuffix, key, isFuture) {\n\t var format = {\n\t s: ['mõne sekundi', 'mõni sekund', 'paar sekundit'],\n\t ss: [number + 'sekundi', number + 'sekundit'],\n\t m: ['ühe minuti', 'üks minut'],\n\t mm: [number + ' minuti', number + ' minutit'],\n\t h: ['ühe tunni', 'tund aega', 'üks tund'],\n\t hh: [number + ' tunni', number + ' tundi'],\n\t d: ['ühe päeva', 'üks päev'],\n\t M: ['kuu aja', 'kuu aega', 'üks kuu'],\n\t MM: [number + ' kuu', number + ' kuud'],\n\t y: ['ühe aasta', 'aasta', 'üks aasta'],\n\t yy: [number + ' aasta', number + ' aastat'],\n\t };\n\t if (withoutSuffix) {\n\t return format[key][2] ? format[key][2] : format[key][1];\n\t }\n\t return isFuture ? format[key][0] : format[key][1];\n\t }\n\t\n\t var et = moment.defineLocale('et', {\n\t months: 'jaanuar_veebruar_märts_aprill_mai_juuni_juuli_august_september_oktoober_november_detsember'.split(\n\t '_'\n\t ),\n\t monthsShort: 'jaan_veebr_märts_apr_mai_juuni_juuli_aug_sept_okt_nov_dets'.split(\n\t '_'\n\t ),\n\t weekdays: 'pühapäev_esmaspäev_teisipäev_kolmapäev_neljapäev_reede_laupäev'.split(\n\t '_'\n\t ),\n\t weekdaysShort: 'P_E_T_K_N_R_L'.split('_'),\n\t weekdaysMin: 'P_E_T_K_N_R_L'.split('_'),\n\t longDateFormat: {\n\t LT: 'H:mm',\n\t LTS: 'H:mm:ss',\n\t L: 'DD.MM.YYYY',\n\t LL: 'D. MMMM YYYY',\n\t LLL: 'D. MMMM YYYY H:mm',\n\t LLLL: 'dddd, D. MMMM YYYY H:mm',\n\t },\n\t calendar: {\n\t sameDay: '[Täna,] LT',\n\t nextDay: '[Homme,] LT',\n\t nextWeek: '[Järgmine] dddd LT',\n\t lastDay: '[Eile,] LT',\n\t lastWeek: '[Eelmine] dddd LT',\n\t sameElse: 'L',\n\t },\n\t relativeTime: {\n\t future: '%s pärast',\n\t past: '%s tagasi',\n\t s: processRelativeTime,\n\t ss: processRelativeTime,\n\t m: processRelativeTime,\n\t mm: processRelativeTime,\n\t h: processRelativeTime,\n\t hh: processRelativeTime,\n\t d: processRelativeTime,\n\t dd: '%d päeva',\n\t M: processRelativeTime,\n\t MM: processRelativeTime,\n\t y: processRelativeTime,\n\t yy: processRelativeTime,\n\t },\n\t dayOfMonthOrdinalParse: /\\d{1,2}\\./,\n\t ordinal: '%d.',\n\t week: {\n\t dow: 1, // Monday is the first day of the week.\n\t doy: 4, // The week that contains Jan 4th is the first week of the year.\n\t },\n\t });\n\t\n\t return et;\n\t\n\t})));\n\n\n/***/ }),\n\n/***/ 347:\n/***/ (function(module, exports, __webpack_require__) {\n\n\t//! moment.js locale configuration\n\t//! locale : Basque [eu]\n\t//! author : Eneko Illarramendi : https://github.com/eillarra\n\t\n\t;(function (global, factory) {\n\t true ? factory(__webpack_require__(1)) :\n\t typeof define === 'function' && define.amd ? define(['../moment'], factory) :\n\t factory(global.moment)\n\t}(this, (function (moment) { 'use strict';\n\t\n\t //! moment.js locale configuration\n\t\n\t var eu = moment.defineLocale('eu', {\n\t months: 'urtarrila_otsaila_martxoa_apirila_maiatza_ekaina_uztaila_abuztua_iraila_urria_azaroa_abendua'.split(\n\t '_'\n\t ),\n\t monthsShort: 'urt._ots._mar._api._mai._eka._uzt._abu._ira._urr._aza._abe.'.split(\n\t '_'\n\t ),\n\t monthsParseExact: true,\n\t weekdays: 'igandea_astelehena_asteartea_asteazkena_osteguna_ostirala_larunbata'.split(\n\t '_'\n\t ),\n\t weekdaysShort: 'ig._al._ar._az._og._ol._lr.'.split('_'),\n\t weekdaysMin: 'ig_al_ar_az_og_ol_lr'.split('_'),\n\t weekdaysParseExact: true,\n\t longDateFormat: {\n\t LT: 'HH:mm',\n\t LTS: 'HH:mm:ss',\n\t L: 'YYYY-MM-DD',\n\t LL: 'YYYY[ko] MMMM[ren] D[a]',\n\t LLL: 'YYYY[ko] MMMM[ren] D[a] HH:mm',\n\t LLLL: 'dddd, YYYY[ko] MMMM[ren] D[a] HH:mm',\n\t l: 'YYYY-M-D',\n\t ll: 'YYYY[ko] MMM D[a]',\n\t lll: 'YYYY[ko] MMM D[a] HH:mm',\n\t llll: 'ddd, YYYY[ko] MMM D[a] HH:mm',\n\t },\n\t calendar: {\n\t sameDay: '[gaur] LT[etan]',\n\t nextDay: '[bihar] LT[etan]',\n\t nextWeek: 'dddd LT[etan]',\n\t lastDay: '[atzo] LT[etan]',\n\t lastWeek: '[aurreko] dddd LT[etan]',\n\t sameElse: 'L',\n\t },\n\t relativeTime: {\n\t future: '%s barru',\n\t past: 'duela %s',\n\t s: 'segundo batzuk',\n\t ss: '%d segundo',\n\t m: 'minutu bat',\n\t mm: '%d minutu',\n\t h: 'ordu bat',\n\t hh: '%d ordu',\n\t d: 'egun bat',\n\t dd: '%d egun',\n\t M: 'hilabete bat',\n\t MM: '%d hilabete',\n\t y: 'urte bat',\n\t yy: '%d urte',\n\t },\n\t dayOfMonthOrdinalParse: /\\d{1,2}\\./,\n\t ordinal: '%d.',\n\t week: {\n\t dow: 1, // Monday is the first day of the week.\n\t doy: 7, // The week that contains Jan 7th is the first week of the year.\n\t },\n\t });\n\t\n\t return eu;\n\t\n\t})));\n\n\n/***/ }),\n\n/***/ 348:\n/***/ (function(module, exports, __webpack_require__) {\n\n\t//! moment.js locale configuration\n\t//! locale : Persian [fa]\n\t//! author : Ebrahim Byagowi : https://github.com/ebraminio\n\t\n\t;(function (global, factory) {\n\t true ? factory(__webpack_require__(1)) :\n\t typeof define === 'function' && define.amd ? define(['../moment'], factory) :\n\t factory(global.moment)\n\t}(this, (function (moment) { 'use strict';\n\t\n\t //! moment.js locale configuration\n\t\n\t var symbolMap = {\n\t 1: '۱',\n\t 2: '۲',\n\t 3: '۳',\n\t 4: '۴',\n\t 5: '۵',\n\t 6: '۶',\n\t 7: '۷',\n\t 8: '۸',\n\t 9: '۹',\n\t 0: '۰',\n\t },\n\t numberMap = {\n\t '۱': '1',\n\t '۲': '2',\n\t '۳': '3',\n\t '۴': '4',\n\t '۵': '5',\n\t '۶': '6',\n\t '۷': '7',\n\t '۸': '8',\n\t '۹': '9',\n\t '۰': '0',\n\t };\n\t\n\t var fa = moment.defineLocale('fa', {\n\t months: 'ژانویه_فوریه_مارس_آوریل_مه_ژوئن_ژوئیه_اوت_سپتامبر_اکتبر_نوامبر_دسامبر'.split(\n\t '_'\n\t ),\n\t monthsShort: 'ژانویه_فوریه_مارس_آوریل_مه_ژوئن_ژوئیه_اوت_سپتامبر_اکتبر_نوامبر_دسامبر'.split(\n\t '_'\n\t ),\n\t weekdays: 'یک\\u200cشنبه_دوشنبه_سه\\u200cشنبه_چهارشنبه_پنج\\u200cشنبه_جمعه_شنبه'.split(\n\t '_'\n\t ),\n\t weekdaysShort: 'یک\\u200cشنبه_دوشنبه_سه\\u200cشنبه_چهارشنبه_پنج\\u200cشنبه_جمعه_شنبه'.split(\n\t '_'\n\t ),\n\t weekdaysMin: 'ی_د_س_چ_پ_ج_ش'.split('_'),\n\t weekdaysParseExact: true,\n\t longDateFormat: {\n\t LT: 'HH:mm',\n\t LTS: 'HH:mm:ss',\n\t L: 'DD/MM/YYYY',\n\t LL: 'D MMMM YYYY',\n\t LLL: 'D MMMM YYYY HH:mm',\n\t LLLL: 'dddd, D MMMM YYYY HH:mm',\n\t },\n\t meridiemParse: /قبل از ظهر|بعد از ظهر/,\n\t isPM: function (input) {\n\t return /بعد از ظهر/.test(input);\n\t },\n\t meridiem: function (hour, minute, isLower) {\n\t if (hour < 12) {\n\t return 'قبل از ظهر';\n\t } else {\n\t return 'بعد از ظهر';\n\t }\n\t },\n\t calendar: {\n\t sameDay: '[امروز ساعت] LT',\n\t nextDay: '[فردا ساعت] LT',\n\t nextWeek: 'dddd [ساعت] LT',\n\t lastDay: '[دیروز ساعت] LT',\n\t lastWeek: 'dddd [پیش] [ساعت] LT',\n\t sameElse: 'L',\n\t },\n\t relativeTime: {\n\t future: 'در %s',\n\t past: '%s پیش',\n\t s: 'چند ثانیه',\n\t ss: '%d ثانیه',\n\t m: 'یک دقیقه',\n\t mm: '%d دقیقه',\n\t h: 'یک ساعت',\n\t hh: '%d ساعت',\n\t d: 'یک روز',\n\t dd: '%d روز',\n\t M: 'یک ماه',\n\t MM: '%d ماه',\n\t y: 'یک سال',\n\t yy: '%d سال',\n\t },\n\t preparse: function (string) {\n\t return string\n\t .replace(/[۰-۹]/g, function (match) {\n\t return numberMap[match];\n\t })\n\t .replace(/،/g, ',');\n\t },\n\t postformat: function (string) {\n\t return string\n\t .replace(/\\d/g, function (match) {\n\t return symbolMap[match];\n\t })\n\t .replace(/,/g, '،');\n\t },\n\t dayOfMonthOrdinalParse: /\\d{1,2}م/,\n\t ordinal: '%dم',\n\t week: {\n\t dow: 6, // Saturday is the first day of the week.\n\t doy: 12, // The week that contains Jan 12th is the first week of the year.\n\t },\n\t });\n\t\n\t return fa;\n\t\n\t})));\n\n\n/***/ }),\n\n/***/ 349:\n/***/ (function(module, exports, __webpack_require__) {\n\n\t//! moment.js locale configuration\n\t//! locale : Finnish [fi]\n\t//! author : Tarmo Aidantausta : https://github.com/bleadof\n\t\n\t;(function (global, factory) {\n\t true ? factory(__webpack_require__(1)) :\n\t typeof define === 'function' && define.amd ? define(['../moment'], factory) :\n\t factory(global.moment)\n\t}(this, (function (moment) { 'use strict';\n\t\n\t //! moment.js locale configuration\n\t\n\t var numbersPast = 'nolla yksi kaksi kolme neljä viisi kuusi seitsemän kahdeksan yhdeksän'.split(\n\t ' '\n\t ),\n\t numbersFuture = [\n\t 'nolla',\n\t 'yhden',\n\t 'kahden',\n\t 'kolmen',\n\t 'neljän',\n\t 'viiden',\n\t 'kuuden',\n\t numbersPast[7],\n\t numbersPast[8],\n\t numbersPast[9],\n\t ];\n\t function translate(number, withoutSuffix, key, isFuture) {\n\t var result = '';\n\t switch (key) {\n\t case 's':\n\t return isFuture ? 'muutaman sekunnin' : 'muutama sekunti';\n\t case 'ss':\n\t result = isFuture ? 'sekunnin' : 'sekuntia';\n\t break;\n\t case 'm':\n\t return isFuture ? 'minuutin' : 'minuutti';\n\t case 'mm':\n\t result = isFuture ? 'minuutin' : 'minuuttia';\n\t break;\n\t case 'h':\n\t return isFuture ? 'tunnin' : 'tunti';\n\t case 'hh':\n\t result = isFuture ? 'tunnin' : 'tuntia';\n\t break;\n\t case 'd':\n\t return isFuture ? 'päivän' : 'päivä';\n\t case 'dd':\n\t result = isFuture ? 'päivän' : 'päivää';\n\t break;\n\t case 'M':\n\t return isFuture ? 'kuukauden' : 'kuukausi';\n\t case 'MM':\n\t result = isFuture ? 'kuukauden' : 'kuukautta';\n\t break;\n\t case 'y':\n\t return isFuture ? 'vuoden' : 'vuosi';\n\t case 'yy':\n\t result = isFuture ? 'vuoden' : 'vuotta';\n\t break;\n\t }\n\t result = verbalNumber(number, isFuture) + ' ' + result;\n\t return result;\n\t }\n\t function verbalNumber(number, isFuture) {\n\t return number < 10\n\t ? isFuture\n\t ? numbersFuture[number]\n\t : numbersPast[number]\n\t : number;\n\t }\n\t\n\t var fi = moment.defineLocale('fi', {\n\t months: 'tammikuu_helmikuu_maaliskuu_huhtikuu_toukokuu_kesäkuu_heinäkuu_elokuu_syyskuu_lokakuu_marraskuu_joulukuu'.split(\n\t '_'\n\t ),\n\t monthsShort: 'tammi_helmi_maalis_huhti_touko_kesä_heinä_elo_syys_loka_marras_joulu'.split(\n\t '_'\n\t ),\n\t weekdays: 'sunnuntai_maanantai_tiistai_keskiviikko_torstai_perjantai_lauantai'.split(\n\t '_'\n\t ),\n\t weekdaysShort: 'su_ma_ti_ke_to_pe_la'.split('_'),\n\t weekdaysMin: 'su_ma_ti_ke_to_pe_la'.split('_'),\n\t longDateFormat: {\n\t LT: 'HH.mm',\n\t LTS: 'HH.mm.ss',\n\t L: 'DD.MM.YYYY',\n\t LL: 'Do MMMM[ta] YYYY',\n\t LLL: 'Do MMMM[ta] YYYY, [klo] HH.mm',\n\t LLLL: 'dddd, Do MMMM[ta] YYYY, [klo] HH.mm',\n\t l: 'D.M.YYYY',\n\t ll: 'Do MMM YYYY',\n\t lll: 'Do MMM YYYY, [klo] HH.mm',\n\t llll: 'ddd, Do MMM YYYY, [klo] HH.mm',\n\t },\n\t calendar: {\n\t sameDay: '[tänään] [klo] LT',\n\t nextDay: '[huomenna] [klo] LT',\n\t nextWeek: 'dddd [klo] LT',\n\t lastDay: '[eilen] [klo] LT',\n\t lastWeek: '[viime] dddd[na] [klo] LT',\n\t sameElse: 'L',\n\t },\n\t relativeTime: {\n\t future: '%s päästä',\n\t past: '%s sitten',\n\t s: translate,\n\t ss: translate,\n\t m: translate,\n\t mm: translate,\n\t h: translate,\n\t hh: translate,\n\t d: translate,\n\t dd: translate,\n\t M: translate,\n\t MM: translate,\n\t y: translate,\n\t yy: translate,\n\t },\n\t dayOfMonthOrdinalParse: /\\d{1,2}\\./,\n\t ordinal: '%d.',\n\t week: {\n\t dow: 1, // Monday is the first day of the week.\n\t doy: 4, // The week that contains Jan 4th is the first week of the year.\n\t },\n\t });\n\t\n\t return fi;\n\t\n\t})));\n\n\n/***/ }),\n\n/***/ 350:\n/***/ (function(module, exports, __webpack_require__) {\n\n\t//! moment.js locale configuration\n\t//! locale : Filipino [fil]\n\t//! author : Dan Hagman : https://github.com/hagmandan\n\t//! author : Matthew Co : https://github.com/matthewdeeco\n\t\n\t;(function (global, factory) {\n\t true ? factory(__webpack_require__(1)) :\n\t typeof define === 'function' && define.amd ? define(['../moment'], factory) :\n\t factory(global.moment)\n\t}(this, (function (moment) { 'use strict';\n\t\n\t //! moment.js locale configuration\n\t\n\t var fil = moment.defineLocale('fil', {\n\t months: 'Enero_Pebrero_Marso_Abril_Mayo_Hunyo_Hulyo_Agosto_Setyembre_Oktubre_Nobyembre_Disyembre'.split(\n\t '_'\n\t ),\n\t monthsShort: 'Ene_Peb_Mar_Abr_May_Hun_Hul_Ago_Set_Okt_Nob_Dis'.split('_'),\n\t weekdays: 'Linggo_Lunes_Martes_Miyerkules_Huwebes_Biyernes_Sabado'.split(\n\t '_'\n\t ),\n\t weekdaysShort: 'Lin_Lun_Mar_Miy_Huw_Biy_Sab'.split('_'),\n\t weekdaysMin: 'Li_Lu_Ma_Mi_Hu_Bi_Sab'.split('_'),\n\t longDateFormat: {\n\t LT: 'HH:mm',\n\t LTS: 'HH:mm:ss',\n\t L: 'MM/D/YYYY',\n\t LL: 'MMMM D, YYYY',\n\t LLL: 'MMMM D, YYYY HH:mm',\n\t LLLL: 'dddd, MMMM DD, YYYY HH:mm',\n\t },\n\t calendar: {\n\t sameDay: 'LT [ngayong araw]',\n\t nextDay: '[Bukas ng] LT',\n\t nextWeek: 'LT [sa susunod na] dddd',\n\t lastDay: 'LT [kahapon]',\n\t lastWeek: 'LT [noong nakaraang] dddd',\n\t sameElse: 'L',\n\t },\n\t relativeTime: {\n\t future: 'sa loob ng %s',\n\t past: '%s ang nakalipas',\n\t s: 'ilang segundo',\n\t ss: '%d segundo',\n\t m: 'isang minuto',\n\t mm: '%d minuto',\n\t h: 'isang oras',\n\t hh: '%d oras',\n\t d: 'isang araw',\n\t dd: '%d araw',\n\t M: 'isang buwan',\n\t MM: '%d buwan',\n\t y: 'isang taon',\n\t yy: '%d taon',\n\t },\n\t dayOfMonthOrdinalParse: /\\d{1,2}/,\n\t ordinal: function (number) {\n\t return number;\n\t },\n\t week: {\n\t dow: 1, // Monday is the first day of the week.\n\t doy: 4, // The week that contains Jan 4th is the first week of the year.\n\t },\n\t });\n\t\n\t return fil;\n\t\n\t})));\n\n\n/***/ }),\n\n/***/ 351:\n/***/ (function(module, exports, __webpack_require__) {\n\n\t//! moment.js locale configuration\n\t//! locale : Faroese [fo]\n\t//! author : Ragnar Johannesen : https://github.com/ragnar123\n\t//! author : Kristian Sakarisson : https://github.com/sakarisson\n\t\n\t;(function (global, factory) {\n\t true ? factory(__webpack_require__(1)) :\n\t typeof define === 'function' && define.amd ? define(['../moment'], factory) :\n\t factory(global.moment)\n\t}(this, (function (moment) { 'use strict';\n\t\n\t //! moment.js locale configuration\n\t\n\t var fo = moment.defineLocale('fo', {\n\t months: 'januar_februar_mars_apríl_mai_juni_juli_august_september_oktober_november_desember'.split(\n\t '_'\n\t ),\n\t monthsShort: 'jan_feb_mar_apr_mai_jun_jul_aug_sep_okt_nov_des'.split('_'),\n\t weekdays: 'sunnudagur_mánadagur_týsdagur_mikudagur_hósdagur_fríggjadagur_leygardagur'.split(\n\t '_'\n\t ),\n\t weekdaysShort: 'sun_mán_týs_mik_hós_frí_ley'.split('_'),\n\t weekdaysMin: 'su_má_tý_mi_hó_fr_le'.split('_'),\n\t longDateFormat: {\n\t LT: 'HH:mm',\n\t LTS: 'HH:mm:ss',\n\t L: 'DD/MM/YYYY',\n\t LL: 'D MMMM YYYY',\n\t LLL: 'D MMMM YYYY HH:mm',\n\t LLLL: 'dddd D. MMMM, YYYY HH:mm',\n\t },\n\t calendar: {\n\t sameDay: '[Í dag kl.] LT',\n\t nextDay: '[Í morgin kl.] LT',\n\t nextWeek: 'dddd [kl.] LT',\n\t lastDay: '[Í gjár kl.] LT',\n\t lastWeek: '[síðstu] dddd [kl] LT',\n\t sameElse: 'L',\n\t },\n\t relativeTime: {\n\t future: 'um %s',\n\t past: '%s síðani',\n\t s: 'fá sekund',\n\t ss: '%d sekundir',\n\t m: 'ein minuttur',\n\t mm: '%d minuttir',\n\t h: 'ein tími',\n\t hh: '%d tímar',\n\t d: 'ein dagur',\n\t dd: '%d dagar',\n\t M: 'ein mánaður',\n\t MM: '%d mánaðir',\n\t y: 'eitt ár',\n\t yy: '%d ár',\n\t },\n\t dayOfMonthOrdinalParse: /\\d{1,2}\\./,\n\t ordinal: '%d.',\n\t week: {\n\t dow: 1, // Monday is the first day of the week.\n\t doy: 4, // The week that contains Jan 4th is the first week of the year.\n\t },\n\t });\n\t\n\t return fo;\n\t\n\t})));\n\n\n/***/ }),\n\n/***/ 352:\n/***/ (function(module, exports, __webpack_require__) {\n\n\t//! moment.js locale configuration\n\t//! locale : French (Canada) [fr-ca]\n\t//! author : Jonathan Abourbih : https://github.com/jonbca\n\t\n\t;(function (global, factory) {\n\t true ? factory(__webpack_require__(1)) :\n\t typeof define === 'function' && define.amd ? define(['../moment'], factory) :\n\t factory(global.moment)\n\t}(this, (function (moment) { 'use strict';\n\t\n\t //! moment.js locale configuration\n\t\n\t var frCa = moment.defineLocale('fr-ca', {\n\t months: 'janvier_février_mars_avril_mai_juin_juillet_août_septembre_octobre_novembre_décembre'.split(\n\t '_'\n\t ),\n\t monthsShort: 'janv._févr._mars_avr._mai_juin_juil._août_sept._oct._nov._déc.'.split(\n\t '_'\n\t ),\n\t monthsParseExact: true,\n\t weekdays: 'dimanche_lundi_mardi_mercredi_jeudi_vendredi_samedi'.split('_'),\n\t weekdaysShort: 'dim._lun._mar._mer._jeu._ven._sam.'.split('_'),\n\t weekdaysMin: 'di_lu_ma_me_je_ve_sa'.split('_'),\n\t weekdaysParseExact: true,\n\t longDateFormat: {\n\t LT: 'HH:mm',\n\t LTS: 'HH:mm:ss',\n\t L: 'YYYY-MM-DD',\n\t LL: 'D MMMM YYYY',\n\t LLL: 'D MMMM YYYY HH:mm',\n\t LLLL: 'dddd D MMMM YYYY HH:mm',\n\t },\n\t calendar: {\n\t sameDay: '[Aujourd’hui à] LT',\n\t nextDay: '[Demain à] LT',\n\t nextWeek: 'dddd [à] LT',\n\t lastDay: '[Hier à] LT',\n\t lastWeek: 'dddd [dernier à] LT',\n\t sameElse: 'L',\n\t },\n\t relativeTime: {\n\t future: 'dans %s',\n\t past: 'il y a %s',\n\t s: 'quelques secondes',\n\t ss: '%d secondes',\n\t m: 'une minute',\n\t mm: '%d minutes',\n\t h: 'une heure',\n\t hh: '%d heures',\n\t d: 'un jour',\n\t dd: '%d jours',\n\t M: 'un mois',\n\t MM: '%d mois',\n\t y: 'un an',\n\t yy: '%d ans',\n\t },\n\t dayOfMonthOrdinalParse: /\\d{1,2}(er|e)/,\n\t ordinal: function (number, period) {\n\t switch (period) {\n\t // Words with masculine grammatical gender: mois, trimestre, jour\n\t default:\n\t case 'M':\n\t case 'Q':\n\t case 'D':\n\t case 'DDD':\n\t case 'd':\n\t return number + (number === 1 ? 'er' : 'e');\n\t\n\t // Words with feminine grammatical gender: semaine\n\t case 'w':\n\t case 'W':\n\t return number + (number === 1 ? 're' : 'e');\n\t }\n\t },\n\t });\n\t\n\t return frCa;\n\t\n\t})));\n\n\n/***/ }),\n\n/***/ 353:\n/***/ (function(module, exports, __webpack_require__) {\n\n\t//! moment.js locale configuration\n\t//! locale : French (Switzerland) [fr-ch]\n\t//! author : Gaspard Bucher : https://github.com/gaspard\n\t\n\t;(function (global, factory) {\n\t true ? factory(__webpack_require__(1)) :\n\t typeof define === 'function' && define.amd ? define(['../moment'], factory) :\n\t factory(global.moment)\n\t}(this, (function (moment) { 'use strict';\n\t\n\t //! moment.js locale configuration\n\t\n\t var frCh = moment.defineLocale('fr-ch', {\n\t months: 'janvier_février_mars_avril_mai_juin_juillet_août_septembre_octobre_novembre_décembre'.split(\n\t '_'\n\t ),\n\t monthsShort: 'janv._févr._mars_avr._mai_juin_juil._août_sept._oct._nov._déc.'.split(\n\t '_'\n\t ),\n\t monthsParseExact: true,\n\t weekdays: 'dimanche_lundi_mardi_mercredi_jeudi_vendredi_samedi'.split('_'),\n\t weekdaysShort: 'dim._lun._mar._mer._jeu._ven._sam.'.split('_'),\n\t weekdaysMin: 'di_lu_ma_me_je_ve_sa'.split('_'),\n\t weekdaysParseExact: true,\n\t longDateFormat: {\n\t LT: 'HH:mm',\n\t LTS: 'HH:mm:ss',\n\t L: 'DD.MM.YYYY',\n\t LL: 'D MMMM YYYY',\n\t LLL: 'D MMMM YYYY HH:mm',\n\t LLLL: 'dddd D MMMM YYYY HH:mm',\n\t },\n\t calendar: {\n\t sameDay: '[Aujourd’hui à] LT',\n\t nextDay: '[Demain à] LT',\n\t nextWeek: 'dddd [à] LT',\n\t lastDay: '[Hier à] LT',\n\t lastWeek: 'dddd [dernier à] LT',\n\t sameElse: 'L',\n\t },\n\t relativeTime: {\n\t future: 'dans %s',\n\t past: 'il y a %s',\n\t s: 'quelques secondes',\n\t ss: '%d secondes',\n\t m: 'une minute',\n\t mm: '%d minutes',\n\t h: 'une heure',\n\t hh: '%d heures',\n\t d: 'un jour',\n\t dd: '%d jours',\n\t M: 'un mois',\n\t MM: '%d mois',\n\t y: 'un an',\n\t yy: '%d ans',\n\t },\n\t dayOfMonthOrdinalParse: /\\d{1,2}(er|e)/,\n\t ordinal: function (number, period) {\n\t switch (period) {\n\t // Words with masculine grammatical gender: mois, trimestre, jour\n\t default:\n\t case 'M':\n\t case 'Q':\n\t case 'D':\n\t case 'DDD':\n\t case 'd':\n\t return number + (number === 1 ? 'er' : 'e');\n\t\n\t // Words with feminine grammatical gender: semaine\n\t case 'w':\n\t case 'W':\n\t return number + (number === 1 ? 're' : 'e');\n\t }\n\t },\n\t week: {\n\t dow: 1, // Monday is the first day of the week.\n\t doy: 4, // The week that contains Jan 4th is the first week of the year.\n\t },\n\t });\n\t\n\t return frCh;\n\t\n\t})));\n\n\n/***/ }),\n\n/***/ 354:\n/***/ (function(module, exports, __webpack_require__) {\n\n\t//! moment.js locale configuration\n\t//! locale : French [fr]\n\t//! author : John Fischer : https://github.com/jfroffice\n\t\n\t;(function (global, factory) {\n\t true ? factory(__webpack_require__(1)) :\n\t typeof define === 'function' && define.amd ? define(['../moment'], factory) :\n\t factory(global.moment)\n\t}(this, (function (moment) { 'use strict';\n\t\n\t //! moment.js locale configuration\n\t\n\t var monthsStrictRegex = /^(janvier|février|mars|avril|mai|juin|juillet|août|septembre|octobre|novembre|décembre)/i,\n\t monthsShortStrictRegex = /(janv\\.?|févr\\.?|mars|avr\\.?|mai|juin|juil\\.?|août|sept\\.?|oct\\.?|nov\\.?|déc\\.?)/i,\n\t 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\t monthsParse = [\n\t /^janv/i,\n\t /^févr/i,\n\t /^mars/i,\n\t /^avr/i,\n\t /^mai/i,\n\t /^juin/i,\n\t /^juil/i,\n\t /^août/i,\n\t /^sept/i,\n\t /^oct/i,\n\t /^nov/i,\n\t /^déc/i,\n\t ];\n\t\n\t var fr = moment.defineLocale('fr', {\n\t months: 'janvier_février_mars_avril_mai_juin_juillet_août_septembre_octobre_novembre_décembre'.split(\n\t '_'\n\t ),\n\t monthsShort: 'janv._févr._mars_avr._mai_juin_juil._août_sept._oct._nov._déc.'.split(\n\t '_'\n\t ),\n\t monthsRegex: monthsRegex,\n\t monthsShortRegex: monthsRegex,\n\t monthsStrictRegex: monthsStrictRegex,\n\t monthsShortStrictRegex: monthsShortStrictRegex,\n\t monthsParse: monthsParse,\n\t longMonthsParse: monthsParse,\n\t shortMonthsParse: monthsParse,\n\t weekdays: 'dimanche_lundi_mardi_mercredi_jeudi_vendredi_samedi'.split('_'),\n\t weekdaysShort: 'dim._lun._mar._mer._jeu._ven._sam.'.split('_'),\n\t weekdaysMin: 'di_lu_ma_me_je_ve_sa'.split('_'),\n\t weekdaysParseExact: true,\n\t longDateFormat: {\n\t LT: 'HH:mm',\n\t LTS: 'HH:mm:ss',\n\t L: 'DD/MM/YYYY',\n\t LL: 'D MMMM YYYY',\n\t LLL: 'D MMMM YYYY HH:mm',\n\t LLLL: 'dddd D MMMM YYYY HH:mm',\n\t },\n\t calendar: {\n\t sameDay: '[Aujourd’hui à] LT',\n\t nextDay: '[Demain à] LT',\n\t nextWeek: 'dddd [à] LT',\n\t lastDay: '[Hier à] LT',\n\t lastWeek: 'dddd [dernier à] LT',\n\t sameElse: 'L',\n\t },\n\t relativeTime: {\n\t future: 'dans %s',\n\t past: 'il y a %s',\n\t s: 'quelques secondes',\n\t ss: '%d secondes',\n\t m: 'une minute',\n\t mm: '%d minutes',\n\t h: 'une heure',\n\t hh: '%d heures',\n\t d: 'un jour',\n\t dd: '%d jours',\n\t w: 'une semaine',\n\t ww: '%d semaines',\n\t M: 'un mois',\n\t MM: '%d mois',\n\t y: 'un an',\n\t yy: '%d ans',\n\t },\n\t dayOfMonthOrdinalParse: /\\d{1,2}(er|)/,\n\t ordinal: function (number, period) {\n\t switch (period) {\n\t // TODO: Return 'e' when day of month > 1. Move this case inside\n\t // block for masculine words below.\n\t // See https://github.com/moment/moment/issues/3375\n\t case 'D':\n\t return number + (number === 1 ? 'er' : '');\n\t\n\t // Words with masculine grammatical gender: mois, trimestre, jour\n\t default:\n\t case 'M':\n\t case 'Q':\n\t case 'DDD':\n\t case 'd':\n\t return number + (number === 1 ? 'er' : 'e');\n\t\n\t // Words with feminine grammatical gender: semaine\n\t case 'w':\n\t case 'W':\n\t return number + (number === 1 ? 're' : 'e');\n\t }\n\t },\n\t week: {\n\t dow: 1, // Monday is the first day of the week.\n\t doy: 4, // The week that contains Jan 4th is the first week of the year.\n\t },\n\t });\n\t\n\t return fr;\n\t\n\t})));\n\n\n/***/ }),\n\n/***/ 355:\n/***/ (function(module, exports, __webpack_require__) {\n\n\t//! moment.js locale configuration\n\t//! locale : Frisian [fy]\n\t//! author : Robin van der Vliet : https://github.com/robin0van0der0v\n\t\n\t;(function (global, factory) {\n\t true ? factory(__webpack_require__(1)) :\n\t typeof define === 'function' && define.amd ? define(['../moment'], factory) :\n\t factory(global.moment)\n\t}(this, (function (moment) { 'use strict';\n\t\n\t //! moment.js locale configuration\n\t\n\t var monthsShortWithDots = 'jan._feb._mrt._apr._mai_jun._jul._aug._sep._okt._nov._des.'.split(\n\t '_'\n\t ),\n\t monthsShortWithoutDots = 'jan_feb_mrt_apr_mai_jun_jul_aug_sep_okt_nov_des'.split(\n\t '_'\n\t );\n\t\n\t var fy = moment.defineLocale('fy', {\n\t months: 'jannewaris_febrewaris_maart_april_maaie_juny_july_augustus_septimber_oktober_novimber_desimber'.split(\n\t '_'\n\t ),\n\t monthsShort: function (m, format) {\n\t if (!m) {\n\t return monthsShortWithDots;\n\t } else if (/-MMM-/.test(format)) {\n\t return monthsShortWithoutDots[m.month()];\n\t } else {\n\t return monthsShortWithDots[m.month()];\n\t }\n\t },\n\t monthsParseExact: true,\n\t weekdays: 'snein_moandei_tiisdei_woansdei_tongersdei_freed_sneon'.split(\n\t '_'\n\t ),\n\t weekdaysShort: 'si._mo._ti._wo._to._fr._so.'.split('_'),\n\t weekdaysMin: 'Si_Mo_Ti_Wo_To_Fr_So'.split('_'),\n\t weekdaysParseExact: true,\n\t longDateFormat: {\n\t LT: 'HH:mm',\n\t LTS: 'HH:mm:ss',\n\t L: 'DD-MM-YYYY',\n\t LL: 'D MMMM YYYY',\n\t LLL: 'D MMMM YYYY HH:mm',\n\t LLLL: 'dddd D MMMM YYYY HH:mm',\n\t },\n\t calendar: {\n\t sameDay: '[hjoed om] LT',\n\t nextDay: '[moarn om] LT',\n\t nextWeek: 'dddd [om] LT',\n\t lastDay: '[juster om] LT',\n\t lastWeek: '[ôfrûne] dddd [om] LT',\n\t sameElse: 'L',\n\t },\n\t relativeTime: {\n\t future: 'oer %s',\n\t past: '%s lyn',\n\t s: 'in pear sekonden',\n\t ss: '%d sekonden',\n\t m: 'ien minút',\n\t mm: '%d minuten',\n\t h: 'ien oere',\n\t hh: '%d oeren',\n\t d: 'ien dei',\n\t dd: '%d dagen',\n\t M: 'ien moanne',\n\t MM: '%d moannen',\n\t y: 'ien jier',\n\t yy: '%d jierren',\n\t },\n\t dayOfMonthOrdinalParse: /\\d{1,2}(ste|de)/,\n\t ordinal: function (number) {\n\t return (\n\t number +\n\t (number === 1 || number === 8 || number >= 20 ? 'ste' : 'de')\n\t );\n\t },\n\t week: {\n\t dow: 1, // Monday is the first day of the week.\n\t doy: 4, // The week that contains Jan 4th is the first week of the year.\n\t },\n\t });\n\t\n\t return fy;\n\t\n\t})));\n\n\n/***/ }),\n\n/***/ 356:\n/***/ (function(module, exports, __webpack_require__) {\n\n\t//! moment.js locale configuration\n\t//! locale : Irish or Irish Gaelic [ga]\n\t//! author : André Silva : https://github.com/askpt\n\t\n\t;(function (global, factory) {\n\t true ? factory(__webpack_require__(1)) :\n\t typeof define === 'function' && define.amd ? define(['../moment'], factory) :\n\t factory(global.moment)\n\t}(this, (function (moment) { 'use strict';\n\t\n\t //! moment.js locale configuration\n\t\n\t var months = [\n\t 'Eanáir',\n\t 'Feabhra',\n\t 'Márta',\n\t 'Aibreán',\n\t 'Bealtaine',\n\t 'Meitheamh',\n\t 'Iúil',\n\t 'Lúnasa',\n\t 'Meán Fómhair',\n\t 'Deireadh Fómhair',\n\t 'Samhain',\n\t 'Nollaig',\n\t ],\n\t monthsShort = [\n\t 'Ean',\n\t 'Feabh',\n\t 'Márt',\n\t 'Aib',\n\t 'Beal',\n\t 'Meith',\n\t 'Iúil',\n\t 'Lún',\n\t 'M.F.',\n\t 'D.F.',\n\t 'Samh',\n\t 'Noll',\n\t ],\n\t weekdays = [\n\t 'Dé Domhnaigh',\n\t 'Dé Luain',\n\t 'Dé Máirt',\n\t 'Dé Céadaoin',\n\t 'Déardaoin',\n\t 'Dé hAoine',\n\t 'Dé Sathairn',\n\t ],\n\t weekdaysShort = ['Domh', 'Luan', 'Máirt', 'Céad', 'Déar', 'Aoine', 'Sath'],\n\t weekdaysMin = ['Do', 'Lu', 'Má', 'Cé', 'Dé', 'A', 'Sa'];\n\t\n\t var ga = moment.defineLocale('ga', {\n\t months: months,\n\t monthsShort: monthsShort,\n\t monthsParseExact: true,\n\t weekdays: weekdays,\n\t weekdaysShort: weekdaysShort,\n\t weekdaysMin: weekdaysMin,\n\t longDateFormat: {\n\t LT: 'HH:mm',\n\t LTS: 'HH:mm:ss',\n\t L: 'DD/MM/YYYY',\n\t LL: 'D MMMM YYYY',\n\t LLL: 'D MMMM YYYY HH:mm',\n\t LLLL: 'dddd, D MMMM YYYY HH:mm',\n\t },\n\t calendar: {\n\t sameDay: '[Inniu ag] LT',\n\t nextDay: '[Amárach ag] LT',\n\t nextWeek: 'dddd [ag] LT',\n\t lastDay: '[Inné ag] LT',\n\t lastWeek: 'dddd [seo caite] [ag] LT',\n\t sameElse: 'L',\n\t },\n\t relativeTime: {\n\t future: 'i %s',\n\t past: '%s ó shin',\n\t s: 'cúpla soicind',\n\t ss: '%d soicind',\n\t m: 'nóiméad',\n\t mm: '%d nóiméad',\n\t h: 'uair an chloig',\n\t hh: '%d uair an chloig',\n\t d: 'lá',\n\t dd: '%d lá',\n\t M: 'mí',\n\t MM: '%d míonna',\n\t y: 'bliain',\n\t yy: '%d bliain',\n\t },\n\t dayOfMonthOrdinalParse: /\\d{1,2}(d|na|mh)/,\n\t ordinal: function (number) {\n\t var output = number === 1 ? 'd' : number % 10 === 2 ? 'na' : 'mh';\n\t return number + output;\n\t },\n\t week: {\n\t dow: 1, // Monday is the first day of the week.\n\t doy: 4, // The week that contains Jan 4th is the first week of the year.\n\t },\n\t });\n\t\n\t return ga;\n\t\n\t})));\n\n\n/***/ }),\n\n/***/ 357:\n/***/ (function(module, exports, __webpack_require__) {\n\n\t//! moment.js locale configuration\n\t//! locale : Scottish Gaelic [gd]\n\t//! author : Jon Ashdown : https://github.com/jonashdown\n\t\n\t;(function (global, factory) {\n\t true ? factory(__webpack_require__(1)) :\n\t typeof define === 'function' && define.amd ? define(['../moment'], factory) :\n\t factory(global.moment)\n\t}(this, (function (moment) { 'use strict';\n\t\n\t //! moment.js locale configuration\n\t\n\t var months = [\n\t 'Am Faoilleach',\n\t 'An Gearran',\n\t 'Am Màrt',\n\t 'An Giblean',\n\t 'An Cèitean',\n\t 'An t-Ògmhios',\n\t 'An t-Iuchar',\n\t 'An Lùnastal',\n\t 'An t-Sultain',\n\t 'An Dàmhair',\n\t 'An t-Samhain',\n\t 'An Dùbhlachd',\n\t ],\n\t monthsShort = [\n\t 'Faoi',\n\t 'Gear',\n\t 'Màrt',\n\t 'Gibl',\n\t 'Cèit',\n\t 'Ògmh',\n\t 'Iuch',\n\t 'Lùn',\n\t 'Sult',\n\t 'Dàmh',\n\t 'Samh',\n\t 'Dùbh',\n\t ],\n\t weekdays = [\n\t 'Didòmhnaich',\n\t 'Diluain',\n\t 'Dimàirt',\n\t 'Diciadain',\n\t 'Diardaoin',\n\t 'Dihaoine',\n\t 'Disathairne',\n\t ],\n\t weekdaysShort = ['Did', 'Dil', 'Dim', 'Dic', 'Dia', 'Dih', 'Dis'],\n\t weekdaysMin = ['Dò', 'Lu', 'Mà', 'Ci', 'Ar', 'Ha', 'Sa'];\n\t\n\t var gd = moment.defineLocale('gd', {\n\t months: months,\n\t monthsShort: monthsShort,\n\t monthsParseExact: true,\n\t weekdays: weekdays,\n\t weekdaysShort: weekdaysShort,\n\t weekdaysMin: weekdaysMin,\n\t longDateFormat: {\n\t LT: 'HH:mm',\n\t LTS: 'HH:mm:ss',\n\t L: 'DD/MM/YYYY',\n\t LL: 'D MMMM YYYY',\n\t LLL: 'D MMMM YYYY HH:mm',\n\t LLLL: 'dddd, D MMMM YYYY HH:mm',\n\t },\n\t calendar: {\n\t sameDay: '[An-diugh aig] LT',\n\t nextDay: '[A-màireach aig] LT',\n\t nextWeek: 'dddd [aig] LT',\n\t lastDay: '[An-dè aig] LT',\n\t lastWeek: 'dddd [seo chaidh] [aig] LT',\n\t sameElse: 'L',\n\t },\n\t relativeTime: {\n\t future: 'ann an %s',\n\t past: 'bho chionn %s',\n\t s: 'beagan diogan',\n\t ss: '%d diogan',\n\t m: 'mionaid',\n\t mm: '%d mionaidean',\n\t h: 'uair',\n\t hh: '%d uairean',\n\t d: 'latha',\n\t dd: '%d latha',\n\t M: 'mìos',\n\t MM: '%d mìosan',\n\t y: 'bliadhna',\n\t yy: '%d bliadhna',\n\t },\n\t dayOfMonthOrdinalParse: /\\d{1,2}(d|na|mh)/,\n\t ordinal: function (number) {\n\t var output = number === 1 ? 'd' : number % 10 === 2 ? 'na' : 'mh';\n\t return number + output;\n\t },\n\t week: {\n\t dow: 1, // Monday is the first day of the week.\n\t doy: 4, // The week that contains Jan 4th is the first week of the year.\n\t },\n\t });\n\t\n\t return gd;\n\t\n\t})));\n\n\n/***/ }),\n\n/***/ 358:\n/***/ (function(module, exports, __webpack_require__) {\n\n\t//! moment.js locale configuration\n\t//! locale : Galician [gl]\n\t//! author : Juan G. Hurtado : https://github.com/juanghurtado\n\t\n\t;(function (global, factory) {\n\t true ? factory(__webpack_require__(1)) :\n\t typeof define === 'function' && define.amd ? define(['../moment'], factory) :\n\t factory(global.moment)\n\t}(this, (function (moment) { 'use strict';\n\t\n\t //! moment.js locale configuration\n\t\n\t var gl = moment.defineLocale('gl', {\n\t months: 'xaneiro_febreiro_marzo_abril_maio_xuño_xullo_agosto_setembro_outubro_novembro_decembro'.split(\n\t '_'\n\t ),\n\t monthsShort: 'xan._feb._mar._abr._mai._xuñ._xul._ago._set._out._nov._dec.'.split(\n\t '_'\n\t ),\n\t monthsParseExact: true,\n\t weekdays: 'domingo_luns_martes_mércores_xoves_venres_sábado'.split('_'),\n\t weekdaysShort: 'dom._lun._mar._mér._xov._ven._sáb.'.split('_'),\n\t weekdaysMin: 'do_lu_ma_mé_xo_ve_sá'.split('_'),\n\t weekdaysParseExact: true,\n\t longDateFormat: {\n\t LT: 'H:mm',\n\t LTS: 'H:mm:ss',\n\t L: 'DD/MM/YYYY',\n\t LL: 'D [de] MMMM [de] YYYY',\n\t LLL: 'D [de] MMMM [de] YYYY H:mm',\n\t LLLL: 'dddd, D [de] MMMM [de] YYYY H:mm',\n\t },\n\t calendar: {\n\t sameDay: function () {\n\t return '[hoxe ' + (this.hours() !== 1 ? 'ás' : 'á') + '] LT';\n\t },\n\t nextDay: function () {\n\t return '[mañá ' + (this.hours() !== 1 ? 'ás' : 'á') + '] LT';\n\t },\n\t nextWeek: function () {\n\t return 'dddd [' + (this.hours() !== 1 ? 'ás' : 'a') + '] LT';\n\t },\n\t lastDay: function () {\n\t return '[onte ' + (this.hours() !== 1 ? 'á' : 'a') + '] LT';\n\t },\n\t lastWeek: function () {\n\t return (\n\t '[o] dddd [pasado ' + (this.hours() !== 1 ? 'ás' : 'a') + '] LT'\n\t );\n\t },\n\t sameElse: 'L',\n\t },\n\t relativeTime: {\n\t future: function (str) {\n\t if (str.indexOf('un') === 0) {\n\t return 'n' + str;\n\t }\n\t return 'en ' + str;\n\t },\n\t past: 'hai %s',\n\t s: 'uns segundos',\n\t ss: '%d segundos',\n\t m: 'un minuto',\n\t mm: '%d minutos',\n\t h: 'unha hora',\n\t hh: '%d horas',\n\t d: 'un día',\n\t dd: '%d días',\n\t M: 'un mes',\n\t MM: '%d meses',\n\t y: 'un ano',\n\t yy: '%d anos',\n\t },\n\t dayOfMonthOrdinalParse: /\\d{1,2}º/,\n\t ordinal: '%dº',\n\t week: {\n\t dow: 1, // Monday is the first day of the week.\n\t doy: 4, // The week that contains Jan 4th is the first week of the year.\n\t },\n\t });\n\t\n\t return gl;\n\t\n\t})));\n\n\n/***/ }),\n\n/***/ 359:\n/***/ (function(module, exports, __webpack_require__) {\n\n\t//! moment.js locale configuration\n\t//! locale : Konkani Devanagari script [gom-deva]\n\t//! author : The Discoverer : https://github.com/WikiDiscoverer\n\t\n\t;(function (global, factory) {\n\t true ? factory(__webpack_require__(1)) :\n\t typeof define === 'function' && define.amd ? define(['../moment'], factory) :\n\t factory(global.moment)\n\t}(this, (function (moment) { 'use strict';\n\t\n\t //! moment.js locale configuration\n\t\n\t function processRelativeTime(number, withoutSuffix, key, isFuture) {\n\t var format = {\n\t s: ['थोडया सॅकंडांनी', 'थोडे सॅकंड'],\n\t ss: [number + ' सॅकंडांनी', number + ' सॅकंड'],\n\t m: ['एका मिणटान', 'एक मिनूट'],\n\t mm: [number + ' मिणटांनी', number + ' मिणटां'],\n\t h: ['एका वरान', 'एक वर'],\n\t hh: [number + ' वरांनी', number + ' वरां'],\n\t d: ['एका दिसान', 'एक दीस'],\n\t dd: [number + ' दिसांनी', number + ' दीस'],\n\t M: ['एका म्हयन्यान', 'एक म्हयनो'],\n\t MM: [number + ' म्हयन्यानी', number + ' म्हयने'],\n\t y: ['एका वर्सान', 'एक वर्स'],\n\t yy: [number + ' वर्सांनी', number + ' वर्सां'],\n\t };\n\t return isFuture ? format[key][0] : format[key][1];\n\t }\n\t\n\t var gomDeva = moment.defineLocale('gom-deva', {\n\t months: {\n\t standalone: 'जानेवारी_फेब्रुवारी_मार्च_एप्रील_मे_जून_जुलय_ऑगस्ट_सप्टेंबर_ऑक्टोबर_नोव्हेंबर_डिसेंबर'.split(\n\t '_'\n\t ),\n\t format: 'जानेवारीच्या_फेब्रुवारीच्या_मार्चाच्या_एप्रीलाच्या_मेयाच्या_जूनाच्या_जुलयाच्या_ऑगस्टाच्या_सप्टेंबराच्या_ऑक्टोबराच्या_नोव्हेंबराच्या_डिसेंबराच्या'.split(\n\t '_'\n\t ),\n\t isFormat: /MMMM(\\s)+D[oD]?/,\n\t },\n\t monthsShort: 'जाने._फेब्रु._मार्च_एप्री._मे_जून_जुल._ऑग._सप्टें._ऑक्टो._नोव्हें._डिसें.'.split(\n\t '_'\n\t ),\n\t monthsParseExact: true,\n\t weekdays: 'आयतार_सोमार_मंगळार_बुधवार_बिरेस्तार_सुक्रार_शेनवार'.split('_'),\n\t weekdaysShort: 'आयत._सोम._मंगळ._बुध._ब्रेस्त._सुक्र._शेन.'.split('_'),\n\t weekdaysMin: 'आ_सो_मं_बु_ब्रे_सु_शे'.split('_'),\n\t weekdaysParseExact: true,\n\t longDateFormat: {\n\t LT: 'A h:mm [वाजतां]',\n\t LTS: 'A h:mm:ss [वाजतां]',\n\t L: 'DD-MM-YYYY',\n\t LL: 'D MMMM YYYY',\n\t LLL: 'D MMMM YYYY A h:mm [वाजतां]',\n\t LLLL: 'dddd, MMMM Do, YYYY, A h:mm [वाजतां]',\n\t llll: 'ddd, D MMM YYYY, A h:mm [वाजतां]',\n\t },\n\t calendar: {\n\t sameDay: '[आयज] LT',\n\t nextDay: '[फाल्यां] LT',\n\t nextWeek: '[फुडलो] dddd[,] LT',\n\t lastDay: '[काल] LT',\n\t lastWeek: '[फाटलो] dddd[,] LT',\n\t sameElse: 'L',\n\t },\n\t relativeTime: {\n\t future: '%s',\n\t past: '%s आदीं',\n\t s: processRelativeTime,\n\t ss: processRelativeTime,\n\t m: processRelativeTime,\n\t mm: processRelativeTime,\n\t h: processRelativeTime,\n\t hh: processRelativeTime,\n\t d: processRelativeTime,\n\t dd: processRelativeTime,\n\t M: processRelativeTime,\n\t MM: processRelativeTime,\n\t y: processRelativeTime,\n\t yy: processRelativeTime,\n\t },\n\t dayOfMonthOrdinalParse: /\\d{1,2}(वेर)/,\n\t ordinal: function (number, period) {\n\t switch (period) {\n\t // the ordinal 'वेर' only applies to day of the month\n\t case 'D':\n\t return number + 'वेर';\n\t default:\n\t case 'M':\n\t case 'Q':\n\t case 'DDD':\n\t case 'd':\n\t case 'w':\n\t case 'W':\n\t return number;\n\t }\n\t },\n\t week: {\n\t dow: 0, // Sunday is the first day of the week\n\t doy: 3, // The week that contains Jan 4th is the first week of the year (7 + 0 - 4)\n\t },\n\t meridiemParse: /राती|सकाळीं|दनपारां|सांजे/,\n\t meridiemHour: function (hour, meridiem) {\n\t if (hour === 12) {\n\t hour = 0;\n\t }\n\t if (meridiem === 'राती') {\n\t return hour < 4 ? hour : hour + 12;\n\t } else if (meridiem === 'सकाळीं') {\n\t return hour;\n\t } else if (meridiem === 'दनपारां') {\n\t return hour > 12 ? hour : hour + 12;\n\t } else if (meridiem === 'सांजे') {\n\t return hour + 12;\n\t }\n\t },\n\t meridiem: function (hour, minute, isLower) {\n\t if (hour < 4) {\n\t return 'राती';\n\t } else if (hour < 12) {\n\t return 'सकाळीं';\n\t } else if (hour < 16) {\n\t return 'दनपारां';\n\t } else if (hour < 20) {\n\t return 'सांजे';\n\t } else {\n\t return 'राती';\n\t }\n\t },\n\t });\n\t\n\t return gomDeva;\n\t\n\t})));\n\n\n/***/ }),\n\n/***/ 360:\n/***/ (function(module, exports, __webpack_require__) {\n\n\t//! moment.js locale configuration\n\t//! locale : Konkani Latin script [gom-latn]\n\t//! author : The Discoverer : https://github.com/WikiDiscoverer\n\t\n\t;(function (global, factory) {\n\t true ? factory(__webpack_require__(1)) :\n\t typeof define === 'function' && define.amd ? define(['../moment'], factory) :\n\t factory(global.moment)\n\t}(this, (function (moment) { 'use strict';\n\t\n\t //! moment.js locale configuration\n\t\n\t function processRelativeTime(number, withoutSuffix, key, isFuture) {\n\t var format = {\n\t s: ['thoddea sekondamni', 'thodde sekond'],\n\t ss: [number + ' sekondamni', number + ' sekond'],\n\t m: ['eka mintan', 'ek minut'],\n\t mm: [number + ' mintamni', number + ' mintam'],\n\t h: ['eka voran', 'ek vor'],\n\t hh: [number + ' voramni', number + ' voram'],\n\t d: ['eka disan', 'ek dis'],\n\t dd: [number + ' disamni', number + ' dis'],\n\t M: ['eka mhoinean', 'ek mhoino'],\n\t MM: [number + ' mhoineamni', number + ' mhoine'],\n\t y: ['eka vorsan', 'ek voros'],\n\t yy: [number + ' vorsamni', number + ' vorsam'],\n\t };\n\t return isFuture ? format[key][0] : format[key][1];\n\t }\n\t\n\t var gomLatn = moment.defineLocale('gom-latn', {\n\t months: {\n\t standalone: 'Janer_Febrer_Mars_Abril_Mai_Jun_Julai_Agost_Setembr_Otubr_Novembr_Dezembr'.split(\n\t '_'\n\t ),\n\t format: 'Janerachea_Febrerachea_Marsachea_Abrilachea_Maiachea_Junachea_Julaiachea_Agostachea_Setembrachea_Otubrachea_Novembrachea_Dezembrachea'.split(\n\t '_'\n\t ),\n\t isFormat: /MMMM(\\s)+D[oD]?/,\n\t },\n\t monthsShort: 'Jan._Feb._Mars_Abr._Mai_Jun_Jul._Ago._Set._Otu._Nov._Dez.'.split(\n\t '_'\n\t ),\n\t monthsParseExact: true,\n\t weekdays: \"Aitar_Somar_Mongllar_Budhvar_Birestar_Sukrar_Son'var\".split('_'),\n\t weekdaysShort: 'Ait._Som._Mon._Bud._Bre._Suk._Son.'.split('_'),\n\t weekdaysMin: 'Ai_Sm_Mo_Bu_Br_Su_Sn'.split('_'),\n\t weekdaysParseExact: true,\n\t longDateFormat: {\n\t LT: 'A h:mm [vazta]',\n\t LTS: 'A h:mm:ss [vazta]',\n\t L: 'DD-MM-YYYY',\n\t LL: 'D MMMM YYYY',\n\t LLL: 'D MMMM YYYY A h:mm [vazta]',\n\t LLLL: 'dddd, MMMM Do, YYYY, A h:mm [vazta]',\n\t llll: 'ddd, D MMM YYYY, A h:mm [vazta]',\n\t },\n\t calendar: {\n\t sameDay: '[Aiz] LT',\n\t nextDay: '[Faleam] LT',\n\t nextWeek: '[Fuddlo] dddd[,] LT',\n\t lastDay: '[Kal] LT',\n\t lastWeek: '[Fattlo] dddd[,] LT',\n\t sameElse: 'L',\n\t },\n\t relativeTime: {\n\t future: '%s',\n\t past: '%s adim',\n\t s: processRelativeTime,\n\t ss: processRelativeTime,\n\t m: processRelativeTime,\n\t mm: processRelativeTime,\n\t h: processRelativeTime,\n\t hh: processRelativeTime,\n\t d: processRelativeTime,\n\t dd: processRelativeTime,\n\t M: processRelativeTime,\n\t MM: processRelativeTime,\n\t y: processRelativeTime,\n\t yy: processRelativeTime,\n\t },\n\t dayOfMonthOrdinalParse: /\\d{1,2}(er)/,\n\t ordinal: function (number, period) {\n\t switch (period) {\n\t // the ordinal 'er' only applies to day of the month\n\t case 'D':\n\t return number + 'er';\n\t default:\n\t case 'M':\n\t case 'Q':\n\t case 'DDD':\n\t case 'd':\n\t case 'w':\n\t case 'W':\n\t return number;\n\t }\n\t },\n\t week: {\n\t dow: 0, // Sunday is the first day of the week\n\t doy: 3, // The week that contains Jan 4th is the first week of the year (7 + 0 - 4)\n\t },\n\t meridiemParse: /rati|sokallim|donparam|sanje/,\n\t meridiemHour: function (hour, meridiem) {\n\t if (hour === 12) {\n\t hour = 0;\n\t }\n\t if (meridiem === 'rati') {\n\t return hour < 4 ? hour : hour + 12;\n\t } else if (meridiem === 'sokallim') {\n\t return hour;\n\t } else if (meridiem === 'donparam') {\n\t return hour > 12 ? hour : hour + 12;\n\t } else if (meridiem === 'sanje') {\n\t return hour + 12;\n\t }\n\t },\n\t meridiem: function (hour, minute, isLower) {\n\t if (hour < 4) {\n\t return 'rati';\n\t } else if (hour < 12) {\n\t return 'sokallim';\n\t } else if (hour < 16) {\n\t return 'donparam';\n\t } else if (hour < 20) {\n\t return 'sanje';\n\t } else {\n\t return 'rati';\n\t }\n\t },\n\t });\n\t\n\t return gomLatn;\n\t\n\t})));\n\n\n/***/ }),\n\n/***/ 361:\n/***/ (function(module, exports, __webpack_require__) {\n\n\t//! moment.js locale configuration\n\t//! locale : Gujarati [gu]\n\t//! author : Kaushik Thanki : https://github.com/Kaushik1987\n\t\n\t;(function (global, factory) {\n\t true ? factory(__webpack_require__(1)) :\n\t typeof define === 'function' && define.amd ? define(['../moment'], factory) :\n\t factory(global.moment)\n\t}(this, (function (moment) { 'use strict';\n\t\n\t //! moment.js locale configuration\n\t\n\t var symbolMap = {\n\t 1: '૧',\n\t 2: '૨',\n\t 3: '૩',\n\t 4: '૪',\n\t 5: '૫',\n\t 6: '૬',\n\t 7: '૭',\n\t 8: '૮',\n\t 9: '૯',\n\t 0: '૦',\n\t },\n\t numberMap = {\n\t '૧': '1',\n\t '૨': '2',\n\t '૩': '3',\n\t '૪': '4',\n\t '૫': '5',\n\t '૬': '6',\n\t '૭': '7',\n\t '૮': '8',\n\t '૯': '9',\n\t '૦': '0',\n\t };\n\t\n\t var gu = moment.defineLocale('gu', {\n\t months: 'જાન્યુઆરી_ફેબ્રુઆરી_માર્ચ_એપ્રિલ_મે_જૂન_જુલાઈ_ઑગસ્ટ_સપ્ટેમ્બર_ઑક્ટ્બર_નવેમ્બર_ડિસેમ્બર'.split(\n\t '_'\n\t ),\n\t monthsShort: 'જાન્યુ._ફેબ્રુ._માર્ચ_એપ્રિ._મે_જૂન_જુલા._ઑગ._સપ્ટે._ઑક્ટ્._નવે._ડિસે.'.split(\n\t '_'\n\t ),\n\t monthsParseExact: true,\n\t weekdays: 'રવિવાર_સોમવાર_મંગળવાર_બુધ્વાર_ગુરુવાર_શુક્રવાર_શનિવાર'.split(\n\t '_'\n\t ),\n\t weekdaysShort: 'રવિ_સોમ_મંગળ_બુધ્_ગુરુ_શુક્ર_શનિ'.split('_'),\n\t weekdaysMin: 'ર_સો_મં_બુ_ગુ_શુ_શ'.split('_'),\n\t longDateFormat: {\n\t LT: 'A h:mm વાગ્યે',\n\t LTS: 'A h:mm:ss વાગ્યે',\n\t L: 'DD/MM/YYYY',\n\t LL: 'D MMMM YYYY',\n\t LLL: 'D MMMM YYYY, A h:mm વાગ્યે',\n\t LLLL: 'dddd, D MMMM YYYY, A h:mm વાગ્યે',\n\t },\n\t calendar: {\n\t sameDay: '[આજ] LT',\n\t nextDay: '[કાલે] LT',\n\t nextWeek: 'dddd, LT',\n\t lastDay: '[ગઇકાલે] LT',\n\t lastWeek: '[પાછલા] dddd, LT',\n\t sameElse: 'L',\n\t },\n\t relativeTime: {\n\t future: '%s મા',\n\t past: '%s પહેલા',\n\t s: 'અમુક પળો',\n\t ss: '%d સેકંડ',\n\t m: 'એક મિનિટ',\n\t mm: '%d મિનિટ',\n\t h: 'એક કલાક',\n\t hh: '%d કલાક',\n\t d: 'એક દિવસ',\n\t dd: '%d દિવસ',\n\t M: 'એક મહિનો',\n\t MM: '%d મહિનો',\n\t y: 'એક વર્ષ',\n\t yy: '%d વર્ષ',\n\t },\n\t preparse: function (string) {\n\t return string.replace(/[૧૨૩૪૫૬૭૮૯૦]/g, function (match) {\n\t return numberMap[match];\n\t });\n\t },\n\t postformat: function (string) {\n\t return string.replace(/\\d/g, function (match) {\n\t return symbolMap[match];\n\t });\n\t },\n\t // Gujarati notation for meridiems are quite fuzzy in practice. While there exists\n\t // a rigid notion of a 'Pahar' it is not used as rigidly in modern Gujarati.\n\t meridiemParse: /રાત|બપોર|સવાર|સાંજ/,\n\t meridiemHour: function (hour, meridiem) {\n\t if (hour === 12) {\n\t hour = 0;\n\t }\n\t if (meridiem === 'રાત') {\n\t return hour < 4 ? hour : hour + 12;\n\t } else if (meridiem === 'સવાર') {\n\t return hour;\n\t } else if (meridiem === 'બપોર') {\n\t return hour >= 10 ? hour : hour + 12;\n\t } else if (meridiem === 'સાંજ') {\n\t return hour + 12;\n\t }\n\t },\n\t meridiem: function (hour, minute, isLower) {\n\t if (hour < 4) {\n\t return 'રાત';\n\t } else if (hour < 10) {\n\t return 'સવાર';\n\t } else if (hour < 17) {\n\t return 'બપોર';\n\t } else if (hour < 20) {\n\t return 'સાંજ';\n\t } else {\n\t return 'રાત';\n\t }\n\t },\n\t week: {\n\t dow: 0, // Sunday is the first day of the week.\n\t doy: 6, // The week that contains Jan 6th is the first week of the year.\n\t },\n\t });\n\t\n\t return gu;\n\t\n\t})));\n\n\n/***/ }),\n\n/***/ 362:\n/***/ (function(module, exports, __webpack_require__) {\n\n\t//! moment.js locale configuration\n\t//! locale : Hebrew [he]\n\t//! author : Tomer Cohen : https://github.com/tomer\n\t//! author : Moshe Simantov : https://github.com/DevelopmentIL\n\t//! author : Tal Ater : https://github.com/TalAter\n\t\n\t;(function (global, factory) {\n\t true ? factory(__webpack_require__(1)) :\n\t typeof define === 'function' && define.amd ? define(['../moment'], factory) :\n\t factory(global.moment)\n\t}(this, (function (moment) { 'use strict';\n\t\n\t //! moment.js locale configuration\n\t\n\t var he = moment.defineLocale('he', {\n\t months: 'ינואר_פברואר_מרץ_אפריל_מאי_יוני_יולי_אוגוסט_ספטמבר_אוקטובר_נובמבר_דצמבר'.split(\n\t '_'\n\t ),\n\t monthsShort: 'ינו׳_פבר׳_מרץ_אפר׳_מאי_יוני_יולי_אוג׳_ספט׳_אוק׳_נוב׳_דצמ׳'.split(\n\t '_'\n\t ),\n\t weekdays: 'ראשון_שני_שלישי_רביעי_חמישי_שישי_שבת'.split('_'),\n\t weekdaysShort: 'א׳_ב׳_ג׳_ד׳_ה׳_ו׳_ש׳'.split('_'),\n\t weekdaysMin: 'א_ב_ג_ד_ה_ו_ש'.split('_'),\n\t longDateFormat: {\n\t LT: 'HH:mm',\n\t LTS: 'HH:mm:ss',\n\t L: 'DD/MM/YYYY',\n\t LL: 'D [ב]MMMM YYYY',\n\t LLL: 'D [ב]MMMM YYYY HH:mm',\n\t LLLL: 'dddd, D [ב]MMMM YYYY HH:mm',\n\t l: 'D/M/YYYY',\n\t ll: 'D MMM YYYY',\n\t lll: 'D MMM YYYY HH:mm',\n\t llll: 'ddd, D MMM YYYY HH:mm',\n\t },\n\t calendar: {\n\t sameDay: '[היום ב־]LT',\n\t nextDay: '[מחר ב־]LT',\n\t nextWeek: 'dddd [בשעה] LT',\n\t lastDay: '[אתמול ב־]LT',\n\t lastWeek: '[ביום] dddd [האחרון בשעה] LT',\n\t sameElse: 'L',\n\t },\n\t relativeTime: {\n\t future: 'בעוד %s',\n\t past: 'לפני %s',\n\t s: 'מספר שניות',\n\t ss: '%d שניות',\n\t m: 'דקה',\n\t mm: '%d דקות',\n\t h: 'שעה',\n\t hh: function (number) {\n\t if (number === 2) {\n\t return 'שעתיים';\n\t }\n\t return number + ' שעות';\n\t },\n\t d: 'יום',\n\t dd: function (number) {\n\t if (number === 2) {\n\t return 'יומיים';\n\t }\n\t return number + ' ימים';\n\t },\n\t M: 'חודש',\n\t MM: function (number) {\n\t if (number === 2) {\n\t return 'חודשיים';\n\t }\n\t return number + ' חודשים';\n\t },\n\t y: 'שנה',\n\t yy: function (number) {\n\t if (number === 2) {\n\t return 'שנתיים';\n\t } else if (number % 10 === 0 && number !== 10) {\n\t return number + ' שנה';\n\t }\n\t return number + ' שנים';\n\t },\n\t },\n\t meridiemParse: /אחה\"צ|לפנה\"צ|אחרי הצהריים|לפני הצהריים|לפנות בוקר|בבוקר|בערב/i,\n\t isPM: function (input) {\n\t return /^(אחה\"צ|אחרי הצהריים|בערב)$/.test(input);\n\t },\n\t meridiem: function (hour, minute, isLower) {\n\t if (hour < 5) {\n\t return 'לפנות בוקר';\n\t } else if (hour < 10) {\n\t return 'בבוקר';\n\t } else if (hour < 12) {\n\t return isLower ? 'לפנה\"צ' : 'לפני הצהריים';\n\t } else if (hour < 18) {\n\t return isLower ? 'אחה\"צ' : 'אחרי הצהריים';\n\t } else {\n\t return 'בערב';\n\t }\n\t },\n\t });\n\t\n\t return he;\n\t\n\t})));\n\n\n/***/ }),\n\n/***/ 363:\n/***/ (function(module, exports, __webpack_require__) {\n\n\t//! moment.js locale configuration\n\t//! locale : Hindi [hi]\n\t//! author : Mayank Singhal : https://github.com/mayanksinghal\n\t\n\t;(function (global, factory) {\n\t true ? factory(__webpack_require__(1)) :\n\t typeof define === 'function' && define.amd ? define(['../moment'], factory) :\n\t factory(global.moment)\n\t}(this, (function (moment) { 'use strict';\n\t\n\t //! moment.js locale configuration\n\t\n\t var symbolMap = {\n\t 1: '१',\n\t 2: '२',\n\t 3: '३',\n\t 4: '४',\n\t 5: '५',\n\t 6: '६',\n\t 7: '७',\n\t 8: '८',\n\t 9: '९',\n\t 0: '०',\n\t },\n\t numberMap = {\n\t '१': '1',\n\t '२': '2',\n\t '३': '3',\n\t '४': '4',\n\t '५': '5',\n\t '६': '6',\n\t '७': '7',\n\t '८': '8',\n\t '९': '9',\n\t '०': '0',\n\t },\n\t monthsParse = [\n\t /^जन/i,\n\t /^फ़र|फर/i,\n\t /^मार्च/i,\n\t /^अप्रै/i,\n\t /^मई/i,\n\t /^जून/i,\n\t /^जुल/i,\n\t /^अग/i,\n\t /^सितं|सित/i,\n\t /^अक्टू/i,\n\t /^नव|नवं/i,\n\t /^दिसं|दिस/i,\n\t ],\n\t shortMonthsParse = [\n\t /^जन/i,\n\t /^फ़र/i,\n\t /^मार्च/i,\n\t /^अप्रै/i,\n\t /^मई/i,\n\t /^जून/i,\n\t /^जुल/i,\n\t /^अग/i,\n\t /^सित/i,\n\t /^अक्टू/i,\n\t /^नव/i,\n\t /^दिस/i,\n\t ];\n\t\n\t var hi = moment.defineLocale('hi', {\n\t months: {\n\t format: 'जनवरी_फ़रवरी_मार्च_अप्रैल_मई_जून_जुलाई_अगस्त_सितम्बर_अक्टूबर_नवम्बर_दिसम्बर'.split(\n\t '_'\n\t ),\n\t standalone: 'जनवरी_फरवरी_मार्च_अप्रैल_मई_जून_जुलाई_अगस्त_सितंबर_अक्टूबर_नवंबर_दिसंबर'.split(\n\t '_'\n\t ),\n\t },\n\t monthsShort: 'जन._फ़र._मार्च_अप्रै._मई_जून_जुल._अग._सित._अक्टू._नव._दिस.'.split(\n\t '_'\n\t ),\n\t weekdays: 'रविवार_सोमवार_मंगलवार_बुधवार_गुरूवार_शुक्रवार_शनिवार'.split('_'),\n\t weekdaysShort: 'रवि_सोम_मंगल_बुध_गुरू_शुक्र_शनि'.split('_'),\n\t weekdaysMin: 'र_सो_मं_बु_गु_शु_श'.split('_'),\n\t longDateFormat: {\n\t LT: 'A h:mm बजे',\n\t LTS: 'A h:mm:ss बजे',\n\t L: 'DD/MM/YYYY',\n\t LL: 'D MMMM YYYY',\n\t LLL: 'D MMMM YYYY, A h:mm बजे',\n\t LLLL: 'dddd, D MMMM YYYY, A h:mm बजे',\n\t },\n\t\n\t monthsParse: monthsParse,\n\t longMonthsParse: monthsParse,\n\t shortMonthsParse: shortMonthsParse,\n\t\n\t monthsRegex: /^(जनवरी|जन\\.?|फ़रवरी|फरवरी|फ़र\\.?|मार्च?|अप्रैल|अप्रै\\.?|मई?|जून?|जुलाई|जुल\\.?|अगस्त|अग\\.?|सितम्बर|सितंबर|सित\\.?|अक्टूबर|अक्टू\\.?|नवम्बर|नवंबर|नव\\.?|दिसम्बर|दिसंबर|दिस\\.?)/i,\n\t\n\t monthsShortRegex: /^(जनवरी|जन\\.?|फ़रवरी|फरवरी|फ़र\\.?|मार्च?|अप्रैल|अप्रै\\.?|मई?|जून?|जुलाई|जुल\\.?|अगस्त|अग\\.?|सितम्बर|सितंबर|सित\\.?|अक्टूबर|अक्टू\\.?|नवम्बर|नवंबर|नव\\.?|दिसम्बर|दिसंबर|दिस\\.?)/i,\n\t\n\t monthsStrictRegex: /^(जनवरी?|फ़रवरी|फरवरी?|मार्च?|अप्रैल?|मई?|जून?|जुलाई?|अगस्त?|सितम्बर|सितंबर|सित?\\.?|अक्टूबर|अक्टू\\.?|नवम्बर|नवंबर?|दिसम्बर|दिसंबर?)/i,\n\t\n\t monthsShortStrictRegex: /^(जन\\.?|फ़र\\.?|मार्च?|अप्रै\\.?|मई?|जून?|जुल\\.?|अग\\.?|सित\\.?|अक्टू\\.?|नव\\.?|दिस\\.?)/i,\n\t\n\t calendar: {\n\t sameDay: '[आज] LT',\n\t nextDay: '[कल] LT',\n\t nextWeek: 'dddd, LT',\n\t lastDay: '[कल] LT',\n\t lastWeek: '[पिछले] dddd, LT',\n\t sameElse: 'L',\n\t },\n\t relativeTime: {\n\t future: '%s में',\n\t past: '%s पहले',\n\t s: 'कुछ ही क्षण',\n\t ss: '%d सेकंड',\n\t m: 'एक मिनट',\n\t mm: '%d मिनट',\n\t h: 'एक घंटा',\n\t hh: '%d घंटे',\n\t d: 'एक दिन',\n\t dd: '%d दिन',\n\t M: 'एक महीने',\n\t MM: '%d महीने',\n\t y: 'एक वर्ष',\n\t yy: '%d वर्ष',\n\t },\n\t preparse: function (string) {\n\t return string.replace(/[१२३४५६७८९०]/g, function (match) {\n\t return numberMap[match];\n\t });\n\t },\n\t postformat: function (string) {\n\t return string.replace(/\\d/g, function (match) {\n\t return symbolMap[match];\n\t });\n\t },\n\t // Hindi notation for meridiems are quite fuzzy in practice. While there exists\n\t // a rigid notion of a 'Pahar' it is not used as rigidly in modern Hindi.\n\t meridiemParse: /रात|सुबह|दोपहर|शाम/,\n\t meridiemHour: function (hour, meridiem) {\n\t if (hour === 12) {\n\t hour = 0;\n\t }\n\t if (meridiem === 'रात') {\n\t return hour < 4 ? hour : hour + 12;\n\t } else if (meridiem === 'सुबह') {\n\t return hour;\n\t } else if (meridiem === 'दोपहर') {\n\t return hour >= 10 ? hour : hour + 12;\n\t } else if (meridiem === 'शाम') {\n\t return hour + 12;\n\t }\n\t },\n\t meridiem: function (hour, minute, isLower) {\n\t if (hour < 4) {\n\t return 'रात';\n\t } else if (hour < 10) {\n\t return 'सुबह';\n\t } else if (hour < 17) {\n\t return 'दोपहर';\n\t } else if (hour < 20) {\n\t return 'शाम';\n\t } else {\n\t return 'रात';\n\t }\n\t },\n\t week: {\n\t dow: 0, // Sunday is the first day of the week.\n\t doy: 6, // The week that contains Jan 6th is the first week of the year.\n\t },\n\t });\n\t\n\t return hi;\n\t\n\t})));\n\n\n/***/ }),\n\n/***/ 364:\n/***/ (function(module, exports, __webpack_require__) {\n\n\t//! moment.js locale configuration\n\t//! locale : Croatian [hr]\n\t//! author : Bojan Marković : https://github.com/bmarkovic\n\t\n\t;(function (global, factory) {\n\t true ? factory(__webpack_require__(1)) :\n\t typeof define === 'function' && define.amd ? define(['../moment'], factory) :\n\t factory(global.moment)\n\t}(this, (function (moment) { 'use strict';\n\t\n\t //! moment.js locale configuration\n\t\n\t function translate(number, withoutSuffix, key) {\n\t var result = number + ' ';\n\t switch (key) {\n\t case 'ss':\n\t if (number === 1) {\n\t result += 'sekunda';\n\t } else if (number === 2 || number === 3 || number === 4) {\n\t result += 'sekunde';\n\t } else {\n\t result += 'sekundi';\n\t }\n\t return result;\n\t case 'm':\n\t return withoutSuffix ? 'jedna minuta' : 'jedne minute';\n\t case 'mm':\n\t if (number === 1) {\n\t result += 'minuta';\n\t } else if (number === 2 || number === 3 || number === 4) {\n\t result += 'minute';\n\t } else {\n\t result += 'minuta';\n\t }\n\t return result;\n\t case 'h':\n\t return withoutSuffix ? 'jedan sat' : 'jednog sata';\n\t case 'hh':\n\t if (number === 1) {\n\t result += 'sat';\n\t } else if (number === 2 || number === 3 || number === 4) {\n\t result += 'sata';\n\t } else {\n\t result += 'sati';\n\t }\n\t return result;\n\t case 'dd':\n\t if (number === 1) {\n\t result += 'dan';\n\t } else {\n\t result += 'dana';\n\t }\n\t return result;\n\t case 'MM':\n\t if (number === 1) {\n\t result += 'mjesec';\n\t } else if (number === 2 || number === 3 || number === 4) {\n\t result += 'mjeseca';\n\t } else {\n\t result += 'mjeseci';\n\t }\n\t return result;\n\t case 'yy':\n\t if (number === 1) {\n\t result += 'godina';\n\t } else if (number === 2 || number === 3 || number === 4) {\n\t result += 'godine';\n\t } else {\n\t result += 'godina';\n\t }\n\t return result;\n\t }\n\t }\n\t\n\t var hr = moment.defineLocale('hr', {\n\t months: {\n\t format: 'siječnja_veljače_ožujka_travnja_svibnja_lipnja_srpnja_kolovoza_rujna_listopada_studenoga_prosinca'.split(\n\t '_'\n\t ),\n\t standalone: 'siječanj_veljača_ožujak_travanj_svibanj_lipanj_srpanj_kolovoz_rujan_listopad_studeni_prosinac'.split(\n\t '_'\n\t ),\n\t },\n\t monthsShort: 'sij._velj._ožu._tra._svi._lip._srp._kol._ruj._lis._stu._pro.'.split(\n\t '_'\n\t ),\n\t monthsParseExact: true,\n\t weekdays: 'nedjelja_ponedjeljak_utorak_srijeda_četvrtak_petak_subota'.split(\n\t '_'\n\t ),\n\t weekdaysShort: 'ned._pon._uto._sri._čet._pet._sub.'.split('_'),\n\t weekdaysMin: 'ne_po_ut_sr_če_pe_su'.split('_'),\n\t weekdaysParseExact: true,\n\t longDateFormat: {\n\t LT: 'H:mm',\n\t LTS: 'H:mm:ss',\n\t L: 'DD.MM.YYYY',\n\t LL: 'Do MMMM YYYY',\n\t LLL: 'Do MMMM YYYY H:mm',\n\t LLLL: 'dddd, Do MMMM YYYY H:mm',\n\t },\n\t calendar: {\n\t sameDay: '[danas u] LT',\n\t nextDay: '[sutra u] LT',\n\t nextWeek: function () {\n\t switch (this.day()) {\n\t case 0:\n\t return '[u] [nedjelju] [u] LT';\n\t case 3:\n\t return '[u] [srijedu] [u] LT';\n\t case 6:\n\t return '[u] [subotu] [u] LT';\n\t case 1:\n\t case 2:\n\t case 4:\n\t case 5:\n\t return '[u] dddd [u] LT';\n\t }\n\t },\n\t lastDay: '[jučer u] LT',\n\t lastWeek: function () {\n\t switch (this.day()) {\n\t case 0:\n\t return '[prošlu] [nedjelju] [u] LT';\n\t case 3:\n\t return '[prošlu] [srijedu] [u] LT';\n\t case 6:\n\t return '[prošle] [subote] [u] LT';\n\t case 1:\n\t case 2:\n\t case 4:\n\t case 5:\n\t return '[prošli] dddd [u] LT';\n\t }\n\t },\n\t sameElse: 'L',\n\t },\n\t relativeTime: {\n\t future: 'za %s',\n\t past: 'prije %s',\n\t s: 'par sekundi',\n\t ss: translate,\n\t m: translate,\n\t mm: translate,\n\t h: translate,\n\t hh: translate,\n\t d: 'dan',\n\t dd: translate,\n\t M: 'mjesec',\n\t MM: translate,\n\t y: 'godinu',\n\t yy: translate,\n\t },\n\t dayOfMonthOrdinalParse: /\\d{1,2}\\./,\n\t ordinal: '%d.',\n\t week: {\n\t dow: 1, // Monday is the first day of the week.\n\t doy: 7, // The week that contains Jan 7th is the first week of the year.\n\t },\n\t });\n\t\n\t return hr;\n\t\n\t})));\n\n\n/***/ }),\n\n/***/ 365:\n/***/ (function(module, exports, __webpack_require__) {\n\n\t//! moment.js locale configuration\n\t//! locale : Hungarian [hu]\n\t//! author : Adam Brunner : https://github.com/adambrunner\n\t//! author : Peter Viszt : https://github.com/passatgt\n\t\n\t;(function (global, factory) {\n\t true ? factory(__webpack_require__(1)) :\n\t typeof define === 'function' && define.amd ? define(['../moment'], factory) :\n\t factory(global.moment)\n\t}(this, (function (moment) { 'use strict';\n\t\n\t //! moment.js locale configuration\n\t\n\t var weekEndings = 'vasárnap hétfőn kedden szerdán csütörtökön pénteken szombaton'.split(\n\t ' '\n\t );\n\t function translate(number, withoutSuffix, key, isFuture) {\n\t var num = number;\n\t switch (key) {\n\t case 's':\n\t return isFuture || withoutSuffix\n\t ? 'néhány másodperc'\n\t : 'néhány másodperce';\n\t case 'ss':\n\t return num + (isFuture || withoutSuffix)\n\t ? ' másodperc'\n\t : ' másodperce';\n\t case 'm':\n\t return 'egy' + (isFuture || withoutSuffix ? ' perc' : ' perce');\n\t case 'mm':\n\t return num + (isFuture || withoutSuffix ? ' perc' : ' perce');\n\t case 'h':\n\t return 'egy' + (isFuture || withoutSuffix ? ' óra' : ' órája');\n\t case 'hh':\n\t return num + (isFuture || withoutSuffix ? ' óra' : ' órája');\n\t case 'd':\n\t return 'egy' + (isFuture || withoutSuffix ? ' nap' : ' napja');\n\t case 'dd':\n\t return num + (isFuture || withoutSuffix ? ' nap' : ' napja');\n\t case 'M':\n\t return 'egy' + (isFuture || withoutSuffix ? ' hónap' : ' hónapja');\n\t case 'MM':\n\t return num + (isFuture || withoutSuffix ? ' hónap' : ' hónapja');\n\t case 'y':\n\t return 'egy' + (isFuture || withoutSuffix ? ' év' : ' éve');\n\t case 'yy':\n\t return num + (isFuture || withoutSuffix ? ' év' : ' éve');\n\t }\n\t return '';\n\t }\n\t function week(isFuture) {\n\t return (\n\t (isFuture ? '' : '[múlt] ') +\n\t '[' +\n\t weekEndings[this.day()] +\n\t '] LT[-kor]'\n\t );\n\t }\n\t\n\t var hu = moment.defineLocale('hu', {\n\t months: 'január_február_március_április_május_június_július_augusztus_szeptember_október_november_december'.split(\n\t '_'\n\t ),\n\t monthsShort: 'jan._feb._márc._ápr._máj._jún._júl._aug._szept._okt._nov._dec.'.split(\n\t '_'\n\t ),\n\t monthsParseExact: true,\n\t weekdays: 'vasárnap_hétfő_kedd_szerda_csütörtök_péntek_szombat'.split('_'),\n\t weekdaysShort: 'vas_hét_kedd_sze_csüt_pén_szo'.split('_'),\n\t weekdaysMin: 'v_h_k_sze_cs_p_szo'.split('_'),\n\t longDateFormat: {\n\t LT: 'H:mm',\n\t LTS: 'H:mm:ss',\n\t L: 'YYYY.MM.DD.',\n\t LL: 'YYYY. MMMM D.',\n\t LLL: 'YYYY. MMMM D. H:mm',\n\t LLLL: 'YYYY. MMMM D., dddd H:mm',\n\t },\n\t meridiemParse: /de|du/i,\n\t isPM: function (input) {\n\t return input.charAt(1).toLowerCase() === 'u';\n\t },\n\t meridiem: function (hours, minutes, isLower) {\n\t if (hours < 12) {\n\t return isLower === true ? 'de' : 'DE';\n\t } else {\n\t return isLower === true ? 'du' : 'DU';\n\t }\n\t },\n\t calendar: {\n\t sameDay: '[ma] LT[-kor]',\n\t nextDay: '[holnap] LT[-kor]',\n\t nextWeek: function () {\n\t return week.call(this, true);\n\t },\n\t lastDay: '[tegnap] LT[-kor]',\n\t lastWeek: function () {\n\t return week.call(this, false);\n\t },\n\t sameElse: 'L',\n\t },\n\t relativeTime: {\n\t future: '%s múlva',\n\t past: '%s',\n\t s: translate,\n\t ss: translate,\n\t m: translate,\n\t mm: translate,\n\t h: translate,\n\t hh: translate,\n\t d: translate,\n\t dd: translate,\n\t M: translate,\n\t MM: translate,\n\t y: translate,\n\t yy: translate,\n\t },\n\t dayOfMonthOrdinalParse: /\\d{1,2}\\./,\n\t ordinal: '%d.',\n\t week: {\n\t dow: 1, // Monday is the first day of the week.\n\t doy: 4, // The week that contains Jan 4th is the first week of the year.\n\t },\n\t });\n\t\n\t return hu;\n\t\n\t})));\n\n\n/***/ }),\n\n/***/ 366:\n/***/ (function(module, exports, __webpack_require__) {\n\n\t//! moment.js locale configuration\n\t//! locale : Armenian [hy-am]\n\t//! author : Armendarabyan : https://github.com/armendarabyan\n\t\n\t;(function (global, factory) {\n\t true ? factory(__webpack_require__(1)) :\n\t typeof define === 'function' && define.amd ? define(['../moment'], factory) :\n\t factory(global.moment)\n\t}(this, (function (moment) { 'use strict';\n\t\n\t //! moment.js locale configuration\n\t\n\t var hyAm = moment.defineLocale('hy-am', {\n\t months: {\n\t format: 'հունվարի_փետրվարի_մարտի_ապրիլի_մայիսի_հունիսի_հուլիսի_օգոստոսի_սեպտեմբերի_հոկտեմբերի_նոյեմբերի_դեկտեմբերի'.split(\n\t '_'\n\t ),\n\t standalone: 'հունվար_փետրվար_մարտ_ապրիլ_մայիս_հունիս_հուլիս_օգոստոս_սեպտեմբեր_հոկտեմբեր_նոյեմբեր_դեկտեմբեր'.split(\n\t '_'\n\t ),\n\t },\n\t monthsShort: 'հնվ_փտր_մրտ_ապր_մյս_հնս_հլս_օգս_սպտ_հկտ_նմբ_դկտ'.split('_'),\n\t weekdays: 'կիրակի_երկուշաբթի_երեքշաբթի_չորեքշաբթի_հինգշաբթի_ուրբաթ_շաբաթ'.split(\n\t '_'\n\t ),\n\t weekdaysShort: 'կրկ_երկ_երք_չրք_հնգ_ուրբ_շբթ'.split('_'),\n\t weekdaysMin: 'կրկ_երկ_երք_չրք_հնգ_ուրբ_շբթ'.split('_'),\n\t longDateFormat: {\n\t LT: 'HH:mm',\n\t LTS: 'HH:mm:ss',\n\t L: 'DD.MM.YYYY',\n\t LL: 'D MMMM YYYY թ.',\n\t LLL: 'D MMMM YYYY թ., HH:mm',\n\t LLLL: 'dddd, D MMMM YYYY թ., HH:mm',\n\t },\n\t calendar: {\n\t sameDay: '[այսօր] LT',\n\t nextDay: '[վաղը] LT',\n\t lastDay: '[երեկ] LT',\n\t nextWeek: function () {\n\t return 'dddd [օրը ժամը] LT';\n\t },\n\t lastWeek: function () {\n\t return '[անցած] dddd [օրը ժամը] LT';\n\t },\n\t sameElse: 'L',\n\t },\n\t relativeTime: {\n\t future: '%s հետո',\n\t past: '%s առաջ',\n\t s: 'մի քանի վայրկյան',\n\t ss: '%d վայրկյան',\n\t m: 'րոպե',\n\t mm: '%d րոպե',\n\t h: 'ժամ',\n\t hh: '%d ժամ',\n\t d: 'օր',\n\t dd: '%d օր',\n\t M: 'ամիս',\n\t MM: '%d ամիս',\n\t y: 'տարի',\n\t yy: '%d տարի',\n\t },\n\t meridiemParse: /գիշերվա|առավոտվա|ցերեկվա|երեկոյան/,\n\t isPM: function (input) {\n\t return /^(ցերեկվա|երեկոյան)$/.test(input);\n\t },\n\t meridiem: function (hour) {\n\t if (hour < 4) {\n\t return 'գիշերվա';\n\t } else if (hour < 12) {\n\t return 'առավոտվա';\n\t } else if (hour < 17) {\n\t return 'ցերեկվա';\n\t } else {\n\t return 'երեկոյան';\n\t }\n\t },\n\t dayOfMonthOrdinalParse: /\\d{1,2}|\\d{1,2}-(ին|րդ)/,\n\t ordinal: function (number, period) {\n\t switch (period) {\n\t case 'DDD':\n\t case 'w':\n\t case 'W':\n\t case 'DDDo':\n\t if (number === 1) {\n\t return number + '-ին';\n\t }\n\t return number + '-րդ';\n\t default:\n\t return number;\n\t }\n\t },\n\t week: {\n\t dow: 1, // Monday is the first day of the week.\n\t doy: 7, // The week that contains Jan 7th is the first week of the year.\n\t },\n\t });\n\t\n\t return hyAm;\n\t\n\t})));\n\n\n/***/ }),\n\n/***/ 367:\n/***/ (function(module, exports, __webpack_require__) {\n\n\t//! moment.js locale configuration\n\t//! locale : Indonesian [id]\n\t//! author : Mohammad Satrio Utomo : https://github.com/tyok\n\t//! reference: http://id.wikisource.org/wiki/Pedoman_Umum_Ejaan_Bahasa_Indonesia_yang_Disempurnakan\n\t\n\t;(function (global, factory) {\n\t true ? factory(__webpack_require__(1)) :\n\t typeof define === 'function' && define.amd ? define(['../moment'], factory) :\n\t factory(global.moment)\n\t}(this, (function (moment) { 'use strict';\n\t\n\t //! moment.js locale configuration\n\t\n\t var id = moment.defineLocale('id', {\n\t months: 'Januari_Februari_Maret_April_Mei_Juni_Juli_Agustus_September_Oktober_November_Desember'.split(\n\t '_'\n\t ),\n\t monthsShort: 'Jan_Feb_Mar_Apr_Mei_Jun_Jul_Agt_Sep_Okt_Nov_Des'.split('_'),\n\t weekdays: 'Minggu_Senin_Selasa_Rabu_Kamis_Jumat_Sabtu'.split('_'),\n\t weekdaysShort: 'Min_Sen_Sel_Rab_Kam_Jum_Sab'.split('_'),\n\t weekdaysMin: 'Mg_Sn_Sl_Rb_Km_Jm_Sb'.split('_'),\n\t longDateFormat: {\n\t LT: 'HH.mm',\n\t LTS: 'HH.mm.ss',\n\t L: 'DD/MM/YYYY',\n\t LL: 'D MMMM YYYY',\n\t LLL: 'D MMMM YYYY [pukul] HH.mm',\n\t LLLL: 'dddd, D MMMM YYYY [pukul] HH.mm',\n\t },\n\t meridiemParse: /pagi|siang|sore|malam/,\n\t meridiemHour: function (hour, meridiem) {\n\t if (hour === 12) {\n\t hour = 0;\n\t }\n\t if (meridiem === 'pagi') {\n\t return hour;\n\t } else if (meridiem === 'siang') {\n\t return hour >= 11 ? hour : hour + 12;\n\t } else if (meridiem === 'sore' || meridiem === 'malam') {\n\t return hour + 12;\n\t }\n\t },\n\t meridiem: function (hours, minutes, isLower) {\n\t if (hours < 11) {\n\t return 'pagi';\n\t } else if (hours < 15) {\n\t return 'siang';\n\t } else if (hours < 19) {\n\t return 'sore';\n\t } else {\n\t return 'malam';\n\t }\n\t },\n\t calendar: {\n\t sameDay: '[Hari ini pukul] LT',\n\t nextDay: '[Besok pukul] LT',\n\t nextWeek: 'dddd [pukul] LT',\n\t lastDay: '[Kemarin pukul] LT',\n\t lastWeek: 'dddd [lalu pukul] LT',\n\t sameElse: 'L',\n\t },\n\t relativeTime: {\n\t future: 'dalam %s',\n\t past: '%s yang lalu',\n\t s: 'beberapa detik',\n\t ss: '%d detik',\n\t m: 'semenit',\n\t mm: '%d menit',\n\t h: 'sejam',\n\t hh: '%d jam',\n\t d: 'sehari',\n\t dd: '%d hari',\n\t M: 'sebulan',\n\t MM: '%d bulan',\n\t y: 'setahun',\n\t yy: '%d tahun',\n\t },\n\t week: {\n\t dow: 0, // Sunday is the first day of the week.\n\t doy: 6, // The week that contains Jan 6th is the first week of the year.\n\t },\n\t });\n\t\n\t return id;\n\t\n\t})));\n\n\n/***/ }),\n\n/***/ 368:\n/***/ (function(module, exports, __webpack_require__) {\n\n\t//! moment.js locale configuration\n\t//! locale : Icelandic [is]\n\t//! author : Hinrik Örn Sigurðsson : https://github.com/hinrik\n\t\n\t;(function (global, factory) {\n\t true ? factory(__webpack_require__(1)) :\n\t typeof define === 'function' && define.amd ? define(['../moment'], factory) :\n\t factory(global.moment)\n\t}(this, (function (moment) { 'use strict';\n\t\n\t //! moment.js locale configuration\n\t\n\t function plural(n) {\n\t if (n % 100 === 11) {\n\t return true;\n\t } else if (n % 10 === 1) {\n\t return false;\n\t }\n\t return true;\n\t }\n\t function translate(number, withoutSuffix, key, isFuture) {\n\t var result = number + ' ';\n\t switch (key) {\n\t case 's':\n\t return withoutSuffix || isFuture\n\t ? 'nokkrar sekúndur'\n\t : 'nokkrum sekúndum';\n\t case 'ss':\n\t if (plural(number)) {\n\t return (\n\t result +\n\t (withoutSuffix || isFuture ? 'sekúndur' : 'sekúndum')\n\t );\n\t }\n\t return result + 'sekúnda';\n\t case 'm':\n\t return withoutSuffix ? 'mínúta' : 'mínútu';\n\t case 'mm':\n\t if (plural(number)) {\n\t return (\n\t result + (withoutSuffix || isFuture ? 'mínútur' : 'mínútum')\n\t );\n\t } else if (withoutSuffix) {\n\t return result + 'mínúta';\n\t }\n\t return result + 'mínútu';\n\t case 'hh':\n\t if (plural(number)) {\n\t return (\n\t result +\n\t (withoutSuffix || isFuture\n\t ? 'klukkustundir'\n\t : 'klukkustundum')\n\t );\n\t }\n\t return result + 'klukkustund';\n\t case 'd':\n\t if (withoutSuffix) {\n\t return 'dagur';\n\t }\n\t return isFuture ? 'dag' : 'degi';\n\t case 'dd':\n\t if (plural(number)) {\n\t if (withoutSuffix) {\n\t return result + 'dagar';\n\t }\n\t return result + (isFuture ? 'daga' : 'dögum');\n\t } else if (withoutSuffix) {\n\t return result + 'dagur';\n\t }\n\t return result + (isFuture ? 'dag' : 'degi');\n\t case 'M':\n\t if (withoutSuffix) {\n\t return 'mánuður';\n\t }\n\t return isFuture ? 'mánuð' : 'mánuði';\n\t case 'MM':\n\t if (plural(number)) {\n\t if (withoutSuffix) {\n\t return result + 'mánuðir';\n\t }\n\t return result + (isFuture ? 'mánuði' : 'mánuðum');\n\t } else if (withoutSuffix) {\n\t return result + 'mánuður';\n\t }\n\t return result + (isFuture ? 'mánuð' : 'mánuði');\n\t case 'y':\n\t return withoutSuffix || isFuture ? 'ár' : 'ári';\n\t case 'yy':\n\t if (plural(number)) {\n\t return result + (withoutSuffix || isFuture ? 'ár' : 'árum');\n\t }\n\t return result + (withoutSuffix || isFuture ? 'ár' : 'ári');\n\t }\n\t }\n\t\n\t var is = moment.defineLocale('is', {\n\t months: 'janúar_febrúar_mars_apríl_maí_júní_júlí_ágúst_september_október_nóvember_desember'.split(\n\t '_'\n\t ),\n\t monthsShort: 'jan_feb_mar_apr_maí_jún_júl_ágú_sep_okt_nóv_des'.split('_'),\n\t weekdays: 'sunnudagur_mánudagur_þriðjudagur_miðvikudagur_fimmtudagur_föstudagur_laugardagur'.split(\n\t '_'\n\t ),\n\t weekdaysShort: 'sun_mán_þri_mið_fim_fös_lau'.split('_'),\n\t weekdaysMin: 'Su_Má_Þr_Mi_Fi_Fö_La'.split('_'),\n\t longDateFormat: {\n\t LT: 'H:mm',\n\t LTS: 'H:mm:ss',\n\t L: 'DD.MM.YYYY',\n\t LL: 'D. MMMM YYYY',\n\t LLL: 'D. MMMM YYYY [kl.] H:mm',\n\t LLLL: 'dddd, D. MMMM YYYY [kl.] H:mm',\n\t },\n\t calendar: {\n\t sameDay: '[í dag kl.] LT',\n\t nextDay: '[á morgun kl.] LT',\n\t nextWeek: 'dddd [kl.] LT',\n\t lastDay: '[í gær kl.] LT',\n\t lastWeek: '[síðasta] dddd [kl.] LT',\n\t sameElse: 'L',\n\t },\n\t relativeTime: {\n\t future: 'eftir %s',\n\t past: 'fyrir %s síðan',\n\t s: translate,\n\t ss: translate,\n\t m: translate,\n\t mm: translate,\n\t h: 'klukkustund',\n\t hh: translate,\n\t d: translate,\n\t dd: translate,\n\t M: translate,\n\t MM: translate,\n\t y: translate,\n\t yy: translate,\n\t },\n\t dayOfMonthOrdinalParse: /\\d{1,2}\\./,\n\t ordinal: '%d.',\n\t week: {\n\t dow: 1, // Monday is the first day of the week.\n\t doy: 4, // The week that contains Jan 4th is the first week of the year.\n\t },\n\t });\n\t\n\t return is;\n\t\n\t})));\n\n\n/***/ }),\n\n/***/ 369:\n/***/ (function(module, exports, __webpack_require__) {\n\n\t//! moment.js locale configuration\n\t//! locale : Italian (Switzerland) [it-ch]\n\t//! author : xfh : https://github.com/xfh\n\t\n\t;(function (global, factory) {\n\t true ? factory(__webpack_require__(1)) :\n\t typeof define === 'function' && define.amd ? define(['../moment'], factory) :\n\t factory(global.moment)\n\t}(this, (function (moment) { 'use strict';\n\t\n\t //! moment.js locale configuration\n\t\n\t var itCh = moment.defineLocale('it-ch', {\n\t months: 'gennaio_febbraio_marzo_aprile_maggio_giugno_luglio_agosto_settembre_ottobre_novembre_dicembre'.split(\n\t '_'\n\t ),\n\t monthsShort: 'gen_feb_mar_apr_mag_giu_lug_ago_set_ott_nov_dic'.split('_'),\n\t weekdays: 'domenica_lunedì_martedì_mercoledì_giovedì_venerdì_sabato'.split(\n\t '_'\n\t ),\n\t weekdaysShort: 'dom_lun_mar_mer_gio_ven_sab'.split('_'),\n\t weekdaysMin: 'do_lu_ma_me_gi_ve_sa'.split('_'),\n\t longDateFormat: {\n\t LT: 'HH:mm',\n\t LTS: 'HH:mm:ss',\n\t L: 'DD.MM.YYYY',\n\t LL: 'D MMMM YYYY',\n\t LLL: 'D MMMM YYYY HH:mm',\n\t LLLL: 'dddd D MMMM YYYY HH:mm',\n\t },\n\t calendar: {\n\t sameDay: '[Oggi alle] LT',\n\t nextDay: '[Domani alle] LT',\n\t nextWeek: 'dddd [alle] LT',\n\t lastDay: '[Ieri alle] LT',\n\t lastWeek: function () {\n\t switch (this.day()) {\n\t case 0:\n\t return '[la scorsa] dddd [alle] LT';\n\t default:\n\t return '[lo scorso] dddd [alle] LT';\n\t }\n\t },\n\t sameElse: 'L',\n\t },\n\t relativeTime: {\n\t future: function (s) {\n\t return (/^[0-9].+$/.test(s) ? 'tra' : 'in') + ' ' + s;\n\t },\n\t past: '%s fa',\n\t s: 'alcuni secondi',\n\t ss: '%d secondi',\n\t m: 'un minuto',\n\t mm: '%d minuti',\n\t h: \"un'ora\",\n\t hh: '%d ore',\n\t d: 'un giorno',\n\t dd: '%d giorni',\n\t M: 'un mese',\n\t MM: '%d mesi',\n\t y: 'un anno',\n\t yy: '%d anni',\n\t },\n\t dayOfMonthOrdinalParse: /\\d{1,2}º/,\n\t ordinal: '%dº',\n\t week: {\n\t dow: 1, // Monday is the first day of the week.\n\t doy: 4, // The week that contains Jan 4th is the first week of the year.\n\t },\n\t });\n\t\n\t return itCh;\n\t\n\t})));\n\n\n/***/ }),\n\n/***/ 370:\n/***/ (function(module, exports, __webpack_require__) {\n\n\t//! moment.js locale configuration\n\t//! locale : Italian [it]\n\t//! author : Lorenzo : https://github.com/aliem\n\t//! author: Mattia Larentis: https://github.com/nostalgiaz\n\t//! author: Marco : https://github.com/Manfre98\n\t\n\t;(function (global, factory) {\n\t true ? factory(__webpack_require__(1)) :\n\t typeof define === 'function' && define.amd ? define(['../moment'], factory) :\n\t factory(global.moment)\n\t}(this, (function (moment) { 'use strict';\n\t\n\t //! moment.js locale configuration\n\t\n\t var it = moment.defineLocale('it', {\n\t months: 'gennaio_febbraio_marzo_aprile_maggio_giugno_luglio_agosto_settembre_ottobre_novembre_dicembre'.split(\n\t '_'\n\t ),\n\t monthsShort: 'gen_feb_mar_apr_mag_giu_lug_ago_set_ott_nov_dic'.split('_'),\n\t weekdays: 'domenica_lunedì_martedì_mercoledì_giovedì_venerdì_sabato'.split(\n\t '_'\n\t ),\n\t weekdaysShort: 'dom_lun_mar_mer_gio_ven_sab'.split('_'),\n\t weekdaysMin: 'do_lu_ma_me_gi_ve_sa'.split('_'),\n\t longDateFormat: {\n\t LT: 'HH:mm',\n\t LTS: 'HH:mm:ss',\n\t L: 'DD/MM/YYYY',\n\t LL: 'D MMMM YYYY',\n\t LLL: 'D MMMM YYYY HH:mm',\n\t LLLL: 'dddd D MMMM YYYY HH:mm',\n\t },\n\t calendar: {\n\t sameDay: function () {\n\t return (\n\t '[Oggi a' +\n\t (this.hours() > 1 ? 'lle ' : this.hours() === 0 ? ' ' : \"ll'\") +\n\t ']LT'\n\t );\n\t },\n\t nextDay: function () {\n\t return (\n\t '[Domani a' +\n\t (this.hours() > 1 ? 'lle ' : this.hours() === 0 ? ' ' : \"ll'\") +\n\t ']LT'\n\t );\n\t },\n\t nextWeek: function () {\n\t return (\n\t 'dddd [a' +\n\t (this.hours() > 1 ? 'lle ' : this.hours() === 0 ? ' ' : \"ll'\") +\n\t ']LT'\n\t );\n\t },\n\t lastDay: function () {\n\t return (\n\t '[Ieri a' +\n\t (this.hours() > 1 ? 'lle ' : this.hours() === 0 ? ' ' : \"ll'\") +\n\t ']LT'\n\t );\n\t },\n\t lastWeek: function () {\n\t switch (this.day()) {\n\t case 0:\n\t return (\n\t '[La scorsa] dddd [a' +\n\t (this.hours() > 1\n\t ? 'lle '\n\t : this.hours() === 0\n\t ? ' '\n\t : \"ll'\") +\n\t ']LT'\n\t );\n\t default:\n\t return (\n\t '[Lo scorso] dddd [a' +\n\t (this.hours() > 1\n\t ? 'lle '\n\t : this.hours() === 0\n\t ? ' '\n\t : \"ll'\") +\n\t ']LT'\n\t );\n\t }\n\t },\n\t sameElse: 'L',\n\t },\n\t relativeTime: {\n\t future: 'tra %s',\n\t past: '%s fa',\n\t s: 'alcuni secondi',\n\t ss: '%d secondi',\n\t m: 'un minuto',\n\t mm: '%d minuti',\n\t h: \"un'ora\",\n\t hh: '%d ore',\n\t d: 'un giorno',\n\t dd: '%d giorni',\n\t w: 'una settimana',\n\t ww: '%d settimane',\n\t M: 'un mese',\n\t MM: '%d mesi',\n\t y: 'un anno',\n\t yy: '%d anni',\n\t },\n\t dayOfMonthOrdinalParse: /\\d{1,2}º/,\n\t ordinal: '%dº',\n\t week: {\n\t dow: 1, // Monday is the first day of the week.\n\t doy: 4, // The week that contains Jan 4th is the first week of the year.\n\t },\n\t });\n\t\n\t return it;\n\t\n\t})));\n\n\n/***/ }),\n\n/***/ 371:\n/***/ (function(module, exports, __webpack_require__) {\n\n\t//! moment.js locale configuration\n\t//! locale : Javanese [jv]\n\t//! author : Rony Lantip : https://github.com/lantip\n\t//! reference: http://jv.wikipedia.org/wiki/Basa_Jawa\n\t\n\t;(function (global, factory) {\n\t true ? factory(__webpack_require__(1)) :\n\t typeof define === 'function' && define.amd ? define(['../moment'], factory) :\n\t factory(global.moment)\n\t}(this, (function (moment) { 'use strict';\n\t\n\t //! moment.js locale configuration\n\t\n\t var jv = moment.defineLocale('jv', {\n\t months: 'Januari_Februari_Maret_April_Mei_Juni_Juli_Agustus_September_Oktober_Nopember_Desember'.split(\n\t '_'\n\t ),\n\t monthsShort: 'Jan_Feb_Mar_Apr_Mei_Jun_Jul_Ags_Sep_Okt_Nop_Des'.split('_'),\n\t weekdays: 'Minggu_Senen_Seloso_Rebu_Kemis_Jemuwah_Septu'.split('_'),\n\t weekdaysShort: 'Min_Sen_Sel_Reb_Kem_Jem_Sep'.split('_'),\n\t weekdaysMin: 'Mg_Sn_Sl_Rb_Km_Jm_Sp'.split('_'),\n\t longDateFormat: {\n\t LT: 'HH.mm',\n\t LTS: 'HH.mm.ss',\n\t L: 'DD/MM/YYYY',\n\t LL: 'D MMMM YYYY',\n\t LLL: 'D MMMM YYYY [pukul] HH.mm',\n\t LLLL: 'dddd, D MMMM YYYY [pukul] HH.mm',\n\t },\n\t meridiemParse: /enjing|siyang|sonten|ndalu/,\n\t meridiemHour: function (hour, meridiem) {\n\t if (hour === 12) {\n\t hour = 0;\n\t }\n\t if (meridiem === 'enjing') {\n\t return hour;\n\t } else if (meridiem === 'siyang') {\n\t return hour >= 11 ? hour : hour + 12;\n\t } else if (meridiem === 'sonten' || meridiem === 'ndalu') {\n\t return hour + 12;\n\t }\n\t },\n\t meridiem: function (hours, minutes, isLower) {\n\t if (hours < 11) {\n\t return 'enjing';\n\t } else if (hours < 15) {\n\t return 'siyang';\n\t } else if (hours < 19) {\n\t return 'sonten';\n\t } else {\n\t return 'ndalu';\n\t }\n\t },\n\t calendar: {\n\t sameDay: '[Dinten puniko pukul] LT',\n\t nextDay: '[Mbenjang pukul] LT',\n\t nextWeek: 'dddd [pukul] LT',\n\t lastDay: '[Kala wingi pukul] LT',\n\t lastWeek: 'dddd [kepengker pukul] LT',\n\t sameElse: 'L',\n\t },\n\t relativeTime: {\n\t future: 'wonten ing %s',\n\t past: '%s ingkang kepengker',\n\t s: 'sawetawis detik',\n\t ss: '%d detik',\n\t m: 'setunggal menit',\n\t mm: '%d menit',\n\t h: 'setunggal jam',\n\t hh: '%d jam',\n\t d: 'sedinten',\n\t dd: '%d dinten',\n\t M: 'sewulan',\n\t MM: '%d wulan',\n\t y: 'setaun',\n\t yy: '%d taun',\n\t },\n\t week: {\n\t dow: 1, // Monday is the first day of the week.\n\t doy: 7, // The week that contains Jan 7th is the first week of the year.\n\t },\n\t });\n\t\n\t return jv;\n\t\n\t})));\n\n\n/***/ }),\n\n/***/ 372:\n/***/ (function(module, exports, __webpack_require__) {\n\n\t//! moment.js locale configuration\n\t//! locale : Georgian [ka]\n\t//! author : Irakli Janiashvili : https://github.com/IrakliJani\n\t\n\t;(function (global, factory) {\n\t true ? factory(__webpack_require__(1)) :\n\t typeof define === 'function' && define.amd ? define(['../moment'], factory) :\n\t factory(global.moment)\n\t}(this, (function (moment) { 'use strict';\n\t\n\t //! moment.js locale configuration\n\t\n\t var ka = moment.defineLocale('ka', {\n\t months: 'იანვარი_თებერვალი_მარტი_აპრილი_მაისი_ივნისი_ივლისი_აგვისტო_სექტემბერი_ოქტომბერი_ნოემბერი_დეკემბერი'.split(\n\t '_'\n\t ),\n\t monthsShort: 'იან_თებ_მარ_აპრ_მაი_ივნ_ივლ_აგვ_სექ_ოქტ_ნოე_დეკ'.split('_'),\n\t weekdays: {\n\t standalone: 'კვირა_ორშაბათი_სამშაბათი_ოთხშაბათი_ხუთშაბათი_პარასკევი_შაბათი'.split(\n\t '_'\n\t ),\n\t format: 'კვირას_ორშაბათს_სამშაბათს_ოთხშაბათს_ხუთშაბათს_პარასკევს_შაბათს'.split(\n\t '_'\n\t ),\n\t isFormat: /(წინა|შემდეგ)/,\n\t },\n\t weekdaysShort: 'კვი_ორშ_სამ_ოთხ_ხუთ_პარ_შაბ'.split('_'),\n\t weekdaysMin: 'კვ_ორ_სა_ოთ_ხუ_პა_შა'.split('_'),\n\t longDateFormat: {\n\t LT: 'HH:mm',\n\t LTS: 'HH:mm:ss',\n\t L: 'DD/MM/YYYY',\n\t LL: 'D MMMM YYYY',\n\t LLL: 'D MMMM YYYY HH:mm',\n\t LLLL: 'dddd, D MMMM YYYY HH:mm',\n\t },\n\t calendar: {\n\t sameDay: '[დღეს] LT[-ზე]',\n\t nextDay: '[ხვალ] LT[-ზე]',\n\t lastDay: '[გუშინ] LT[-ზე]',\n\t nextWeek: '[შემდეგ] dddd LT[-ზე]',\n\t lastWeek: '[წინა] dddd LT-ზე',\n\t sameElse: 'L',\n\t },\n\t relativeTime: {\n\t future: function (s) {\n\t return s.replace(/(წამ|წუთ|საათ|წელ|დღ|თვ)(ი|ე)/, function (\n\t $0,\n\t $1,\n\t $2\n\t ) {\n\t return $2 === 'ი' ? $1 + 'ში' : $1 + $2 + 'ში';\n\t });\n\t },\n\t past: function (s) {\n\t if (/(წამი|წუთი|საათი|დღე|თვე)/.test(s)) {\n\t return s.replace(/(ი|ე)$/, 'ის წინ');\n\t }\n\t if (/წელი/.test(s)) {\n\t return s.replace(/წელი$/, 'წლის წინ');\n\t }\n\t return s;\n\t },\n\t s: 'რამდენიმე წამი',\n\t ss: '%d წამი',\n\t m: 'წუთი',\n\t mm: '%d წუთი',\n\t h: 'საათი',\n\t hh: '%d საათი',\n\t d: 'დღე',\n\t dd: '%d დღე',\n\t M: 'თვე',\n\t MM: '%d თვე',\n\t y: 'წელი',\n\t yy: '%d წელი',\n\t },\n\t dayOfMonthOrdinalParse: /0|1-ლი|მე-\\d{1,2}|\\d{1,2}-ე/,\n\t ordinal: function (number) {\n\t if (number === 0) {\n\t return number;\n\t }\n\t if (number === 1) {\n\t return number + '-ლი';\n\t }\n\t if (\n\t number < 20 ||\n\t (number <= 100 && number % 20 === 0) ||\n\t number % 100 === 0\n\t ) {\n\t return 'მე-' + number;\n\t }\n\t return number + '-ე';\n\t },\n\t week: {\n\t dow: 1,\n\t doy: 7,\n\t },\n\t });\n\t\n\t return ka;\n\t\n\t})));\n\n\n/***/ }),\n\n/***/ 373:\n/***/ (function(module, exports, __webpack_require__) {\n\n\t//! moment.js locale configuration\n\t//! locale : Kazakh [kk]\n\t//! authors : Nurlan Rakhimzhanov : https://github.com/nurlan\n\t\n\t;(function (global, factory) {\n\t true ? factory(__webpack_require__(1)) :\n\t typeof define === 'function' && define.amd ? define(['../moment'], factory) :\n\t factory(global.moment)\n\t}(this, (function (moment) { 'use strict';\n\t\n\t //! moment.js locale configuration\n\t\n\t var suffixes = {\n\t 0: '-ші',\n\t 1: '-ші',\n\t 2: '-ші',\n\t 3: '-ші',\n\t 4: '-ші',\n\t 5: '-ші',\n\t 6: '-шы',\n\t 7: '-ші',\n\t 8: '-ші',\n\t 9: '-шы',\n\t 10: '-шы',\n\t 20: '-шы',\n\t 30: '-шы',\n\t 40: '-шы',\n\t 50: '-ші',\n\t 60: '-шы',\n\t 70: '-ші',\n\t 80: '-ші',\n\t 90: '-шы',\n\t 100: '-ші',\n\t };\n\t\n\t var kk = moment.defineLocale('kk', {\n\t months: 'қаңтар_ақпан_наурыз_сәуір_мамыр_маусым_шілде_тамыз_қыркүйек_қазан_қараша_желтоқсан'.split(\n\t '_'\n\t ),\n\t monthsShort: 'қаң_ақп_нау_сәу_мам_мау_шіл_там_қыр_қаз_қар_жел'.split('_'),\n\t weekdays: 'жексенбі_дүйсенбі_сейсенбі_сәрсенбі_бейсенбі_жұма_сенбі'.split(\n\t '_'\n\t ),\n\t weekdaysShort: 'жек_дүй_сей_сәр_бей_жұм_сен'.split('_'),\n\t weekdaysMin: 'жк_дй_сй_ср_бй_жм_сн'.split('_'),\n\t longDateFormat: {\n\t LT: 'HH:mm',\n\t LTS: 'HH:mm:ss',\n\t L: 'DD.MM.YYYY',\n\t LL: 'D MMMM YYYY',\n\t LLL: 'D MMMM YYYY HH:mm',\n\t LLLL: 'dddd, D MMMM YYYY HH:mm',\n\t },\n\t calendar: {\n\t sameDay: '[Бүгін сағат] LT',\n\t nextDay: '[Ертең сағат] LT',\n\t nextWeek: 'dddd [сағат] LT',\n\t lastDay: '[Кеше сағат] LT',\n\t lastWeek: '[Өткен аптаның] dddd [сағат] LT',\n\t sameElse: 'L',\n\t },\n\t relativeTime: {\n\t future: '%s ішінде',\n\t past: '%s бұрын',\n\t s: 'бірнеше секунд',\n\t ss: '%d секунд',\n\t m: 'бір минут',\n\t mm: '%d минут',\n\t h: 'бір сағат',\n\t hh: '%d сағат',\n\t d: 'бір күн',\n\t dd: '%d күн',\n\t M: 'бір ай',\n\t MM: '%d ай',\n\t y: 'бір жыл',\n\t yy: '%d жыл',\n\t },\n\t dayOfMonthOrdinalParse: /\\d{1,2}-(ші|шы)/,\n\t ordinal: function (number) {\n\t var a = number % 10,\n\t b = number >= 100 ? 100 : null;\n\t return number + (suffixes[number] || suffixes[a] || suffixes[b]);\n\t },\n\t week: {\n\t dow: 1, // Monday is the first day of the week.\n\t doy: 7, // The week that contains Jan 7th is the first week of the year.\n\t },\n\t });\n\t\n\t return kk;\n\t\n\t})));\n\n\n/***/ }),\n\n/***/ 374:\n/***/ (function(module, exports, __webpack_require__) {\n\n\t//! moment.js locale configuration\n\t//! locale : Cambodian [km]\n\t//! author : Kruy Vanna : https://github.com/kruyvanna\n\t\n\t;(function (global, factory) {\n\t true ? factory(__webpack_require__(1)) :\n\t typeof define === 'function' && define.amd ? define(['../moment'], factory) :\n\t factory(global.moment)\n\t}(this, (function (moment) { 'use strict';\n\t\n\t //! moment.js locale configuration\n\t\n\t var symbolMap = {\n\t 1: '១',\n\t 2: '២',\n\t 3: '៣',\n\t 4: '៤',\n\t 5: '៥',\n\t 6: '៦',\n\t 7: '៧',\n\t 8: '៨',\n\t 9: '៩',\n\t 0: '០',\n\t },\n\t numberMap = {\n\t '១': '1',\n\t '២': '2',\n\t '៣': '3',\n\t '៤': '4',\n\t '៥': '5',\n\t '៦': '6',\n\t '៧': '7',\n\t '៨': '8',\n\t '៩': '9',\n\t '០': '0',\n\t };\n\t\n\t var km = moment.defineLocale('km', {\n\t months: 'មករា_កុម្ភៈ_មីនា_មេសា_ឧសភា_មិថុនា_កក្កដា_សីហា_កញ្ញា_តុលា_វិច្ឆិកា_ធ្នូ'.split(\n\t '_'\n\t ),\n\t monthsShort: 'មករា_កុម្ភៈ_មីនា_មេសា_ឧសភា_មិថុនា_កក្កដា_សីហា_កញ្ញា_តុលា_វិច្ឆិកា_ធ្នូ'.split(\n\t '_'\n\t ),\n\t weekdays: 'អាទិត្យ_ច័ន្ទ_អង្គារ_ពុធ_ព្រហស្បតិ៍_សុក្រ_សៅរ៍'.split('_'),\n\t weekdaysShort: 'អា_ច_អ_ព_ព្រ_សុ_ស'.split('_'),\n\t weekdaysMin: 'អា_ច_អ_ព_ព្រ_សុ_ស'.split('_'),\n\t weekdaysParseExact: true,\n\t longDateFormat: {\n\t LT: 'HH:mm',\n\t LTS: 'HH:mm:ss',\n\t L: 'DD/MM/YYYY',\n\t LL: 'D MMMM YYYY',\n\t LLL: 'D MMMM YYYY HH:mm',\n\t LLLL: 'dddd, D MMMM YYYY HH:mm',\n\t },\n\t meridiemParse: /ព្រឹក|ល្ងាច/,\n\t isPM: function (input) {\n\t return input === 'ល្ងាច';\n\t },\n\t meridiem: function (hour, minute, isLower) {\n\t if (hour < 12) {\n\t return 'ព្រឹក';\n\t } else {\n\t return 'ល្ងាច';\n\t }\n\t },\n\t calendar: {\n\t sameDay: '[ថ្ងៃនេះ ម៉ោង] LT',\n\t nextDay: '[ស្អែក ម៉ោង] LT',\n\t nextWeek: 'dddd [ម៉ោង] LT',\n\t lastDay: '[ម្សិលមិញ ម៉ោង] LT',\n\t lastWeek: 'dddd [សប្តាហ៍មុន] [ម៉ោង] LT',\n\t sameElse: 'L',\n\t },\n\t relativeTime: {\n\t future: '%sទៀត',\n\t past: '%sមុន',\n\t s: 'ប៉ុន្មានវិនាទី',\n\t ss: '%d វិនាទី',\n\t m: 'មួយនាទី',\n\t mm: '%d នាទី',\n\t h: 'មួយម៉ោង',\n\t hh: '%d ម៉ោង',\n\t d: 'មួយថ្ងៃ',\n\t dd: '%d ថ្ងៃ',\n\t M: 'មួយខែ',\n\t MM: '%d ខែ',\n\t y: 'មួយឆ្នាំ',\n\t yy: '%d ឆ្នាំ',\n\t },\n\t dayOfMonthOrdinalParse: /ទី\\d{1,2}/,\n\t ordinal: 'ទី%d',\n\t preparse: function (string) {\n\t return string.replace(/[១២៣៤៥៦៧៨៩០]/g, function (match) {\n\t return numberMap[match];\n\t });\n\t },\n\t postformat: function (string) {\n\t return string.replace(/\\d/g, function (match) {\n\t return symbolMap[match];\n\t });\n\t },\n\t week: {\n\t dow: 1, // Monday is the first day of the week.\n\t doy: 4, // The week that contains Jan 4th is the first week of the year.\n\t },\n\t });\n\t\n\t return km;\n\t\n\t})));\n\n\n/***/ }),\n\n/***/ 375:\n/***/ (function(module, exports, __webpack_require__) {\n\n\t//! moment.js locale configuration\n\t//! locale : Kannada [kn]\n\t//! author : Rajeev Naik : https://github.com/rajeevnaikte\n\t\n\t;(function (global, factory) {\n\t true ? factory(__webpack_require__(1)) :\n\t typeof define === 'function' && define.amd ? define(['../moment'], factory) :\n\t factory(global.moment)\n\t}(this, (function (moment) { 'use strict';\n\t\n\t //! moment.js locale configuration\n\t\n\t var symbolMap = {\n\t 1: '೧',\n\t 2: '೨',\n\t 3: '೩',\n\t 4: '೪',\n\t 5: '೫',\n\t 6: '೬',\n\t 7: '೭',\n\t 8: '೮',\n\t 9: '೯',\n\t 0: '೦',\n\t },\n\t numberMap = {\n\t '೧': '1',\n\t '೨': '2',\n\t '೩': '3',\n\t '೪': '4',\n\t '೫': '5',\n\t '೬': '6',\n\t '೭': '7',\n\t '೮': '8',\n\t '೯': '9',\n\t '೦': '0',\n\t };\n\t\n\t var kn = moment.defineLocale('kn', {\n\t months: 'ಜನವರಿ_ಫೆಬ್ರವರಿ_ಮಾರ್ಚ್_ಏಪ್ರಿಲ್_ಮೇ_ಜೂನ್_ಜುಲೈ_ಆಗಸ್ಟ್_ಸೆಪ್ಟೆಂಬರ್_ಅಕ್ಟೋಬರ್_ನವೆಂಬರ್_ಡಿಸೆಂಬರ್'.split(\n\t '_'\n\t ),\n\t monthsShort: 'ಜನ_ಫೆಬ್ರ_ಮಾರ್ಚ್_ಏಪ್ರಿಲ್_ಮೇ_ಜೂನ್_ಜುಲೈ_ಆಗಸ್ಟ್_ಸೆಪ್ಟೆಂ_ಅಕ್ಟೋ_ನವೆಂ_ಡಿಸೆಂ'.split(\n\t '_'\n\t ),\n\t monthsParseExact: true,\n\t weekdays: 'ಭಾನುವಾರ_ಸೋಮವಾರ_ಮಂಗಳವಾರ_ಬುಧವಾರ_ಗುರುವಾರ_ಶುಕ್ರವಾರ_ಶನಿವಾರ'.split(\n\t '_'\n\t ),\n\t weekdaysShort: 'ಭಾನು_ಸೋಮ_ಮಂಗಳ_ಬುಧ_ಗುರು_ಶುಕ್ರ_ಶನಿ'.split('_'),\n\t weekdaysMin: 'ಭಾ_ಸೋ_ಮಂ_ಬು_ಗು_ಶು_ಶ'.split('_'),\n\t longDateFormat: {\n\t LT: 'A h:mm',\n\t LTS: 'A h:mm:ss',\n\t L: 'DD/MM/YYYY',\n\t LL: 'D MMMM YYYY',\n\t LLL: 'D MMMM YYYY, A h:mm',\n\t LLLL: 'dddd, D MMMM YYYY, A h:mm',\n\t },\n\t calendar: {\n\t sameDay: '[ಇಂದು] LT',\n\t nextDay: '[ನಾಳೆ] LT',\n\t nextWeek: 'dddd, LT',\n\t lastDay: '[ನಿನ್ನೆ] LT',\n\t lastWeek: '[ಕೊನೆಯ] dddd, LT',\n\t sameElse: 'L',\n\t },\n\t relativeTime: {\n\t future: '%s ನಂತರ',\n\t past: '%s ಹಿಂದೆ',\n\t s: 'ಕೆಲವು ಕ್ಷಣಗಳು',\n\t ss: '%d ಸೆಕೆಂಡುಗಳು',\n\t m: 'ಒಂದು ನಿಮಿಷ',\n\t mm: '%d ನಿಮಿಷ',\n\t h: 'ಒಂದು ಗಂಟೆ',\n\t hh: '%d ಗಂಟೆ',\n\t d: 'ಒಂದು ದಿನ',\n\t dd: '%d ದಿನ',\n\t M: 'ಒಂದು ತಿಂಗಳು',\n\t MM: '%d ತಿಂಗಳು',\n\t y: 'ಒಂದು ವರ್ಷ',\n\t yy: '%d ವರ್ಷ',\n\t },\n\t preparse: function (string) {\n\t return string.replace(/[೧೨೩೪೫೬೭೮೯೦]/g, function (match) {\n\t return numberMap[match];\n\t });\n\t },\n\t postformat: function (string) {\n\t return string.replace(/\\d/g, function (match) {\n\t return symbolMap[match];\n\t });\n\t },\n\t meridiemParse: /ರಾತ್ರಿ|ಬೆಳಿಗ್ಗೆ|ಮಧ್ಯಾಹ್ನ|ಸಂಜೆ/,\n\t meridiemHour: function (hour, meridiem) {\n\t if (hour === 12) {\n\t hour = 0;\n\t }\n\t if (meridiem === 'ರಾತ್ರಿ') {\n\t return hour < 4 ? hour : hour + 12;\n\t } else if (meridiem === 'ಬೆಳಿಗ್ಗೆ') {\n\t return hour;\n\t } else if (meridiem === 'ಮಧ್ಯಾಹ್ನ') {\n\t return hour >= 10 ? hour : hour + 12;\n\t } else if (meridiem === 'ಸಂಜೆ') {\n\t return hour + 12;\n\t }\n\t },\n\t meridiem: function (hour, minute, isLower) {\n\t if (hour < 4) {\n\t return 'ರಾತ್ರಿ';\n\t } else if (hour < 10) {\n\t return 'ಬೆಳಿಗ್ಗೆ';\n\t } else if (hour < 17) {\n\t return 'ಮಧ್ಯಾಹ್ನ';\n\t } else if (hour < 20) {\n\t return 'ಸಂಜೆ';\n\t } else {\n\t return 'ರಾತ್ರಿ';\n\t }\n\t },\n\t dayOfMonthOrdinalParse: /\\d{1,2}(ನೇ)/,\n\t ordinal: function (number) {\n\t return number + 'ನೇ';\n\t },\n\t week: {\n\t dow: 0, // Sunday is the first day of the week.\n\t doy: 6, // The week that contains Jan 6th is the first week of the year.\n\t },\n\t });\n\t\n\t return kn;\n\t\n\t})));\n\n\n/***/ }),\n\n/***/ 376:\n/***/ (function(module, exports, __webpack_require__) {\n\n\t//! moment.js locale configuration\n\t//! locale : Korean [ko]\n\t//! author : Kyungwook, Park : https://github.com/kyungw00k\n\t//! author : Jeeeyul Lee \n\t\n\t;(function (global, factory) {\n\t true ? factory(__webpack_require__(1)) :\n\t typeof define === 'function' && define.amd ? define(['../moment'], factory) :\n\t factory(global.moment)\n\t}(this, (function (moment) { 'use strict';\n\t\n\t //! moment.js locale configuration\n\t\n\t var ko = moment.defineLocale('ko', {\n\t months: '1월_2월_3월_4월_5월_6월_7월_8월_9월_10월_11월_12월'.split('_'),\n\t monthsShort: '1월_2월_3월_4월_5월_6월_7월_8월_9월_10월_11월_12월'.split(\n\t '_'\n\t ),\n\t weekdays: '일요일_월요일_화요일_수요일_목요일_금요일_토요일'.split('_'),\n\t weekdaysShort: '일_월_화_수_목_금_토'.split('_'),\n\t weekdaysMin: '일_월_화_수_목_금_토'.split('_'),\n\t longDateFormat: {\n\t LT: 'A h:mm',\n\t LTS: 'A h:mm:ss',\n\t L: 'YYYY.MM.DD.',\n\t LL: 'YYYY년 MMMM D일',\n\t LLL: 'YYYY년 MMMM D일 A h:mm',\n\t LLLL: 'YYYY년 MMMM D일 dddd A h:mm',\n\t l: 'YYYY.MM.DD.',\n\t ll: 'YYYY년 MMMM D일',\n\t lll: 'YYYY년 MMMM D일 A h:mm',\n\t llll: 'YYYY년 MMMM D일 dddd A h:mm',\n\t },\n\t calendar: {\n\t sameDay: '오늘 LT',\n\t nextDay: '내일 LT',\n\t nextWeek: 'dddd LT',\n\t lastDay: '어제 LT',\n\t lastWeek: '지난주 dddd LT',\n\t sameElse: 'L',\n\t },\n\t relativeTime: {\n\t future: '%s 후',\n\t past: '%s 전',\n\t s: '몇 초',\n\t ss: '%d초',\n\t m: '1분',\n\t mm: '%d분',\n\t h: '한 시간',\n\t hh: '%d시간',\n\t d: '하루',\n\t dd: '%d일',\n\t M: '한 달',\n\t MM: '%d달',\n\t y: '일 년',\n\t yy: '%d년',\n\t },\n\t dayOfMonthOrdinalParse: /\\d{1,2}(일|월|주)/,\n\t ordinal: function (number, period) {\n\t switch (period) {\n\t case 'd':\n\t case 'D':\n\t case 'DDD':\n\t return number + '일';\n\t case 'M':\n\t return number + '월';\n\t case 'w':\n\t case 'W':\n\t return number + '주';\n\t default:\n\t return number;\n\t }\n\t },\n\t meridiemParse: /오전|오후/,\n\t isPM: function (token) {\n\t return token === '오후';\n\t },\n\t meridiem: function (hour, minute, isUpper) {\n\t return hour < 12 ? '오전' : '오후';\n\t },\n\t });\n\t\n\t return ko;\n\t\n\t})));\n\n\n/***/ }),\n\n/***/ 377:\n/***/ (function(module, exports, __webpack_require__) {\n\n\t//! moment.js locale configuration\n\t//! locale : Kurdish [ku]\n\t//! author : Shahram Mebashar : https://github.com/ShahramMebashar\n\t\n\t;(function (global, factory) {\n\t true ? factory(__webpack_require__(1)) :\n\t typeof define === 'function' && define.amd ? define(['../moment'], factory) :\n\t factory(global.moment)\n\t}(this, (function (moment) { 'use strict';\n\t\n\t //! moment.js locale configuration\n\t\n\t var symbolMap = {\n\t 1: '١',\n\t 2: '٢',\n\t 3: '٣',\n\t 4: '٤',\n\t 5: '٥',\n\t 6: '٦',\n\t 7: '٧',\n\t 8: '٨',\n\t 9: '٩',\n\t 0: '٠',\n\t },\n\t numberMap = {\n\t '١': '1',\n\t '٢': '2',\n\t '٣': '3',\n\t '٤': '4',\n\t '٥': '5',\n\t '٦': '6',\n\t '٧': '7',\n\t '٨': '8',\n\t '٩': '9',\n\t '٠': '0',\n\t },\n\t months = [\n\t 'کانونی دووەم',\n\t 'شوبات',\n\t 'ئازار',\n\t 'نیسان',\n\t 'ئایار',\n\t 'حوزەیران',\n\t 'تەمموز',\n\t 'ئاب',\n\t 'ئەیلوول',\n\t 'تشرینی یەكەم',\n\t 'تشرینی دووەم',\n\t 'كانونی یەکەم',\n\t ];\n\t\n\t var ku = moment.defineLocale('ku', {\n\t months: months,\n\t monthsShort: months,\n\t weekdays: 'یه‌كشه‌ممه‌_دووشه‌ممه‌_سێشه‌ممه‌_چوارشه‌ممه‌_پێنجشه‌ممه‌_هه‌ینی_شه‌ممه‌'.split(\n\t '_'\n\t ),\n\t weekdaysShort: 'یه‌كشه‌م_دووشه‌م_سێشه‌م_چوارشه‌م_پێنجشه‌م_هه‌ینی_شه‌ممه‌'.split(\n\t '_'\n\t ),\n\t weekdaysMin: 'ی_د_س_چ_پ_ه_ش'.split('_'),\n\t weekdaysParseExact: true,\n\t longDateFormat: {\n\t LT: 'HH:mm',\n\t LTS: 'HH:mm:ss',\n\t L: 'DD/MM/YYYY',\n\t LL: 'D MMMM YYYY',\n\t LLL: 'D MMMM YYYY HH:mm',\n\t LLLL: 'dddd, D MMMM YYYY HH:mm',\n\t },\n\t meridiemParse: /ئێواره‌|به‌یانی/,\n\t isPM: function (input) {\n\t return /ئێواره‌/.test(input);\n\t },\n\t meridiem: function (hour, minute, isLower) {\n\t if (hour < 12) {\n\t return 'به‌یانی';\n\t } else {\n\t return 'ئێواره‌';\n\t }\n\t },\n\t calendar: {\n\t sameDay: '[ئه‌مرۆ كاتژمێر] LT',\n\t nextDay: '[به‌یانی كاتژمێر] LT',\n\t nextWeek: 'dddd [كاتژمێر] LT',\n\t lastDay: '[دوێنێ كاتژمێر] LT',\n\t lastWeek: 'dddd [كاتژمێر] LT',\n\t sameElse: 'L',\n\t },\n\t relativeTime: {\n\t future: 'له‌ %s',\n\t past: '%s',\n\t s: 'چه‌ند چركه‌یه‌ك',\n\t ss: 'چركه‌ %d',\n\t m: 'یه‌ك خوله‌ك',\n\t mm: '%d خوله‌ك',\n\t h: 'یه‌ك كاتژمێر',\n\t hh: '%d كاتژمێر',\n\t d: 'یه‌ك ڕۆژ',\n\t dd: '%d ڕۆژ',\n\t M: 'یه‌ك مانگ',\n\t MM: '%d مانگ',\n\t y: 'یه‌ك ساڵ',\n\t yy: '%d ساڵ',\n\t },\n\t preparse: function (string) {\n\t return string\n\t .replace(/[١٢٣٤٥٦٧٨٩٠]/g, function (match) {\n\t return numberMap[match];\n\t })\n\t .replace(/،/g, ',');\n\t },\n\t postformat: function (string) {\n\t return string\n\t .replace(/\\d/g, function (match) {\n\t return symbolMap[match];\n\t })\n\t .replace(/,/g, '،');\n\t },\n\t week: {\n\t dow: 6, // Saturday is the first day of the week.\n\t doy: 12, // The week that contains Jan 12th is the first week of the year.\n\t },\n\t });\n\t\n\t return ku;\n\t\n\t})));\n\n\n/***/ }),\n\n/***/ 378:\n/***/ (function(module, exports, __webpack_require__) {\n\n\t//! moment.js locale configuration\n\t//! locale : Kyrgyz [ky]\n\t//! author : Chyngyz Arystan uulu : https://github.com/chyngyz\n\t\n\t;(function (global, factory) {\n\t true ? factory(__webpack_require__(1)) :\n\t typeof define === 'function' && define.amd ? define(['../moment'], factory) :\n\t factory(global.moment)\n\t}(this, (function (moment) { 'use strict';\n\t\n\t //! moment.js locale configuration\n\t\n\t var suffixes = {\n\t 0: '-чү',\n\t 1: '-чи',\n\t 2: '-чи',\n\t 3: '-чү',\n\t 4: '-чү',\n\t 5: '-чи',\n\t 6: '-чы',\n\t 7: '-чи',\n\t 8: '-чи',\n\t 9: '-чу',\n\t 10: '-чу',\n\t 20: '-чы',\n\t 30: '-чу',\n\t 40: '-чы',\n\t 50: '-чү',\n\t 60: '-чы',\n\t 70: '-чи',\n\t 80: '-чи',\n\t 90: '-чу',\n\t 100: '-чү',\n\t };\n\t\n\t var ky = moment.defineLocale('ky', {\n\t months: 'январь_февраль_март_апрель_май_июнь_июль_август_сентябрь_октябрь_ноябрь_декабрь'.split(\n\t '_'\n\t ),\n\t monthsShort: 'янв_фев_март_апр_май_июнь_июль_авг_сен_окт_ноя_дек'.split(\n\t '_'\n\t ),\n\t weekdays: 'Жекшемби_Дүйшөмбү_Шейшемби_Шаршемби_Бейшемби_Жума_Ишемби'.split(\n\t '_'\n\t ),\n\t weekdaysShort: 'Жек_Дүй_Шей_Шар_Бей_Жум_Ише'.split('_'),\n\t weekdaysMin: 'Жк_Дй_Шй_Шр_Бй_Жм_Иш'.split('_'),\n\t longDateFormat: {\n\t LT: 'HH:mm',\n\t LTS: 'HH:mm:ss',\n\t L: 'DD.MM.YYYY',\n\t LL: 'D MMMM YYYY',\n\t LLL: 'D MMMM YYYY HH:mm',\n\t LLLL: 'dddd, D MMMM YYYY HH:mm',\n\t },\n\t calendar: {\n\t sameDay: '[Бүгүн саат] LT',\n\t nextDay: '[Эртең саат] LT',\n\t nextWeek: 'dddd [саат] LT',\n\t lastDay: '[Кечээ саат] LT',\n\t lastWeek: '[Өткөн аптанын] dddd [күнү] [саат] LT',\n\t sameElse: 'L',\n\t },\n\t relativeTime: {\n\t future: '%s ичинде',\n\t past: '%s мурун',\n\t s: 'бирнече секунд',\n\t ss: '%d секунд',\n\t m: 'бир мүнөт',\n\t mm: '%d мүнөт',\n\t h: 'бир саат',\n\t hh: '%d саат',\n\t d: 'бир күн',\n\t dd: '%d күн',\n\t M: 'бир ай',\n\t MM: '%d ай',\n\t y: 'бир жыл',\n\t yy: '%d жыл',\n\t },\n\t dayOfMonthOrdinalParse: /\\d{1,2}-(чи|чы|чү|чу)/,\n\t ordinal: function (number) {\n\t var a = number % 10,\n\t b = number >= 100 ? 100 : null;\n\t return number + (suffixes[number] || suffixes[a] || suffixes[b]);\n\t },\n\t week: {\n\t dow: 1, // Monday is the first day of the week.\n\t doy: 7, // The week that contains Jan 7th is the first week of the year.\n\t },\n\t });\n\t\n\t return ky;\n\t\n\t})));\n\n\n/***/ }),\n\n/***/ 379:\n/***/ (function(module, exports, __webpack_require__) {\n\n\t//! moment.js locale configuration\n\t//! locale : Luxembourgish [lb]\n\t//! author : mweimerskirch : https://github.com/mweimerskirch\n\t//! author : David Raison : https://github.com/kwisatz\n\t\n\t;(function (global, factory) {\n\t true ? factory(__webpack_require__(1)) :\n\t typeof define === 'function' && define.amd ? define(['../moment'], factory) :\n\t factory(global.moment)\n\t}(this, (function (moment) { 'use strict';\n\t\n\t //! moment.js locale configuration\n\t\n\t function processRelativeTime(number, withoutSuffix, key, isFuture) {\n\t var format = {\n\t m: ['eng Minutt', 'enger Minutt'],\n\t h: ['eng Stonn', 'enger Stonn'],\n\t d: ['een Dag', 'engem Dag'],\n\t M: ['ee Mount', 'engem Mount'],\n\t y: ['ee Joer', 'engem Joer'],\n\t };\n\t return withoutSuffix ? format[key][0] : format[key][1];\n\t }\n\t function processFutureTime(string) {\n\t var number = string.substr(0, string.indexOf(' '));\n\t if (eifelerRegelAppliesToNumber(number)) {\n\t return 'a ' + string;\n\t }\n\t return 'an ' + string;\n\t }\n\t function processPastTime(string) {\n\t var number = string.substr(0, string.indexOf(' '));\n\t if (eifelerRegelAppliesToNumber(number)) {\n\t return 'viru ' + string;\n\t }\n\t return 'virun ' + string;\n\t }\n\t /**\n\t * Returns true if the word before the given number loses the '-n' ending.\n\t * e.g. 'an 10 Deeg' but 'a 5 Deeg'\n\t *\n\t * @param number {integer}\n\t * @returns {boolean}\n\t */\n\t function eifelerRegelAppliesToNumber(number) {\n\t number = parseInt(number, 10);\n\t if (isNaN(number)) {\n\t return false;\n\t }\n\t if (number < 0) {\n\t // Negative Number --> always true\n\t return true;\n\t } else if (number < 10) {\n\t // Only 1 digit\n\t if (4 <= number && number <= 7) {\n\t return true;\n\t }\n\t return false;\n\t } else if (number < 100) {\n\t // 2 digits\n\t var lastDigit = number % 10,\n\t firstDigit = number / 10;\n\t if (lastDigit === 0) {\n\t return eifelerRegelAppliesToNumber(firstDigit);\n\t }\n\t return eifelerRegelAppliesToNumber(lastDigit);\n\t } else if (number < 10000) {\n\t // 3 or 4 digits --> recursively check first digit\n\t while (number >= 10) {\n\t number = number / 10;\n\t }\n\t return eifelerRegelAppliesToNumber(number);\n\t } else {\n\t // Anything larger than 4 digits: recursively check first n-3 digits\n\t number = number / 1000;\n\t return eifelerRegelAppliesToNumber(number);\n\t }\n\t }\n\t\n\t var lb = moment.defineLocale('lb', {\n\t months: 'Januar_Februar_Mäerz_Abrëll_Mee_Juni_Juli_August_September_Oktober_November_Dezember'.split(\n\t '_'\n\t ),\n\t monthsShort: 'Jan._Febr._Mrz._Abr._Mee_Jun._Jul._Aug._Sept._Okt._Nov._Dez.'.split(\n\t '_'\n\t ),\n\t monthsParseExact: true,\n\t weekdays: 'Sonndeg_Méindeg_Dënschdeg_Mëttwoch_Donneschdeg_Freideg_Samschdeg'.split(\n\t '_'\n\t ),\n\t weekdaysShort: 'So._Mé._Dë._Më._Do._Fr._Sa.'.split('_'),\n\t weekdaysMin: 'So_Mé_Dë_Më_Do_Fr_Sa'.split('_'),\n\t weekdaysParseExact: true,\n\t longDateFormat: {\n\t LT: 'H:mm [Auer]',\n\t LTS: 'H:mm:ss [Auer]',\n\t L: 'DD.MM.YYYY',\n\t LL: 'D. MMMM YYYY',\n\t LLL: 'D. MMMM YYYY H:mm [Auer]',\n\t LLLL: 'dddd, D. MMMM YYYY H:mm [Auer]',\n\t },\n\t calendar: {\n\t sameDay: '[Haut um] LT',\n\t sameElse: 'L',\n\t nextDay: '[Muer um] LT',\n\t nextWeek: 'dddd [um] LT',\n\t lastDay: '[Gëschter um] LT',\n\t lastWeek: function () {\n\t // Different date string for 'Dënschdeg' (Tuesday) and 'Donneschdeg' (Thursday) due to phonological rule\n\t switch (this.day()) {\n\t case 2:\n\t case 4:\n\t return '[Leschten] dddd [um] LT';\n\t default:\n\t return '[Leschte] dddd [um] LT';\n\t }\n\t },\n\t },\n\t relativeTime: {\n\t future: processFutureTime,\n\t past: processPastTime,\n\t s: 'e puer Sekonnen',\n\t ss: '%d Sekonnen',\n\t m: processRelativeTime,\n\t mm: '%d Minutten',\n\t h: processRelativeTime,\n\t hh: '%d Stonnen',\n\t d: processRelativeTime,\n\t dd: '%d Deeg',\n\t M: processRelativeTime,\n\t MM: '%d Méint',\n\t y: processRelativeTime,\n\t yy: '%d Joer',\n\t },\n\t dayOfMonthOrdinalParse: /\\d{1,2}\\./,\n\t ordinal: '%d.',\n\t week: {\n\t dow: 1, // Monday is the first day of the week.\n\t doy: 4, // The week that contains Jan 4th is the first week of the year.\n\t },\n\t });\n\t\n\t return lb;\n\t\n\t})));\n\n\n/***/ }),\n\n/***/ 380:\n/***/ (function(module, exports, __webpack_require__) {\n\n\t//! moment.js locale configuration\n\t//! locale : Lao [lo]\n\t//! author : Ryan Hart : https://github.com/ryanhart2\n\t\n\t;(function (global, factory) {\n\t true ? factory(__webpack_require__(1)) :\n\t typeof define === 'function' && define.amd ? define(['../moment'], factory) :\n\t factory(global.moment)\n\t}(this, (function (moment) { 'use strict';\n\t\n\t //! moment.js locale configuration\n\t\n\t var lo = moment.defineLocale('lo', {\n\t months: 'ມັງກອນ_ກຸມພາ_ມີນາ_ເມສາ_ພຶດສະພາ_ມິຖຸນາ_ກໍລະກົດ_ສິງຫາ_ກັນຍາ_ຕຸລາ_ພະຈິກ_ທັນວາ'.split(\n\t '_'\n\t ),\n\t monthsShort: 'ມັງກອນ_ກຸມພາ_ມີນາ_ເມສາ_ພຶດສະພາ_ມິຖຸນາ_ກໍລະກົດ_ສິງຫາ_ກັນຍາ_ຕຸລາ_ພະຈິກ_ທັນວາ'.split(\n\t '_'\n\t ),\n\t weekdays: 'ອາທິດ_ຈັນ_ອັງຄານ_ພຸດ_ພະຫັດ_ສຸກ_ເສົາ'.split('_'),\n\t weekdaysShort: 'ທິດ_ຈັນ_ອັງຄານ_ພຸດ_ພະຫັດ_ສຸກ_ເສົາ'.split('_'),\n\t weekdaysMin: 'ທ_ຈ_ອຄ_ພ_ພຫ_ສກ_ສ'.split('_'),\n\t weekdaysParseExact: true,\n\t longDateFormat: {\n\t LT: 'HH:mm',\n\t LTS: 'HH:mm:ss',\n\t L: 'DD/MM/YYYY',\n\t LL: 'D MMMM YYYY',\n\t LLL: 'D MMMM YYYY HH:mm',\n\t LLLL: 'ວັນdddd D MMMM YYYY HH:mm',\n\t },\n\t meridiemParse: /ຕອນເຊົ້າ|ຕອນແລງ/,\n\t isPM: function (input) {\n\t return input === 'ຕອນແລງ';\n\t },\n\t meridiem: function (hour, minute, isLower) {\n\t if (hour < 12) {\n\t return 'ຕອນເຊົ້າ';\n\t } else {\n\t return 'ຕອນແລງ';\n\t }\n\t },\n\t calendar: {\n\t sameDay: '[ມື້ນີ້ເວລາ] LT',\n\t nextDay: '[ມື້ອື່ນເວລາ] LT',\n\t nextWeek: '[ວັນ]dddd[ໜ້າເວລາ] LT',\n\t lastDay: '[ມື້ວານນີ້ເວລາ] LT',\n\t lastWeek: '[ວັນ]dddd[ແລ້ວນີ້ເວລາ] LT',\n\t sameElse: 'L',\n\t },\n\t relativeTime: {\n\t future: 'ອີກ %s',\n\t past: '%sຜ່ານມາ',\n\t s: 'ບໍ່ເທົ່າໃດວິນາທີ',\n\t ss: '%d ວິນາທີ',\n\t m: '1 ນາທີ',\n\t mm: '%d ນາທີ',\n\t h: '1 ຊົ່ວໂມງ',\n\t hh: '%d ຊົ່ວໂມງ',\n\t d: '1 ມື້',\n\t dd: '%d ມື້',\n\t M: '1 ເດືອນ',\n\t MM: '%d ເດືອນ',\n\t y: '1 ປີ',\n\t yy: '%d ປີ',\n\t },\n\t dayOfMonthOrdinalParse: /(ທີ່)\\d{1,2}/,\n\t ordinal: function (number) {\n\t return 'ທີ່' + number;\n\t },\n\t });\n\t\n\t return lo;\n\t\n\t})));\n\n\n/***/ }),\n\n/***/ 381:\n/***/ (function(module, exports, __webpack_require__) {\n\n\t//! moment.js locale configuration\n\t//! locale : Lithuanian [lt]\n\t//! author : Mindaugas Mozūras : https://github.com/mmozuras\n\t\n\t;(function (global, factory) {\n\t true ? factory(__webpack_require__(1)) :\n\t typeof define === 'function' && define.amd ? define(['../moment'], factory) :\n\t factory(global.moment)\n\t}(this, (function (moment) { 'use strict';\n\t\n\t //! moment.js locale configuration\n\t\n\t var units = {\n\t ss: 'sekundė_sekundžių_sekundes',\n\t m: 'minutė_minutės_minutę',\n\t mm: 'minutės_minučių_minutes',\n\t h: 'valanda_valandos_valandą',\n\t hh: 'valandos_valandų_valandas',\n\t d: 'diena_dienos_dieną',\n\t dd: 'dienos_dienų_dienas',\n\t M: 'mėnuo_mėnesio_mėnesį',\n\t MM: 'mėnesiai_mėnesių_mėnesius',\n\t y: 'metai_metų_metus',\n\t yy: 'metai_metų_metus',\n\t };\n\t function translateSeconds(number, withoutSuffix, key, isFuture) {\n\t if (withoutSuffix) {\n\t return 'kelios sekundės';\n\t } else {\n\t return isFuture ? 'kelių sekundžių' : 'kelias sekundes';\n\t }\n\t }\n\t function translateSingular(number, withoutSuffix, key, isFuture) {\n\t return withoutSuffix\n\t ? forms(key)[0]\n\t : isFuture\n\t ? forms(key)[1]\n\t : forms(key)[2];\n\t }\n\t function special(number) {\n\t return number % 10 === 0 || (number > 10 && number < 20);\n\t }\n\t function forms(key) {\n\t return units[key].split('_');\n\t }\n\t function translate(number, withoutSuffix, key, isFuture) {\n\t var result = number + ' ';\n\t if (number === 1) {\n\t return (\n\t result + translateSingular(number, withoutSuffix, key[0], isFuture)\n\t );\n\t } else if (withoutSuffix) {\n\t return result + (special(number) ? forms(key)[1] : forms(key)[0]);\n\t } else {\n\t if (isFuture) {\n\t return result + forms(key)[1];\n\t } else {\n\t return result + (special(number) ? forms(key)[1] : forms(key)[2]);\n\t }\n\t }\n\t }\n\t var lt = moment.defineLocale('lt', {\n\t months: {\n\t format: 'sausio_vasario_kovo_balandžio_gegužės_birželio_liepos_rugpjūčio_rugsėjo_spalio_lapkričio_gruodžio'.split(\n\t '_'\n\t ),\n\t standalone: 'sausis_vasaris_kovas_balandis_gegužė_birželis_liepa_rugpjūtis_rugsėjis_spalis_lapkritis_gruodis'.split(\n\t '_'\n\t ),\n\t isFormat: /D[oD]?(\\[[^\\[\\]]*\\]|\\s)+MMMM?|MMMM?(\\[[^\\[\\]]*\\]|\\s)+D[oD]?/,\n\t },\n\t monthsShort: 'sau_vas_kov_bal_geg_bir_lie_rgp_rgs_spa_lap_grd'.split('_'),\n\t weekdays: {\n\t format: 'sekmadienį_pirmadienį_antradienį_trečiadienį_ketvirtadienį_penktadienį_šeštadienį'.split(\n\t '_'\n\t ),\n\t standalone: 'sekmadienis_pirmadienis_antradienis_trečiadienis_ketvirtadienis_penktadienis_šeštadienis'.split(\n\t '_'\n\t ),\n\t isFormat: /dddd HH:mm/,\n\t },\n\t weekdaysShort: 'Sek_Pir_Ant_Tre_Ket_Pen_Šeš'.split('_'),\n\t weekdaysMin: 'S_P_A_T_K_Pn_Š'.split('_'),\n\t weekdaysParseExact: true,\n\t longDateFormat: {\n\t LT: 'HH:mm',\n\t LTS: 'HH:mm:ss',\n\t L: 'YYYY-MM-DD',\n\t LL: 'YYYY [m.] MMMM D [d.]',\n\t LLL: 'YYYY [m.] MMMM D [d.], HH:mm [val.]',\n\t LLLL: 'YYYY [m.] MMMM D [d.], dddd, HH:mm [val.]',\n\t l: 'YYYY-MM-DD',\n\t ll: 'YYYY [m.] MMMM D [d.]',\n\t lll: 'YYYY [m.] MMMM D [d.], HH:mm [val.]',\n\t llll: 'YYYY [m.] MMMM D [d.], ddd, HH:mm [val.]',\n\t },\n\t calendar: {\n\t sameDay: '[Šiandien] LT',\n\t nextDay: '[Rytoj] LT',\n\t nextWeek: 'dddd LT',\n\t lastDay: '[Vakar] LT',\n\t lastWeek: '[Praėjusį] dddd LT',\n\t sameElse: 'L',\n\t },\n\t relativeTime: {\n\t future: 'po %s',\n\t past: 'prieš %s',\n\t s: translateSeconds,\n\t ss: translate,\n\t m: translateSingular,\n\t mm: translate,\n\t h: translateSingular,\n\t hh: translate,\n\t d: translateSingular,\n\t dd: translate,\n\t M: translateSingular,\n\t MM: translate,\n\t y: translateSingular,\n\t yy: translate,\n\t },\n\t dayOfMonthOrdinalParse: /\\d{1,2}-oji/,\n\t ordinal: function (number) {\n\t return number + '-oji';\n\t },\n\t week: {\n\t dow: 1, // Monday is the first day of the week.\n\t doy: 4, // The week that contains Jan 4th is the first week of the year.\n\t },\n\t });\n\t\n\t return lt;\n\t\n\t})));\n\n\n/***/ }),\n\n/***/ 382:\n/***/ (function(module, exports, __webpack_require__) {\n\n\t//! moment.js locale configuration\n\t//! locale : Latvian [lv]\n\t//! author : Kristaps Karlsons : https://github.com/skakri\n\t//! author : Jānis Elmeris : https://github.com/JanisE\n\t\n\t;(function (global, factory) {\n\t true ? factory(__webpack_require__(1)) :\n\t typeof define === 'function' && define.amd ? define(['../moment'], factory) :\n\t factory(global.moment)\n\t}(this, (function (moment) { 'use strict';\n\t\n\t //! moment.js locale configuration\n\t\n\t var units = {\n\t ss: 'sekundes_sekundēm_sekunde_sekundes'.split('_'),\n\t m: 'minūtes_minūtēm_minūte_minūtes'.split('_'),\n\t mm: 'minūtes_minūtēm_minūte_minūtes'.split('_'),\n\t h: 'stundas_stundām_stunda_stundas'.split('_'),\n\t hh: 'stundas_stundām_stunda_stundas'.split('_'),\n\t d: 'dienas_dienām_diena_dienas'.split('_'),\n\t dd: 'dienas_dienām_diena_dienas'.split('_'),\n\t M: 'mēneša_mēnešiem_mēnesis_mēneši'.split('_'),\n\t MM: 'mēneša_mēnešiem_mēnesis_mēneši'.split('_'),\n\t y: 'gada_gadiem_gads_gadi'.split('_'),\n\t yy: 'gada_gadiem_gads_gadi'.split('_'),\n\t };\n\t /**\n\t * @param withoutSuffix boolean true = a length of time; false = before/after a period of time.\n\t */\n\t function format(forms, number, withoutSuffix) {\n\t if (withoutSuffix) {\n\t // E.g. \"21 minūte\", \"3 minūtes\".\n\t return number % 10 === 1 && number % 100 !== 11 ? forms[2] : forms[3];\n\t } else {\n\t // E.g. \"21 minūtes\" as in \"pēc 21 minūtes\".\n\t // E.g. \"3 minūtēm\" as in \"pēc 3 minūtēm\".\n\t return number % 10 === 1 && number % 100 !== 11 ? forms[0] : forms[1];\n\t }\n\t }\n\t function relativeTimeWithPlural(number, withoutSuffix, key) {\n\t return number + ' ' + format(units[key], number, withoutSuffix);\n\t }\n\t function relativeTimeWithSingular(number, withoutSuffix, key) {\n\t return format(units[key], number, withoutSuffix);\n\t }\n\t function relativeSeconds(number, withoutSuffix) {\n\t return withoutSuffix ? 'dažas sekundes' : 'dažām sekundēm';\n\t }\n\t\n\t var lv = moment.defineLocale('lv', {\n\t months: 'janvāris_februāris_marts_aprīlis_maijs_jūnijs_jūlijs_augusts_septembris_oktobris_novembris_decembris'.split(\n\t '_'\n\t ),\n\t monthsShort: 'jan_feb_mar_apr_mai_jūn_jūl_aug_sep_okt_nov_dec'.split('_'),\n\t weekdays: 'svētdiena_pirmdiena_otrdiena_trešdiena_ceturtdiena_piektdiena_sestdiena'.split(\n\t '_'\n\t ),\n\t weekdaysShort: 'Sv_P_O_T_C_Pk_S'.split('_'),\n\t weekdaysMin: 'Sv_P_O_T_C_Pk_S'.split('_'),\n\t weekdaysParseExact: true,\n\t longDateFormat: {\n\t LT: 'HH:mm',\n\t LTS: 'HH:mm:ss',\n\t L: 'DD.MM.YYYY.',\n\t LL: 'YYYY. [gada] D. MMMM',\n\t LLL: 'YYYY. [gada] D. MMMM, HH:mm',\n\t LLLL: 'YYYY. [gada] D. MMMM, dddd, HH:mm',\n\t },\n\t calendar: {\n\t sameDay: '[Šodien pulksten] LT',\n\t nextDay: '[Rīt pulksten] LT',\n\t nextWeek: 'dddd [pulksten] LT',\n\t lastDay: '[Vakar pulksten] LT',\n\t lastWeek: '[Pagājušā] dddd [pulksten] LT',\n\t sameElse: 'L',\n\t },\n\t relativeTime: {\n\t future: 'pēc %s',\n\t past: 'pirms %s',\n\t s: relativeSeconds,\n\t ss: relativeTimeWithPlural,\n\t m: relativeTimeWithSingular,\n\t mm: relativeTimeWithPlural,\n\t h: relativeTimeWithSingular,\n\t hh: relativeTimeWithPlural,\n\t d: relativeTimeWithSingular,\n\t dd: relativeTimeWithPlural,\n\t M: relativeTimeWithSingular,\n\t MM: relativeTimeWithPlural,\n\t y: relativeTimeWithSingular,\n\t yy: relativeTimeWithPlural,\n\t },\n\t dayOfMonthOrdinalParse: /\\d{1,2}\\./,\n\t ordinal: '%d.',\n\t week: {\n\t dow: 1, // Monday is the first day of the week.\n\t doy: 4, // The week that contains Jan 4th is the first week of the year.\n\t },\n\t });\n\t\n\t return lv;\n\t\n\t})));\n\n\n/***/ }),\n\n/***/ 383:\n/***/ (function(module, exports, __webpack_require__) {\n\n\t//! moment.js locale configuration\n\t//! locale : Montenegrin [me]\n\t//! author : Miodrag Nikač : https://github.com/miodragnikac\n\t\n\t;(function (global, factory) {\n\t true ? factory(__webpack_require__(1)) :\n\t typeof define === 'function' && define.amd ? define(['../moment'], factory) :\n\t factory(global.moment)\n\t}(this, (function (moment) { 'use strict';\n\t\n\t //! moment.js locale configuration\n\t\n\t var translator = {\n\t words: {\n\t //Different grammatical cases\n\t ss: ['sekund', 'sekunda', 'sekundi'],\n\t m: ['jedan minut', 'jednog minuta'],\n\t mm: ['minut', 'minuta', 'minuta'],\n\t h: ['jedan sat', 'jednog sata'],\n\t hh: ['sat', 'sata', 'sati'],\n\t dd: ['dan', 'dana', 'dana'],\n\t MM: ['mjesec', 'mjeseca', 'mjeseci'],\n\t yy: ['godina', 'godine', 'godina'],\n\t },\n\t correctGrammaticalCase: function (number, wordKey) {\n\t return number === 1\n\t ? wordKey[0]\n\t : number >= 2 && number <= 4\n\t ? wordKey[1]\n\t : wordKey[2];\n\t },\n\t translate: function (number, withoutSuffix, key) {\n\t var wordKey = translator.words[key];\n\t if (key.length === 1) {\n\t return withoutSuffix ? wordKey[0] : wordKey[1];\n\t } else {\n\t return (\n\t number +\n\t ' ' +\n\t translator.correctGrammaticalCase(number, wordKey)\n\t );\n\t }\n\t },\n\t };\n\t\n\t var me = moment.defineLocale('me', {\n\t months: 'januar_februar_mart_april_maj_jun_jul_avgust_septembar_oktobar_novembar_decembar'.split(\n\t '_'\n\t ),\n\t monthsShort: 'jan._feb._mar._apr._maj_jun_jul_avg._sep._okt._nov._dec.'.split(\n\t '_'\n\t ),\n\t monthsParseExact: true,\n\t weekdays: 'nedjelja_ponedjeljak_utorak_srijeda_četvrtak_petak_subota'.split(\n\t '_'\n\t ),\n\t weekdaysShort: 'ned._pon._uto._sri._čet._pet._sub.'.split('_'),\n\t weekdaysMin: 'ne_po_ut_sr_če_pe_su'.split('_'),\n\t weekdaysParseExact: true,\n\t longDateFormat: {\n\t LT: 'H:mm',\n\t LTS: 'H:mm:ss',\n\t L: 'DD.MM.YYYY',\n\t LL: 'D. MMMM YYYY',\n\t LLL: 'D. MMMM YYYY H:mm',\n\t LLLL: 'dddd, D. MMMM YYYY H:mm',\n\t },\n\t calendar: {\n\t sameDay: '[danas u] LT',\n\t nextDay: '[sjutra u] LT',\n\t\n\t nextWeek: function () {\n\t switch (this.day()) {\n\t case 0:\n\t return '[u] [nedjelju] [u] LT';\n\t case 3:\n\t return '[u] [srijedu] [u] LT';\n\t case 6:\n\t return '[u] [subotu] [u] LT';\n\t case 1:\n\t case 2:\n\t case 4:\n\t case 5:\n\t return '[u] dddd [u] LT';\n\t }\n\t },\n\t lastDay: '[juče u] LT',\n\t lastWeek: function () {\n\t var lastWeekDays = [\n\t '[prošle] [nedjelje] [u] LT',\n\t '[prošlog] [ponedjeljka] [u] LT',\n\t '[prošlog] [utorka] [u] LT',\n\t '[prošle] [srijede] [u] LT',\n\t '[prošlog] [četvrtka] [u] LT',\n\t '[prošlog] [petka] [u] LT',\n\t '[prošle] [subote] [u] LT',\n\t ];\n\t return lastWeekDays[this.day()];\n\t },\n\t sameElse: 'L',\n\t },\n\t relativeTime: {\n\t future: 'za %s',\n\t past: 'prije %s',\n\t s: 'nekoliko sekundi',\n\t ss: translator.translate,\n\t m: translator.translate,\n\t mm: translator.translate,\n\t h: translator.translate,\n\t hh: translator.translate,\n\t d: 'dan',\n\t dd: translator.translate,\n\t M: 'mjesec',\n\t MM: translator.translate,\n\t y: 'godinu',\n\t yy: translator.translate,\n\t },\n\t dayOfMonthOrdinalParse: /\\d{1,2}\\./,\n\t ordinal: '%d.',\n\t week: {\n\t dow: 1, // Monday is the first day of the week.\n\t doy: 7, // The week that contains Jan 7th is the first week of the year.\n\t },\n\t });\n\t\n\t return me;\n\t\n\t})));\n\n\n/***/ }),\n\n/***/ 384:\n/***/ (function(module, exports, __webpack_require__) {\n\n\t//! moment.js locale configuration\n\t//! locale : Maori [mi]\n\t//! author : John Corrigan : https://github.com/johnideal\n\t\n\t;(function (global, factory) {\n\t true ? factory(__webpack_require__(1)) :\n\t typeof define === 'function' && define.amd ? define(['../moment'], factory) :\n\t factory(global.moment)\n\t}(this, (function (moment) { 'use strict';\n\t\n\t //! moment.js locale configuration\n\t\n\t var mi = moment.defineLocale('mi', {\n\t 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\t '_'\n\t ),\n\t monthsShort: 'Kohi_Hui_Pou_Pae_Hara_Pipi_Hōngoi_Here_Mahu_Whi-nu_Whi-ra_Haki'.split(\n\t '_'\n\t ),\n\t monthsRegex: /(?:['a-z\\u0101\\u014D\\u016B]+\\-?){1,3}/i,\n\t monthsStrictRegex: /(?:['a-z\\u0101\\u014D\\u016B]+\\-?){1,3}/i,\n\t monthsShortRegex: /(?:['a-z\\u0101\\u014D\\u016B]+\\-?){1,3}/i,\n\t monthsShortStrictRegex: /(?:['a-z\\u0101\\u014D\\u016B]+\\-?){1,2}/i,\n\t weekdays: 'Rātapu_Mane_Tūrei_Wenerei_Tāite_Paraire_Hātarei'.split('_'),\n\t weekdaysShort: 'Ta_Ma_Tū_We_Tāi_Pa_Hā'.split('_'),\n\t weekdaysMin: 'Ta_Ma_Tū_We_Tāi_Pa_Hā'.split('_'),\n\t longDateFormat: {\n\t LT: 'HH:mm',\n\t LTS: 'HH:mm:ss',\n\t L: 'DD/MM/YYYY',\n\t LL: 'D MMMM YYYY',\n\t LLL: 'D MMMM YYYY [i] HH:mm',\n\t LLLL: 'dddd, D MMMM YYYY [i] HH:mm',\n\t },\n\t calendar: {\n\t sameDay: '[i teie mahana, i] LT',\n\t nextDay: '[apopo i] LT',\n\t nextWeek: 'dddd [i] LT',\n\t lastDay: '[inanahi i] LT',\n\t lastWeek: 'dddd [whakamutunga i] LT',\n\t sameElse: 'L',\n\t },\n\t relativeTime: {\n\t future: 'i roto i %s',\n\t past: '%s i mua',\n\t s: 'te hēkona ruarua',\n\t ss: '%d hēkona',\n\t m: 'he meneti',\n\t mm: '%d meneti',\n\t h: 'te haora',\n\t hh: '%d haora',\n\t d: 'he ra',\n\t dd: '%d ra',\n\t M: 'he marama',\n\t MM: '%d marama',\n\t y: 'he tau',\n\t yy: '%d tau',\n\t },\n\t dayOfMonthOrdinalParse: /\\d{1,2}º/,\n\t ordinal: '%dº',\n\t week: {\n\t dow: 1, // Monday is the first day of the week.\n\t doy: 4, // The week that contains Jan 4th is the first week of the year.\n\t },\n\t });\n\t\n\t return mi;\n\t\n\t})));\n\n\n/***/ }),\n\n/***/ 385:\n/***/ (function(module, exports, __webpack_require__) {\n\n\t//! moment.js locale configuration\n\t//! locale : Macedonian [mk]\n\t//! author : Borislav Mickov : https://github.com/B0k0\n\t//! author : Sashko Todorov : https://github.com/bkyceh\n\t\n\t;(function (global, factory) {\n\t true ? factory(__webpack_require__(1)) :\n\t typeof define === 'function' && define.amd ? define(['../moment'], factory) :\n\t factory(global.moment)\n\t}(this, (function (moment) { 'use strict';\n\t\n\t //! moment.js locale configuration\n\t\n\t var mk = moment.defineLocale('mk', {\n\t months: 'јануари_февруари_март_април_мај_јуни_јули_август_септември_октомври_ноември_декември'.split(\n\t '_'\n\t ),\n\t monthsShort: 'јан_фев_мар_апр_мај_јун_јул_авг_сеп_окт_ное_дек'.split('_'),\n\t weekdays: 'недела_понеделник_вторник_среда_четврток_петок_сабота'.split(\n\t '_'\n\t ),\n\t weekdaysShort: 'нед_пон_вто_сре_чет_пет_саб'.split('_'),\n\t weekdaysMin: 'нe_пo_вт_ср_че_пе_сa'.split('_'),\n\t longDateFormat: {\n\t LT: 'H:mm',\n\t LTS: 'H:mm:ss',\n\t L: 'D.MM.YYYY',\n\t LL: 'D MMMM YYYY',\n\t LLL: 'D MMMM YYYY H:mm',\n\t LLLL: 'dddd, D MMMM YYYY H:mm',\n\t },\n\t calendar: {\n\t sameDay: '[Денес во] LT',\n\t nextDay: '[Утре во] LT',\n\t nextWeek: '[Во] dddd [во] LT',\n\t lastDay: '[Вчера во] LT',\n\t lastWeek: function () {\n\t switch (this.day()) {\n\t case 0:\n\t case 3:\n\t case 6:\n\t return '[Изминатата] dddd [во] LT';\n\t case 1:\n\t case 2:\n\t case 4:\n\t case 5:\n\t return '[Изминатиот] dddd [во] LT';\n\t }\n\t },\n\t sameElse: 'L',\n\t },\n\t relativeTime: {\n\t future: 'за %s',\n\t past: 'пред %s',\n\t s: 'неколку секунди',\n\t ss: '%d секунди',\n\t m: 'една минута',\n\t mm: '%d минути',\n\t h: 'еден час',\n\t hh: '%d часа',\n\t d: 'еден ден',\n\t dd: '%d дена',\n\t M: 'еден месец',\n\t MM: '%d месеци',\n\t y: 'една година',\n\t yy: '%d години',\n\t },\n\t dayOfMonthOrdinalParse: /\\d{1,2}-(ев|ен|ти|ви|ри|ми)/,\n\t ordinal: function (number) {\n\t var lastDigit = number % 10,\n\t last2Digits = number % 100;\n\t if (number === 0) {\n\t return number + '-ев';\n\t } else if (last2Digits === 0) {\n\t return number + '-ен';\n\t } else if (last2Digits > 10 && last2Digits < 20) {\n\t return number + '-ти';\n\t } else if (lastDigit === 1) {\n\t return number + '-ви';\n\t } else if (lastDigit === 2) {\n\t return number + '-ри';\n\t } else if (lastDigit === 7 || lastDigit === 8) {\n\t return number + '-ми';\n\t } else {\n\t return number + '-ти';\n\t }\n\t },\n\t week: {\n\t dow: 1, // Monday is the first day of the week.\n\t doy: 7, // The week that contains Jan 7th is the first week of the year.\n\t },\n\t });\n\t\n\t return mk;\n\t\n\t})));\n\n\n/***/ }),\n\n/***/ 386:\n/***/ (function(module, exports, __webpack_require__) {\n\n\t//! moment.js locale configuration\n\t//! locale : Malayalam [ml]\n\t//! author : Floyd Pink : https://github.com/floydpink\n\t\n\t;(function (global, factory) {\n\t true ? factory(__webpack_require__(1)) :\n\t typeof define === 'function' && define.amd ? define(['../moment'], factory) :\n\t factory(global.moment)\n\t}(this, (function (moment) { 'use strict';\n\t\n\t //! moment.js locale configuration\n\t\n\t var ml = moment.defineLocale('ml', {\n\t months: 'ജനുവരി_ഫെബ്രുവരി_മാർച്ച്_ഏപ്രിൽ_മേയ്_ജൂൺ_ജൂലൈ_ഓഗസ്റ്റ്_സെപ്റ്റംബർ_ഒക്ടോബർ_നവംബർ_ഡിസംബർ'.split(\n\t '_'\n\t ),\n\t monthsShort: 'ജനു._ഫെബ്രു._മാർ._ഏപ്രി._മേയ്_ജൂൺ_ജൂലൈ._ഓഗ._സെപ്റ്റ._ഒക്ടോ._നവം._ഡിസം.'.split(\n\t '_'\n\t ),\n\t monthsParseExact: true,\n\t weekdays: 'ഞായറാഴ്ച_തിങ്കളാഴ്ച_ചൊവ്വാഴ്ച_ബുധനാഴ്ച_വ്യാഴാഴ്ച_വെള്ളിയാഴ്ച_ശനിയാഴ്ച'.split(\n\t '_'\n\t ),\n\t weekdaysShort: 'ഞായർ_തിങ്കൾ_ചൊവ്വ_ബുധൻ_വ്യാഴം_വെള്ളി_ശനി'.split('_'),\n\t weekdaysMin: 'ഞാ_തി_ചൊ_ബു_വ്യാ_വെ_ശ'.split('_'),\n\t longDateFormat: {\n\t LT: 'A h:mm -നു',\n\t LTS: 'A h:mm:ss -നു',\n\t L: 'DD/MM/YYYY',\n\t LL: 'D MMMM YYYY',\n\t LLL: 'D MMMM YYYY, A h:mm -നു',\n\t LLLL: 'dddd, D MMMM YYYY, A h:mm -നു',\n\t },\n\t calendar: {\n\t sameDay: '[ഇന്ന്] LT',\n\t nextDay: '[നാളെ] LT',\n\t nextWeek: 'dddd, LT',\n\t lastDay: '[ഇന്നലെ] LT',\n\t lastWeek: '[കഴിഞ്ഞ] dddd, LT',\n\t sameElse: 'L',\n\t },\n\t relativeTime: {\n\t future: '%s കഴിഞ്ഞ്',\n\t past: '%s മുൻപ്',\n\t s: 'അൽപ നിമിഷങ്ങൾ',\n\t ss: '%d സെക്കൻഡ്',\n\t m: 'ഒരു മിനിറ്റ്',\n\t mm: '%d മിനിറ്റ്',\n\t h: 'ഒരു മണിക്കൂർ',\n\t hh: '%d മണിക്കൂർ',\n\t d: 'ഒരു ദിവസം',\n\t dd: '%d ദിവസം',\n\t M: 'ഒരു മാസം',\n\t MM: '%d മാസം',\n\t y: 'ഒരു വർഷം',\n\t yy: '%d വർഷം',\n\t },\n\t meridiemParse: /രാത്രി|രാവിലെ|ഉച്ച കഴിഞ്ഞ്|വൈകുന്നേരം|രാത്രി/i,\n\t meridiemHour: function (hour, meridiem) {\n\t if (hour === 12) {\n\t hour = 0;\n\t }\n\t if (\n\t (meridiem === 'രാത്രി' && hour >= 4) ||\n\t meridiem === 'ഉച്ച കഴിഞ്ഞ്' ||\n\t meridiem === 'വൈകുന്നേരം'\n\t ) {\n\t return hour + 12;\n\t } else {\n\t return hour;\n\t }\n\t },\n\t meridiem: function (hour, minute, isLower) {\n\t if (hour < 4) {\n\t return 'രാത്രി';\n\t } else if (hour < 12) {\n\t return 'രാവിലെ';\n\t } else if (hour < 17) {\n\t return 'ഉച്ച കഴിഞ്ഞ്';\n\t } else if (hour < 20) {\n\t return 'വൈകുന്നേരം';\n\t } else {\n\t return 'രാത്രി';\n\t }\n\t },\n\t });\n\t\n\t return ml;\n\t\n\t})));\n\n\n/***/ }),\n\n/***/ 387:\n/***/ (function(module, exports, __webpack_require__) {\n\n\t//! moment.js locale configuration\n\t//! locale : Mongolian [mn]\n\t//! author : Javkhlantugs Nyamdorj : https://github.com/javkhaanj7\n\t\n\t;(function (global, factory) {\n\t true ? factory(__webpack_require__(1)) :\n\t typeof define === 'function' && define.amd ? define(['../moment'], factory) :\n\t factory(global.moment)\n\t}(this, (function (moment) { 'use strict';\n\t\n\t //! moment.js locale configuration\n\t\n\t function translate(number, withoutSuffix, key, isFuture) {\n\t switch (key) {\n\t case 's':\n\t return withoutSuffix ? 'хэдхэн секунд' : 'хэдхэн секундын';\n\t case 'ss':\n\t return number + (withoutSuffix ? ' секунд' : ' секундын');\n\t case 'm':\n\t case 'mm':\n\t return number + (withoutSuffix ? ' минут' : ' минутын');\n\t case 'h':\n\t case 'hh':\n\t return number + (withoutSuffix ? ' цаг' : ' цагийн');\n\t case 'd':\n\t case 'dd':\n\t return number + (withoutSuffix ? ' өдөр' : ' өдрийн');\n\t case 'M':\n\t case 'MM':\n\t return number + (withoutSuffix ? ' сар' : ' сарын');\n\t case 'y':\n\t case 'yy':\n\t return number + (withoutSuffix ? ' жил' : ' жилийн');\n\t default:\n\t return number;\n\t }\n\t }\n\t\n\t var mn = moment.defineLocale('mn', {\n\t months: 'Нэгдүгээр сар_Хоёрдугаар сар_Гуравдугаар сар_Дөрөвдүгээр сар_Тавдугаар сар_Зургадугаар сар_Долдугаар сар_Наймдугаар сар_Есдүгээр сар_Аравдугаар сар_Арван нэгдүгээр сар_Арван хоёрдугаар сар'.split(\n\t '_'\n\t ),\n\t monthsShort: '1 сар_2 сар_3 сар_4 сар_5 сар_6 сар_7 сар_8 сар_9 сар_10 сар_11 сар_12 сар'.split(\n\t '_'\n\t ),\n\t monthsParseExact: true,\n\t weekdays: 'Ням_Даваа_Мягмар_Лхагва_Пүрэв_Баасан_Бямба'.split('_'),\n\t weekdaysShort: 'Ням_Дав_Мяг_Лха_Пүр_Баа_Бям'.split('_'),\n\t weekdaysMin: 'Ня_Да_Мя_Лх_Пү_Ба_Бя'.split('_'),\n\t weekdaysParseExact: true,\n\t longDateFormat: {\n\t LT: 'HH:mm',\n\t LTS: 'HH:mm:ss',\n\t L: 'YYYY-MM-DD',\n\t LL: 'YYYY оны MMMMын D',\n\t LLL: 'YYYY оны MMMMын D HH:mm',\n\t LLLL: 'dddd, YYYY оны MMMMын D HH:mm',\n\t },\n\t meridiemParse: /ҮӨ|ҮХ/i,\n\t isPM: function (input) {\n\t return input === 'ҮХ';\n\t },\n\t meridiem: function (hour, minute, isLower) {\n\t if (hour < 12) {\n\t return 'ҮӨ';\n\t } else {\n\t return 'ҮХ';\n\t }\n\t },\n\t calendar: {\n\t sameDay: '[Өнөөдөр] LT',\n\t nextDay: '[Маргааш] LT',\n\t nextWeek: '[Ирэх] dddd LT',\n\t lastDay: '[Өчигдөр] LT',\n\t lastWeek: '[Өнгөрсөн] dddd LT',\n\t sameElse: 'L',\n\t },\n\t relativeTime: {\n\t future: '%s дараа',\n\t past: '%s өмнө',\n\t s: translate,\n\t ss: translate,\n\t m: translate,\n\t mm: translate,\n\t h: translate,\n\t hh: translate,\n\t d: translate,\n\t dd: translate,\n\t M: translate,\n\t MM: translate,\n\t y: translate,\n\t yy: translate,\n\t },\n\t dayOfMonthOrdinalParse: /\\d{1,2} өдөр/,\n\t ordinal: function (number, period) {\n\t switch (period) {\n\t case 'd':\n\t case 'D':\n\t case 'DDD':\n\t return number + ' өдөр';\n\t default:\n\t return number;\n\t }\n\t },\n\t });\n\t\n\t return mn;\n\t\n\t})));\n\n\n/***/ }),\n\n/***/ 388:\n/***/ (function(module, exports, __webpack_require__) {\n\n\t//! moment.js locale configuration\n\t//! locale : Marathi [mr]\n\t//! author : Harshad Kale : https://github.com/kalehv\n\t//! author : Vivek Athalye : https://github.com/vnathalye\n\t\n\t;(function (global, factory) {\n\t true ? factory(__webpack_require__(1)) :\n\t typeof define === 'function' && define.amd ? define(['../moment'], factory) :\n\t factory(global.moment)\n\t}(this, (function (moment) { 'use strict';\n\t\n\t //! moment.js locale configuration\n\t\n\t var symbolMap = {\n\t 1: '१',\n\t 2: '२',\n\t 3: '३',\n\t 4: '४',\n\t 5: '५',\n\t 6: '६',\n\t 7: '७',\n\t 8: '८',\n\t 9: '९',\n\t 0: '०',\n\t },\n\t numberMap = {\n\t '१': '1',\n\t '२': '2',\n\t '३': '3',\n\t '४': '4',\n\t '५': '5',\n\t '६': '6',\n\t '७': '7',\n\t '८': '8',\n\t '९': '9',\n\t '०': '0',\n\t };\n\t\n\t function relativeTimeMr(number, withoutSuffix, string, isFuture) {\n\t var output = '';\n\t if (withoutSuffix) {\n\t switch (string) {\n\t case 's':\n\t output = 'काही सेकंद';\n\t break;\n\t case 'ss':\n\t output = '%d सेकंद';\n\t break;\n\t case 'm':\n\t output = 'एक मिनिट';\n\t break;\n\t case 'mm':\n\t output = '%d मिनिटे';\n\t break;\n\t case 'h':\n\t output = 'एक तास';\n\t break;\n\t case 'hh':\n\t output = '%d तास';\n\t break;\n\t case 'd':\n\t output = 'एक दिवस';\n\t break;\n\t case 'dd':\n\t output = '%d दिवस';\n\t break;\n\t case 'M':\n\t output = 'एक महिना';\n\t break;\n\t case 'MM':\n\t output = '%d महिने';\n\t break;\n\t case 'y':\n\t output = 'एक वर्ष';\n\t break;\n\t case 'yy':\n\t output = '%d वर्षे';\n\t break;\n\t }\n\t } else {\n\t switch (string) {\n\t case 's':\n\t output = 'काही सेकंदां';\n\t break;\n\t case 'ss':\n\t output = '%d सेकंदां';\n\t break;\n\t case 'm':\n\t output = 'एका मिनिटा';\n\t break;\n\t case 'mm':\n\t output = '%d मिनिटां';\n\t break;\n\t case 'h':\n\t output = 'एका तासा';\n\t break;\n\t case 'hh':\n\t output = '%d तासां';\n\t break;\n\t case 'd':\n\t output = 'एका दिवसा';\n\t break;\n\t case 'dd':\n\t output = '%d दिवसां';\n\t break;\n\t case 'M':\n\t output = 'एका महिन्या';\n\t break;\n\t case 'MM':\n\t output = '%d महिन्यां';\n\t break;\n\t case 'y':\n\t output = 'एका वर्षा';\n\t break;\n\t case 'yy':\n\t output = '%d वर्षां';\n\t break;\n\t }\n\t }\n\t return output.replace(/%d/i, number);\n\t }\n\t\n\t var mr = moment.defineLocale('mr', {\n\t months: 'जानेवारी_फेब्रुवारी_मार्च_एप्रिल_मे_जून_जुलै_ऑगस्ट_सप्टेंबर_ऑक्टोबर_नोव्हेंबर_डिसेंबर'.split(\n\t '_'\n\t ),\n\t monthsShort: 'जाने._फेब्रु._मार्च._एप्रि._मे._जून._जुलै._ऑग._सप्टें._ऑक्टो._नोव्हें._डिसें.'.split(\n\t '_'\n\t ),\n\t monthsParseExact: true,\n\t weekdays: 'रविवार_सोमवार_मंगळवार_बुधवार_गुरूवार_शुक्रवार_शनिवार'.split('_'),\n\t weekdaysShort: 'रवि_सोम_मंगळ_बुध_गुरू_शुक्र_शनि'.split('_'),\n\t weekdaysMin: 'र_सो_मं_बु_गु_शु_श'.split('_'),\n\t longDateFormat: {\n\t LT: 'A h:mm वाजता',\n\t LTS: 'A h:mm:ss वाजता',\n\t L: 'DD/MM/YYYY',\n\t LL: 'D MMMM YYYY',\n\t LLL: 'D MMMM YYYY, A h:mm वाजता',\n\t LLLL: 'dddd, D MMMM YYYY, A h:mm वाजता',\n\t },\n\t calendar: {\n\t sameDay: '[आज] LT',\n\t nextDay: '[उद्या] LT',\n\t nextWeek: 'dddd, LT',\n\t lastDay: '[काल] LT',\n\t lastWeek: '[मागील] dddd, LT',\n\t sameElse: 'L',\n\t },\n\t relativeTime: {\n\t future: '%sमध्ये',\n\t past: '%sपूर्वी',\n\t s: relativeTimeMr,\n\t ss: relativeTimeMr,\n\t m: relativeTimeMr,\n\t mm: relativeTimeMr,\n\t h: relativeTimeMr,\n\t hh: relativeTimeMr,\n\t d: relativeTimeMr,\n\t dd: relativeTimeMr,\n\t M: relativeTimeMr,\n\t MM: relativeTimeMr,\n\t y: relativeTimeMr,\n\t yy: relativeTimeMr,\n\t },\n\t preparse: function (string) {\n\t return string.replace(/[१२३४५६७८९०]/g, function (match) {\n\t return numberMap[match];\n\t });\n\t },\n\t postformat: function (string) {\n\t return string.replace(/\\d/g, function (match) {\n\t return symbolMap[match];\n\t });\n\t },\n\t meridiemParse: /पहाटे|सकाळी|दुपारी|सायंकाळी|रात्री/,\n\t meridiemHour: function (hour, meridiem) {\n\t if (hour === 12) {\n\t hour = 0;\n\t }\n\t if (meridiem === 'पहाटे' || meridiem === 'सकाळी') {\n\t return hour;\n\t } else if (\n\t meridiem === 'दुपारी' ||\n\t meridiem === 'सायंकाळी' ||\n\t meridiem === 'रात्री'\n\t ) {\n\t return hour >= 12 ? hour : hour + 12;\n\t }\n\t },\n\t meridiem: function (hour, minute, isLower) {\n\t if (hour >= 0 && hour < 6) {\n\t return 'पहाटे';\n\t } else if (hour < 12) {\n\t return 'सकाळी';\n\t } else if (hour < 17) {\n\t return 'दुपारी';\n\t } else if (hour < 20) {\n\t return 'सायंकाळी';\n\t } else {\n\t return 'रात्री';\n\t }\n\t },\n\t week: {\n\t dow: 0, // Sunday is the first day of the week.\n\t doy: 6, // The week that contains Jan 6th is the first week of the year.\n\t },\n\t });\n\t\n\t return mr;\n\t\n\t})));\n\n\n/***/ }),\n\n/***/ 389:\n/***/ (function(module, exports, __webpack_require__) {\n\n\t//! moment.js locale configuration\n\t//! locale : Malay [ms-my]\n\t//! note : DEPRECATED, the correct one is [ms]\n\t//! author : Weldan Jamili : https://github.com/weldan\n\t\n\t;(function (global, factory) {\n\t true ? factory(__webpack_require__(1)) :\n\t typeof define === 'function' && define.amd ? define(['../moment'], factory) :\n\t factory(global.moment)\n\t}(this, (function (moment) { 'use strict';\n\t\n\t //! moment.js locale configuration\n\t\n\t var msMy = moment.defineLocale('ms-my', {\n\t months: 'Januari_Februari_Mac_April_Mei_Jun_Julai_Ogos_September_Oktober_November_Disember'.split(\n\t '_'\n\t ),\n\t monthsShort: 'Jan_Feb_Mac_Apr_Mei_Jun_Jul_Ogs_Sep_Okt_Nov_Dis'.split('_'),\n\t weekdays: 'Ahad_Isnin_Selasa_Rabu_Khamis_Jumaat_Sabtu'.split('_'),\n\t weekdaysShort: 'Ahd_Isn_Sel_Rab_Kha_Jum_Sab'.split('_'),\n\t weekdaysMin: 'Ah_Is_Sl_Rb_Km_Jm_Sb'.split('_'),\n\t longDateFormat: {\n\t LT: 'HH.mm',\n\t LTS: 'HH.mm.ss',\n\t L: 'DD/MM/YYYY',\n\t LL: 'D MMMM YYYY',\n\t LLL: 'D MMMM YYYY [pukul] HH.mm',\n\t LLLL: 'dddd, D MMMM YYYY [pukul] HH.mm',\n\t },\n\t meridiemParse: /pagi|tengahari|petang|malam/,\n\t meridiemHour: function (hour, meridiem) {\n\t if (hour === 12) {\n\t hour = 0;\n\t }\n\t if (meridiem === 'pagi') {\n\t return hour;\n\t } else if (meridiem === 'tengahari') {\n\t return hour >= 11 ? hour : hour + 12;\n\t } else if (meridiem === 'petang' || meridiem === 'malam') {\n\t return hour + 12;\n\t }\n\t },\n\t meridiem: function (hours, minutes, isLower) {\n\t if (hours < 11) {\n\t return 'pagi';\n\t } else if (hours < 15) {\n\t return 'tengahari';\n\t } else if (hours < 19) {\n\t return 'petang';\n\t } else {\n\t return 'malam';\n\t }\n\t },\n\t calendar: {\n\t sameDay: '[Hari ini pukul] LT',\n\t nextDay: '[Esok pukul] LT',\n\t nextWeek: 'dddd [pukul] LT',\n\t lastDay: '[Kelmarin pukul] LT',\n\t lastWeek: 'dddd [lepas pukul] LT',\n\t sameElse: 'L',\n\t },\n\t relativeTime: {\n\t future: 'dalam %s',\n\t past: '%s yang lepas',\n\t s: 'beberapa saat',\n\t ss: '%d saat',\n\t m: 'seminit',\n\t mm: '%d minit',\n\t h: 'sejam',\n\t hh: '%d jam',\n\t d: 'sehari',\n\t dd: '%d hari',\n\t M: 'sebulan',\n\t MM: '%d bulan',\n\t y: 'setahun',\n\t yy: '%d tahun',\n\t },\n\t week: {\n\t dow: 1, // Monday is the first day of the week.\n\t doy: 7, // The week that contains Jan 7th is the first week of the year.\n\t },\n\t });\n\t\n\t return msMy;\n\t\n\t})));\n\n\n/***/ }),\n\n/***/ 390:\n/***/ (function(module, exports, __webpack_require__) {\n\n\t//! moment.js locale configuration\n\t//! locale : Malay [ms]\n\t//! author : Weldan Jamili : https://github.com/weldan\n\t\n\t;(function (global, factory) {\n\t true ? factory(__webpack_require__(1)) :\n\t typeof define === 'function' && define.amd ? define(['../moment'], factory) :\n\t factory(global.moment)\n\t}(this, (function (moment) { 'use strict';\n\t\n\t //! moment.js locale configuration\n\t\n\t var ms = moment.defineLocale('ms', {\n\t months: 'Januari_Februari_Mac_April_Mei_Jun_Julai_Ogos_September_Oktober_November_Disember'.split(\n\t '_'\n\t ),\n\t monthsShort: 'Jan_Feb_Mac_Apr_Mei_Jun_Jul_Ogs_Sep_Okt_Nov_Dis'.split('_'),\n\t weekdays: 'Ahad_Isnin_Selasa_Rabu_Khamis_Jumaat_Sabtu'.split('_'),\n\t weekdaysShort: 'Ahd_Isn_Sel_Rab_Kha_Jum_Sab'.split('_'),\n\t weekdaysMin: 'Ah_Is_Sl_Rb_Km_Jm_Sb'.split('_'),\n\t longDateFormat: {\n\t LT: 'HH.mm',\n\t LTS: 'HH.mm.ss',\n\t L: 'DD/MM/YYYY',\n\t LL: 'D MMMM YYYY',\n\t LLL: 'D MMMM YYYY [pukul] HH.mm',\n\t LLLL: 'dddd, D MMMM YYYY [pukul] HH.mm',\n\t },\n\t meridiemParse: /pagi|tengahari|petang|malam/,\n\t meridiemHour: function (hour, meridiem) {\n\t if (hour === 12) {\n\t hour = 0;\n\t }\n\t if (meridiem === 'pagi') {\n\t return hour;\n\t } else if (meridiem === 'tengahari') {\n\t return hour >= 11 ? hour : hour + 12;\n\t } else if (meridiem === 'petang' || meridiem === 'malam') {\n\t return hour + 12;\n\t }\n\t },\n\t meridiem: function (hours, minutes, isLower) {\n\t if (hours < 11) {\n\t return 'pagi';\n\t } else if (hours < 15) {\n\t return 'tengahari';\n\t } else if (hours < 19) {\n\t return 'petang';\n\t } else {\n\t return 'malam';\n\t }\n\t },\n\t calendar: {\n\t sameDay: '[Hari ini pukul] LT',\n\t nextDay: '[Esok pukul] LT',\n\t nextWeek: 'dddd [pukul] LT',\n\t lastDay: '[Kelmarin pukul] LT',\n\t lastWeek: 'dddd [lepas pukul] LT',\n\t sameElse: 'L',\n\t },\n\t relativeTime: {\n\t future: 'dalam %s',\n\t past: '%s yang lepas',\n\t s: 'beberapa saat',\n\t ss: '%d saat',\n\t m: 'seminit',\n\t mm: '%d minit',\n\t h: 'sejam',\n\t hh: '%d jam',\n\t d: 'sehari',\n\t dd: '%d hari',\n\t M: 'sebulan',\n\t MM: '%d bulan',\n\t y: 'setahun',\n\t yy: '%d tahun',\n\t },\n\t week: {\n\t dow: 1, // Monday is the first day of the week.\n\t doy: 7, // The week that contains Jan 7th is the first week of the year.\n\t },\n\t });\n\t\n\t return ms;\n\t\n\t})));\n\n\n/***/ }),\n\n/***/ 391:\n/***/ (function(module, exports, __webpack_require__) {\n\n\t//! moment.js locale configuration\n\t//! locale : Maltese (Malta) [mt]\n\t//! author : Alessandro Maruccia : https://github.com/alesma\n\t\n\t;(function (global, factory) {\n\t true ? factory(__webpack_require__(1)) :\n\t typeof define === 'function' && define.amd ? define(['../moment'], factory) :\n\t factory(global.moment)\n\t}(this, (function (moment) { 'use strict';\n\t\n\t //! moment.js locale configuration\n\t\n\t var mt = moment.defineLocale('mt', {\n\t months: 'Jannar_Frar_Marzu_April_Mejju_Ġunju_Lulju_Awwissu_Settembru_Ottubru_Novembru_Diċembru'.split(\n\t '_'\n\t ),\n\t monthsShort: 'Jan_Fra_Mar_Apr_Mej_Ġun_Lul_Aww_Set_Ott_Nov_Diċ'.split('_'),\n\t weekdays: 'Il-Ħadd_It-Tnejn_It-Tlieta_L-Erbgħa_Il-Ħamis_Il-Ġimgħa_Is-Sibt'.split(\n\t '_'\n\t ),\n\t weekdaysShort: 'Ħad_Tne_Tli_Erb_Ħam_Ġim_Sib'.split('_'),\n\t weekdaysMin: 'Ħa_Tn_Tl_Er_Ħa_Ġi_Si'.split('_'),\n\t longDateFormat: {\n\t LT: 'HH:mm',\n\t LTS: 'HH:mm:ss',\n\t L: 'DD/MM/YYYY',\n\t LL: 'D MMMM YYYY',\n\t LLL: 'D MMMM YYYY HH:mm',\n\t LLLL: 'dddd, D MMMM YYYY HH:mm',\n\t },\n\t calendar: {\n\t sameDay: '[Illum fil-]LT',\n\t nextDay: '[Għada fil-]LT',\n\t nextWeek: 'dddd [fil-]LT',\n\t lastDay: '[Il-bieraħ fil-]LT',\n\t lastWeek: 'dddd [li għadda] [fil-]LT',\n\t sameElse: 'L',\n\t },\n\t relativeTime: {\n\t future: 'f’ %s',\n\t past: '%s ilu',\n\t s: 'ftit sekondi',\n\t ss: '%d sekondi',\n\t m: 'minuta',\n\t mm: '%d minuti',\n\t h: 'siegħa',\n\t hh: '%d siegħat',\n\t d: 'ġurnata',\n\t dd: '%d ġranet',\n\t M: 'xahar',\n\t MM: '%d xhur',\n\t y: 'sena',\n\t yy: '%d sni',\n\t },\n\t dayOfMonthOrdinalParse: /\\d{1,2}º/,\n\t ordinal: '%dº',\n\t week: {\n\t dow: 1, // Monday is the first day of the week.\n\t doy: 4, // The week that contains Jan 4th is the first week of the year.\n\t },\n\t });\n\t\n\t return mt;\n\t\n\t})));\n\n\n/***/ }),\n\n/***/ 392:\n/***/ (function(module, exports, __webpack_require__) {\n\n\t//! moment.js locale configuration\n\t//! locale : Burmese [my]\n\t//! author : Squar team, mysquar.com\n\t//! author : David Rossellat : https://github.com/gholadr\n\t//! author : Tin Aung Lin : https://github.com/thanyawzinmin\n\t\n\t;(function (global, factory) {\n\t true ? factory(__webpack_require__(1)) :\n\t typeof define === 'function' && define.amd ? define(['../moment'], factory) :\n\t factory(global.moment)\n\t}(this, (function (moment) { 'use strict';\n\t\n\t //! moment.js locale configuration\n\t\n\t var symbolMap = {\n\t 1: '၁',\n\t 2: '၂',\n\t 3: '၃',\n\t 4: '၄',\n\t 5: '၅',\n\t 6: '၆',\n\t 7: '၇',\n\t 8: '၈',\n\t 9: '၉',\n\t 0: '၀',\n\t },\n\t numberMap = {\n\t '၁': '1',\n\t '၂': '2',\n\t '၃': '3',\n\t '၄': '4',\n\t '၅': '5',\n\t '၆': '6',\n\t '၇': '7',\n\t '၈': '8',\n\t '၉': '9',\n\t '၀': '0',\n\t };\n\t\n\t var my = moment.defineLocale('my', {\n\t months: 'ဇန်နဝါရီ_ဖေဖော်ဝါရီ_မတ်_ဧပြီ_မေ_ဇွန်_ဇူလိုင်_သြဂုတ်_စက်တင်ဘာ_အောက်တိုဘာ_နိုဝင်ဘာ_ဒီဇင်ဘာ'.split(\n\t '_'\n\t ),\n\t monthsShort: 'ဇန်_ဖေ_မတ်_ပြီ_မေ_ဇွန်_လိုင်_သြ_စက်_အောက်_နို_ဒီ'.split('_'),\n\t weekdays: 'တနင်္ဂနွေ_တနင်္လာ_အင်္ဂါ_ဗုဒ္ဓဟူး_ကြာသပတေး_သောကြာ_စနေ'.split(\n\t '_'\n\t ),\n\t weekdaysShort: 'နွေ_လာ_ဂါ_ဟူး_ကြာ_သော_နေ'.split('_'),\n\t weekdaysMin: 'နွေ_လာ_ဂါ_ဟူး_ကြာ_သော_နေ'.split('_'),\n\t\n\t longDateFormat: {\n\t LT: 'HH:mm',\n\t LTS: 'HH:mm:ss',\n\t L: 'DD/MM/YYYY',\n\t LL: 'D MMMM YYYY',\n\t LLL: 'D MMMM YYYY HH:mm',\n\t LLLL: 'dddd D MMMM YYYY HH:mm',\n\t },\n\t calendar: {\n\t sameDay: '[ယနေ.] LT [မှာ]',\n\t nextDay: '[မနက်ဖြန်] LT [မှာ]',\n\t nextWeek: 'dddd LT [မှာ]',\n\t lastDay: '[မနေ.က] LT [မှာ]',\n\t lastWeek: '[ပြီးခဲ့သော] dddd LT [မှာ]',\n\t sameElse: 'L',\n\t },\n\t relativeTime: {\n\t future: 'လာမည့် %s မှာ',\n\t past: 'လွန်ခဲ့သော %s က',\n\t s: 'စက္ကန်.အနည်းငယ်',\n\t ss: '%d စက္ကန့်',\n\t m: 'တစ်မိနစ်',\n\t mm: '%d မိနစ်',\n\t h: 'တစ်နာရီ',\n\t hh: '%d နာရီ',\n\t d: 'တစ်ရက်',\n\t dd: '%d ရက်',\n\t M: 'တစ်လ',\n\t MM: '%d လ',\n\t y: 'တစ်နှစ်',\n\t yy: '%d နှစ်',\n\t },\n\t preparse: function (string) {\n\t return string.replace(/[၁၂၃၄၅၆၇၈၉၀]/g, function (match) {\n\t return numberMap[match];\n\t });\n\t },\n\t postformat: function (string) {\n\t return string.replace(/\\d/g, function (match) {\n\t return symbolMap[match];\n\t });\n\t },\n\t week: {\n\t dow: 1, // Monday is the first day of the week.\n\t doy: 4, // The week that contains Jan 4th is the first week of the year.\n\t },\n\t });\n\t\n\t return my;\n\t\n\t})));\n\n\n/***/ }),\n\n/***/ 393:\n/***/ (function(module, exports, __webpack_require__) {\n\n\t//! moment.js locale configuration\n\t//! locale : Norwegian Bokmål [nb]\n\t//! authors : Espen Hovlandsdal : https://github.com/rexxars\n\t//! Sigurd Gartmann : https://github.com/sigurdga\n\t//! Stephen Ramthun : https://github.com/stephenramthun\n\t\n\t;(function (global, factory) {\n\t true ? factory(__webpack_require__(1)) :\n\t typeof define === 'function' && define.amd ? define(['../moment'], factory) :\n\t factory(global.moment)\n\t}(this, (function (moment) { 'use strict';\n\t\n\t //! moment.js locale configuration\n\t\n\t var nb = moment.defineLocale('nb', {\n\t months: 'januar_februar_mars_april_mai_juni_juli_august_september_oktober_november_desember'.split(\n\t '_'\n\t ),\n\t monthsShort: 'jan._feb._mars_apr._mai_juni_juli_aug._sep._okt._nov._des.'.split(\n\t '_'\n\t ),\n\t monthsParseExact: true,\n\t weekdays: 'søndag_mandag_tirsdag_onsdag_torsdag_fredag_lørdag'.split('_'),\n\t weekdaysShort: 'sø._ma._ti._on._to._fr._lø.'.split('_'),\n\t weekdaysMin: 'sø_ma_ti_on_to_fr_lø'.split('_'),\n\t weekdaysParseExact: true,\n\t longDateFormat: {\n\t LT: 'HH:mm',\n\t LTS: 'HH:mm:ss',\n\t L: 'DD.MM.YYYY',\n\t LL: 'D. MMMM YYYY',\n\t LLL: 'D. MMMM YYYY [kl.] HH:mm',\n\t LLLL: 'dddd D. MMMM YYYY [kl.] HH:mm',\n\t },\n\t calendar: {\n\t sameDay: '[i dag kl.] LT',\n\t nextDay: '[i morgen kl.] LT',\n\t nextWeek: 'dddd [kl.] LT',\n\t lastDay: '[i går kl.] LT',\n\t lastWeek: '[forrige] dddd [kl.] LT',\n\t sameElse: 'L',\n\t },\n\t relativeTime: {\n\t future: 'om %s',\n\t past: '%s siden',\n\t s: 'noen sekunder',\n\t ss: '%d sekunder',\n\t m: 'ett minutt',\n\t mm: '%d minutter',\n\t h: 'en time',\n\t hh: '%d timer',\n\t d: 'en dag',\n\t dd: '%d dager',\n\t w: 'en uke',\n\t ww: '%d uker',\n\t M: 'en måned',\n\t MM: '%d måneder',\n\t y: 'ett år',\n\t yy: '%d år',\n\t },\n\t dayOfMonthOrdinalParse: /\\d{1,2}\\./,\n\t ordinal: '%d.',\n\t week: {\n\t dow: 1, // Monday is the first day of the week.\n\t doy: 4, // The week that contains Jan 4th is the first week of the year.\n\t },\n\t });\n\t\n\t return nb;\n\t\n\t})));\n\n\n/***/ }),\n\n/***/ 394:\n/***/ (function(module, exports, __webpack_require__) {\n\n\t//! moment.js locale configuration\n\t//! locale : Nepalese [ne]\n\t//! author : suvash : https://github.com/suvash\n\t\n\t;(function (global, factory) {\n\t true ? factory(__webpack_require__(1)) :\n\t typeof define === 'function' && define.amd ? define(['../moment'], factory) :\n\t factory(global.moment)\n\t}(this, (function (moment) { 'use strict';\n\t\n\t //! moment.js locale configuration\n\t\n\t var symbolMap = {\n\t 1: '१',\n\t 2: '२',\n\t 3: '३',\n\t 4: '४',\n\t 5: '५',\n\t 6: '६',\n\t 7: '७',\n\t 8: '८',\n\t 9: '९',\n\t 0: '०',\n\t },\n\t numberMap = {\n\t '१': '1',\n\t '२': '2',\n\t '३': '3',\n\t '४': '4',\n\t '५': '5',\n\t '६': '6',\n\t '७': '7',\n\t '८': '8',\n\t '९': '9',\n\t '०': '0',\n\t };\n\t\n\t var ne = moment.defineLocale('ne', {\n\t months: 'जनवरी_फेब्रुवरी_मार्च_अप्रिल_मई_जुन_जुलाई_अगष्ट_सेप्टेम्बर_अक्टोबर_नोभेम्बर_डिसेम्बर'.split(\n\t '_'\n\t ),\n\t monthsShort: 'जन._फेब्रु._मार्च_अप्रि._मई_जुन_जुलाई._अग._सेप्ट._अक्टो._नोभे._डिसे.'.split(\n\t '_'\n\t ),\n\t monthsParseExact: true,\n\t weekdays: 'आइतबार_सोमबार_मङ्गलबार_बुधबार_बिहिबार_शुक्रबार_शनिबार'.split(\n\t '_'\n\t ),\n\t weekdaysShort: 'आइत._सोम._मङ्गल._बुध._बिहि._शुक्र._शनि.'.split('_'),\n\t weekdaysMin: 'आ._सो._मं._बु._बि._शु._श.'.split('_'),\n\t weekdaysParseExact: true,\n\t longDateFormat: {\n\t LT: 'Aको h:mm बजे',\n\t LTS: 'Aको h:mm:ss बजे',\n\t L: 'DD/MM/YYYY',\n\t LL: 'D MMMM YYYY',\n\t LLL: 'D MMMM YYYY, Aको h:mm बजे',\n\t LLLL: 'dddd, D MMMM YYYY, Aको h:mm बजे',\n\t },\n\t preparse: function (string) {\n\t return string.replace(/[१२३४५६७८९०]/g, function (match) {\n\t return numberMap[match];\n\t });\n\t },\n\t postformat: function (string) {\n\t return string.replace(/\\d/g, function (match) {\n\t return symbolMap[match];\n\t });\n\t },\n\t meridiemParse: /राति|बिहान|दिउँसो|साँझ/,\n\t meridiemHour: function (hour, meridiem) {\n\t if (hour === 12) {\n\t hour = 0;\n\t }\n\t if (meridiem === 'राति') {\n\t return hour < 4 ? hour : hour + 12;\n\t } else if (meridiem === 'बिहान') {\n\t return hour;\n\t } else if (meridiem === 'दिउँसो') {\n\t return hour >= 10 ? hour : hour + 12;\n\t } else if (meridiem === 'साँझ') {\n\t return hour + 12;\n\t }\n\t },\n\t meridiem: function (hour, minute, isLower) {\n\t if (hour < 3) {\n\t return 'राति';\n\t } else if (hour < 12) {\n\t return 'बिहान';\n\t } else if (hour < 16) {\n\t return 'दिउँसो';\n\t } else if (hour < 20) {\n\t return 'साँझ';\n\t } else {\n\t return 'राति';\n\t }\n\t },\n\t calendar: {\n\t sameDay: '[आज] LT',\n\t nextDay: '[भोलि] LT',\n\t nextWeek: '[आउँदो] dddd[,] LT',\n\t lastDay: '[हिजो] LT',\n\t lastWeek: '[गएको] dddd[,] LT',\n\t sameElse: 'L',\n\t },\n\t relativeTime: {\n\t future: '%sमा',\n\t past: '%s अगाडि',\n\t s: 'केही क्षण',\n\t ss: '%d सेकेण्ड',\n\t m: 'एक मिनेट',\n\t mm: '%d मिनेट',\n\t h: 'एक घण्टा',\n\t hh: '%d घण्टा',\n\t d: 'एक दिन',\n\t dd: '%d दिन',\n\t M: 'एक महिना',\n\t MM: '%d महिना',\n\t y: 'एक बर्ष',\n\t yy: '%d बर्ष',\n\t },\n\t week: {\n\t dow: 0, // Sunday is the first day of the week.\n\t doy: 6, // The week that contains Jan 6th is the first week of the year.\n\t },\n\t });\n\t\n\t return ne;\n\t\n\t})));\n\n\n/***/ }),\n\n/***/ 395:\n/***/ (function(module, exports, __webpack_require__) {\n\n\t//! moment.js locale configuration\n\t//! locale : Dutch (Belgium) [nl-be]\n\t//! author : Joris Röling : https://github.com/jorisroling\n\t//! author : Jacob Middag : https://github.com/middagj\n\t\n\t;(function (global, factory) {\n\t true ? factory(__webpack_require__(1)) :\n\t typeof define === 'function' && define.amd ? define(['../moment'], factory) :\n\t factory(global.moment)\n\t}(this, (function (moment) { 'use strict';\n\t\n\t //! moment.js locale configuration\n\t\n\t var monthsShortWithDots = 'jan._feb._mrt._apr._mei_jun._jul._aug._sep._okt._nov._dec.'.split(\n\t '_'\n\t ),\n\t monthsShortWithoutDots = 'jan_feb_mrt_apr_mei_jun_jul_aug_sep_okt_nov_dec'.split(\n\t '_'\n\t ),\n\t monthsParse = [\n\t /^jan/i,\n\t /^feb/i,\n\t /^maart|mrt.?$/i,\n\t /^apr/i,\n\t /^mei$/i,\n\t /^jun[i.]?$/i,\n\t /^jul[i.]?$/i,\n\t /^aug/i,\n\t /^sep/i,\n\t /^okt/i,\n\t /^nov/i,\n\t /^dec/i,\n\t ],\n\t 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\t\n\t var nlBe = moment.defineLocale('nl-be', {\n\t months: 'januari_februari_maart_april_mei_juni_juli_augustus_september_oktober_november_december'.split(\n\t '_'\n\t ),\n\t monthsShort: function (m, format) {\n\t if (!m) {\n\t return monthsShortWithDots;\n\t } else if (/-MMM-/.test(format)) {\n\t return monthsShortWithoutDots[m.month()];\n\t } else {\n\t return monthsShortWithDots[m.month()];\n\t }\n\t },\n\t\n\t monthsRegex: monthsRegex,\n\t monthsShortRegex: monthsRegex,\n\t monthsStrictRegex: /^(januari|februari|maart|april|mei|ju[nl]i|augustus|september|oktober|november|december)/i,\n\t monthsShortStrictRegex: /^(jan\\.?|feb\\.?|mrt\\.?|apr\\.?|mei|ju[nl]\\.?|aug\\.?|sep\\.?|okt\\.?|nov\\.?|dec\\.?)/i,\n\t\n\t monthsParse: monthsParse,\n\t longMonthsParse: monthsParse,\n\t shortMonthsParse: monthsParse,\n\t\n\t weekdays: 'zondag_maandag_dinsdag_woensdag_donderdag_vrijdag_zaterdag'.split(\n\t '_'\n\t ),\n\t weekdaysShort: 'zo._ma._di._wo._do._vr._za.'.split('_'),\n\t weekdaysMin: 'zo_ma_di_wo_do_vr_za'.split('_'),\n\t weekdaysParseExact: true,\n\t longDateFormat: {\n\t LT: 'HH:mm',\n\t LTS: 'HH:mm:ss',\n\t L: 'DD/MM/YYYY',\n\t LL: 'D MMMM YYYY',\n\t LLL: 'D MMMM YYYY HH:mm',\n\t LLLL: 'dddd D MMMM YYYY HH:mm',\n\t },\n\t calendar: {\n\t sameDay: '[vandaag om] LT',\n\t nextDay: '[morgen om] LT',\n\t nextWeek: 'dddd [om] LT',\n\t lastDay: '[gisteren om] LT',\n\t lastWeek: '[afgelopen] dddd [om] LT',\n\t sameElse: 'L',\n\t },\n\t relativeTime: {\n\t future: 'over %s',\n\t past: '%s geleden',\n\t s: 'een paar seconden',\n\t ss: '%d seconden',\n\t m: 'één minuut',\n\t mm: '%d minuten',\n\t h: 'één uur',\n\t hh: '%d uur',\n\t d: 'één dag',\n\t dd: '%d dagen',\n\t M: 'één maand',\n\t MM: '%d maanden',\n\t y: 'één jaar',\n\t yy: '%d jaar',\n\t },\n\t dayOfMonthOrdinalParse: /\\d{1,2}(ste|de)/,\n\t ordinal: function (number) {\n\t return (\n\t number +\n\t (number === 1 || number === 8 || number >= 20 ? 'ste' : 'de')\n\t );\n\t },\n\t week: {\n\t dow: 1, // Monday is the first day of the week.\n\t doy: 4, // The week that contains Jan 4th is the first week of the year.\n\t },\n\t });\n\t\n\t return nlBe;\n\t\n\t})));\n\n\n/***/ }),\n\n/***/ 396:\n/***/ (function(module, exports, __webpack_require__) {\n\n\t//! moment.js locale configuration\n\t//! locale : Dutch [nl]\n\t//! author : Joris Röling : https://github.com/jorisroling\n\t//! author : Jacob Middag : https://github.com/middagj\n\t\n\t;(function (global, factory) {\n\t true ? factory(__webpack_require__(1)) :\n\t typeof define === 'function' && define.amd ? define(['../moment'], factory) :\n\t factory(global.moment)\n\t}(this, (function (moment) { 'use strict';\n\t\n\t //! moment.js locale configuration\n\t\n\t var monthsShortWithDots = 'jan._feb._mrt._apr._mei_jun._jul._aug._sep._okt._nov._dec.'.split(\n\t '_'\n\t ),\n\t monthsShortWithoutDots = 'jan_feb_mrt_apr_mei_jun_jul_aug_sep_okt_nov_dec'.split(\n\t '_'\n\t ),\n\t monthsParse = [\n\t /^jan/i,\n\t /^feb/i,\n\t /^maart|mrt.?$/i,\n\t /^apr/i,\n\t /^mei$/i,\n\t /^jun[i.]?$/i,\n\t /^jul[i.]?$/i,\n\t /^aug/i,\n\t /^sep/i,\n\t /^okt/i,\n\t /^nov/i,\n\t /^dec/i,\n\t ],\n\t 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\t\n\t var nl = moment.defineLocale('nl', {\n\t months: 'januari_februari_maart_april_mei_juni_juli_augustus_september_oktober_november_december'.split(\n\t '_'\n\t ),\n\t monthsShort: function (m, format) {\n\t if (!m) {\n\t return monthsShortWithDots;\n\t } else if (/-MMM-/.test(format)) {\n\t return monthsShortWithoutDots[m.month()];\n\t } else {\n\t return monthsShortWithDots[m.month()];\n\t }\n\t },\n\t\n\t monthsRegex: monthsRegex,\n\t monthsShortRegex: monthsRegex,\n\t monthsStrictRegex: /^(januari|februari|maart|april|mei|ju[nl]i|augustus|september|oktober|november|december)/i,\n\t monthsShortStrictRegex: /^(jan\\.?|feb\\.?|mrt\\.?|apr\\.?|mei|ju[nl]\\.?|aug\\.?|sep\\.?|okt\\.?|nov\\.?|dec\\.?)/i,\n\t\n\t monthsParse: monthsParse,\n\t longMonthsParse: monthsParse,\n\t shortMonthsParse: monthsParse,\n\t\n\t weekdays: 'zondag_maandag_dinsdag_woensdag_donderdag_vrijdag_zaterdag'.split(\n\t '_'\n\t ),\n\t weekdaysShort: 'zo._ma._di._wo._do._vr._za.'.split('_'),\n\t weekdaysMin: 'zo_ma_di_wo_do_vr_za'.split('_'),\n\t weekdaysParseExact: true,\n\t longDateFormat: {\n\t LT: 'HH:mm',\n\t LTS: 'HH:mm:ss',\n\t L: 'DD-MM-YYYY',\n\t LL: 'D MMMM YYYY',\n\t LLL: 'D MMMM YYYY HH:mm',\n\t LLLL: 'dddd D MMMM YYYY HH:mm',\n\t },\n\t calendar: {\n\t sameDay: '[vandaag om] LT',\n\t nextDay: '[morgen om] LT',\n\t nextWeek: 'dddd [om] LT',\n\t lastDay: '[gisteren om] LT',\n\t lastWeek: '[afgelopen] dddd [om] LT',\n\t sameElse: 'L',\n\t },\n\t relativeTime: {\n\t future: 'over %s',\n\t past: '%s geleden',\n\t s: 'een paar seconden',\n\t ss: '%d seconden',\n\t m: 'één minuut',\n\t mm: '%d minuten',\n\t h: 'één uur',\n\t hh: '%d uur',\n\t d: 'één dag',\n\t dd: '%d dagen',\n\t w: 'één week',\n\t ww: '%d weken',\n\t M: 'één maand',\n\t MM: '%d maanden',\n\t y: 'één jaar',\n\t yy: '%d jaar',\n\t },\n\t dayOfMonthOrdinalParse: /\\d{1,2}(ste|de)/,\n\t ordinal: function (number) {\n\t return (\n\t number +\n\t (number === 1 || number === 8 || number >= 20 ? 'ste' : 'de')\n\t );\n\t },\n\t week: {\n\t dow: 1, // Monday is the first day of the week.\n\t doy: 4, // The week that contains Jan 4th is the first week of the year.\n\t },\n\t });\n\t\n\t return nl;\n\t\n\t})));\n\n\n/***/ }),\n\n/***/ 397:\n/***/ (function(module, exports, __webpack_require__) {\n\n\t//! moment.js locale configuration\n\t//! locale : Nynorsk [nn]\n\t//! authors : https://github.com/mechuwind\n\t//! Stephen Ramthun : https://github.com/stephenramthun\n\t\n\t;(function (global, factory) {\n\t true ? factory(__webpack_require__(1)) :\n\t typeof define === 'function' && define.amd ? define(['../moment'], factory) :\n\t factory(global.moment)\n\t}(this, (function (moment) { 'use strict';\n\t\n\t //! moment.js locale configuration\n\t\n\t var nn = moment.defineLocale('nn', {\n\t months: 'januar_februar_mars_april_mai_juni_juli_august_september_oktober_november_desember'.split(\n\t '_'\n\t ),\n\t monthsShort: 'jan._feb._mars_apr._mai_juni_juli_aug._sep._okt._nov._des.'.split(\n\t '_'\n\t ),\n\t monthsParseExact: true,\n\t weekdays: 'sundag_måndag_tysdag_onsdag_torsdag_fredag_laurdag'.split('_'),\n\t weekdaysShort: 'su._må._ty._on._to._fr._lau.'.split('_'),\n\t weekdaysMin: 'su_må_ty_on_to_fr_la'.split('_'),\n\t weekdaysParseExact: true,\n\t longDateFormat: {\n\t LT: 'HH:mm',\n\t LTS: 'HH:mm:ss',\n\t L: 'DD.MM.YYYY',\n\t LL: 'D. MMMM YYYY',\n\t LLL: 'D. MMMM YYYY [kl.] H:mm',\n\t LLLL: 'dddd D. MMMM YYYY [kl.] HH:mm',\n\t },\n\t calendar: {\n\t sameDay: '[I dag klokka] LT',\n\t nextDay: '[I morgon klokka] LT',\n\t nextWeek: 'dddd [klokka] LT',\n\t lastDay: '[I går klokka] LT',\n\t lastWeek: '[Føregåande] dddd [klokka] LT',\n\t sameElse: 'L',\n\t },\n\t relativeTime: {\n\t future: 'om %s',\n\t past: '%s sidan',\n\t s: 'nokre sekund',\n\t ss: '%d sekund',\n\t m: 'eit minutt',\n\t mm: '%d minutt',\n\t h: 'ein time',\n\t hh: '%d timar',\n\t d: 'ein dag',\n\t dd: '%d dagar',\n\t w: 'ei veke',\n\t ww: '%d veker',\n\t M: 'ein månad',\n\t MM: '%d månader',\n\t y: 'eit år',\n\t yy: '%d år',\n\t },\n\t dayOfMonthOrdinalParse: /\\d{1,2}\\./,\n\t ordinal: '%d.',\n\t week: {\n\t dow: 1, // Monday is the first day of the week.\n\t doy: 4, // The week that contains Jan 4th is the first week of the year.\n\t },\n\t });\n\t\n\t return nn;\n\t\n\t})));\n\n\n/***/ }),\n\n/***/ 398:\n/***/ (function(module, exports, __webpack_require__) {\n\n\t//! moment.js locale configuration\n\t//! locale : Occitan, lengadocian dialecte [oc-lnc]\n\t//! author : Quentin PAGÈS : https://github.com/Quenty31\n\t\n\t;(function (global, factory) {\n\t true ? factory(__webpack_require__(1)) :\n\t typeof define === 'function' && define.amd ? define(['../moment'], factory) :\n\t factory(global.moment)\n\t}(this, (function (moment) { 'use strict';\n\t\n\t //! moment.js locale configuration\n\t\n\t var ocLnc = moment.defineLocale('oc-lnc', {\n\t months: {\n\t standalone: 'genièr_febrièr_març_abril_mai_junh_julhet_agost_setembre_octòbre_novembre_decembre'.split(\n\t '_'\n\t ),\n\t 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\t '_'\n\t ),\n\t isFormat: /D[oD]?(\\s)+MMMM/,\n\t },\n\t monthsShort: 'gen._febr._març_abr._mai_junh_julh._ago._set._oct._nov._dec.'.split(\n\t '_'\n\t ),\n\t monthsParseExact: true,\n\t weekdays: 'dimenge_diluns_dimars_dimècres_dijòus_divendres_dissabte'.split(\n\t '_'\n\t ),\n\t weekdaysShort: 'dg._dl._dm._dc._dj._dv._ds.'.split('_'),\n\t weekdaysMin: 'dg_dl_dm_dc_dj_dv_ds'.split('_'),\n\t weekdaysParseExact: true,\n\t longDateFormat: {\n\t LT: 'H:mm',\n\t LTS: 'H:mm:ss',\n\t L: 'DD/MM/YYYY',\n\t LL: 'D MMMM [de] YYYY',\n\t ll: 'D MMM YYYY',\n\t LLL: 'D MMMM [de] YYYY [a] H:mm',\n\t lll: 'D MMM YYYY, H:mm',\n\t LLLL: 'dddd D MMMM [de] YYYY [a] H:mm',\n\t llll: 'ddd D MMM YYYY, H:mm',\n\t },\n\t calendar: {\n\t sameDay: '[uèi a] LT',\n\t nextDay: '[deman a] LT',\n\t nextWeek: 'dddd [a] LT',\n\t lastDay: '[ièr a] LT',\n\t lastWeek: 'dddd [passat a] LT',\n\t sameElse: 'L',\n\t },\n\t relativeTime: {\n\t future: \"d'aquí %s\",\n\t past: 'fa %s',\n\t s: 'unas segondas',\n\t ss: '%d segondas',\n\t m: 'una minuta',\n\t mm: '%d minutas',\n\t h: 'una ora',\n\t hh: '%d oras',\n\t d: 'un jorn',\n\t dd: '%d jorns',\n\t M: 'un mes',\n\t MM: '%d meses',\n\t y: 'un an',\n\t yy: '%d ans',\n\t },\n\t dayOfMonthOrdinalParse: /\\d{1,2}(r|n|t|è|a)/,\n\t ordinal: function (number, period) {\n\t var output =\n\t number === 1\n\t ? 'r'\n\t : number === 2\n\t ? 'n'\n\t : number === 3\n\t ? 'r'\n\t : number === 4\n\t ? 't'\n\t : 'è';\n\t if (period === 'w' || period === 'W') {\n\t output = 'a';\n\t }\n\t return number + output;\n\t },\n\t week: {\n\t dow: 1, // Monday is the first day of the week.\n\t doy: 4,\n\t },\n\t });\n\t\n\t return ocLnc;\n\t\n\t})));\n\n\n/***/ }),\n\n/***/ 399:\n/***/ (function(module, exports, __webpack_require__) {\n\n\t//! moment.js locale configuration\n\t//! locale : Punjabi (India) [pa-in]\n\t//! author : Harpreet Singh : https://github.com/harpreetkhalsagtbit\n\t\n\t;(function (global, factory) {\n\t true ? factory(__webpack_require__(1)) :\n\t typeof define === 'function' && define.amd ? define(['../moment'], factory) :\n\t factory(global.moment)\n\t}(this, (function (moment) { 'use strict';\n\t\n\t //! moment.js locale configuration\n\t\n\t var symbolMap = {\n\t 1: '੧',\n\t 2: '੨',\n\t 3: '੩',\n\t 4: '੪',\n\t 5: '੫',\n\t 6: '੬',\n\t 7: '੭',\n\t 8: '੮',\n\t 9: '੯',\n\t 0: '੦',\n\t },\n\t numberMap = {\n\t '੧': '1',\n\t '੨': '2',\n\t '੩': '3',\n\t '੪': '4',\n\t '੫': '5',\n\t '੬': '6',\n\t '੭': '7',\n\t '੮': '8',\n\t '੯': '9',\n\t '੦': '0',\n\t };\n\t\n\t var paIn = moment.defineLocale('pa-in', {\n\t // There are months name as per Nanakshahi Calendar but they are not used as rigidly in modern Punjabi.\n\t months: 'ਜਨਵਰੀ_ਫ਼ਰਵਰੀ_ਮਾਰਚ_ਅਪ੍ਰੈਲ_ਮਈ_ਜੂਨ_ਜੁਲਾਈ_ਅਗਸਤ_ਸਤੰਬਰ_ਅਕਤੂਬਰ_ਨਵੰਬਰ_ਦਸੰਬਰ'.split(\n\t '_'\n\t ),\n\t monthsShort: 'ਜਨਵਰੀ_ਫ਼ਰਵਰੀ_ਮਾਰਚ_ਅਪ੍ਰੈਲ_ਮਈ_ਜੂਨ_ਜੁਲਾਈ_ਅਗਸਤ_ਸਤੰਬਰ_ਅਕਤੂਬਰ_ਨਵੰਬਰ_ਦਸੰਬਰ'.split(\n\t '_'\n\t ),\n\t weekdays: 'ਐਤਵਾਰ_ਸੋਮਵਾਰ_ਮੰਗਲਵਾਰ_ਬੁਧਵਾਰ_ਵੀਰਵਾਰ_ਸ਼ੁੱਕਰਵਾਰ_ਸ਼ਨੀਚਰਵਾਰ'.split(\n\t '_'\n\t ),\n\t weekdaysShort: 'ਐਤ_ਸੋਮ_ਮੰਗਲ_ਬੁਧ_ਵੀਰ_ਸ਼ੁਕਰ_ਸ਼ਨੀ'.split('_'),\n\t weekdaysMin: 'ਐਤ_ਸੋਮ_ਮੰਗਲ_ਬੁਧ_ਵੀਰ_ਸ਼ੁਕਰ_ਸ਼ਨੀ'.split('_'),\n\t longDateFormat: {\n\t LT: 'A h:mm ਵਜੇ',\n\t LTS: 'A h:mm:ss ਵਜੇ',\n\t L: 'DD/MM/YYYY',\n\t LL: 'D MMMM YYYY',\n\t LLL: 'D MMMM YYYY, A h:mm ਵਜੇ',\n\t LLLL: 'dddd, D MMMM YYYY, A h:mm ਵਜੇ',\n\t },\n\t calendar: {\n\t sameDay: '[ਅਜ] LT',\n\t nextDay: '[ਕਲ] LT',\n\t nextWeek: '[ਅਗਲਾ] dddd, LT',\n\t lastDay: '[ਕਲ] LT',\n\t lastWeek: '[ਪਿਛਲੇ] dddd, LT',\n\t sameElse: 'L',\n\t },\n\t relativeTime: {\n\t future: '%s ਵਿੱਚ',\n\t past: '%s ਪਿਛਲੇ',\n\t s: 'ਕੁਝ ਸਕਿੰਟ',\n\t ss: '%d ਸਕਿੰਟ',\n\t m: 'ਇਕ ਮਿੰਟ',\n\t mm: '%d ਮਿੰਟ',\n\t h: 'ਇੱਕ ਘੰਟਾ',\n\t hh: '%d ਘੰਟੇ',\n\t d: 'ਇੱਕ ਦਿਨ',\n\t dd: '%d ਦਿਨ',\n\t M: 'ਇੱਕ ਮਹੀਨਾ',\n\t MM: '%d ਮਹੀਨੇ',\n\t y: 'ਇੱਕ ਸਾਲ',\n\t yy: '%d ਸਾਲ',\n\t },\n\t preparse: function (string) {\n\t return string.replace(/[੧੨੩੪੫੬੭੮੯੦]/g, function (match) {\n\t return numberMap[match];\n\t });\n\t },\n\t postformat: function (string) {\n\t return string.replace(/\\d/g, function (match) {\n\t return symbolMap[match];\n\t });\n\t },\n\t // Punjabi notation for meridiems are quite fuzzy in practice. While there exists\n\t // a rigid notion of a 'Pahar' it is not used as rigidly in modern Punjabi.\n\t meridiemParse: /ਰਾਤ|ਸਵੇਰ|ਦੁਪਹਿਰ|ਸ਼ਾਮ/,\n\t meridiemHour: function (hour, meridiem) {\n\t if (hour === 12) {\n\t hour = 0;\n\t }\n\t if (meridiem === 'ਰਾਤ') {\n\t return hour < 4 ? hour : hour + 12;\n\t } else if (meridiem === 'ਸਵੇਰ') {\n\t return hour;\n\t } else if (meridiem === 'ਦੁਪਹਿਰ') {\n\t return hour >= 10 ? hour : hour + 12;\n\t } else if (meridiem === 'ਸ਼ਾਮ') {\n\t return hour + 12;\n\t }\n\t },\n\t meridiem: function (hour, minute, isLower) {\n\t if (hour < 4) {\n\t return 'ਰਾਤ';\n\t } else if (hour < 10) {\n\t return 'ਸਵੇਰ';\n\t } else if (hour < 17) {\n\t return 'ਦੁਪਹਿਰ';\n\t } else if (hour < 20) {\n\t return 'ਸ਼ਾਮ';\n\t } else {\n\t return 'ਰਾਤ';\n\t }\n\t },\n\t week: {\n\t dow: 0, // Sunday is the first day of the week.\n\t doy: 6, // The week that contains Jan 6th is the first week of the year.\n\t },\n\t });\n\t\n\t return paIn;\n\t\n\t})));\n\n\n/***/ }),\n\n/***/ 400:\n/***/ (function(module, exports, __webpack_require__) {\n\n\t//! moment.js locale configuration\n\t//! locale : Polish [pl]\n\t//! author : Rafal Hirsz : https://github.com/evoL\n\t\n\t;(function (global, factory) {\n\t true ? factory(__webpack_require__(1)) :\n\t typeof define === 'function' && define.amd ? define(['../moment'], factory) :\n\t factory(global.moment)\n\t}(this, (function (moment) { 'use strict';\n\t\n\t //! moment.js locale configuration\n\t\n\t var monthsNominative = 'styczeń_luty_marzec_kwiecień_maj_czerwiec_lipiec_sierpień_wrzesień_październik_listopad_grudzień'.split(\n\t '_'\n\t ),\n\t monthsSubjective = 'stycznia_lutego_marca_kwietnia_maja_czerwca_lipca_sierpnia_września_października_listopada_grudnia'.split(\n\t '_'\n\t ),\n\t monthsParse = [\n\t /^sty/i,\n\t /^lut/i,\n\t /^mar/i,\n\t /^kwi/i,\n\t /^maj/i,\n\t /^cze/i,\n\t /^lip/i,\n\t /^sie/i,\n\t /^wrz/i,\n\t /^paź/i,\n\t /^lis/i,\n\t /^gru/i,\n\t ];\n\t function plural(n) {\n\t return n % 10 < 5 && n % 10 > 1 && ~~(n / 10) % 10 !== 1;\n\t }\n\t function translate(number, withoutSuffix, key) {\n\t var result = number + ' ';\n\t switch (key) {\n\t case 'ss':\n\t return result + (plural(number) ? 'sekundy' : 'sekund');\n\t case 'm':\n\t return withoutSuffix ? 'minuta' : 'minutę';\n\t case 'mm':\n\t return result + (plural(number) ? 'minuty' : 'minut');\n\t case 'h':\n\t return withoutSuffix ? 'godzina' : 'godzinę';\n\t case 'hh':\n\t return result + (plural(number) ? 'godziny' : 'godzin');\n\t case 'ww':\n\t return result + (plural(number) ? 'tygodnie' : 'tygodni');\n\t case 'MM':\n\t return result + (plural(number) ? 'miesiące' : 'miesięcy');\n\t case 'yy':\n\t return result + (plural(number) ? 'lata' : 'lat');\n\t }\n\t }\n\t\n\t var pl = moment.defineLocale('pl', {\n\t months: function (momentToFormat, format) {\n\t if (!momentToFormat) {\n\t return monthsNominative;\n\t } else if (/D MMMM/.test(format)) {\n\t return monthsSubjective[momentToFormat.month()];\n\t } else {\n\t return monthsNominative[momentToFormat.month()];\n\t }\n\t },\n\t monthsShort: 'sty_lut_mar_kwi_maj_cze_lip_sie_wrz_paź_lis_gru'.split('_'),\n\t monthsParse: monthsParse,\n\t longMonthsParse: monthsParse,\n\t shortMonthsParse: monthsParse,\n\t weekdays: 'niedziela_poniedziałek_wtorek_środa_czwartek_piątek_sobota'.split(\n\t '_'\n\t ),\n\t weekdaysShort: 'ndz_pon_wt_śr_czw_pt_sob'.split('_'),\n\t weekdaysMin: 'Nd_Pn_Wt_Śr_Cz_Pt_So'.split('_'),\n\t longDateFormat: {\n\t LT: 'HH:mm',\n\t LTS: 'HH:mm:ss',\n\t L: 'DD.MM.YYYY',\n\t LL: 'D MMMM YYYY',\n\t LLL: 'D MMMM YYYY HH:mm',\n\t LLLL: 'dddd, D MMMM YYYY HH:mm',\n\t },\n\t calendar: {\n\t sameDay: '[Dziś o] LT',\n\t nextDay: '[Jutro o] LT',\n\t nextWeek: function () {\n\t switch (this.day()) {\n\t case 0:\n\t return '[W niedzielę o] LT';\n\t\n\t case 2:\n\t return '[We wtorek o] LT';\n\t\n\t case 3:\n\t return '[W środę o] LT';\n\t\n\t case 6:\n\t return '[W sobotę o] LT';\n\t\n\t default:\n\t return '[W] dddd [o] LT';\n\t }\n\t },\n\t lastDay: '[Wczoraj o] LT',\n\t lastWeek: function () {\n\t switch (this.day()) {\n\t case 0:\n\t return '[W zeszłą niedzielę o] LT';\n\t case 3:\n\t return '[W zeszłą środę o] LT';\n\t case 6:\n\t return '[W zeszłą sobotę o] LT';\n\t default:\n\t return '[W zeszły] dddd [o] LT';\n\t }\n\t },\n\t sameElse: 'L',\n\t },\n\t relativeTime: {\n\t future: 'za %s',\n\t past: '%s temu',\n\t s: 'kilka sekund',\n\t ss: translate,\n\t m: translate,\n\t mm: translate,\n\t h: translate,\n\t hh: translate,\n\t d: '1 dzień',\n\t dd: '%d dni',\n\t w: 'tydzień',\n\t ww: translate,\n\t M: 'miesiąc',\n\t MM: translate,\n\t y: 'rok',\n\t yy: translate,\n\t },\n\t dayOfMonthOrdinalParse: /\\d{1,2}\\./,\n\t ordinal: '%d.',\n\t week: {\n\t dow: 1, // Monday is the first day of the week.\n\t doy: 4, // The week that contains Jan 4th is the first week of the year.\n\t },\n\t });\n\t\n\t return pl;\n\t\n\t})));\n\n\n/***/ }),\n\n/***/ 401:\n/***/ (function(module, exports, __webpack_require__) {\n\n\t//! moment.js locale configuration\n\t//! locale : Portuguese (Brazil) [pt-br]\n\t//! author : Caio Ribeiro Pereira : https://github.com/caio-ribeiro-pereira\n\t\n\t;(function (global, factory) {\n\t true ? factory(__webpack_require__(1)) :\n\t typeof define === 'function' && define.amd ? define(['../moment'], factory) :\n\t factory(global.moment)\n\t}(this, (function (moment) { 'use strict';\n\t\n\t //! moment.js locale configuration\n\t\n\t var ptBr = moment.defineLocale('pt-br', {\n\t months: 'janeiro_fevereiro_março_abril_maio_junho_julho_agosto_setembro_outubro_novembro_dezembro'.split(\n\t '_'\n\t ),\n\t monthsShort: 'jan_fev_mar_abr_mai_jun_jul_ago_set_out_nov_dez'.split('_'),\n\t weekdays: 'domingo_segunda-feira_terça-feira_quarta-feira_quinta-feira_sexta-feira_sábado'.split(\n\t '_'\n\t ),\n\t weekdaysShort: 'dom_seg_ter_qua_qui_sex_sáb'.split('_'),\n\t weekdaysMin: 'do_2ª_3ª_4ª_5ª_6ª_sá'.split('_'),\n\t weekdaysParseExact: true,\n\t longDateFormat: {\n\t LT: 'HH:mm',\n\t LTS: 'HH:mm:ss',\n\t L: 'DD/MM/YYYY',\n\t LL: 'D [de] MMMM [de] YYYY',\n\t LLL: 'D [de] MMMM [de] YYYY [às] HH:mm',\n\t LLLL: 'dddd, D [de] MMMM [de] YYYY [às] HH:mm',\n\t },\n\t calendar: {\n\t sameDay: '[Hoje às] LT',\n\t nextDay: '[Amanhã às] LT',\n\t nextWeek: 'dddd [às] LT',\n\t lastDay: '[Ontem às] LT',\n\t lastWeek: function () {\n\t return this.day() === 0 || this.day() === 6\n\t ? '[Último] dddd [às] LT' // Saturday + Sunday\n\t : '[Última] dddd [às] LT'; // Monday - Friday\n\t },\n\t sameElse: 'L',\n\t },\n\t relativeTime: {\n\t future: 'em %s',\n\t past: 'há %s',\n\t s: 'poucos segundos',\n\t ss: '%d segundos',\n\t m: 'um minuto',\n\t mm: '%d minutos',\n\t h: 'uma hora',\n\t hh: '%d horas',\n\t d: 'um dia',\n\t dd: '%d dias',\n\t M: 'um mês',\n\t MM: '%d meses',\n\t y: 'um ano',\n\t yy: '%d anos',\n\t },\n\t dayOfMonthOrdinalParse: /\\d{1,2}º/,\n\t ordinal: '%dº',\n\t invalidDate: 'Data inválida',\n\t });\n\t\n\t return ptBr;\n\t\n\t})));\n\n\n/***/ }),\n\n/***/ 402:\n/***/ (function(module, exports, __webpack_require__) {\n\n\t//! moment.js locale configuration\n\t//! locale : Portuguese [pt]\n\t//! author : Jefferson : https://github.com/jalex79\n\t\n\t;(function (global, factory) {\n\t true ? factory(__webpack_require__(1)) :\n\t typeof define === 'function' && define.amd ? define(['../moment'], factory) :\n\t factory(global.moment)\n\t}(this, (function (moment) { 'use strict';\n\t\n\t //! moment.js locale configuration\n\t\n\t var pt = moment.defineLocale('pt', {\n\t months: 'janeiro_fevereiro_março_abril_maio_junho_julho_agosto_setembro_outubro_novembro_dezembro'.split(\n\t '_'\n\t ),\n\t monthsShort: 'jan_fev_mar_abr_mai_jun_jul_ago_set_out_nov_dez'.split('_'),\n\t weekdays: 'Domingo_Segunda-feira_Terça-feira_Quarta-feira_Quinta-feira_Sexta-feira_Sábado'.split(\n\t '_'\n\t ),\n\t weekdaysShort: 'Dom_Seg_Ter_Qua_Qui_Sex_Sáb'.split('_'),\n\t weekdaysMin: 'Do_2ª_3ª_4ª_5ª_6ª_Sá'.split('_'),\n\t weekdaysParseExact: true,\n\t longDateFormat: {\n\t LT: 'HH:mm',\n\t LTS: 'HH:mm:ss',\n\t L: 'DD/MM/YYYY',\n\t LL: 'D [de] MMMM [de] YYYY',\n\t LLL: 'D [de] MMMM [de] YYYY HH:mm',\n\t LLLL: 'dddd, D [de] MMMM [de] YYYY HH:mm',\n\t },\n\t calendar: {\n\t sameDay: '[Hoje às] LT',\n\t nextDay: '[Amanhã às] LT',\n\t nextWeek: 'dddd [às] LT',\n\t lastDay: '[Ontem às] LT',\n\t lastWeek: function () {\n\t return this.day() === 0 || this.day() === 6\n\t ? '[Último] dddd [às] LT' // Saturday + Sunday\n\t : '[Última] dddd [às] LT'; // Monday - Friday\n\t },\n\t sameElse: 'L',\n\t },\n\t relativeTime: {\n\t future: 'em %s',\n\t past: 'há %s',\n\t s: 'segundos',\n\t ss: '%d segundos',\n\t m: 'um minuto',\n\t mm: '%d minutos',\n\t h: 'uma hora',\n\t hh: '%d horas',\n\t d: 'um dia',\n\t dd: '%d dias',\n\t w: 'uma semana',\n\t ww: '%d semanas',\n\t M: 'um mês',\n\t MM: '%d meses',\n\t y: 'um ano',\n\t yy: '%d anos',\n\t },\n\t dayOfMonthOrdinalParse: /\\d{1,2}º/,\n\t ordinal: '%dº',\n\t week: {\n\t dow: 1, // Monday is the first day of the week.\n\t doy: 4, // The week that contains Jan 4th is the first week of the year.\n\t },\n\t });\n\t\n\t return pt;\n\t\n\t})));\n\n\n/***/ }),\n\n/***/ 403:\n/***/ (function(module, exports, __webpack_require__) {\n\n\t//! moment.js locale configuration\n\t//! locale : Romanian [ro]\n\t//! author : Vlad Gurdiga : https://github.com/gurdiga\n\t//! author : Valentin Agachi : https://github.com/avaly\n\t//! author : Emanuel Cepoi : https://github.com/cepem\n\t\n\t;(function (global, factory) {\n\t true ? factory(__webpack_require__(1)) :\n\t typeof define === 'function' && define.amd ? define(['../moment'], factory) :\n\t factory(global.moment)\n\t}(this, (function (moment) { 'use strict';\n\t\n\t //! moment.js locale configuration\n\t\n\t function relativeTimeWithPlural(number, withoutSuffix, key) {\n\t var format = {\n\t ss: 'secunde',\n\t mm: 'minute',\n\t hh: 'ore',\n\t dd: 'zile',\n\t ww: 'săptămâni',\n\t MM: 'luni',\n\t yy: 'ani',\n\t },\n\t separator = ' ';\n\t if (number % 100 >= 20 || (number >= 100 && number % 100 === 0)) {\n\t separator = ' de ';\n\t }\n\t return number + separator + format[key];\n\t }\n\t\n\t var ro = moment.defineLocale('ro', {\n\t months: 'ianuarie_februarie_martie_aprilie_mai_iunie_iulie_august_septembrie_octombrie_noiembrie_decembrie'.split(\n\t '_'\n\t ),\n\t monthsShort: 'ian._feb._mart._apr._mai_iun._iul._aug._sept._oct._nov._dec.'.split(\n\t '_'\n\t ),\n\t monthsParseExact: true,\n\t weekdays: 'duminică_luni_marți_miercuri_joi_vineri_sâmbătă'.split('_'),\n\t weekdaysShort: 'Dum_Lun_Mar_Mie_Joi_Vin_Sâm'.split('_'),\n\t weekdaysMin: 'Du_Lu_Ma_Mi_Jo_Vi_Sâ'.split('_'),\n\t longDateFormat: {\n\t LT: 'H:mm',\n\t LTS: 'H:mm:ss',\n\t L: 'DD.MM.YYYY',\n\t LL: 'D MMMM YYYY',\n\t LLL: 'D MMMM YYYY H:mm',\n\t LLLL: 'dddd, D MMMM YYYY H:mm',\n\t },\n\t calendar: {\n\t sameDay: '[azi la] LT',\n\t nextDay: '[mâine la] LT',\n\t nextWeek: 'dddd [la] LT',\n\t lastDay: '[ieri la] LT',\n\t lastWeek: '[fosta] dddd [la] LT',\n\t sameElse: 'L',\n\t },\n\t relativeTime: {\n\t future: 'peste %s',\n\t past: '%s în urmă',\n\t s: 'câteva secunde',\n\t ss: relativeTimeWithPlural,\n\t m: 'un minut',\n\t mm: relativeTimeWithPlural,\n\t h: 'o oră',\n\t hh: relativeTimeWithPlural,\n\t d: 'o zi',\n\t dd: relativeTimeWithPlural,\n\t w: 'o săptămână',\n\t ww: relativeTimeWithPlural,\n\t M: 'o lună',\n\t MM: relativeTimeWithPlural,\n\t y: 'un an',\n\t yy: relativeTimeWithPlural,\n\t },\n\t week: {\n\t dow: 1, // Monday is the first day of the week.\n\t doy: 7, // The week that contains Jan 7th is the first week of the year.\n\t },\n\t });\n\t\n\t return ro;\n\t\n\t})));\n\n\n/***/ }),\n\n/***/ 404:\n/***/ (function(module, exports, __webpack_require__) {\n\n\t//! moment.js locale configuration\n\t//! locale : Russian [ru]\n\t//! author : Viktorminator : https://github.com/Viktorminator\n\t//! author : Menelion Elensúle : https://github.com/Oire\n\t//! author : Коренберг Марк : https://github.com/socketpair\n\t\n\t;(function (global, factory) {\n\t true ? factory(__webpack_require__(1)) :\n\t typeof define === 'function' && define.amd ? define(['../moment'], factory) :\n\t factory(global.moment)\n\t}(this, (function (moment) { 'use strict';\n\t\n\t //! moment.js locale configuration\n\t\n\t function plural(word, num) {\n\t var forms = word.split('_');\n\t return num % 10 === 1 && num % 100 !== 11\n\t ? forms[0]\n\t : num % 10 >= 2 && num % 10 <= 4 && (num % 100 < 10 || num % 100 >= 20)\n\t ? forms[1]\n\t : forms[2];\n\t }\n\t function relativeTimeWithPlural(number, withoutSuffix, key) {\n\t var format = {\n\t ss: withoutSuffix ? 'секунда_секунды_секунд' : 'секунду_секунды_секунд',\n\t mm: withoutSuffix ? 'минута_минуты_минут' : 'минуту_минуты_минут',\n\t hh: 'час_часа_часов',\n\t dd: 'день_дня_дней',\n\t ww: 'неделя_недели_недель',\n\t MM: 'месяц_месяца_месяцев',\n\t yy: 'год_года_лет',\n\t };\n\t if (key === 'm') {\n\t return withoutSuffix ? 'минута' : 'минуту';\n\t } else {\n\t return number + ' ' + plural(format[key], +number);\n\t }\n\t }\n\t var monthsParse = [\n\t /^янв/i,\n\t /^фев/i,\n\t /^мар/i,\n\t /^апр/i,\n\t /^ма[йя]/i,\n\t /^июн/i,\n\t /^июл/i,\n\t /^авг/i,\n\t /^сен/i,\n\t /^окт/i,\n\t /^ноя/i,\n\t /^дек/i,\n\t ];\n\t\n\t // http://new.gramota.ru/spravka/rules/139-prop : § 103\n\t // Сокращения месяцев: http://new.gramota.ru/spravka/buro/search-answer?s=242637\n\t // CLDR data: http://www.unicode.org/cldr/charts/28/summary/ru.html#1753\n\t var ru = moment.defineLocale('ru', {\n\t months: {\n\t format: 'января_февраля_марта_апреля_мая_июня_июля_августа_сентября_октября_ноября_декабря'.split(\n\t '_'\n\t ),\n\t standalone: 'январь_февраль_март_апрель_май_июнь_июль_август_сентябрь_октябрь_ноябрь_декабрь'.split(\n\t '_'\n\t ),\n\t },\n\t monthsShort: {\n\t // по CLDR именно \"июл.\" и \"июн.\", но какой смысл менять букву на точку?\n\t format: 'янв._февр._мар._апр._мая_июня_июля_авг._сент._окт._нояб._дек.'.split(\n\t '_'\n\t ),\n\t standalone: 'янв._февр._март_апр._май_июнь_июль_авг._сент._окт._нояб._дек.'.split(\n\t '_'\n\t ),\n\t },\n\t weekdays: {\n\t standalone: 'воскресенье_понедельник_вторник_среда_четверг_пятница_суббота'.split(\n\t '_'\n\t ),\n\t format: 'воскресенье_понедельник_вторник_среду_четверг_пятницу_субботу'.split(\n\t '_'\n\t ),\n\t isFormat: /\\[ ?[Вв] ?(?:прошлую|следующую|эту)? ?] ?dddd/,\n\t },\n\t weekdaysShort: 'вс_пн_вт_ср_чт_пт_сб'.split('_'),\n\t weekdaysMin: 'вс_пн_вт_ср_чт_пт_сб'.split('_'),\n\t monthsParse: monthsParse,\n\t longMonthsParse: monthsParse,\n\t shortMonthsParse: monthsParse,\n\t\n\t // полные названия с падежами, по три буквы, для некоторых, по 4 буквы, сокращения с точкой и без точки\n\t monthsRegex: /^(январ[ья]|янв\\.?|феврал[ья]|февр?\\.?|марта?|мар\\.?|апрел[ья]|апр\\.?|ма[йя]|июн[ья]|июн\\.?|июл[ья]|июл\\.?|августа?|авг\\.?|сентябр[ья]|сент?\\.?|октябр[ья]|окт\\.?|ноябр[ья]|нояб?\\.?|декабр[ья]|дек\\.?)/i,\n\t\n\t // копия предыдущего\n\t monthsShortRegex: /^(январ[ья]|янв\\.?|феврал[ья]|февр?\\.?|марта?|мар\\.?|апрел[ья]|апр\\.?|ма[йя]|июн[ья]|июн\\.?|июл[ья]|июл\\.?|августа?|авг\\.?|сентябр[ья]|сент?\\.?|октябр[ья]|окт\\.?|ноябр[ья]|нояб?\\.?|декабр[ья]|дек\\.?)/i,\n\t\n\t // полные названия с падежами\n\t monthsStrictRegex: /^(январ[яь]|феврал[яь]|марта?|апрел[яь]|ма[яй]|июн[яь]|июл[яь]|августа?|сентябр[яь]|октябр[яь]|ноябр[яь]|декабр[яь])/i,\n\t\n\t // Выражение, которое соответствует только сокращённым формам\n\t monthsShortStrictRegex: /^(янв\\.|февр?\\.|мар[т.]|апр\\.|ма[яй]|июн[ья.]|июл[ья.]|авг\\.|сент?\\.|окт\\.|нояб?\\.|дек\\.)/i,\n\t longDateFormat: {\n\t LT: 'H:mm',\n\t LTS: 'H:mm:ss',\n\t L: 'DD.MM.YYYY',\n\t LL: 'D MMMM YYYY г.',\n\t LLL: 'D MMMM YYYY г., H:mm',\n\t LLLL: 'dddd, D MMMM YYYY г., H:mm',\n\t },\n\t calendar: {\n\t sameDay: '[Сегодня, в] LT',\n\t nextDay: '[Завтра, в] LT',\n\t lastDay: '[Вчера, в] LT',\n\t nextWeek: function (now) {\n\t if (now.week() !== this.week()) {\n\t switch (this.day()) {\n\t case 0:\n\t return '[В следующее] dddd, [в] LT';\n\t case 1:\n\t case 2:\n\t case 4:\n\t return '[В следующий] dddd, [в] LT';\n\t case 3:\n\t case 5:\n\t case 6:\n\t return '[В следующую] dddd, [в] LT';\n\t }\n\t } else {\n\t if (this.day() === 2) {\n\t return '[Во] dddd, [в] LT';\n\t } else {\n\t return '[В] dddd, [в] LT';\n\t }\n\t }\n\t },\n\t lastWeek: function (now) {\n\t if (now.week() !== this.week()) {\n\t switch (this.day()) {\n\t case 0:\n\t return '[В прошлое] dddd, [в] LT';\n\t case 1:\n\t case 2:\n\t case 4:\n\t return '[В прошлый] dddd, [в] LT';\n\t case 3:\n\t case 5:\n\t case 6:\n\t return '[В прошлую] dddd, [в] LT';\n\t }\n\t } else {\n\t if (this.day() === 2) {\n\t return '[Во] dddd, [в] LT';\n\t } else {\n\t return '[В] dddd, [в] LT';\n\t }\n\t }\n\t },\n\t sameElse: 'L',\n\t },\n\t relativeTime: {\n\t future: 'через %s',\n\t past: '%s назад',\n\t s: 'несколько секунд',\n\t ss: relativeTimeWithPlural,\n\t m: relativeTimeWithPlural,\n\t mm: relativeTimeWithPlural,\n\t h: 'час',\n\t hh: relativeTimeWithPlural,\n\t d: 'день',\n\t dd: relativeTimeWithPlural,\n\t w: 'неделя',\n\t ww: relativeTimeWithPlural,\n\t M: 'месяц',\n\t MM: relativeTimeWithPlural,\n\t y: 'год',\n\t yy: relativeTimeWithPlural,\n\t },\n\t meridiemParse: /ночи|утра|дня|вечера/i,\n\t isPM: function (input) {\n\t return /^(дня|вечера)$/.test(input);\n\t },\n\t meridiem: function (hour, minute, isLower) {\n\t if (hour < 4) {\n\t return 'ночи';\n\t } else if (hour < 12) {\n\t return 'утра';\n\t } else if (hour < 17) {\n\t return 'дня';\n\t } else {\n\t return 'вечера';\n\t }\n\t },\n\t dayOfMonthOrdinalParse: /\\d{1,2}-(й|го|я)/,\n\t ordinal: function (number, period) {\n\t switch (period) {\n\t case 'M':\n\t case 'd':\n\t case 'DDD':\n\t return number + '-й';\n\t case 'D':\n\t return number + '-го';\n\t case 'w':\n\t case 'W':\n\t return number + '-я';\n\t default:\n\t return number;\n\t }\n\t },\n\t week: {\n\t dow: 1, // Monday is the first day of the week.\n\t doy: 4, // The week that contains Jan 4th is the first week of the year.\n\t },\n\t });\n\t\n\t return ru;\n\t\n\t})));\n\n\n/***/ }),\n\n/***/ 405:\n/***/ (function(module, exports, __webpack_require__) {\n\n\t//! moment.js locale configuration\n\t//! locale : Sindhi [sd]\n\t//! author : Narain Sagar : https://github.com/narainsagar\n\t\n\t;(function (global, factory) {\n\t true ? factory(__webpack_require__(1)) :\n\t typeof define === 'function' && define.amd ? define(['../moment'], factory) :\n\t factory(global.moment)\n\t}(this, (function (moment) { 'use strict';\n\t\n\t //! moment.js locale configuration\n\t\n\t var months = [\n\t 'جنوري',\n\t 'فيبروري',\n\t 'مارچ',\n\t 'اپريل',\n\t 'مئي',\n\t 'جون',\n\t 'جولاءِ',\n\t 'آگسٽ',\n\t 'سيپٽمبر',\n\t 'آڪٽوبر',\n\t 'نومبر',\n\t 'ڊسمبر',\n\t ],\n\t days = ['آچر', 'سومر', 'اڱارو', 'اربع', 'خميس', 'جمع', 'ڇنڇر'];\n\t\n\t var sd = moment.defineLocale('sd', {\n\t months: months,\n\t monthsShort: months,\n\t weekdays: days,\n\t weekdaysShort: days,\n\t weekdaysMin: days,\n\t longDateFormat: {\n\t LT: 'HH:mm',\n\t LTS: 'HH:mm:ss',\n\t L: 'DD/MM/YYYY',\n\t LL: 'D MMMM YYYY',\n\t LLL: 'D MMMM YYYY HH:mm',\n\t LLLL: 'dddd، D MMMM YYYY HH:mm',\n\t },\n\t meridiemParse: /صبح|شام/,\n\t isPM: function (input) {\n\t return 'شام' === input;\n\t },\n\t meridiem: function (hour, minute, isLower) {\n\t if (hour < 12) {\n\t return 'صبح';\n\t }\n\t return 'شام';\n\t },\n\t calendar: {\n\t sameDay: '[اڄ] LT',\n\t nextDay: '[سڀاڻي] LT',\n\t nextWeek: 'dddd [اڳين هفتي تي] LT',\n\t lastDay: '[ڪالهه] LT',\n\t lastWeek: '[گزريل هفتي] dddd [تي] LT',\n\t sameElse: 'L',\n\t },\n\t relativeTime: {\n\t future: '%s پوء',\n\t past: '%s اڳ',\n\t s: 'چند سيڪنڊ',\n\t ss: '%d سيڪنڊ',\n\t m: 'هڪ منٽ',\n\t mm: '%d منٽ',\n\t h: 'هڪ ڪلاڪ',\n\t hh: '%d ڪلاڪ',\n\t d: 'هڪ ڏينهن',\n\t dd: '%d ڏينهن',\n\t M: 'هڪ مهينو',\n\t MM: '%d مهينا',\n\t y: 'هڪ سال',\n\t yy: '%d سال',\n\t },\n\t preparse: function (string) {\n\t return string.replace(/،/g, ',');\n\t },\n\t postformat: function (string) {\n\t return string.replace(/,/g, '،');\n\t },\n\t week: {\n\t dow: 1, // Monday is the first day of the week.\n\t doy: 4, // The week that contains Jan 4th is the first week of the year.\n\t },\n\t });\n\t\n\t return sd;\n\t\n\t})));\n\n\n/***/ }),\n\n/***/ 406:\n/***/ (function(module, exports, __webpack_require__) {\n\n\t//! moment.js locale configuration\n\t//! locale : Northern Sami [se]\n\t//! authors : Bård Rolstad Henriksen : https://github.com/karamell\n\t\n\t;(function (global, factory) {\n\t true ? factory(__webpack_require__(1)) :\n\t typeof define === 'function' && define.amd ? define(['../moment'], factory) :\n\t factory(global.moment)\n\t}(this, (function (moment) { 'use strict';\n\t\n\t //! moment.js locale configuration\n\t\n\t var se = moment.defineLocale('se', {\n\t 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\t '_'\n\t ),\n\t monthsShort: 'ođđj_guov_njuk_cuo_mies_geas_suoi_borg_čakč_golg_skáb_juov'.split(\n\t '_'\n\t ),\n\t weekdays: 'sotnabeaivi_vuossárga_maŋŋebárga_gaskavahkku_duorastat_bearjadat_lávvardat'.split(\n\t '_'\n\t ),\n\t weekdaysShort: 'sotn_vuos_maŋ_gask_duor_bear_láv'.split('_'),\n\t weekdaysMin: 's_v_m_g_d_b_L'.split('_'),\n\t longDateFormat: {\n\t LT: 'HH:mm',\n\t LTS: 'HH:mm:ss',\n\t L: 'DD.MM.YYYY',\n\t LL: 'MMMM D. [b.] YYYY',\n\t LLL: 'MMMM D. [b.] YYYY [ti.] HH:mm',\n\t LLLL: 'dddd, MMMM D. [b.] YYYY [ti.] HH:mm',\n\t },\n\t calendar: {\n\t sameDay: '[otne ti] LT',\n\t nextDay: '[ihttin ti] LT',\n\t nextWeek: 'dddd [ti] LT',\n\t lastDay: '[ikte ti] LT',\n\t lastWeek: '[ovddit] dddd [ti] LT',\n\t sameElse: 'L',\n\t },\n\t relativeTime: {\n\t future: '%s geažes',\n\t past: 'maŋit %s',\n\t s: 'moadde sekunddat',\n\t ss: '%d sekunddat',\n\t m: 'okta minuhta',\n\t mm: '%d minuhtat',\n\t h: 'okta diimmu',\n\t hh: '%d diimmut',\n\t d: 'okta beaivi',\n\t dd: '%d beaivvit',\n\t M: 'okta mánnu',\n\t MM: '%d mánut',\n\t y: 'okta jahki',\n\t yy: '%d jagit',\n\t },\n\t dayOfMonthOrdinalParse: /\\d{1,2}\\./,\n\t ordinal: '%d.',\n\t week: {\n\t dow: 1, // Monday is the first day of the week.\n\t doy: 4, // The week that contains Jan 4th is the first week of the year.\n\t },\n\t });\n\t\n\t return se;\n\t\n\t})));\n\n\n/***/ }),\n\n/***/ 407:\n/***/ (function(module, exports, __webpack_require__) {\n\n\t//! moment.js locale configuration\n\t//! locale : Sinhalese [si]\n\t//! author : Sampath Sitinamaluwa : https://github.com/sampathsris\n\t\n\t;(function (global, factory) {\n\t true ? factory(__webpack_require__(1)) :\n\t typeof define === 'function' && define.amd ? define(['../moment'], factory) :\n\t factory(global.moment)\n\t}(this, (function (moment) { 'use strict';\n\t\n\t //! moment.js locale configuration\n\t\n\t /*jshint -W100*/\n\t var si = moment.defineLocale('si', {\n\t months: 'ජනවාරි_පෙබරවාරි_මාර්තු_අප්‍රේල්_මැයි_ජූනි_ජූලි_අගෝස්තු_සැප්තැම්බර්_ඔක්තෝබර්_නොවැම්බර්_දෙසැම්බර්'.split(\n\t '_'\n\t ),\n\t monthsShort: 'ජන_පෙබ_මාර්_අප්_මැයි_ජූනි_ජූලි_අගෝ_සැප්_ඔක්_නොවැ_දෙසැ'.split(\n\t '_'\n\t ),\n\t weekdays: 'ඉරිදා_සඳුදා_අඟහරුවාදා_බදාදා_බ්‍රහස්පතින්දා_සිකුරාදා_සෙනසුරාදා'.split(\n\t '_'\n\t ),\n\t weekdaysShort: 'ඉරි_සඳු_අඟ_බදා_බ්‍රහ_සිකු_සෙන'.split('_'),\n\t weekdaysMin: 'ඉ_ස_අ_බ_බ්‍ර_සි_සෙ'.split('_'),\n\t weekdaysParseExact: true,\n\t longDateFormat: {\n\t LT: 'a h:mm',\n\t LTS: 'a h:mm:ss',\n\t L: 'YYYY/MM/DD',\n\t LL: 'YYYY MMMM D',\n\t LLL: 'YYYY MMMM D, a h:mm',\n\t LLLL: 'YYYY MMMM D [වැනි] dddd, a h:mm:ss',\n\t },\n\t calendar: {\n\t sameDay: '[අද] LT[ට]',\n\t nextDay: '[හෙට] LT[ට]',\n\t nextWeek: 'dddd LT[ට]',\n\t lastDay: '[ඊයේ] LT[ට]',\n\t lastWeek: '[පසුගිය] dddd LT[ට]',\n\t sameElse: 'L',\n\t },\n\t relativeTime: {\n\t future: '%sකින්',\n\t past: '%sකට පෙර',\n\t s: 'තත්පර කිහිපය',\n\t ss: 'තත්පර %d',\n\t m: 'මිනිත්තුව',\n\t mm: 'මිනිත්තු %d',\n\t h: 'පැය',\n\t hh: 'පැය %d',\n\t d: 'දිනය',\n\t dd: 'දින %d',\n\t M: 'මාසය',\n\t MM: 'මාස %d',\n\t y: 'වසර',\n\t yy: 'වසර %d',\n\t },\n\t dayOfMonthOrdinalParse: /\\d{1,2} වැනි/,\n\t ordinal: function (number) {\n\t return number + ' වැනි';\n\t },\n\t meridiemParse: /පෙර වරු|පස් වරු|පෙ.ව|ප.ව./,\n\t isPM: function (input) {\n\t return input === 'ප.ව.' || input === 'පස් වරු';\n\t },\n\t meridiem: function (hours, minutes, isLower) {\n\t if (hours > 11) {\n\t return isLower ? 'ප.ව.' : 'පස් වරු';\n\t } else {\n\t return isLower ? 'පෙ.ව.' : 'පෙර වරු';\n\t }\n\t },\n\t });\n\t\n\t return si;\n\t\n\t})));\n\n\n/***/ }),\n\n/***/ 408:\n/***/ (function(module, exports, __webpack_require__) {\n\n\t//! moment.js locale configuration\n\t//! locale : Slovak [sk]\n\t//! author : Martin Minka : https://github.com/k2s\n\t//! based on work of petrbela : https://github.com/petrbela\n\t\n\t;(function (global, factory) {\n\t true ? factory(__webpack_require__(1)) :\n\t typeof define === 'function' && define.amd ? define(['../moment'], factory) :\n\t factory(global.moment)\n\t}(this, (function (moment) { 'use strict';\n\t\n\t //! moment.js locale configuration\n\t\n\t var months = 'január_február_marec_apríl_máj_jún_júl_august_september_október_november_december'.split(\n\t '_'\n\t ),\n\t monthsShort = 'jan_feb_mar_apr_máj_jún_júl_aug_sep_okt_nov_dec'.split('_');\n\t function plural(n) {\n\t return n > 1 && n < 5;\n\t }\n\t function translate(number, withoutSuffix, key, isFuture) {\n\t var result = number + ' ';\n\t switch (key) {\n\t case 's': // a few seconds / in a few seconds / a few seconds ago\n\t return withoutSuffix || isFuture ? 'pár sekúnd' : 'pár sekundami';\n\t case 'ss': // 9 seconds / in 9 seconds / 9 seconds ago\n\t if (withoutSuffix || isFuture) {\n\t return result + (plural(number) ? 'sekundy' : 'sekúnd');\n\t } else {\n\t return result + 'sekundami';\n\t }\n\t case 'm': // a minute / in a minute / a minute ago\n\t return withoutSuffix ? 'minúta' : isFuture ? 'minútu' : 'minútou';\n\t case 'mm': // 9 minutes / in 9 minutes / 9 minutes ago\n\t if (withoutSuffix || isFuture) {\n\t return result + (plural(number) ? 'minúty' : 'minút');\n\t } else {\n\t return result + 'minútami';\n\t }\n\t case 'h': // an hour / in an hour / an hour ago\n\t return withoutSuffix ? 'hodina' : isFuture ? 'hodinu' : 'hodinou';\n\t case 'hh': // 9 hours / in 9 hours / 9 hours ago\n\t if (withoutSuffix || isFuture) {\n\t return result + (plural(number) ? 'hodiny' : 'hodín');\n\t } else {\n\t return result + 'hodinami';\n\t }\n\t case 'd': // a day / in a day / a day ago\n\t return withoutSuffix || isFuture ? 'deň' : 'dňom';\n\t case 'dd': // 9 days / in 9 days / 9 days ago\n\t if (withoutSuffix || isFuture) {\n\t return result + (plural(number) ? 'dni' : 'dní');\n\t } else {\n\t return result + 'dňami';\n\t }\n\t case 'M': // a month / in a month / a month ago\n\t return withoutSuffix || isFuture ? 'mesiac' : 'mesiacom';\n\t case 'MM': // 9 months / in 9 months / 9 months ago\n\t if (withoutSuffix || isFuture) {\n\t return result + (plural(number) ? 'mesiace' : 'mesiacov');\n\t } else {\n\t return result + 'mesiacmi';\n\t }\n\t case 'y': // a year / in a year / a year ago\n\t return withoutSuffix || isFuture ? 'rok' : 'rokom';\n\t case 'yy': // 9 years / in 9 years / 9 years ago\n\t if (withoutSuffix || isFuture) {\n\t return result + (plural(number) ? 'roky' : 'rokov');\n\t } else {\n\t return result + 'rokmi';\n\t }\n\t }\n\t }\n\t\n\t var sk = moment.defineLocale('sk', {\n\t months: months,\n\t monthsShort: monthsShort,\n\t weekdays: 'nedeľa_pondelok_utorok_streda_štvrtok_piatok_sobota'.split('_'),\n\t weekdaysShort: 'ne_po_ut_st_št_pi_so'.split('_'),\n\t weekdaysMin: 'ne_po_ut_st_št_pi_so'.split('_'),\n\t longDateFormat: {\n\t LT: 'H:mm',\n\t LTS: 'H:mm:ss',\n\t L: 'DD.MM.YYYY',\n\t LL: 'D. MMMM YYYY',\n\t LLL: 'D. MMMM YYYY H:mm',\n\t LLLL: 'dddd D. MMMM YYYY H:mm',\n\t },\n\t calendar: {\n\t sameDay: '[dnes o] LT',\n\t nextDay: '[zajtra o] LT',\n\t nextWeek: function () {\n\t switch (this.day()) {\n\t case 0:\n\t return '[v nedeľu o] LT';\n\t case 1:\n\t case 2:\n\t return '[v] dddd [o] LT';\n\t case 3:\n\t return '[v stredu o] LT';\n\t case 4:\n\t return '[vo štvrtok o] LT';\n\t case 5:\n\t return '[v piatok o] LT';\n\t case 6:\n\t return '[v sobotu o] LT';\n\t }\n\t },\n\t lastDay: '[včera o] LT',\n\t lastWeek: function () {\n\t switch (this.day()) {\n\t case 0:\n\t return '[minulú nedeľu o] LT';\n\t case 1:\n\t case 2:\n\t return '[minulý] dddd [o] LT';\n\t case 3:\n\t return '[minulú stredu o] LT';\n\t case 4:\n\t case 5:\n\t return '[minulý] dddd [o] LT';\n\t case 6:\n\t return '[minulú sobotu o] LT';\n\t }\n\t },\n\t sameElse: 'L',\n\t },\n\t relativeTime: {\n\t future: 'za %s',\n\t past: 'pred %s',\n\t s: translate,\n\t ss: translate,\n\t m: translate,\n\t mm: translate,\n\t h: translate,\n\t hh: translate,\n\t d: translate,\n\t dd: translate,\n\t M: translate,\n\t MM: translate,\n\t y: translate,\n\t yy: translate,\n\t },\n\t dayOfMonthOrdinalParse: /\\d{1,2}\\./,\n\t ordinal: '%d.',\n\t week: {\n\t dow: 1, // Monday is the first day of the week.\n\t doy: 4, // The week that contains Jan 4th is the first week of the year.\n\t },\n\t });\n\t\n\t return sk;\n\t\n\t})));\n\n\n/***/ }),\n\n/***/ 409:\n/***/ (function(module, exports, __webpack_require__) {\n\n\t//! moment.js locale configuration\n\t//! locale : Slovenian [sl]\n\t//! author : Robert Sedovšek : https://github.com/sedovsek\n\t\n\t;(function (global, factory) {\n\t true ? factory(__webpack_require__(1)) :\n\t typeof define === 'function' && define.amd ? define(['../moment'], factory) :\n\t factory(global.moment)\n\t}(this, (function (moment) { 'use strict';\n\t\n\t //! moment.js locale configuration\n\t\n\t function processRelativeTime(number, withoutSuffix, key, isFuture) {\n\t var result = number + ' ';\n\t switch (key) {\n\t case 's':\n\t return withoutSuffix || isFuture\n\t ? 'nekaj sekund'\n\t : 'nekaj sekundami';\n\t case 'ss':\n\t if (number === 1) {\n\t result += withoutSuffix ? 'sekundo' : 'sekundi';\n\t } else if (number === 2) {\n\t result += withoutSuffix || isFuture ? 'sekundi' : 'sekundah';\n\t } else if (number < 5) {\n\t result += withoutSuffix || isFuture ? 'sekunde' : 'sekundah';\n\t } else {\n\t result += 'sekund';\n\t }\n\t return result;\n\t case 'm':\n\t return withoutSuffix ? 'ena minuta' : 'eno minuto';\n\t case 'mm':\n\t if (number === 1) {\n\t result += withoutSuffix ? 'minuta' : 'minuto';\n\t } else if (number === 2) {\n\t result += withoutSuffix || isFuture ? 'minuti' : 'minutama';\n\t } else if (number < 5) {\n\t result += withoutSuffix || isFuture ? 'minute' : 'minutami';\n\t } else {\n\t result += withoutSuffix || isFuture ? 'minut' : 'minutami';\n\t }\n\t return result;\n\t case 'h':\n\t return withoutSuffix ? 'ena ura' : 'eno uro';\n\t case 'hh':\n\t if (number === 1) {\n\t result += withoutSuffix ? 'ura' : 'uro';\n\t } else if (number === 2) {\n\t result += withoutSuffix || isFuture ? 'uri' : 'urama';\n\t } else if (number < 5) {\n\t result += withoutSuffix || isFuture ? 'ure' : 'urami';\n\t } else {\n\t result += withoutSuffix || isFuture ? 'ur' : 'urami';\n\t }\n\t return result;\n\t case 'd':\n\t return withoutSuffix || isFuture ? 'en dan' : 'enim dnem';\n\t case 'dd':\n\t if (number === 1) {\n\t result += withoutSuffix || isFuture ? 'dan' : 'dnem';\n\t } else if (number === 2) {\n\t result += withoutSuffix || isFuture ? 'dni' : 'dnevoma';\n\t } else {\n\t result += withoutSuffix || isFuture ? 'dni' : 'dnevi';\n\t }\n\t return result;\n\t case 'M':\n\t return withoutSuffix || isFuture ? 'en mesec' : 'enim mesecem';\n\t case 'MM':\n\t if (number === 1) {\n\t result += withoutSuffix || isFuture ? 'mesec' : 'mesecem';\n\t } else if (number === 2) {\n\t result += withoutSuffix || isFuture ? 'meseca' : 'mesecema';\n\t } else if (number < 5) {\n\t result += withoutSuffix || isFuture ? 'mesece' : 'meseci';\n\t } else {\n\t result += withoutSuffix || isFuture ? 'mesecev' : 'meseci';\n\t }\n\t return result;\n\t case 'y':\n\t return withoutSuffix || isFuture ? 'eno leto' : 'enim letom';\n\t case 'yy':\n\t if (number === 1) {\n\t result += withoutSuffix || isFuture ? 'leto' : 'letom';\n\t } else if (number === 2) {\n\t result += withoutSuffix || isFuture ? 'leti' : 'letoma';\n\t } else if (number < 5) {\n\t result += withoutSuffix || isFuture ? 'leta' : 'leti';\n\t } else {\n\t result += withoutSuffix || isFuture ? 'let' : 'leti';\n\t }\n\t return result;\n\t }\n\t }\n\t\n\t var sl = moment.defineLocale('sl', {\n\t months: 'januar_februar_marec_april_maj_junij_julij_avgust_september_oktober_november_december'.split(\n\t '_'\n\t ),\n\t monthsShort: 'jan._feb._mar._apr._maj._jun._jul._avg._sep._okt._nov._dec.'.split(\n\t '_'\n\t ),\n\t monthsParseExact: true,\n\t weekdays: 'nedelja_ponedeljek_torek_sreda_četrtek_petek_sobota'.split('_'),\n\t weekdaysShort: 'ned._pon._tor._sre._čet._pet._sob.'.split('_'),\n\t weekdaysMin: 'ne_po_to_sr_če_pe_so'.split('_'),\n\t weekdaysParseExact: true,\n\t longDateFormat: {\n\t LT: 'H:mm',\n\t LTS: 'H:mm:ss',\n\t L: 'DD. MM. YYYY',\n\t LL: 'D. MMMM YYYY',\n\t LLL: 'D. MMMM YYYY H:mm',\n\t LLLL: 'dddd, D. MMMM YYYY H:mm',\n\t },\n\t calendar: {\n\t sameDay: '[danes ob] LT',\n\t nextDay: '[jutri ob] LT',\n\t\n\t nextWeek: function () {\n\t switch (this.day()) {\n\t case 0:\n\t return '[v] [nedeljo] [ob] LT';\n\t case 3:\n\t return '[v] [sredo] [ob] LT';\n\t case 6:\n\t return '[v] [soboto] [ob] LT';\n\t case 1:\n\t case 2:\n\t case 4:\n\t case 5:\n\t return '[v] dddd [ob] LT';\n\t }\n\t },\n\t lastDay: '[včeraj ob] LT',\n\t lastWeek: function () {\n\t switch (this.day()) {\n\t case 0:\n\t return '[prejšnjo] [nedeljo] [ob] LT';\n\t case 3:\n\t return '[prejšnjo] [sredo] [ob] LT';\n\t case 6:\n\t return '[prejšnjo] [soboto] [ob] LT';\n\t case 1:\n\t case 2:\n\t case 4:\n\t case 5:\n\t return '[prejšnji] dddd [ob] LT';\n\t }\n\t },\n\t sameElse: 'L',\n\t },\n\t relativeTime: {\n\t future: 'čez %s',\n\t past: 'pred %s',\n\t s: processRelativeTime,\n\t ss: processRelativeTime,\n\t m: processRelativeTime,\n\t mm: processRelativeTime,\n\t h: processRelativeTime,\n\t hh: processRelativeTime,\n\t d: processRelativeTime,\n\t dd: processRelativeTime,\n\t M: processRelativeTime,\n\t MM: processRelativeTime,\n\t y: processRelativeTime,\n\t yy: processRelativeTime,\n\t },\n\t dayOfMonthOrdinalParse: /\\d{1,2}\\./,\n\t ordinal: '%d.',\n\t week: {\n\t dow: 1, // Monday is the first day of the week.\n\t doy: 7, // The week that contains Jan 7th is the first week of the year.\n\t },\n\t });\n\t\n\t return sl;\n\t\n\t})));\n\n\n/***/ }),\n\n/***/ 410:\n/***/ (function(module, exports, __webpack_require__) {\n\n\t//! moment.js locale configuration\n\t//! locale : Albanian [sq]\n\t//! author : Flakërim Ismani : https://github.com/flakerimi\n\t//! author : Menelion Elensúle : https://github.com/Oire\n\t//! author : Oerd Cukalla : https://github.com/oerd\n\t\n\t;(function (global, factory) {\n\t true ? factory(__webpack_require__(1)) :\n\t typeof define === 'function' && define.amd ? define(['../moment'], factory) :\n\t factory(global.moment)\n\t}(this, (function (moment) { 'use strict';\n\t\n\t //! moment.js locale configuration\n\t\n\t var sq = moment.defineLocale('sq', {\n\t months: 'Janar_Shkurt_Mars_Prill_Maj_Qershor_Korrik_Gusht_Shtator_Tetor_Nëntor_Dhjetor'.split(\n\t '_'\n\t ),\n\t monthsShort: 'Jan_Shk_Mar_Pri_Maj_Qer_Kor_Gus_Sht_Tet_Nën_Dhj'.split('_'),\n\t weekdays: 'E Diel_E Hënë_E Martë_E Mërkurë_E Enjte_E Premte_E Shtunë'.split(\n\t '_'\n\t ),\n\t weekdaysShort: 'Die_Hën_Mar_Mër_Enj_Pre_Sht'.split('_'),\n\t weekdaysMin: 'D_H_Ma_Më_E_P_Sh'.split('_'),\n\t weekdaysParseExact: true,\n\t meridiemParse: /PD|MD/,\n\t isPM: function (input) {\n\t return input.charAt(0) === 'M';\n\t },\n\t meridiem: function (hours, minutes, isLower) {\n\t return hours < 12 ? 'PD' : 'MD';\n\t },\n\t longDateFormat: {\n\t LT: 'HH:mm',\n\t LTS: 'HH:mm:ss',\n\t L: 'DD/MM/YYYY',\n\t LL: 'D MMMM YYYY',\n\t LLL: 'D MMMM YYYY HH:mm',\n\t LLLL: 'dddd, D MMMM YYYY HH:mm',\n\t },\n\t calendar: {\n\t sameDay: '[Sot në] LT',\n\t nextDay: '[Nesër në] LT',\n\t nextWeek: 'dddd [në] LT',\n\t lastDay: '[Dje në] LT',\n\t lastWeek: 'dddd [e kaluar në] LT',\n\t sameElse: 'L',\n\t },\n\t relativeTime: {\n\t future: 'në %s',\n\t past: '%s më parë',\n\t s: 'disa sekonda',\n\t ss: '%d sekonda',\n\t m: 'një minutë',\n\t mm: '%d minuta',\n\t h: 'një orë',\n\t hh: '%d orë',\n\t d: 'një ditë',\n\t dd: '%d ditë',\n\t M: 'një muaj',\n\t MM: '%d muaj',\n\t y: 'një vit',\n\t yy: '%d vite',\n\t },\n\t dayOfMonthOrdinalParse: /\\d{1,2}\\./,\n\t ordinal: '%d.',\n\t week: {\n\t dow: 1, // Monday is the first day of the week.\n\t doy: 4, // The week that contains Jan 4th is the first week of the year.\n\t },\n\t });\n\t\n\t return sq;\n\t\n\t})));\n\n\n/***/ }),\n\n/***/ 411:\n/***/ (function(module, exports, __webpack_require__) {\n\n\t//! moment.js locale configuration\n\t//! locale : Serbian Cyrillic [sr-cyrl]\n\t//! author : Milan Janačković : https://github.com/milan-j\n\t//! author : Stefan Crnjaković : https://github.com/crnjakovic\n\t\n\t;(function (global, factory) {\n\t true ? factory(__webpack_require__(1)) :\n\t typeof define === 'function' && define.amd ? define(['../moment'], factory) :\n\t factory(global.moment)\n\t}(this, (function (moment) { 'use strict';\n\t\n\t //! moment.js locale configuration\n\t\n\t var translator = {\n\t words: {\n\t //Different grammatical cases\n\t ss: ['секунда', 'секунде', 'секунди'],\n\t m: ['један минут', 'једне минуте'],\n\t mm: ['минут', 'минуте', 'минута'],\n\t h: ['један сат', 'једног сата'],\n\t hh: ['сат', 'сата', 'сати'],\n\t dd: ['дан', 'дана', 'дана'],\n\t MM: ['месец', 'месеца', 'месеци'],\n\t yy: ['година', 'године', 'година'],\n\t },\n\t correctGrammaticalCase: function (number, wordKey) {\n\t return number === 1\n\t ? wordKey[0]\n\t : number >= 2 && number <= 4\n\t ? wordKey[1]\n\t : wordKey[2];\n\t },\n\t translate: function (number, withoutSuffix, key) {\n\t var wordKey = translator.words[key];\n\t if (key.length === 1) {\n\t return withoutSuffix ? wordKey[0] : wordKey[1];\n\t } else {\n\t return (\n\t number +\n\t ' ' +\n\t translator.correctGrammaticalCase(number, wordKey)\n\t );\n\t }\n\t },\n\t };\n\t\n\t var srCyrl = moment.defineLocale('sr-cyrl', {\n\t months: 'јануар_фебруар_март_април_мај_јун_јул_август_септембар_октобар_новембар_децембар'.split(\n\t '_'\n\t ),\n\t monthsShort: 'јан._феб._мар._апр._мај_јун_јул_авг._сеп._окт._нов._дец.'.split(\n\t '_'\n\t ),\n\t monthsParseExact: true,\n\t weekdays: 'недеља_понедељак_уторак_среда_четвртак_петак_субота'.split('_'),\n\t weekdaysShort: 'нед._пон._уто._сре._чет._пет._суб.'.split('_'),\n\t weekdaysMin: 'не_по_ут_ср_че_пе_су'.split('_'),\n\t weekdaysParseExact: true,\n\t longDateFormat: {\n\t LT: 'H:mm',\n\t LTS: 'H:mm:ss',\n\t L: 'D. M. YYYY.',\n\t LL: 'D. MMMM YYYY.',\n\t LLL: 'D. MMMM YYYY. H:mm',\n\t LLLL: 'dddd, D. MMMM YYYY. H:mm',\n\t },\n\t calendar: {\n\t sameDay: '[данас у] LT',\n\t nextDay: '[сутра у] LT',\n\t nextWeek: function () {\n\t switch (this.day()) {\n\t case 0:\n\t return '[у] [недељу] [у] LT';\n\t case 3:\n\t return '[у] [среду] [у] LT';\n\t case 6:\n\t return '[у] [суботу] [у] LT';\n\t case 1:\n\t case 2:\n\t case 4:\n\t case 5:\n\t return '[у] dddd [у] LT';\n\t }\n\t },\n\t lastDay: '[јуче у] LT',\n\t lastWeek: function () {\n\t var lastWeekDays = [\n\t '[прошле] [недеље] [у] LT',\n\t '[прошлог] [понедељка] [у] LT',\n\t '[прошлог] [уторка] [у] LT',\n\t '[прошле] [среде] [у] LT',\n\t '[прошлог] [четвртка] [у] LT',\n\t '[прошлог] [петка] [у] LT',\n\t '[прошле] [суботе] [у] LT',\n\t ];\n\t return lastWeekDays[this.day()];\n\t },\n\t sameElse: 'L',\n\t },\n\t relativeTime: {\n\t future: 'за %s',\n\t past: 'пре %s',\n\t s: 'неколико секунди',\n\t ss: translator.translate,\n\t m: translator.translate,\n\t mm: translator.translate,\n\t h: translator.translate,\n\t hh: translator.translate,\n\t d: 'дан',\n\t dd: translator.translate,\n\t M: 'месец',\n\t MM: translator.translate,\n\t y: 'годину',\n\t yy: translator.translate,\n\t },\n\t dayOfMonthOrdinalParse: /\\d{1,2}\\./,\n\t ordinal: '%d.',\n\t week: {\n\t dow: 1, // Monday is the first day of the week.\n\t doy: 7, // The week that contains Jan 1st is the first week of the year.\n\t },\n\t });\n\t\n\t return srCyrl;\n\t\n\t})));\n\n\n/***/ }),\n\n/***/ 412:\n/***/ (function(module, exports, __webpack_require__) {\n\n\t//! moment.js locale configuration\n\t//! locale : Serbian [sr]\n\t//! author : Milan Janačković : https://github.com/milan-j\n\t//! author : Stefan Crnjaković : https://github.com/crnjakovic\n\t\n\t;(function (global, factory) {\n\t true ? factory(__webpack_require__(1)) :\n\t typeof define === 'function' && define.amd ? define(['../moment'], factory) :\n\t factory(global.moment)\n\t}(this, (function (moment) { 'use strict';\n\t\n\t //! moment.js locale configuration\n\t\n\t var translator = {\n\t words: {\n\t //Different grammatical cases\n\t ss: ['sekunda', 'sekunde', 'sekundi'],\n\t m: ['jedan minut', 'jedne minute'],\n\t mm: ['minut', 'minute', 'minuta'],\n\t h: ['jedan sat', 'jednog sata'],\n\t hh: ['sat', 'sata', 'sati'],\n\t dd: ['dan', 'dana', 'dana'],\n\t MM: ['mesec', 'meseca', 'meseci'],\n\t yy: ['godina', 'godine', 'godina'],\n\t },\n\t correctGrammaticalCase: function (number, wordKey) {\n\t return number === 1\n\t ? wordKey[0]\n\t : number >= 2 && number <= 4\n\t ? wordKey[1]\n\t : wordKey[2];\n\t },\n\t translate: function (number, withoutSuffix, key) {\n\t var wordKey = translator.words[key];\n\t if (key.length === 1) {\n\t return withoutSuffix ? wordKey[0] : wordKey[1];\n\t } else {\n\t return (\n\t number +\n\t ' ' +\n\t translator.correctGrammaticalCase(number, wordKey)\n\t );\n\t }\n\t },\n\t };\n\t\n\t var sr = moment.defineLocale('sr', {\n\t months: 'januar_februar_mart_april_maj_jun_jul_avgust_septembar_oktobar_novembar_decembar'.split(\n\t '_'\n\t ),\n\t monthsShort: 'jan._feb._mar._apr._maj_jun_jul_avg._sep._okt._nov._dec.'.split(\n\t '_'\n\t ),\n\t monthsParseExact: true,\n\t weekdays: 'nedelja_ponedeljak_utorak_sreda_četvrtak_petak_subota'.split(\n\t '_'\n\t ),\n\t weekdaysShort: 'ned._pon._uto._sre._čet._pet._sub.'.split('_'),\n\t weekdaysMin: 'ne_po_ut_sr_če_pe_su'.split('_'),\n\t weekdaysParseExact: true,\n\t longDateFormat: {\n\t LT: 'H:mm',\n\t LTS: 'H:mm:ss',\n\t L: 'D. M. YYYY.',\n\t LL: 'D. MMMM YYYY.',\n\t LLL: 'D. MMMM YYYY. H:mm',\n\t LLLL: 'dddd, D. MMMM YYYY. H:mm',\n\t },\n\t calendar: {\n\t sameDay: '[danas u] LT',\n\t nextDay: '[sutra u] LT',\n\t nextWeek: function () {\n\t switch (this.day()) {\n\t case 0:\n\t return '[u] [nedelju] [u] LT';\n\t case 3:\n\t return '[u] [sredu] [u] LT';\n\t case 6:\n\t return '[u] [subotu] [u] LT';\n\t case 1:\n\t case 2:\n\t case 4:\n\t case 5:\n\t return '[u] dddd [u] LT';\n\t }\n\t },\n\t lastDay: '[juče u] LT',\n\t lastWeek: function () {\n\t var lastWeekDays = [\n\t '[prošle] [nedelje] [u] LT',\n\t '[prošlog] [ponedeljka] [u] LT',\n\t '[prošlog] [utorka] [u] LT',\n\t '[prošle] [srede] [u] LT',\n\t '[prošlog] [četvrtka] [u] LT',\n\t '[prošlog] [petka] [u] LT',\n\t '[prošle] [subote] [u] LT',\n\t ];\n\t return lastWeekDays[this.day()];\n\t },\n\t sameElse: 'L',\n\t },\n\t relativeTime: {\n\t future: 'za %s',\n\t past: 'pre %s',\n\t s: 'nekoliko sekundi',\n\t ss: translator.translate,\n\t m: translator.translate,\n\t mm: translator.translate,\n\t h: translator.translate,\n\t hh: translator.translate,\n\t d: 'dan',\n\t dd: translator.translate,\n\t M: 'mesec',\n\t MM: translator.translate,\n\t y: 'godinu',\n\t yy: translator.translate,\n\t },\n\t dayOfMonthOrdinalParse: /\\d{1,2}\\./,\n\t ordinal: '%d.',\n\t week: {\n\t dow: 1, // Monday is the first day of the week.\n\t doy: 7, // The week that contains Jan 7th is the first week of the year.\n\t },\n\t });\n\t\n\t return sr;\n\t\n\t})));\n\n\n/***/ }),\n\n/***/ 413:\n/***/ (function(module, exports, __webpack_require__) {\n\n\t//! moment.js locale configuration\n\t//! locale : siSwati [ss]\n\t//! author : Nicolai Davies : https://github.com/nicolaidavies\n\t\n\t;(function (global, factory) {\n\t true ? factory(__webpack_require__(1)) :\n\t typeof define === 'function' && define.amd ? define(['../moment'], factory) :\n\t factory(global.moment)\n\t}(this, (function (moment) { 'use strict';\n\t\n\t //! moment.js locale configuration\n\t\n\t var ss = moment.defineLocale('ss', {\n\t months: \"Bhimbidvwane_Indlovana_Indlov'lenkhulu_Mabasa_Inkhwekhweti_Inhlaba_Kholwane_Ingci_Inyoni_Imphala_Lweti_Ingongoni\".split(\n\t '_'\n\t ),\n\t monthsShort: 'Bhi_Ina_Inu_Mab_Ink_Inh_Kho_Igc_Iny_Imp_Lwe_Igo'.split('_'),\n\t weekdays: 'Lisontfo_Umsombuluko_Lesibili_Lesitsatfu_Lesine_Lesihlanu_Umgcibelo'.split(\n\t '_'\n\t ),\n\t weekdaysShort: 'Lis_Umb_Lsb_Les_Lsi_Lsh_Umg'.split('_'),\n\t weekdaysMin: 'Li_Us_Lb_Lt_Ls_Lh_Ug'.split('_'),\n\t weekdaysParseExact: true,\n\t longDateFormat: {\n\t LT: 'h:mm A',\n\t LTS: 'h:mm:ss A',\n\t L: 'DD/MM/YYYY',\n\t LL: 'D MMMM YYYY',\n\t LLL: 'D MMMM YYYY h:mm A',\n\t LLLL: 'dddd, D MMMM YYYY h:mm A',\n\t },\n\t calendar: {\n\t sameDay: '[Namuhla nga] LT',\n\t nextDay: '[Kusasa nga] LT',\n\t nextWeek: 'dddd [nga] LT',\n\t lastDay: '[Itolo nga] LT',\n\t lastWeek: 'dddd [leliphelile] [nga] LT',\n\t sameElse: 'L',\n\t },\n\t relativeTime: {\n\t future: 'nga %s',\n\t past: 'wenteka nga %s',\n\t s: 'emizuzwana lomcane',\n\t ss: '%d mzuzwana',\n\t m: 'umzuzu',\n\t mm: '%d emizuzu',\n\t h: 'lihora',\n\t hh: '%d emahora',\n\t d: 'lilanga',\n\t dd: '%d emalanga',\n\t M: 'inyanga',\n\t MM: '%d tinyanga',\n\t y: 'umnyaka',\n\t yy: '%d iminyaka',\n\t },\n\t meridiemParse: /ekuseni|emini|entsambama|ebusuku/,\n\t meridiem: function (hours, minutes, isLower) {\n\t if (hours < 11) {\n\t return 'ekuseni';\n\t } else if (hours < 15) {\n\t return 'emini';\n\t } else if (hours < 19) {\n\t return 'entsambama';\n\t } else {\n\t return 'ebusuku';\n\t }\n\t },\n\t meridiemHour: function (hour, meridiem) {\n\t if (hour === 12) {\n\t hour = 0;\n\t }\n\t if (meridiem === 'ekuseni') {\n\t return hour;\n\t } else if (meridiem === 'emini') {\n\t return hour >= 11 ? hour : hour + 12;\n\t } else if (meridiem === 'entsambama' || meridiem === 'ebusuku') {\n\t if (hour === 0) {\n\t return 0;\n\t }\n\t return hour + 12;\n\t }\n\t },\n\t dayOfMonthOrdinalParse: /\\d{1,2}/,\n\t ordinal: '%d',\n\t week: {\n\t dow: 1, // Monday is the first day of the week.\n\t doy: 4, // The week that contains Jan 4th is the first week of the year.\n\t },\n\t });\n\t\n\t return ss;\n\t\n\t})));\n\n\n/***/ }),\n\n/***/ 414:\n/***/ (function(module, exports, __webpack_require__) {\n\n\t//! moment.js locale configuration\n\t//! locale : Swedish [sv]\n\t//! author : Jens Alm : https://github.com/ulmus\n\t\n\t;(function (global, factory) {\n\t true ? factory(__webpack_require__(1)) :\n\t typeof define === 'function' && define.amd ? define(['../moment'], factory) :\n\t factory(global.moment)\n\t}(this, (function (moment) { 'use strict';\n\t\n\t //! moment.js locale configuration\n\t\n\t var sv = moment.defineLocale('sv', {\n\t months: 'januari_februari_mars_april_maj_juni_juli_augusti_september_oktober_november_december'.split(\n\t '_'\n\t ),\n\t monthsShort: 'jan_feb_mar_apr_maj_jun_jul_aug_sep_okt_nov_dec'.split('_'),\n\t weekdays: 'söndag_måndag_tisdag_onsdag_torsdag_fredag_lördag'.split('_'),\n\t weekdaysShort: 'sön_mån_tis_ons_tor_fre_lör'.split('_'),\n\t weekdaysMin: 'sö_må_ti_on_to_fr_lö'.split('_'),\n\t longDateFormat: {\n\t LT: 'HH:mm',\n\t LTS: 'HH:mm:ss',\n\t L: 'YYYY-MM-DD',\n\t LL: 'D MMMM YYYY',\n\t LLL: 'D MMMM YYYY [kl.] HH:mm',\n\t LLLL: 'dddd D MMMM YYYY [kl.] HH:mm',\n\t lll: 'D MMM YYYY HH:mm',\n\t llll: 'ddd D MMM YYYY HH:mm',\n\t },\n\t calendar: {\n\t sameDay: '[Idag] LT',\n\t nextDay: '[Imorgon] LT',\n\t lastDay: '[Igår] LT',\n\t nextWeek: '[På] dddd LT',\n\t lastWeek: '[I] dddd[s] LT',\n\t sameElse: 'L',\n\t },\n\t relativeTime: {\n\t future: 'om %s',\n\t past: 'för %s sedan',\n\t s: 'några sekunder',\n\t ss: '%d sekunder',\n\t m: 'en minut',\n\t mm: '%d minuter',\n\t h: 'en timme',\n\t hh: '%d timmar',\n\t d: 'en dag',\n\t dd: '%d dagar',\n\t M: 'en månad',\n\t MM: '%d månader',\n\t y: 'ett år',\n\t yy: '%d år',\n\t },\n\t dayOfMonthOrdinalParse: /\\d{1,2}(\\:e|\\:a)/,\n\t ordinal: function (number) {\n\t var b = number % 10,\n\t output =\n\t ~~((number % 100) / 10) === 1\n\t ? ':e'\n\t : b === 1\n\t ? ':a'\n\t : b === 2\n\t ? ':a'\n\t : b === 3\n\t ? ':e'\n\t : ':e';\n\t return number + output;\n\t },\n\t week: {\n\t dow: 1, // Monday is the first day of the week.\n\t doy: 4, // The week that contains Jan 4th is the first week of the year.\n\t },\n\t });\n\t\n\t return sv;\n\t\n\t})));\n\n\n/***/ }),\n\n/***/ 415:\n/***/ (function(module, exports, __webpack_require__) {\n\n\t//! moment.js locale configuration\n\t//! locale : Swahili [sw]\n\t//! author : Fahad Kassim : https://github.com/fadsel\n\t\n\t;(function (global, factory) {\n\t true ? factory(__webpack_require__(1)) :\n\t typeof define === 'function' && define.amd ? define(['../moment'], factory) :\n\t factory(global.moment)\n\t}(this, (function (moment) { 'use strict';\n\t\n\t //! moment.js locale configuration\n\t\n\t var sw = moment.defineLocale('sw', {\n\t months: 'Januari_Februari_Machi_Aprili_Mei_Juni_Julai_Agosti_Septemba_Oktoba_Novemba_Desemba'.split(\n\t '_'\n\t ),\n\t monthsShort: 'Jan_Feb_Mac_Apr_Mei_Jun_Jul_Ago_Sep_Okt_Nov_Des'.split('_'),\n\t weekdays: 'Jumapili_Jumatatu_Jumanne_Jumatano_Alhamisi_Ijumaa_Jumamosi'.split(\n\t '_'\n\t ),\n\t weekdaysShort: 'Jpl_Jtat_Jnne_Jtan_Alh_Ijm_Jmos'.split('_'),\n\t weekdaysMin: 'J2_J3_J4_J5_Al_Ij_J1'.split('_'),\n\t weekdaysParseExact: true,\n\t longDateFormat: {\n\t LT: 'hh:mm A',\n\t LTS: 'HH:mm:ss',\n\t L: 'DD.MM.YYYY',\n\t LL: 'D MMMM YYYY',\n\t LLL: 'D MMMM YYYY HH:mm',\n\t LLLL: 'dddd, D MMMM YYYY HH:mm',\n\t },\n\t calendar: {\n\t sameDay: '[leo saa] LT',\n\t nextDay: '[kesho saa] LT',\n\t nextWeek: '[wiki ijayo] dddd [saat] LT',\n\t lastDay: '[jana] LT',\n\t lastWeek: '[wiki iliyopita] dddd [saat] LT',\n\t sameElse: 'L',\n\t },\n\t relativeTime: {\n\t future: '%s baadaye',\n\t past: 'tokea %s',\n\t s: 'hivi punde',\n\t ss: 'sekunde %d',\n\t m: 'dakika moja',\n\t mm: 'dakika %d',\n\t h: 'saa limoja',\n\t hh: 'masaa %d',\n\t d: 'siku moja',\n\t dd: 'siku %d',\n\t M: 'mwezi mmoja',\n\t MM: 'miezi %d',\n\t y: 'mwaka mmoja',\n\t yy: 'miaka %d',\n\t },\n\t week: {\n\t dow: 1, // Monday is the first day of the week.\n\t doy: 7, // The week that contains Jan 7th is the first week of the year.\n\t },\n\t });\n\t\n\t return sw;\n\t\n\t})));\n\n\n/***/ }),\n\n/***/ 416:\n/***/ (function(module, exports, __webpack_require__) {\n\n\t//! moment.js locale configuration\n\t//! locale : Tamil [ta]\n\t//! author : Arjunkumar Krishnamoorthy : https://github.com/tk120404\n\t\n\t;(function (global, factory) {\n\t true ? factory(__webpack_require__(1)) :\n\t typeof define === 'function' && define.amd ? define(['../moment'], factory) :\n\t factory(global.moment)\n\t}(this, (function (moment) { 'use strict';\n\t\n\t //! moment.js locale configuration\n\t\n\t var symbolMap = {\n\t 1: '௧',\n\t 2: '௨',\n\t 3: '௩',\n\t 4: '௪',\n\t 5: '௫',\n\t 6: '௬',\n\t 7: '௭',\n\t 8: '௮',\n\t 9: '௯',\n\t 0: '௦',\n\t },\n\t numberMap = {\n\t '௧': '1',\n\t '௨': '2',\n\t '௩': '3',\n\t '௪': '4',\n\t '௫': '5',\n\t '௬': '6',\n\t '௭': '7',\n\t '௮': '8',\n\t '௯': '9',\n\t '௦': '0',\n\t };\n\t\n\t var ta = moment.defineLocale('ta', {\n\t months: 'ஜனவரி_பிப்ரவரி_மார்ச்_ஏப்ரல்_மே_ஜூன்_ஜூலை_ஆகஸ்ட்_செப்டெம்பர்_அக்டோபர்_நவம்பர்_டிசம்பர்'.split(\n\t '_'\n\t ),\n\t monthsShort: 'ஜனவரி_பிப்ரவரி_மார்ச்_ஏப்ரல்_மே_ஜூன்_ஜூலை_ஆகஸ்ட்_செப்டெம்பர்_அக்டோபர்_நவம்பர்_டிசம்பர்'.split(\n\t '_'\n\t ),\n\t weekdays: 'ஞாயிற்றுக்கிழமை_திங்கட்கிழமை_செவ்வாய்கிழமை_புதன்கிழமை_வியாழக்கிழமை_வெள்ளிக்கிழமை_சனிக்கிழமை'.split(\n\t '_'\n\t ),\n\t weekdaysShort: 'ஞாயிறு_திங்கள்_செவ்வாய்_புதன்_வியாழன்_வெள்ளி_சனி'.split(\n\t '_'\n\t ),\n\t weekdaysMin: 'ஞா_தி_செ_பு_வி_வெ_ச'.split('_'),\n\t longDateFormat: {\n\t LT: 'HH:mm',\n\t LTS: 'HH:mm:ss',\n\t L: 'DD/MM/YYYY',\n\t LL: 'D MMMM YYYY',\n\t LLL: 'D MMMM YYYY, HH:mm',\n\t LLLL: 'dddd, D MMMM YYYY, HH:mm',\n\t },\n\t calendar: {\n\t sameDay: '[இன்று] LT',\n\t nextDay: '[நாளை] LT',\n\t nextWeek: 'dddd, LT',\n\t lastDay: '[நேற்று] LT',\n\t lastWeek: '[கடந்த வாரம்] dddd, LT',\n\t sameElse: 'L',\n\t },\n\t relativeTime: {\n\t future: '%s இல்',\n\t past: '%s முன்',\n\t s: 'ஒரு சில விநாடிகள்',\n\t ss: '%d விநாடிகள்',\n\t m: 'ஒரு நிமிடம்',\n\t mm: '%d நிமிடங்கள்',\n\t h: 'ஒரு மணி நேரம்',\n\t hh: '%d மணி நேரம்',\n\t d: 'ஒரு நாள்',\n\t dd: '%d நாட்கள்',\n\t M: 'ஒரு மாதம்',\n\t MM: '%d மாதங்கள்',\n\t y: 'ஒரு வருடம்',\n\t yy: '%d ஆண்டுகள்',\n\t },\n\t dayOfMonthOrdinalParse: /\\d{1,2}வது/,\n\t ordinal: function (number) {\n\t return number + 'வது';\n\t },\n\t preparse: function (string) {\n\t return string.replace(/[௧௨௩௪௫௬௭௮௯௦]/g, function (match) {\n\t return numberMap[match];\n\t });\n\t },\n\t postformat: function (string) {\n\t return string.replace(/\\d/g, function (match) {\n\t return symbolMap[match];\n\t });\n\t },\n\t // refer http://ta.wikipedia.org/s/1er1\n\t meridiemParse: /யாமம்|வைகறை|காலை|நண்பகல்|எற்பாடு|மாலை/,\n\t meridiem: function (hour, minute, isLower) {\n\t if (hour < 2) {\n\t return ' யாமம்';\n\t } else if (hour < 6) {\n\t return ' வைகறை'; // வைகறை\n\t } else if (hour < 10) {\n\t return ' காலை'; // காலை\n\t } else if (hour < 14) {\n\t return ' நண்பகல்'; // நண்பகல்\n\t } else if (hour < 18) {\n\t return ' எற்பாடு'; // எற்பாடு\n\t } else if (hour < 22) {\n\t return ' மாலை'; // மாலை\n\t } else {\n\t return ' யாமம்';\n\t }\n\t },\n\t meridiemHour: function (hour, meridiem) {\n\t if (hour === 12) {\n\t hour = 0;\n\t }\n\t if (meridiem === 'யாமம்') {\n\t return hour < 2 ? hour : hour + 12;\n\t } else if (meridiem === 'வைகறை' || meridiem === 'காலை') {\n\t return hour;\n\t } else if (meridiem === 'நண்பகல்') {\n\t return hour >= 10 ? hour : hour + 12;\n\t } else {\n\t return hour + 12;\n\t }\n\t },\n\t week: {\n\t dow: 0, // Sunday is the first day of the week.\n\t doy: 6, // The week that contains Jan 6th is the first week of the year.\n\t },\n\t });\n\t\n\t return ta;\n\t\n\t})));\n\n\n/***/ }),\n\n/***/ 417:\n/***/ (function(module, exports, __webpack_require__) {\n\n\t//! moment.js locale configuration\n\t//! locale : Telugu [te]\n\t//! author : Krishna Chaitanya Thota : https://github.com/kcthota\n\t\n\t;(function (global, factory) {\n\t true ? factory(__webpack_require__(1)) :\n\t typeof define === 'function' && define.amd ? define(['../moment'], factory) :\n\t factory(global.moment)\n\t}(this, (function (moment) { 'use strict';\n\t\n\t //! moment.js locale configuration\n\t\n\t var te = moment.defineLocale('te', {\n\t months: 'జనవరి_ఫిబ్రవరి_మార్చి_ఏప్రిల్_మే_జూన్_జులై_ఆగస్టు_సెప్టెంబర్_అక్టోబర్_నవంబర్_డిసెంబర్'.split(\n\t '_'\n\t ),\n\t monthsShort: 'జన._ఫిబ్ర._మార్చి_ఏప్రి._మే_జూన్_జులై_ఆగ._సెప్._అక్టో._నవ._డిసె.'.split(\n\t '_'\n\t ),\n\t monthsParseExact: true,\n\t weekdays: 'ఆదివారం_సోమవారం_మంగళవారం_బుధవారం_గురువారం_శుక్రవారం_శనివారం'.split(\n\t '_'\n\t ),\n\t weekdaysShort: 'ఆది_సోమ_మంగళ_బుధ_గురు_శుక్ర_శని'.split('_'),\n\t weekdaysMin: 'ఆ_సో_మం_బు_గు_శు_శ'.split('_'),\n\t longDateFormat: {\n\t LT: 'A h:mm',\n\t LTS: 'A h:mm:ss',\n\t L: 'DD/MM/YYYY',\n\t LL: 'D MMMM YYYY',\n\t LLL: 'D MMMM YYYY, A h:mm',\n\t LLLL: 'dddd, D MMMM YYYY, A h:mm',\n\t },\n\t calendar: {\n\t sameDay: '[నేడు] LT',\n\t nextDay: '[రేపు] LT',\n\t nextWeek: 'dddd, LT',\n\t lastDay: '[నిన్న] LT',\n\t lastWeek: '[గత] dddd, LT',\n\t sameElse: 'L',\n\t },\n\t relativeTime: {\n\t future: '%s లో',\n\t past: '%s క్రితం',\n\t s: 'కొన్ని క్షణాలు',\n\t ss: '%d సెకన్లు',\n\t m: 'ఒక నిమిషం',\n\t mm: '%d నిమిషాలు',\n\t h: 'ఒక గంట',\n\t hh: '%d గంటలు',\n\t d: 'ఒక రోజు',\n\t dd: '%d రోజులు',\n\t M: 'ఒక నెల',\n\t MM: '%d నెలలు',\n\t y: 'ఒక సంవత్సరం',\n\t yy: '%d సంవత్సరాలు',\n\t },\n\t dayOfMonthOrdinalParse: /\\d{1,2}వ/,\n\t ordinal: '%dవ',\n\t meridiemParse: /రాత్రి|ఉదయం|మధ్యాహ్నం|సాయంత్రం/,\n\t meridiemHour: function (hour, meridiem) {\n\t if (hour === 12) {\n\t hour = 0;\n\t }\n\t if (meridiem === 'రాత్రి') {\n\t return hour < 4 ? hour : hour + 12;\n\t } else if (meridiem === 'ఉదయం') {\n\t return hour;\n\t } else if (meridiem === 'మధ్యాహ్నం') {\n\t return hour >= 10 ? hour : hour + 12;\n\t } else if (meridiem === 'సాయంత్రం') {\n\t return hour + 12;\n\t }\n\t },\n\t meridiem: function (hour, minute, isLower) {\n\t if (hour < 4) {\n\t return 'రాత్రి';\n\t } else if (hour < 10) {\n\t return 'ఉదయం';\n\t } else if (hour < 17) {\n\t return 'మధ్యాహ్నం';\n\t } else if (hour < 20) {\n\t return 'సాయంత్రం';\n\t } else {\n\t return 'రాత్రి';\n\t }\n\t },\n\t week: {\n\t dow: 0, // Sunday is the first day of the week.\n\t doy: 6, // The week that contains Jan 6th is the first week of the year.\n\t },\n\t });\n\t\n\t return te;\n\t\n\t})));\n\n\n/***/ }),\n\n/***/ 418:\n/***/ (function(module, exports, __webpack_require__) {\n\n\t//! moment.js locale configuration\n\t//! locale : Tetun Dili (East Timor) [tet]\n\t//! author : Joshua Brooks : https://github.com/joshbrooks\n\t//! author : Onorio De J. Afonso : https://github.com/marobo\n\t//! author : Sonia Simoes : https://github.com/soniasimoes\n\t\n\t;(function (global, factory) {\n\t true ? factory(__webpack_require__(1)) :\n\t typeof define === 'function' && define.amd ? define(['../moment'], factory) :\n\t factory(global.moment)\n\t}(this, (function (moment) { 'use strict';\n\t\n\t //! moment.js locale configuration\n\t\n\t var tet = moment.defineLocale('tet', {\n\t months: 'Janeiru_Fevereiru_Marsu_Abril_Maiu_Juñu_Jullu_Agustu_Setembru_Outubru_Novembru_Dezembru'.split(\n\t '_'\n\t ),\n\t monthsShort: 'Jan_Fev_Mar_Abr_Mai_Jun_Jul_Ago_Set_Out_Nov_Dez'.split('_'),\n\t weekdays: 'Domingu_Segunda_Tersa_Kuarta_Kinta_Sesta_Sabadu'.split('_'),\n\t weekdaysShort: 'Dom_Seg_Ters_Kua_Kint_Sest_Sab'.split('_'),\n\t weekdaysMin: 'Do_Seg_Te_Ku_Ki_Ses_Sa'.split('_'),\n\t longDateFormat: {\n\t LT: 'HH:mm',\n\t LTS: 'HH:mm:ss',\n\t L: 'DD/MM/YYYY',\n\t LL: 'D MMMM YYYY',\n\t LLL: 'D MMMM YYYY HH:mm',\n\t LLLL: 'dddd, D MMMM YYYY HH:mm',\n\t },\n\t calendar: {\n\t sameDay: '[Ohin iha] LT',\n\t nextDay: '[Aban iha] LT',\n\t nextWeek: 'dddd [iha] LT',\n\t lastDay: '[Horiseik iha] LT',\n\t lastWeek: 'dddd [semana kotuk] [iha] LT',\n\t sameElse: 'L',\n\t },\n\t relativeTime: {\n\t future: 'iha %s',\n\t past: '%s liuba',\n\t s: 'segundu balun',\n\t ss: 'segundu %d',\n\t m: 'minutu ida',\n\t mm: 'minutu %d',\n\t h: 'oras ida',\n\t hh: 'oras %d',\n\t d: 'loron ida',\n\t dd: 'loron %d',\n\t M: 'fulan ida',\n\t MM: 'fulan %d',\n\t y: 'tinan ida',\n\t yy: 'tinan %d',\n\t },\n\t dayOfMonthOrdinalParse: /\\d{1,2}(st|nd|rd|th)/,\n\t ordinal: function (number) {\n\t var b = number % 10,\n\t output =\n\t ~~((number % 100) / 10) === 1\n\t ? 'th'\n\t : b === 1\n\t ? 'st'\n\t : b === 2\n\t ? 'nd'\n\t : b === 3\n\t ? 'rd'\n\t : 'th';\n\t return number + output;\n\t },\n\t week: {\n\t dow: 1, // Monday is the first day of the week.\n\t doy: 4, // The week that contains Jan 4th is the first week of the year.\n\t },\n\t });\n\t\n\t return tet;\n\t\n\t})));\n\n\n/***/ }),\n\n/***/ 419:\n/***/ (function(module, exports, __webpack_require__) {\n\n\t//! moment.js locale configuration\n\t//! locale : Tajik [tg]\n\t//! author : Orif N. Jr. : https://github.com/orif-jr\n\t\n\t;(function (global, factory) {\n\t true ? factory(__webpack_require__(1)) :\n\t typeof define === 'function' && define.amd ? define(['../moment'], factory) :\n\t factory(global.moment)\n\t}(this, (function (moment) { 'use strict';\n\t\n\t //! moment.js locale configuration\n\t\n\t var suffixes = {\n\t 0: '-ум',\n\t 1: '-ум',\n\t 2: '-юм',\n\t 3: '-юм',\n\t 4: '-ум',\n\t 5: '-ум',\n\t 6: '-ум',\n\t 7: '-ум',\n\t 8: '-ум',\n\t 9: '-ум',\n\t 10: '-ум',\n\t 12: '-ум',\n\t 13: '-ум',\n\t 20: '-ум',\n\t 30: '-юм',\n\t 40: '-ум',\n\t 50: '-ум',\n\t 60: '-ум',\n\t 70: '-ум',\n\t 80: '-ум',\n\t 90: '-ум',\n\t 100: '-ум',\n\t };\n\t\n\t var tg = moment.defineLocale('tg', {\n\t months: {\n\t format: 'январи_феврали_марти_апрели_майи_июни_июли_августи_сентябри_октябри_ноябри_декабри'.split(\n\t '_'\n\t ),\n\t standalone: 'январ_феврал_март_апрел_май_июн_июл_август_сентябр_октябр_ноябр_декабр'.split(\n\t '_'\n\t ),\n\t },\n\t monthsShort: 'янв_фев_мар_апр_май_июн_июл_авг_сен_окт_ноя_дек'.split('_'),\n\t weekdays: 'якшанбе_душанбе_сешанбе_чоршанбе_панҷшанбе_ҷумъа_шанбе'.split(\n\t '_'\n\t ),\n\t weekdaysShort: 'яшб_дшб_сшб_чшб_пшб_ҷум_шнб'.split('_'),\n\t weekdaysMin: 'яш_дш_сш_чш_пш_ҷм_шб'.split('_'),\n\t longDateFormat: {\n\t LT: 'HH:mm',\n\t LTS: 'HH:mm:ss',\n\t L: 'DD.MM.YYYY',\n\t LL: 'D MMMM YYYY',\n\t LLL: 'D MMMM YYYY HH:mm',\n\t LLLL: 'dddd, D MMMM YYYY HH:mm',\n\t },\n\t calendar: {\n\t sameDay: '[Имрӯз соати] LT',\n\t nextDay: '[Фардо соати] LT',\n\t lastDay: '[Дирӯз соати] LT',\n\t nextWeek: 'dddd[и] [ҳафтаи оянда соати] LT',\n\t lastWeek: 'dddd[и] [ҳафтаи гузашта соати] LT',\n\t sameElse: 'L',\n\t },\n\t relativeTime: {\n\t future: 'баъди %s',\n\t past: '%s пеш',\n\t s: 'якчанд сония',\n\t m: 'як дақиқа',\n\t mm: '%d дақиқа',\n\t h: 'як соат',\n\t hh: '%d соат',\n\t d: 'як рӯз',\n\t dd: '%d рӯз',\n\t M: 'як моҳ',\n\t MM: '%d моҳ',\n\t y: 'як сол',\n\t yy: '%d сол',\n\t },\n\t meridiemParse: /шаб|субҳ|рӯз|бегоҳ/,\n\t meridiemHour: function (hour, meridiem) {\n\t if (hour === 12) {\n\t hour = 0;\n\t }\n\t if (meridiem === 'шаб') {\n\t return hour < 4 ? hour : hour + 12;\n\t } else if (meridiem === 'субҳ') {\n\t return hour;\n\t } else if (meridiem === 'рӯз') {\n\t return hour >= 11 ? hour : hour + 12;\n\t } else if (meridiem === 'бегоҳ') {\n\t return hour + 12;\n\t }\n\t },\n\t meridiem: function (hour, minute, isLower) {\n\t if (hour < 4) {\n\t return 'шаб';\n\t } else if (hour < 11) {\n\t return 'субҳ';\n\t } else if (hour < 16) {\n\t return 'рӯз';\n\t } else if (hour < 19) {\n\t return 'бегоҳ';\n\t } else {\n\t return 'шаб';\n\t }\n\t },\n\t dayOfMonthOrdinalParse: /\\d{1,2}-(ум|юм)/,\n\t ordinal: function (number) {\n\t var a = number % 10,\n\t b = number >= 100 ? 100 : null;\n\t return number + (suffixes[number] || suffixes[a] || suffixes[b]);\n\t },\n\t week: {\n\t dow: 1, // Monday is the first day of the week.\n\t doy: 7, // The week that contains Jan 1th is the first week of the year.\n\t },\n\t });\n\t\n\t return tg;\n\t\n\t})));\n\n\n/***/ }),\n\n/***/ 420:\n/***/ (function(module, exports, __webpack_require__) {\n\n\t//! moment.js locale configuration\n\t//! locale : Thai [th]\n\t//! author : Kridsada Thanabulpong : https://github.com/sirn\n\t\n\t;(function (global, factory) {\n\t true ? factory(__webpack_require__(1)) :\n\t typeof define === 'function' && define.amd ? define(['../moment'], factory) :\n\t factory(global.moment)\n\t}(this, (function (moment) { 'use strict';\n\t\n\t //! moment.js locale configuration\n\t\n\t var th = moment.defineLocale('th', {\n\t months: 'มกราคม_กุมภาพันธ์_มีนาคม_เมษายน_พฤษภาคม_มิถุนายน_กรกฎาคม_สิงหาคม_กันยายน_ตุลาคม_พฤศจิกายน_ธันวาคม'.split(\n\t '_'\n\t ),\n\t monthsShort: 'ม.ค._ก.พ._มี.ค._เม.ย._พ.ค._มิ.ย._ก.ค._ส.ค._ก.ย._ต.ค._พ.ย._ธ.ค.'.split(\n\t '_'\n\t ),\n\t monthsParseExact: true,\n\t weekdays: 'อาทิตย์_จันทร์_อังคาร_พุธ_พฤหัสบดี_ศุกร์_เสาร์'.split('_'),\n\t weekdaysShort: 'อาทิตย์_จันทร์_อังคาร_พุธ_พฤหัส_ศุกร์_เสาร์'.split('_'), // yes, three characters difference\n\t weekdaysMin: 'อา._จ._อ._พ._พฤ._ศ._ส.'.split('_'),\n\t weekdaysParseExact: true,\n\t longDateFormat: {\n\t LT: 'H:mm',\n\t LTS: 'H:mm:ss',\n\t L: 'DD/MM/YYYY',\n\t LL: 'D MMMM YYYY',\n\t LLL: 'D MMMM YYYY เวลา H:mm',\n\t LLLL: 'วันddddที่ D MMMM YYYY เวลา H:mm',\n\t },\n\t meridiemParse: /ก่อนเที่ยง|หลังเที่ยง/,\n\t isPM: function (input) {\n\t return input === 'หลังเที่ยง';\n\t },\n\t meridiem: function (hour, minute, isLower) {\n\t if (hour < 12) {\n\t return 'ก่อนเที่ยง';\n\t } else {\n\t return 'หลังเที่ยง';\n\t }\n\t },\n\t calendar: {\n\t sameDay: '[วันนี้ เวลา] LT',\n\t nextDay: '[พรุ่งนี้ เวลา] LT',\n\t nextWeek: 'dddd[หน้า เวลา] LT',\n\t lastDay: '[เมื่อวานนี้ เวลา] LT',\n\t lastWeek: '[วัน]dddd[ที่แล้ว เวลา] LT',\n\t sameElse: 'L',\n\t },\n\t relativeTime: {\n\t future: 'อีก %s',\n\t past: '%sที่แล้ว',\n\t s: 'ไม่กี่วินาที',\n\t ss: '%d วินาที',\n\t m: '1 นาที',\n\t mm: '%d นาที',\n\t h: '1 ชั่วโมง',\n\t hh: '%d ชั่วโมง',\n\t d: '1 วัน',\n\t dd: '%d วัน',\n\t w: '1 สัปดาห์',\n\t ww: '%d สัปดาห์',\n\t M: '1 เดือน',\n\t MM: '%d เดือน',\n\t y: '1 ปี',\n\t yy: '%d ปี',\n\t },\n\t });\n\t\n\t return th;\n\t\n\t})));\n\n\n/***/ }),\n\n/***/ 421:\n/***/ (function(module, exports, __webpack_require__) {\n\n\t//! moment.js locale configuration\n\t//! locale : Turkmen [tk]\n\t//! author : Atamyrat Abdyrahmanov : https://github.com/atamyratabdy\n\t\n\t;(function (global, factory) {\n\t true ? factory(__webpack_require__(1)) :\n\t typeof define === 'function' && define.amd ? define(['../moment'], factory) :\n\t factory(global.moment)\n\t}(this, (function (moment) { 'use strict';\n\t\n\t //! moment.js locale configuration\n\t\n\t var suffixes = {\n\t 1: \"'inji\",\n\t 5: \"'inji\",\n\t 8: \"'inji\",\n\t 70: \"'inji\",\n\t 80: \"'inji\",\n\t 2: \"'nji\",\n\t 7: \"'nji\",\n\t 20: \"'nji\",\n\t 50: \"'nji\",\n\t 3: \"'ünji\",\n\t 4: \"'ünji\",\n\t 100: \"'ünji\",\n\t 6: \"'njy\",\n\t 9: \"'unjy\",\n\t 10: \"'unjy\",\n\t 30: \"'unjy\",\n\t 60: \"'ynjy\",\n\t 90: \"'ynjy\",\n\t };\n\t\n\t var tk = moment.defineLocale('tk', {\n\t months: 'Ýanwar_Fewral_Mart_Aprel_Maý_Iýun_Iýul_Awgust_Sentýabr_Oktýabr_Noýabr_Dekabr'.split(\n\t '_'\n\t ),\n\t monthsShort: 'Ýan_Few_Mar_Apr_Maý_Iýn_Iýl_Awg_Sen_Okt_Noý_Dek'.split('_'),\n\t weekdays: 'Ýekşenbe_Duşenbe_Sişenbe_Çarşenbe_Penşenbe_Anna_Şenbe'.split(\n\t '_'\n\t ),\n\t weekdaysShort: 'Ýek_Duş_Siş_Çar_Pen_Ann_Şen'.split('_'),\n\t weekdaysMin: 'Ýk_Dş_Sş_Çr_Pn_An_Şn'.split('_'),\n\t longDateFormat: {\n\t LT: 'HH:mm',\n\t LTS: 'HH:mm:ss',\n\t L: 'DD.MM.YYYY',\n\t LL: 'D MMMM YYYY',\n\t LLL: 'D MMMM YYYY HH:mm',\n\t LLLL: 'dddd, D MMMM YYYY HH:mm',\n\t },\n\t calendar: {\n\t sameDay: '[bugün sagat] LT',\n\t nextDay: '[ertir sagat] LT',\n\t nextWeek: '[indiki] dddd [sagat] LT',\n\t lastDay: '[düýn] LT',\n\t lastWeek: '[geçen] dddd [sagat] LT',\n\t sameElse: 'L',\n\t },\n\t relativeTime: {\n\t future: '%s soň',\n\t past: '%s öň',\n\t s: 'birnäçe sekunt',\n\t m: 'bir minut',\n\t mm: '%d minut',\n\t h: 'bir sagat',\n\t hh: '%d sagat',\n\t d: 'bir gün',\n\t dd: '%d gün',\n\t M: 'bir aý',\n\t MM: '%d aý',\n\t y: 'bir ýyl',\n\t yy: '%d ýyl',\n\t },\n\t ordinal: function (number, period) {\n\t switch (period) {\n\t case 'd':\n\t case 'D':\n\t case 'Do':\n\t case 'DD':\n\t return number;\n\t default:\n\t if (number === 0) {\n\t // special case for zero\n\t return number + \"'unjy\";\n\t }\n\t var a = number % 10,\n\t b = (number % 100) - a,\n\t c = number >= 100 ? 100 : null;\n\t return number + (suffixes[a] || suffixes[b] || suffixes[c]);\n\t }\n\t },\n\t week: {\n\t dow: 1, // Monday is the first day of the week.\n\t doy: 7, // The week that contains Jan 7th is the first week of the year.\n\t },\n\t });\n\t\n\t return tk;\n\t\n\t})));\n\n\n/***/ }),\n\n/***/ 422:\n/***/ (function(module, exports, __webpack_require__) {\n\n\t//! moment.js locale configuration\n\t//! locale : Tagalog (Philippines) [tl-ph]\n\t//! author : Dan Hagman : https://github.com/hagmandan\n\t\n\t;(function (global, factory) {\n\t true ? factory(__webpack_require__(1)) :\n\t typeof define === 'function' && define.amd ? define(['../moment'], factory) :\n\t factory(global.moment)\n\t}(this, (function (moment) { 'use strict';\n\t\n\t //! moment.js locale configuration\n\t\n\t var tlPh = moment.defineLocale('tl-ph', {\n\t months: 'Enero_Pebrero_Marso_Abril_Mayo_Hunyo_Hulyo_Agosto_Setyembre_Oktubre_Nobyembre_Disyembre'.split(\n\t '_'\n\t ),\n\t monthsShort: 'Ene_Peb_Mar_Abr_May_Hun_Hul_Ago_Set_Okt_Nob_Dis'.split('_'),\n\t weekdays: 'Linggo_Lunes_Martes_Miyerkules_Huwebes_Biyernes_Sabado'.split(\n\t '_'\n\t ),\n\t weekdaysShort: 'Lin_Lun_Mar_Miy_Huw_Biy_Sab'.split('_'),\n\t weekdaysMin: 'Li_Lu_Ma_Mi_Hu_Bi_Sab'.split('_'),\n\t longDateFormat: {\n\t LT: 'HH:mm',\n\t LTS: 'HH:mm:ss',\n\t L: 'MM/D/YYYY',\n\t LL: 'MMMM D, YYYY',\n\t LLL: 'MMMM D, YYYY HH:mm',\n\t LLLL: 'dddd, MMMM DD, YYYY HH:mm',\n\t },\n\t calendar: {\n\t sameDay: 'LT [ngayong araw]',\n\t nextDay: '[Bukas ng] LT',\n\t nextWeek: 'LT [sa susunod na] dddd',\n\t lastDay: 'LT [kahapon]',\n\t lastWeek: 'LT [noong nakaraang] dddd',\n\t sameElse: 'L',\n\t },\n\t relativeTime: {\n\t future: 'sa loob ng %s',\n\t past: '%s ang nakalipas',\n\t s: 'ilang segundo',\n\t ss: '%d segundo',\n\t m: 'isang minuto',\n\t mm: '%d minuto',\n\t h: 'isang oras',\n\t hh: '%d oras',\n\t d: 'isang araw',\n\t dd: '%d araw',\n\t M: 'isang buwan',\n\t MM: '%d buwan',\n\t y: 'isang taon',\n\t yy: '%d taon',\n\t },\n\t dayOfMonthOrdinalParse: /\\d{1,2}/,\n\t ordinal: function (number) {\n\t return number;\n\t },\n\t week: {\n\t dow: 1, // Monday is the first day of the week.\n\t doy: 4, // The week that contains Jan 4th is the first week of the year.\n\t },\n\t });\n\t\n\t return tlPh;\n\t\n\t})));\n\n\n/***/ }),\n\n/***/ 423:\n/***/ (function(module, exports, __webpack_require__) {\n\n\t//! moment.js locale configuration\n\t//! locale : Klingon [tlh]\n\t//! author : Dominika Kruk : https://github.com/amaranthrose\n\t\n\t;(function (global, factory) {\n\t true ? factory(__webpack_require__(1)) :\n\t typeof define === 'function' && define.amd ? define(['../moment'], factory) :\n\t factory(global.moment)\n\t}(this, (function (moment) { 'use strict';\n\t\n\t //! moment.js locale configuration\n\t\n\t var numbersNouns = 'pagh_wa’_cha’_wej_loS_vagh_jav_Soch_chorgh_Hut'.split('_');\n\t\n\t function translateFuture(output) {\n\t var time = output;\n\t time =\n\t output.indexOf('jaj') !== -1\n\t ? time.slice(0, -3) + 'leS'\n\t : output.indexOf('jar') !== -1\n\t ? time.slice(0, -3) + 'waQ'\n\t : output.indexOf('DIS') !== -1\n\t ? time.slice(0, -3) + 'nem'\n\t : time + ' pIq';\n\t return time;\n\t }\n\t\n\t function translatePast(output) {\n\t var time = output;\n\t time =\n\t output.indexOf('jaj') !== -1\n\t ? time.slice(0, -3) + 'Hu’'\n\t : output.indexOf('jar') !== -1\n\t ? time.slice(0, -3) + 'wen'\n\t : output.indexOf('DIS') !== -1\n\t ? time.slice(0, -3) + 'ben'\n\t : time + ' ret';\n\t return time;\n\t }\n\t\n\t function translate(number, withoutSuffix, string, isFuture) {\n\t var numberNoun = numberAsNoun(number);\n\t switch (string) {\n\t case 'ss':\n\t return numberNoun + ' lup';\n\t case 'mm':\n\t return numberNoun + ' tup';\n\t case 'hh':\n\t return numberNoun + ' rep';\n\t case 'dd':\n\t return numberNoun + ' jaj';\n\t case 'MM':\n\t return numberNoun + ' jar';\n\t case 'yy':\n\t return numberNoun + ' DIS';\n\t }\n\t }\n\t\n\t function numberAsNoun(number) {\n\t var hundred = Math.floor((number % 1000) / 100),\n\t ten = Math.floor((number % 100) / 10),\n\t one = number % 10,\n\t word = '';\n\t if (hundred > 0) {\n\t word += numbersNouns[hundred] + 'vatlh';\n\t }\n\t if (ten > 0) {\n\t word += (word !== '' ? ' ' : '') + numbersNouns[ten] + 'maH';\n\t }\n\t if (one > 0) {\n\t word += (word !== '' ? ' ' : '') + numbersNouns[one];\n\t }\n\t return word === '' ? 'pagh' : word;\n\t }\n\t\n\t var tlh = moment.defineLocale('tlh', {\n\t 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\t '_'\n\t ),\n\t 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\t '_'\n\t ),\n\t monthsParseExact: true,\n\t weekdays: 'lojmItjaj_DaSjaj_povjaj_ghItlhjaj_loghjaj_buqjaj_ghInjaj'.split(\n\t '_'\n\t ),\n\t weekdaysShort: 'lojmItjaj_DaSjaj_povjaj_ghItlhjaj_loghjaj_buqjaj_ghInjaj'.split(\n\t '_'\n\t ),\n\t weekdaysMin: 'lojmItjaj_DaSjaj_povjaj_ghItlhjaj_loghjaj_buqjaj_ghInjaj'.split(\n\t '_'\n\t ),\n\t longDateFormat: {\n\t LT: 'HH:mm',\n\t LTS: 'HH:mm:ss',\n\t L: 'DD.MM.YYYY',\n\t LL: 'D MMMM YYYY',\n\t LLL: 'D MMMM YYYY HH:mm',\n\t LLLL: 'dddd, D MMMM YYYY HH:mm',\n\t },\n\t calendar: {\n\t sameDay: '[DaHjaj] LT',\n\t nextDay: '[wa’leS] LT',\n\t nextWeek: 'LLL',\n\t lastDay: '[wa’Hu’] LT',\n\t lastWeek: 'LLL',\n\t sameElse: 'L',\n\t },\n\t relativeTime: {\n\t future: translateFuture,\n\t past: translatePast,\n\t s: 'puS lup',\n\t ss: translate,\n\t m: 'wa’ tup',\n\t mm: translate,\n\t h: 'wa’ rep',\n\t hh: translate,\n\t d: 'wa’ jaj',\n\t dd: translate,\n\t M: 'wa’ jar',\n\t MM: translate,\n\t y: 'wa’ DIS',\n\t yy: translate,\n\t },\n\t dayOfMonthOrdinalParse: /\\d{1,2}\\./,\n\t ordinal: '%d.',\n\t week: {\n\t dow: 1, // Monday is the first day of the week.\n\t doy: 4, // The week that contains Jan 4th is the first week of the year.\n\t },\n\t });\n\t\n\t return tlh;\n\t\n\t})));\n\n\n/***/ }),\n\n/***/ 424:\n/***/ (function(module, exports, __webpack_require__) {\n\n\t//! moment.js locale configuration\n\t//! locale : Turkish [tr]\n\t//! authors : Erhan Gundogan : https://github.com/erhangundogan,\n\t//! Burak Yiğit Kaya: https://github.com/BYK\n\t\n\t;(function (global, factory) {\n\t true ? factory(__webpack_require__(1)) :\n\t typeof define === 'function' && define.amd ? define(['../moment'], factory) :\n\t factory(global.moment)\n\t}(this, (function (moment) { 'use strict';\n\t\n\t //! moment.js locale configuration\n\t\n\t var suffixes = {\n\t 1: \"'inci\",\n\t 5: \"'inci\",\n\t 8: \"'inci\",\n\t 70: \"'inci\",\n\t 80: \"'inci\",\n\t 2: \"'nci\",\n\t 7: \"'nci\",\n\t 20: \"'nci\",\n\t 50: \"'nci\",\n\t 3: \"'üncü\",\n\t 4: \"'üncü\",\n\t 100: \"'üncü\",\n\t 6: \"'ncı\",\n\t 9: \"'uncu\",\n\t 10: \"'uncu\",\n\t 30: \"'uncu\",\n\t 60: \"'ıncı\",\n\t 90: \"'ıncı\",\n\t };\n\t\n\t var tr = moment.defineLocale('tr', {\n\t months: 'Ocak_Şubat_Mart_Nisan_Mayıs_Haziran_Temmuz_Ağustos_Eylül_Ekim_Kasım_Aralık'.split(\n\t '_'\n\t ),\n\t monthsShort: 'Oca_Şub_Mar_Nis_May_Haz_Tem_Ağu_Eyl_Eki_Kas_Ara'.split('_'),\n\t weekdays: 'Pazar_Pazartesi_Salı_Çarşamba_Perşembe_Cuma_Cumartesi'.split(\n\t '_'\n\t ),\n\t weekdaysShort: 'Paz_Pts_Sal_Çar_Per_Cum_Cts'.split('_'),\n\t weekdaysMin: 'Pz_Pt_Sa_Ça_Pe_Cu_Ct'.split('_'),\n\t meridiem: function (hours, minutes, isLower) {\n\t if (hours < 12) {\n\t return isLower ? 'öö' : 'ÖÖ';\n\t } else {\n\t return isLower ? 'ös' : 'ÖS';\n\t }\n\t },\n\t meridiemParse: /öö|ÖÖ|ös|ÖS/,\n\t isPM: function (input) {\n\t return input === 'ös' || input === 'ÖS';\n\t },\n\t longDateFormat: {\n\t LT: 'HH:mm',\n\t LTS: 'HH:mm:ss',\n\t L: 'DD.MM.YYYY',\n\t LL: 'D MMMM YYYY',\n\t LLL: 'D MMMM YYYY HH:mm',\n\t LLLL: 'dddd, D MMMM YYYY HH:mm',\n\t },\n\t calendar: {\n\t sameDay: '[bugün saat] LT',\n\t nextDay: '[yarın saat] LT',\n\t nextWeek: '[gelecek] dddd [saat] LT',\n\t lastDay: '[dün] LT',\n\t lastWeek: '[geçen] dddd [saat] LT',\n\t sameElse: 'L',\n\t },\n\t relativeTime: {\n\t future: '%s sonra',\n\t past: '%s önce',\n\t s: 'birkaç saniye',\n\t ss: '%d saniye',\n\t m: 'bir dakika',\n\t mm: '%d dakika',\n\t h: 'bir saat',\n\t hh: '%d saat',\n\t d: 'bir gün',\n\t dd: '%d gün',\n\t w: 'bir hafta',\n\t ww: '%d hafta',\n\t M: 'bir ay',\n\t MM: '%d ay',\n\t y: 'bir yıl',\n\t yy: '%d yıl',\n\t },\n\t ordinal: function (number, period) {\n\t switch (period) {\n\t case 'd':\n\t case 'D':\n\t case 'Do':\n\t case 'DD':\n\t return number;\n\t default:\n\t if (number === 0) {\n\t // special case for zero\n\t return number + \"'ıncı\";\n\t }\n\t var a = number % 10,\n\t b = (number % 100) - a,\n\t c = number >= 100 ? 100 : null;\n\t return number + (suffixes[a] || suffixes[b] || suffixes[c]);\n\t }\n\t },\n\t week: {\n\t dow: 1, // Monday is the first day of the week.\n\t doy: 7, // The week that contains Jan 7th is the first week of the year.\n\t },\n\t });\n\t\n\t return tr;\n\t\n\t})));\n\n\n/***/ }),\n\n/***/ 425:\n/***/ (function(module, exports, __webpack_require__) {\n\n\t//! moment.js locale configuration\n\t//! locale : Talossan [tzl]\n\t//! author : Robin van der Vliet : https://github.com/robin0van0der0v\n\t//! author : Iustì Canun\n\t\n\t;(function (global, factory) {\n\t true ? factory(__webpack_require__(1)) :\n\t typeof define === 'function' && define.amd ? define(['../moment'], factory) :\n\t factory(global.moment)\n\t}(this, (function (moment) { 'use strict';\n\t\n\t //! moment.js locale configuration\n\t\n\t // After the year there should be a slash and the amount of years since December 26, 1979 in Roman numerals.\n\t // This is currently too difficult (maybe even impossible) to add.\n\t var tzl = moment.defineLocale('tzl', {\n\t months: 'Januar_Fevraglh_Març_Avrïu_Mai_Gün_Julia_Guscht_Setemvar_Listopäts_Noemvar_Zecemvar'.split(\n\t '_'\n\t ),\n\t monthsShort: 'Jan_Fev_Mar_Avr_Mai_Gün_Jul_Gus_Set_Lis_Noe_Zec'.split('_'),\n\t weekdays: 'Súladi_Lúneçi_Maitzi_Márcuri_Xhúadi_Viénerçi_Sáturi'.split('_'),\n\t weekdaysShort: 'Súl_Lún_Mai_Már_Xhú_Vié_Sát'.split('_'),\n\t weekdaysMin: 'Sú_Lú_Ma_Má_Xh_Vi_Sá'.split('_'),\n\t longDateFormat: {\n\t LT: 'HH.mm',\n\t LTS: 'HH.mm.ss',\n\t L: 'DD.MM.YYYY',\n\t LL: 'D. MMMM [dallas] YYYY',\n\t LLL: 'D. MMMM [dallas] YYYY HH.mm',\n\t LLLL: 'dddd, [li] D. MMMM [dallas] YYYY HH.mm',\n\t },\n\t meridiemParse: /d\\'o|d\\'a/i,\n\t isPM: function (input) {\n\t return \"d'o\" === input.toLowerCase();\n\t },\n\t meridiem: function (hours, minutes, isLower) {\n\t if (hours > 11) {\n\t return isLower ? \"d'o\" : \"D'O\";\n\t } else {\n\t return isLower ? \"d'a\" : \"D'A\";\n\t }\n\t },\n\t calendar: {\n\t sameDay: '[oxhi à] LT',\n\t nextDay: '[demà à] LT',\n\t nextWeek: 'dddd [à] LT',\n\t lastDay: '[ieiri à] LT',\n\t lastWeek: '[sür el] dddd [lasteu à] LT',\n\t sameElse: 'L',\n\t },\n\t relativeTime: {\n\t future: 'osprei %s',\n\t past: 'ja%s',\n\t s: processRelativeTime,\n\t ss: processRelativeTime,\n\t m: processRelativeTime,\n\t mm: processRelativeTime,\n\t h: processRelativeTime,\n\t hh: processRelativeTime,\n\t d: processRelativeTime,\n\t dd: processRelativeTime,\n\t M: processRelativeTime,\n\t MM: processRelativeTime,\n\t y: processRelativeTime,\n\t yy: processRelativeTime,\n\t },\n\t dayOfMonthOrdinalParse: /\\d{1,2}\\./,\n\t ordinal: '%d.',\n\t week: {\n\t dow: 1, // Monday is the first day of the week.\n\t doy: 4, // The week that contains Jan 4th is the first week of the year.\n\t },\n\t });\n\t\n\t function processRelativeTime(number, withoutSuffix, key, isFuture) {\n\t var format = {\n\t s: ['viensas secunds', \"'iensas secunds\"],\n\t ss: [number + ' secunds', '' + number + ' secunds'],\n\t m: [\"'n míut\", \"'iens míut\"],\n\t mm: [number + ' míuts', '' + number + ' míuts'],\n\t h: [\"'n þora\", \"'iensa þora\"],\n\t hh: [number + ' þoras', '' + number + ' þoras'],\n\t d: [\"'n ziua\", \"'iensa ziua\"],\n\t dd: [number + ' ziuas', '' + number + ' ziuas'],\n\t M: [\"'n mes\", \"'iens mes\"],\n\t MM: [number + ' mesen', '' + number + ' mesen'],\n\t y: [\"'n ar\", \"'iens ar\"],\n\t yy: [number + ' ars', '' + number + ' ars'],\n\t };\n\t return isFuture\n\t ? format[key][0]\n\t : withoutSuffix\n\t ? format[key][0]\n\t : format[key][1];\n\t }\n\t\n\t return tzl;\n\t\n\t})));\n\n\n/***/ }),\n\n/***/ 426:\n/***/ (function(module, exports, __webpack_require__) {\n\n\t//! moment.js locale configuration\n\t//! locale : Central Atlas Tamazight Latin [tzm-latn]\n\t//! author : Abdel Said : https://github.com/abdelsaid\n\t\n\t;(function (global, factory) {\n\t true ? factory(__webpack_require__(1)) :\n\t typeof define === 'function' && define.amd ? define(['../moment'], factory) :\n\t factory(global.moment)\n\t}(this, (function (moment) { 'use strict';\n\t\n\t //! moment.js locale configuration\n\t\n\t var tzmLatn = moment.defineLocale('tzm-latn', {\n\t months: 'innayr_brˤayrˤ_marˤsˤ_ibrir_mayyw_ywnyw_ywlywz_ɣwšt_šwtanbir_ktˤwbrˤ_nwwanbir_dwjnbir'.split(\n\t '_'\n\t ),\n\t monthsShort: 'innayr_brˤayrˤ_marˤsˤ_ibrir_mayyw_ywnyw_ywlywz_ɣwšt_šwtanbir_ktˤwbrˤ_nwwanbir_dwjnbir'.split(\n\t '_'\n\t ),\n\t weekdays: 'asamas_aynas_asinas_akras_akwas_asimwas_asiḍyas'.split('_'),\n\t weekdaysShort: 'asamas_aynas_asinas_akras_akwas_asimwas_asiḍyas'.split('_'),\n\t weekdaysMin: 'asamas_aynas_asinas_akras_akwas_asimwas_asiḍyas'.split('_'),\n\t longDateFormat: {\n\t LT: 'HH:mm',\n\t LTS: 'HH:mm:ss',\n\t L: 'DD/MM/YYYY',\n\t LL: 'D MMMM YYYY',\n\t LLL: 'D MMMM YYYY HH:mm',\n\t LLLL: 'dddd D MMMM YYYY HH:mm',\n\t },\n\t calendar: {\n\t sameDay: '[asdkh g] LT',\n\t nextDay: '[aska g] LT',\n\t nextWeek: 'dddd [g] LT',\n\t lastDay: '[assant g] LT',\n\t lastWeek: 'dddd [g] LT',\n\t sameElse: 'L',\n\t },\n\t relativeTime: {\n\t future: 'dadkh s yan %s',\n\t past: 'yan %s',\n\t s: 'imik',\n\t ss: '%d imik',\n\t m: 'minuḍ',\n\t mm: '%d minuḍ',\n\t h: 'saɛa',\n\t hh: '%d tassaɛin',\n\t d: 'ass',\n\t dd: '%d ossan',\n\t M: 'ayowr',\n\t MM: '%d iyyirn',\n\t y: 'asgas',\n\t yy: '%d isgasn',\n\t },\n\t week: {\n\t dow: 6, // Saturday is the first day of the week.\n\t doy: 12, // The week that contains Jan 12th is the first week of the year.\n\t },\n\t });\n\t\n\t return tzmLatn;\n\t\n\t})));\n\n\n/***/ }),\n\n/***/ 427:\n/***/ (function(module, exports, __webpack_require__) {\n\n\t//! moment.js locale configuration\n\t//! locale : Central Atlas Tamazight [tzm]\n\t//! author : Abdel Said : https://github.com/abdelsaid\n\t\n\t;(function (global, factory) {\n\t true ? factory(__webpack_require__(1)) :\n\t typeof define === 'function' && define.amd ? define(['../moment'], factory) :\n\t factory(global.moment)\n\t}(this, (function (moment) { 'use strict';\n\t\n\t //! moment.js locale configuration\n\t\n\t var tzm = moment.defineLocale('tzm', {\n\t months: 'ⵉⵏⵏⴰⵢⵔ_ⴱⵕⴰⵢⵕ_ⵎⴰⵕⵚ_ⵉⴱⵔⵉⵔ_ⵎⴰⵢⵢⵓ_ⵢⵓⵏⵢⵓ_ⵢⵓⵍⵢⵓⵣ_ⵖⵓⵛⵜ_ⵛⵓⵜⴰⵏⴱⵉⵔ_ⴽⵟⵓⴱⵕ_ⵏⵓⵡⴰⵏⴱⵉⵔ_ⴷⵓⵊⵏⴱⵉⵔ'.split(\n\t '_'\n\t ),\n\t monthsShort: 'ⵉⵏⵏⴰⵢⵔ_ⴱⵕⴰⵢⵕ_ⵎⴰⵕⵚ_ⵉⴱⵔⵉⵔ_ⵎⴰⵢⵢⵓ_ⵢⵓⵏⵢⵓ_ⵢⵓⵍⵢⵓⵣ_ⵖⵓⵛⵜ_ⵛⵓⵜⴰⵏⴱⵉⵔ_ⴽⵟⵓⴱⵕ_ⵏⵓⵡⴰⵏⴱⵉⵔ_ⴷⵓⵊⵏⴱⵉⵔ'.split(\n\t '_'\n\t ),\n\t weekdays: 'ⴰⵙⴰⵎⴰⵙ_ⴰⵢⵏⴰⵙ_ⴰⵙⵉⵏⴰⵙ_ⴰⴽⵔⴰⵙ_ⴰⴽⵡⴰⵙ_ⴰⵙⵉⵎⵡⴰⵙ_ⴰⵙⵉⴹⵢⴰⵙ'.split('_'),\n\t weekdaysShort: 'ⴰⵙⴰⵎⴰⵙ_ⴰⵢⵏⴰⵙ_ⴰⵙⵉⵏⴰⵙ_ⴰⴽⵔⴰⵙ_ⴰⴽⵡⴰⵙ_ⴰⵙⵉⵎⵡⴰⵙ_ⴰⵙⵉⴹⵢⴰⵙ'.split('_'),\n\t weekdaysMin: 'ⴰⵙⴰⵎⴰⵙ_ⴰⵢⵏⴰⵙ_ⴰⵙⵉⵏⴰⵙ_ⴰⴽⵔⴰⵙ_ⴰⴽⵡⴰⵙ_ⴰⵙⵉⵎⵡⴰⵙ_ⴰⵙⵉⴹⵢⴰⵙ'.split('_'),\n\t longDateFormat: {\n\t LT: 'HH:mm',\n\t LTS: 'HH:mm:ss',\n\t L: 'DD/MM/YYYY',\n\t LL: 'D MMMM YYYY',\n\t LLL: 'D MMMM YYYY HH:mm',\n\t LLLL: 'dddd D MMMM YYYY HH:mm',\n\t },\n\t calendar: {\n\t sameDay: '[ⴰⵙⴷⵅ ⴴ] LT',\n\t nextDay: '[ⴰⵙⴽⴰ ⴴ] LT',\n\t nextWeek: 'dddd [ⴴ] LT',\n\t lastDay: '[ⴰⵚⴰⵏⵜ ⴴ] LT',\n\t lastWeek: 'dddd [ⴴ] LT',\n\t sameElse: 'L',\n\t },\n\t relativeTime: {\n\t future: 'ⴷⴰⴷⵅ ⵙ ⵢⴰⵏ %s',\n\t past: 'ⵢⴰⵏ %s',\n\t s: 'ⵉⵎⵉⴽ',\n\t ss: '%d ⵉⵎⵉⴽ',\n\t m: 'ⵎⵉⵏⵓⴺ',\n\t mm: '%d ⵎⵉⵏⵓⴺ',\n\t h: 'ⵙⴰⵄⴰ',\n\t hh: '%d ⵜⴰⵙⵙⴰⵄⵉⵏ',\n\t d: 'ⴰⵙⵙ',\n\t dd: '%d oⵙⵙⴰⵏ',\n\t M: 'ⴰⵢoⵓⵔ',\n\t MM: '%d ⵉⵢⵢⵉⵔⵏ',\n\t y: 'ⴰⵙⴳⴰⵙ',\n\t yy: '%d ⵉⵙⴳⴰⵙⵏ',\n\t },\n\t week: {\n\t dow: 6, // Saturday is the first day of the week.\n\t doy: 12, // The week that contains Jan 12th is the first week of the year.\n\t },\n\t });\n\t\n\t return tzm;\n\t\n\t})));\n\n\n/***/ }),\n\n/***/ 428:\n/***/ (function(module, exports, __webpack_require__) {\n\n\t//! moment.js locale configuration\n\t//! locale : Uyghur (China) [ug-cn]\n\t//! author: boyaq : https://github.com/boyaq\n\t\n\t;(function (global, factory) {\n\t true ? factory(__webpack_require__(1)) :\n\t typeof define === 'function' && define.amd ? define(['../moment'], factory) :\n\t factory(global.moment)\n\t}(this, (function (moment) { 'use strict';\n\t\n\t //! moment.js locale configuration\n\t\n\t var ugCn = moment.defineLocale('ug-cn', {\n\t months: 'يانۋار_فېۋرال_مارت_ئاپرېل_ماي_ئىيۇن_ئىيۇل_ئاۋغۇست_سېنتەبىر_ئۆكتەبىر_نويابىر_دېكابىر'.split(\n\t '_'\n\t ),\n\t monthsShort: 'يانۋار_فېۋرال_مارت_ئاپرېل_ماي_ئىيۇن_ئىيۇل_ئاۋغۇست_سېنتەبىر_ئۆكتەبىر_نويابىر_دېكابىر'.split(\n\t '_'\n\t ),\n\t weekdays: 'يەكشەنبە_دۈشەنبە_سەيشەنبە_چارشەنبە_پەيشەنبە_جۈمە_شەنبە'.split(\n\t '_'\n\t ),\n\t weekdaysShort: 'يە_دۈ_سە_چا_پە_جۈ_شە'.split('_'),\n\t weekdaysMin: 'يە_دۈ_سە_چا_پە_جۈ_شە'.split('_'),\n\t longDateFormat: {\n\t LT: 'HH:mm',\n\t LTS: 'HH:mm:ss',\n\t L: 'YYYY-MM-DD',\n\t LL: 'YYYY-يىلىM-ئاينىڭD-كۈنى',\n\t LLL: 'YYYY-يىلىM-ئاينىڭD-كۈنى، HH:mm',\n\t LLLL: 'dddd، YYYY-يىلىM-ئاينىڭD-كۈنى، HH:mm',\n\t },\n\t meridiemParse: /يېرىم كېچە|سەھەر|چۈشتىن بۇرۇن|چۈش|چۈشتىن كېيىن|كەچ/,\n\t meridiemHour: function (hour, meridiem) {\n\t if (hour === 12) {\n\t hour = 0;\n\t }\n\t if (\n\t meridiem === 'يېرىم كېچە' ||\n\t meridiem === 'سەھەر' ||\n\t meridiem === 'چۈشتىن بۇرۇن'\n\t ) {\n\t return hour;\n\t } else if (meridiem === 'چۈشتىن كېيىن' || meridiem === 'كەچ') {\n\t return hour + 12;\n\t } else {\n\t return hour >= 11 ? hour : hour + 12;\n\t }\n\t },\n\t meridiem: function (hour, minute, isLower) {\n\t var hm = hour * 100 + minute;\n\t if (hm < 600) {\n\t return 'يېرىم كېچە';\n\t } else if (hm < 900) {\n\t return 'سەھەر';\n\t } else if (hm < 1130) {\n\t return 'چۈشتىن بۇرۇن';\n\t } else if (hm < 1230) {\n\t return 'چۈش';\n\t } else if (hm < 1800) {\n\t return 'چۈشتىن كېيىن';\n\t } else {\n\t return 'كەچ';\n\t }\n\t },\n\t calendar: {\n\t sameDay: '[بۈگۈن سائەت] LT',\n\t nextDay: '[ئەتە سائەت] LT',\n\t nextWeek: '[كېلەركى] dddd [سائەت] LT',\n\t lastDay: '[تۆنۈگۈن] LT',\n\t lastWeek: '[ئالدىنقى] dddd [سائەت] LT',\n\t sameElse: 'L',\n\t },\n\t relativeTime: {\n\t future: '%s كېيىن',\n\t past: '%s بۇرۇن',\n\t s: 'نەچچە سېكونت',\n\t ss: '%d سېكونت',\n\t m: 'بىر مىنۇت',\n\t mm: '%d مىنۇت',\n\t h: 'بىر سائەت',\n\t hh: '%d سائەت',\n\t d: 'بىر كۈن',\n\t dd: '%d كۈن',\n\t M: 'بىر ئاي',\n\t MM: '%d ئاي',\n\t y: 'بىر يىل',\n\t yy: '%d يىل',\n\t },\n\t\n\t dayOfMonthOrdinalParse: /\\d{1,2}(-كۈنى|-ئاي|-ھەپتە)/,\n\t ordinal: function (number, period) {\n\t switch (period) {\n\t case 'd':\n\t case 'D':\n\t case 'DDD':\n\t return number + '-كۈنى';\n\t case 'w':\n\t case 'W':\n\t return number + '-ھەپتە';\n\t default:\n\t return number;\n\t }\n\t },\n\t preparse: function (string) {\n\t return string.replace(/،/g, ',');\n\t },\n\t postformat: function (string) {\n\t return string.replace(/,/g, '،');\n\t },\n\t week: {\n\t // GB/T 7408-1994《数据元和交换格式·信息交换·日期和时间表示法》与ISO 8601:1988等效\n\t dow: 1, // Monday is the first day of the week.\n\t doy: 7, // The week that contains Jan 1st is the first week of the year.\n\t },\n\t });\n\t\n\t return ugCn;\n\t\n\t})));\n\n\n/***/ }),\n\n/***/ 429:\n/***/ (function(module, exports, __webpack_require__) {\n\n\t//! moment.js locale configuration\n\t//! locale : Ukrainian [uk]\n\t//! author : zemlanin : https://github.com/zemlanin\n\t//! Author : Menelion Elensúle : https://github.com/Oire\n\t\n\t;(function (global, factory) {\n\t true ? factory(__webpack_require__(1)) :\n\t typeof define === 'function' && define.amd ? define(['../moment'], factory) :\n\t factory(global.moment)\n\t}(this, (function (moment) { 'use strict';\n\t\n\t //! moment.js locale configuration\n\t\n\t function plural(word, num) {\n\t var forms = word.split('_');\n\t return num % 10 === 1 && num % 100 !== 11\n\t ? forms[0]\n\t : num % 10 >= 2 && num % 10 <= 4 && (num % 100 < 10 || num % 100 >= 20)\n\t ? forms[1]\n\t : forms[2];\n\t }\n\t function relativeTimeWithPlural(number, withoutSuffix, key) {\n\t var format = {\n\t ss: withoutSuffix ? 'секунда_секунди_секунд' : 'секунду_секунди_секунд',\n\t mm: withoutSuffix ? 'хвилина_хвилини_хвилин' : 'хвилину_хвилини_хвилин',\n\t hh: withoutSuffix ? 'година_години_годин' : 'годину_години_годин',\n\t dd: 'день_дні_днів',\n\t MM: 'місяць_місяці_місяців',\n\t yy: 'рік_роки_років',\n\t };\n\t if (key === 'm') {\n\t return withoutSuffix ? 'хвилина' : 'хвилину';\n\t } else if (key === 'h') {\n\t return withoutSuffix ? 'година' : 'годину';\n\t } else {\n\t return number + ' ' + plural(format[key], +number);\n\t }\n\t }\n\t function weekdaysCaseReplace(m, format) {\n\t var weekdays = {\n\t nominative: 'неділя_понеділок_вівторок_середа_четвер_п’ятниця_субота'.split(\n\t '_'\n\t ),\n\t accusative: 'неділю_понеділок_вівторок_середу_четвер_п’ятницю_суботу'.split(\n\t '_'\n\t ),\n\t genitive: 'неділі_понеділка_вівторка_середи_четверга_п’ятниці_суботи'.split(\n\t '_'\n\t ),\n\t },\n\t nounCase;\n\t\n\t if (m === true) {\n\t return weekdays['nominative']\n\t .slice(1, 7)\n\t .concat(weekdays['nominative'].slice(0, 1));\n\t }\n\t if (!m) {\n\t return weekdays['nominative'];\n\t }\n\t\n\t nounCase = /(\\[[ВвУу]\\]) ?dddd/.test(format)\n\t ? 'accusative'\n\t : /\\[?(?:минулої|наступної)? ?\\] ?dddd/.test(format)\n\t ? 'genitive'\n\t : 'nominative';\n\t return weekdays[nounCase][m.day()];\n\t }\n\t function processHoursFunction(str) {\n\t return function () {\n\t return str + 'о' + (this.hours() === 11 ? 'б' : '') + '] LT';\n\t };\n\t }\n\t\n\t var uk = moment.defineLocale('uk', {\n\t months: {\n\t format: 'січня_лютого_березня_квітня_травня_червня_липня_серпня_вересня_жовтня_листопада_грудня'.split(\n\t '_'\n\t ),\n\t standalone: 'січень_лютий_березень_квітень_травень_червень_липень_серпень_вересень_жовтень_листопад_грудень'.split(\n\t '_'\n\t ),\n\t },\n\t monthsShort: 'січ_лют_бер_квіт_трав_черв_лип_серп_вер_жовт_лист_груд'.split(\n\t '_'\n\t ),\n\t weekdays: weekdaysCaseReplace,\n\t weekdaysShort: 'нд_пн_вт_ср_чт_пт_сб'.split('_'),\n\t weekdaysMin: 'нд_пн_вт_ср_чт_пт_сб'.split('_'),\n\t longDateFormat: {\n\t LT: 'HH:mm',\n\t LTS: 'HH:mm:ss',\n\t L: 'DD.MM.YYYY',\n\t LL: 'D MMMM YYYY р.',\n\t LLL: 'D MMMM YYYY р., HH:mm',\n\t LLLL: 'dddd, D MMMM YYYY р., HH:mm',\n\t },\n\t calendar: {\n\t sameDay: processHoursFunction('[Сьогодні '),\n\t nextDay: processHoursFunction('[Завтра '),\n\t lastDay: processHoursFunction('[Вчора '),\n\t nextWeek: processHoursFunction('[У] dddd ['),\n\t lastWeek: function () {\n\t switch (this.day()) {\n\t case 0:\n\t case 3:\n\t case 5:\n\t case 6:\n\t return processHoursFunction('[Минулої] dddd [').call(this);\n\t case 1:\n\t case 2:\n\t case 4:\n\t return processHoursFunction('[Минулого] dddd [').call(this);\n\t }\n\t },\n\t sameElse: 'L',\n\t },\n\t relativeTime: {\n\t future: 'за %s',\n\t past: '%s тому',\n\t s: 'декілька секунд',\n\t ss: relativeTimeWithPlural,\n\t m: relativeTimeWithPlural,\n\t mm: relativeTimeWithPlural,\n\t h: 'годину',\n\t hh: relativeTimeWithPlural,\n\t d: 'день',\n\t dd: relativeTimeWithPlural,\n\t M: 'місяць',\n\t MM: relativeTimeWithPlural,\n\t y: 'рік',\n\t yy: relativeTimeWithPlural,\n\t },\n\t // M. E.: those two are virtually unused but a user might want to implement them for his/her website for some reason\n\t meridiemParse: /ночі|ранку|дня|вечора/,\n\t isPM: function (input) {\n\t return /^(дня|вечора)$/.test(input);\n\t },\n\t meridiem: function (hour, minute, isLower) {\n\t if (hour < 4) {\n\t return 'ночі';\n\t } else if (hour < 12) {\n\t return 'ранку';\n\t } else if (hour < 17) {\n\t return 'дня';\n\t } else {\n\t return 'вечора';\n\t }\n\t },\n\t dayOfMonthOrdinalParse: /\\d{1,2}-(й|го)/,\n\t ordinal: function (number, period) {\n\t switch (period) {\n\t case 'M':\n\t case 'd':\n\t case 'DDD':\n\t case 'w':\n\t case 'W':\n\t return number + '-й';\n\t case 'D':\n\t return number + '-го';\n\t default:\n\t return number;\n\t }\n\t },\n\t week: {\n\t dow: 1, // Monday is the first day of the week.\n\t doy: 7, // The week that contains Jan 7th is the first week of the year.\n\t },\n\t });\n\t\n\t return uk;\n\t\n\t})));\n\n\n/***/ }),\n\n/***/ 430:\n/***/ (function(module, exports, __webpack_require__) {\n\n\t//! moment.js locale configuration\n\t//! locale : Urdu [ur]\n\t//! author : Sawood Alam : https://github.com/ibnesayeed\n\t//! author : Zack : https://github.com/ZackVision\n\t\n\t;(function (global, factory) {\n\t true ? factory(__webpack_require__(1)) :\n\t typeof define === 'function' && define.amd ? define(['../moment'], factory) :\n\t factory(global.moment)\n\t}(this, (function (moment) { 'use strict';\n\t\n\t //! moment.js locale configuration\n\t\n\t var months = [\n\t 'جنوری',\n\t 'فروری',\n\t 'مارچ',\n\t 'اپریل',\n\t 'مئی',\n\t 'جون',\n\t 'جولائی',\n\t 'اگست',\n\t 'ستمبر',\n\t 'اکتوبر',\n\t 'نومبر',\n\t 'دسمبر',\n\t ],\n\t days = ['اتوار', 'پیر', 'منگل', 'بدھ', 'جمعرات', 'جمعہ', 'ہفتہ'];\n\t\n\t var ur = moment.defineLocale('ur', {\n\t months: months,\n\t monthsShort: months,\n\t weekdays: days,\n\t weekdaysShort: days,\n\t weekdaysMin: days,\n\t longDateFormat: {\n\t LT: 'HH:mm',\n\t LTS: 'HH:mm:ss',\n\t L: 'DD/MM/YYYY',\n\t LL: 'D MMMM YYYY',\n\t LLL: 'D MMMM YYYY HH:mm',\n\t LLLL: 'dddd، D MMMM YYYY HH:mm',\n\t },\n\t meridiemParse: /صبح|شام/,\n\t isPM: function (input) {\n\t return 'شام' === input;\n\t },\n\t meridiem: function (hour, minute, isLower) {\n\t if (hour < 12) {\n\t return 'صبح';\n\t }\n\t return 'شام';\n\t },\n\t calendar: {\n\t sameDay: '[آج بوقت] LT',\n\t nextDay: '[کل بوقت] LT',\n\t nextWeek: 'dddd [بوقت] LT',\n\t lastDay: '[گذشتہ روز بوقت] LT',\n\t lastWeek: '[گذشتہ] dddd [بوقت] LT',\n\t sameElse: 'L',\n\t },\n\t relativeTime: {\n\t future: '%s بعد',\n\t past: '%s قبل',\n\t s: 'چند سیکنڈ',\n\t ss: '%d سیکنڈ',\n\t m: 'ایک منٹ',\n\t mm: '%d منٹ',\n\t h: 'ایک گھنٹہ',\n\t hh: '%d گھنٹے',\n\t d: 'ایک دن',\n\t dd: '%d دن',\n\t M: 'ایک ماہ',\n\t MM: '%d ماہ',\n\t y: 'ایک سال',\n\t yy: '%d سال',\n\t },\n\t preparse: function (string) {\n\t return string.replace(/،/g, ',');\n\t },\n\t postformat: function (string) {\n\t return string.replace(/,/g, '،');\n\t },\n\t week: {\n\t dow: 1, // Monday is the first day of the week.\n\t doy: 4, // The week that contains Jan 4th is the first week of the year.\n\t },\n\t });\n\t\n\t return ur;\n\t\n\t})));\n\n\n/***/ }),\n\n/***/ 431:\n/***/ (function(module, exports, __webpack_require__) {\n\n\t//! moment.js locale configuration\n\t//! locale : Uzbek Latin [uz-latn]\n\t//! author : Rasulbek Mirzayev : github.com/Rasulbeeek\n\t\n\t;(function (global, factory) {\n\t true ? factory(__webpack_require__(1)) :\n\t typeof define === 'function' && define.amd ? define(['../moment'], factory) :\n\t factory(global.moment)\n\t}(this, (function (moment) { 'use strict';\n\t\n\t //! moment.js locale configuration\n\t\n\t var uzLatn = moment.defineLocale('uz-latn', {\n\t months: 'Yanvar_Fevral_Mart_Aprel_May_Iyun_Iyul_Avgust_Sentabr_Oktabr_Noyabr_Dekabr'.split(\n\t '_'\n\t ),\n\t monthsShort: 'Yan_Fev_Mar_Apr_May_Iyun_Iyul_Avg_Sen_Okt_Noy_Dek'.split('_'),\n\t weekdays: 'Yakshanba_Dushanba_Seshanba_Chorshanba_Payshanba_Juma_Shanba'.split(\n\t '_'\n\t ),\n\t weekdaysShort: 'Yak_Dush_Sesh_Chor_Pay_Jum_Shan'.split('_'),\n\t weekdaysMin: 'Ya_Du_Se_Cho_Pa_Ju_Sha'.split('_'),\n\t longDateFormat: {\n\t LT: 'HH:mm',\n\t LTS: 'HH:mm:ss',\n\t L: 'DD/MM/YYYY',\n\t LL: 'D MMMM YYYY',\n\t LLL: 'D MMMM YYYY HH:mm',\n\t LLLL: 'D MMMM YYYY, dddd HH:mm',\n\t },\n\t calendar: {\n\t sameDay: '[Bugun soat] LT [da]',\n\t nextDay: '[Ertaga] LT [da]',\n\t nextWeek: 'dddd [kuni soat] LT [da]',\n\t lastDay: '[Kecha soat] LT [da]',\n\t lastWeek: \"[O'tgan] dddd [kuni soat] LT [da]\",\n\t sameElse: 'L',\n\t },\n\t relativeTime: {\n\t future: 'Yaqin %s ichida',\n\t past: 'Bir necha %s oldin',\n\t s: 'soniya',\n\t ss: '%d soniya',\n\t m: 'bir daqiqa',\n\t mm: '%d daqiqa',\n\t h: 'bir soat',\n\t hh: '%d soat',\n\t d: 'bir kun',\n\t dd: '%d kun',\n\t M: 'bir oy',\n\t MM: '%d oy',\n\t y: 'bir yil',\n\t yy: '%d yil',\n\t },\n\t week: {\n\t dow: 1, // Monday is the first day of the week.\n\t doy: 7, // The week that contains Jan 7th is the first week of the year.\n\t },\n\t });\n\t\n\t return uzLatn;\n\t\n\t})));\n\n\n/***/ }),\n\n/***/ 432:\n/***/ (function(module, exports, __webpack_require__) {\n\n\t//! moment.js locale configuration\n\t//! locale : Uzbek [uz]\n\t//! author : Sardor Muminov : https://github.com/muminoff\n\t\n\t;(function (global, factory) {\n\t true ? factory(__webpack_require__(1)) :\n\t typeof define === 'function' && define.amd ? define(['../moment'], factory) :\n\t factory(global.moment)\n\t}(this, (function (moment) { 'use strict';\n\t\n\t //! moment.js locale configuration\n\t\n\t var uz = moment.defineLocale('uz', {\n\t months: 'январ_феврал_март_апрел_май_июн_июл_август_сентябр_октябр_ноябр_декабр'.split(\n\t '_'\n\t ),\n\t monthsShort: 'янв_фев_мар_апр_май_июн_июл_авг_сен_окт_ноя_дек'.split('_'),\n\t weekdays: 'Якшанба_Душанба_Сешанба_Чоршанба_Пайшанба_Жума_Шанба'.split('_'),\n\t weekdaysShort: 'Якш_Душ_Сеш_Чор_Пай_Жум_Шан'.split('_'),\n\t weekdaysMin: 'Як_Ду_Се_Чо_Па_Жу_Ша'.split('_'),\n\t longDateFormat: {\n\t LT: 'HH:mm',\n\t LTS: 'HH:mm:ss',\n\t L: 'DD/MM/YYYY',\n\t LL: 'D MMMM YYYY',\n\t LLL: 'D MMMM YYYY HH:mm',\n\t LLLL: 'D MMMM YYYY, dddd HH:mm',\n\t },\n\t calendar: {\n\t sameDay: '[Бугун соат] LT [да]',\n\t nextDay: '[Эртага] LT [да]',\n\t nextWeek: 'dddd [куни соат] LT [да]',\n\t lastDay: '[Кеча соат] LT [да]',\n\t lastWeek: '[Утган] dddd [куни соат] LT [да]',\n\t sameElse: 'L',\n\t },\n\t relativeTime: {\n\t future: 'Якин %s ичида',\n\t past: 'Бир неча %s олдин',\n\t s: 'фурсат',\n\t ss: '%d фурсат',\n\t m: 'бир дакика',\n\t mm: '%d дакика',\n\t h: 'бир соат',\n\t hh: '%d соат',\n\t d: 'бир кун',\n\t dd: '%d кун',\n\t M: 'бир ой',\n\t MM: '%d ой',\n\t y: 'бир йил',\n\t yy: '%d йил',\n\t },\n\t week: {\n\t dow: 1, // Monday is the first day of the week.\n\t doy: 7, // The week that contains Jan 4th is the first week of the year.\n\t },\n\t });\n\t\n\t return uz;\n\t\n\t})));\n\n\n/***/ }),\n\n/***/ 433:\n/***/ (function(module, exports, __webpack_require__) {\n\n\t//! moment.js locale configuration\n\t//! locale : Vietnamese [vi]\n\t//! author : Bang Nguyen : https://github.com/bangnk\n\t//! author : Chien Kira : https://github.com/chienkira\n\t\n\t;(function (global, factory) {\n\t true ? factory(__webpack_require__(1)) :\n\t typeof define === 'function' && define.amd ? define(['../moment'], factory) :\n\t factory(global.moment)\n\t}(this, (function (moment) { 'use strict';\n\t\n\t //! moment.js locale configuration\n\t\n\t var vi = moment.defineLocale('vi', {\n\t 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\t '_'\n\t ),\n\t 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\t '_'\n\t ),\n\t monthsParseExact: true,\n\t weekdays: 'chủ nhật_thứ hai_thứ ba_thứ tư_thứ năm_thứ sáu_thứ bảy'.split(\n\t '_'\n\t ),\n\t weekdaysShort: 'CN_T2_T3_T4_T5_T6_T7'.split('_'),\n\t weekdaysMin: 'CN_T2_T3_T4_T5_T6_T7'.split('_'),\n\t weekdaysParseExact: true,\n\t meridiemParse: /sa|ch/i,\n\t isPM: function (input) {\n\t return /^ch$/i.test(input);\n\t },\n\t meridiem: function (hours, minutes, isLower) {\n\t if (hours < 12) {\n\t return isLower ? 'sa' : 'SA';\n\t } else {\n\t return isLower ? 'ch' : 'CH';\n\t }\n\t },\n\t longDateFormat: {\n\t LT: 'HH:mm',\n\t LTS: 'HH:mm:ss',\n\t L: 'DD/MM/YYYY',\n\t LL: 'D MMMM [năm] YYYY',\n\t LLL: 'D MMMM [năm] YYYY HH:mm',\n\t LLLL: 'dddd, D MMMM [năm] YYYY HH:mm',\n\t l: 'DD/M/YYYY',\n\t ll: 'D MMM YYYY',\n\t lll: 'D MMM YYYY HH:mm',\n\t llll: 'ddd, D MMM YYYY HH:mm',\n\t },\n\t calendar: {\n\t sameDay: '[Hôm nay lúc] LT',\n\t nextDay: '[Ngày mai lúc] LT',\n\t nextWeek: 'dddd [tuần tới lúc] LT',\n\t lastDay: '[Hôm qua lúc] LT',\n\t lastWeek: 'dddd [tuần trước lúc] LT',\n\t sameElse: 'L',\n\t },\n\t relativeTime: {\n\t future: '%s tới',\n\t past: '%s trước',\n\t s: 'vài giây',\n\t ss: '%d giây',\n\t m: 'một phút',\n\t mm: '%d phút',\n\t h: 'một giờ',\n\t hh: '%d giờ',\n\t d: 'một ngày',\n\t dd: '%d ngày',\n\t w: 'một tuần',\n\t ww: '%d tuần',\n\t M: 'một tháng',\n\t MM: '%d tháng',\n\t y: 'một năm',\n\t yy: '%d năm',\n\t },\n\t dayOfMonthOrdinalParse: /\\d{1,2}/,\n\t ordinal: function (number) {\n\t return number;\n\t },\n\t week: {\n\t dow: 1, // Monday is the first day of the week.\n\t doy: 4, // The week that contains Jan 4th is the first week of the year.\n\t },\n\t });\n\t\n\t return vi;\n\t\n\t})));\n\n\n/***/ }),\n\n/***/ 434:\n/***/ (function(module, exports, __webpack_require__) {\n\n\t//! moment.js locale configuration\n\t//! locale : Pseudo [x-pseudo]\n\t//! author : Andrew Hood : https://github.com/andrewhood125\n\t\n\t;(function (global, factory) {\n\t true ? factory(__webpack_require__(1)) :\n\t typeof define === 'function' && define.amd ? define(['../moment'], factory) :\n\t factory(global.moment)\n\t}(this, (function (moment) { 'use strict';\n\t\n\t //! moment.js locale configuration\n\t\n\t var xPseudo = moment.defineLocale('x-pseudo', {\n\t 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\t '_'\n\t ),\n\t monthsShort: 'J~áñ_~Féb_~Már_~Ápr_~Máý_~Júñ_~Júl_~Áúg_~Sép_~Óct_~Ñóv_~Déc'.split(\n\t '_'\n\t ),\n\t monthsParseExact: true,\n\t weekdays: 'S~úñdá~ý_Mó~ñdáý~_Túé~sdáý~_Wéd~ñésd~áý_T~húrs~dáý_~Fríd~áý_S~átúr~dáý'.split(\n\t '_'\n\t ),\n\t weekdaysShort: 'S~úñ_~Móñ_~Túé_~Wéd_~Thú_~Frí_~Sát'.split('_'),\n\t weekdaysMin: 'S~ú_Mó~_Tú_~Wé_T~h_Fr~_Sá'.split('_'),\n\t weekdaysParseExact: true,\n\t longDateFormat: {\n\t LT: 'HH:mm',\n\t L: 'DD/MM/YYYY',\n\t LL: 'D MMMM YYYY',\n\t LLL: 'D MMMM YYYY HH:mm',\n\t LLLL: 'dddd, D MMMM YYYY HH:mm',\n\t },\n\t calendar: {\n\t sameDay: '[T~ódá~ý át] LT',\n\t nextDay: '[T~ómó~rró~w át] LT',\n\t nextWeek: 'dddd [át] LT',\n\t lastDay: '[Ý~ést~érdá~ý át] LT',\n\t lastWeek: '[L~ást] dddd [át] LT',\n\t sameElse: 'L',\n\t },\n\t relativeTime: {\n\t future: 'í~ñ %s',\n\t past: '%s á~gó',\n\t s: 'á ~féw ~sécó~ñds',\n\t ss: '%d s~écóñ~ds',\n\t m: 'á ~míñ~úté',\n\t mm: '%d m~íñú~tés',\n\t h: 'á~ñ hó~úr',\n\t hh: '%d h~óúrs',\n\t d: 'á ~dáý',\n\t dd: '%d d~áýs',\n\t M: 'á ~móñ~th',\n\t MM: '%d m~óñt~hs',\n\t y: 'á ~ýéár',\n\t yy: '%d ý~éárs',\n\t },\n\t dayOfMonthOrdinalParse: /\\d{1,2}(th|st|nd|rd)/,\n\t ordinal: function (number) {\n\t var b = number % 10,\n\t output =\n\t ~~((number % 100) / 10) === 1\n\t ? 'th'\n\t : b === 1\n\t ? 'st'\n\t : b === 2\n\t ? 'nd'\n\t : b === 3\n\t ? 'rd'\n\t : 'th';\n\t return number + output;\n\t },\n\t week: {\n\t dow: 1, // Monday is the first day of the week.\n\t doy: 4, // The week that contains Jan 4th is the first week of the year.\n\t },\n\t });\n\t\n\t return xPseudo;\n\t\n\t})));\n\n\n/***/ }),\n\n/***/ 435:\n/***/ (function(module, exports, __webpack_require__) {\n\n\t//! moment.js locale configuration\n\t//! locale : Yoruba Nigeria [yo]\n\t//! author : Atolagbe Abisoye : https://github.com/andela-batolagbe\n\t\n\t;(function (global, factory) {\n\t true ? factory(__webpack_require__(1)) :\n\t typeof define === 'function' && define.amd ? define(['../moment'], factory) :\n\t factory(global.moment)\n\t}(this, (function (moment) { 'use strict';\n\t\n\t //! moment.js locale configuration\n\t\n\t var yo = moment.defineLocale('yo', {\n\t months: 'Sẹ́rẹ́_Èrèlè_Ẹrẹ̀nà_Ìgbé_Èbibi_Òkùdu_Agẹmo_Ògún_Owewe_Ọ̀wàrà_Bélú_Ọ̀pẹ̀̀'.split(\n\t '_'\n\t ),\n\t monthsShort: 'Sẹ́r_Èrl_Ẹrn_Ìgb_Èbi_Òkù_Agẹ_Ògú_Owe_Ọ̀wà_Bél_Ọ̀pẹ̀̀'.split('_'),\n\t weekdays: 'Àìkú_Ajé_Ìsẹ́gun_Ọjọ́rú_Ọjọ́bọ_Ẹtì_Àbámẹ́ta'.split('_'),\n\t weekdaysShort: 'Àìk_Ajé_Ìsẹ́_Ọjr_Ọjb_Ẹtì_Àbá'.split('_'),\n\t weekdaysMin: 'Àì_Aj_Ìs_Ọr_Ọb_Ẹt_Àb'.split('_'),\n\t longDateFormat: {\n\t LT: 'h:mm A',\n\t LTS: 'h:mm:ss A',\n\t L: 'DD/MM/YYYY',\n\t LL: 'D MMMM YYYY',\n\t LLL: 'D MMMM YYYY h:mm A',\n\t LLLL: 'dddd, D MMMM YYYY h:mm A',\n\t },\n\t calendar: {\n\t sameDay: '[Ònì ni] LT',\n\t nextDay: '[Ọ̀la ni] LT',\n\t nextWeek: \"dddd [Ọsẹ̀ tón'bọ] [ni] LT\",\n\t lastDay: '[Àna ni] LT',\n\t lastWeek: 'dddd [Ọsẹ̀ tólọ́] [ni] LT',\n\t sameElse: 'L',\n\t },\n\t relativeTime: {\n\t future: 'ní %s',\n\t past: '%s kọjá',\n\t s: 'ìsẹjú aayá die',\n\t ss: 'aayá %d',\n\t m: 'ìsẹjú kan',\n\t mm: 'ìsẹjú %d',\n\t h: 'wákati kan',\n\t hh: 'wákati %d',\n\t d: 'ọjọ́ kan',\n\t dd: 'ọjọ́ %d',\n\t M: 'osù kan',\n\t MM: 'osù %d',\n\t y: 'ọdún kan',\n\t yy: 'ọdún %d',\n\t },\n\t dayOfMonthOrdinalParse: /ọjọ́\\s\\d{1,2}/,\n\t ordinal: 'ọjọ́ %d',\n\t week: {\n\t dow: 1, // Monday is the first day of the week.\n\t doy: 4, // The week that contains Jan 4th is the first week of the year.\n\t },\n\t });\n\t\n\t return yo;\n\t\n\t})));\n\n\n/***/ }),\n\n/***/ 436:\n/***/ (function(module, exports, __webpack_require__) {\n\n\t//! moment.js locale configuration\n\t//! locale : Chinese (China) [zh-cn]\n\t//! author : suupic : https://github.com/suupic\n\t//! author : Zeno Zeng : https://github.com/zenozeng\n\t//! author : uu109 : https://github.com/uu109\n\t\n\t;(function (global, factory) {\n\t true ? factory(__webpack_require__(1)) :\n\t typeof define === 'function' && define.amd ? define(['../moment'], factory) :\n\t factory(global.moment)\n\t}(this, (function (moment) { 'use strict';\n\t\n\t //! moment.js locale configuration\n\t\n\t var zhCn = moment.defineLocale('zh-cn', {\n\t months: '一月_二月_三月_四月_五月_六月_七月_八月_九月_十月_十一月_十二月'.split(\n\t '_'\n\t ),\n\t monthsShort: '1月_2月_3月_4月_5月_6月_7月_8月_9月_10月_11月_12月'.split(\n\t '_'\n\t ),\n\t weekdays: '星期日_星期一_星期二_星期三_星期四_星期五_星期六'.split('_'),\n\t weekdaysShort: '周日_周一_周二_周三_周四_周五_周六'.split('_'),\n\t weekdaysMin: '日_一_二_三_四_五_六'.split('_'),\n\t longDateFormat: {\n\t LT: 'HH:mm',\n\t LTS: 'HH:mm:ss',\n\t L: 'YYYY/MM/DD',\n\t LL: 'YYYY年M月D日',\n\t LLL: 'YYYY年M月D日Ah点mm分',\n\t LLLL: 'YYYY年M月D日ddddAh点mm分',\n\t l: 'YYYY/M/D',\n\t ll: 'YYYY年M月D日',\n\t lll: 'YYYY年M月D日 HH:mm',\n\t llll: 'YYYY年M月D日dddd HH:mm',\n\t },\n\t meridiemParse: /凌晨|早上|上午|中午|下午|晚上/,\n\t meridiemHour: function (hour, meridiem) {\n\t if (hour === 12) {\n\t hour = 0;\n\t }\n\t if (meridiem === '凌晨' || meridiem === '早上' || meridiem === '上午') {\n\t return hour;\n\t } else if (meridiem === '下午' || meridiem === '晚上') {\n\t return hour + 12;\n\t } else {\n\t // '中午'\n\t return hour >= 11 ? hour : hour + 12;\n\t }\n\t },\n\t meridiem: function (hour, minute, isLower) {\n\t var hm = hour * 100 + minute;\n\t if (hm < 600) {\n\t return '凌晨';\n\t } else if (hm < 900) {\n\t return '早上';\n\t } else if (hm < 1130) {\n\t return '上午';\n\t } else if (hm < 1230) {\n\t return '中午';\n\t } else if (hm < 1800) {\n\t return '下午';\n\t } else {\n\t return '晚上';\n\t }\n\t },\n\t calendar: {\n\t sameDay: '[今天]LT',\n\t nextDay: '[明天]LT',\n\t nextWeek: function (now) {\n\t if (now.week() !== this.week()) {\n\t return '[下]dddLT';\n\t } else {\n\t return '[本]dddLT';\n\t }\n\t },\n\t lastDay: '[昨天]LT',\n\t lastWeek: function (now) {\n\t if (this.week() !== now.week()) {\n\t return '[上]dddLT';\n\t } else {\n\t return '[本]dddLT';\n\t }\n\t },\n\t sameElse: 'L',\n\t },\n\t dayOfMonthOrdinalParse: /\\d{1,2}(日|月|周)/,\n\t ordinal: function (number, period) {\n\t switch (period) {\n\t case 'd':\n\t case 'D':\n\t case 'DDD':\n\t return number + '日';\n\t case 'M':\n\t return number + '月';\n\t case 'w':\n\t case 'W':\n\t return number + '周';\n\t default:\n\t return number;\n\t }\n\t },\n\t relativeTime: {\n\t future: '%s后',\n\t past: '%s前',\n\t s: '几秒',\n\t ss: '%d 秒',\n\t m: '1 分钟',\n\t mm: '%d 分钟',\n\t h: '1 小时',\n\t hh: '%d 小时',\n\t d: '1 天',\n\t dd: '%d 天',\n\t w: '1 周',\n\t ww: '%d 周',\n\t M: '1 个月',\n\t MM: '%d 个月',\n\t y: '1 年',\n\t yy: '%d 年',\n\t },\n\t week: {\n\t // GB/T 7408-1994《数据元和交换格式·信息交换·日期和时间表示法》与ISO 8601:1988等效\n\t dow: 1, // Monday is the first day of the week.\n\t doy: 4, // The week that contains Jan 4th is the first week of the year.\n\t },\n\t });\n\t\n\t return zhCn;\n\t\n\t})));\n\n\n/***/ }),\n\n/***/ 437:\n/***/ (function(module, exports, __webpack_require__) {\n\n\t//! moment.js locale configuration\n\t//! locale : Chinese (Hong Kong) [zh-hk]\n\t//! author : Ben : https://github.com/ben-lin\n\t//! author : Chris Lam : https://github.com/hehachris\n\t//! author : Konstantin : https://github.com/skfd\n\t//! author : Anthony : https://github.com/anthonylau\n\t\n\t;(function (global, factory) {\n\t true ? factory(__webpack_require__(1)) :\n\t typeof define === 'function' && define.amd ? define(['../moment'], factory) :\n\t factory(global.moment)\n\t}(this, (function (moment) { 'use strict';\n\t\n\t //! moment.js locale configuration\n\t\n\t var zhHk = moment.defineLocale('zh-hk', {\n\t months: '一月_二月_三月_四月_五月_六月_七月_八月_九月_十月_十一月_十二月'.split(\n\t '_'\n\t ),\n\t monthsShort: '1月_2月_3月_4月_5月_6月_7月_8月_9月_10月_11月_12月'.split(\n\t '_'\n\t ),\n\t weekdays: '星期日_星期一_星期二_星期三_星期四_星期五_星期六'.split('_'),\n\t weekdaysShort: '週日_週一_週二_週三_週四_週五_週六'.split('_'),\n\t weekdaysMin: '日_一_二_三_四_五_六'.split('_'),\n\t longDateFormat: {\n\t LT: 'HH:mm',\n\t LTS: 'HH:mm:ss',\n\t L: 'YYYY/MM/DD',\n\t LL: 'YYYY年M月D日',\n\t LLL: 'YYYY年M月D日 HH:mm',\n\t LLLL: 'YYYY年M月D日dddd HH:mm',\n\t l: 'YYYY/M/D',\n\t ll: 'YYYY年M月D日',\n\t lll: 'YYYY年M月D日 HH:mm',\n\t llll: 'YYYY年M月D日dddd HH:mm',\n\t },\n\t meridiemParse: /凌晨|早上|上午|中午|下午|晚上/,\n\t meridiemHour: function (hour, meridiem) {\n\t if (hour === 12) {\n\t hour = 0;\n\t }\n\t if (meridiem === '凌晨' || meridiem === '早上' || meridiem === '上午') {\n\t return hour;\n\t } else if (meridiem === '中午') {\n\t return hour >= 11 ? hour : hour + 12;\n\t } else if (meridiem === '下午' || meridiem === '晚上') {\n\t return hour + 12;\n\t }\n\t },\n\t meridiem: function (hour, minute, isLower) {\n\t var hm = hour * 100 + minute;\n\t if (hm < 600) {\n\t return '凌晨';\n\t } else if (hm < 900) {\n\t return '早上';\n\t } else if (hm < 1200) {\n\t return '上午';\n\t } else if (hm === 1200) {\n\t return '中午';\n\t } else if (hm < 1800) {\n\t return '下午';\n\t } else {\n\t return '晚上';\n\t }\n\t },\n\t calendar: {\n\t sameDay: '[今天]LT',\n\t nextDay: '[明天]LT',\n\t nextWeek: '[下]ddddLT',\n\t lastDay: '[昨天]LT',\n\t lastWeek: '[上]ddddLT',\n\t sameElse: 'L',\n\t },\n\t dayOfMonthOrdinalParse: /\\d{1,2}(日|月|週)/,\n\t ordinal: function (number, period) {\n\t switch (period) {\n\t case 'd':\n\t case 'D':\n\t case 'DDD':\n\t return number + '日';\n\t case 'M':\n\t return number + '月';\n\t case 'w':\n\t case 'W':\n\t return number + '週';\n\t default:\n\t return number;\n\t }\n\t },\n\t relativeTime: {\n\t future: '%s後',\n\t past: '%s前',\n\t s: '幾秒',\n\t ss: '%d 秒',\n\t m: '1 分鐘',\n\t mm: '%d 分鐘',\n\t h: '1 小時',\n\t hh: '%d 小時',\n\t d: '1 天',\n\t dd: '%d 天',\n\t M: '1 個月',\n\t MM: '%d 個月',\n\t y: '1 年',\n\t yy: '%d 年',\n\t },\n\t });\n\t\n\t return zhHk;\n\t\n\t})));\n\n\n/***/ }),\n\n/***/ 438:\n/***/ (function(module, exports, __webpack_require__) {\n\n\t//! moment.js locale configuration\n\t//! locale : Chinese (Macau) [zh-mo]\n\t//! author : Ben : https://github.com/ben-lin\n\t//! author : Chris Lam : https://github.com/hehachris\n\t//! author : Tan Yuanhong : https://github.com/le0tan\n\t\n\t;(function (global, factory) {\n\t true ? factory(__webpack_require__(1)) :\n\t typeof define === 'function' && define.amd ? define(['../moment'], factory) :\n\t factory(global.moment)\n\t}(this, (function (moment) { 'use strict';\n\t\n\t //! moment.js locale configuration\n\t\n\t var zhMo = moment.defineLocale('zh-mo', {\n\t months: '一月_二月_三月_四月_五月_六月_七月_八月_九月_十月_十一月_十二月'.split(\n\t '_'\n\t ),\n\t monthsShort: '1月_2月_3月_4月_5月_6月_7月_8月_9月_10月_11月_12月'.split(\n\t '_'\n\t ),\n\t weekdays: '星期日_星期一_星期二_星期三_星期四_星期五_星期六'.split('_'),\n\t weekdaysShort: '週日_週一_週二_週三_週四_週五_週六'.split('_'),\n\t weekdaysMin: '日_一_二_三_四_五_六'.split('_'),\n\t longDateFormat: {\n\t LT: 'HH:mm',\n\t LTS: 'HH:mm:ss',\n\t L: 'DD/MM/YYYY',\n\t LL: 'YYYY年M月D日',\n\t LLL: 'YYYY年M月D日 HH:mm',\n\t LLLL: 'YYYY年M月D日dddd HH:mm',\n\t l: 'D/M/YYYY',\n\t ll: 'YYYY年M月D日',\n\t lll: 'YYYY年M月D日 HH:mm',\n\t llll: 'YYYY年M月D日dddd HH:mm',\n\t },\n\t meridiemParse: /凌晨|早上|上午|中午|下午|晚上/,\n\t meridiemHour: function (hour, meridiem) {\n\t if (hour === 12) {\n\t hour = 0;\n\t }\n\t if (meridiem === '凌晨' || meridiem === '早上' || meridiem === '上午') {\n\t return hour;\n\t } else if (meridiem === '中午') {\n\t return hour >= 11 ? hour : hour + 12;\n\t } else if (meridiem === '下午' || meridiem === '晚上') {\n\t return hour + 12;\n\t }\n\t },\n\t meridiem: function (hour, minute, isLower) {\n\t var hm = hour * 100 + minute;\n\t if (hm < 600) {\n\t return '凌晨';\n\t } else if (hm < 900) {\n\t return '早上';\n\t } else if (hm < 1130) {\n\t return '上午';\n\t } else if (hm < 1230) {\n\t return '中午';\n\t } else if (hm < 1800) {\n\t return '下午';\n\t } else {\n\t return '晚上';\n\t }\n\t },\n\t calendar: {\n\t sameDay: '[今天] LT',\n\t nextDay: '[明天] LT',\n\t nextWeek: '[下]dddd LT',\n\t lastDay: '[昨天] LT',\n\t lastWeek: '[上]dddd LT',\n\t sameElse: 'L',\n\t },\n\t dayOfMonthOrdinalParse: /\\d{1,2}(日|月|週)/,\n\t ordinal: function (number, period) {\n\t switch (period) {\n\t case 'd':\n\t case 'D':\n\t case 'DDD':\n\t return number + '日';\n\t case 'M':\n\t return number + '月';\n\t case 'w':\n\t case 'W':\n\t return number + '週';\n\t default:\n\t return number;\n\t }\n\t },\n\t relativeTime: {\n\t future: '%s內',\n\t past: '%s前',\n\t s: '幾秒',\n\t ss: '%d 秒',\n\t m: '1 分鐘',\n\t mm: '%d 分鐘',\n\t h: '1 小時',\n\t hh: '%d 小時',\n\t d: '1 天',\n\t dd: '%d 天',\n\t M: '1 個月',\n\t MM: '%d 個月',\n\t y: '1 年',\n\t yy: '%d 年',\n\t },\n\t });\n\t\n\t return zhMo;\n\t\n\t})));\n\n\n/***/ }),\n\n/***/ 439:\n/***/ (function(module, exports, __webpack_require__) {\n\n\t//! moment.js locale configuration\n\t//! locale : Chinese (Taiwan) [zh-tw]\n\t//! author : Ben : https://github.com/ben-lin\n\t//! author : Chris Lam : https://github.com/hehachris\n\t\n\t;(function (global, factory) {\n\t true ? factory(__webpack_require__(1)) :\n\t typeof define === 'function' && define.amd ? define(['../moment'], factory) :\n\t factory(global.moment)\n\t}(this, (function (moment) { 'use strict';\n\t\n\t //! moment.js locale configuration\n\t\n\t var zhTw = moment.defineLocale('zh-tw', {\n\t months: '一月_二月_三月_四月_五月_六月_七月_八月_九月_十月_十一月_十二月'.split(\n\t '_'\n\t ),\n\t monthsShort: '1月_2月_3月_4月_5月_6月_7月_8月_9月_10月_11月_12月'.split(\n\t '_'\n\t ),\n\t weekdays: '星期日_星期一_星期二_星期三_星期四_星期五_星期六'.split('_'),\n\t weekdaysShort: '週日_週一_週二_週三_週四_週五_週六'.split('_'),\n\t weekdaysMin: '日_一_二_三_四_五_六'.split('_'),\n\t longDateFormat: {\n\t LT: 'HH:mm',\n\t LTS: 'HH:mm:ss',\n\t L: 'YYYY/MM/DD',\n\t LL: 'YYYY年M月D日',\n\t LLL: 'YYYY年M月D日 HH:mm',\n\t LLLL: 'YYYY年M月D日dddd HH:mm',\n\t l: 'YYYY/M/D',\n\t ll: 'YYYY年M月D日',\n\t lll: 'YYYY年M月D日 HH:mm',\n\t llll: 'YYYY年M月D日dddd HH:mm',\n\t },\n\t meridiemParse: /凌晨|早上|上午|中午|下午|晚上/,\n\t meridiemHour: function (hour, meridiem) {\n\t if (hour === 12) {\n\t hour = 0;\n\t }\n\t if (meridiem === '凌晨' || meridiem === '早上' || meridiem === '上午') {\n\t return hour;\n\t } else if (meridiem === '中午') {\n\t return hour >= 11 ? hour : hour + 12;\n\t } else if (meridiem === '下午' || meridiem === '晚上') {\n\t return hour + 12;\n\t }\n\t },\n\t meridiem: function (hour, minute, isLower) {\n\t var hm = hour * 100 + minute;\n\t if (hm < 600) {\n\t return '凌晨';\n\t } else if (hm < 900) {\n\t return '早上';\n\t } else if (hm < 1130) {\n\t return '上午';\n\t } else if (hm < 1230) {\n\t return '中午';\n\t } else if (hm < 1800) {\n\t return '下午';\n\t } else {\n\t return '晚上';\n\t }\n\t },\n\t calendar: {\n\t sameDay: '[今天] LT',\n\t nextDay: '[明天] LT',\n\t nextWeek: '[下]dddd LT',\n\t lastDay: '[昨天] LT',\n\t lastWeek: '[上]dddd LT',\n\t sameElse: 'L',\n\t },\n\t dayOfMonthOrdinalParse: /\\d{1,2}(日|月|週)/,\n\t ordinal: function (number, period) {\n\t switch (period) {\n\t case 'd':\n\t case 'D':\n\t case 'DDD':\n\t return number + '日';\n\t case 'M':\n\t return number + '月';\n\t case 'w':\n\t case 'W':\n\t return number + '週';\n\t default:\n\t return number;\n\t }\n\t },\n\t relativeTime: {\n\t future: '%s後',\n\t past: '%s前',\n\t s: '幾秒',\n\t ss: '%d 秒',\n\t m: '1 分鐘',\n\t mm: '%d 分鐘',\n\t h: '1 小時',\n\t hh: '%d 小時',\n\t d: '1 天',\n\t dd: '%d 天',\n\t M: '1 個月',\n\t MM: '%d 個月',\n\t y: '1 年',\n\t yy: '%d 年',\n\t },\n\t });\n\t\n\t return zhTw;\n\t\n\t})));\n\n\n/***/ }),\n\n/***/ 467:\n/***/ (function(module, exports, __webpack_require__) {\n\n\tvar map = {\n\t\t\"./af\": 306,\n\t\t\"./af.js\": 306,\n\t\t\"./ar\": 313,\n\t\t\"./ar-dz\": 307,\n\t\t\"./ar-dz.js\": 307,\n\t\t\"./ar-kw\": 308,\n\t\t\"./ar-kw.js\": 308,\n\t\t\"./ar-ly\": 309,\n\t\t\"./ar-ly.js\": 309,\n\t\t\"./ar-ma\": 310,\n\t\t\"./ar-ma.js\": 310,\n\t\t\"./ar-sa\": 311,\n\t\t\"./ar-sa.js\": 311,\n\t\t\"./ar-tn\": 312,\n\t\t\"./ar-tn.js\": 312,\n\t\t\"./ar.js\": 313,\n\t\t\"./az\": 314,\n\t\t\"./az.js\": 314,\n\t\t\"./be\": 315,\n\t\t\"./be.js\": 315,\n\t\t\"./bg\": 316,\n\t\t\"./bg.js\": 316,\n\t\t\"./bm\": 317,\n\t\t\"./bm.js\": 317,\n\t\t\"./bn\": 319,\n\t\t\"./bn-bd\": 318,\n\t\t\"./bn-bd.js\": 318,\n\t\t\"./bn.js\": 319,\n\t\t\"./bo\": 320,\n\t\t\"./bo.js\": 320,\n\t\t\"./br\": 321,\n\t\t\"./br.js\": 321,\n\t\t\"./bs\": 322,\n\t\t\"./bs.js\": 322,\n\t\t\"./ca\": 323,\n\t\t\"./ca.js\": 323,\n\t\t\"./cs\": 324,\n\t\t\"./cs.js\": 324,\n\t\t\"./cv\": 325,\n\t\t\"./cv.js\": 325,\n\t\t\"./cy\": 326,\n\t\t\"./cy.js\": 326,\n\t\t\"./da\": 327,\n\t\t\"./da.js\": 327,\n\t\t\"./de\": 330,\n\t\t\"./de-at\": 328,\n\t\t\"./de-at.js\": 328,\n\t\t\"./de-ch\": 329,\n\t\t\"./de-ch.js\": 329,\n\t\t\"./de.js\": 330,\n\t\t\"./dv\": 331,\n\t\t\"./dv.js\": 331,\n\t\t\"./el\": 332,\n\t\t\"./el.js\": 332,\n\t\t\"./en-au\": 333,\n\t\t\"./en-au.js\": 333,\n\t\t\"./en-ca\": 334,\n\t\t\"./en-ca.js\": 334,\n\t\t\"./en-gb\": 335,\n\t\t\"./en-gb.js\": 335,\n\t\t\"./en-ie\": 336,\n\t\t\"./en-ie.js\": 336,\n\t\t\"./en-il\": 337,\n\t\t\"./en-il.js\": 337,\n\t\t\"./en-in\": 338,\n\t\t\"./en-in.js\": 338,\n\t\t\"./en-nz\": 339,\n\t\t\"./en-nz.js\": 339,\n\t\t\"./en-sg\": 340,\n\t\t\"./en-sg.js\": 340,\n\t\t\"./eo\": 341,\n\t\t\"./eo.js\": 341,\n\t\t\"./es\": 345,\n\t\t\"./es-do\": 342,\n\t\t\"./es-do.js\": 342,\n\t\t\"./es-mx\": 343,\n\t\t\"./es-mx.js\": 343,\n\t\t\"./es-us\": 344,\n\t\t\"./es-us.js\": 344,\n\t\t\"./es.js\": 345,\n\t\t\"./et\": 346,\n\t\t\"./et.js\": 346,\n\t\t\"./eu\": 347,\n\t\t\"./eu.js\": 347,\n\t\t\"./fa\": 348,\n\t\t\"./fa.js\": 348,\n\t\t\"./fi\": 349,\n\t\t\"./fi.js\": 349,\n\t\t\"./fil\": 350,\n\t\t\"./fil.js\": 350,\n\t\t\"./fo\": 351,\n\t\t\"./fo.js\": 351,\n\t\t\"./fr\": 354,\n\t\t\"./fr-ca\": 352,\n\t\t\"./fr-ca.js\": 352,\n\t\t\"./fr-ch\": 353,\n\t\t\"./fr-ch.js\": 353,\n\t\t\"./fr.js\": 354,\n\t\t\"./fy\": 355,\n\t\t\"./fy.js\": 355,\n\t\t\"./ga\": 356,\n\t\t\"./ga.js\": 356,\n\t\t\"./gd\": 357,\n\t\t\"./gd.js\": 357,\n\t\t\"./gl\": 358,\n\t\t\"./gl.js\": 358,\n\t\t\"./gom-deva\": 359,\n\t\t\"./gom-deva.js\": 359,\n\t\t\"./gom-latn\": 360,\n\t\t\"./gom-latn.js\": 360,\n\t\t\"./gu\": 361,\n\t\t\"./gu.js\": 361,\n\t\t\"./he\": 362,\n\t\t\"./he.js\": 362,\n\t\t\"./hi\": 363,\n\t\t\"./hi.js\": 363,\n\t\t\"./hr\": 364,\n\t\t\"./hr.js\": 364,\n\t\t\"./hu\": 365,\n\t\t\"./hu.js\": 365,\n\t\t\"./hy-am\": 366,\n\t\t\"./hy-am.js\": 366,\n\t\t\"./id\": 367,\n\t\t\"./id.js\": 367,\n\t\t\"./is\": 368,\n\t\t\"./is.js\": 368,\n\t\t\"./it\": 370,\n\t\t\"./it-ch\": 369,\n\t\t\"./it-ch.js\": 369,\n\t\t\"./it.js\": 370,\n\t\t\"./ja\": 286,\n\t\t\"./ja.js\": 286,\n\t\t\"./jv\": 371,\n\t\t\"./jv.js\": 371,\n\t\t\"./ka\": 372,\n\t\t\"./ka.js\": 372,\n\t\t\"./kk\": 373,\n\t\t\"./kk.js\": 373,\n\t\t\"./km\": 374,\n\t\t\"./km.js\": 374,\n\t\t\"./kn\": 375,\n\t\t\"./kn.js\": 375,\n\t\t\"./ko\": 376,\n\t\t\"./ko.js\": 376,\n\t\t\"./ku\": 377,\n\t\t\"./ku.js\": 377,\n\t\t\"./ky\": 378,\n\t\t\"./ky.js\": 378,\n\t\t\"./lb\": 379,\n\t\t\"./lb.js\": 379,\n\t\t\"./lo\": 380,\n\t\t\"./lo.js\": 380,\n\t\t\"./lt\": 381,\n\t\t\"./lt.js\": 381,\n\t\t\"./lv\": 382,\n\t\t\"./lv.js\": 382,\n\t\t\"./me\": 383,\n\t\t\"./me.js\": 383,\n\t\t\"./mi\": 384,\n\t\t\"./mi.js\": 384,\n\t\t\"./mk\": 385,\n\t\t\"./mk.js\": 385,\n\t\t\"./ml\": 386,\n\t\t\"./ml.js\": 386,\n\t\t\"./mn\": 387,\n\t\t\"./mn.js\": 387,\n\t\t\"./mr\": 388,\n\t\t\"./mr.js\": 388,\n\t\t\"./ms\": 390,\n\t\t\"./ms-my\": 389,\n\t\t\"./ms-my.js\": 389,\n\t\t\"./ms.js\": 390,\n\t\t\"./mt\": 391,\n\t\t\"./mt.js\": 391,\n\t\t\"./my\": 392,\n\t\t\"./my.js\": 392,\n\t\t\"./nb\": 393,\n\t\t\"./nb.js\": 393,\n\t\t\"./ne\": 394,\n\t\t\"./ne.js\": 394,\n\t\t\"./nl\": 396,\n\t\t\"./nl-be\": 395,\n\t\t\"./nl-be.js\": 395,\n\t\t\"./nl.js\": 396,\n\t\t\"./nn\": 397,\n\t\t\"./nn.js\": 397,\n\t\t\"./oc-lnc\": 398,\n\t\t\"./oc-lnc.js\": 398,\n\t\t\"./pa-in\": 399,\n\t\t\"./pa-in.js\": 399,\n\t\t\"./pl\": 400,\n\t\t\"./pl.js\": 400,\n\t\t\"./pt\": 402,\n\t\t\"./pt-br\": 401,\n\t\t\"./pt-br.js\": 401,\n\t\t\"./pt.js\": 402,\n\t\t\"./ro\": 403,\n\t\t\"./ro.js\": 403,\n\t\t\"./ru\": 404,\n\t\t\"./ru.js\": 404,\n\t\t\"./sd\": 405,\n\t\t\"./sd.js\": 405,\n\t\t\"./se\": 406,\n\t\t\"./se.js\": 406,\n\t\t\"./si\": 407,\n\t\t\"./si.js\": 407,\n\t\t\"./sk\": 408,\n\t\t\"./sk.js\": 408,\n\t\t\"./sl\": 409,\n\t\t\"./sl.js\": 409,\n\t\t\"./sq\": 410,\n\t\t\"./sq.js\": 410,\n\t\t\"./sr\": 412,\n\t\t\"./sr-cyrl\": 411,\n\t\t\"./sr-cyrl.js\": 411,\n\t\t\"./sr.js\": 412,\n\t\t\"./ss\": 413,\n\t\t\"./ss.js\": 413,\n\t\t\"./sv\": 414,\n\t\t\"./sv.js\": 414,\n\t\t\"./sw\": 415,\n\t\t\"./sw.js\": 415,\n\t\t\"./ta\": 416,\n\t\t\"./ta.js\": 416,\n\t\t\"./te\": 417,\n\t\t\"./te.js\": 417,\n\t\t\"./tet\": 418,\n\t\t\"./tet.js\": 418,\n\t\t\"./tg\": 419,\n\t\t\"./tg.js\": 419,\n\t\t\"./th\": 420,\n\t\t\"./th.js\": 420,\n\t\t\"./tk\": 421,\n\t\t\"./tk.js\": 421,\n\t\t\"./tl-ph\": 422,\n\t\t\"./tl-ph.js\": 422,\n\t\t\"./tlh\": 423,\n\t\t\"./tlh.js\": 423,\n\t\t\"./tr\": 424,\n\t\t\"./tr.js\": 424,\n\t\t\"./tzl\": 425,\n\t\t\"./tzl.js\": 425,\n\t\t\"./tzm\": 427,\n\t\t\"./tzm-latn\": 426,\n\t\t\"./tzm-latn.js\": 426,\n\t\t\"./tzm.js\": 427,\n\t\t\"./ug-cn\": 428,\n\t\t\"./ug-cn.js\": 428,\n\t\t\"./uk\": 429,\n\t\t\"./uk.js\": 429,\n\t\t\"./ur\": 430,\n\t\t\"./ur.js\": 430,\n\t\t\"./uz\": 432,\n\t\t\"./uz-latn\": 431,\n\t\t\"./uz-latn.js\": 431,\n\t\t\"./uz.js\": 432,\n\t\t\"./vi\": 433,\n\t\t\"./vi.js\": 433,\n\t\t\"./x-pseudo\": 434,\n\t\t\"./x-pseudo.js\": 434,\n\t\t\"./yo\": 435,\n\t\t\"./yo.js\": 435,\n\t\t\"./zh-cn\": 436,\n\t\t\"./zh-cn.js\": 436,\n\t\t\"./zh-hk\": 437,\n\t\t\"./zh-hk.js\": 437,\n\t\t\"./zh-mo\": 438,\n\t\t\"./zh-mo.js\": 438,\n\t\t\"./zh-tw\": 439,\n\t\t\"./zh-tw.js\": 439\n\t};\n\tfunction webpackContext(req) {\n\t\treturn __webpack_require__(webpackContextResolve(req));\n\t};\n\tfunction webpackContextResolve(req) {\n\t\treturn map[req] || (function() { throw new Error(\"Cannot find module '\" + req + \"'.\") }());\n\t};\n\twebpackContext.keys = function webpackContextKeys() {\n\t\treturn Object.keys(map);\n\t};\n\twebpackContext.resolve = webpackContextResolve;\n\tmodule.exports = webpackContext;\n\twebpackContext.id = 467;\n\n\n/***/ }),\n\n/***/ 885:\n/***/ (function(module, exports, __webpack_require__) {\n\n\t/* WEBPACK VAR INJECTION */(function(console) {'use strict';\n\t\n\t/* eslint-disable */\n\t/* スマホ・タブレット利用制限処理 */\n\t$(document).ready(function () {\n\t\t// ページ読み込み時に実行したい処理\n\t\t// Ajax通信を開始\n\t\tif (window.getUtilizationTimeInfo === undefined) {\n\t\t\treturn;\n\t\t}\n\t\t$.ajax({\n\t\t\turl: window.getUtilizationTimeInfo,\n\t\t\ttype: 'GET',\n\t\t\tdataType: 'json',\n\t\t\t// フォーム要素の内容をハッシュ形式に変換\n\t\t\t//data: $('form').serializeArray(),\n\t\t\t//timeout: 5000,\n\t\t\tsuccess: function success(data) {\n\t\t\t\t// 通信成功時の処理を記述\n\t\t\t\tconsole.log('success');\n\t\t\t\tif (data.result) {\n\t\t\t\t\tif (data.logout) {\n\t\t\t\t\t\twindow.location = data.logout_url;\n\t\t\t\t\t};\n\t\t\t\t} else {\n\t\t\t\t\talert(\"利用権限情報の取得に失敗しました。\");\n\t\t\t\t};\n\t\t\t},\n\t\t\terror: function error() {\n\t\t\t\t// 通信失敗時の処理を記述\n\t\t\t\talert(\"利用権限情報の取得に失敗しました。\");\n\t\t\t}\n\t\t});\n\t});\n\t/* WEBPACK VAR INJECTION */}.call(exports, __webpack_require__(7)))\n\n/***/ }),\n\n/***/ 890:\n/***/ (function(module, exports, __webpack_require__) {\n\n\t'use strict';\n\t\n\t__webpack_require__(695);\n\t\n\t__webpack_require__(1140);\n\t\n\t__webpack_require__(1142);\n\t\n\t__webpack_require__(1146);\n\t\n\t__webpack_require__(885);\n\n/***/ }),\n\n/***/ 1140:\n/***/ (function(module, exports) {\n\n\t/**\n\t * Created with IntelliJ IDEA.\n\t * User: takeo\n\t * Date: 2012/12/27\n\t * Time: 18:03\n\t * To change this template use File | Settings | File Templates.\n\t */\n\t\n\t\n\t\n\t$(function () {\n\t $(\"a[rel='popover']\").popover({\n\t offset: 10\n\t });\n\t $(\"a[rel='popover']\").on('click', function(e) {\n\t e.preventDefault();\n\t return true;\n\t });\n\t});\n\t\n\n\n/***/ }),\n\n/***/ 1142:\n/***/ (function(module, exports) {\n\n\t/**\n\t * 外部ウィンドウを開く\n\t * @param {Object} url\n\t * @param {Object} options\n\t */\n\tfunction openWindow(url, options){\n\t var setting = {\n\t //TODO ウィンドウ名は乱数で払いだすこと。\n\t name: 'newWindow',\n\t width: 800,\n\t height: 600\n\t };\n\t\n\t //オプションをマージする\n\t if (options) {\n\t setting = jQuery.extend(setting, options)\n\t };\n\t\n\t var nWindow = window.open(url, setting.name, 'width=' + setting.width + ', height=' + setting.height + ', menubar=no, toolbar=no, scrollbars=yes, resizable=yes');\n\t nWindow.focus();\n\t\n\t}\n\t\n\t/**\n\t * VCET受験画面を開く\n\t * @param assign_no\n\t * @return\n\t */\n\tfunction openVcetWindow(SUPER_EIGO_CONTEXT_PATH,assign_no,isPreview){\n\t var url = '/'+SUPER_EIGO_CONTEXT_PATH+'/lplayer/index.cfm?visionary=vcet&assign_no='+assign_no + '&previewType=assign_vc&isPreview='+isPreview;\n\t var options = {\n\t name: 'mywindow2',\n\t width: 1024,\n\t height: 700\n\t };\n\t openWindow(url, options);\n\t}\n\n\n/***/ }),\n\n/***/ 1146:\n/***/ (function(module, exports, __webpack_require__) {\n\n\tvar __WEBPACK_AMD_DEFINE_FACTORY__, __WEBPACK_AMD_DEFINE_ARRAY__, __WEBPACK_AMD_DEFINE_RESULT__;/*!\n\t * <%= meta.title %> v<%= meta.version %>\n\t * Docs & License: <%= meta.homepage %>\n\t * (c) <%= meta.copyright %>\n\t */\n\t\n\t(function(factory) {\n\t\tif (true) {\n\t\t\t!(__WEBPACK_AMD_DEFINE_ARRAY__ = [ __webpack_require__(10), __webpack_require__(1) ], __WEBPACK_AMD_DEFINE_FACTORY__ = (factory), __WEBPACK_AMD_DEFINE_RESULT__ = (typeof __WEBPACK_AMD_DEFINE_FACTORY__ === 'function' ? (__WEBPACK_AMD_DEFINE_FACTORY__.apply(exports, __WEBPACK_AMD_DEFINE_ARRAY__)) : __WEBPACK_AMD_DEFINE_FACTORY__), __WEBPACK_AMD_DEFINE_RESULT__ !== undefined && (module.exports = __WEBPACK_AMD_DEFINE_RESULT__));\n\t\t}\n\t\telse if (typeof exports === 'object') { // Node/CommonJS\n\t\t\tmodule.exports = factory(require('jquery'), require('moment'));\n\t\t}\n\t\telse {\n\t\t\tfactory(jQuery, moment);\n\t\t}\n\t})(function($, moment) {\n\t\n\t;;\n\t\n\tvar FC = $.fullCalendar = {\n\t\tversion: \"<%= meta.version %>\",\n\t\tinternalApiVersion: 5\n\t};\n\tvar fcViews = FC.views = {};\n\t\n\t\n\t$.fn.fullCalendar = function(options) {\n\t\tvar args = Array.prototype.slice.call(arguments, 1); // for a possible method call\n\t\tvar res = this; // what this function will return (this jQuery object by default)\n\t\n\t\tthis.each(function(i, _element) { // loop each DOM element involved\n\t\t\tvar element = $(_element);\n\t\t\tvar calendar = element.data('fullCalendar'); // get the existing calendar object (if any)\n\t\t\tvar singleRes; // the returned value of this single method call\n\t\n\t\t\t// a method call\n\t\t\tif (typeof options === 'string') {\n\t\t\t\tif (calendar && $.isFunction(calendar[options])) {\n\t\t\t\t\tsingleRes = calendar[options].apply(calendar, args);\n\t\t\t\t\tif (!i) {\n\t\t\t\t\t\tres = singleRes; // record the first method call result\n\t\t\t\t\t}\n\t\t\t\t\tif (options === 'destroy') { // for the destroy method, must remove Calendar object data\n\t\t\t\t\t\telement.removeData('fullCalendar');\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t}\n\t\t\t// a new calendar initialization\n\t\t\telse if (!calendar) { // don't initialize twice\n\t\t\t\tcalendar = new Calendar(element, options);\n\t\t\t\telement.data('fullCalendar', calendar);\n\t\t\t\tcalendar.render();\n\t\t\t}\n\t\t});\n\t\t\n\t\treturn res;\n\t};\n\t\n\t\n\tvar complexOptions = [ // names of options that are objects whose properties should be combined\n\t\t'header',\n\t\t'buttonText',\n\t\t'buttonIcons',\n\t\t'themeButtonIcons'\n\t];\n\t\n\t\n\t// Merges an array of option objects into a single object\n\tfunction mergeOptions(optionObjs) {\n\t\treturn mergeProps(optionObjs, complexOptions);\n\t}\n\t\n\t\n\t// Given options specified for the calendar's constructor, massages any legacy options into a non-legacy form.\n\t// Converts View-Option-Hashes into the View-Specific-Options format.\n\tfunction massageOverrides(input) {\n\t\tvar overrides = { views: input.views || {} }; // the output. ensure a `views` hash\n\t\tvar subObj;\n\t\n\t\t// iterate through all option override properties (except `views`)\n\t\t$.each(input, function(name, val) {\n\t\t\tif (name != 'views') {\n\t\n\t\t\t\t// could the value be a legacy View-Option-Hash?\n\t\t\t\tif (\n\t\t\t\t\t$.isPlainObject(val) &&\n\t\t\t\t\t!/(time|duration|interval)$/i.test(name) && // exclude duration options. might be given as objects\n\t\t\t\t\t$.inArray(name, complexOptions) == -1 // complex options aren't allowed to be View-Option-Hashes\n\t\t\t\t) {\n\t\t\t\t\tsubObj = null;\n\t\n\t\t\t\t\t// iterate through the properties of this possible View-Option-Hash value\n\t\t\t\t\t$.each(val, function(subName, subVal) {\n\t\n\t\t\t\t\t\t// is the property targeting a view?\n\t\t\t\t\t\tif (/^(month|week|day|default|basic(Week|Day)?|agenda(Week|Day)?)$/.test(subName)) {\n\t\t\t\t\t\t\tif (!overrides.views[subName]) { // ensure the view-target entry exists\n\t\t\t\t\t\t\t\toverrides.views[subName] = {};\n\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\toverrides.views[subName][name] = subVal; // record the value in the `views` object\n\t\t\t\t\t\t}\n\t\t\t\t\t\telse { // a non-View-Option-Hash property\n\t\t\t\t\t\t\tif (!subObj) {\n\t\t\t\t\t\t\t\tsubObj = {};\n\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\tsubObj[subName] = subVal; // accumulate these unrelated values for later\n\t\t\t\t\t\t}\n\t\t\t\t\t});\n\t\n\t\t\t\t\tif (subObj) { // non-View-Option-Hash properties? transfer them as-is\n\t\t\t\t\t\toverrides[name] = subObj;\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t\telse {\n\t\t\t\t\toverrides[name] = val; // transfer normal options as-is\n\t\t\t\t}\n\t\t\t}\n\t\t});\n\t\n\t\treturn overrides;\n\t}\n\t\n\t;;\n\t\n\t// exports\n\tFC.intersectRanges = intersectRanges;\n\tFC.applyAll = applyAll;\n\tFC.debounce = debounce;\n\tFC.isInt = isInt;\n\tFC.htmlEscape = htmlEscape;\n\tFC.cssToStr = cssToStr;\n\tFC.proxy = proxy;\n\tFC.capitaliseFirstLetter = capitaliseFirstLetter;\n\t\n\t\n\t/* FullCalendar-specific DOM Utilities\n\t----------------------------------------------------------------------------------------------------------------------*/\n\t\n\t\n\t// Given the scrollbar widths of some other container, create borders/margins on rowEls in order to match the left\n\t// and right space that was offset by the scrollbars. A 1-pixel border first, then margin beyond that.\n\tfunction compensateScroll(rowEls, scrollbarWidths) {\n\t\tif (scrollbarWidths.left) {\n\t\t\trowEls.css({\n\t\t\t\t'border-left-width': 1,\n\t\t\t\t'margin-left': scrollbarWidths.left - 1\n\t\t\t});\n\t\t}\n\t\tif (scrollbarWidths.right) {\n\t\t\trowEls.css({\n\t\t\t\t'border-right-width': 1,\n\t\t\t\t'margin-right': scrollbarWidths.right - 1\n\t\t\t});\n\t\t}\n\t}\n\t\n\t\n\t// Undoes compensateScroll and restores all borders/margins\n\tfunction uncompensateScroll(rowEls) {\n\t\trowEls.css({\n\t\t\t'margin-left': '',\n\t\t\t'margin-right': '',\n\t\t\t'border-left-width': '',\n\t\t\t'border-right-width': ''\n\t\t});\n\t}\n\t\n\t\n\t// Make the mouse cursor express that an event is not allowed in the current area\n\tfunction disableCursor() {\n\t\t$('body').addClass('fc-not-allowed');\n\t}\n\t\n\t\n\t// Returns the mouse cursor to its original look\n\tfunction enableCursor() {\n\t\t$('body').removeClass('fc-not-allowed');\n\t}\n\t\n\t\n\t// Given a total available height to fill, have `els` (essentially child rows) expand to accomodate.\n\t// By default, all elements that are shorter than the recommended height are expanded uniformly, not considering\n\t// any other els that are already too tall. if `shouldRedistribute` is on, it considers these tall rows and \n\t// reduces the available height.\n\tfunction distributeHeight(els, availableHeight, shouldRedistribute) {\n\t\n\t\t// *FLOORING NOTE*: we floor in certain places because zoom can give inaccurate floating-point dimensions,\n\t\t// and it is better to be shorter than taller, to avoid creating unnecessary scrollbars.\n\t\n\t\tvar minOffset1 = Math.floor(availableHeight / els.length); // for non-last element\n\t\tvar minOffset2 = Math.floor(availableHeight - minOffset1 * (els.length - 1)); // for last element *FLOORING NOTE*\n\t\tvar flexEls = []; // elements that are allowed to expand. array of DOM nodes\n\t\tvar flexOffsets = []; // amount of vertical space it takes up\n\t\tvar flexHeights = []; // actual css height\n\t\tvar usedHeight = 0;\n\t\n\t\tundistributeHeight(els); // give all elements their natural height\n\t\n\t\t// find elements that are below the recommended height (expandable).\n\t\t// important to query for heights in a single first pass (to avoid reflow oscillation).\n\t\tels.each(function(i, el) {\n\t\t\tvar minOffset = i === els.length - 1 ? minOffset2 : minOffset1;\n\t\t\tvar naturalOffset = $(el).outerHeight(true);\n\t\n\t\t\tif (naturalOffset < minOffset) {\n\t\t\t\tflexEls.push(el);\n\t\t\t\tflexOffsets.push(naturalOffset);\n\t\t\t\tflexHeights.push($(el).height());\n\t\t\t}\n\t\t\telse {\n\t\t\t\t// this element stretches past recommended height (non-expandable). mark the space as occupied.\n\t\t\t\tusedHeight += naturalOffset;\n\t\t\t}\n\t\t});\n\t\n\t\t// readjust the recommended height to only consider the height available to non-maxed-out rows.\n\t\tif (shouldRedistribute) {\n\t\t\tavailableHeight -= usedHeight;\n\t\t\tminOffset1 = Math.floor(availableHeight / flexEls.length);\n\t\t\tminOffset2 = Math.floor(availableHeight - minOffset1 * (flexEls.length - 1)); // *FLOORING NOTE*\n\t\t}\n\t\n\t\t// assign heights to all expandable elements\n\t\t$(flexEls).each(function(i, el) {\n\t\t\tvar minOffset = i === flexEls.length - 1 ? minOffset2 : minOffset1;\n\t\t\tvar naturalOffset = flexOffsets[i];\n\t\t\tvar naturalHeight = flexHeights[i];\n\t\t\tvar newHeight = minOffset - (naturalOffset - naturalHeight); // subtract the margin/padding\n\t\n\t\t\tif (naturalOffset < minOffset) { // we check this again because redistribution might have changed things\n\t\t\t\t$(el).height(newHeight);\n\t\t\t}\n\t\t});\n\t}\n\t\n\t\n\t// Undoes distrubuteHeight, restoring all els to their natural height\n\tfunction undistributeHeight(els) {\n\t\tels.height('');\n\t}\n\t\n\t\n\t// Given `els`, a jQuery set of cells, find the cell with the largest natural width and set the widths of all the\n\t// cells to be that width.\n\t// PREREQUISITE: if you want a cell to take up width, it needs to have a single inner element w/ display:inline\n\tfunction matchCellWidths(els) {\n\t\tvar maxInnerWidth = 0;\n\t\n\t\tels.find('> span').each(function(i, innerEl) {\n\t\t\tvar innerWidth = $(innerEl).outerWidth();\n\t\t\tif (innerWidth > maxInnerWidth) {\n\t\t\t\tmaxInnerWidth = innerWidth;\n\t\t\t}\n\t\t});\n\t\n\t\tmaxInnerWidth++; // sometimes not accurate of width the text needs to stay on one line. insurance\n\t\n\t\tels.width(maxInnerWidth);\n\t\n\t\treturn maxInnerWidth;\n\t}\n\t\n\t\n\t// Given one element that resides inside another,\n\t// Subtracts the height of the inner element from the outer element.\n\tfunction subtractInnerElHeight(outerEl, innerEl) {\n\t\tvar both = outerEl.add(innerEl);\n\t\tvar diff;\n\t\n\t\t// effin' IE8/9/10/11 sometimes returns 0 for dimensions. this weird hack was the only thing that worked\n\t\tboth.css({\n\t\t\tposition: 'relative', // cause a reflow, which will force fresh dimension recalculation\n\t\t\tleft: -1 // ensure reflow in case the el was already relative. negative is less likely to cause new scroll\n\t\t});\n\t\tdiff = outerEl.outerHeight() - innerEl.outerHeight(); // grab the dimensions\n\t\tboth.css({ position: '', left: '' }); // undo hack\n\t\n\t\treturn diff;\n\t}\n\t\n\t\n\t/* Element Geom Utilities\n\t----------------------------------------------------------------------------------------------------------------------*/\n\t\n\tFC.getOuterRect = getOuterRect;\n\tFC.getClientRect = getClientRect;\n\tFC.getContentRect = getContentRect;\n\tFC.getScrollbarWidths = getScrollbarWidths;\n\t\n\t\n\t// borrowed from https://github.com/jquery/jquery-ui/blob/1.11.0/ui/core.js#L51\n\tfunction getScrollParent(el) {\n\t\tvar position = el.css('position'),\n\t\t\tscrollParent = el.parents().filter(function() {\n\t\t\t\tvar parent = $(this);\n\t\t\t\treturn (/(auto|scroll)/).test(\n\t\t\t\t\tparent.css('overflow') + parent.css('overflow-y') + parent.css('overflow-x')\n\t\t\t\t);\n\t\t\t}).eq(0);\n\t\n\t\treturn position === 'fixed' || !scrollParent.length ? $(el[0].ownerDocument || document) : scrollParent;\n\t}\n\t\n\t\n\t// Queries the outer bounding area of a jQuery element.\n\t// Returns a rectangle with absolute coordinates: left, right (exclusive), top, bottom (exclusive).\n\t// Origin is optional.\n\tfunction getOuterRect(el, origin) {\n\t\tvar offset = el.offset();\n\t\tvar left = offset.left - (origin ? origin.left : 0);\n\t\tvar top = offset.top - (origin ? origin.top : 0);\n\t\n\t\treturn {\n\t\t\tleft: left,\n\t\t\tright: left + el.outerWidth(),\n\t\t\ttop: top,\n\t\t\tbottom: top + el.outerHeight()\n\t\t};\n\t}\n\t\n\t\n\t// Queries the area within the margin/border/scrollbars of a jQuery element. Does not go within the padding.\n\t// Returns a rectangle with absolute coordinates: left, right (exclusive), top, bottom (exclusive).\n\t// Origin is optional.\n\t// NOTE: should use clientLeft/clientTop, but very unreliable cross-browser.\n\tfunction getClientRect(el, origin) {\n\t\tvar offset = el.offset();\n\t\tvar scrollbarWidths = getScrollbarWidths(el);\n\t\tvar left = offset.left + getCssFloat(el, 'border-left-width') + scrollbarWidths.left - (origin ? origin.left : 0);\n\t\tvar top = offset.top + getCssFloat(el, 'border-top-width') + scrollbarWidths.top - (origin ? origin.top : 0);\n\t\n\t\treturn {\n\t\t\tleft: left,\n\t\t\tright: left + el[0].clientWidth, // clientWidth includes padding but NOT scrollbars\n\t\t\ttop: top,\n\t\t\tbottom: top + el[0].clientHeight // clientHeight includes padding but NOT scrollbars\n\t\t};\n\t}\n\t\n\t\n\t// Queries the area within the margin/border/padding of a jQuery element. Assumed not to have scrollbars.\n\t// Returns a rectangle with absolute coordinates: left, right (exclusive), top, bottom (exclusive).\n\t// Origin is optional.\n\tfunction getContentRect(el, origin) {\n\t\tvar offset = el.offset(); // just outside of border, margin not included\n\t\tvar left = offset.left + getCssFloat(el, 'border-left-width') + getCssFloat(el, 'padding-left') -\n\t\t\t(origin ? origin.left : 0);\n\t\tvar top = offset.top + getCssFloat(el, 'border-top-width') + getCssFloat(el, 'padding-top') -\n\t\t\t(origin ? origin.top : 0);\n\t\n\t\treturn {\n\t\t\tleft: left,\n\t\t\tright: left + el.width(),\n\t\t\ttop: top,\n\t\t\tbottom: top + el.height()\n\t\t};\n\t}\n\t\n\t\n\t// Returns the computed left/right/top/bottom scrollbar widths for the given jQuery element.\n\t// NOTE: should use clientLeft/clientTop, but very unreliable cross-browser.\n\tfunction getScrollbarWidths(el) {\n\t\tvar leftRightWidth = el.innerWidth() - el[0].clientWidth; // the paddings cancel out, leaving the scrollbars\n\t\tvar widths = {\n\t\t\tleft: 0,\n\t\t\tright: 0,\n\t\t\ttop: 0,\n\t\t\tbottom: el.innerHeight() - el[0].clientHeight // the paddings cancel out, leaving the bottom scrollbar\n\t\t};\n\t\n\t\tif (getIsLeftRtlScrollbars() && el.css('direction') == 'rtl') { // is the scrollbar on the left side?\n\t\t\twidths.left = leftRightWidth;\n\t\t}\n\t\telse {\n\t\t\twidths.right = leftRightWidth;\n\t\t}\n\t\n\t\treturn widths;\n\t}\n\t\n\t\n\t// Logic for determining if, when the element is right-to-left, the scrollbar appears on the left side\n\t\n\tvar _isLeftRtlScrollbars = null;\n\t\n\tfunction getIsLeftRtlScrollbars() { // responsible for caching the computation\n\t\tif (_isLeftRtlScrollbars === null) {\n\t\t\t_isLeftRtlScrollbars = computeIsLeftRtlScrollbars();\n\t\t}\n\t\treturn _isLeftRtlScrollbars;\n\t}\n\t\n\tfunction computeIsLeftRtlScrollbars() { // creates an offscreen test element, then removes it\n\t\tvar el = $('
')\n\t\t\t.css({\n\t\t\t\tposition: 'absolute',\n\t\t\t\ttop: -1000,\n\t\t\t\tleft: 0,\n\t\t\t\tborder: 0,\n\t\t\t\tpadding: 0,\n\t\t\t\toverflow: 'scroll',\n\t\t\t\tdirection: 'rtl'\n\t\t\t})\n\t\t\t.appendTo('body');\n\t\tvar innerEl = el.children();\n\t\tvar res = innerEl.offset().left > el.offset().left; // is the inner div shifted to accommodate a left scrollbar?\n\t\tel.remove();\n\t\treturn res;\n\t}\n\t\n\t\n\t// Retrieves a jQuery element's computed CSS value as a floating-point number.\n\t// If the queried value is non-numeric (ex: IE can return \"medium\" for border width), will just return zero.\n\tfunction getCssFloat(el, prop) {\n\t\treturn parseFloat(el.css(prop)) || 0;\n\t}\n\t\n\t\n\t/* Mouse / Touch Utilities\n\t----------------------------------------------------------------------------------------------------------------------*/\n\t\n\tFC.preventDefault = preventDefault;\n\t\n\t\n\t// Returns a boolean whether this was a left mouse click and no ctrl key (which means right click on Mac)\n\tfunction isPrimaryMouseButton(ev) {\n\t\treturn ev.which == 1 && !ev.ctrlKey;\n\t}\n\t\n\t\n\tfunction getEvX(ev) {\n\t\tif (ev.pageX !== undefined) {\n\t\t\treturn ev.pageX;\n\t\t}\n\t\tvar touches = ev.originalEvent.touches;\n\t\tif (touches) {\n\t\t\treturn touches[0].pageX;\n\t\t}\n\t}\n\t\n\t\n\tfunction getEvY(ev) {\n\t\tif (ev.pageY !== undefined) {\n\t\t\treturn ev.pageY;\n\t\t}\n\t\tvar touches = ev.originalEvent.touches;\n\t\tif (touches) {\n\t\t\treturn touches[0].pageY;\n\t\t}\n\t}\n\t\n\t\n\tfunction getEvIsTouch(ev) {\n\t\treturn /^touch/.test(ev.type);\n\t}\n\t\n\t\n\tfunction preventSelection(el) {\n\t\tel.addClass('fc-unselectable')\n\t\t\t.on('selectstart', preventDefault);\n\t}\n\t\n\t\n\t// Stops a mouse/touch event from doing it's native browser action\n\tfunction preventDefault(ev) {\n\t\tev.preventDefault();\n\t}\n\t\n\t\n\t// attach a handler to get called when ANY scroll action happens on the page.\n\t// this was impossible to do with normal on/off because 'scroll' doesn't bubble.\n\t// http://stackoverflow.com/a/32954565/96342\n\t// returns `true` on success.\n\tfunction bindAnyScroll(handler) {\n\t\tif (window.addEventListener) {\n\t\t\twindow.addEventListener('scroll', handler, true); // useCapture=true\n\t\t\treturn true;\n\t\t}\n\t\treturn false;\n\t}\n\t\n\t\n\t// undoes bindAnyScroll. must pass in the original function.\n\t// returns `true` on success.\n\tfunction unbindAnyScroll(handler) {\n\t\tif (window.removeEventListener) {\n\t\t\twindow.removeEventListener('scroll', handler, true); // useCapture=true\n\t\t\treturn true;\n\t\t}\n\t\treturn false;\n\t}\n\t\n\t\n\t/* General Geometry Utils\n\t----------------------------------------------------------------------------------------------------------------------*/\n\t\n\tFC.intersectRects = intersectRects;\n\t\n\t// Returns a new rectangle that is the intersection of the two rectangles. If they don't intersect, returns false\n\tfunction intersectRects(rect1, rect2) {\n\t\tvar res = {\n\t\t\tleft: Math.max(rect1.left, rect2.left),\n\t\t\tright: Math.min(rect1.right, rect2.right),\n\t\t\ttop: Math.max(rect1.top, rect2.top),\n\t\t\tbottom: Math.min(rect1.bottom, rect2.bottom)\n\t\t};\n\t\n\t\tif (res.left < res.right && res.top < res.bottom) {\n\t\t\treturn res;\n\t\t}\n\t\treturn false;\n\t}\n\t\n\t\n\t// Returns a new point that will have been moved to reside within the given rectangle\n\tfunction constrainPoint(point, rect) {\n\t\treturn {\n\t\t\tleft: Math.min(Math.max(point.left, rect.left), rect.right),\n\t\t\ttop: Math.min(Math.max(point.top, rect.top), rect.bottom)\n\t\t};\n\t}\n\t\n\t\n\t// Returns a point that is the center of the given rectangle\n\tfunction getRectCenter(rect) {\n\t\treturn {\n\t\t\tleft: (rect.left + rect.right) / 2,\n\t\t\ttop: (rect.top + rect.bottom) / 2\n\t\t};\n\t}\n\t\n\t\n\t// Subtracts point2's coordinates from point1's coordinates, returning a delta\n\tfunction diffPoints(point1, point2) {\n\t\treturn {\n\t\t\tleft: point1.left - point2.left,\n\t\t\ttop: point1.top - point2.top\n\t\t};\n\t}\n\t\n\t\n\t/* Object Ordering by Field\n\t----------------------------------------------------------------------------------------------------------------------*/\n\t\n\tFC.parseFieldSpecs = parseFieldSpecs;\n\tFC.compareByFieldSpecs = compareByFieldSpecs;\n\tFC.compareByFieldSpec = compareByFieldSpec;\n\tFC.flexibleCompare = flexibleCompare;\n\t\n\t\n\tfunction parseFieldSpecs(input) {\n\t\tvar specs = [];\n\t\tvar tokens = [];\n\t\tvar i, token;\n\t\n\t\tif (typeof input === 'string') {\n\t\t\ttokens = input.split(/\\s*,\\s*/);\n\t\t}\n\t\telse if (typeof input === 'function') {\n\t\t\ttokens = [ input ];\n\t\t}\n\t\telse if ($.isArray(input)) {\n\t\t\ttokens = input;\n\t\t}\n\t\n\t\tfor (i = 0; i < tokens.length; i++) {\n\t\t\ttoken = tokens[i];\n\t\n\t\t\tif (typeof token === 'string') {\n\t\t\t\tspecs.push(\n\t\t\t\t\ttoken.charAt(0) == '-' ?\n\t\t\t\t\t\t{ field: token.substring(1), order: -1 } :\n\t\t\t\t\t\t{ field: token, order: 1 }\n\t\t\t\t);\n\t\t\t}\n\t\t\telse if (typeof token === 'function') {\n\t\t\t\tspecs.push({ func: token });\n\t\t\t}\n\t\t}\n\t\n\t\treturn specs;\n\t}\n\t\n\t\n\tfunction compareByFieldSpecs(obj1, obj2, fieldSpecs) {\n\t\tvar i;\n\t\tvar cmp;\n\t\n\t\tfor (i = 0; i < fieldSpecs.length; i++) {\n\t\t\tcmp = compareByFieldSpec(obj1, obj2, fieldSpecs[i]);\n\t\t\tif (cmp) {\n\t\t\t\treturn cmp;\n\t\t\t}\n\t\t}\n\t\n\t\treturn 0;\n\t}\n\t\n\t\n\tfunction compareByFieldSpec(obj1, obj2, fieldSpec) {\n\t\tif (fieldSpec.func) {\n\t\t\treturn fieldSpec.func(obj1, obj2);\n\t\t}\n\t\treturn flexibleCompare(obj1[fieldSpec.field], obj2[fieldSpec.field]) *\n\t\t\t(fieldSpec.order || 1);\n\t}\n\t\n\t\n\tfunction flexibleCompare(a, b) {\n\t\tif (!a && !b) {\n\t\t\treturn 0;\n\t\t}\n\t\tif (b == null) {\n\t\t\treturn -1;\n\t\t}\n\t\tif (a == null) {\n\t\t\treturn 1;\n\t\t}\n\t\tif ($.type(a) === 'string' || $.type(b) === 'string') {\n\t\t\treturn String(a).localeCompare(String(b));\n\t\t}\n\t\treturn a - b;\n\t}\n\t\n\t\n\t/* FullCalendar-specific Misc Utilities\n\t----------------------------------------------------------------------------------------------------------------------*/\n\t\n\t\n\t// Computes the intersection of the two ranges. Returns undefined if no intersection.\n\t// Expects all dates to be normalized to the same timezone beforehand.\n\t// TODO: move to date section?\n\tfunction intersectRanges(subjectRange, constraintRange) {\n\t\tvar subjectStart = subjectRange.start;\n\t\tvar subjectEnd = subjectRange.end;\n\t\tvar constraintStart = constraintRange.start;\n\t\tvar constraintEnd = constraintRange.end;\n\t\tvar segStart, segEnd;\n\t\tvar isStart, isEnd;\n\t\n\t\tif (subjectEnd > constraintStart && subjectStart < constraintEnd) { // in bounds at all?\n\t\n\t\t\tif (subjectStart >= constraintStart) {\n\t\t\t\tsegStart = subjectStart.clone();\n\t\t\t\tisStart = true;\n\t\t\t}\n\t\t\telse {\n\t\t\t\tsegStart = constraintStart.clone();\n\t\t\t\tisStart = false;\n\t\t\t}\n\t\n\t\t\tif (subjectEnd <= constraintEnd) {\n\t\t\t\tsegEnd = subjectEnd.clone();\n\t\t\t\tisEnd = true;\n\t\t\t}\n\t\t\telse {\n\t\t\t\tsegEnd = constraintEnd.clone();\n\t\t\t\tisEnd = false;\n\t\t\t}\n\t\n\t\t\treturn {\n\t\t\t\tstart: segStart,\n\t\t\t\tend: segEnd,\n\t\t\t\tisStart: isStart,\n\t\t\t\tisEnd: isEnd\n\t\t\t};\n\t\t}\n\t}\n\t\n\t\n\t/* Date Utilities\n\t----------------------------------------------------------------------------------------------------------------------*/\n\t\n\tFC.computeIntervalUnit = computeIntervalUnit;\n\tFC.divideRangeByDuration = divideRangeByDuration;\n\tFC.divideDurationByDuration = divideDurationByDuration;\n\tFC.multiplyDuration = multiplyDuration;\n\tFC.durationHasTime = durationHasTime;\n\t\n\tvar dayIDs = [ 'sun', 'mon', 'tue', 'wed', 'thu', 'fri', 'sat' ];\n\tvar intervalUnits = [ 'year', 'month', 'week', 'day', 'hour', 'minute', 'second', 'millisecond' ];\n\t\n\t\n\t// Diffs the two moments into a Duration where full-days are recorded first, then the remaining time.\n\t// Moments will have their timezones normalized.\n\tfunction diffDayTime(a, b) {\n\t\treturn moment.duration({\n\t\t\tdays: a.clone().stripTime().diff(b.clone().stripTime(), 'days'),\n\t\t\tms: a.time() - b.time() // time-of-day from day start. disregards timezone\n\t\t});\n\t}\n\t\n\t\n\t// Diffs the two moments via their start-of-day (regardless of timezone). Produces whole-day durations.\n\tfunction diffDay(a, b) {\n\t\treturn moment.duration({\n\t\t\tdays: a.clone().stripTime().diff(b.clone().stripTime(), 'days')\n\t\t});\n\t}\n\t\n\t\n\t// Diffs two moments, producing a duration, made of a whole-unit-increment of the given unit. Uses rounding.\n\tfunction diffByUnit(a, b, unit) {\n\t\treturn moment.duration(\n\t\t\tMath.round(a.diff(b, unit, true)), // returnFloat=true\n\t\t\tunit\n\t\t);\n\t}\n\t\n\t\n\t// Computes the unit name of the largest whole-unit period of time.\n\t// For example, 48 hours will be \"days\" whereas 49 hours will be \"hours\".\n\t// Accepts start/end, a range object, or an original duration object.\n\tfunction computeIntervalUnit(start, end) {\n\t\tvar i, unit;\n\t\tvar val;\n\t\n\t\tfor (i = 0; i < intervalUnits.length; i++) {\n\t\t\tunit = intervalUnits[i];\n\t\t\tval = computeRangeAs(unit, start, end);\n\t\n\t\t\tif (val >= 1 && isInt(val)) {\n\t\t\t\tbreak;\n\t\t\t}\n\t\t}\n\t\n\t\treturn unit; // will be \"milliseconds\" if nothing else matches\n\t}\n\t\n\t\n\t// Computes the number of units (like \"hours\") in the given range.\n\t// Range can be a {start,end} object, separate start/end args, or a Duration.\n\t// Results are based on Moment's .as() and .diff() methods, so results can depend on internal handling\n\t// of month-diffing logic (which tends to vary from version to version).\n\tfunction computeRangeAs(unit, start, end) {\n\t\n\t\tif (end != null) { // given start, end\n\t\t\treturn end.diff(start, unit, true);\n\t\t}\n\t\telse if (moment.isDuration(start)) { // given duration\n\t\t\treturn start.as(unit);\n\t\t}\n\t\telse { // given { start, end } range object\n\t\t\treturn start.end.diff(start.start, unit, true);\n\t\t}\n\t}\n\t\n\t\n\t// Intelligently divides a range (specified by a start/end params) by a duration\n\tfunction divideRangeByDuration(start, end, dur) {\n\t\tvar months;\n\t\n\t\tif (durationHasTime(dur)) {\n\t\t\treturn (end - start) / dur;\n\t\t}\n\t\tmonths = dur.asMonths();\n\t\tif (Math.abs(months) >= 1 && isInt(months)) {\n\t\t\treturn end.diff(start, 'months', true) / months;\n\t\t}\n\t\treturn end.diff(start, 'days', true) / dur.asDays();\n\t}\n\t\n\t\n\t// Intelligently divides one duration by another\n\tfunction divideDurationByDuration(dur1, dur2) {\n\t\tvar months1, months2;\n\t\n\t\tif (durationHasTime(dur1) || durationHasTime(dur2)) {\n\t\t\treturn dur1 / dur2;\n\t\t}\n\t\tmonths1 = dur1.asMonths();\n\t\tmonths2 = dur2.asMonths();\n\t\tif (\n\t\t\tMath.abs(months1) >= 1 && isInt(months1) &&\n\t\t\tMath.abs(months2) >= 1 && isInt(months2)\n\t\t) {\n\t\t\treturn months1 / months2;\n\t\t}\n\t\treturn dur1.asDays() / dur2.asDays();\n\t}\n\t\n\t\n\t// Intelligently multiplies a duration by a number\n\tfunction multiplyDuration(dur, n) {\n\t\tvar months;\n\t\n\t\tif (durationHasTime(dur)) {\n\t\t\treturn moment.duration(dur * n);\n\t\t}\n\t\tmonths = dur.asMonths();\n\t\tif (Math.abs(months) >= 1 && isInt(months)) {\n\t\t\treturn moment.duration({ months: months * n });\n\t\t}\n\t\treturn moment.duration({ days: dur.asDays() * n });\n\t}\n\t\n\t\n\t// Returns a boolean about whether the given duration has any time parts (hours/minutes/seconds/ms)\n\tfunction durationHasTime(dur) {\n\t\treturn Boolean(dur.hours() || dur.minutes() || dur.seconds() || dur.milliseconds());\n\t}\n\t\n\t\n\tfunction isNativeDate(input) {\n\t\treturn Object.prototype.toString.call(input) === '[object Date]' || input instanceof Date;\n\t}\n\t\n\t\n\t// Returns a boolean about whether the given input is a time string, like \"06:40:00\" or \"06:00\"\n\tfunction isTimeString(str) {\n\t\treturn /^\\d+\\:\\d+(?:\\:\\d+\\.?(?:\\d{3})?)?$/.test(str);\n\t}\n\t\n\t\n\t/* Logging and Debug\n\t----------------------------------------------------------------------------------------------------------------------*/\n\t\n\tFC.log = function() {\n\t\tvar console = window.console;\n\t\n\t\tif (console && console.log) {\n\t\t\treturn console.log.apply(console, arguments);\n\t\t}\n\t};\n\t\n\tFC.warn = function() {\n\t\tvar console = window.console;\n\t\n\t\tif (console && console.warn) {\n\t\t\treturn console.warn.apply(console, arguments);\n\t\t}\n\t\telse {\n\t\t\treturn FC.log.apply(FC, arguments);\n\t\t}\n\t};\n\t\n\t\n\t/* General Utilities\n\t----------------------------------------------------------------------------------------------------------------------*/\n\t\n\tvar hasOwnPropMethod = {}.hasOwnProperty;\n\t\n\t\n\t// Merges an array of objects into a single object.\n\t// The second argument allows for an array of property names who's object values will be merged together.\n\tfunction mergeProps(propObjs, complexProps) {\n\t\tvar dest = {};\n\t\tvar i, name;\n\t\tvar complexObjs;\n\t\tvar j, val;\n\t\tvar props;\n\t\n\t\tif (complexProps) {\n\t\t\tfor (i = 0; i < complexProps.length; i++) {\n\t\t\t\tname = complexProps[i];\n\t\t\t\tcomplexObjs = [];\n\t\n\t\t\t\t// collect the trailing object values, stopping when a non-object is discovered\n\t\t\t\tfor (j = propObjs.length - 1; j >= 0; j--) {\n\t\t\t\t\tval = propObjs[j][name];\n\t\n\t\t\t\t\tif (typeof val === 'object') {\n\t\t\t\t\t\tcomplexObjs.unshift(val);\n\t\t\t\t\t}\n\t\t\t\t\telse if (val !== undefined) {\n\t\t\t\t\t\tdest[name] = val; // if there were no objects, this value will be used\n\t\t\t\t\t\tbreak;\n\t\t\t\t\t}\n\t\t\t\t}\n\t\n\t\t\t\t// if the trailing values were objects, use the merged value\n\t\t\t\tif (complexObjs.length) {\n\t\t\t\t\tdest[name] = mergeProps(complexObjs);\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\t\n\t\t// copy values into the destination, going from last to first\n\t\tfor (i = propObjs.length - 1; i >= 0; i--) {\n\t\t\tprops = propObjs[i];\n\t\n\t\t\tfor (name in props) {\n\t\t\t\tif (!(name in dest)) { // if already assigned by previous props or complex props, don't reassign\n\t\t\t\t\tdest[name] = props[name];\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\t\n\t\treturn dest;\n\t}\n\t\n\t\n\t// Create an object that has the given prototype. Just like Object.create\n\tfunction createObject(proto) {\n\t\tvar f = function() {};\n\t\tf.prototype = proto;\n\t\treturn new f();\n\t}\n\t\n\t\n\tfunction copyOwnProps(src, dest) {\n\t\tfor (var name in src) {\n\t\t\tif (hasOwnProp(src, name)) {\n\t\t\t\tdest[name] = src[name];\n\t\t\t}\n\t\t}\n\t}\n\t\n\t\n\t// Copies over certain methods with the same names as Object.prototype methods. Overcomes an IE<=8 bug:\n\t// https://developer.mozilla.org/en-US/docs/ECMAScript_DontEnum_attribute#JScript_DontEnum_Bug\n\tfunction copyNativeMethods(src, dest) {\n\t\tvar names = [ 'constructor', 'toString', 'valueOf' ];\n\t\tvar i, name;\n\t\n\t\tfor (i = 0; i < names.length; i++) {\n\t\t\tname = names[i];\n\t\n\t\t\tif (src[name] !== Object.prototype[name]) {\n\t\t\t\tdest[name] = src[name];\n\t\t\t}\n\t\t}\n\t}\n\t\n\t\n\tfunction hasOwnProp(obj, name) {\n\t\treturn hasOwnPropMethod.call(obj, name);\n\t}\n\t\n\t\n\t// Is the given value a non-object non-function value?\n\tfunction isAtomic(val) {\n\t\treturn /undefined|null|boolean|number|string/.test($.type(val));\n\t}\n\t\n\t\n\tfunction applyAll(functions, thisObj, args) {\n\t\tif ($.isFunction(functions)) {\n\t\t\tfunctions = [ functions ];\n\t\t}\n\t\tif (functions) {\n\t\t\tvar i;\n\t\t\tvar ret;\n\t\t\tfor (i=0; i/g, '>')\n\t\t\t.replace(/'/g, ''')\n\t\t\t.replace(/\"/g, '"')\n\t\t\t.replace(/\\n/g, '
');\n\t}\n\t\n\t\n\tfunction stripHtmlEntities(text) {\n\t\treturn text.replace(/&.*?;/g, '');\n\t}\n\t\n\t\n\t// Given a hash of CSS properties, returns a string of CSS.\n\t// Uses property names as-is (no camel-case conversion). Will not make statements for null/undefined values.\n\tfunction cssToStr(cssProps) {\n\t\tvar statements = [];\n\t\n\t\t$.each(cssProps, function(name, val) {\n\t\t\tif (val != null) {\n\t\t\t\tstatements.push(name + ':' + val);\n\t\t\t}\n\t\t});\n\t\n\t\treturn statements.join(';');\n\t}\n\t\n\t\n\tfunction capitaliseFirstLetter(str) {\n\t\treturn str.charAt(0).toUpperCase() + str.slice(1);\n\t}\n\t\n\t\n\tfunction compareNumbers(a, b) { // for .sort()\n\t\treturn a - b;\n\t}\n\t\n\t\n\tfunction isInt(n) {\n\t\treturn n % 1 === 0;\n\t}\n\t\n\t\n\t// Returns a method bound to the given object context.\n\t// Just like one of the jQuery.proxy signatures, but without the undesired behavior of treating the same method with\n\t// different contexts as identical when binding/unbinding events.\n\tfunction proxy(obj, methodName) {\n\t\tvar method = obj[methodName];\n\t\n\t\treturn function() {\n\t\t\treturn method.apply(obj, arguments);\n\t\t};\n\t}\n\t\n\t\n\t// Returns a function, that, as long as it continues to be invoked, will not\n\t// be triggered. The function will be called after it stops being called for\n\t// N milliseconds. If `immediate` is passed, trigger the function on the\n\t// leading edge, instead of the trailing.\n\t// https://github.com/jashkenas/underscore/blob/1.6.0/underscore.js#L714\n\tfunction debounce(func, wait, immediate) {\n\t\tvar timeout, args, context, timestamp, result;\n\t\n\t\tvar later = function() {\n\t\t\tvar last = +new Date() - timestamp;\n\t\t\tif (last < wait) {\n\t\t\t\ttimeout = setTimeout(later, wait - last);\n\t\t\t}\n\t\t\telse {\n\t\t\t\ttimeout = null;\n\t\t\t\tif (!immediate) {\n\t\t\t\t\tresult = func.apply(context, args);\n\t\t\t\t\tcontext = args = null;\n\t\t\t\t}\n\t\t\t}\n\t\t};\n\t\n\t\treturn function() {\n\t\t\tcontext = this;\n\t\t\targs = arguments;\n\t\t\ttimestamp = +new Date();\n\t\t\tvar callNow = immediate && !timeout;\n\t\t\tif (!timeout) {\n\t\t\t\ttimeout = setTimeout(later, wait);\n\t\t\t}\n\t\t\tif (callNow) {\n\t\t\t\tresult = func.apply(context, args);\n\t\t\t\tcontext = args = null;\n\t\t\t}\n\t\t\treturn result;\n\t\t};\n\t}\n\t\n\t\n\t// HACK around jQuery's now A+ promises: execute callback synchronously if already resolved.\n\t// thenFunc shouldn't accept args.\n\t// similar to whenResources in Scheduler plugin.\n\tfunction syncThen(promise, thenFunc) {\n\t\t// not a promise, or an already-resolved promise?\n\t\tif (!promise || !promise.then || promise.state() === 'resolved') {\n\t\t\treturn $.when(thenFunc()); // resolve immediately\n\t\t}\n\t\telse if (thenFunc) {\n\t\t\treturn promise.then(thenFunc);\n\t\t}\n\t}\n\t\n\t;;\n\t\n\tvar ambigDateOfMonthRegex = /^\\s*\\d{4}-\\d\\d$/;\n\tvar ambigTimeOrZoneRegex =\n\t\t/^\\s*\\d{4}-(?:(\\d\\d-\\d\\d)|(W\\d\\d$)|(W\\d\\d-\\d)|(\\d\\d\\d))((T| )(\\d\\d(:\\d\\d(:\\d\\d(\\.\\d+)?)?)?)?)?$/;\n\tvar newMomentProto = moment.fn; // where we will attach our new methods\n\tvar oldMomentProto = $.extend({}, newMomentProto); // copy of original moment methods\n\tvar allowValueOptimization;\n\tvar setUTCValues; // function defined below\n\tvar setLocalValues; // function defined below\n\t\n\t\n\t// Creating\n\t// -------------------------------------------------------------------------------------------------\n\t\n\t// Creates a new moment, similar to the vanilla moment(...) constructor, but with\n\t// extra features (ambiguous time, enhanced formatting). When given an existing moment,\n\t// it will function as a clone (and retain the zone of the moment). Anything else will\n\t// result in a moment in the local zone.\n\tFC.moment = function() {\n\t\treturn makeMoment(arguments);\n\t};\n\t\n\t// Sames as FC.moment, but forces the resulting moment to be in the UTC timezone.\n\tFC.moment.utc = function() {\n\t\tvar mom = makeMoment(arguments, true);\n\t\n\t\t// Force it into UTC because makeMoment doesn't guarantee it\n\t\t// (if given a pre-existing moment for example)\n\t\tif (mom.hasTime()) { // don't give ambiguously-timed moments a UTC zone\n\t\t\tmom.utc();\n\t\t}\n\t\n\t\treturn mom;\n\t};\n\t\n\t// Same as FC.moment, but when given an ISO8601 string, the timezone offset is preserved.\n\t// ISO8601 strings with no timezone offset will become ambiguously zoned.\n\tFC.moment.parseZone = function() {\n\t\treturn makeMoment(arguments, true, true);\n\t};\n\t\n\t// Builds an enhanced moment from args. When given an existing moment, it clones. When given a\n\t// native Date, or called with no arguments (the current time), the resulting moment will be local.\n\t// Anything else needs to be \"parsed\" (a string or an array), and will be affected by:\n\t// parseAsUTC - if there is no zone information, should we parse the input in UTC?\n\t// parseZone - if there is zone information, should we force the zone of the moment?\n\tfunction makeMoment(args, parseAsUTC, parseZone) {\n\t\tvar input = args[0];\n\t\tvar isSingleString = args.length == 1 && typeof input === 'string';\n\t\tvar isAmbigTime;\n\t\tvar isAmbigZone;\n\t\tvar ambigMatch;\n\t\tvar mom;\n\t\n\t\tif (moment.isMoment(input)) {\n\t\t\tmom = moment.apply(null, args); // clone it\n\t\t\ttransferAmbigs(input, mom); // the ambig flags weren't transfered with the clone\n\t\t}\n\t\telse if (isNativeDate(input) || input === undefined) {\n\t\t\tmom = moment.apply(null, args); // will be local\n\t\t}\n\t\telse { // \"parsing\" is required\n\t\t\tisAmbigTime = false;\n\t\t\tisAmbigZone = false;\n\t\n\t\t\tif (isSingleString) {\n\t\t\t\tif (ambigDateOfMonthRegex.test(input)) {\n\t\t\t\t\t// accept strings like '2014-05', but convert to the first of the month\n\t\t\t\t\tinput += '-01';\n\t\t\t\t\targs = [ input ]; // for when we pass it on to moment's constructor\n\t\t\t\t\tisAmbigTime = true;\n\t\t\t\t\tisAmbigZone = true;\n\t\t\t\t}\n\t\t\t\telse if ((ambigMatch = ambigTimeOrZoneRegex.exec(input))) {\n\t\t\t\t\tisAmbigTime = !ambigMatch[5]; // no time part?\n\t\t\t\t\tisAmbigZone = true;\n\t\t\t\t}\n\t\t\t}\n\t\t\telse if ($.isArray(input)) {\n\t\t\t\t// arrays have no timezone information, so assume ambiguous zone\n\t\t\t\tisAmbigZone = true;\n\t\t\t}\n\t\t\t// otherwise, probably a string with a format\n\t\n\t\t\tif (parseAsUTC || isAmbigTime) {\n\t\t\t\tmom = moment.utc.apply(moment, args);\n\t\t\t}\n\t\t\telse {\n\t\t\t\tmom = moment.apply(null, args);\n\t\t\t}\n\t\n\t\t\tif (isAmbigTime) {\n\t\t\t\tmom._ambigTime = true;\n\t\t\t\tmom._ambigZone = true; // ambiguous time always means ambiguous zone\n\t\t\t}\n\t\t\telse if (parseZone) { // let's record the inputted zone somehow\n\t\t\t\tif (isAmbigZone) {\n\t\t\t\t\tmom._ambigZone = true;\n\t\t\t\t}\n\t\t\t\telse if (isSingleString) {\n\t\t\t\t\tif (mom.utcOffset) {\n\t\t\t\t\t\tmom.utcOffset(input); // if not a valid zone, will assign UTC\n\t\t\t\t\t}\n\t\t\t\t\telse {\n\t\t\t\t\t\tmom.zone(input); // for moment-pre-2.9\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\t\n\t\tmom._fullCalendar = true; // flag for extended functionality\n\t\n\t\treturn mom;\n\t}\n\t\n\t\n\t// A clone method that works with the flags related to our enhanced functionality.\n\t// In the future, use moment.momentProperties\n\tnewMomentProto.clone = function() {\n\t\tvar mom = oldMomentProto.clone.apply(this, arguments);\n\t\n\t\t// these flags weren't transfered with the clone\n\t\ttransferAmbigs(this, mom);\n\t\tif (this._fullCalendar) {\n\t\t\tmom._fullCalendar = true;\n\t\t}\n\t\n\t\treturn mom;\n\t};\n\t\n\t\n\t// Week Number\n\t// -------------------------------------------------------------------------------------------------\n\t\n\t\n\t// Returns the week number, considering the locale's custom week number calcuation\n\t// `weeks` is an alias for `week`\n\tnewMomentProto.week = newMomentProto.weeks = function(input) {\n\t\tvar weekCalc = (this._locale || this._lang) // works pre-moment-2.8\n\t\t\t._fullCalendar_weekCalc;\n\t\n\t\tif (input == null && typeof weekCalc === 'function') { // custom function only works for getter\n\t\t\treturn weekCalc(this);\n\t\t}\n\t\telse if (weekCalc === 'ISO') {\n\t\t\treturn oldMomentProto.isoWeek.apply(this, arguments); // ISO getter/setter\n\t\t}\n\t\n\t\treturn oldMomentProto.week.apply(this, arguments); // local getter/setter\n\t};\n\t\n\t\n\t// Time-of-day\n\t// -------------------------------------------------------------------------------------------------\n\t\n\t// GETTER\n\t// Returns a Duration with the hours/minutes/seconds/ms values of the moment.\n\t// If the moment has an ambiguous time, a duration of 00:00 will be returned.\n\t//\n\t// SETTER\n\t// You can supply a Duration, a Moment, or a Duration-like argument.\n\t// When setting the time, and the moment has an ambiguous time, it then becomes unambiguous.\n\tnewMomentProto.time = function(time) {\n\t\n\t\t// Fallback to the original method (if there is one) if this moment wasn't created via FullCalendar.\n\t\t// `time` is a generic enough method name where this precaution is necessary to avoid collisions w/ other plugins.\n\t\tif (!this._fullCalendar) {\n\t\t\treturn oldMomentProto.time.apply(this, arguments);\n\t\t}\n\t\n\t\tif (time == null) { // getter\n\t\t\treturn moment.duration({\n\t\t\t\thours: this.hours(),\n\t\t\t\tminutes: this.minutes(),\n\t\t\t\tseconds: this.seconds(),\n\t\t\t\tmilliseconds: this.milliseconds()\n\t\t\t});\n\t\t}\n\t\telse { // setter\n\t\n\t\t\tthis._ambigTime = false; // mark that the moment now has a time\n\t\n\t\t\tif (!moment.isDuration(time) && !moment.isMoment(time)) {\n\t\t\t\ttime = moment.duration(time);\n\t\t\t}\n\t\n\t\t\t// The day value should cause overflow (so 24 hours becomes 00:00:00 of next day).\n\t\t\t// Only for Duration times, not Moment times.\n\t\t\tvar dayHours = 0;\n\t\t\tif (moment.isDuration(time)) {\n\t\t\t\tdayHours = Math.floor(time.asDays()) * 24;\n\t\t\t}\n\t\n\t\t\t// We need to set the individual fields.\n\t\t\t// Can't use startOf('day') then add duration. In case of DST at start of day.\n\t\t\treturn this.hours(dayHours + time.hours())\n\t\t\t\t.minutes(time.minutes())\n\t\t\t\t.seconds(time.seconds())\n\t\t\t\t.milliseconds(time.milliseconds());\n\t\t}\n\t};\n\t\n\t// Converts the moment to UTC, stripping out its time-of-day and timezone offset,\n\t// but preserving its YMD. A moment with a stripped time will display no time\n\t// nor timezone offset when .format() is called.\n\tnewMomentProto.stripTime = function() {\n\t\tvar a;\n\t\n\t\tif (!this._ambigTime) {\n\t\n\t\t\t// get the values before any conversion happens\n\t\t\ta = this.toArray(); // array of y/m/d/h/m/s/ms\n\t\n\t\t\t// TODO: use keepLocalTime in the future\n\t\t\tthis.utc(); // set the internal UTC flag (will clear the ambig flags)\n\t\t\tsetUTCValues(this, a.slice(0, 3)); // set the year/month/date. time will be zero\n\t\n\t\t\t// Mark the time as ambiguous. This needs to happen after the .utc() call, which might call .utcOffset(),\n\t\t\t// which clears all ambig flags. Same with setUTCValues with moment-timezone.\n\t\t\tthis._ambigTime = true;\n\t\t\tthis._ambigZone = true; // if ambiguous time, also ambiguous timezone offset\n\t\t}\n\t\n\t\treturn this; // for chaining\n\t};\n\t\n\t// Returns if the moment has a non-ambiguous time (boolean)\n\tnewMomentProto.hasTime = function() {\n\t\treturn !this._ambigTime;\n\t};\n\t\n\t\n\t// Timezone\n\t// -------------------------------------------------------------------------------------------------\n\t\n\t// Converts the moment to UTC, stripping out its timezone offset, but preserving its\n\t// YMD and time-of-day. A moment with a stripped timezone offset will display no\n\t// timezone offset when .format() is called.\n\t// TODO: look into Moment's keepLocalTime functionality\n\tnewMomentProto.stripZone = function() {\n\t\tvar a, wasAmbigTime;\n\t\n\t\tif (!this._ambigZone) {\n\t\n\t\t\t// get the values before any conversion happens\n\t\t\ta = this.toArray(); // array of y/m/d/h/m/s/ms\n\t\t\twasAmbigTime = this._ambigTime;\n\t\n\t\t\tthis.utc(); // set the internal UTC flag (might clear the ambig flags, depending on Moment internals)\n\t\t\tsetUTCValues(this, a); // will set the year/month/date/hours/minutes/seconds/ms\n\t\n\t\t\t// the above call to .utc()/.utcOffset() unfortunately might clear the ambig flags, so restore\n\t\t\tthis._ambigTime = wasAmbigTime || false;\n\t\n\t\t\t// Mark the zone as ambiguous. This needs to happen after the .utc() call, which might call .utcOffset(),\n\t\t\t// which clears the ambig flags. Same with setUTCValues with moment-timezone.\n\t\t\tthis._ambigZone = true;\n\t\t}\n\t\n\t\treturn this; // for chaining\n\t};\n\t\n\t// Returns of the moment has a non-ambiguous timezone offset (boolean)\n\tnewMomentProto.hasZone = function() {\n\t\treturn !this._ambigZone;\n\t};\n\t\n\t\n\t// this method implicitly marks a zone\n\tnewMomentProto.local = function() {\n\t\tvar a = this.toArray(); // year,month,date,hours,minutes,seconds,ms as an array\n\t\tvar wasAmbigZone = this._ambigZone;\n\t\n\t\toldMomentProto.local.apply(this, arguments);\n\t\n\t\t// ensure non-ambiguous\n\t\t// this probably already happened via local() -> utcOffset(), but don't rely on Moment's internals\n\t\tthis._ambigTime = false;\n\t\tthis._ambigZone = false;\n\t\n\t\tif (wasAmbigZone) {\n\t\t\t// If the moment was ambiguously zoned, the date fields were stored as UTC.\n\t\t\t// We want to preserve these, but in local time.\n\t\t\t// TODO: look into Moment's keepLocalTime functionality\n\t\t\tsetLocalValues(this, a);\n\t\t}\n\t\n\t\treturn this; // for chaining\n\t};\n\t\n\t\n\t// implicitly marks a zone\n\tnewMomentProto.utc = function() {\n\t\toldMomentProto.utc.apply(this, arguments);\n\t\n\t\t// ensure non-ambiguous\n\t\t// this probably already happened via utc() -> utcOffset(), but don't rely on Moment's internals\n\t\tthis._ambigTime = false;\n\t\tthis._ambigZone = false;\n\t\n\t\treturn this;\n\t};\n\t\n\t\n\t// methods for arbitrarily manipulating timezone offset.\n\t// should clear time/zone ambiguity when called.\n\t$.each([\n\t\t'zone', // only in moment-pre-2.9. deprecated afterwards\n\t\t'utcOffset'\n\t], function(i, name) {\n\t\tif (oldMomentProto[name]) { // original method exists?\n\t\n\t\t\t// this method implicitly marks a zone (will probably get called upon .utc() and .local())\n\t\t\tnewMomentProto[name] = function(tzo) {\n\t\n\t\t\t\tif (tzo != null) { // setter\n\t\t\t\t\t// these assignments needs to happen before the original zone method is called.\n\t\t\t\t\t// I forget why, something to do with a browser crash.\n\t\t\t\t\tthis._ambigTime = false;\n\t\t\t\t\tthis._ambigZone = false;\n\t\t\t\t}\n\t\n\t\t\t\treturn oldMomentProto[name].apply(this, arguments);\n\t\t\t};\n\t\t}\n\t});\n\t\n\t\n\t// Formatting\n\t// -------------------------------------------------------------------------------------------------\n\t\n\tnewMomentProto.format = function() {\n\t\tif (this._fullCalendar && arguments[0]) { // an enhanced moment? and a format string provided?\n\t\t\treturn formatDate(this, arguments[0]); // our extended formatting\n\t\t}\n\t\tif (this._ambigTime) {\n\t\t\treturn oldMomentFormat(this, 'YYYY-MM-DD');\n\t\t}\n\t\tif (this._ambigZone) {\n\t\t\treturn oldMomentFormat(this, 'YYYY-MM-DD[T]HH:mm:ss');\n\t\t}\n\t\treturn oldMomentProto.format.apply(this, arguments);\n\t};\n\t\n\tnewMomentProto.toISOString = function() {\n\t\tif (this._ambigTime) {\n\t\t\treturn oldMomentFormat(this, 'YYYY-MM-DD');\n\t\t}\n\t\tif (this._ambigZone) {\n\t\t\treturn oldMomentFormat(this, 'YYYY-MM-DD[T]HH:mm:ss');\n\t\t}\n\t\treturn oldMomentProto.toISOString.apply(this, arguments);\n\t};\n\t\n\t\n\t// Querying\n\t// -------------------------------------------------------------------------------------------------\n\t\n\t// Is the moment within the specified range? `end` is exclusive.\n\t// FYI, this method is not a standard Moment method, so always do our enhanced logic.\n\tnewMomentProto.isWithin = function(start, end) {\n\t\tvar a = commonlyAmbiguate([ this, start, end ]);\n\t\treturn a[0] >= a[1] && a[0] < a[2];\n\t};\n\t\n\t// When isSame is called with units, timezone ambiguity is normalized before the comparison happens.\n\t// If no units specified, the two moments must be identically the same, with matching ambig flags.\n\tnewMomentProto.isSame = function(input, units) {\n\t\tvar a;\n\t\n\t\t// only do custom logic if this is an enhanced moment\n\t\tif (!this._fullCalendar) {\n\t\t\treturn oldMomentProto.isSame.apply(this, arguments);\n\t\t}\n\t\n\t\tif (units) {\n\t\t\ta = commonlyAmbiguate([ this, input ], true); // normalize timezones but don't erase times\n\t\t\treturn oldMomentProto.isSame.call(a[0], a[1], units);\n\t\t}\n\t\telse {\n\t\t\tinput = FC.moment.parseZone(input); // normalize input\n\t\t\treturn oldMomentProto.isSame.call(this, input) &&\n\t\t\t\tBoolean(this._ambigTime) === Boolean(input._ambigTime) &&\n\t\t\t\tBoolean(this._ambigZone) === Boolean(input._ambigZone);\n\t\t}\n\t};\n\t\n\t// Make these query methods work with ambiguous moments\n\t$.each([\n\t\t'isBefore',\n\t\t'isAfter'\n\t], function(i, methodName) {\n\t\tnewMomentProto[methodName] = function(input, units) {\n\t\t\tvar a;\n\t\n\t\t\t// only do custom logic if this is an enhanced moment\n\t\t\tif (!this._fullCalendar) {\n\t\t\t\treturn oldMomentProto[methodName].apply(this, arguments);\n\t\t\t}\n\t\n\t\t\ta = commonlyAmbiguate([ this, input ]);\n\t\t\treturn oldMomentProto[methodName].call(a[0], a[1], units);\n\t\t};\n\t});\n\t\n\t\n\t// Misc Internals\n\t// -------------------------------------------------------------------------------------------------\n\t\n\t// given an array of moment-like inputs, return a parallel array w/ moments similarly ambiguated.\n\t// for example, of one moment has ambig time, but not others, all moments will have their time stripped.\n\t// set `preserveTime` to `true` to keep times, but only normalize zone ambiguity.\n\t// returns the original moments if no modifications are necessary.\n\tfunction commonlyAmbiguate(inputs, preserveTime) {\n\t\tvar anyAmbigTime = false;\n\t\tvar anyAmbigZone = false;\n\t\tvar len = inputs.length;\n\t\tvar moms = [];\n\t\tvar i, mom;\n\t\n\t\t// parse inputs into real moments and query their ambig flags\n\t\tfor (i = 0; i < len; i++) {\n\t\t\tmom = inputs[i];\n\t\t\tif (!moment.isMoment(mom)) {\n\t\t\t\tmom = FC.moment.parseZone(mom);\n\t\t\t}\n\t\t\tanyAmbigTime = anyAmbigTime || mom._ambigTime;\n\t\t\tanyAmbigZone = anyAmbigZone || mom._ambigZone;\n\t\t\tmoms.push(mom);\n\t\t}\n\t\n\t\t// strip each moment down to lowest common ambiguity\n\t\t// use clones to avoid modifying the original moments\n\t\tfor (i = 0; i < len; i++) {\n\t\t\tmom = moms[i];\n\t\t\tif (!preserveTime && anyAmbigTime && !mom._ambigTime) {\n\t\t\t\tmoms[i] = mom.clone().stripTime();\n\t\t\t}\n\t\t\telse if (anyAmbigZone && !mom._ambigZone) {\n\t\t\t\tmoms[i] = mom.clone().stripZone();\n\t\t\t}\n\t\t}\n\t\n\t\treturn moms;\n\t}\n\t\n\t// Transfers all the flags related to ambiguous time/zone from the `src` moment to the `dest` moment\n\t// TODO: look into moment.momentProperties for this.\n\tfunction transferAmbigs(src, dest) {\n\t\tif (src._ambigTime) {\n\t\t\tdest._ambigTime = true;\n\t\t}\n\t\telse if (dest._ambigTime) {\n\t\t\tdest._ambigTime = false;\n\t\t}\n\t\n\t\tif (src._ambigZone) {\n\t\t\tdest._ambigZone = true;\n\t\t}\n\t\telse if (dest._ambigZone) {\n\t\t\tdest._ambigZone = false;\n\t\t}\n\t}\n\t\n\t\n\t// Sets the year/month/date/etc values of the moment from the given array.\n\t// Inefficient because it calls each individual setter.\n\tfunction setMomentValues(mom, a) {\n\t\tmom.year(a[0] || 0)\n\t\t\t.month(a[1] || 0)\n\t\t\t.date(a[2] || 0)\n\t\t\t.hours(a[3] || 0)\n\t\t\t.minutes(a[4] || 0)\n\t\t\t.seconds(a[5] || 0)\n\t\t\t.milliseconds(a[6] || 0);\n\t}\n\t\n\t// Can we set the moment's internal date directly?\n\tallowValueOptimization = '_d' in moment() && 'updateOffset' in moment;\n\t\n\t// Utility function. Accepts a moment and an array of the UTC year/month/date/etc values to set.\n\t// Assumes the given moment is already in UTC mode.\n\tsetUTCValues = allowValueOptimization ? function(mom, a) {\n\t\t// simlate what moment's accessors do\n\t\tmom._d.setTime(Date.UTC.apply(Date, a));\n\t\tmoment.updateOffset(mom, false); // keepTime=false\n\t} : setMomentValues;\n\t\n\t// Utility function. Accepts a moment and an array of the local year/month/date/etc values to set.\n\t// Assumes the given moment is already in local mode.\n\tsetLocalValues = allowValueOptimization ? function(mom, a) {\n\t\t// simlate what moment's accessors do\n\t\tmom._d.setTime(+new Date( // FYI, there is now way to apply an array of args to a constructor\n\t\t\ta[0] || 0,\n\t\t\ta[1] || 0,\n\t\t\ta[2] || 0,\n\t\t\ta[3] || 0,\n\t\t\ta[4] || 0,\n\t\t\ta[5] || 0,\n\t\t\ta[6] || 0\n\t\t));\n\t\tmoment.updateOffset(mom, false); // keepTime=false\n\t} : setMomentValues;\n\t\n\t;;\n\t\n\t// Single Date Formatting\n\t// -------------------------------------------------------------------------------------------------\n\t\n\t\n\t// call this if you want Moment's original format method to be used\n\tfunction oldMomentFormat(mom, formatStr) {\n\t\treturn oldMomentProto.format.call(mom, formatStr); // oldMomentProto defined in moment-ext.js\n\t}\n\t\n\t\n\t// Formats `date` with a Moment formatting string, but allow our non-zero areas and\n\t// additional token.\n\tfunction formatDate(date, formatStr) {\n\t\treturn formatDateWithChunks(date, getFormatStringChunks(formatStr));\n\t}\n\t\n\t\n\tfunction formatDateWithChunks(date, chunks) {\n\t\tvar s = '';\n\t\tvar i;\n\t\n\t\tfor (i=0; i \"MMMM D YYYY\"\n\t\tformatStr = localeData.longDateFormat(formatStr) || formatStr;\n\t\t// BTW, this is not important for `formatDate` because it is impossible to put custom tokens\n\t\t// or non-zero areas in Moment's localized format strings.\n\t\n\t\tseparator = separator || ' - ';\n\t\n\t\treturn formatRangeWithChunks(\n\t\t\tdate1,\n\t\t\tdate2,\n\t\t\tgetFormatStringChunks(formatStr),\n\t\t\tseparator,\n\t\t\tisRTL\n\t\t);\n\t}\n\tFC.formatRange = formatRange; // expose\n\t\n\t\n\tfunction formatRangeWithChunks(date1, date2, chunks, separator, isRTL) {\n\t\tvar unzonedDate1 = date1.clone().stripZone(); // for formatSimilarChunk\n\t\tvar unzonedDate2 = date2.clone().stripZone(); // \"\n\t\tvar chunkStr; // the rendering of the chunk\n\t\tvar leftI;\n\t\tvar leftStr = '';\n\t\tvar rightI;\n\t\tvar rightStr = '';\n\t\tvar middleI;\n\t\tvar middleStr1 = '';\n\t\tvar middleStr2 = '';\n\t\tvar middleStr = '';\n\t\n\t\t// Start at the leftmost side of the formatting string and continue until you hit a token\n\t\t// that is not the same between dates.\n\t\tfor (leftI=0; leftIleftI; rightI--) {\n\t\t\tchunkStr = formatSimilarChunk(date1, date2, unzonedDate1, unzonedDate2, chunks[rightI]);\n\t\t\tif (chunkStr === false) {\n\t\t\t\tbreak;\n\t\t\t}\n\t\t\trightStr = chunkStr + rightStr;\n\t\t}\n\t\n\t\t// The area in the middle is different for both of the dates.\n\t\t// Collect them distinctly so we can jam them together later.\n\t\tfor (middleI=leftI; middleI<=rightI; middleI++) {\n\t\t\tmiddleStr1 += formatDateWithChunk(date1, chunks[middleI]);\n\t\t\tmiddleStr2 += formatDateWithChunk(date2, chunks[middleI]);\n\t\t}\n\t\n\t\tif (middleStr1 || middleStr2) {\n\t\t\tif (isRTL) {\n\t\t\t\tmiddleStr = middleStr2 + separator + middleStr1;\n\t\t\t}\n\t\t\telse {\n\t\t\t\tmiddleStr = middleStr1 + separator + middleStr2;\n\t\t\t}\n\t\t}\n\t\n\t\treturn leftStr + middleStr + rightStr;\n\t}\n\t\n\t\n\tvar similarUnitMap = {\n\t\tY: 'year',\n\t\tM: 'month',\n\t\tD: 'day', // day of month\n\t\td: 'day', // day of week\n\t\t// prevents a separator between anything time-related...\n\t\tA: 'second', // AM/PM\n\t\ta: 'second', // am/pm\n\t\tT: 'second', // A/P\n\t\tt: 'second', // a/p\n\t\tH: 'second', // hour (24)\n\t\th: 'second', // hour (12)\n\t\tm: 'second', // minute\n\t\ts: 'second' // second\n\t};\n\t// TODO: week maybe?\n\t\n\t\n\t// Given a formatting chunk, and given that both dates are similar in the regard the\n\t// formatting chunk is concerned, format date1 against `chunk`. Otherwise, return `false`.\n\tfunction formatSimilarChunk(date1, date2, unzonedDate1, unzonedDate2, chunk) {\n\t\tvar token;\n\t\tvar unit;\n\t\n\t\tif (typeof chunk === 'string') { // a literal string\n\t\t\treturn chunk;\n\t\t}\n\t\telse if ((token = chunk.token)) {\n\t\t\tunit = similarUnitMap[token.charAt(0)];\n\t\n\t\t\t// are the dates the same for this unit of measurement?\n\t\t\t// use the unzoned dates for this calculation because unreliable when near DST (bug #2396)\n\t\t\tif (unit && unzonedDate1.isSame(unzonedDate2, unit)) {\n\t\t\t\treturn oldMomentFormat(date1, token); // would be the same if we used `date2`\n\t\t\t\t// BTW, don't support custom tokens\n\t\t\t}\n\t\t}\n\t\n\t\treturn false; // the chunk is NOT the same for the two dates\n\t\t// BTW, don't support splitting on non-zero areas\n\t}\n\t\n\t\n\t// Chunking Utils\n\t// -------------------------------------------------------------------------------------------------\n\t\n\t\n\tvar formatStringChunkCache = {};\n\t\n\t\n\tfunction getFormatStringChunks(formatStr) {\n\t\tif (formatStr in formatStringChunkCache) {\n\t\t\treturn formatStringChunkCache[formatStr];\n\t\t}\n\t\treturn (formatStringChunkCache[formatStr] = chunkFormatString(formatStr));\n\t}\n\t\n\t\n\t// Break the formatting string into an array of chunks\n\tfunction chunkFormatString(formatStr) {\n\t\tvar chunks = [];\n\t\tvar chunker = /\\[([^\\]]*)\\]|\\(([^\\)]*)\\)|(LTS|LT|(\\w)\\4*o?)|([^\\w\\[\\(]+)/g; // TODO: more descrimination\n\t\tvar match;\n\t\n\t\twhile ((match = chunker.exec(formatStr))) {\n\t\t\tif (match[1]) { // a literal string inside [ ... ]\n\t\t\t\tchunks.push(match[1]);\n\t\t\t}\n\t\t\telse if (match[2]) { // non-zero formatting inside ( ... )\n\t\t\t\tchunks.push({ maybe: chunkFormatString(match[2]) });\n\t\t\t}\n\t\t\telse if (match[3]) { // a formatting token\n\t\t\t\tchunks.push({ token: match[3] });\n\t\t\t}\n\t\t\telse if (match[5]) { // an unenclosed literal string\n\t\t\t\tchunks.push(match[5]);\n\t\t\t}\n\t\t}\n\t\n\t\treturn chunks;\n\t}\n\t\n\t;;\n\t\n\tFC.Class = Class; // export\n\t\n\t// Class that all other classes will inherit from\n\tfunction Class() { }\n\t\n\t\n\t// Called on a class to create a subclass.\n\t// Last argument contains instance methods. Any argument before the last are considered mixins.\n\tClass.extend = function() {\n\t\tvar len = arguments.length;\n\t\tvar i;\n\t\tvar members;\n\t\n\t\tfor (i = 0; i < len; i++) {\n\t\t\tmembers = arguments[i];\n\t\t\tif (i < len - 1) { // not the last argument?\n\t\t\t\tmixIntoClass(this, members);\n\t\t\t}\n\t\t}\n\t\n\t\treturn extendClass(this, members || {}); // members will be undefined if no arguments\n\t};\n\t\n\t\n\t// Adds new member variables/methods to the class's prototype.\n\t// Can be called with another class, or a plain object hash containing new members.\n\tClass.mixin = function(members) {\n\t\tmixIntoClass(this, members);\n\t};\n\t\n\t\n\tfunction extendClass(superClass, members) {\n\t\tvar subClass;\n\t\n\t\t// ensure a constructor for the subclass, forwarding all arguments to the super-constructor if it doesn't exist\n\t\tif (hasOwnProp(members, 'constructor')) {\n\t\t\tsubClass = members.constructor;\n\t\t}\n\t\tif (typeof subClass !== 'function') {\n\t\t\tsubClass = members.constructor = function() {\n\t\t\t\tsuperClass.apply(this, arguments);\n\t\t\t};\n\t\t}\n\t\n\t\t// build the base prototype for the subclass, which is an new object chained to the superclass's prototype\n\t\tsubClass.prototype = createObject(superClass.prototype);\n\t\n\t\t// copy each member variable/method onto the the subclass's prototype\n\t\tcopyOwnProps(members, subClass.prototype);\n\t\tcopyNativeMethods(members, subClass.prototype); // hack for IE8\n\t\n\t\t// copy over all class variables/methods to the subclass, such as `extend` and `mixin`\n\t\tcopyOwnProps(superClass, subClass);\n\t\n\t\treturn subClass;\n\t}\n\t\n\t\n\tfunction mixIntoClass(theClass, members) {\n\t\tcopyOwnProps(members, theClass.prototype); // TODO: copyNativeMethods?\n\t}\n\t;;\n\t\n\tvar EmitterMixin = FC.EmitterMixin = {\n\t\n\t\t// jQuery-ification via $(this) allows a non-DOM object to have\n\t\t// the same event handling capabilities (including namespaces).\n\t\n\t\n\t\ton: function(types, handler) {\n\t\n\t\t\t// handlers are always called with an \"event\" object as their first param.\n\t\t\t// sneak the `this` context and arguments into the extra parameter object\n\t\t\t// and forward them on to the original handler.\n\t\t\tvar intercept = function(ev, extra) {\n\t\t\t\treturn handler.apply(\n\t\t\t\t\textra.context || this,\n\t\t\t\t\textra.args || []\n\t\t\t\t);\n\t\t\t};\n\t\n\t\t\t// mimick jQuery's internal \"proxy\" system (risky, I know)\n\t\t\t// causing all functions with the same .guid to appear to be the same.\n\t\t\t// https://github.com/jquery/jquery/blob/2.2.4/src/core.js#L448\n\t\t\t// this is needed for calling .off with the original non-intercept handler.\n\t\t\tif (!handler.guid) {\n\t\t\t\thandler.guid = $.guid++;\n\t\t\t}\n\t\t\tintercept.guid = handler.guid;\n\t\n\t\t\t$(this).on(types, intercept);\n\t\n\t\t\treturn this; // for chaining\n\t\t},\n\t\n\t\n\t\toff: function(types, handler) {\n\t\t\t$(this).off(types, handler);\n\t\n\t\t\treturn this; // for chaining\n\t\t},\n\t\n\t\n\t\ttrigger: function(types) {\n\t\t\tvar args = Array.prototype.slice.call(arguments, 1); // arguments after the first\n\t\n\t\t\t// pass in \"extra\" info to the intercept\n\t\t\t$(this).triggerHandler(types, { args: args });\n\t\n\t\t\treturn this; // for chaining\n\t\t},\n\t\n\t\n\t\ttriggerWith: function(types, context, args) {\n\t\n\t\t\t// `triggerHandler` is less reliant on the DOM compared to `trigger`.\n\t\t\t// pass in \"extra\" info to the intercept.\n\t\t\t$(this).triggerHandler(types, { context: context, args: args });\n\t\n\t\t\treturn this; // for chaining\n\t\t}\n\t\n\t};\n\t\n\t;;\n\t\n\t/*\n\tUtility methods for easily listening to events on another object,\n\tand more importantly, easily unlistening from them.\n\t*/\n\tvar ListenerMixin = FC.ListenerMixin = (function() {\n\t\tvar guid = 0;\n\t\tvar ListenerMixin = {\n\t\n\t\t\tlistenerId: null,\n\t\n\t\t\t/*\n\t\t\tGiven an `other` object that has on/off methods, bind the given `callback` to an event by the given name.\n\t\t\tThe `callback` will be called with the `this` context of the object that .listenTo is being called on.\n\t\t\tCan be called:\n\t\t\t\t.listenTo(other, eventName, callback)\n\t\t\tOR\n\t\t\t\t.listenTo(other, {\n\t\t\t\t\teventName1: callback1,\n\t\t\t\t\teventName2: callback2\n\t\t\t\t})\n\t\t\t*/\n\t\t\tlistenTo: function(other, arg, callback) {\n\t\t\t\tif (typeof arg === 'object') { // given dictionary of callbacks\n\t\t\t\t\tfor (var eventName in arg) {\n\t\t\t\t\t\tif (arg.hasOwnProperty(eventName)) {\n\t\t\t\t\t\t\tthis.listenTo(other, eventName, arg[eventName]);\n\t\t\t\t\t\t}\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t\telse if (typeof arg === 'string') {\n\t\t\t\t\tother.on(\n\t\t\t\t\t\targ + '.' + this.getListenerNamespace(), // use event namespacing to identify this object\n\t\t\t\t\t\t$.proxy(callback, this) // always use `this` context\n\t\t\t\t\t\t\t// the usually-undesired jQuery guid behavior doesn't matter,\n\t\t\t\t\t\t\t// because we always unbind via namespace\n\t\t\t\t\t);\n\t\t\t\t}\n\t\t\t},\n\t\n\t\t\t/*\n\t\t\tCauses the current object to stop listening to events on the `other` object.\n\t\t\t`eventName` is optional. If omitted, will stop listening to ALL events on `other`.\n\t\t\t*/\n\t\t\tstopListeningTo: function(other, eventName) {\n\t\t\t\tother.off((eventName || '') + '.' + this.getListenerNamespace());\n\t\t\t},\n\t\n\t\t\t/*\n\t\t\tReturns a string, unique to this object, to be used for event namespacing\n\t\t\t*/\n\t\t\tgetListenerNamespace: function() {\n\t\t\t\tif (this.listenerId == null) {\n\t\t\t\t\tthis.listenerId = guid++;\n\t\t\t\t}\n\t\t\t\treturn '_listener' + this.listenerId;\n\t\t\t}\n\t\n\t\t};\n\t\treturn ListenerMixin;\n\t})();\n\t;;\n\t\n\t// simple class for toggle a `isIgnoringMouse` flag on delay\n\t// initMouseIgnoring must first be called, with a millisecond delay setting.\n\tvar MouseIgnorerMixin = {\n\t\n\t\tisIgnoringMouse: false, // bool\n\t\tdelayUnignoreMouse: null, // method\n\t\n\t\n\t\tinitMouseIgnoring: function(delay) {\n\t\t\tthis.delayUnignoreMouse = debounce(proxy(this, 'unignoreMouse'), delay || 1000);\n\t\t},\n\t\n\t\n\t\t// temporarily ignore mouse actions on segments\n\t\ttempIgnoreMouse: function() {\n\t\t\tthis.isIgnoringMouse = true;\n\t\t\tthis.delayUnignoreMouse();\n\t\t},\n\t\n\t\n\t\t// delayUnignoreMouse eventually calls this\n\t\tunignoreMouse: function() {\n\t\t\tthis.isIgnoringMouse = false;\n\t\t}\n\t\n\t};\n\t\n\t;;\n\t\n\t/* A rectangular panel that is absolutely positioned over other content\n\t------------------------------------------------------------------------------------------------------------------------\n\tOptions:\n\t\t- className (string)\n\t\t- content (HTML string or jQuery element set)\n\t\t- parentEl\n\t\t- top\n\t\t- left\n\t\t- right (the x coord of where the right edge should be. not a \"CSS\" right)\n\t\t- autoHide (boolean)\n\t\t- show (callback)\n\t\t- hide (callback)\n\t*/\n\t\n\tvar Popover = Class.extend(ListenerMixin, {\n\t\n\t\tisHidden: true,\n\t\toptions: null,\n\t\tel: null, // the container element for the popover. generated by this object\n\t\tmargin: 10, // the space required between the popover and the edges of the scroll container\n\t\n\t\n\t\tconstructor: function(options) {\n\t\t\tthis.options = options || {};\n\t\t},\n\t\n\t\n\t\t// Shows the popover on the specified position. Renders it if not already\n\t\tshow: function() {\n\t\t\tif (this.isHidden) {\n\t\t\t\tif (!this.el) {\n\t\t\t\t\tthis.render();\n\t\t\t\t}\n\t\t\t\tthis.el.show();\n\t\t\t\tthis.position();\n\t\t\t\tthis.isHidden = false;\n\t\t\t\tthis.trigger('show');\n\t\t\t}\n\t\t},\n\t\n\t\n\t\t// Hides the popover, through CSS, but does not remove it from the DOM\n\t\thide: function() {\n\t\t\tif (!this.isHidden) {\n\t\t\t\tthis.el.hide();\n\t\t\t\tthis.isHidden = true;\n\t\t\t\tthis.trigger('hide');\n\t\t\t}\n\t\t},\n\t\n\t\n\t\t// Creates `this.el` and renders content inside of it\n\t\trender: function() {\n\t\t\tvar _this = this;\n\t\t\tvar options = this.options;\n\t\n\t\t\tthis.el = $('
')\n\t\t\t\t.addClass(options.className || '')\n\t\t\t\t.css({\n\t\t\t\t\t// position initially to the top left to avoid creating scrollbars\n\t\t\t\t\ttop: 0,\n\t\t\t\t\tleft: 0\n\t\t\t\t})\n\t\t\t\t.append(options.content)\n\t\t\t\t.appendTo(options.parentEl);\n\t\n\t\t\t// when a click happens on anything inside with a 'fc-close' className, hide the popover\n\t\t\tthis.el.on('click', '.fc-close', function() {\n\t\t\t\t_this.hide();\n\t\t\t});\n\t\n\t\t\tif (options.autoHide) {\n\t\t\t\tthis.listenTo($(document), 'mousedown', this.documentMousedown);\n\t\t\t}\n\t\t},\n\t\n\t\n\t\t// Triggered when the user clicks *anywhere* in the document, for the autoHide feature\n\t\tdocumentMousedown: function(ev) {\n\t\t\t// only hide the popover if the click happened outside the popover\n\t\t\tif (this.el && !$(ev.target).closest(this.el).length) {\n\t\t\t\tthis.hide();\n\t\t\t}\n\t\t},\n\t\n\t\n\t\t// Hides and unregisters any handlers\n\t\tremoveElement: function() {\n\t\t\tthis.hide();\n\t\n\t\t\tif (this.el) {\n\t\t\t\tthis.el.remove();\n\t\t\t\tthis.el = null;\n\t\t\t}\n\t\n\t\t\tthis.stopListeningTo($(document), 'mousedown');\n\t\t},\n\t\n\t\n\t\t// Positions the popover optimally, using the top/left/right options\n\t\tposition: function() {\n\t\t\tvar options = this.options;\n\t\t\tvar origin = this.el.offsetParent().offset();\n\t\t\tvar width = this.el.outerWidth();\n\t\t\tvar height = this.el.outerHeight();\n\t\t\tvar windowEl = $(window);\n\t\t\tvar viewportEl = getScrollParent(this.el);\n\t\t\tvar viewportTop;\n\t\t\tvar viewportLeft;\n\t\t\tvar viewportOffset;\n\t\t\tvar top; // the \"position\" (not \"offset\") values for the popover\n\t\t\tvar left; //\n\t\n\t\t\t// compute top and left\n\t\t\ttop = options.top || 0;\n\t\t\tif (options.left !== undefined) {\n\t\t\t\tleft = options.left;\n\t\t\t}\n\t\t\telse if (options.right !== undefined) {\n\t\t\t\tleft = options.right - width; // derive the left value from the right value\n\t\t\t}\n\t\t\telse {\n\t\t\t\tleft = 0;\n\t\t\t}\n\t\n\t\t\tif (viewportEl.is(window) || viewportEl.is(document)) { // normalize getScrollParent's result\n\t\t\t\tviewportEl = windowEl;\n\t\t\t\tviewportTop = 0; // the window is always at the top left\n\t\t\t\tviewportLeft = 0; // (and .offset() won't work if called here)\n\t\t\t}\n\t\t\telse {\n\t\t\t\tviewportOffset = viewportEl.offset();\n\t\t\t\tviewportTop = viewportOffset.top;\n\t\t\t\tviewportLeft = viewportOffset.left;\n\t\t\t}\n\t\n\t\t\t// if the window is scrolled, it causes the visible area to be further down\n\t\t\tviewportTop += windowEl.scrollTop();\n\t\t\tviewportLeft += windowEl.scrollLeft();\n\t\n\t\t\t// constrain to the view port. if constrained by two edges, give precedence to top/left\n\t\t\tif (options.viewportConstrain !== false) {\n\t\t\t\ttop = Math.min(top, viewportTop + viewportEl.outerHeight() - height - this.margin);\n\t\t\t\ttop = Math.max(top, viewportTop + this.margin);\n\t\t\t\tleft = Math.min(left, viewportLeft + viewportEl.outerWidth() - width - this.margin);\n\t\t\t\tleft = Math.max(left, viewportLeft + this.margin);\n\t\t\t}\n\t\n\t\t\tthis.el.css({\n\t\t\t\ttop: top - origin.top,\n\t\t\t\tleft: left - origin.left\n\t\t\t});\n\t\t},\n\t\n\t\n\t\t// Triggers a callback. Calls a function in the option hash of the same name.\n\t\t// Arguments beyond the first `name` are forwarded on.\n\t\t// TODO: better code reuse for this. Repeat code\n\t\ttrigger: function(name) {\n\t\t\tif (this.options[name]) {\n\t\t\t\tthis.options[name].apply(this, Array.prototype.slice.call(arguments, 1));\n\t\t\t}\n\t\t}\n\t\n\t});\n\t\n\t;;\n\t\n\t/*\n\tA cache for the left/right/top/bottom/width/height values for one or more elements.\n\tWorks with both offset (from topleft document) and position (from offsetParent).\n\t\n\toptions:\n\t- els\n\t- isHorizontal\n\t- isVertical\n\t*/\n\tvar CoordCache = FC.CoordCache = Class.extend({\n\t\n\t\tels: null, // jQuery set (assumed to be siblings)\n\t\tforcedOffsetParentEl: null, // options can override the natural offsetParent\n\t\torigin: null, // {left,top} position of offsetParent of els\n\t\tboundingRect: null, // constrain cordinates to this rectangle. {left,right,top,bottom} or null\n\t\tisHorizontal: false, // whether to query for left/right/width\n\t\tisVertical: false, // whether to query for top/bottom/height\n\t\n\t\t// arrays of coordinates (offsets from topleft of document)\n\t\tlefts: null,\n\t\trights: null,\n\t\ttops: null,\n\t\tbottoms: null,\n\t\n\t\n\t\tconstructor: function(options) {\n\t\t\tthis.els = $(options.els);\n\t\t\tthis.isHorizontal = options.isHorizontal;\n\t\t\tthis.isVertical = options.isVertical;\n\t\t\tthis.forcedOffsetParentEl = options.offsetParent ? $(options.offsetParent) : null;\n\t\t},\n\t\n\t\n\t\t// Queries the els for coordinates and stores them.\n\t\t// Call this method before using and of the get* methods below.\n\t\tbuild: function() {\n\t\t\tvar offsetParentEl = this.forcedOffsetParentEl || this.els.eq(0).offsetParent();\n\t\n\t\t\tthis.origin = offsetParentEl.offset();\n\t\t\tthis.boundingRect = this.queryBoundingRect();\n\t\n\t\t\tif (this.isHorizontal) {\n\t\t\t\tthis.buildElHorizontals();\n\t\t\t}\n\t\t\tif (this.isVertical) {\n\t\t\t\tthis.buildElVerticals();\n\t\t\t}\n\t\t},\n\t\n\t\n\t\t// Destroys all internal data about coordinates, freeing memory\n\t\tclear: function() {\n\t\t\tthis.origin = null;\n\t\t\tthis.boundingRect = null;\n\t\t\tthis.lefts = null;\n\t\t\tthis.rights = null;\n\t\t\tthis.tops = null;\n\t\t\tthis.bottoms = null;\n\t\t},\n\t\n\t\n\t\t// When called, if coord caches aren't built, builds them\n\t\tensureBuilt: function() {\n\t\t\tif (!this.origin) {\n\t\t\t\tthis.build();\n\t\t\t}\n\t\t},\n\t\n\t\n\t\t// Populates the left/right internal coordinate arrays\n\t\tbuildElHorizontals: function() {\n\t\t\tvar lefts = [];\n\t\t\tvar rights = [];\n\t\n\t\t\tthis.els.each(function(i, node) {\n\t\t\t\tvar el = $(node);\n\t\t\t\tvar left = el.offset().left;\n\t\t\t\tvar width = el.outerWidth();\n\t\n\t\t\t\tlefts.push(left);\n\t\t\t\trights.push(left + width);\n\t\t\t});\n\t\n\t\t\tthis.lefts = lefts;\n\t\t\tthis.rights = rights;\n\t\t},\n\t\n\t\n\t\t// Populates the top/bottom internal coordinate arrays\n\t\tbuildElVerticals: function() {\n\t\t\tvar tops = [];\n\t\t\tvar bottoms = [];\n\t\n\t\t\tthis.els.each(function(i, node) {\n\t\t\t\tvar el = $(node);\n\t\t\t\tvar top = el.offset().top;\n\t\t\t\tvar height = el.outerHeight();\n\t\n\t\t\t\ttops.push(top);\n\t\t\t\tbottoms.push(top + height);\n\t\t\t});\n\t\n\t\t\tthis.tops = tops;\n\t\t\tthis.bottoms = bottoms;\n\t\t},\n\t\n\t\n\t\t// Given a left offset (from document left), returns the index of the el that it horizontally intersects.\n\t\t// If no intersection is made, returns undefined.\n\t\tgetHorizontalIndex: function(leftOffset) {\n\t\t\tthis.ensureBuilt();\n\t\n\t\t\tvar lefts = this.lefts;\n\t\t\tvar rights = this.rights;\n\t\t\tvar len = lefts.length;\n\t\t\tvar i;\n\t\n\t\t\tfor (i = 0; i < len; i++) {\n\t\t\t\tif (leftOffset >= lefts[i] && leftOffset < rights[i]) {\n\t\t\t\t\treturn i;\n\t\t\t\t}\n\t\t\t}\n\t\t},\n\t\n\t\n\t\t// Given a top offset (from document top), returns the index of the el that it vertically intersects.\n\t\t// If no intersection is made, returns undefined.\n\t\tgetVerticalIndex: function(topOffset) {\n\t\t\tthis.ensureBuilt();\n\t\n\t\t\tvar tops = this.tops;\n\t\t\tvar bottoms = this.bottoms;\n\t\t\tvar len = tops.length;\n\t\t\tvar i;\n\t\n\t\t\tfor (i = 0; i < len; i++) {\n\t\t\t\tif (topOffset >= tops[i] && topOffset < bottoms[i]) {\n\t\t\t\t\treturn i;\n\t\t\t\t}\n\t\t\t}\n\t\t},\n\t\n\t\n\t\t// Gets the left offset (from document left) of the element at the given index\n\t\tgetLeftOffset: function(leftIndex) {\n\t\t\tthis.ensureBuilt();\n\t\t\treturn this.lefts[leftIndex];\n\t\t},\n\t\n\t\n\t\t// Gets the left position (from offsetParent left) of the element at the given index\n\t\tgetLeftPosition: function(leftIndex) {\n\t\t\tthis.ensureBuilt();\n\t\t\treturn this.lefts[leftIndex] - this.origin.left;\n\t\t},\n\t\n\t\n\t\t// Gets the right offset (from document left) of the element at the given index.\n\t\t// This value is NOT relative to the document's right edge, like the CSS concept of \"right\" would be.\n\t\tgetRightOffset: function(leftIndex) {\n\t\t\tthis.ensureBuilt();\n\t\t\treturn this.rights[leftIndex];\n\t\t},\n\t\n\t\n\t\t// Gets the right position (from offsetParent left) of the element at the given index.\n\t\t// This value is NOT relative to the offsetParent's right edge, like the CSS concept of \"right\" would be.\n\t\tgetRightPosition: function(leftIndex) {\n\t\t\tthis.ensureBuilt();\n\t\t\treturn this.rights[leftIndex] - this.origin.left;\n\t\t},\n\t\n\t\n\t\t// Gets the width of the element at the given index\n\t\tgetWidth: function(leftIndex) {\n\t\t\tthis.ensureBuilt();\n\t\t\treturn this.rights[leftIndex] - this.lefts[leftIndex];\n\t\t},\n\t\n\t\n\t\t// Gets the top offset (from document top) of the element at the given index\n\t\tgetTopOffset: function(topIndex) {\n\t\t\tthis.ensureBuilt();\n\t\t\treturn this.tops[topIndex];\n\t\t},\n\t\n\t\n\t\t// Gets the top position (from offsetParent top) of the element at the given position\n\t\tgetTopPosition: function(topIndex) {\n\t\t\tthis.ensureBuilt();\n\t\t\treturn this.tops[topIndex] - this.origin.top;\n\t\t},\n\t\n\t\t// Gets the bottom offset (from the document top) of the element at the given index.\n\t\t// This value is NOT relative to the offsetParent's bottom edge, like the CSS concept of \"bottom\" would be.\n\t\tgetBottomOffset: function(topIndex) {\n\t\t\tthis.ensureBuilt();\n\t\t\treturn this.bottoms[topIndex];\n\t\t},\n\t\n\t\n\t\t// Gets the bottom position (from the offsetParent top) of the element at the given index.\n\t\t// This value is NOT relative to the offsetParent's bottom edge, like the CSS concept of \"bottom\" would be.\n\t\tgetBottomPosition: function(topIndex) {\n\t\t\tthis.ensureBuilt();\n\t\t\treturn this.bottoms[topIndex] - this.origin.top;\n\t\t},\n\t\n\t\n\t\t// Gets the height of the element at the given index\n\t\tgetHeight: function(topIndex) {\n\t\t\tthis.ensureBuilt();\n\t\t\treturn this.bottoms[topIndex] - this.tops[topIndex];\n\t\t},\n\t\n\t\n\t\t// Bounding Rect\n\t\t// TODO: decouple this from CoordCache\n\t\n\t\t// Compute and return what the elements' bounding rectangle is, from the user's perspective.\n\t\t// Right now, only returns a rectangle if constrained by an overflow:scroll element.\n\t\tqueryBoundingRect: function() {\n\t\t\tvar scrollParentEl = getScrollParent(this.els.eq(0));\n\t\n\t\t\tif (!scrollParentEl.is(document)) {\n\t\t\t\treturn getClientRect(scrollParentEl);\n\t\t\t}\n\t\t},\n\t\n\t\tisPointInBounds: function(leftOffset, topOffset) {\n\t\t\treturn this.isLeftInBounds(leftOffset) && this.isTopInBounds(topOffset);\n\t\t},\n\t\n\t\tisLeftInBounds: function(leftOffset) {\n\t\t\treturn !this.boundingRect || (leftOffset >= this.boundingRect.left && leftOffset < this.boundingRect.right);\n\t\t},\n\t\n\t\tisTopInBounds: function(topOffset) {\n\t\t\treturn !this.boundingRect || (topOffset >= this.boundingRect.top && topOffset < this.boundingRect.bottom);\n\t\t}\n\t\n\t});\n\t\n\t;;\n\t\n\t/* Tracks a drag's mouse movement, firing various handlers\n\t----------------------------------------------------------------------------------------------------------------------*/\n\t// TODO: use Emitter\n\t\n\tvar DragListener = FC.DragListener = Class.extend(ListenerMixin, MouseIgnorerMixin, {\n\t\n\t\toptions: null,\n\t\n\t\t// for IE8 bug-fighting behavior\n\t\tsubjectEl: null,\n\t\tsubjectHref: null,\n\t\n\t\t// coordinates of the initial mousedown\n\t\toriginX: null,\n\t\toriginY: null,\n\t\n\t\t// the wrapping element that scrolls, or MIGHT scroll if there's overflow.\n\t\t// TODO: do this for wrappers that have overflow:hidden as well.\n\t\tscrollEl: null,\n\t\n\t\tisInteracting: false,\n\t\tisDistanceSurpassed: false,\n\t\tisDelayEnded: false,\n\t\tisDragging: false,\n\t\tisTouch: false,\n\t\n\t\tdelay: null,\n\t\tdelayTimeoutId: null,\n\t\tminDistance: null,\n\t\n\t\thandleTouchScrollProxy: null, // calls handleTouchScroll, always bound to `this`\n\t\n\t\n\t\tconstructor: function(options) {\n\t\t\tthis.options = options || {};\n\t\t\tthis.handleTouchScrollProxy = proxy(this, 'handleTouchScroll');\n\t\t\tthis.initMouseIgnoring(500);\n\t\t},\n\t\n\t\n\t\t// Interaction (high-level)\n\t\t// -----------------------------------------------------------------------------------------------------------------\n\t\n\t\n\t\tstartInteraction: function(ev, extraOptions) {\n\t\t\tvar isTouch = getEvIsTouch(ev);\n\t\n\t\t\tif (ev.type === 'mousedown') {\n\t\t\t\tif (this.isIgnoringMouse) {\n\t\t\t\t\treturn;\n\t\t\t\t}\n\t\t\t\telse if (!isPrimaryMouseButton(ev)) {\n\t\t\t\t\treturn;\n\t\t\t\t}\n\t\t\t\telse {\n\t\t\t\t\tev.preventDefault(); // prevents native selection in most browsers\n\t\t\t\t}\n\t\t\t}\n\t\n\t\t\tif (!this.isInteracting) {\n\t\n\t\t\t\t// process options\n\t\t\t\textraOptions = extraOptions || {};\n\t\t\t\tthis.delay = firstDefined(extraOptions.delay, this.options.delay, 0);\n\t\t\t\tthis.minDistance = firstDefined(extraOptions.distance, this.options.distance, 0);\n\t\t\t\tthis.subjectEl = this.options.subjectEl;\n\t\n\t\t\t\tthis.isInteracting = true;\n\t\t\t\tthis.isTouch = isTouch;\n\t\t\t\tthis.isDelayEnded = false;\n\t\t\t\tthis.isDistanceSurpassed = false;\n\t\n\t\t\t\tthis.originX = getEvX(ev);\n\t\t\t\tthis.originY = getEvY(ev);\n\t\t\t\tthis.scrollEl = getScrollParent($(ev.target));\n\t\n\t\t\t\tthis.bindHandlers();\n\t\t\t\tthis.initAutoScroll();\n\t\t\t\tthis.handleInteractionStart(ev);\n\t\t\t\tthis.startDelay(ev);\n\t\n\t\t\t\tif (!this.minDistance) {\n\t\t\t\t\tthis.handleDistanceSurpassed(ev);\n\t\t\t\t}\n\t\t\t}\n\t\t},\n\t\n\t\n\t\thandleInteractionStart: function(ev) {\n\t\t\tthis.trigger('interactionStart', ev);\n\t\t},\n\t\n\t\n\t\tendInteraction: function(ev, isCancelled) {\n\t\t\tif (this.isInteracting) {\n\t\t\t\tthis.endDrag(ev);\n\t\n\t\t\t\tif (this.delayTimeoutId) {\n\t\t\t\t\tclearTimeout(this.delayTimeoutId);\n\t\t\t\t\tthis.delayTimeoutId = null;\n\t\t\t\t}\n\t\n\t\t\t\tthis.destroyAutoScroll();\n\t\t\t\tthis.unbindHandlers();\n\t\n\t\t\t\tthis.isInteracting = false;\n\t\t\t\tthis.handleInteractionEnd(ev, isCancelled);\n\t\n\t\t\t\t// a touchstart+touchend on the same element will result in the following addition simulated events:\n\t\t\t\t// mouseover + mouseout + click\n\t\t\t\t// let's ignore these bogus events\n\t\t\t\tif (this.isTouch) {\n\t\t\t\t\tthis.tempIgnoreMouse();\n\t\t\t\t}\n\t\t\t}\n\t\t},\n\t\n\t\n\t\thandleInteractionEnd: function(ev, isCancelled) {\n\t\t\tthis.trigger('interactionEnd', ev, isCancelled || false);\n\t\t},\n\t\n\t\n\t\t// Binding To DOM\n\t\t// -----------------------------------------------------------------------------------------------------------------\n\t\n\t\n\t\tbindHandlers: function() {\n\t\t\tvar _this = this;\n\t\t\tvar touchStartIgnores = 1;\n\t\n\t\t\tif (this.isTouch) {\n\t\t\t\tthis.listenTo($(document), {\n\t\t\t\t\ttouchmove: this.handleTouchMove,\n\t\t\t\t\ttouchend: this.endInteraction,\n\t\t\t\t\ttouchcancel: this.endInteraction,\n\t\n\t\t\t\t\t// Sometimes touchend doesn't fire\n\t\t\t\t\t// (can't figure out why. touchcancel doesn't fire either. has to do with scrolling?)\n\t\t\t\t\t// If another touchstart happens, we know it's bogus, so cancel the drag.\n\t\t\t\t\t// touchend will continue to be broken until user does a shorttap/scroll, but this is best we can do.\n\t\t\t\t\ttouchstart: function(ev) {\n\t\t\t\t\t\tif (touchStartIgnores) { // bindHandlers is called from within a touchstart,\n\t\t\t\t\t\t\ttouchStartIgnores--; // and we don't want this to fire immediately, so ignore.\n\t\t\t\t\t\t}\n\t\t\t\t\t\telse {\n\t\t\t\t\t\t\t_this.endInteraction(ev, true); // isCancelled=true\n\t\t\t\t\t\t}\n\t\t\t\t\t}\n\t\t\t\t});\n\t\n\t\t\t\t// listen to ALL scroll actions on the page\n\t\t\t\tif (\n\t\t\t\t\t!bindAnyScroll(this.handleTouchScrollProxy) && // hopefully this works and short-circuits the rest\n\t\t\t\t\tthis.scrollEl // otherwise, attach a single handler to this\n\t\t\t\t) {\n\t\t\t\t\tthis.listenTo(this.scrollEl, 'scroll', this.handleTouchScroll);\n\t\t\t\t}\n\t\t\t}\n\t\t\telse {\n\t\t\t\tthis.listenTo($(document), {\n\t\t\t\t\tmousemove: this.handleMouseMove,\n\t\t\t\t\tmouseup: this.endInteraction\n\t\t\t\t});\n\t\t\t}\n\t\n\t\t\tthis.listenTo($(document), {\n\t\t\t\tselectstart: preventDefault, // don't allow selection while dragging\n\t\t\t\tcontextmenu: preventDefault // long taps would open menu on Chrome dev tools\n\t\t\t});\n\t\t},\n\t\n\t\n\t\tunbindHandlers: function() {\n\t\t\tthis.stopListeningTo($(document));\n\t\n\t\t\t// unbind scroll listening\n\t\t\tunbindAnyScroll(this.handleTouchScrollProxy);\n\t\t\tif (this.scrollEl) {\n\t\t\t\tthis.stopListeningTo(this.scrollEl, 'scroll');\n\t\t\t}\n\t\t},\n\t\n\t\n\t\t// Drag (high-level)\n\t\t// -----------------------------------------------------------------------------------------------------------------\n\t\n\t\n\t\t// extraOptions ignored if drag already started\n\t\tstartDrag: function(ev, extraOptions) {\n\t\t\tthis.startInteraction(ev, extraOptions); // ensure interaction began\n\t\n\t\t\tif (!this.isDragging) {\n\t\t\t\tthis.isDragging = true;\n\t\t\t\tthis.handleDragStart(ev);\n\t\t\t}\n\t\t},\n\t\n\t\n\t\thandleDragStart: function(ev) {\n\t\t\tthis.trigger('dragStart', ev);\n\t\t\tthis.initHrefHack();\n\t\t},\n\t\n\t\n\t\thandleMove: function(ev) {\n\t\t\tvar dx = getEvX(ev) - this.originX;\n\t\t\tvar dy = getEvY(ev) - this.originY;\n\t\t\tvar minDistance = this.minDistance;\n\t\t\tvar distanceSq; // current distance from the origin, squared\n\t\n\t\t\tif (!this.isDistanceSurpassed) {\n\t\t\t\tdistanceSq = dx * dx + dy * dy;\n\t\t\t\tif (distanceSq >= minDistance * minDistance) { // use pythagorean theorem\n\t\t\t\t\tthis.handleDistanceSurpassed(ev);\n\t\t\t\t}\n\t\t\t}\n\t\n\t\t\tif (this.isDragging) {\n\t\t\t\tthis.handleDrag(dx, dy, ev);\n\t\t\t}\n\t\t},\n\t\n\t\n\t\t// Called while the mouse is being moved and when we know a legitimate drag is taking place\n\t\thandleDrag: function(dx, dy, ev) {\n\t\t\tthis.trigger('drag', dx, dy, ev);\n\t\t\tthis.updateAutoScroll(ev); // will possibly cause scrolling\n\t\t},\n\t\n\t\n\t\tendDrag: function(ev) {\n\t\t\tif (this.isDragging) {\n\t\t\t\tthis.isDragging = false;\n\t\t\t\tthis.handleDragEnd(ev);\n\t\t\t}\n\t\t},\n\t\n\t\n\t\thandleDragEnd: function(ev) {\n\t\t\tthis.trigger('dragEnd', ev);\n\t\t\tthis.destroyHrefHack();\n\t\t},\n\t\n\t\n\t\t// Delay\n\t\t// -----------------------------------------------------------------------------------------------------------------\n\t\n\t\n\t\tstartDelay: function(initialEv) {\n\t\t\tvar _this = this;\n\t\n\t\t\tif (this.delay) {\n\t\t\t\tthis.delayTimeoutId = setTimeout(function() {\n\t\t\t\t\t_this.handleDelayEnd(initialEv);\n\t\t\t\t}, this.delay);\n\t\t\t}\n\t\t\telse {\n\t\t\t\tthis.handleDelayEnd(initialEv);\n\t\t\t}\n\t\t},\n\t\n\t\n\t\thandleDelayEnd: function(initialEv) {\n\t\t\tthis.isDelayEnded = true;\n\t\n\t\t\tif (this.isDistanceSurpassed) {\n\t\t\t\tthis.startDrag(initialEv);\n\t\t\t}\n\t\t},\n\t\n\t\n\t\t// Distance\n\t\t// -----------------------------------------------------------------------------------------------------------------\n\t\n\t\n\t\thandleDistanceSurpassed: function(ev) {\n\t\t\tthis.isDistanceSurpassed = true;\n\t\n\t\t\tif (this.isDelayEnded) {\n\t\t\t\tthis.startDrag(ev);\n\t\t\t}\n\t\t},\n\t\n\t\n\t\t// Mouse / Touch\n\t\t// -----------------------------------------------------------------------------------------------------------------\n\t\n\t\n\t\thandleTouchMove: function(ev) {\n\t\t\t// prevent inertia and touchmove-scrolling while dragging\n\t\t\tif (this.isDragging) {\n\t\t\t\tev.preventDefault();\n\t\t\t}\n\t\n\t\t\tthis.handleMove(ev);\n\t\t},\n\t\n\t\n\t\thandleMouseMove: function(ev) {\n\t\t\tthis.handleMove(ev);\n\t\t},\n\t\n\t\n\t\t// Scrolling (unrelated to auto-scroll)\n\t\t// -----------------------------------------------------------------------------------------------------------------\n\t\n\t\n\t\thandleTouchScroll: function(ev) {\n\t\t\t// if the drag is being initiated by touch, but a scroll happens before\n\t\t\t// the drag-initiating delay is over, cancel the drag\n\t\t\tif (!this.isDragging) {\n\t\t\t\tthis.endInteraction(ev, true); // isCancelled=true\n\t\t\t}\n\t\t},\n\t\n\t\n\t\t// HREF Hack\n\t\t// -----------------------------------------------------------------------------------------------------------------\n\t\n\t\n\t\tinitHrefHack: function() {\n\t\t\tvar subjectEl = this.subjectEl;\n\t\n\t\t\t// remove a mousedown'd 's href so it is not visited (IE8 bug)\n\t\t\tif ((this.subjectHref = subjectEl ? subjectEl.attr('href') : null)) {\n\t\t\t\tsubjectEl.removeAttr('href');\n\t\t\t}\n\t\t},\n\t\n\t\n\t\tdestroyHrefHack: function() {\n\t\t\tvar subjectEl = this.subjectEl;\n\t\t\tvar subjectHref = this.subjectHref;\n\t\n\t\t\t// restore a mousedown'd 's href (for IE8 bug)\n\t\t\tsetTimeout(function() { // must be outside of the click's execution\n\t\t\t\tif (subjectHref) {\n\t\t\t\t\tsubjectEl.attr('href', subjectHref);\n\t\t\t\t}\n\t\t\t}, 0);\n\t\t},\n\t\n\t\n\t\t// Utils\n\t\t// -----------------------------------------------------------------------------------------------------------------\n\t\n\t\n\t\t// Triggers a callback. Calls a function in the option hash of the same name.\n\t\t// Arguments beyond the first `name` are forwarded on.\n\t\ttrigger: function(name) {\n\t\t\tif (this.options[name]) {\n\t\t\t\tthis.options[name].apply(this, Array.prototype.slice.call(arguments, 1));\n\t\t\t}\n\t\t\t// makes _methods callable by event name. TODO: kill this\n\t\t\tif (this['_' + name]) {\n\t\t\t\tthis['_' + name].apply(this, Array.prototype.slice.call(arguments, 1));\n\t\t\t}\n\t\t}\n\t\n\t\n\t});\n\t\n\t;;\n\t/*\n\tthis.scrollEl is set in DragListener\n\t*/\n\tDragListener.mixin({\n\t\n\t\tisAutoScroll: false,\n\t\n\t\tscrollBounds: null, // { top, bottom, left, right }\n\t\tscrollTopVel: null, // pixels per second\n\t\tscrollLeftVel: null, // pixels per second\n\t\tscrollIntervalId: null, // ID of setTimeout for scrolling animation loop\n\t\n\t\t// defaults\n\t\tscrollSensitivity: 30, // pixels from edge for scrolling to start\n\t\tscrollSpeed: 200, // pixels per second, at maximum speed\n\t\tscrollIntervalMs: 50, // millisecond wait between scroll increment\n\t\n\t\n\t\tinitAutoScroll: function() {\n\t\t\tvar scrollEl = this.scrollEl;\n\t\n\t\t\tthis.isAutoScroll =\n\t\t\t\tthis.options.scroll &&\n\t\t\t\tscrollEl &&\n\t\t\t\t!scrollEl.is(window) &&\n\t\t\t\t!scrollEl.is(document);\n\t\n\t\t\tif (this.isAutoScroll) {\n\t\t\t\t// debounce makes sure rapid calls don't happen\n\t\t\t\tthis.listenTo(scrollEl, 'scroll', debounce(this.handleDebouncedScroll, 100));\n\t\t\t}\n\t\t},\n\t\n\t\n\t\tdestroyAutoScroll: function() {\n\t\t\tthis.endAutoScroll(); // kill any animation loop\n\t\n\t\t\t// remove the scroll handler if there is a scrollEl\n\t\t\tif (this.isAutoScroll) {\n\t\t\t\tthis.stopListeningTo(this.scrollEl, 'scroll'); // will probably get removed by unbindHandlers too :(\n\t\t\t}\n\t\t},\n\t\n\t\n\t\t// Computes and stores the bounding rectangle of scrollEl\n\t\tcomputeScrollBounds: function() {\n\t\t\tif (this.isAutoScroll) {\n\t\t\t\tthis.scrollBounds = getOuterRect(this.scrollEl);\n\t\t\t\t// TODO: use getClientRect in future. but prevents auto scrolling when on top of scrollbars\n\t\t\t}\n\t\t},\n\t\n\t\n\t\t// Called when the dragging is in progress and scrolling should be updated\n\t\tupdateAutoScroll: function(ev) {\n\t\t\tvar sensitivity = this.scrollSensitivity;\n\t\t\tvar bounds = this.scrollBounds;\n\t\t\tvar topCloseness, bottomCloseness;\n\t\t\tvar leftCloseness, rightCloseness;\n\t\t\tvar topVel = 0;\n\t\t\tvar leftVel = 0;\n\t\n\t\t\tif (bounds) { // only scroll if scrollEl exists\n\t\n\t\t\t\t// compute closeness to edges. valid range is from 0.0 - 1.0\n\t\t\t\ttopCloseness = (sensitivity - (getEvY(ev) - bounds.top)) / sensitivity;\n\t\t\t\tbottomCloseness = (sensitivity - (bounds.bottom - getEvY(ev))) / sensitivity;\n\t\t\t\tleftCloseness = (sensitivity - (getEvX(ev) - bounds.left)) / sensitivity;\n\t\t\t\trightCloseness = (sensitivity - (bounds.right - getEvX(ev))) / sensitivity;\n\t\n\t\t\t\t// translate vertical closeness into velocity.\n\t\t\t\t// mouse must be completely in bounds for velocity to happen.\n\t\t\t\tif (topCloseness >= 0 && topCloseness <= 1) {\n\t\t\t\t\ttopVel = topCloseness * this.scrollSpeed * -1; // negative. for scrolling up\n\t\t\t\t}\n\t\t\t\telse if (bottomCloseness >= 0 && bottomCloseness <= 1) {\n\t\t\t\t\ttopVel = bottomCloseness * this.scrollSpeed;\n\t\t\t\t}\n\t\n\t\t\t\t// translate horizontal closeness into velocity\n\t\t\t\tif (leftCloseness >= 0 && leftCloseness <= 1) {\n\t\t\t\t\tleftVel = leftCloseness * this.scrollSpeed * -1; // negative. for scrolling left\n\t\t\t\t}\n\t\t\t\telse if (rightCloseness >= 0 && rightCloseness <= 1) {\n\t\t\t\t\tleftVel = rightCloseness * this.scrollSpeed;\n\t\t\t\t}\n\t\t\t}\n\t\n\t\t\tthis.setScrollVel(topVel, leftVel);\n\t\t},\n\t\n\t\n\t\t// Sets the speed-of-scrolling for the scrollEl\n\t\tsetScrollVel: function(topVel, leftVel) {\n\t\n\t\t\tthis.scrollTopVel = topVel;\n\t\t\tthis.scrollLeftVel = leftVel;\n\t\n\t\t\tthis.constrainScrollVel(); // massages into realistic values\n\t\n\t\t\t// if there is non-zero velocity, and an animation loop hasn't already started, then START\n\t\t\tif ((this.scrollTopVel || this.scrollLeftVel) && !this.scrollIntervalId) {\n\t\t\t\tthis.scrollIntervalId = setInterval(\n\t\t\t\t\tproxy(this, 'scrollIntervalFunc'), // scope to `this`\n\t\t\t\t\tthis.scrollIntervalMs\n\t\t\t\t);\n\t\t\t}\n\t\t},\n\t\n\t\n\t\t// Forces scrollTopVel and scrollLeftVel to be zero if scrolling has already gone all the way\n\t\tconstrainScrollVel: function() {\n\t\t\tvar el = this.scrollEl;\n\t\n\t\t\tif (this.scrollTopVel < 0) { // scrolling up?\n\t\t\t\tif (el.scrollTop() <= 0) { // already scrolled all the way up?\n\t\t\t\t\tthis.scrollTopVel = 0;\n\t\t\t\t}\n\t\t\t}\n\t\t\telse if (this.scrollTopVel > 0) { // scrolling down?\n\t\t\t\tif (el.scrollTop() + el[0].clientHeight >= el[0].scrollHeight) { // already scrolled all the way down?\n\t\t\t\t\tthis.scrollTopVel = 0;\n\t\t\t\t}\n\t\t\t}\n\t\n\t\t\tif (this.scrollLeftVel < 0) { // scrolling left?\n\t\t\t\tif (el.scrollLeft() <= 0) { // already scrolled all the left?\n\t\t\t\t\tthis.scrollLeftVel = 0;\n\t\t\t\t}\n\t\t\t}\n\t\t\telse if (this.scrollLeftVel > 0) { // scrolling right?\n\t\t\t\tif (el.scrollLeft() + el[0].clientWidth >= el[0].scrollWidth) { // already scrolled all the way right?\n\t\t\t\t\tthis.scrollLeftVel = 0;\n\t\t\t\t}\n\t\t\t}\n\t\t},\n\t\n\t\n\t\t// This function gets called during every iteration of the scrolling animation loop\n\t\tscrollIntervalFunc: function() {\n\t\t\tvar el = this.scrollEl;\n\t\t\tvar frac = this.scrollIntervalMs / 1000; // considering animation frequency, what the vel should be mult'd by\n\t\n\t\t\t// change the value of scrollEl's scroll\n\t\t\tif (this.scrollTopVel) {\n\t\t\t\tel.scrollTop(el.scrollTop() + this.scrollTopVel * frac);\n\t\t\t}\n\t\t\tif (this.scrollLeftVel) {\n\t\t\t\tel.scrollLeft(el.scrollLeft() + this.scrollLeftVel * frac);\n\t\t\t}\n\t\n\t\t\tthis.constrainScrollVel(); // since the scroll values changed, recompute the velocities\n\t\n\t\t\t// if scrolled all the way, which causes the vels to be zero, stop the animation loop\n\t\t\tif (!this.scrollTopVel && !this.scrollLeftVel) {\n\t\t\t\tthis.endAutoScroll();\n\t\t\t}\n\t\t},\n\t\n\t\n\t\t// Kills any existing scrolling animation loop\n\t\tendAutoScroll: function() {\n\t\t\tif (this.scrollIntervalId) {\n\t\t\t\tclearInterval(this.scrollIntervalId);\n\t\t\t\tthis.scrollIntervalId = null;\n\t\n\t\t\t\tthis.handleScrollEnd();\n\t\t\t}\n\t\t},\n\t\n\t\n\t\t// Get called when the scrollEl is scrolled (NOTE: this is delayed via debounce)\n\t\thandleDebouncedScroll: function() {\n\t\t\t// recompute all coordinates, but *only* if this is *not* part of our scrolling animation\n\t\t\tif (!this.scrollIntervalId) {\n\t\t\t\tthis.handleScrollEnd();\n\t\t\t}\n\t\t},\n\t\n\t\n\t\t// Called when scrolling has stopped, whether through auto scroll, or the user scrolling\n\t\thandleScrollEnd: function() {\n\t\t}\n\t\n\t});\n\t;;\n\t\n\t/* Tracks mouse movements over a component and raises events about which hit the mouse is over.\n\t------------------------------------------------------------------------------------------------------------------------\n\toptions:\n\t- subjectEl\n\t- subjectCenter\n\t*/\n\t\n\tvar HitDragListener = DragListener.extend({\n\t\n\t\tcomponent: null, // converts coordinates to hits\n\t\t\t// methods: prepareHits, releaseHits, queryHit\n\t\n\t\torigHit: null, // the hit the mouse was over when listening started\n\t\thit: null, // the hit the mouse is over\n\t\tcoordAdjust: null, // delta that will be added to the mouse coordinates when computing collisions\n\t\n\t\n\t\tconstructor: function(component, options) {\n\t\t\tDragListener.call(this, options); // call the super-constructor\n\t\n\t\t\tthis.component = component;\n\t\t},\n\t\n\t\n\t\t// Called when drag listening starts (but a real drag has not necessarily began).\n\t\t// ev might be undefined if dragging was started manually.\n\t\thandleInteractionStart: function(ev) {\n\t\t\tvar subjectEl = this.subjectEl;\n\t\t\tvar subjectRect;\n\t\t\tvar origPoint;\n\t\t\tvar point;\n\t\n\t\t\tthis.computeCoords();\n\t\n\t\t\tif (ev) {\n\t\t\t\torigPoint = { left: getEvX(ev), top: getEvY(ev) };\n\t\t\t\tpoint = origPoint;\n\t\n\t\t\t\t// constrain the point to bounds of the element being dragged\n\t\t\t\tif (subjectEl) {\n\t\t\t\t\tsubjectRect = getOuterRect(subjectEl); // used for centering as well\n\t\t\t\t\tpoint = constrainPoint(point, subjectRect);\n\t\t\t\t}\n\t\n\t\t\t\tthis.origHit = this.queryHit(point.left, point.top);\n\t\n\t\t\t\t// treat the center of the subject as the collision point?\n\t\t\t\tif (subjectEl && this.options.subjectCenter) {\n\t\n\t\t\t\t\t// only consider the area the subject overlaps the hit. best for large subjects.\n\t\t\t\t\t// TODO: skip this if hit didn't supply left/right/top/bottom\n\t\t\t\t\tif (this.origHit) {\n\t\t\t\t\t\tsubjectRect = intersectRects(this.origHit, subjectRect) ||\n\t\t\t\t\t\t\tsubjectRect; // in case there is no intersection\n\t\t\t\t\t}\n\t\n\t\t\t\t\tpoint = getRectCenter(subjectRect);\n\t\t\t\t}\n\t\n\t\t\t\tthis.coordAdjust = diffPoints(point, origPoint); // point - origPoint\n\t\t\t}\n\t\t\telse {\n\t\t\t\tthis.origHit = null;\n\t\t\t\tthis.coordAdjust = null;\n\t\t\t}\n\t\n\t\t\t// call the super-method. do it after origHit has been computed\n\t\t\tDragListener.prototype.handleInteractionStart.apply(this, arguments);\n\t\t},\n\t\n\t\n\t\t// Recomputes the drag-critical positions of elements\n\t\tcomputeCoords: function() {\n\t\t\tthis.component.prepareHits();\n\t\t\tthis.computeScrollBounds(); // why is this here??????\n\t\t},\n\t\n\t\n\t\t// Called when the actual drag has started\n\t\thandleDragStart: function(ev) {\n\t\t\tvar hit;\n\t\n\t\t\tDragListener.prototype.handleDragStart.apply(this, arguments); // call the super-method\n\t\n\t\t\t// might be different from this.origHit if the min-distance is large\n\t\t\thit = this.queryHit(getEvX(ev), getEvY(ev));\n\t\n\t\t\t// report the initial hit the mouse is over\n\t\t\t// especially important if no min-distance and drag starts immediately\n\t\t\tif (hit) {\n\t\t\t\tthis.handleHitOver(hit);\n\t\t\t}\n\t\t},\n\t\n\t\n\t\t// Called when the drag moves\n\t\thandleDrag: function(dx, dy, ev) {\n\t\t\tvar hit;\n\t\n\t\t\tDragListener.prototype.handleDrag.apply(this, arguments); // call the super-method\n\t\n\t\t\thit = this.queryHit(getEvX(ev), getEvY(ev));\n\t\n\t\t\tif (!isHitsEqual(hit, this.hit)) { // a different hit than before?\n\t\t\t\tif (this.hit) {\n\t\t\t\t\tthis.handleHitOut();\n\t\t\t\t}\n\t\t\t\tif (hit) {\n\t\t\t\t\tthis.handleHitOver(hit);\n\t\t\t\t}\n\t\t\t}\n\t\t},\n\t\n\t\n\t\t// Called when dragging has been stopped\n\t\thandleDragEnd: function() {\n\t\t\tthis.handleHitDone();\n\t\t\tDragListener.prototype.handleDragEnd.apply(this, arguments); // call the super-method\n\t\t},\n\t\n\t\n\t\t// Called when a the mouse has just moved over a new hit\n\t\thandleHitOver: function(hit) {\n\t\t\tvar isOrig = isHitsEqual(hit, this.origHit);\n\t\n\t\t\tthis.hit = hit;\n\t\n\t\t\tthis.trigger('hitOver', this.hit, isOrig, this.origHit);\n\t\t},\n\t\n\t\n\t\t// Called when the mouse has just moved out of a hit\n\t\thandleHitOut: function() {\n\t\t\tif (this.hit) {\n\t\t\t\tthis.trigger('hitOut', this.hit);\n\t\t\t\tthis.handleHitDone();\n\t\t\t\tthis.hit = null;\n\t\t\t}\n\t\t},\n\t\n\t\n\t\t// Called after a hitOut. Also called before a dragStop\n\t\thandleHitDone: function() {\n\t\t\tif (this.hit) {\n\t\t\t\tthis.trigger('hitDone', this.hit);\n\t\t\t}\n\t\t},\n\t\n\t\n\t\t// Called when the interaction ends, whether there was a real drag or not\n\t\thandleInteractionEnd: function() {\n\t\t\tDragListener.prototype.handleInteractionEnd.apply(this, arguments); // call the super-method\n\t\n\t\t\tthis.origHit = null;\n\t\t\tthis.hit = null;\n\t\n\t\t\tthis.component.releaseHits();\n\t\t},\n\t\n\t\n\t\t// Called when scrolling has stopped, whether through auto scroll, or the user scrolling\n\t\thandleScrollEnd: function() {\n\t\t\tDragListener.prototype.handleScrollEnd.apply(this, arguments); // call the super-method\n\t\n\t\t\tthis.computeCoords(); // hits' absolute positions will be in new places. recompute\n\t\t},\n\t\n\t\n\t\t// Gets the hit underneath the coordinates for the given mouse event\n\t\tqueryHit: function(left, top) {\n\t\n\t\t\tif (this.coordAdjust) {\n\t\t\t\tleft += this.coordAdjust.left;\n\t\t\t\ttop += this.coordAdjust.top;\n\t\t\t}\n\t\n\t\t\treturn this.component.queryHit(left, top);\n\t\t}\n\t\n\t});\n\t\n\t\n\t// Returns `true` if the hits are identically equal. `false` otherwise. Must be from the same component.\n\t// Two null values will be considered equal, as two \"out of the component\" states are the same.\n\tfunction isHitsEqual(hit0, hit1) {\n\t\n\t\tif (!hit0 && !hit1) {\n\t\t\treturn true;\n\t\t}\n\t\n\t\tif (hit0 && hit1) {\n\t\t\treturn hit0.component === hit1.component &&\n\t\t\t\tisHitPropsWithin(hit0, hit1) &&\n\t\t\t\tisHitPropsWithin(hit1, hit0); // ensures all props are identical\n\t\t}\n\t\n\t\treturn false;\n\t}\n\t\n\t\n\t// Returns true if all of subHit's non-standard properties are within superHit\n\tfunction isHitPropsWithin(subHit, superHit) {\n\t\tfor (var propName in subHit) {\n\t\t\tif (!/^(component|left|right|top|bottom)$/.test(propName)) {\n\t\t\t\tif (subHit[propName] !== superHit[propName]) {\n\t\t\t\t\treturn false;\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\t\treturn true;\n\t}\n\t\n\t;;\n\t\n\t/* Creates a clone of an element and lets it track the mouse as it moves\n\t----------------------------------------------------------------------------------------------------------------------*/\n\t\n\tvar MouseFollower = Class.extend(ListenerMixin, {\n\t\n\t\toptions: null,\n\t\n\t\tsourceEl: null, // the element that will be cloned and made to look like it is dragging\n\t\tel: null, // the clone of `sourceEl` that will track the mouse\n\t\tparentEl: null, // the element that `el` (the clone) will be attached to\n\t\n\t\t// the initial position of el, relative to the offset parent. made to match the initial offset of sourceEl\n\t\ttop0: null,\n\t\tleft0: null,\n\t\n\t\t// the absolute coordinates of the initiating touch/mouse action\n\t\ty0: null,\n\t\tx0: null,\n\t\n\t\t// the number of pixels the mouse has moved from its initial position\n\t\ttopDelta: null,\n\t\tleftDelta: null,\n\t\n\t\tisFollowing: false,\n\t\tisHidden: false,\n\t\tisAnimating: false, // doing the revert animation?\n\t\n\t\tconstructor: function(sourceEl, options) {\n\t\t\tthis.options = options = options || {};\n\t\t\tthis.sourceEl = sourceEl;\n\t\t\tthis.parentEl = options.parentEl ? $(options.parentEl) : sourceEl.parent(); // default to sourceEl's parent\n\t\t},\n\t\n\t\n\t\t// Causes the element to start following the mouse\n\t\tstart: function(ev) {\n\t\t\tif (!this.isFollowing) {\n\t\t\t\tthis.isFollowing = true;\n\t\n\t\t\t\tthis.y0 = getEvY(ev);\n\t\t\t\tthis.x0 = getEvX(ev);\n\t\t\t\tthis.topDelta = 0;\n\t\t\t\tthis.leftDelta = 0;\n\t\n\t\t\t\tif (!this.isHidden) {\n\t\t\t\t\tthis.updatePosition();\n\t\t\t\t}\n\t\n\t\t\t\tif (getEvIsTouch(ev)) {\n\t\t\t\t\tthis.listenTo($(document), 'touchmove', this.handleMove);\n\t\t\t\t}\n\t\t\t\telse {\n\t\t\t\t\tthis.listenTo($(document), 'mousemove', this.handleMove);\n\t\t\t\t}\n\t\t\t}\n\t\t},\n\t\n\t\n\t\t// Causes the element to stop following the mouse. If shouldRevert is true, will animate back to original position.\n\t\t// `callback` gets invoked when the animation is complete. If no animation, it is invoked immediately.\n\t\tstop: function(shouldRevert, callback) {\n\t\t\tvar _this = this;\n\t\t\tvar revertDuration = this.options.revertDuration;\n\t\n\t\t\tfunction complete() { // might be called by .animate(), which might change `this` context\n\t\t\t\t_this.isAnimating = false;\n\t\t\t\t_this.removeElement();\n\t\n\t\t\t\t_this.top0 = _this.left0 = null; // reset state for future updatePosition calls\n\t\n\t\t\t\tif (callback) {\n\t\t\t\t\tcallback();\n\t\t\t\t}\n\t\t\t}\n\t\n\t\t\tif (this.isFollowing && !this.isAnimating) { // disallow more than one stop animation at a time\n\t\t\t\tthis.isFollowing = false;\n\t\n\t\t\t\tthis.stopListeningTo($(document));\n\t\n\t\t\t\tif (shouldRevert && revertDuration && !this.isHidden) { // do a revert animation?\n\t\t\t\t\tthis.isAnimating = true;\n\t\t\t\t\tthis.el.animate({\n\t\t\t\t\t\ttop: this.top0,\n\t\t\t\t\t\tleft: this.left0\n\t\t\t\t\t}, {\n\t\t\t\t\t\tduration: revertDuration,\n\t\t\t\t\t\tcomplete: complete\n\t\t\t\t\t});\n\t\t\t\t}\n\t\t\t\telse {\n\t\t\t\t\tcomplete();\n\t\t\t\t}\n\t\t\t}\n\t\t},\n\t\n\t\n\t\t// Gets the tracking element. Create it if necessary\n\t\tgetEl: function() {\n\t\t\tvar el = this.el;\n\t\n\t\t\tif (!el) {\n\t\t\t\tthis.sourceEl.width(); // hack to force IE8 to compute correct bounding box\n\t\t\t\tel = this.el = this.sourceEl.clone()\n\t\t\t\t\t.addClass(this.options.additionalClass || '')\n\t\t\t\t\t.css({\n\t\t\t\t\t\tposition: 'absolute',\n\t\t\t\t\t\tvisibility: '', // in case original element was hidden (commonly through hideEvents())\n\t\t\t\t\t\tdisplay: this.isHidden ? 'none' : '', // for when initially hidden\n\t\t\t\t\t\tmargin: 0,\n\t\t\t\t\t\tright: 'auto', // erase and set width instead\n\t\t\t\t\t\tbottom: 'auto', // erase and set height instead\n\t\t\t\t\t\twidth: this.sourceEl.width(), // explicit height in case there was a 'right' value\n\t\t\t\t\t\theight: this.sourceEl.height(), // explicit width in case there was a 'bottom' value\n\t\t\t\t\t\topacity: this.options.opacity || '',\n\t\t\t\t\t\tzIndex: this.options.zIndex\n\t\t\t\t\t});\n\t\n\t\t\t\t// we don't want long taps or any mouse interaction causing selection/menus.\n\t\t\t\t// would use preventSelection(), but that prevents selectstart, causing problems.\n\t\t\t\tel.addClass('fc-unselectable');\n\t\n\t\t\t\tel.appendTo(this.parentEl);\n\t\t\t}\n\t\n\t\t\treturn el;\n\t\t},\n\t\n\t\n\t\t// Removes the tracking element if it has already been created\n\t\tremoveElement: function() {\n\t\t\tif (this.el) {\n\t\t\t\tthis.el.remove();\n\t\t\t\tthis.el = null;\n\t\t\t}\n\t\t},\n\t\n\t\n\t\t// Update the CSS position of the tracking element\n\t\tupdatePosition: function() {\n\t\t\tvar sourceOffset;\n\t\t\tvar origin;\n\t\n\t\t\tthis.getEl(); // ensure this.el\n\t\n\t\t\t// make sure origin info was computed\n\t\t\tif (this.top0 === null) {\n\t\t\t\tthis.sourceEl.width(); // hack to force IE8 to compute correct bounding box\n\t\t\t\tsourceOffset = this.sourceEl.offset();\n\t\t\t\torigin = this.el.offsetParent().offset();\n\t\t\t\tthis.top0 = sourceOffset.top - origin.top;\n\t\t\t\tthis.left0 = sourceOffset.left - origin.left;\n\t\t\t}\n\t\n\t\t\tthis.el.css({\n\t\t\t\ttop: this.top0 + this.topDelta,\n\t\t\t\tleft: this.left0 + this.leftDelta\n\t\t\t});\n\t\t},\n\t\n\t\n\t\t// Gets called when the user moves the mouse\n\t\thandleMove: function(ev) {\n\t\t\tthis.topDelta = getEvY(ev) - this.y0;\n\t\t\tthis.leftDelta = getEvX(ev) - this.x0;\n\t\n\t\t\tif (!this.isHidden) {\n\t\t\t\tthis.updatePosition();\n\t\t\t}\n\t\t},\n\t\n\t\n\t\t// Temporarily makes the tracking element invisible. Can be called before following starts\n\t\thide: function() {\n\t\t\tif (!this.isHidden) {\n\t\t\t\tthis.isHidden = true;\n\t\t\t\tif (this.el) {\n\t\t\t\t\tthis.el.hide();\n\t\t\t\t}\n\t\t\t}\n\t\t},\n\t\n\t\n\t\t// Show the tracking element after it has been temporarily hidden\n\t\tshow: function() {\n\t\t\tif (this.isHidden) {\n\t\t\t\tthis.isHidden = false;\n\t\t\t\tthis.updatePosition();\n\t\t\t\tthis.getEl().show();\n\t\t\t}\n\t\t}\n\t\n\t});\n\t\n\t;;\n\t\n\t/* An abstract class comprised of a \"grid\" of areas that each represent a specific datetime\n\t----------------------------------------------------------------------------------------------------------------------*/\n\t\n\tvar Grid = FC.Grid = Class.extend(ListenerMixin, MouseIgnorerMixin, {\n\t\n\t\tview: null, // a View object\n\t\tisRTL: null, // shortcut to the view's isRTL option\n\t\n\t\tstart: null,\n\t\tend: null,\n\t\n\t\tel: null, // the containing element\n\t\telsByFill: null, // a hash of jQuery element sets used for rendering each fill. Keyed by fill name.\n\t\n\t\t// derived from options\n\t\teventTimeFormat: null,\n\t\tdisplayEventTime: null,\n\t\tdisplayEventEnd: null,\n\t\n\t\tminResizeDuration: null, // TODO: hack. set by subclasses. minumum event resize duration\n\t\n\t\t// if defined, holds the unit identified (ex: \"year\" or \"month\") that determines the level of granularity\n\t\t// of the date areas. if not defined, assumes to be day and time granularity.\n\t\t// TODO: port isTimeScale into same system?\n\t\tlargeUnit: null,\n\t\n\t\tdayDragListener: null,\n\t\tsegDragListener: null,\n\t\tsegResizeListener: null,\n\t\texternalDragListener: null,\n\t\n\t\n\t\tconstructor: function(view) {\n\t\t\tthis.view = view;\n\t\t\tthis.isRTL = view.opt('isRTL');\n\t\t\tthis.elsByFill = {};\n\t\n\t\t\tthis.dayDragListener = this.buildDayDragListener();\n\t\t\tthis.initMouseIgnoring();\n\t\t},\n\t\n\t\n\t\t/* Options\n\t\t------------------------------------------------------------------------------------------------------------------*/\n\t\n\t\n\t\t// Generates the format string used for event time text, if not explicitly defined by 'timeFormat'\n\t\tcomputeEventTimeFormat: function() {\n\t\t\treturn this.view.opt('smallTimeFormat');\n\t\t},\n\t\n\t\n\t\t// Determines whether events should have their end times displayed, if not explicitly defined by 'displayEventTime'.\n\t\t// Only applies to non-all-day events.\n\t\tcomputeDisplayEventTime: function() {\n\t\t\treturn true;\n\t\t},\n\t\n\t\n\t\t// Determines whether events should have their end times displayed, if not explicitly defined by 'displayEventEnd'\n\t\tcomputeDisplayEventEnd: function() {\n\t\t\treturn true;\n\t\t},\n\t\n\t\n\t\t/* Dates\n\t\t------------------------------------------------------------------------------------------------------------------*/\n\t\n\t\n\t\t// Tells the grid about what period of time to display.\n\t\t// Any date-related internal data should be generated.\n\t\tsetRange: function(range) {\n\t\t\tthis.start = range.start.clone();\n\t\t\tthis.end = range.end.clone();\n\t\n\t\t\tthis.rangeUpdated();\n\t\t\tthis.processRangeOptions();\n\t\t},\n\t\n\t\n\t\t// Called when internal variables that rely on the range should be updated\n\t\trangeUpdated: function() {\n\t\t},\n\t\n\t\n\t\t// Updates values that rely on options and also relate to range\n\t\tprocessRangeOptions: function() {\n\t\t\tvar view = this.view;\n\t\t\tvar displayEventTime;\n\t\t\tvar displayEventEnd;\n\t\n\t\t\tthis.eventTimeFormat =\n\t\t\t\tview.opt('eventTimeFormat') ||\n\t\t\t\tview.opt('timeFormat') || // deprecated\n\t\t\t\tthis.computeEventTimeFormat();\n\t\n\t\t\tdisplayEventTime = view.opt('displayEventTime');\n\t\t\tif (displayEventTime == null) {\n\t\t\t\tdisplayEventTime = this.computeDisplayEventTime(); // might be based off of range\n\t\t\t}\n\t\n\t\t\tdisplayEventEnd = view.opt('displayEventEnd');\n\t\t\tif (displayEventEnd == null) {\n\t\t\t\tdisplayEventEnd = this.computeDisplayEventEnd(); // might be based off of range\n\t\t\t}\n\t\n\t\t\tthis.displayEventTime = displayEventTime;\n\t\t\tthis.displayEventEnd = displayEventEnd;\n\t\t},\n\t\n\t\n\t\t// Converts a span (has unzoned start/end and any other grid-specific location information)\n\t\t// into an array of segments (pieces of events whose format is decided by the grid).\n\t\tspanToSegs: function(span) {\n\t\t\t// subclasses must implement\n\t\t},\n\t\n\t\n\t\t// Diffs the two dates, returning a duration, based on granularity of the grid\n\t\t// TODO: port isTimeScale into this system?\n\t\tdiffDates: function(a, b) {\n\t\t\tif (this.largeUnit) {\n\t\t\t\treturn diffByUnit(a, b, this.largeUnit);\n\t\t\t}\n\t\t\telse {\n\t\t\t\treturn diffDayTime(a, b);\n\t\t\t}\n\t\t},\n\t\n\t\n\t\t/* Hit Area\n\t\t------------------------------------------------------------------------------------------------------------------*/\n\t\n\t\n\t\t// Called before one or more queryHit calls might happen. Should prepare any cached coordinates for queryHit\n\t\tprepareHits: function() {\n\t\t},\n\t\n\t\n\t\t// Called when queryHit calls have subsided. Good place to clear any coordinate caches.\n\t\treleaseHits: function() {\n\t\t},\n\t\n\t\n\t\t// Given coordinates from the topleft of the document, return data about the date-related area underneath.\n\t\t// Can return an object with arbitrary properties (although top/right/left/bottom are encouraged).\n\t\t// Must have a `grid` property, a reference to this current grid. TODO: avoid this\n\t\t// The returned object will be processed by getHitSpan and getHitEl.\n\t\tqueryHit: function(leftOffset, topOffset) {\n\t\t},\n\t\n\t\n\t\t// Given position-level information about a date-related area within the grid,\n\t\t// should return an object with at least a start/end date. Can provide other information as well.\n\t\tgetHitSpan: function(hit) {\n\t\t},\n\t\n\t\n\t\t// Given position-level information about a date-related area within the grid,\n\t\t// should return a jQuery element that best represents it. passed to dayClick callback.\n\t\tgetHitEl: function(hit) {\n\t\t},\n\t\n\t\n\t\t/* Rendering\n\t\t------------------------------------------------------------------------------------------------------------------*/\n\t\n\t\n\t\t// Sets the container element that the grid should render inside of.\n\t\t// Does other DOM-related initializations.\n\t\tsetElement: function(el) {\n\t\t\tthis.el = el;\n\t\t\tpreventSelection(el);\n\t\n\t\t\tthis.bindDayHandler('touchstart', this.dayTouchStart);\n\t\t\tthis.bindDayHandler('mousedown', this.dayMousedown);\n\t\n\t\t\t// attach event-element-related handlers. in Grid.events\n\t\t\t// same garbage collection note as above.\n\t\t\tthis.bindSegHandlers();\n\t\n\t\t\tthis.bindGlobalHandlers();\n\t\t},\n\t\n\t\n\t\tbindDayHandler: function(name, handler) {\n\t\t\tvar _this = this;\n\t\n\t\t\t// attach a handler to the grid's root element.\n\t\t\t// jQuery will take care of unregistering them when removeElement gets called.\n\t\t\tthis.el.on(name, function(ev) {\n\t\t\t\tif (\n\t\t\t\t\t!$(ev.target).is('.fc-event-container *, .fc-more') // not an an event element, or \"more..\" link\n\t\t\t\t) {\n\t\t\t\t\treturn handler.call(_this, ev);\n\t\t\t\t}\n\t\t\t});\n\t\t},\n\t\n\t\n\t\t// Removes the grid's container element from the DOM. Undoes any other DOM-related attachments.\n\t\t// DOES NOT remove any content beforehand (doesn't clear events or call unrenderDates), unlike View\n\t\tremoveElement: function() {\n\t\t\tthis.unbindGlobalHandlers();\n\t\t\tthis.clearDragListeners();\n\t\n\t\t\tthis.el.remove();\n\t\n\t\t\t// NOTE: we don't null-out this.el for the same reasons we don't do it within View::removeElement\n\t\t},\n\t\n\t\n\t\t// Renders the basic structure of grid view before any content is rendered\n\t\trenderSkeleton: function() {\n\t\t\t// subclasses should implement\n\t\t},\n\t\n\t\n\t\t// Renders the grid's date-related content (like areas that represent days/times).\n\t\t// Assumes setRange has already been called and the skeleton has already been rendered.\n\t\trenderDates: function() {\n\t\t\t// subclasses should implement\n\t\t},\n\t\n\t\n\t\t// Unrenders the grid's date-related content\n\t\tunrenderDates: function() {\n\t\t\t// subclasses should implement\n\t\t},\n\t\n\t\n\t\t/* Handlers\n\t\t------------------------------------------------------------------------------------------------------------------*/\n\t\n\t\n\t\t// Binds DOM handlers to elements that reside outside the grid, such as the document\n\t\tbindGlobalHandlers: function() {\n\t\t\tthis.listenTo($(document), {\n\t\t\t\tdragstart: this.externalDragStart, // jqui\n\t\t\t\tsortstart: this.externalDragStart // jqui\n\t\t\t});\n\t\t},\n\t\n\t\n\t\t// Unbinds DOM handlers from elements that reside outside the grid\n\t\tunbindGlobalHandlers: function() {\n\t\t\tthis.stopListeningTo($(document));\n\t\t},\n\t\n\t\n\t\t// Process a mousedown on an element that represents a day. For day clicking and selecting.\n\t\tdayMousedown: function(ev) {\n\t\t\tif (!this.isIgnoringMouse) {\n\t\t\t\tthis.dayDragListener.startInteraction(ev, {\n\t\t\t\t\t//distance: 5, // needs more work if we want dayClick to fire correctly\n\t\t\t\t});\n\t\t\t}\n\t\t},\n\t\n\t\n\t\tdayTouchStart: function(ev) {\n\t\t\tvar view = this.view;\n\t\n\t\t\t// HACK to prevent a user's clickaway for unselecting a range or an event\n\t\t\t// from causing a dayClick.\n\t\t\tif (view.isSelected || view.selectedEvent) {\n\t\t\t\tthis.tempIgnoreMouse();\n\t\t\t}\n\t\n\t\t\tthis.dayDragListener.startInteraction(ev, {\n\t\t\t\tdelay: this.view.opt('longPressDelay')\n\t\t\t});\n\t\t},\n\t\n\t\n\t\t// Creates a listener that tracks the user's drag across day elements.\n\t\t// For day clicking and selecting.\n\t\tbuildDayDragListener: function() {\n\t\t\tvar _this = this;\n\t\t\tvar view = this.view;\n\t\t\tvar isSelectable = view.opt('selectable');\n\t\t\tvar dayClickHit; // null if invalid dayClick\n\t\t\tvar selectionSpan; // null if invalid selection\n\t\n\t\t\t// this listener tracks a mousedown on a day element, and a subsequent drag.\n\t\t\t// if the drag ends on the same day, it is a 'dayClick'.\n\t\t\t// if 'selectable' is enabled, this listener also detects selections.\n\t\t\tvar dragListener = new HitDragListener(this, {\n\t\t\t\tscroll: view.opt('dragScroll'),\n\t\t\t\tinteractionStart: function() {\n\t\t\t\t\tdayClickHit = dragListener.origHit; // for dayClick, where no dragging happens\n\t\t\t\t\tselectionSpan = null;\n\t\t\t\t},\n\t\t\t\tdragStart: function() {\n\t\t\t\t\tview.unselect(); // since we could be rendering a new selection, we want to clear any old one\n\t\t\t\t},\n\t\t\t\thitOver: function(hit, isOrig, origHit) {\n\t\t\t\t\tif (origHit) { // click needs to have started on a hit\n\t\n\t\t\t\t\t\t// if user dragged to another cell at any point, it can no longer be a dayClick\n\t\t\t\t\t\tif (!isOrig) {\n\t\t\t\t\t\t\tdayClickHit = null;\n\t\t\t\t\t\t}\n\t\n\t\t\t\t\t\tif (isSelectable) {\n\t\t\t\t\t\t\tselectionSpan = _this.computeSelection(\n\t\t\t\t\t\t\t\t_this.getHitSpan(origHit),\n\t\t\t\t\t\t\t\t_this.getHitSpan(hit)\n\t\t\t\t\t\t\t);\n\t\t\t\t\t\t\tif (selectionSpan) {\n\t\t\t\t\t\t\t\t_this.renderSelection(selectionSpan);\n\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\telse if (selectionSpan === false) {\n\t\t\t\t\t\t\t\tdisableCursor();\n\t\t\t\t\t\t\t}\n\t\t\t\t\t\t}\n\t\t\t\t\t}\n\t\t\t\t},\n\t\t\t\thitOut: function() { // called before mouse moves to a different hit OR moved out of all hits\n\t\t\t\t\tdayClickHit = null;\n\t\t\t\t\tselectionSpan = null;\n\t\t\t\t\t_this.unrenderSelection();\n\t\t\t\t},\n\t\t\t\thitDone: function() { // called after a hitOut OR before a dragEnd\n\t\t\t\t\tenableCursor();\n\t\t\t\t},\n\t\t\t\tinteractionEnd: function(ev, isCancelled) {\n\t\t\t\t\tif (!isCancelled) {\n\t\t\t\t\t\tif (\n\t\t\t\t\t\t\tdayClickHit &&\n\t\t\t\t\t\t\t!_this.isIgnoringMouse // see hack in dayTouchStart\n\t\t\t\t\t\t) {\n\t\t\t\t\t\t\tview.triggerDayClick(\n\t\t\t\t\t\t\t\t_this.getHitSpan(dayClickHit),\n\t\t\t\t\t\t\t\t_this.getHitEl(dayClickHit),\n\t\t\t\t\t\t\t\tev\n\t\t\t\t\t\t\t);\n\t\t\t\t\t\t}\n\t\t\t\t\t\tif (selectionSpan) {\n\t\t\t\t\t\t\t// the selection will already have been rendered. just report it\n\t\t\t\t\t\t\tview.reportSelection(selectionSpan, ev);\n\t\t\t\t\t\t}\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t});\n\t\n\t\t\treturn dragListener;\n\t\t},\n\t\n\t\n\t\t// Kills all in-progress dragging.\n\t\t// Useful for when public API methods that result in re-rendering are invoked during a drag.\n\t\t// Also useful for when touch devices misbehave and don't fire their touchend.\n\t\tclearDragListeners: function() {\n\t\t\tthis.dayDragListener.endInteraction();\n\t\n\t\t\tif (this.segDragListener) {\n\t\t\t\tthis.segDragListener.endInteraction(); // will clear this.segDragListener\n\t\t\t}\n\t\t\tif (this.segResizeListener) {\n\t\t\t\tthis.segResizeListener.endInteraction(); // will clear this.segResizeListener\n\t\t\t}\n\t\t\tif (this.externalDragListener) {\n\t\t\t\tthis.externalDragListener.endInteraction(); // will clear this.externalDragListener\n\t\t\t}\n\t\t},\n\t\n\t\n\t\t/* Event Helper\n\t\t------------------------------------------------------------------------------------------------------------------*/\n\t\t// TODO: should probably move this to Grid.events, like we did event dragging / resizing\n\t\n\t\n\t\t// Renders a mock event at the given event location, which contains zoned start/end properties.\n\t\t// Returns all mock event elements.\n\t\trenderEventLocationHelper: function(eventLocation, sourceSeg) {\n\t\t\tvar fakeEvent = this.fabricateHelperEvent(eventLocation, sourceSeg);\n\t\n\t\t\treturn this.renderHelper(fakeEvent, sourceSeg); // do the actual rendering\n\t\t},\n\t\n\t\n\t\t// Builds a fake event given zoned event date properties and a segment is should be inspired from.\n\t\t// The range's end can be null, in which case the mock event that is rendered will have a null end time.\n\t\t// `sourceSeg` is the internal segment object involved in the drag. If null, something external is dragging.\n\t\tfabricateHelperEvent: function(eventLocation, sourceSeg) {\n\t\t\tvar fakeEvent = sourceSeg ? createObject(sourceSeg.event) : {}; // mask the original event object if possible\n\t\n\t\t\tfakeEvent.start = eventLocation.start.clone();\n\t\t\tfakeEvent.end = eventLocation.end ? eventLocation.end.clone() : null;\n\t\t\tfakeEvent.allDay = null; // force it to be freshly computed by normalizeEventDates\n\t\t\tthis.view.calendar.normalizeEventDates(fakeEvent);\n\t\n\t\t\t// this extra className will be useful for differentiating real events from mock events in CSS\n\t\t\tfakeEvent.className = (fakeEvent.className || []).concat('fc-helper');\n\t\n\t\t\t// if something external is being dragged in, don't render a resizer\n\t\t\tif (!sourceSeg) {\n\t\t\t\tfakeEvent.editable = false;\n\t\t\t}\n\t\n\t\t\treturn fakeEvent;\n\t\t},\n\t\n\t\n\t\t// Renders a mock event. Given zoned event date properties.\n\t\t// Must return all mock event elements.\n\t\trenderHelper: function(eventLocation, sourceSeg) {\n\t\t\t// subclasses must implement\n\t\t},\n\t\n\t\n\t\t// Unrenders a mock event\n\t\tunrenderHelper: function() {\n\t\t\t// subclasses must implement\n\t\t},\n\t\n\t\n\t\t/* Selection\n\t\t------------------------------------------------------------------------------------------------------------------*/\n\t\n\t\n\t\t// Renders a visual indication of a selection. Will highlight by default but can be overridden by subclasses.\n\t\t// Given a span (unzoned start/end and other misc data)\n\t\trenderSelection: function(span) {\n\t\t\tthis.renderHighlight(span);\n\t\t},\n\t\n\t\n\t\t// Unrenders any visual indications of a selection. Will unrender a highlight by default.\n\t\tunrenderSelection: function() {\n\t\t\tthis.unrenderHighlight();\n\t\t},\n\t\n\t\n\t\t// Given the first and last date-spans of a selection, returns another date-span object.\n\t\t// Subclasses can override and provide additional data in the span object. Will be passed to renderSelection().\n\t\t// Will return false if the selection is invalid and this should be indicated to the user.\n\t\t// Will return null/undefined if a selection invalid but no error should be reported.\n\t\tcomputeSelection: function(span0, span1) {\n\t\t\tvar span = this.computeSelectionSpan(span0, span1);\n\t\n\t\t\tif (span && !this.view.calendar.isSelectionSpanAllowed(span)) {\n\t\t\t\treturn false;\n\t\t\t}\n\t\n\t\t\treturn span;\n\t\t},\n\t\n\t\n\t\t// Given two spans, must return the combination of the two.\n\t\t// TODO: do this separation of concerns (combining VS validation) for event dnd/resize too.\n\t\tcomputeSelectionSpan: function(span0, span1) {\n\t\t\tvar dates = [ span0.start, span0.end, span1.start, span1.end ];\n\t\n\t\t\tdates.sort(compareNumbers); // sorts chronologically. works with Moments\n\t\n\t\t\treturn { start: dates[0].clone(), end: dates[3].clone() };\n\t\t},\n\t\n\t\n\t\t/* Highlight\n\t\t------------------------------------------------------------------------------------------------------------------*/\n\t\n\t\n\t\t// Renders an emphasis on the given date range. Given a span (unzoned start/end and other misc data)\n\t\trenderHighlight: function(span) {\n\t\t\tthis.renderFill('highlight', this.spanToSegs(span));\n\t\t},\n\t\n\t\n\t\t// Unrenders the emphasis on a date range\n\t\tunrenderHighlight: function() {\n\t\t\tthis.unrenderFill('highlight');\n\t\t},\n\t\n\t\n\t\t// Generates an array of classNames for rendering the highlight. Used by the fill system.\n\t\thighlightSegClasses: function() {\n\t\t\treturn [ 'fc-highlight' ];\n\t\t},\n\t\n\t\n\t\t/* Business Hours\n\t\t------------------------------------------------------------------------------------------------------------------*/\n\t\n\t\n\t\trenderBusinessHours: function() {\n\t\t},\n\t\n\t\n\t\tunrenderBusinessHours: function() {\n\t\t},\n\t\n\t\n\t\t/* Now Indicator\n\t\t------------------------------------------------------------------------------------------------------------------*/\n\t\n\t\n\t\tgetNowIndicatorUnit: function() {\n\t\t},\n\t\n\t\n\t\trenderNowIndicator: function(date) {\n\t\t},\n\t\n\t\n\t\tunrenderNowIndicator: function() {\n\t\t},\n\t\n\t\n\t\t/* Fill System (highlight, background events, business hours)\n\t\t--------------------------------------------------------------------------------------------------------------------\n\t\tTODO: remove this system. like we did in TimeGrid\n\t\t*/\n\t\n\t\n\t\t// Renders a set of rectangles over the given segments of time.\n\t\t// MUST RETURN a subset of segs, the segs that were actually rendered.\n\t\t// Responsible for populating this.elsByFill. TODO: better API for expressing this requirement\n\t\trenderFill: function(type, segs) {\n\t\t\t// subclasses must implement\n\t\t},\n\t\n\t\n\t\t// Unrenders a specific type of fill that is currently rendered on the grid\n\t\tunrenderFill: function(type) {\n\t\t\tvar el = this.elsByFill[type];\n\t\n\t\t\tif (el) {\n\t\t\t\tel.remove();\n\t\t\t\tdelete this.elsByFill[type];\n\t\t\t}\n\t\t},\n\t\n\t\n\t\t// Renders and assigns an `el` property for each fill segment. Generic enough to work with different types.\n\t\t// Only returns segments that successfully rendered.\n\t\t// To be harnessed by renderFill (implemented by subclasses).\n\t\t// Analagous to renderFgSegEls.\n\t\trenderFillSegEls: function(type, segs) {\n\t\t\tvar _this = this;\n\t\t\tvar segElMethod = this[type + 'SegEl'];\n\t\t\tvar html = '';\n\t\t\tvar renderedSegs = [];\n\t\t\tvar i;\n\t\n\t\t\tif (segs.length) {\n\t\n\t\t\t\t// build a large concatenation of segment HTML\n\t\t\t\tfor (i = 0; i < segs.length; i++) {\n\t\t\t\t\thtml += this.fillSegHtml(type, segs[i]);\n\t\t\t\t}\n\t\n\t\t\t\t// Grab individual elements from the combined HTML string. Use each as the default rendering.\n\t\t\t\t// Then, compute the 'el' for each segment.\n\t\t\t\t$(html).each(function(i, node) {\n\t\t\t\t\tvar seg = segs[i];\n\t\t\t\t\tvar el = $(node);\n\t\n\t\t\t\t\t// allow custom filter methods per-type\n\t\t\t\t\tif (segElMethod) {\n\t\t\t\t\t\tel = segElMethod.call(_this, seg, el);\n\t\t\t\t\t}\n\t\n\t\t\t\t\tif (el) { // custom filters did not cancel the render\n\t\t\t\t\t\tel = $(el); // allow custom filter to return raw DOM node\n\t\n\t\t\t\t\t\t// correct element type? (would be bad if a non-TD were inserted into a table for example)\n\t\t\t\t\t\tif (el.is(_this.fillSegTag)) {\n\t\t\t\t\t\t\tseg.el = el;\n\t\t\t\t\t\t\trenderedSegs.push(seg);\n\t\t\t\t\t\t}\n\t\t\t\t\t}\n\t\t\t\t});\n\t\t\t}\n\t\n\t\t\treturn renderedSegs;\n\t\t},\n\t\n\t\n\t\tfillSegTag: 'div', // subclasses can override\n\t\n\t\n\t\t// Builds the HTML needed for one fill segment. Generic enough to work with different types.\n\t\tfillSegHtml: function(type, seg) {\n\t\n\t\t\t// custom hooks per-type\n\t\t\tvar classesMethod = this[type + 'SegClasses'];\n\t\t\tvar cssMethod = this[type + 'SegCss'];\n\t\n\t\t\tvar classes = classesMethod ? classesMethod.call(this, seg) : [];\n\t\t\tvar css = cssToStr(cssMethod ? cssMethod.call(this, seg) : {});\n\t\n\t\t\treturn '<' + this.fillSegTag +\n\t\t\t\t(classes.length ? ' class=\"' + classes.join(' ') + '\"' : '') +\n\t\t\t\t(css ? ' style=\"' + css + '\"' : '') +\n\t\t\t\t' />';\n\t\t},\n\t\n\t\n\t\n\t\t/* Generic rendering utilities for subclasses\n\t\t------------------------------------------------------------------------------------------------------------------*/\n\t\n\t\n\t\t// Computes HTML classNames for a single-day element\n\t\tgetDayClasses: function(date) {\n\t\t\tvar view = this.view;\n\t\t\tvar today = view.calendar.getNow();\n\t\t\tvar classes = [ 'fc-' + dayIDs[date.day()] ];\n\t\n\t\t\tif (\n\t\t\t\tview.intervalDuration.as('months') == 1 &&\n\t\t\t\tdate.month() != view.intervalStart.month()\n\t\t\t) {\n\t\t\t\tclasses.push('fc-other-month');\n\t\t\t}\n\t\n\t\t\tif (date.isSame(today, 'day')) {\n\t\t\t\tclasses.push(\n\t\t\t\t\t'fc-today',\n\t\t\t\t\tview.highlightStateClass\n\t\t\t\t);\n\t\t\t}\n\t\t\telse if (date < today) {\n\t\t\t\tclasses.push('fc-past');\n\t\t\t}\n\t\t\telse {\n\t\t\t\tclasses.push('fc-future');\n\t\t\t}\n\t\n\t\t\treturn classes;\n\t\t}\n\t\n\t});\n\t\n\t;;\n\t\n\t/* Event-rendering and event-interaction methods for the abstract Grid class\n\t----------------------------------------------------------------------------------------------------------------------*/\n\t\n\tGrid.mixin({\n\t\n\t\tmousedOverSeg: null, // the segment object the user's mouse is over. null if over nothing\n\t\tisDraggingSeg: false, // is a segment being dragged? boolean\n\t\tisResizingSeg: false, // is a segment being resized? boolean\n\t\tisDraggingExternal: false, // jqui-dragging an external element? boolean\n\t\tsegs: null, // the *event* segments currently rendered in the grid. TODO: rename to `eventSegs`\n\t\n\t\n\t\t// Renders the given events onto the grid\n\t\trenderEvents: function(events) {\n\t\t\tvar bgEvents = [];\n\t\t\tvar fgEvents = [];\n\t\t\tvar i;\n\t\n\t\t\tfor (i = 0; i < events.length; i++) {\n\t\t\t\t(isBgEvent(events[i]) ? bgEvents : fgEvents).push(events[i]);\n\t\t\t}\n\t\n\t\t\tthis.segs = [].concat( // record all segs\n\t\t\t\tthis.renderBgEvents(bgEvents),\n\t\t\t\tthis.renderFgEvents(fgEvents)\n\t\t\t);\n\t\t},\n\t\n\t\n\t\trenderBgEvents: function(events) {\n\t\t\tvar segs = this.eventsToSegs(events);\n\t\n\t\t\t// renderBgSegs might return a subset of segs, segs that were actually rendered\n\t\t\treturn this.renderBgSegs(segs) || segs;\n\t\t},\n\t\n\t\n\t\trenderFgEvents: function(events) {\n\t\t\tvar segs = this.eventsToSegs(events);\n\t\n\t\t\t// renderFgSegs might return a subset of segs, segs that were actually rendered\n\t\t\treturn this.renderFgSegs(segs) || segs;\n\t\t},\n\t\n\t\n\t\t// Unrenders all events currently rendered on the grid\n\t\tunrenderEvents: function() {\n\t\t\tthis.handleSegMouseout(); // trigger an eventMouseout if user's mouse is over an event\n\t\t\tthis.clearDragListeners();\n\t\n\t\t\tthis.unrenderFgSegs();\n\t\t\tthis.unrenderBgSegs();\n\t\n\t\t\tthis.segs = null;\n\t\t},\n\t\n\t\n\t\t// Retrieves all rendered segment objects currently rendered on the grid\n\t\tgetEventSegs: function() {\n\t\t\treturn this.segs || [];\n\t\t},\n\t\n\t\n\t\t/* Foreground Segment Rendering\n\t\t------------------------------------------------------------------------------------------------------------------*/\n\t\n\t\n\t\t// Renders foreground event segments onto the grid. May return a subset of segs that were rendered.\n\t\trenderFgSegs: function(segs) {\n\t\t\t// subclasses must implement\n\t\t},\n\t\n\t\n\t\t// Unrenders all currently rendered foreground segments\n\t\tunrenderFgSegs: function() {\n\t\t\t// subclasses must implement\n\t\t},\n\t\n\t\n\t\t// Renders and assigns an `el` property for each foreground event segment.\n\t\t// Only returns segments that successfully rendered.\n\t\t// A utility that subclasses may use.\n\t\trenderFgSegEls: function(segs, disableResizing) {\n\t\t\tvar view = this.view;\n\t\t\tvar html = '';\n\t\t\tvar renderedSegs = [];\n\t\t\tvar i;\n\t\n\t\t\tif (segs.length) { // don't build an empty html string\n\t\n\t\t\t\t// build a large concatenation of event segment HTML\n\t\t\t\tfor (i = 0; i < segs.length; i++) {\n\t\t\t\t\thtml += this.fgSegHtml(segs[i], disableResizing);\n\t\t\t\t}\n\t\n\t\t\t\t// Grab individual elements from the combined HTML string. Use each as the default rendering.\n\t\t\t\t// Then, compute the 'el' for each segment. An el might be null if the eventRender callback returned false.\n\t\t\t\t$(html).each(function(i, node) {\n\t\t\t\t\tvar seg = segs[i];\n\t\t\t\t\tvar el = view.resolveEventEl(seg.event, $(node));\n\t\n\t\t\t\t\tif (el) {\n\t\t\t\t\t\tel.data('fc-seg', seg); // used by handlers\n\t\t\t\t\t\tseg.el = el;\n\t\t\t\t\t\trenderedSegs.push(seg);\n\t\t\t\t\t}\n\t\t\t\t});\n\t\t\t}\n\t\n\t\t\treturn renderedSegs;\n\t\t},\n\t\n\t\n\t\t// Generates the HTML for the default rendering of a foreground event segment. Used by renderFgSegEls()\n\t\tfgSegHtml: function(seg, disableResizing) {\n\t\t\t// subclasses should implement\n\t\t},\n\t\n\t\n\t\t/* Background Segment Rendering\n\t\t------------------------------------------------------------------------------------------------------------------*/\n\t\n\t\n\t\t// Renders the given background event segments onto the grid.\n\t\t// Returns a subset of the segs that were actually rendered.\n\t\trenderBgSegs: function(segs) {\n\t\t\treturn this.renderFill('bgEvent', segs);\n\t\t},\n\t\n\t\n\t\t// Unrenders all the currently rendered background event segments\n\t\tunrenderBgSegs: function() {\n\t\t\tthis.unrenderFill('bgEvent');\n\t\t},\n\t\n\t\n\t\t// Renders a background event element, given the default rendering. Called by the fill system.\n\t\tbgEventSegEl: function(seg, el) {\n\t\t\treturn this.view.resolveEventEl(seg.event, el); // will filter through eventRender\n\t\t},\n\t\n\t\n\t\t// Generates an array of classNames to be used for the default rendering of a background event.\n\t\t// Called by fillSegHtml.\n\t\tbgEventSegClasses: function(seg) {\n\t\t\tvar event = seg.event;\n\t\t\tvar source = event.source || {};\n\t\n\t\t\treturn [ 'fc-bgevent' ].concat(\n\t\t\t\tevent.className,\n\t\t\t\tsource.className || []\n\t\t\t);\n\t\t},\n\t\n\t\n\t\t// Generates a semicolon-separated CSS string to be used for the default rendering of a background event.\n\t\t// Called by fillSegHtml.\n\t\tbgEventSegCss: function(seg) {\n\t\t\treturn {\n\t\t\t\t'background-color': this.getSegSkinCss(seg)['background-color']\n\t\t\t};\n\t\t},\n\t\n\t\n\t\t// Generates an array of classNames to be used for the rendering business hours overlay. Called by the fill system.\n\t\t// Called by fillSegHtml.\n\t\tbusinessHoursSegClasses: function(seg) {\n\t\t\treturn [ 'fc-nonbusiness', 'fc-bgevent' ];\n\t\t},\n\t\n\t\n\t\t/* Business Hours\n\t\t------------------------------------------------------------------------------------------------------------------*/\n\t\n\t\n\t\t// Compute business hour segs for the grid's current date range.\n\t\t// Caller must ask if whole-day business hours are needed.\n\t\tbuildBusinessHourSegs: function(wholeDay) {\n\t\t\tvar events = this.view.calendar.getCurrentBusinessHourEvents(wholeDay);\n\t\n\t\t\t// HACK. Eventually refactor business hours \"events\" system.\n\t\t\t// If no events are given, but businessHours is activated, this means the entire visible range should be\n\t\t\t// marked as *not* business-hours, via inverse-background rendering.\n\t\t\tif (\n\t\t\t\t!events.length &&\n\t\t\t\tthis.view.calendar.options.businessHours // don't access view option. doesn't update with dynamic options\n\t\t\t) {\n\t\t\t\tevents = [\n\t\t\t\t\t$.extend({}, BUSINESS_HOUR_EVENT_DEFAULTS, {\n\t\t\t\t\t\tstart: this.view.end, // guaranteed out-of-range\n\t\t\t\t\t\tend: this.view.end, // \"\n\t\t\t\t\t\tdow: null\n\t\t\t\t\t})\n\t\t\t\t];\n\t\t\t}\n\t\n\t\t\treturn this.eventsToSegs(events);\n\t\t},\n\t\n\t\n\t\t/* Handlers\n\t\t------------------------------------------------------------------------------------------------------------------*/\n\t\n\t\n\t\t// Attaches event-element-related handlers for *all* rendered event segments of the view.\n\t\tbindSegHandlers: function() {\n\t\t\tthis.bindSegHandlersToEl(this.el);\n\t\t},\n\t\n\t\n\t\t// Attaches event-element-related handlers to an arbitrary container element. leverages bubbling.\n\t\tbindSegHandlersToEl: function(el) {\n\t\t\tthis.bindSegHandlerToEl(el, 'touchstart', this.handleSegTouchStart);\n\t\t\tthis.bindSegHandlerToEl(el, 'touchend', this.handleSegTouchEnd);\n\t\t\tthis.bindSegHandlerToEl(el, 'mouseenter', this.handleSegMouseover);\n\t\t\tthis.bindSegHandlerToEl(el, 'mouseleave', this.handleSegMouseout);\n\t\t\tthis.bindSegHandlerToEl(el, 'mousedown', this.handleSegMousedown);\n\t\t\tthis.bindSegHandlerToEl(el, 'click', this.handleSegClick);\n\t\t},\n\t\n\t\n\t\t// Executes a handler for any a user-interaction on a segment.\n\t\t// Handler gets called with (seg, ev), and with the `this` context of the Grid\n\t\tbindSegHandlerToEl: function(el, name, handler) {\n\t\t\tvar _this = this;\n\t\n\t\t\tel.on(name, '.fc-event-container > *', function(ev) {\n\t\t\t\tvar seg = $(this).data('fc-seg'); // grab segment data. put there by View::renderEvents\n\t\n\t\t\t\t// only call the handlers if there is not a drag/resize in progress\n\t\t\t\tif (seg && !_this.isDraggingSeg && !_this.isResizingSeg) {\n\t\t\t\t\treturn handler.call(_this, seg, ev); // context will be the Grid\n\t\t\t\t}\n\t\t\t});\n\t\t},\n\t\n\t\n\t\thandleSegClick: function(seg, ev) {\n\t\t\treturn this.view.trigger('eventClick', seg.el[0], seg.event, ev); // can return `false` to cancel\n\t\t},\n\t\n\t\n\t\t// Updates internal state and triggers handlers for when an event element is moused over\n\t\thandleSegMouseover: function(seg, ev) {\n\t\t\tif (\n\t\t\t\t!this.isIgnoringMouse &&\n\t\t\t\t!this.mousedOverSeg\n\t\t\t) {\n\t\t\t\tthis.mousedOverSeg = seg;\n\t\t\t\tseg.el.addClass('fc-allow-mouse-resize');\n\t\t\t\tthis.view.trigger('eventMouseover', seg.el[0], seg.event, ev);\n\t\t\t}\n\t\t},\n\t\n\t\n\t\t// Updates internal state and triggers handlers for when an event element is moused out.\n\t\t// Can be given no arguments, in which case it will mouseout the segment that was previously moused over.\n\t\thandleSegMouseout: function(seg, ev) {\n\t\t\tev = ev || {}; // if given no args, make a mock mouse event\n\t\n\t\t\tif (this.mousedOverSeg) {\n\t\t\t\tseg = seg || this.mousedOverSeg; // if given no args, use the currently moused-over segment\n\t\t\t\tthis.mousedOverSeg = null;\n\t\t\t\tseg.el.removeClass('fc-allow-mouse-resize');\n\t\t\t\tthis.view.trigger('eventMouseout', seg.el[0], seg.event, ev);\n\t\t\t}\n\t\t},\n\t\n\t\n\t\thandleSegMousedown: function(seg, ev) {\n\t\t\tvar isResizing = this.startSegResize(seg, ev, { distance: 5 });\n\t\n\t\t\tif (!isResizing && this.view.isEventDraggable(seg.event)) {\n\t\t\t\tthis.buildSegDragListener(seg)\n\t\t\t\t\t.startInteraction(ev, {\n\t\t\t\t\t\tdistance: 5\n\t\t\t\t\t});\n\t\t\t}\n\t\t},\n\t\n\t\n\t\thandleSegTouchStart: function(seg, ev) {\n\t\t\tvar view = this.view;\n\t\t\tvar event = seg.event;\n\t\t\tvar isSelected = view.isEventSelected(event);\n\t\t\tvar isDraggable = view.isEventDraggable(event);\n\t\t\tvar isResizable = view.isEventResizable(event);\n\t\t\tvar isResizing = false;\n\t\t\tvar dragListener;\n\t\n\t\t\tif (isSelected && isResizable) {\n\t\t\t\t// only allow resizing of the event is selected\n\t\t\t\tisResizing = this.startSegResize(seg, ev);\n\t\t\t}\n\t\n\t\t\tif (!isResizing && (isDraggable || isResizable)) { // allowed to be selected?\n\t\n\t\t\t\tdragListener = isDraggable ?\n\t\t\t\t\tthis.buildSegDragListener(seg) :\n\t\t\t\t\tthis.buildSegSelectListener(seg); // seg isn't draggable, but still needs to be selected\n\t\n\t\t\t\tdragListener.startInteraction(ev, { // won't start if already started\n\t\t\t\t\tdelay: isSelected ? 0 : this.view.opt('longPressDelay') // do delay if not already selected\n\t\t\t\t});\n\t\t\t}\n\t\n\t\t\t// a long tap simulates a mouseover. ignore this bogus mouseover.\n\t\t\tthis.tempIgnoreMouse();\n\t\t},\n\t\n\t\n\t\thandleSegTouchEnd: function(seg, ev) {\n\t\t\t// touchstart+touchend = click, which simulates a mouseover.\n\t\t\t// ignore this bogus mouseover.\n\t\t\tthis.tempIgnoreMouse();\n\t\t},\n\t\n\t\n\t\t// returns boolean whether resizing actually started or not.\n\t\t// assumes the seg allows resizing.\n\t\t// `dragOptions` are optional.\n\t\tstartSegResize: function(seg, ev, dragOptions) {\n\t\t\tif ($(ev.target).is('.fc-resizer')) {\n\t\t\t\tthis.buildSegResizeListener(seg, $(ev.target).is('.fc-start-resizer'))\n\t\t\t\t\t.startInteraction(ev, dragOptions);\n\t\t\t\treturn true;\n\t\t\t}\n\t\t\treturn false;\n\t\t},\n\t\n\t\n\t\n\t\t/* Event Dragging\n\t\t------------------------------------------------------------------------------------------------------------------*/\n\t\n\t\n\t\t// Builds a listener that will track user-dragging on an event segment.\n\t\t// Generic enough to work with any type of Grid.\n\t\t// Has side effect of setting/unsetting `segDragListener`\n\t\tbuildSegDragListener: function(seg) {\n\t\t\tvar _this = this;\n\t\t\tvar view = this.view;\n\t\t\tvar calendar = view.calendar;\n\t\t\tvar el = seg.el;\n\t\t\tvar event = seg.event;\n\t\t\tvar isDragging;\n\t\t\tvar mouseFollower; // A clone of the original element that will move with the mouse\n\t\t\tvar dropLocation; // zoned event date properties\n\t\n\t\t\tif (this.segDragListener) {\n\t\t\t\treturn this.segDragListener;\n\t\t\t}\n\t\n\t\t\t// Tracks mouse movement over the *view's* coordinate map. Allows dragging and dropping between subcomponents\n\t\t\t// of the view.\n\t\t\tvar dragListener = this.segDragListener = new HitDragListener(view, {\n\t\t\t\tscroll: view.opt('dragScroll'),\n\t\t\t\tsubjectEl: el,\n\t\t\t\tsubjectCenter: true,\n\t\t\t\tinteractionStart: function(ev) {\n\t\t\t\t\tseg.component = _this; // for renderDrag\n\t\t\t\t\tisDragging = false;\n\t\t\t\t\tmouseFollower = new MouseFollower(seg.el, {\n\t\t\t\t\t\tadditionalClass: 'fc-dragging',\n\t\t\t\t\t\tparentEl: view.el,\n\t\t\t\t\t\topacity: dragListener.isTouch ? null : view.opt('dragOpacity'),\n\t\t\t\t\t\trevertDuration: view.opt('dragRevertDuration'),\n\t\t\t\t\t\tzIndex: 2 // one above the .fc-view\n\t\t\t\t\t});\n\t\t\t\t\tmouseFollower.hide(); // don't show until we know this is a real drag\n\t\t\t\t\tmouseFollower.start(ev);\n\t\t\t\t},\n\t\t\t\tdragStart: function(ev) {\n\t\t\t\t\tif (dragListener.isTouch && !view.isEventSelected(event)) {\n\t\t\t\t\t\t// if not previously selected, will fire after a delay. then, select the event\n\t\t\t\t\t\tview.selectEvent(event);\n\t\t\t\t\t}\n\t\t\t\t\tisDragging = true;\n\t\t\t\t\t_this.handleSegMouseout(seg, ev); // ensure a mouseout on the manipulated event has been reported\n\t\t\t\t\t_this.segDragStart(seg, ev);\n\t\t\t\t\tview.hideEvent(event); // hide all event segments. our mouseFollower will take over\n\t\t\t\t},\n\t\t\t\thitOver: function(hit, isOrig, origHit) {\n\t\t\t\t\tvar dragHelperEls;\n\t\n\t\t\t\t\t// starting hit could be forced (DayGrid.limit)\n\t\t\t\t\tif (seg.hit) {\n\t\t\t\t\t\torigHit = seg.hit;\n\t\t\t\t\t}\n\t\n\t\t\t\t\t// since we are querying the parent view, might not belong to this grid\n\t\t\t\t\tdropLocation = _this.computeEventDrop(\n\t\t\t\t\t\torigHit.component.getHitSpan(origHit),\n\t\t\t\t\t\thit.component.getHitSpan(hit),\n\t\t\t\t\t\tevent\n\t\t\t\t\t);\n\t\n\t\t\t\t\tif (dropLocation && !calendar.isEventSpanAllowed(_this.eventToSpan(dropLocation), event)) {\n\t\t\t\t\t\tdisableCursor();\n\t\t\t\t\t\tdropLocation = null;\n\t\t\t\t\t}\n\t\n\t\t\t\t\t// if a valid drop location, have the subclass render a visual indication\n\t\t\t\t\tif (dropLocation && (dragHelperEls = view.renderDrag(dropLocation, seg))) {\n\t\n\t\t\t\t\t\tdragHelperEls.addClass('fc-dragging');\n\t\t\t\t\t\tif (!dragListener.isTouch) {\n\t\t\t\t\t\t\t_this.applyDragOpacity(dragHelperEls);\n\t\t\t\t\t\t}\n\t\n\t\t\t\t\t\tmouseFollower.hide(); // if the subclass is already using a mock event \"helper\", hide our own\n\t\t\t\t\t}\n\t\t\t\t\telse {\n\t\t\t\t\t\tmouseFollower.show(); // otherwise, have the helper follow the mouse (no snapping)\n\t\t\t\t\t}\n\t\n\t\t\t\t\tif (isOrig) {\n\t\t\t\t\t\tdropLocation = null; // needs to have moved hits to be a valid drop\n\t\t\t\t\t}\n\t\t\t\t},\n\t\t\t\thitOut: function() { // called before mouse moves to a different hit OR moved out of all hits\n\t\t\t\t\tview.unrenderDrag(); // unrender whatever was done in renderDrag\n\t\t\t\t\tmouseFollower.show(); // show in case we are moving out of all hits\n\t\t\t\t\tdropLocation = null;\n\t\t\t\t},\n\t\t\t\thitDone: function() { // Called after a hitOut OR before a dragEnd\n\t\t\t\t\tenableCursor();\n\t\t\t\t},\n\t\t\t\tinteractionEnd: function(ev) {\n\t\t\t\t\tdelete seg.component; // prevent side effects\n\t\n\t\t\t\t\t// do revert animation if hasn't changed. calls a callback when finished (whether animation or not)\n\t\t\t\t\tmouseFollower.stop(!dropLocation, function() {\n\t\t\t\t\t\tif (isDragging) {\n\t\t\t\t\t\t\tview.unrenderDrag();\n\t\t\t\t\t\t\tview.showEvent(event);\n\t\t\t\t\t\t\t_this.segDragStop(seg, ev);\n\t\t\t\t\t\t}\n\t\t\t\t\t\tif (dropLocation) {\n\t\t\t\t\t\t\tview.reportEventDrop(event, dropLocation, this.largeUnit, el, ev);\n\t\t\t\t\t\t}\n\t\t\t\t\t});\n\t\t\t\t\t_this.segDragListener = null;\n\t\t\t\t}\n\t\t\t});\n\t\n\t\t\treturn dragListener;\n\t\t},\n\t\n\t\n\t\t// seg isn't draggable, but let's use a generic DragListener\n\t\t// simply for the delay, so it can be selected.\n\t\t// Has side effect of setting/unsetting `segDragListener`\n\t\tbuildSegSelectListener: function(seg) {\n\t\t\tvar _this = this;\n\t\t\tvar view = this.view;\n\t\t\tvar event = seg.event;\n\t\n\t\t\tif (this.segDragListener) {\n\t\t\t\treturn this.segDragListener;\n\t\t\t}\n\t\n\t\t\tvar dragListener = this.segDragListener = new DragListener({\n\t\t\t\tdragStart: function(ev) {\n\t\t\t\t\tif (dragListener.isTouch && !view.isEventSelected(event)) {\n\t\t\t\t\t\t// if not previously selected, will fire after a delay. then, select the event\n\t\t\t\t\t\tview.selectEvent(event);\n\t\t\t\t\t}\n\t\t\t\t},\n\t\t\t\tinteractionEnd: function(ev) {\n\t\t\t\t\t_this.segDragListener = null;\n\t\t\t\t}\n\t\t\t});\n\t\n\t\t\treturn dragListener;\n\t\t},\n\t\n\t\n\t\t// Called before event segment dragging starts\n\t\tsegDragStart: function(seg, ev) {\n\t\t\tthis.isDraggingSeg = true;\n\t\t\tthis.view.trigger('eventDragStart', seg.el[0], seg.event, ev, {}); // last argument is jqui dummy\n\t\t},\n\t\n\t\n\t\t// Called after event segment dragging stops\n\t\tsegDragStop: function(seg, ev) {\n\t\t\tthis.isDraggingSeg = false;\n\t\t\tthis.view.trigger('eventDragStop', seg.el[0], seg.event, ev, {}); // last argument is jqui dummy\n\t\t},\n\t\n\t\n\t\t// Given the spans an event drag began, and the span event was dropped, calculates the new zoned start/end/allDay\n\t\t// values for the event. Subclasses may override and set additional properties to be used by renderDrag.\n\t\t// A falsy returned value indicates an invalid drop.\n\t\t// DOES NOT consider overlap/constraint.\n\t\tcomputeEventDrop: function(startSpan, endSpan, event) {\n\t\t\tvar calendar = this.view.calendar;\n\t\t\tvar dragStart = startSpan.start;\n\t\t\tvar dragEnd = endSpan.start;\n\t\t\tvar delta;\n\t\t\tvar dropLocation; // zoned event date properties\n\t\n\t\t\tif (dragStart.hasTime() === dragEnd.hasTime()) {\n\t\t\t\tdelta = this.diffDates(dragEnd, dragStart);\n\t\n\t\t\t\t// if an all-day event was in a timed area and it was dragged to a different time,\n\t\t\t\t// guarantee an end and adjust start/end to have times\n\t\t\t\tif (event.allDay && durationHasTime(delta)) {\n\t\t\t\t\tdropLocation = {\n\t\t\t\t\t\tstart: event.start.clone(),\n\t\t\t\t\t\tend: calendar.getEventEnd(event), // will be an ambig day\n\t\t\t\t\t\tallDay: false // for normalizeEventTimes\n\t\t\t\t\t};\n\t\t\t\t\tcalendar.normalizeEventTimes(dropLocation);\n\t\t\t\t}\n\t\t\t\t// othewise, work off existing values\n\t\t\t\telse {\n\t\t\t\t\tdropLocation = {\n\t\t\t\t\t\tstart: event.start.clone(),\n\t\t\t\t\t\tend: event.end ? event.end.clone() : null,\n\t\t\t\t\t\tallDay: event.allDay // keep it the same\n\t\t\t\t\t};\n\t\t\t\t}\n\t\n\t\t\t\tdropLocation.start.add(delta);\n\t\t\t\tif (dropLocation.end) {\n\t\t\t\t\tdropLocation.end.add(delta);\n\t\t\t\t}\n\t\t\t}\n\t\t\telse {\n\t\t\t\t// if switching from day <-> timed, start should be reset to the dropped date, and the end cleared\n\t\t\t\tdropLocation = {\n\t\t\t\t\tstart: dragEnd.clone(),\n\t\t\t\t\tend: null, // end should be cleared\n\t\t\t\t\tallDay: !dragEnd.hasTime()\n\t\t\t\t};\n\t\t\t}\n\t\n\t\t\treturn dropLocation;\n\t\t},\n\t\n\t\n\t\t// Utility for apply dragOpacity to a jQuery set\n\t\tapplyDragOpacity: function(els) {\n\t\t\tvar opacity = this.view.opt('dragOpacity');\n\t\n\t\t\tif (opacity != null) {\n\t\t\t\tels.each(function(i, node) {\n\t\t\t\t\t// Don't use jQuery (will set an IE filter), do it the old fashioned way.\n\t\t\t\t\t// In IE8, a helper element will disappears if there's a filter.\n\t\t\t\t\tnode.style.opacity = opacity;\n\t\t\t\t});\n\t\t\t}\n\t\t},\n\t\n\t\n\t\t/* External Element Dragging\n\t\t------------------------------------------------------------------------------------------------------------------*/\n\t\n\t\n\t\t// Called when a jQuery UI drag is initiated anywhere in the DOM\n\t\texternalDragStart: function(ev, ui) {\n\t\t\tvar view = this.view;\n\t\t\tvar el;\n\t\t\tvar accept;\n\t\n\t\t\tif (view.opt('droppable')) { // only listen if this setting is on\n\t\t\t\tel = $((ui ? ui.item : null) || ev.target);\n\t\n\t\t\t\t// Test that the dragged element passes the dropAccept selector or filter function.\n\t\t\t\t// FYI, the default is \"*\" (matches all)\n\t\t\t\taccept = view.opt('dropAccept');\n\t\t\t\tif ($.isFunction(accept) ? accept.call(el[0], el) : el.is(accept)) {\n\t\t\t\t\tif (!this.isDraggingExternal) { // prevent double-listening if fired twice\n\t\t\t\t\t\tthis.listenToExternalDrag(el, ev, ui);\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t}\n\t\t},\n\t\n\t\n\t\t// Called when a jQuery UI drag starts and it needs to be monitored for dropping\n\t\tlistenToExternalDrag: function(el, ev, ui) {\n\t\t\tvar _this = this;\n\t\t\tvar calendar = this.view.calendar;\n\t\t\tvar meta = getDraggedElMeta(el); // extra data about event drop, including possible event to create\n\t\t\tvar dropLocation; // a null value signals an unsuccessful drag\n\t\n\t\t\t// listener that tracks mouse movement over date-associated pixel regions\n\t\t\tvar dragListener = _this.externalDragListener = new HitDragListener(this, {\n\t\t\t\tinteractionStart: function() {\n\t\t\t\t\t_this.isDraggingExternal = true;\n\t\t\t\t},\n\t\t\t\thitOver: function(hit) {\n\t\t\t\t\tdropLocation = _this.computeExternalDrop(\n\t\t\t\t\t\thit.component.getHitSpan(hit), // since we are querying the parent view, might not belong to this grid\n\t\t\t\t\t\tmeta\n\t\t\t\t\t);\n\t\n\t\t\t\t\tif ( // invalid hit?\n\t\t\t\t\t\tdropLocation &&\n\t\t\t\t\t\t!calendar.isExternalSpanAllowed(_this.eventToSpan(dropLocation), dropLocation, meta.eventProps)\n\t\t\t\t\t) {\n\t\t\t\t\t\tdisableCursor();\n\t\t\t\t\t\tdropLocation = null;\n\t\t\t\t\t}\n\t\n\t\t\t\t\tif (dropLocation) {\n\t\t\t\t\t\t_this.renderDrag(dropLocation); // called without a seg parameter\n\t\t\t\t\t}\n\t\t\t\t},\n\t\t\t\thitOut: function() {\n\t\t\t\t\tdropLocation = null; // signal unsuccessful\n\t\t\t\t},\n\t\t\t\thitDone: function() { // Called after a hitOut OR before a dragEnd\n\t\t\t\t\tenableCursor();\n\t\t\t\t\t_this.unrenderDrag();\n\t\t\t\t},\n\t\t\t\tinteractionEnd: function(ev) {\n\t\t\t\t\tif (dropLocation) { // element was dropped on a valid hit\n\t\t\t\t\t\t_this.view.reportExternalDrop(meta, dropLocation, el, ev, ui);\n\t\t\t\t\t}\n\t\t\t\t\t_this.isDraggingExternal = false;\n\t\t\t\t\t_this.externalDragListener = null;\n\t\t\t\t}\n\t\t\t});\n\t\n\t\t\tdragListener.startDrag(ev); // start listening immediately\n\t\t},\n\t\n\t\n\t\t// Given a hit to be dropped upon, and misc data associated with the jqui drag (guaranteed to be a plain object),\n\t\t// returns the zoned start/end dates for the event that would result from the hypothetical drop. end might be null.\n\t\t// Returning a null value signals an invalid drop hit.\n\t\t// DOES NOT consider overlap/constraint.\n\t\tcomputeExternalDrop: function(span, meta) {\n\t\t\tvar calendar = this.view.calendar;\n\t\t\tvar dropLocation = {\n\t\t\t\tstart: calendar.applyTimezone(span.start), // simulate a zoned event start date\n\t\t\t\tend: null\n\t\t\t};\n\t\n\t\t\t// if dropped on an all-day span, and element's metadata specified a time, set it\n\t\t\tif (meta.startTime && !dropLocation.start.hasTime()) {\n\t\t\t\tdropLocation.start.time(meta.startTime);\n\t\t\t}\n\t\n\t\t\tif (meta.duration) {\n\t\t\t\tdropLocation.end = dropLocation.start.clone().add(meta.duration);\n\t\t\t}\n\t\n\t\t\treturn dropLocation;\n\t\t},\n\t\n\t\n\t\n\t\t/* Drag Rendering (for both events and an external elements)\n\t\t------------------------------------------------------------------------------------------------------------------*/\n\t\n\t\n\t\t// Renders a visual indication of an event or external element being dragged.\n\t\t// `dropLocation` contains hypothetical start/end/allDay values the event would have if dropped. end can be null.\n\t\t// `seg` is the internal segment object that is being dragged. If dragging an external element, `seg` is null.\n\t\t// A truthy returned value indicates this method has rendered a helper element.\n\t\t// Must return elements used for any mock events.\n\t\trenderDrag: function(dropLocation, seg) {\n\t\t\t// subclasses must implement\n\t\t},\n\t\n\t\n\t\t// Unrenders a visual indication of an event or external element being dragged\n\t\tunrenderDrag: function() {\n\t\t\t// subclasses must implement\n\t\t},\n\t\n\t\n\t\t/* Resizing\n\t\t------------------------------------------------------------------------------------------------------------------*/\n\t\n\t\n\t\t// Creates a listener that tracks the user as they resize an event segment.\n\t\t// Generic enough to work with any type of Grid.\n\t\tbuildSegResizeListener: function(seg, isStart) {\n\t\t\tvar _this = this;\n\t\t\tvar view = this.view;\n\t\t\tvar calendar = view.calendar;\n\t\t\tvar el = seg.el;\n\t\t\tvar event = seg.event;\n\t\t\tvar eventEnd = calendar.getEventEnd(event);\n\t\t\tvar isDragging;\n\t\t\tvar resizeLocation; // zoned event date properties. falsy if invalid resize\n\t\n\t\t\t// Tracks mouse movement over the *grid's* coordinate map\n\t\t\tvar dragListener = this.segResizeListener = new HitDragListener(this, {\n\t\t\t\tscroll: view.opt('dragScroll'),\n\t\t\t\tsubjectEl: el,\n\t\t\t\tinteractionStart: function() {\n\t\t\t\t\tisDragging = false;\n\t\t\t\t},\n\t\t\t\tdragStart: function(ev) {\n\t\t\t\t\tisDragging = true;\n\t\t\t\t\t_this.handleSegMouseout(seg, ev); // ensure a mouseout on the manipulated event has been reported\n\t\t\t\t\t_this.segResizeStart(seg, ev);\n\t\t\t\t},\n\t\t\t\thitOver: function(hit, isOrig, origHit) {\n\t\t\t\t\tvar origHitSpan = _this.getHitSpan(origHit);\n\t\t\t\t\tvar hitSpan = _this.getHitSpan(hit);\n\t\n\t\t\t\t\tresizeLocation = isStart ?\n\t\t\t\t\t\t_this.computeEventStartResize(origHitSpan, hitSpan, event) :\n\t\t\t\t\t\t_this.computeEventEndResize(origHitSpan, hitSpan, event);\n\t\n\t\t\t\t\tif (resizeLocation) {\n\t\t\t\t\t\tif (!calendar.isEventSpanAllowed(_this.eventToSpan(resizeLocation), event)) {\n\t\t\t\t\t\t\tdisableCursor();\n\t\t\t\t\t\t\tresizeLocation = null;\n\t\t\t\t\t\t}\n\t\t\t\t\t\t// no change? (TODO: how does this work with timezones?)\n\t\t\t\t\t\telse if (resizeLocation.start.isSame(event.start) && resizeLocation.end.isSame(eventEnd)) {\n\t\t\t\t\t\t\tresizeLocation = null;\n\t\t\t\t\t\t}\n\t\t\t\t\t}\n\t\n\t\t\t\t\tif (resizeLocation) {\n\t\t\t\t\t\tview.hideEvent(event);\n\t\t\t\t\t\t_this.renderEventResize(resizeLocation, seg);\n\t\t\t\t\t}\n\t\t\t\t},\n\t\t\t\thitOut: function() { // called before mouse moves to a different hit OR moved out of all hits\n\t\t\t\t\tresizeLocation = null;\n\t\t\t\t},\n\t\t\t\thitDone: function() { // resets the rendering to show the original event\n\t\t\t\t\t_this.unrenderEventResize();\n\t\t\t\t\tview.showEvent(event);\n\t\t\t\t\tenableCursor();\n\t\t\t\t},\n\t\t\t\tinteractionEnd: function(ev) {\n\t\t\t\t\tif (isDragging) {\n\t\t\t\t\t\t_this.segResizeStop(seg, ev);\n\t\t\t\t\t}\n\t\t\t\t\tif (resizeLocation) { // valid date to resize to?\n\t\t\t\t\t\tview.reportEventResize(event, resizeLocation, this.largeUnit, el, ev);\n\t\t\t\t\t}\n\t\t\t\t\t_this.segResizeListener = null;\n\t\t\t\t}\n\t\t\t});\n\t\n\t\t\treturn dragListener;\n\t\t},\n\t\n\t\n\t\t// Called before event segment resizing starts\n\t\tsegResizeStart: function(seg, ev) {\n\t\t\tthis.isResizingSeg = true;\n\t\t\tthis.view.trigger('eventResizeStart', seg.el[0], seg.event, ev, {}); // last argument is jqui dummy\n\t\t},\n\t\n\t\n\t\t// Called after event segment resizing stops\n\t\tsegResizeStop: function(seg, ev) {\n\t\t\tthis.isResizingSeg = false;\n\t\t\tthis.view.trigger('eventResizeStop', seg.el[0], seg.event, ev, {}); // last argument is jqui dummy\n\t\t},\n\t\n\t\n\t\t// Returns new date-information for an event segment being resized from its start\n\t\tcomputeEventStartResize: function(startSpan, endSpan, event) {\n\t\t\treturn this.computeEventResize('start', startSpan, endSpan, event);\n\t\t},\n\t\n\t\n\t\t// Returns new date-information for an event segment being resized from its end\n\t\tcomputeEventEndResize: function(startSpan, endSpan, event) {\n\t\t\treturn this.computeEventResize('end', startSpan, endSpan, event);\n\t\t},\n\t\n\t\n\t\t// Returns new zoned date information for an event segment being resized from its start OR end\n\t\t// `type` is either 'start' or 'end'.\n\t\t// DOES NOT consider overlap/constraint.\n\t\tcomputeEventResize: function(type, startSpan, endSpan, event) {\n\t\t\tvar calendar = this.view.calendar;\n\t\t\tvar delta = this.diffDates(endSpan[type], startSpan[type]);\n\t\t\tvar resizeLocation; // zoned event date properties\n\t\t\tvar defaultDuration;\n\t\n\t\t\t// build original values to work from, guaranteeing a start and end\n\t\t\tresizeLocation = {\n\t\t\t\tstart: event.start.clone(),\n\t\t\t\tend: calendar.getEventEnd(event),\n\t\t\t\tallDay: event.allDay\n\t\t\t};\n\t\n\t\t\t// if an all-day event was in a timed area and was resized to a time, adjust start/end to have times\n\t\t\tif (resizeLocation.allDay && durationHasTime(delta)) {\n\t\t\t\tresizeLocation.allDay = false;\n\t\t\t\tcalendar.normalizeEventTimes(resizeLocation);\n\t\t\t}\n\t\n\t\t\tresizeLocation[type].add(delta); // apply delta to start or end\n\t\n\t\t\t// if the event was compressed too small, find a new reasonable duration for it\n\t\t\tif (!resizeLocation.start.isBefore(resizeLocation.end)) {\n\t\n\t\t\t\tdefaultDuration =\n\t\t\t\t\tthis.minResizeDuration || // TODO: hack\n\t\t\t\t\t(event.allDay ?\n\t\t\t\t\t\tcalendar.defaultAllDayEventDuration :\n\t\t\t\t\t\tcalendar.defaultTimedEventDuration);\n\t\n\t\t\t\tif (type == 'start') { // resizing the start?\n\t\t\t\t\tresizeLocation.start = resizeLocation.end.clone().subtract(defaultDuration);\n\t\t\t\t}\n\t\t\t\telse { // resizing the end?\n\t\t\t\t\tresizeLocation.end = resizeLocation.start.clone().add(defaultDuration);\n\t\t\t\t}\n\t\t\t}\n\t\n\t\t\treturn resizeLocation;\n\t\t},\n\t\n\t\n\t\t// Renders a visual indication of an event being resized.\n\t\t// `range` has the updated dates of the event. `seg` is the original segment object involved in the drag.\n\t\t// Must return elements used for any mock events.\n\t\trenderEventResize: function(range, seg) {\n\t\t\t// subclasses must implement\n\t\t},\n\t\n\t\n\t\t// Unrenders a visual indication of an event being resized.\n\t\tunrenderEventResize: function() {\n\t\t\t// subclasses must implement\n\t\t},\n\t\n\t\n\t\t/* Rendering Utils\n\t\t------------------------------------------------------------------------------------------------------------------*/\n\t\n\t\n\t\t// Compute the text that should be displayed on an event's element.\n\t\t// `range` can be the Event object itself, or something range-like, with at least a `start`.\n\t\t// If event times are disabled, or the event has no time, will return a blank string.\n\t\t// If not specified, formatStr will default to the eventTimeFormat setting,\n\t\t// and displayEnd will default to the displayEventEnd setting.\n\t\tgetEventTimeText: function(range, formatStr, displayEnd) {\n\t\n\t\t\tif (formatStr == null) {\n\t\t\t\tformatStr = this.eventTimeFormat;\n\t\t\t}\n\t\n\t\t\tif (displayEnd == null) {\n\t\t\t\tdisplayEnd = this.displayEventEnd;\n\t\t\t}\n\t\n\t\t\tif (this.displayEventTime && range.start.hasTime()) {\n\t\t\t\tif (displayEnd && range.end) {\n\t\t\t\t\treturn this.view.formatRange(range, formatStr);\n\t\t\t\t}\n\t\t\t\telse {\n\t\t\t\t\treturn range.start.format(formatStr);\n\t\t\t\t}\n\t\t\t}\n\t\n\t\t\treturn '';\n\t\t},\n\t\n\t\n\t\t// Generic utility for generating the HTML classNames for an event segment's element\n\t\tgetSegClasses: function(seg, isDraggable, isResizable) {\n\t\t\tvar view = this.view;\n\t\t\tvar event = seg.event;\n\t\t\tvar classes = [\n\t\t\t\t'fc-event',\n\t\t\t\tseg.isStart ? 'fc-start' : 'fc-not-start',\n\t\t\t\tseg.isEnd ? 'fc-end' : 'fc-not-end'\n\t\t\t].concat(\n\t\t\t\tevent.className,\n\t\t\t\tevent.source ? event.source.className : []\n\t\t\t);\n\t\n\t\t\tif (isDraggable) {\n\t\t\t\tclasses.push('fc-draggable');\n\t\t\t}\n\t\t\tif (isResizable) {\n\t\t\t\tclasses.push('fc-resizable');\n\t\t\t}\n\t\n\t\t\t// event is currently selected? attach a className.\n\t\t\tif (view.isEventSelected(event)) {\n\t\t\t\tclasses.push('fc-selected');\n\t\t\t}\n\t\n\t\t\treturn classes;\n\t\t},\n\t\n\t\n\t\t// Utility for generating event skin-related CSS properties\n\t\tgetSegSkinCss: function(seg) {\n\t\t\tvar event = seg.event;\n\t\t\tvar view = this.view;\n\t\t\tvar source = event.source || {};\n\t\t\tvar eventColor = event.color;\n\t\t\tvar sourceColor = source.color;\n\t\t\tvar optionColor = view.opt('eventColor');\n\t\n\t\t\treturn {\n\t\t\t\t'background-color':\n\t\t\t\t\tevent.backgroundColor ||\n\t\t\t\t\teventColor ||\n\t\t\t\t\tsource.backgroundColor ||\n\t\t\t\t\tsourceColor ||\n\t\t\t\t\tview.opt('eventBackgroundColor') ||\n\t\t\t\t\toptionColor,\n\t\t\t\t'border-color':\n\t\t\t\t\tevent.borderColor ||\n\t\t\t\t\teventColor ||\n\t\t\t\t\tsource.borderColor ||\n\t\t\t\t\tsourceColor ||\n\t\t\t\t\tview.opt('eventBorderColor') ||\n\t\t\t\t\toptionColor,\n\t\t\t\tcolor:\n\t\t\t\t\tevent.textColor ||\n\t\t\t\t\tsource.textColor ||\n\t\t\t\t\tview.opt('eventTextColor')\n\t\t\t};\n\t\t},\n\t\n\t\n\t\t/* Converting events -> eventRange -> eventSpan -> eventSegs\n\t\t------------------------------------------------------------------------------------------------------------------*/\n\t\n\t\n\t\t// Generates an array of segments for the given single event\n\t\t// Can accept an event \"location\" as well (which only has start/end and no allDay)\n\t\teventToSegs: function(event) {\n\t\t\treturn this.eventsToSegs([ event ]);\n\t\t},\n\t\n\t\n\t\teventToSpan: function(event) {\n\t\t\treturn this.eventToSpans(event)[0];\n\t\t},\n\t\n\t\n\t\t// Generates spans (always unzoned) for the given event.\n\t\t// Does not do any inverting for inverse-background events.\n\t\t// Can accept an event \"location\" as well (which only has start/end and no allDay)\n\t\teventToSpans: function(event) {\n\t\t\tvar range = this.eventToRange(event);\n\t\t\treturn this.eventRangeToSpans(range, event);\n\t\t},\n\t\n\t\n\t\n\t\t// Converts an array of event objects into an array of event segment objects.\n\t\t// A custom `segSliceFunc` may be given for arbitrarily slicing up events.\n\t\t// Doesn't guarantee an order for the resulting array.\n\t\teventsToSegs: function(allEvents, segSliceFunc) {\n\t\t\tvar _this = this;\n\t\t\tvar eventsById = groupEventsById(allEvents);\n\t\t\tvar segs = [];\n\t\n\t\t\t$.each(eventsById, function(id, events) {\n\t\t\t\tvar ranges = [];\n\t\t\t\tvar i;\n\t\n\t\t\t\tfor (i = 0; i < events.length; i++) {\n\t\t\t\t\tranges.push(_this.eventToRange(events[i]));\n\t\t\t\t}\n\t\n\t\t\t\t// inverse-background events (utilize only the first event in calculations)\n\t\t\t\tif (isInverseBgEvent(events[0])) {\n\t\t\t\t\tranges = _this.invertRanges(ranges);\n\t\n\t\t\t\t\tfor (i = 0; i < ranges.length; i++) {\n\t\t\t\t\t\tsegs.push.apply(segs, // append to\n\t\t\t\t\t\t\t_this.eventRangeToSegs(ranges[i], events[0], segSliceFunc));\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t\t// normal event ranges\n\t\t\t\telse {\n\t\t\t\t\tfor (i = 0; i < ranges.length; i++) {\n\t\t\t\t\t\tsegs.push.apply(segs, // append to\n\t\t\t\t\t\t\t_this.eventRangeToSegs(ranges[i], events[i], segSliceFunc));\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t});\n\t\n\t\t\treturn segs;\n\t\t},\n\t\n\t\n\t\t// Generates the unzoned start/end dates an event appears to occupy\n\t\t// Can accept an event \"location\" as well (which only has start/end and no allDay)\n\t\teventToRange: function(event) {\n\t\t\treturn {\n\t\t\t\tstart: event.start.clone().stripZone(),\n\t\t\t\tend: (\n\t\t\t\t\tevent.end ?\n\t\t\t\t\t\tevent.end.clone() :\n\t\t\t\t\t\t// derive the end from the start and allDay. compute allDay if necessary\n\t\t\t\t\t\tthis.view.calendar.getDefaultEventEnd(\n\t\t\t\t\t\t\tevent.allDay != null ?\n\t\t\t\t\t\t\t\tevent.allDay :\n\t\t\t\t\t\t\t\t!event.start.hasTime(),\n\t\t\t\t\t\t\tevent.start\n\t\t\t\t\t\t)\n\t\t\t\t).stripZone()\n\t\t\t};\n\t\t},\n\t\n\t\n\t\t// Given an event's range (unzoned start/end), and the event itself,\n\t\t// slice into segments (using the segSliceFunc function if specified)\n\t\teventRangeToSegs: function(range, event, segSliceFunc) {\n\t\t\tvar spans = this.eventRangeToSpans(range, event);\n\t\t\tvar segs = [];\n\t\t\tvar i;\n\t\n\t\t\tfor (i = 0; i < spans.length; i++) {\n\t\t\t\tsegs.push.apply(segs, // append to\n\t\t\t\t\tthis.eventSpanToSegs(spans[i], event, segSliceFunc));\n\t\t\t}\n\t\n\t\t\treturn segs;\n\t\t},\n\t\n\t\n\t\t// Given an event's unzoned date range, return an array of \"span\" objects.\n\t\t// Subclasses can override.\n\t\teventRangeToSpans: function(range, event) {\n\t\t\treturn [ $.extend({}, range) ]; // copy into a single-item array\n\t\t},\n\t\n\t\n\t\t// Given an event's span (unzoned start/end and other misc data), and the event itself,\n\t\t// slices into segments and attaches event-derived properties to them.\n\t\teventSpanToSegs: function(span, event, segSliceFunc) {\n\t\t\tvar segs = segSliceFunc ? segSliceFunc(span) : this.spanToSegs(span);\n\t\t\tvar i, seg;\n\t\n\t\t\tfor (i = 0; i < segs.length; i++) {\n\t\t\t\tseg = segs[i];\n\t\t\t\tseg.event = event;\n\t\t\t\tseg.eventStartMS = +span.start; // TODO: not the best name after making spans unzoned\n\t\t\t\tseg.eventDurationMS = span.end - span.start;\n\t\t\t}\n\t\n\t\t\treturn segs;\n\t\t},\n\t\n\t\n\t\t// Produces a new array of range objects that will cover all the time NOT covered by the given ranges.\n\t\t// SIDE EFFECT: will mutate the given array and will use its date references.\n\t\tinvertRanges: function(ranges) {\n\t\t\tvar view = this.view;\n\t\t\tvar viewStart = view.start.clone(); // need a copy\n\t\t\tvar viewEnd = view.end.clone(); // need a copy\n\t\t\tvar inverseRanges = [];\n\t\t\tvar start = viewStart; // the end of the previous range. the start of the new range\n\t\t\tvar i, range;\n\t\n\t\t\t// ranges need to be in order. required for our date-walking algorithm\n\t\t\tranges.sort(compareRanges);\n\t\n\t\t\tfor (i = 0; i < ranges.length; i++) {\n\t\t\t\trange = ranges[i];\n\t\n\t\t\t\t// add the span of time before the event (if there is any)\n\t\t\t\tif (range.start > start) { // compare millisecond time (skip any ambig logic)\n\t\t\t\t\tinverseRanges.push({\n\t\t\t\t\t\tstart: start,\n\t\t\t\t\t\tend: range.start\n\t\t\t\t\t});\n\t\t\t\t}\n\t\n\t\t\t\tstart = range.end;\n\t\t\t}\n\t\n\t\t\t// add the span of time after the last event (if there is any)\n\t\t\tif (start < viewEnd) { // compare millisecond time (skip any ambig logic)\n\t\t\t\tinverseRanges.push({\n\t\t\t\t\tstart: start,\n\t\t\t\t\tend: viewEnd\n\t\t\t\t});\n\t\t\t}\n\t\n\t\t\treturn inverseRanges;\n\t\t},\n\t\n\t\n\t\tsortEventSegs: function(segs) {\n\t\t\tsegs.sort(proxy(this, 'compareEventSegs'));\n\t\t},\n\t\n\t\n\t\t// A cmp function for determining which segments should take visual priority\n\t\tcompareEventSegs: function(seg1, seg2) {\n\t\t\treturn seg1.eventStartMS - seg2.eventStartMS || // earlier events go first\n\t\t\t\tseg2.eventDurationMS - seg1.eventDurationMS || // tie? longer events go first\n\t\t\t\tseg2.event.allDay - seg1.event.allDay || // tie? put all-day events first (booleans cast to 0/1)\n\t\t\t\tcompareByFieldSpecs(seg1.event, seg2.event, this.view.eventOrderSpecs);\n\t\t}\n\t\n\t});\n\t\n\t\n\t/* Utilities\n\t----------------------------------------------------------------------------------------------------------------------*/\n\t\n\t\n\tfunction isBgEvent(event) { // returns true if background OR inverse-background\n\t\tvar rendering = getEventRendering(event);\n\t\treturn rendering === 'background' || rendering === 'inverse-background';\n\t}\n\tFC.isBgEvent = isBgEvent; // export\n\t\n\t\n\tfunction isInverseBgEvent(event) {\n\t\treturn getEventRendering(event) === 'inverse-background';\n\t}\n\t\n\t\n\tfunction getEventRendering(event) {\n\t\treturn firstDefined((event.source || {}).rendering, event.rendering);\n\t}\n\t\n\t\n\tfunction groupEventsById(events) {\n\t\tvar eventsById = {};\n\t\tvar i, event;\n\t\n\t\tfor (i = 0; i < events.length; i++) {\n\t\t\tevent = events[i];\n\t\t\t(eventsById[event._id] || (eventsById[event._id] = [])).push(event);\n\t\t}\n\t\n\t\treturn eventsById;\n\t}\n\t\n\t\n\t// A cmp function for determining which non-inverted \"ranges\" (see above) happen earlier\n\tfunction compareRanges(range1, range2) {\n\t\treturn range1.start - range2.start; // earlier ranges go first\n\t}\n\t\n\t\n\t/* External-Dragging-Element Data\n\t----------------------------------------------------------------------------------------------------------------------*/\n\t\n\t// Require all HTML5 data-* attributes used by FullCalendar to have this prefix.\n\t// A value of '' will query attributes like data-event. A value of 'fc' will query attributes like data-fc-event.\n\tFC.dataAttrPrefix = '';\n\t\n\t// Given a jQuery element that might represent a dragged FullCalendar event, returns an intermediate data structure\n\t// to be used for Event Object creation.\n\t// A defined `.eventProps`, even when empty, indicates that an event should be created.\n\tfunction getDraggedElMeta(el) {\n\t\tvar prefix = FC.dataAttrPrefix;\n\t\tvar eventProps; // properties for creating the event, not related to date/time\n\t\tvar startTime; // a Duration\n\t\tvar duration;\n\t\tvar stick;\n\t\n\t\tif (prefix) { prefix += '-'; }\n\t\teventProps = el.data(prefix + 'event') || null;\n\t\n\t\tif (eventProps) {\n\t\t\tif (typeof eventProps === 'object') {\n\t\t\t\teventProps = $.extend({}, eventProps); // make a copy\n\t\t\t}\n\t\t\telse { // something like 1 or true. still signal event creation\n\t\t\t\teventProps = {};\n\t\t\t}\n\t\n\t\t\t// pluck special-cased date/time properties\n\t\t\tstartTime = eventProps.start;\n\t\t\tif (startTime == null) { startTime = eventProps.time; } // accept 'time' as well\n\t\t\tduration = eventProps.duration;\n\t\t\tstick = eventProps.stick;\n\t\t\tdelete eventProps.start;\n\t\t\tdelete eventProps.time;\n\t\t\tdelete eventProps.duration;\n\t\t\tdelete eventProps.stick;\n\t\t}\n\t\n\t\t// fallback to standalone attribute values for each of the date/time properties\n\t\tif (startTime == null) { startTime = el.data(prefix + 'start'); }\n\t\tif (startTime == null) { startTime = el.data(prefix + 'time'); } // accept 'time' as well\n\t\tif (duration == null) { duration = el.data(prefix + 'duration'); }\n\t\tif (stick == null) { stick = el.data(prefix + 'stick'); }\n\t\n\t\t// massage into correct data types\n\t\tstartTime = startTime != null ? moment.duration(startTime) : null;\n\t\tduration = duration != null ? moment.duration(duration) : null;\n\t\tstick = Boolean(stick);\n\t\n\t\treturn { eventProps: eventProps, startTime: startTime, duration: duration, stick: stick };\n\t}\n\t\n\t\n\t;;\n\t\n\t/*\n\tA set of rendering and date-related methods for a visual component comprised of one or more rows of day columns.\n\tPrerequisite: the object being mixed into needs to be a *Grid*\n\t*/\n\tvar DayTableMixin = FC.DayTableMixin = {\n\t\n\t\tbreakOnWeeks: false, // should create a new row for each week?\n\t\tdayDates: null, // whole-day dates for each column. left to right\n\t\tdayIndices: null, // for each day from start, the offset\n\t\tdaysPerRow: null,\n\t\trowCnt: null,\n\t\tcolCnt: null,\n\t\tcolHeadFormat: null,\n\t\n\t\n\t\t// Populates internal variables used for date calculation and rendering\n\t\tupdateDayTable: function() {\n\t\t\tvar view = this.view;\n\t\t\tvar date = this.start.clone();\n\t\t\tvar dayIndex = -1;\n\t\t\tvar dayIndices = [];\n\t\t\tvar dayDates = [];\n\t\t\tvar daysPerRow;\n\t\t\tvar firstDay;\n\t\t\tvar rowCnt;\n\t\n\t\t\twhile (date.isBefore(this.end)) { // loop each day from start to end\n\t\t\t\tif (view.isHiddenDay(date)) {\n\t\t\t\t\tdayIndices.push(dayIndex + 0.5); // mark that it's between indices\n\t\t\t\t}\n\t\t\t\telse {\n\t\t\t\t\tdayIndex++;\n\t\t\t\t\tdayIndices.push(dayIndex);\n\t\t\t\t\tdayDates.push(date.clone());\n\t\t\t\t}\n\t\t\t\tdate.add(1, 'days');\n\t\t\t}\n\t\n\t\t\tif (this.breakOnWeeks) {\n\t\t\t\t// count columns until the day-of-week repeats\n\t\t\t\tfirstDay = dayDates[0].day();\n\t\t\t\tfor (daysPerRow = 1; daysPerRow < dayDates.length; daysPerRow++) {\n\t\t\t\t\tif (dayDates[daysPerRow].day() == firstDay) {\n\t\t\t\t\t\tbreak;\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t\trowCnt = Math.ceil(dayDates.length / daysPerRow);\n\t\t\t}\n\t\t\telse {\n\t\t\t\trowCnt = 1;\n\t\t\t\tdaysPerRow = dayDates.length;\n\t\t\t}\n\t\n\t\t\tthis.dayDates = dayDates;\n\t\t\tthis.dayIndices = dayIndices;\n\t\t\tthis.daysPerRow = daysPerRow;\n\t\t\tthis.rowCnt = rowCnt;\n\t\t\t\n\t\t\tthis.updateDayTableCols();\n\t\t},\n\t\n\t\n\t\t// Computes and assigned the colCnt property and updates any options that may be computed from it\n\t\tupdateDayTableCols: function() {\n\t\t\tthis.colCnt = this.computeColCnt();\n\t\t\tthis.colHeadFormat = this.view.opt('columnFormat') || this.computeColHeadFormat();\n\t\t},\n\t\n\t\n\t\t// Determines how many columns there should be in the table\n\t\tcomputeColCnt: function() {\n\t\t\treturn this.daysPerRow;\n\t\t},\n\t\n\t\n\t\t// Computes the ambiguously-timed moment for the given cell\n\t\tgetCellDate: function(row, col) {\n\t\t\treturn this.dayDates[\n\t\t\t\t\tthis.getCellDayIndex(row, col)\n\t\t\t\t].clone();\n\t\t},\n\t\n\t\n\t\t// Computes the ambiguously-timed date range for the given cell\n\t\tgetCellRange: function(row, col) {\n\t\t\tvar start = this.getCellDate(row, col);\n\t\t\tvar end = start.clone().add(1, 'days');\n\t\n\t\t\treturn { start: start, end: end };\n\t\t},\n\t\n\t\n\t\t// Returns the number of day cells, chronologically, from the first of the grid (0-based)\n\t\tgetCellDayIndex: function(row, col) {\n\t\t\treturn row * this.daysPerRow + this.getColDayIndex(col);\n\t\t},\n\t\n\t\n\t\t// Returns the numner of day cells, chronologically, from the first cell in *any given row*\n\t\tgetColDayIndex: function(col) {\n\t\t\tif (this.isRTL) {\n\t\t\t\treturn this.colCnt - 1 - col;\n\t\t\t}\n\t\t\telse {\n\t\t\t\treturn col;\n\t\t\t}\n\t\t},\n\t\n\t\n\t\t// Given a date, returns its chronolocial cell-index from the first cell of the grid.\n\t\t// If the date lies between cells (because of hiddenDays), returns a floating-point value between offsets.\n\t\t// If before the first offset, returns a negative number.\n\t\t// If after the last offset, returns an offset past the last cell offset.\n\t\t// Only works for *start* dates of cells. Will not work for exclusive end dates for cells.\n\t\tgetDateDayIndex: function(date) {\n\t\t\tvar dayIndices = this.dayIndices;\n\t\t\tvar dayOffset = date.diff(this.start, 'days');\n\t\n\t\t\tif (dayOffset < 0) {\n\t\t\t\treturn dayIndices[0] - 1;\n\t\t\t}\n\t\t\telse if (dayOffset >= dayIndices.length) {\n\t\t\t\treturn dayIndices[dayIndices.length - 1] + 1;\n\t\t\t}\n\t\t\telse {\n\t\t\t\treturn dayIndices[dayOffset];\n\t\t\t}\n\t\t},\n\t\n\t\n\t\t/* Options\n\t\t------------------------------------------------------------------------------------------------------------------*/\n\t\n\t\n\t\t// Computes a default column header formatting string if `colFormat` is not explicitly defined\n\t\tcomputeColHeadFormat: function() {\n\t\t\t// if more than one week row, or if there are a lot of columns with not much space,\n\t\t\t// put just the day numbers will be in each cell\n\t\t\tif (this.rowCnt > 1 || this.colCnt > 10) {\n\t\t\t\treturn 'ddd'; // \"Sat\"\n\t\t\t}\n\t\t\t// multiple days, so full single date string WON'T be in title text\n\t\t\telse if (this.colCnt > 1) {\n\t\t\t\treturn this.view.opt('dayOfMonthFormat'); // \"Sat 12/10\"\n\t\t\t}\n\t\t\t// single day, so full single date string will probably be in title text\n\t\t\telse {\n\t\t\t\treturn 'dddd'; // \"Saturday\"\n\t\t\t}\n\t\t},\n\t\n\t\n\t\t/* Slicing\n\t\t------------------------------------------------------------------------------------------------------------------*/\n\t\n\t\n\t\t// Slices up a date range into a segment for every week-row it intersects with\n\t\tsliceRangeByRow: function(range) {\n\t\t\tvar daysPerRow = this.daysPerRow;\n\t\t\tvar normalRange = this.view.computeDayRange(range); // make whole-day range, considering nextDayThreshold\n\t\t\tvar rangeFirst = this.getDateDayIndex(normalRange.start); // inclusive first index\n\t\t\tvar rangeLast = this.getDateDayIndex(normalRange.end.clone().subtract(1, 'days')); // inclusive last index\n\t\t\tvar segs = [];\n\t\t\tvar row;\n\t\t\tvar rowFirst, rowLast; // inclusive day-index range for current row\n\t\t\tvar segFirst, segLast; // inclusive day-index range for segment\n\t\n\t\t\tfor (row = 0; row < this.rowCnt; row++) {\n\t\t\t\trowFirst = row * daysPerRow;\n\t\t\t\trowLast = rowFirst + daysPerRow - 1;\n\t\n\t\t\t\t// intersect segment's offset range with the row's\n\t\t\t\tsegFirst = Math.max(rangeFirst, rowFirst);\n\t\t\t\tsegLast = Math.min(rangeLast, rowLast);\n\t\n\t\t\t\t// deal with in-between indices\n\t\t\t\tsegFirst = Math.ceil(segFirst); // in-between starts round to next cell\n\t\t\t\tsegLast = Math.floor(segLast); // in-between ends round to prev cell\n\t\n\t\t\t\tif (segFirst <= segLast) { // was there any intersection with the current row?\n\t\t\t\t\tsegs.push({\n\t\t\t\t\t\trow: row,\n\t\n\t\t\t\t\t\t// normalize to start of row\n\t\t\t\t\t\tfirstRowDayIndex: segFirst - rowFirst,\n\t\t\t\t\t\tlastRowDayIndex: segLast - rowFirst,\n\t\n\t\t\t\t\t\t// must be matching integers to be the segment's start/end\n\t\t\t\t\t\tisStart: segFirst === rangeFirst,\n\t\t\t\t\t\tisEnd: segLast === rangeLast\n\t\t\t\t\t});\n\t\t\t\t}\n\t\t\t}\n\t\n\t\t\treturn segs;\n\t\t},\n\t\n\t\n\t\t// Slices up a date range into a segment for every day-cell it intersects with.\n\t\t// TODO: make more DRY with sliceRangeByRow somehow.\n\t\tsliceRangeByDay: function(range) {\n\t\t\tvar daysPerRow = this.daysPerRow;\n\t\t\tvar normalRange = this.view.computeDayRange(range); // make whole-day range, considering nextDayThreshold\n\t\t\tvar rangeFirst = this.getDateDayIndex(normalRange.start); // inclusive first index\n\t\t\tvar rangeLast = this.getDateDayIndex(normalRange.end.clone().subtract(1, 'days')); // inclusive last index\n\t\t\tvar segs = [];\n\t\t\tvar row;\n\t\t\tvar rowFirst, rowLast; // inclusive day-index range for current row\n\t\t\tvar i;\n\t\t\tvar segFirst, segLast; // inclusive day-index range for segment\n\t\n\t\t\tfor (row = 0; row < this.rowCnt; row++) {\n\t\t\t\trowFirst = row * daysPerRow;\n\t\t\t\trowLast = rowFirst + daysPerRow - 1;\n\t\n\t\t\t\tfor (i = rowFirst; i <= rowLast; i++) {\n\t\n\t\t\t\t\t// intersect segment's offset range with the row's\n\t\t\t\t\tsegFirst = Math.max(rangeFirst, i);\n\t\t\t\t\tsegLast = Math.min(rangeLast, i);\n\t\n\t\t\t\t\t// deal with in-between indices\n\t\t\t\t\tsegFirst = Math.ceil(segFirst); // in-between starts round to next cell\n\t\t\t\t\tsegLast = Math.floor(segLast); // in-between ends round to prev cell\n\t\n\t\t\t\t\tif (segFirst <= segLast) { // was there any intersection with the current row?\n\t\t\t\t\t\tsegs.push({\n\t\t\t\t\t\t\trow: row,\n\t\n\t\t\t\t\t\t\t// normalize to start of row\n\t\t\t\t\t\t\tfirstRowDayIndex: segFirst - rowFirst,\n\t\t\t\t\t\t\tlastRowDayIndex: segLast - rowFirst,\n\t\n\t\t\t\t\t\t\t// must be matching integers to be the segment's start/end\n\t\t\t\t\t\t\tisStart: segFirst === rangeFirst,\n\t\t\t\t\t\t\tisEnd: segLast === rangeLast\n\t\t\t\t\t\t});\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t}\n\t\n\t\t\treturn segs;\n\t\t},\n\t\n\t\n\t\t/* Header Rendering\n\t\t------------------------------------------------------------------------------------------------------------------*/\n\t\n\t\n\t\trenderHeadHtml: function() {\n\t\t\tvar view = this.view;\n\t\n\t\t\treturn '' +\n\t\t\t\t'
' +\n\t\t\t\t\t'' +\n\t\t\t\t\t\t'' +\n\t\t\t\t\t\t\tthis.renderHeadTrHtml() +\n\t\t\t\t\t\t'' +\n\t\t\t\t\t'
' +\n\t\t\t\t'
';\n\t\t},\n\t\n\t\n\t\trenderHeadIntroHtml: function() {\n\t\t\treturn this.renderIntroHtml(); // fall back to generic\n\t\t},\n\t\n\t\n\t\trenderHeadTrHtml: function() {\n\t\t\treturn '' +\n\t\t\t\t'' +\n\t\t\t\t\t(this.isRTL ? '' : this.renderHeadIntroHtml()) +\n\t\t\t\t\tthis.renderHeadDateCellsHtml() +\n\t\t\t\t\t(this.isRTL ? this.renderHeadIntroHtml() : '') +\n\t\t\t\t'';\n\t\t},\n\t\n\t\n\t\trenderHeadDateCellsHtml: function() {\n\t\t\tvar htmls = [];\n\t\t\tvar col, date;\n\t\n\t\t\tfor (col = 0; col < this.colCnt; col++) {\n\t\t\t\tdate = this.getCellDate(0, col);\n\t\t\t\thtmls.push(this.renderHeadDateCellHtml(date));\n\t\t\t}\n\t\n\t\t\treturn htmls.join('');\n\t\t},\n\t\n\t\n\t\t// TODO: when internalApiVersion, accept an object for HTML attributes\n\t\t// (colspan should be no different)\n\t\trenderHeadDateCellHtml: function(date, colspan, otherAttrs) {\n\t\t\tvar view = this.view;\n\t\n\t\t\treturn '' +\n\t\t\t\t' 1 ?\n\t\t\t\t\t\t' colspan=\"' + colspan + '\"' :\n\t\t\t\t\t\t'') +\n\t\t\t\t\t(otherAttrs ?\n\t\t\t\t\t\t' ' + otherAttrs :\n\t\t\t\t\t\t'') +\n\t\t\t\t'>' +\n\t\t\t\t\thtmlEscape(date.format(this.colHeadFormat)) +\n\t\t\t\t'';\n\t\t},\n\t\n\t\n\t\t/* Background Rendering\n\t\t------------------------------------------------------------------------------------------------------------------*/\n\t\n\t\n\t\trenderBgTrHtml: function(row) {\n\t\t\treturn '' +\n\t\t\t\t'' +\n\t\t\t\t\t(this.isRTL ? '' : this.renderBgIntroHtml(row)) +\n\t\t\t\t\tthis.renderBgCellsHtml(row) +\n\t\t\t\t\t(this.isRTL ? this.renderBgIntroHtml(row) : '') +\n\t\t\t\t'';\n\t\t},\n\t\n\t\n\t\trenderBgIntroHtml: function(row) {\n\t\t\treturn this.renderIntroHtml(); // fall back to generic\n\t\t},\n\t\n\t\n\t\trenderBgCellsHtml: function(row) {\n\t\t\tvar htmls = [];\n\t\t\tvar col, date;\n\t\n\t\t\tfor (col = 0; col < this.colCnt; col++) {\n\t\t\t\tdate = this.getCellDate(row, col);\n\t\t\t\thtmls.push(this.renderBgCellHtml(date));\n\t\t\t}\n\t\n\t\t\treturn htmls.join('');\n\t\t},\n\t\n\t\n\t\trenderBgCellHtml: function(date, otherAttrs) {\n\t\t\tvar view = this.view;\n\t\t\tvar classes = this.getDayClasses(date);\n\t\n\t\t\tclasses.unshift('fc-day', view.widgetContentClass);\n\t\n\t\t\treturn '';\n\t\t},\n\t\n\t\n\t\t/* Generic\n\t\t------------------------------------------------------------------------------------------------------------------*/\n\t\n\t\n\t\t// Generates the default HTML intro for any row. User classes should override\n\t\trenderIntroHtml: function() {\n\t\t},\n\t\n\t\n\t\t// TODO: a generic method for dealing with , RTL, intro\n\t\t// when increment internalApiVersion\n\t\t// wrapTr (scheduler)\n\t\n\t\n\t\t/* Utils\n\t\t------------------------------------------------------------------------------------------------------------------*/\n\t\n\t\n\t\t// Applies the generic \"intro\" and \"outro\" HTML to the given cells.\n\t\t// Intro means the leftmost cell when the calendar is LTR and the rightmost cell when RTL. Vice-versa for outro.\n\t\tbookendCells: function(trEl) {\n\t\t\tvar introHtml = this.renderIntroHtml();\n\t\n\t\t\tif (introHtml) {\n\t\t\t\tif (this.isRTL) {\n\t\t\t\t\ttrEl.append(introHtml);\n\t\t\t\t}\n\t\t\t\telse {\n\t\t\t\t\ttrEl.prepend(introHtml);\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\t\n\t};\n\t\n\t;;\n\t\n\t/* A component that renders a grid of whole-days that runs horizontally. There can be multiple rows, one per week.\n\t----------------------------------------------------------------------------------------------------------------------*/\n\t\n\tvar DayGrid = FC.DayGrid = Grid.extend(DayTableMixin, {\n\t\n\t\tnumbersVisible: false, // should render a row for day/week numbers? set by outside view. TODO: make internal\n\t\tbottomCoordPadding: 0, // hack for extending the hit area for the last row of the coordinate grid\n\t\n\t\trowEls: null, // set of fake row elements\n\t\tcellEls: null, // set of whole-day elements comprising the row's background\n\t\thelperEls: null, // set of cell skeleton elements for rendering the mock event \"helper\"\n\t\n\t\trowCoordCache: null,\n\t\tcolCoordCache: null,\n\t\n\t\n\t\t// Renders the rows and columns into the component's `this.el`, which should already be assigned.\n\t\t// isRigid determins whether the individual rows should ignore the contents and be a constant height.\n\t\t// Relies on the view's colCnt and rowCnt. In the future, this component should probably be self-sufficient.\n\t\trenderDates: function(isRigid) {\n\t\t\tvar view = this.view;\n\t\t\tvar rowCnt = this.rowCnt;\n\t\t\tvar colCnt = this.colCnt;\n\t\t\tvar html = '';\n\t\t\tvar row;\n\t\t\tvar col;\n\t\n\t\t\tfor (row = 0; row < rowCnt; row++) {\n\t\t\t\thtml += this.renderDayRowHtml(row, isRigid);\n\t\t\t}\n\t\t\tthis.el.html(html);\n\t\n\t\t\tthis.rowEls = this.el.find('.fc-row');\n\t\t\tthis.cellEls = this.el.find('.fc-day');\n\t\n\t\t\tthis.rowCoordCache = new CoordCache({\n\t\t\t\tels: this.rowEls,\n\t\t\t\tisVertical: true\n\t\t\t});\n\t\t\tthis.colCoordCache = new CoordCache({\n\t\t\t\tels: this.cellEls.slice(0, this.colCnt), // only the first row\n\t\t\t\tisHorizontal: true\n\t\t\t});\n\t\n\t\t\t// trigger dayRender with each cell's element\n\t\t\tfor (row = 0; row < rowCnt; row++) {\n\t\t\t\tfor (col = 0; col < colCnt; col++) {\n\t\t\t\t\tview.trigger(\n\t\t\t\t\t\t'dayRender',\n\t\t\t\t\t\tnull,\n\t\t\t\t\t\tthis.getCellDate(row, col),\n\t\t\t\t\t\tthis.getCellEl(row, col)\n\t\t\t\t\t);\n\t\t\t\t}\n\t\t\t}\n\t\t},\n\t\n\t\n\t\tunrenderDates: function() {\n\t\t\tthis.removeSegPopover();\n\t\t},\n\t\n\t\n\t\trenderBusinessHours: function() {\n\t\t\tvar segs = this.buildBusinessHourSegs(true); // wholeDay=true\n\t\t\tthis.renderFill('businessHours', segs, 'bgevent');\n\t\t},\n\t\n\t\n\t\tunrenderBusinessHours: function() {\n\t\t\tthis.unrenderFill('businessHours');\n\t\t},\n\t\n\t\n\t\t// Generates the HTML for a single row, which is a div that wraps a table.\n\t\t// `row` is the row number.\n\t\trenderDayRowHtml: function(row, isRigid) {\n\t\t\tvar view = this.view;\n\t\t\tvar classes = [ 'fc-row', 'fc-week', view.widgetContentClass ];\n\t\n\t\t\tif (isRigid) {\n\t\t\t\tclasses.push('fc-rigid');\n\t\t\t}\n\t\n\t\t\treturn '' +\n\t\t\t\t'
' +\n\t\t\t\t\t'
' +\n\t\t\t\t\t\t'' +\n\t\t\t\t\t\t\tthis.renderBgTrHtml(row) +\n\t\t\t\t\t\t'
' +\n\t\t\t\t\t'
' +\n\t\t\t\t\t'
' +\n\t\t\t\t\t\t'' +\n\t\t\t\t\t\t\t(this.numbersVisible ?\n\t\t\t\t\t\t\t\t'' +\n\t\t\t\t\t\t\t\t\tthis.renderNumberTrHtml(row) +\n\t\t\t\t\t\t\t\t'' :\n\t\t\t\t\t\t\t\t''\n\t\t\t\t\t\t\t\t) +\n\t\t\t\t\t\t'
' +\n\t\t\t\t\t'
' +\n\t\t\t\t'
';\n\t\t},\n\t\n\t\n\t\t/* Grid Number Rendering\n\t\t------------------------------------------------------------------------------------------------------------------*/\n\t\n\t\n\t\trenderNumberTrHtml: function(row) {\n\t\t\treturn '' +\n\t\t\t\t'' +\n\t\t\t\t\t(this.isRTL ? '' : this.renderNumberIntroHtml(row)) +\n\t\t\t\t\tthis.renderNumberCellsHtml(row) +\n\t\t\t\t\t(this.isRTL ? this.renderNumberIntroHtml(row) : '') +\n\t\t\t\t'';\n\t\t},\n\t\n\t\n\t\trenderNumberIntroHtml: function(row) {\n\t\t\treturn this.renderIntroHtml();\n\t\t},\n\t\n\t\n\t\trenderNumberCellsHtml: function(row) {\n\t\t\tvar htmls = [];\n\t\t\tvar col, date;\n\t\n\t\t\tfor (col = 0; col < this.colCnt; col++) {\n\t\t\t\tdate = this.getCellDate(row, col);\n\t\t\t\thtmls.push(this.renderNumberCellHtml(date));\n\t\t\t}\n\t\n\t\t\treturn htmls.join('');\n\t\t},\n\t\n\t\n\t\t// Generates the HTML for the s of the \"number\" row in the DayGrid's content skeleton.\n\t\t// The number row will only exist if either day numbers or week numbers are turned on.\n\t\trenderNumberCellHtml: function(date) {\n\t\t\tvar classes;\n\t\n\t\t\tif (!this.view.dayNumbersVisible) { // if there are week numbers but not day numbers\n\t\t\t\treturn ''; // will create an empty space above events :(\n\t\t\t}\n\t\n\t\t\tclasses = this.getDayClasses(date);\n\t\t\tclasses.unshift('fc-day-number');\n\t\n\t\t\treturn '' +\n\t\t\t\t'' +\n\t\t\t\t\tdate.date() +\n\t\t\t\t'';\n\t\t},\n\t\n\t\n\t\t/* Options\n\t\t------------------------------------------------------------------------------------------------------------------*/\n\t\n\t\n\t\t// Computes a default event time formatting string if `timeFormat` is not explicitly defined\n\t\tcomputeEventTimeFormat: function() {\n\t\t\treturn this.view.opt('extraSmallTimeFormat'); // like \"6p\" or \"6:30p\"\n\t\t},\n\t\n\t\n\t\t// Computes a default `displayEventEnd` value if one is not expliclty defined\n\t\tcomputeDisplayEventEnd: function() {\n\t\t\treturn this.colCnt == 1; // we'll likely have space if there's only one day\n\t\t},\n\t\n\t\n\t\t/* Dates\n\t\t------------------------------------------------------------------------------------------------------------------*/\n\t\n\t\n\t\trangeUpdated: function() {\n\t\t\tthis.updateDayTable();\n\t\t},\n\t\n\t\n\t\t// Slices up the given span (unzoned start/end with other misc data) into an array of segments\n\t\tspanToSegs: function(span) {\n\t\t\tvar segs = this.sliceRangeByRow(span);\n\t\t\tvar i, seg;\n\t\n\t\t\tfor (i = 0; i < segs.length; i++) {\n\t\t\t\tseg = segs[i];\n\t\t\t\tif (this.isRTL) {\n\t\t\t\t\tseg.leftCol = this.daysPerRow - 1 - seg.lastRowDayIndex;\n\t\t\t\t\tseg.rightCol = this.daysPerRow - 1 - seg.firstRowDayIndex;\n\t\t\t\t}\n\t\t\t\telse {\n\t\t\t\t\tseg.leftCol = seg.firstRowDayIndex;\n\t\t\t\t\tseg.rightCol = seg.lastRowDayIndex;\n\t\t\t\t}\n\t\t\t}\n\t\n\t\t\treturn segs;\n\t\t},\n\t\n\t\n\t\t/* Hit System\n\t\t------------------------------------------------------------------------------------------------------------------*/\n\t\n\t\n\t\tprepareHits: function() {\n\t\t\tthis.colCoordCache.build();\n\t\t\tthis.rowCoordCache.build();\n\t\t\tthis.rowCoordCache.bottoms[this.rowCnt - 1] += this.bottomCoordPadding; // hack\n\t\t},\n\t\n\t\n\t\treleaseHits: function() {\n\t\t\tthis.colCoordCache.clear();\n\t\t\tthis.rowCoordCache.clear();\n\t\t},\n\t\n\t\n\t\tqueryHit: function(leftOffset, topOffset) {\n\t\t\tif (this.colCoordCache.isLeftInBounds(leftOffset) && this.rowCoordCache.isTopInBounds(topOffset)) {\n\t\t\t\tvar col = this.colCoordCache.getHorizontalIndex(leftOffset);\n\t\t\t\tvar row = this.rowCoordCache.getVerticalIndex(topOffset);\n\t\n\t\t\t\tif (row != null && col != null) {\n\t\t\t\t\treturn this.getCellHit(row, col);\n\t\t\t\t}\n\t\t\t}\n\t\t},\n\t\n\t\n\t\tgetHitSpan: function(hit) {\n\t\t\treturn this.getCellRange(hit.row, hit.col);\n\t\t},\n\t\n\t\n\t\tgetHitEl: function(hit) {\n\t\t\treturn this.getCellEl(hit.row, hit.col);\n\t\t},\n\t\n\t\n\t\t/* Cell System\n\t\t------------------------------------------------------------------------------------------------------------------*/\n\t\t// FYI: the first column is the leftmost column, regardless of date\n\t\n\t\n\t\tgetCellHit: function(row, col) {\n\t\t\treturn {\n\t\t\t\trow: row,\n\t\t\t\tcol: col,\n\t\t\t\tcomponent: this, // needed unfortunately :(\n\t\t\t\tleft: this.colCoordCache.getLeftOffset(col),\n\t\t\t\tright: this.colCoordCache.getRightOffset(col),\n\t\t\t\ttop: this.rowCoordCache.getTopOffset(row),\n\t\t\t\tbottom: this.rowCoordCache.getBottomOffset(row)\n\t\t\t};\n\t\t},\n\t\n\t\n\t\tgetCellEl: function(row, col) {\n\t\t\treturn this.cellEls.eq(row * this.colCnt + col);\n\t\t},\n\t\n\t\n\t\t/* Event Drag Visualization\n\t\t------------------------------------------------------------------------------------------------------------------*/\n\t\t// TODO: move to DayGrid.event, similar to what we did with Grid's drag methods\n\t\n\t\n\t\t// Renders a visual indication of an event or external element being dragged.\n\t\t// `eventLocation` has zoned start and end (optional)\n\t\trenderDrag: function(eventLocation, seg) {\n\t\n\t\t\t// always render a highlight underneath\n\t\t\tthis.renderHighlight(this.eventToSpan(eventLocation));\n\t\n\t\t\t// if a segment from the same calendar but another component is being dragged, render a helper event\n\t\t\tif (seg && seg.component !== this) {\n\t\t\t\treturn this.renderEventLocationHelper(eventLocation, seg); // returns mock event elements\n\t\t\t}\n\t\t},\n\t\n\t\n\t\t// Unrenders any visual indication of a hovering event\n\t\tunrenderDrag: function() {\n\t\t\tthis.unrenderHighlight();\n\t\t\tthis.unrenderHelper();\n\t\t},\n\t\n\t\n\t\t/* Event Resize Visualization\n\t\t------------------------------------------------------------------------------------------------------------------*/\n\t\n\t\n\t\t// Renders a visual indication of an event being resized\n\t\trenderEventResize: function(eventLocation, seg) {\n\t\t\tthis.renderHighlight(this.eventToSpan(eventLocation));\n\t\t\treturn this.renderEventLocationHelper(eventLocation, seg); // returns mock event elements\n\t\t},\n\t\n\t\n\t\t// Unrenders a visual indication of an event being resized\n\t\tunrenderEventResize: function() {\n\t\t\tthis.unrenderHighlight();\n\t\t\tthis.unrenderHelper();\n\t\t},\n\t\n\t\n\t\t/* Event Helper\n\t\t------------------------------------------------------------------------------------------------------------------*/\n\t\n\t\n\t\t// Renders a mock \"helper\" event. `sourceSeg` is the associated internal segment object. It can be null.\n\t\trenderHelper: function(event, sourceSeg) {\n\t\t\tvar helperNodes = [];\n\t\t\tvar segs = this.eventToSegs(event);\n\t\t\tvar rowStructs;\n\t\n\t\t\tsegs = this.renderFgSegEls(segs); // assigns each seg's el and returns a subset of segs that were rendered\n\t\t\trowStructs = this.renderSegRows(segs);\n\t\n\t\t\t// inject each new event skeleton into each associated row\n\t\t\tthis.rowEls.each(function(row, rowNode) {\n\t\t\t\tvar rowEl = $(rowNode); // the .fc-row\n\t\t\t\tvar skeletonEl = $('
'); // will be absolutely positioned\n\t\t\t\tvar skeletonTop;\n\t\n\t\t\t\t// If there is an original segment, match the top position. Otherwise, put it at the row's top level\n\t\t\t\tif (sourceSeg && sourceSeg.row === row) {\n\t\t\t\t\tskeletonTop = sourceSeg.el.position().top;\n\t\t\t\t}\n\t\t\t\telse {\n\t\t\t\t\tskeletonTop = rowEl.find('.fc-content-skeleton tbody').position().top;\n\t\t\t\t}\n\t\n\t\t\t\tskeletonEl.css('top', skeletonTop)\n\t\t\t\t\t.find('table')\n\t\t\t\t\t\t.append(rowStructs[row].tbodyEl);\n\t\n\t\t\t\trowEl.append(skeletonEl);\n\t\t\t\thelperNodes.push(skeletonEl[0]);\n\t\t\t});\n\t\n\t\t\treturn ( // must return the elements rendered\n\t\t\t\tthis.helperEls = $(helperNodes) // array -> jQuery set\n\t\t\t);\n\t\t},\n\t\n\t\n\t\t// Unrenders any visual indication of a mock helper event\n\t\tunrenderHelper: function() {\n\t\t\tif (this.helperEls) {\n\t\t\t\tthis.helperEls.remove();\n\t\t\t\tthis.helperEls = null;\n\t\t\t}\n\t\t},\n\t\n\t\n\t\t/* Fill System (highlight, background events, business hours)\n\t\t------------------------------------------------------------------------------------------------------------------*/\n\t\n\t\n\t\tfillSegTag: 'td', // override the default tag name\n\t\n\t\n\t\t// Renders a set of rectangles over the given segments of days.\n\t\t// Only returns segments that successfully rendered.\n\t\trenderFill: function(type, segs, className) {\n\t\t\tvar nodes = [];\n\t\t\tvar i, seg;\n\t\t\tvar skeletonEl;\n\t\n\t\t\tsegs = this.renderFillSegEls(type, segs); // assignes `.el` to each seg. returns successfully rendered segs\n\t\n\t\t\tfor (i = 0; i < segs.length; i++) {\n\t\t\t\tseg = segs[i];\n\t\t\t\tskeletonEl = this.renderFillRow(type, seg, className);\n\t\t\t\tthis.rowEls.eq(seg.row).append(skeletonEl);\n\t\t\t\tnodes.push(skeletonEl[0]);\n\t\t\t}\n\t\n\t\t\tthis.elsByFill[type] = $(nodes);\n\t\n\t\t\treturn segs;\n\t\t},\n\t\n\t\n\t\t// Generates the HTML needed for one row of a fill. Requires the seg's el to be rendered.\n\t\trenderFillRow: function(type, seg, className) {\n\t\t\tvar colCnt = this.colCnt;\n\t\t\tvar startCol = seg.leftCol;\n\t\t\tvar endCol = seg.rightCol + 1;\n\t\t\tvar skeletonEl;\n\t\t\tvar trEl;\n\t\n\t\t\tclassName = className || type.toLowerCase();\n\t\n\t\t\tskeletonEl = $(\n\t\t\t\t'
' +\n\t\t\t\t\t'
' +\n\t\t\t\t'
'\n\t\t\t);\n\t\t\ttrEl = skeletonEl.find('tr');\n\t\n\t\t\tif (startCol > 0) {\n\t\t\t\ttrEl.append('');\n\t\t\t}\n\t\n\t\t\ttrEl.append(\n\t\t\t\tseg.el.attr('colspan', endCol - startCol)\n\t\t\t);\n\t\n\t\t\tif (endCol < colCnt) {\n\t\t\t\ttrEl.append('');\n\t\t\t}\n\t\n\t\t\tthis.bookendCells(trEl);\n\t\n\t\t\treturn skeletonEl;\n\t\t}\n\t\n\t});\n\t\n\t;;\n\t\n\t/* Event-rendering methods for the DayGrid class\n\t----------------------------------------------------------------------------------------------------------------------*/\n\t\n\tDayGrid.mixin({\n\t\n\t\trowStructs: null, // an array of objects, each holding information about a row's foreground event-rendering\n\t\n\t\n\t\t// Unrenders all events currently rendered on the grid\n\t\tunrenderEvents: function() {\n\t\t\tthis.removeSegPopover(); // removes the \"more..\" events popover\n\t\t\tGrid.prototype.unrenderEvents.apply(this, arguments); // calls the super-method\n\t\t},\n\t\n\t\n\t\t// Retrieves all rendered segment objects currently rendered on the grid\n\t\tgetEventSegs: function() {\n\t\t\treturn Grid.prototype.getEventSegs.call(this) // get the segments from the super-method\n\t\t\t\t.concat(this.popoverSegs || []); // append the segments from the \"more...\" popover\n\t\t},\n\t\n\t\n\t\t// Renders the given background event segments onto the grid\n\t\trenderBgSegs: function(segs) {\n\t\n\t\t\t// don't render timed background events\n\t\t\tvar allDaySegs = $.grep(segs, function(seg) {\n\t\t\t\treturn seg.event.allDay;\n\t\t\t});\n\t\n\t\t\treturn Grid.prototype.renderBgSegs.call(this, allDaySegs); // call the super-method\n\t\t},\n\t\n\t\n\t\t// Renders the given foreground event segments onto the grid\n\t\trenderFgSegs: function(segs) {\n\t\t\tvar rowStructs;\n\t\n\t\t\t// render an `.el` on each seg\n\t\t\t// returns a subset of the segs. segs that were actually rendered\n\t\t\tsegs = this.renderFgSegEls(segs);\n\t\n\t\t\trowStructs = this.rowStructs = this.renderSegRows(segs);\n\t\n\t\t\t// append to each row's content skeleton\n\t\t\tthis.rowEls.each(function(i, rowNode) {\n\t\t\t\t$(rowNode).find('.fc-content-skeleton > table').append(\n\t\t\t\t\trowStructs[i].tbodyEl\n\t\t\t\t);\n\t\t\t});\n\t\n\t\t\treturn segs; // return only the segs that were actually rendered\n\t\t},\n\t\n\t\n\t\t// Unrenders all currently rendered foreground event segments\n\t\tunrenderFgSegs: function() {\n\t\t\tvar rowStructs = this.rowStructs || [];\n\t\t\tvar rowStruct;\n\t\n\t\t\twhile ((rowStruct = rowStructs.pop())) {\n\t\t\t\trowStruct.tbodyEl.remove();\n\t\t\t}\n\t\n\t\t\tthis.rowStructs = null;\n\t\t},\n\t\n\t\n\t\t// Uses the given events array to generate elements that should be appended to each row's content skeleton.\n\t\t// Returns an array of rowStruct objects (see the bottom of `renderSegRow`).\n\t\t// PRECONDITION: each segment shoud already have a rendered and assigned `.el`\n\t\trenderSegRows: function(segs) {\n\t\t\tvar rowStructs = [];\n\t\t\tvar segRows;\n\t\t\tvar row;\n\t\n\t\t\tsegRows = this.groupSegRows(segs); // group into nested arrays\n\t\n\t\t\t// iterate each row of segment groupings\n\t\t\tfor (row = 0; row < segRows.length; row++) {\n\t\t\t\trowStructs.push(\n\t\t\t\t\tthis.renderSegRow(row, segRows[row])\n\t\t\t\t);\n\t\t\t}\n\t\n\t\t\treturn rowStructs;\n\t\t},\n\t\n\t\n\t\t// Builds the HTML to be used for the default element for an individual segment\n\t\tfgSegHtml: function(seg, disableResizing) {\n\t\t\tvar view = this.view;\n\t\t\tvar event = seg.event;\n\t\t\tvar isDraggable = view.isEventDraggable(event);\n\t\t\tvar isResizableFromStart = !disableResizing && event.allDay &&\n\t\t\t\tseg.isStart && view.isEventResizableFromStart(event);\n\t\t\tvar isResizableFromEnd = !disableResizing && event.allDay &&\n\t\t\t\tseg.isEnd && view.isEventResizableFromEnd(event);\n\t\t\tvar classes = this.getSegClasses(seg, isDraggable, isResizableFromStart || isResizableFromEnd);\n\t\t\tvar skinCss = cssToStr(this.getSegSkinCss(seg));\n\t\t\tvar timeHtml = '';\n\t\t\tvar timeText;\n\t\t\tvar titleHtml;\n\t\n\t\t\tclasses.unshift('fc-day-grid-event', 'fc-h-event');\n\t\n\t\t\t// Only display a timed events time if it is the starting segment\n\t\t\tif (seg.isStart) {\n\t\t\t\ttimeText = this.getEventTimeText(event);\n\t\t\t\tif (timeText) {\n\t\t\t\t\ttimeHtml = '' + htmlEscape(timeText) + '';\n\t\t\t\t}\n\t\t\t}\n\t\n\t\t\ttitleHtml =\n\t\t\t\t'' +\n\t\t\t\t\t(htmlEscape(event.title || '') || ' ') + // we always want one line of height\n\t\t\t\t'';\n\t\t\t\n\t\t\treturn '
' +\n\t\t\t\t\t'
' +\n\t\t\t\t\t\t(this.isRTL ?\n\t\t\t\t\t\t\ttitleHtml + ' ' + timeHtml : // put a natural space in between\n\t\t\t\t\t\t\ttimeHtml + ' ' + titleHtml //\n\t\t\t\t\t\t\t) +\n\t\t\t\t\t'
' +\n\t\t\t\t\t(isResizableFromStart ?\n\t\t\t\t\t\t'
' :\n\t\t\t\t\t\t''\n\t\t\t\t\t\t) +\n\t\t\t\t\t(isResizableFromEnd ?\n\t\t\t\t\t\t'
' :\n\t\t\t\t\t\t''\n\t\t\t\t\t\t) +\n\t\t\t\t'';\n\t\t},\n\t\n\t\n\t\t// Given a row # and an array of segments all in the same row, render a element, a skeleton that contains\n\t\t// the segments. Returns object with a bunch of internal data about how the render was calculated.\n\t\t// NOTE: modifies rowSegs\n\t\trenderSegRow: function(row, rowSegs) {\n\t\t\tvar colCnt = this.colCnt;\n\t\t\tvar segLevels = this.buildSegLevels(rowSegs); // group into sub-arrays of levels\n\t\t\tvar levelCnt = Math.max(1, segLevels.length); // ensure at least one level\n\t\t\tvar tbody = $('');\n\t\t\tvar segMatrix = []; // lookup for which segments are rendered into which level+col cells\n\t\t\tvar cellMatrix = []; // lookup for all elements of the level+col matrix\n\t\t\tvar loneCellMatrix = []; // lookup for elements that only take up a single column\n\t\t\tvar i, levelSegs;\n\t\t\tvar col;\n\t\t\tvar tr;\n\t\t\tvar j, seg;\n\t\t\tvar td;\n\t\n\t\t\t// populates empty cells from the current column (`col`) to `endCol`\n\t\t\tfunction emptyCellsUntil(endCol) {\n\t\t\t\twhile (col < endCol) {\n\t\t\t\t\t// try to grab a cell from the level above and extend its rowspan. otherwise, create a fresh cell\n\t\t\t\t\ttd = (loneCellMatrix[i - 1] || [])[col];\n\t\t\t\t\tif (td) {\n\t\t\t\t\t\ttd.attr(\n\t\t\t\t\t\t\t'rowspan',\n\t\t\t\t\t\t\tparseInt(td.attr('rowspan') || 1, 10) + 1\n\t\t\t\t\t\t);\n\t\t\t\t\t}\n\t\t\t\t\telse {\n\t\t\t\t\t\ttd = $('');\n\t\t\t\t\t\ttr.append(td);\n\t\t\t\t\t}\n\t\t\t\t\tcellMatrix[i][col] = td;\n\t\t\t\t\tloneCellMatrix[i][col] = td;\n\t\t\t\t\tcol++;\n\t\t\t\t}\n\t\t\t}\n\t\n\t\t\tfor (i = 0; i < levelCnt; i++) { // iterate through all levels\n\t\t\t\tlevelSegs = segLevels[i];\n\t\t\t\tcol = 0;\n\t\t\t\ttr = $('');\n\t\n\t\t\t\tsegMatrix.push([]);\n\t\t\t\tcellMatrix.push([]);\n\t\t\t\tloneCellMatrix.push([]);\n\t\n\t\t\t\t// levelCnt might be 1 even though there are no actual levels. protect against this.\n\t\t\t\t// this single empty row is useful for styling.\n\t\t\t\tif (levelSegs) {\n\t\t\t\t\tfor (j = 0; j < levelSegs.length; j++) { // iterate through segments in level\n\t\t\t\t\t\tseg = levelSegs[j];\n\t\n\t\t\t\t\t\temptyCellsUntil(seg.leftCol);\n\t\n\t\t\t\t\t\t// create a container that occupies or more columns. append the event element.\n\t\t\t\t\t\ttd = $('').append(seg.el);\n\t\t\t\t\t\tif (seg.leftCol != seg.rightCol) {\n\t\t\t\t\t\t\ttd.attr('colspan', seg.rightCol - seg.leftCol + 1);\n\t\t\t\t\t\t}\n\t\t\t\t\t\telse { // a single-column segment\n\t\t\t\t\t\t\tloneCellMatrix[i][col] = td;\n\t\t\t\t\t\t}\n\t\n\t\t\t\t\t\twhile (col <= seg.rightCol) {\n\t\t\t\t\t\t\tcellMatrix[i][col] = td;\n\t\t\t\t\t\t\tsegMatrix[i][col] = seg;\n\t\t\t\t\t\t\tcol++;\n\t\t\t\t\t\t}\n\t\n\t\t\t\t\t\ttr.append(td);\n\t\t\t\t\t}\n\t\t\t\t}\n\t\n\t\t\t\temptyCellsUntil(colCnt); // finish off the row\n\t\t\t\tthis.bookendCells(tr);\n\t\t\t\ttbody.append(tr);\n\t\t\t}\n\t\n\t\t\treturn { // a \"rowStruct\"\n\t\t\t\trow: row, // the row number\n\t\t\t\ttbodyEl: tbody,\n\t\t\t\tcellMatrix: cellMatrix,\n\t\t\t\tsegMatrix: segMatrix,\n\t\t\t\tsegLevels: segLevels,\n\t\t\t\tsegs: rowSegs\n\t\t\t};\n\t\t},\n\t\n\t\n\t\t// Stacks a flat array of segments, which are all assumed to be in the same row, into subarrays of vertical levels.\n\t\t// NOTE: modifies segs\n\t\tbuildSegLevels: function(segs) {\n\t\t\tvar levels = [];\n\t\t\tvar i, seg;\n\t\t\tvar j;\n\t\n\t\t\t// Give preference to elements with certain criteria, so they have\n\t\t\t// a chance to be closer to the top.\n\t\t\tthis.sortEventSegs(segs);\n\t\t\t\n\t\t\tfor (i = 0; i < segs.length; i++) {\n\t\t\t\tseg = segs[i];\n\t\n\t\t\t\t// loop through levels, starting with the topmost, until the segment doesn't collide with other segments\n\t\t\t\tfor (j = 0; j < levels.length; j++) {\n\t\t\t\t\tif (!isDaySegCollision(seg, levels[j])) {\n\t\t\t\t\t\tbreak;\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t\t// `j` now holds the desired subrow index\n\t\t\t\tseg.level = j;\n\t\n\t\t\t\t// create new level array if needed and append segment\n\t\t\t\t(levels[j] || (levels[j] = [])).push(seg);\n\t\t\t}\n\t\n\t\t\t// order segments left-to-right. very important if calendar is RTL\n\t\t\tfor (j = 0; j < levels.length; j++) {\n\t\t\t\tlevels[j].sort(compareDaySegCols);\n\t\t\t}\n\t\n\t\t\treturn levels;\n\t\t},\n\t\n\t\n\t\t// Given a flat array of segments, return an array of sub-arrays, grouped by each segment's row\n\t\tgroupSegRows: function(segs) {\n\t\t\tvar segRows = [];\n\t\t\tvar i;\n\t\n\t\t\tfor (i = 0; i < this.rowCnt; i++) {\n\t\t\t\tsegRows.push([]);\n\t\t\t}\n\t\n\t\t\tfor (i = 0; i < segs.length; i++) {\n\t\t\t\tsegRows[segs[i].row].push(segs[i]);\n\t\t\t}\n\t\n\t\t\treturn segRows;\n\t\t}\n\t\n\t});\n\t\n\t\n\t// Computes whether two segments' columns collide. They are assumed to be in the same row.\n\tfunction isDaySegCollision(seg, otherSegs) {\n\t\tvar i, otherSeg;\n\t\n\t\tfor (i = 0; i < otherSegs.length; i++) {\n\t\t\totherSeg = otherSegs[i];\n\t\n\t\t\tif (\n\t\t\t\totherSeg.leftCol <= seg.rightCol &&\n\t\t\t\totherSeg.rightCol >= seg.leftCol\n\t\t\t) {\n\t\t\t\treturn true;\n\t\t\t}\n\t\t}\n\t\n\t\treturn false;\n\t}\n\t\n\t\n\t// A cmp function for determining the leftmost event\n\tfunction compareDaySegCols(a, b) {\n\t\treturn a.leftCol - b.leftCol;\n\t}\n\t\n\t;;\n\t\n\t/* Methods relate to limiting the number events for a given day on a DayGrid\n\t----------------------------------------------------------------------------------------------------------------------*/\n\t// NOTE: all the segs being passed around in here are foreground segs\n\t\n\tDayGrid.mixin({\n\t\n\t\tsegPopover: null, // the Popover that holds events that can't fit in a cell. null when not visible\n\t\tpopoverSegs: null, // an array of segment objects that the segPopover holds. null when not visible\n\t\n\t\n\t\tremoveSegPopover: function() {\n\t\t\tif (this.segPopover) {\n\t\t\t\tthis.segPopover.hide(); // in handler, will call segPopover's removeElement\n\t\t\t}\n\t\t},\n\t\n\t\n\t\t// Limits the number of \"levels\" (vertically stacking layers of events) for each row of the grid.\n\t\t// `levelLimit` can be false (don't limit), a number, or true (should be computed).\n\t\tlimitRows: function(levelLimit) {\n\t\t\tvar rowStructs = this.rowStructs || [];\n\t\t\tvar row; // row #\n\t\t\tvar rowLevelLimit;\n\t\n\t\t\tfor (row = 0; row < rowStructs.length; row++) {\n\t\t\t\tthis.unlimitRow(row);\n\t\n\t\t\t\tif (!levelLimit) {\n\t\t\t\t\trowLevelLimit = false;\n\t\t\t\t}\n\t\t\t\telse if (typeof levelLimit === 'number') {\n\t\t\t\t\trowLevelLimit = levelLimit;\n\t\t\t\t}\n\t\t\t\telse {\n\t\t\t\t\trowLevelLimit = this.computeRowLevelLimit(row);\n\t\t\t\t}\n\t\n\t\t\t\tif (rowLevelLimit !== false) {\n\t\t\t\t\tthis.limitRow(row, rowLevelLimit);\n\t\t\t\t}\n\t\t\t}\n\t\t},\n\t\n\t\n\t\t// Computes the number of levels a row will accomodate without going outside its bounds.\n\t\t// Assumes the row is \"rigid\" (maintains a constant height regardless of what is inside).\n\t\t// `row` is the row number.\n\t\tcomputeRowLevelLimit: function(row) {\n\t\t\tvar rowEl = this.rowEls.eq(row); // the containing \"fake\" row div\n\t\t\tvar rowHeight = rowEl.height(); // TODO: cache somehow?\n\t\t\tvar trEls = this.rowStructs[row].tbodyEl.children();\n\t\t\tvar i, trEl;\n\t\t\tvar trHeight;\n\t\n\t\t\tfunction iterInnerHeights(i, childNode) {\n\t\t\t\ttrHeight = Math.max(trHeight, $(childNode).outerHeight());\n\t\t\t}\n\t\n\t\t\t// Reveal one level at a time and stop when we find one out of bounds\n\t\t\tfor (i = 0; i < trEls.length; i++) {\n\t\t\t\ttrEl = trEls.eq(i).removeClass('fc-limited'); // reset to original state (reveal)\n\t\n\t\t\t\t// with rowspans>1 and IE8, trEl.outerHeight() would return the height of the largest cell,\n\t\t\t\t// so instead, find the tallest inner content element.\n\t\t\t\ttrHeight = 0;\n\t\t\t\ttrEl.find('> td > :first-child').each(iterInnerHeights);\n\t\n\t\t\t\tif (trEl.position().top + trHeight > rowHeight) {\n\t\t\t\t\treturn i;\n\t\t\t\t}\n\t\t\t}\n\t\n\t\t\treturn false; // should not limit at all\n\t\t},\n\t\n\t\n\t\t// Limits the given grid row to the maximum number of levels and injects \"more\" links if necessary.\n\t\t// `row` is the row number.\n\t\t// `levelLimit` is a number for the maximum (inclusive) number of levels allowed.\n\t\tlimitRow: function(row, levelLimit) {\n\t\t\tvar _this = this;\n\t\t\tvar rowStruct = this.rowStructs[row];\n\t\t\tvar moreNodes = []; // array of \"more\" links and DOM nodes\n\t\t\tvar col = 0; // col #, left-to-right (not chronologically)\n\t\t\tvar levelSegs; // array of segment objects in the last allowable level, ordered left-to-right\n\t\t\tvar cellMatrix; // a matrix (by level, then column) of all jQuery elements in the row\n\t\t\tvar limitedNodes; // array of temporarily hidden level and segment DOM nodes\n\t\t\tvar i, seg;\n\t\t\tvar segsBelow; // array of segment objects below `seg` in the current `col`\n\t\t\tvar totalSegsBelow; // total number of segments below `seg` in any of the columns `seg` occupies\n\t\t\tvar colSegsBelow; // array of segment arrays, below seg, one for each column (offset from segs's first column)\n\t\t\tvar td, rowspan;\n\t\t\tvar segMoreNodes; // array of \"more\" cells that will stand-in for the current seg's cell\n\t\t\tvar j;\n\t\t\tvar moreTd, moreWrap, moreLink;\n\t\n\t\t\t// Iterates through empty level cells and places \"more\" links inside if need be\n\t\t\tfunction emptyCellsUntil(endCol) { // goes from current `col` to `endCol`\n\t\t\t\twhile (col < endCol) {\n\t\t\t\t\tsegsBelow = _this.getCellSegs(row, col, levelLimit);\n\t\t\t\t\tif (segsBelow.length) {\n\t\t\t\t\t\ttd = cellMatrix[levelLimit - 1][col];\n\t\t\t\t\t\tmoreLink = _this.renderMoreLink(row, col, segsBelow);\n\t\t\t\t\t\tmoreWrap = $('
').append(moreLink);\n\t\t\t\t\t\ttd.append(moreWrap);\n\t\t\t\t\t\tmoreNodes.push(moreWrap[0]);\n\t\t\t\t\t}\n\t\t\t\t\tcol++;\n\t\t\t\t}\n\t\t\t}\n\t\n\t\t\tif (levelLimit && levelLimit < rowStruct.segLevels.length) { // is it actually over the limit?\n\t\t\t\tlevelSegs = rowStruct.segLevels[levelLimit - 1];\n\t\t\t\tcellMatrix = rowStruct.cellMatrix;\n\t\n\t\t\t\tlimitedNodes = rowStruct.tbodyEl.children().slice(levelLimit) // get level elements past the limit\n\t\t\t\t\t.addClass('fc-limited').get(); // hide elements and get a simple DOM-nodes array\n\t\n\t\t\t\t// iterate though segments in the last allowable level\n\t\t\t\tfor (i = 0; i < levelSegs.length; i++) {\n\t\t\t\t\tseg = levelSegs[i];\n\t\t\t\t\temptyCellsUntil(seg.leftCol); // process empty cells before the segment\n\t\n\t\t\t\t\t// determine *all* segments below `seg` that occupy the same columns\n\t\t\t\t\tcolSegsBelow = [];\n\t\t\t\t\ttotalSegsBelow = 0;\n\t\t\t\t\twhile (col <= seg.rightCol) {\n\t\t\t\t\t\tsegsBelow = this.getCellSegs(row, col, levelLimit);\n\t\t\t\t\t\tcolSegsBelow.push(segsBelow);\n\t\t\t\t\t\ttotalSegsBelow += segsBelow.length;\n\t\t\t\t\t\tcol++;\n\t\t\t\t\t}\n\t\n\t\t\t\t\tif (totalSegsBelow) { // do we need to replace this segment with one or many \"more\" links?\n\t\t\t\t\t\ttd = cellMatrix[levelLimit - 1][seg.leftCol]; // the segment's parent cell\n\t\t\t\t\t\trowspan = td.attr('rowspan') || 1;\n\t\t\t\t\t\tsegMoreNodes = [];\n\t\n\t\t\t\t\t\t// make a replacement for each column the segment occupies. will be one for each colspan\n\t\t\t\t\t\tfor (j = 0; j < colSegsBelow.length; j++) {\n\t\t\t\t\t\t\tmoreTd = $('').attr('rowspan', rowspan);\n\t\t\t\t\t\t\tsegsBelow = colSegsBelow[j];\n\t\t\t\t\t\t\tmoreLink = this.renderMoreLink(\n\t\t\t\t\t\t\t\trow,\n\t\t\t\t\t\t\t\tseg.leftCol + j,\n\t\t\t\t\t\t\t\t[ seg ].concat(segsBelow) // count seg as hidden too\n\t\t\t\t\t\t\t);\n\t\t\t\t\t\t\tmoreWrap = $('
').append(moreLink);\n\t\t\t\t\t\t\tmoreTd.append(moreWrap);\n\t\t\t\t\t\t\tsegMoreNodes.push(moreTd[0]);\n\t\t\t\t\t\t\tmoreNodes.push(moreTd[0]);\n\t\t\t\t\t\t}\n\t\n\t\t\t\t\t\ttd.addClass('fc-limited').after($(segMoreNodes)); // hide original and inject replacements\n\t\t\t\t\t\tlimitedNodes.push(td[0]);\n\t\t\t\t\t}\n\t\t\t\t}\n\t\n\t\t\t\temptyCellsUntil(this.colCnt); // finish off the level\n\t\t\t\trowStruct.moreEls = $(moreNodes); // for easy undoing later\n\t\t\t\trowStruct.limitedEls = $(limitedNodes); // for easy undoing later\n\t\t\t}\n\t\t},\n\t\n\t\n\t\t// Reveals all levels and removes all \"more\"-related elements for a grid's row.\n\t\t// `row` is a row number.\n\t\tunlimitRow: function(row) {\n\t\t\tvar rowStruct = this.rowStructs[row];\n\t\n\t\t\tif (rowStruct.moreEls) {\n\t\t\t\trowStruct.moreEls.remove();\n\t\t\t\trowStruct.moreEls = null;\n\t\t\t}\n\t\n\t\t\tif (rowStruct.limitedEls) {\n\t\t\t\trowStruct.limitedEls.removeClass('fc-limited');\n\t\t\t\trowStruct.limitedEls = null;\n\t\t\t}\n\t\t},\n\t\n\t\n\t\t// Renders an element that represents hidden event element for a cell.\n\t\t// Responsible for attaching click handler as well.\n\t\trenderMoreLink: function(row, col, hiddenSegs) {\n\t\t\tvar _this = this;\n\t\t\tvar view = this.view;\n\t\n\t\t\treturn $('')\n\t\t\t\t.text(\n\t\t\t\t\tthis.getMoreLinkText(hiddenSegs.length)\n\t\t\t\t)\n\t\t\t\t.on('click', function(ev) {\n\t\t\t\t\tvar clickOption = view.opt('eventLimitClick');\n\t\t\t\t\tvar date = _this.getCellDate(row, col);\n\t\t\t\t\tvar moreEl = $(this);\n\t\t\t\t\tvar dayEl = _this.getCellEl(row, col);\n\t\t\t\t\tvar allSegs = _this.getCellSegs(row, col);\n\t\n\t\t\t\t\t// rescope the segments to be within the cell's date\n\t\t\t\t\tvar reslicedAllSegs = _this.resliceDaySegs(allSegs, date);\n\t\t\t\t\tvar reslicedHiddenSegs = _this.resliceDaySegs(hiddenSegs, date);\n\t\n\t\t\t\t\tif (typeof clickOption === 'function') {\n\t\t\t\t\t\t// the returned value can be an atomic option\n\t\t\t\t\t\tclickOption = view.trigger('eventLimitClick', null, {\n\t\t\t\t\t\t\tdate: date,\n\t\t\t\t\t\t\tdayEl: dayEl,\n\t\t\t\t\t\t\tmoreEl: moreEl,\n\t\t\t\t\t\t\tsegs: reslicedAllSegs,\n\t\t\t\t\t\t\thiddenSegs: reslicedHiddenSegs\n\t\t\t\t\t\t}, ev);\n\t\t\t\t\t}\n\t\n\t\t\t\t\tif (clickOption === 'popover') {\n\t\t\t\t\t\t_this.showSegPopover(row, col, moreEl, reslicedAllSegs);\n\t\t\t\t\t}\n\t\t\t\t\telse if (typeof clickOption === 'string') { // a view name\n\t\t\t\t\t\tview.calendar.zoomTo(date, clickOption);\n\t\t\t\t\t}\n\t\t\t\t});\n\t\t},\n\t\n\t\n\t\t// Reveals the popover that displays all events within a cell\n\t\tshowSegPopover: function(row, col, moreLink, segs) {\n\t\t\tvar _this = this;\n\t\t\tvar view = this.view;\n\t\t\tvar moreWrap = moreLink.parent(); // the
wrapper around the \n\t\t\tvar topEl; // the element we want to match the top coordinate of\n\t\t\tvar options;\n\t\n\t\t\tif (this.rowCnt == 1) {\n\t\t\t\ttopEl = view.el; // will cause the popover to cover any sort of header\n\t\t\t}\n\t\t\telse {\n\t\t\t\ttopEl = this.rowEls.eq(row); // will align with top of row\n\t\t\t}\n\t\n\t\t\toptions = {\n\t\t\t\tclassName: 'fc-more-popover',\n\t\t\t\tcontent: this.renderSegPopoverContent(row, col, segs),\n\t\t\t\tparentEl: this.view.el, // attach to root of view. guarantees outside of scrollbars.\n\t\t\t\ttop: topEl.offset().top,\n\t\t\t\tautoHide: true, // when the user clicks elsewhere, hide the popover\n\t\t\t\tviewportConstrain: view.opt('popoverViewportConstrain'),\n\t\t\t\thide: function() {\n\t\t\t\t\t// kill everything when the popover is hidden\n\t\t\t\t\t_this.segPopover.removeElement();\n\t\t\t\t\t_this.segPopover = null;\n\t\t\t\t\t_this.popoverSegs = null;\n\t\t\t\t}\n\t\t\t};\n\t\n\t\t\t// Determine horizontal coordinate.\n\t\t\t// We use the moreWrap instead of the to avoid border confusion.\n\t\t\tif (this.isRTL) {\n\t\t\t\toptions.right = moreWrap.offset().left + moreWrap.outerWidth() + 1; // +1 to be over cell border\n\t\t\t}\n\t\t\telse {\n\t\t\t\toptions.left = moreWrap.offset().left - 1; // -1 to be over cell border\n\t\t\t}\n\t\n\t\t\tthis.segPopover = new Popover(options);\n\t\t\tthis.segPopover.show();\n\t\n\t\t\t// the popover doesn't live within the grid's container element, and thus won't get the event\n\t\t\t// delegated-handlers for free. attach event-related handlers to the popover.\n\t\t\tthis.bindSegHandlersToEl(this.segPopover.el);\n\t\t},\n\t\n\t\n\t\t// Builds the inner DOM contents of the segment popover\n\t\trenderSegPopoverContent: function(row, col, segs) {\n\t\t\tvar view = this.view;\n\t\t\tvar isTheme = view.opt('theme');\n\t\t\tvar title = this.getCellDate(row, col).format(view.opt('dayPopoverFormat'));\n\t\t\tvar content = $(\n\t\t\t\t'
' +\n\t\t\t\t\t'' +\n\t\t\t\t\t'' +\n\t\t\t\t\t\thtmlEscape(title) +\n\t\t\t\t\t'' +\n\t\t\t\t\t'
' +\n\t\t\t\t'
' +\n\t\t\t\t'
' +\n\t\t\t\t\t'
' +\n\t\t\t\t'
'\n\t\t\t);\n\t\t\tvar segContainer = content.find('.fc-event-container');\n\t\t\tvar i;\n\t\n\t\t\t// render each seg's `el` and only return the visible segs\n\t\t\tsegs = this.renderFgSegEls(segs, true); // disableResizing=true\n\t\t\tthis.popoverSegs = segs;\n\t\n\t\t\tfor (i = 0; i < segs.length; i++) {\n\t\n\t\t\t\t// because segments in the popover are not part of a grid coordinate system, provide a hint to any\n\t\t\t\t// grids that want to do drag-n-drop about which cell it came from\n\t\t\t\tthis.prepareHits();\n\t\t\t\tsegs[i].hit = this.getCellHit(row, col);\n\t\t\t\tthis.releaseHits();\n\t\n\t\t\t\tsegContainer.append(segs[i].el);\n\t\t\t}\n\t\n\t\t\treturn content;\n\t\t},\n\t\n\t\n\t\t// Given the events within an array of segment objects, reslice them to be in a single day\n\t\tresliceDaySegs: function(segs, dayDate) {\n\t\n\t\t\t// build an array of the original events\n\t\t\tvar events = $.map(segs, function(seg) {\n\t\t\t\treturn seg.event;\n\t\t\t});\n\t\n\t\t\tvar dayStart = dayDate.clone();\n\t\t\tvar dayEnd = dayStart.clone().add(1, 'days');\n\t\t\tvar dayRange = { start: dayStart, end: dayEnd };\n\t\n\t\t\t// slice the events with a custom slicing function\n\t\t\tsegs = this.eventsToSegs(\n\t\t\t\tevents,\n\t\t\t\tfunction(range) {\n\t\t\t\t\tvar seg = intersectRanges(range, dayRange); // undefind if no intersection\n\t\t\t\t\treturn seg ? [ seg ] : []; // must return an array of segments\n\t\t\t\t}\n\t\t\t);\n\t\n\t\t\t// force an order because eventsToSegs doesn't guarantee one\n\t\t\tthis.sortEventSegs(segs);\n\t\n\t\t\treturn segs;\n\t\t},\n\t\n\t\n\t\t// Generates the text that should be inside a \"more\" link, given the number of events it represents\n\t\tgetMoreLinkText: function(num) {\n\t\t\tvar opt = this.view.opt('eventLimitText');\n\t\n\t\t\tif (typeof opt === 'function') {\n\t\t\t\treturn opt(num);\n\t\t\t}\n\t\t\telse {\n\t\t\t\treturn '+' + num + ' ' + opt;\n\t\t\t}\n\t\t},\n\t\n\t\n\t\t// Returns segments within a given cell.\n\t\t// If `startLevel` is specified, returns only events including and below that level. Otherwise returns all segs.\n\t\tgetCellSegs: function(row, col, startLevel) {\n\t\t\tvar segMatrix = this.rowStructs[row].segMatrix;\n\t\t\tvar level = startLevel || 0;\n\t\t\tvar segs = [];\n\t\t\tvar seg;\n\t\n\t\t\twhile (level < segMatrix.length) {\n\t\t\t\tseg = segMatrix[level][col];\n\t\t\t\tif (seg) {\n\t\t\t\t\tsegs.push(seg);\n\t\t\t\t}\n\t\t\t\tlevel++;\n\t\t\t}\n\t\n\t\t\treturn segs;\n\t\t}\n\t\n\t});\n\t\n\t;;\n\t\n\t/* A component that renders one or more columns of vertical time slots\n\t----------------------------------------------------------------------------------------------------------------------*/\n\t// We mixin DayTable, even though there is only a single row of days\n\t\n\tvar TimeGrid = FC.TimeGrid = Grid.extend(DayTableMixin, {\n\t\n\t\tslotDuration: null, // duration of a \"slot\", a distinct time segment on given day, visualized by lines\n\t\tsnapDuration: null, // granularity of time for dragging and selecting\n\t\tsnapsPerSlot: null,\n\t\tminTime: null, // Duration object that denotes the first visible time of any given day\n\t\tmaxTime: null, // Duration object that denotes the exclusive visible end time of any given day\n\t\tlabelFormat: null, // formatting string for times running along vertical axis\n\t\tlabelInterval: null, // duration of how often a label should be displayed for a slot\n\t\n\t\tcolEls: null, // cells elements in the day-row background\n\t\tslatContainerEl: null, // div that wraps all the slat rows\n\t\tslatEls: null, // elements running horizontally across all columns\n\t\tnowIndicatorEls: null,\n\t\n\t\tcolCoordCache: null,\n\t\tslatCoordCache: null,\n\t\n\t\n\t\tconstructor: function() {\n\t\t\tGrid.apply(this, arguments); // call the super-constructor\n\t\n\t\t\tthis.processOptions();\n\t\t},\n\t\n\t\n\t\t// Renders the time grid into `this.el`, which should already be assigned.\n\t\t// Relies on the view's colCnt. In the future, this component should probably be self-sufficient.\n\t\trenderDates: function() {\n\t\t\tthis.el.html(this.renderHtml());\n\t\t\tthis.colEls = this.el.find('.fc-day');\n\t\t\tthis.slatContainerEl = this.el.find('.fc-slats');\n\t\t\tthis.slatEls = this.slatContainerEl.find('tr');\n\t\n\t\t\tthis.colCoordCache = new CoordCache({\n\t\t\t\tels: this.colEls,\n\t\t\t\tisHorizontal: true\n\t\t\t});\n\t\t\tthis.slatCoordCache = new CoordCache({\n\t\t\t\tels: this.slatEls,\n\t\t\t\tisVertical: true\n\t\t\t});\n\t\n\t\t\tthis.renderContentSkeleton();\n\t\t},\n\t\n\t\n\t\t// Renders the basic HTML skeleton for the grid\n\t\trenderHtml: function() {\n\t\t\treturn '' +\n\t\t\t\t'
' +\n\t\t\t\t\t'' +\n\t\t\t\t\t\tthis.renderBgTrHtml(0) + // row=0\n\t\t\t\t\t'
' +\n\t\t\t\t'
' +\n\t\t\t\t'
' +\n\t\t\t\t\t'' +\n\t\t\t\t\t\tthis.renderSlatRowHtml() +\n\t\t\t\t\t'
' +\n\t\t\t\t'
';\n\t\t},\n\t\n\t\n\t\t// Generates the HTML for the horizontal \"slats\" that run width-wise. Has a time axis on a side. Depends on RTL.\n\t\trenderSlatRowHtml: function() {\n\t\t\tvar view = this.view;\n\t\t\tvar isRTL = this.isRTL;\n\t\t\tvar html = '';\n\t\t\tvar slotTime = moment.duration(+this.minTime); // wish there was .clone() for durations\n\t\t\tvar slotDate; // will be on the view's first day, but we only care about its time\n\t\t\tvar isLabeled;\n\t\t\tvar axisHtml;\n\t\n\t\t\t// Calculate the time for each slot\n\t\t\twhile (slotTime < this.maxTime) {\n\t\t\t\tslotDate = this.start.clone().time(slotTime);\n\t\t\t\tisLabeled = isInt(divideDurationByDuration(slotTime, this.labelInterval));\n\t\n\t\t\t\taxisHtml =\n\t\t\t\t\t'' +\n\t\t\t\t\t\t(isLabeled ?\n\t\t\t\t\t\t\t'' + // for matchCellWidths\n\t\t\t\t\t\t\t\thtmlEscape(slotDate.format(this.labelFormat)) +\n\t\t\t\t\t\t\t'' :\n\t\t\t\t\t\t\t''\n\t\t\t\t\t\t\t) +\n\t\t\t\t\t'';\n\t\n\t\t\t\thtml +=\n\t\t\t\t\t'' +\n\t\t\t\t\t\t(!isRTL ? axisHtml : '') +\n\t\t\t\t\t\t'' +\n\t\t\t\t\t\t(isRTL ? axisHtml : '') +\n\t\t\t\t\t\"\";\n\t\n\t\t\t\tslotTime.add(this.slotDuration);\n\t\t\t}\n\t\n\t\t\treturn html;\n\t\t},\n\t\n\t\n\t\t/* Options\n\t\t------------------------------------------------------------------------------------------------------------------*/\n\t\n\t\n\t\t// Parses various options into properties of this object\n\t\tprocessOptions: function() {\n\t\t\tvar view = this.view;\n\t\t\tvar slotDuration = view.opt('slotDuration');\n\t\t\tvar snapDuration = view.opt('snapDuration');\n\t\t\tvar input;\n\t\n\t\t\tslotDuration = moment.duration(slotDuration);\n\t\t\tsnapDuration = snapDuration ? moment.duration(snapDuration) : slotDuration;\n\t\n\t\t\tthis.slotDuration = slotDuration;\n\t\t\tthis.snapDuration = snapDuration;\n\t\t\tthis.snapsPerSlot = slotDuration / snapDuration; // TODO: ensure an integer multiple?\n\t\n\t\t\tthis.minResizeDuration = snapDuration; // hack\n\t\n\t\t\tthis.minTime = moment.duration(view.opt('minTime'));\n\t\t\tthis.maxTime = moment.duration(view.opt('maxTime'));\n\t\n\t\t\t// might be an array value (for TimelineView).\n\t\t\t// if so, getting the most granular entry (the last one probably).\n\t\t\tinput = view.opt('slotLabelFormat');\n\t\t\tif ($.isArray(input)) {\n\t\t\t\tinput = input[input.length - 1];\n\t\t\t}\n\t\n\t\t\tthis.labelFormat =\n\t\t\t\tinput ||\n\t\t\t\tview.opt('axisFormat') || // deprecated\n\t\t\t\tview.opt('smallTimeFormat'); // the computed default\n\t\n\t\t\tinput = view.opt('slotLabelInterval');\n\t\t\tthis.labelInterval = input ?\n\t\t\t\tmoment.duration(input) :\n\t\t\t\tthis.computeLabelInterval(slotDuration);\n\t\t},\n\t\n\t\n\t\t// Computes an automatic value for slotLabelInterval\n\t\tcomputeLabelInterval: function(slotDuration) {\n\t\t\tvar i;\n\t\t\tvar labelInterval;\n\t\t\tvar slotsPerLabel;\n\t\n\t\t\t// find the smallest stock label interval that results in more than one slots-per-label\n\t\t\tfor (i = AGENDA_STOCK_SUB_DURATIONS.length - 1; i >= 0; i--) {\n\t\t\t\tlabelInterval = moment.duration(AGENDA_STOCK_SUB_DURATIONS[i]);\n\t\t\t\tslotsPerLabel = divideDurationByDuration(labelInterval, slotDuration);\n\t\t\t\tif (isInt(slotsPerLabel) && slotsPerLabel > 1) {\n\t\t\t\t\treturn labelInterval;\n\t\t\t\t}\n\t\t\t}\n\t\n\t\t\treturn moment.duration(slotDuration); // fall back. clone\n\t\t},\n\t\n\t\n\t\t// Computes a default event time formatting string if `timeFormat` is not explicitly defined\n\t\tcomputeEventTimeFormat: function() {\n\t\t\treturn this.view.opt('noMeridiemTimeFormat'); // like \"6:30\" (no AM/PM)\n\t\t},\n\t\n\t\n\t\t// Computes a default `displayEventEnd` value if one is not expliclty defined\n\t\tcomputeDisplayEventEnd: function() {\n\t\t\treturn true;\n\t\t},\n\t\n\t\n\t\t/* Hit System\n\t\t------------------------------------------------------------------------------------------------------------------*/\n\t\n\t\n\t\tprepareHits: function() {\n\t\t\tthis.colCoordCache.build();\n\t\t\tthis.slatCoordCache.build();\n\t\t},\n\t\n\t\n\t\treleaseHits: function() {\n\t\t\tthis.colCoordCache.clear();\n\t\t\t// NOTE: don't clear slatCoordCache because we rely on it for computeTimeTop\n\t\t},\n\t\n\t\n\t\tqueryHit: function(leftOffset, topOffset) {\n\t\t\tvar snapsPerSlot = this.snapsPerSlot;\n\t\t\tvar colCoordCache = this.colCoordCache;\n\t\t\tvar slatCoordCache = this.slatCoordCache;\n\t\n\t\t\tif (colCoordCache.isLeftInBounds(leftOffset) && slatCoordCache.isTopInBounds(topOffset)) {\n\t\t\t\tvar colIndex = colCoordCache.getHorizontalIndex(leftOffset);\n\t\t\t\tvar slatIndex = slatCoordCache.getVerticalIndex(topOffset);\n\t\n\t\t\t\tif (colIndex != null && slatIndex != null) {\n\t\t\t\t\tvar slatTop = slatCoordCache.getTopOffset(slatIndex);\n\t\t\t\t\tvar slatHeight = slatCoordCache.getHeight(slatIndex);\n\t\t\t\t\tvar partial = (topOffset - slatTop) / slatHeight; // floating point number between 0 and 1\n\t\t\t\t\tvar localSnapIndex = Math.floor(partial * snapsPerSlot); // the snap # relative to start of slat\n\t\t\t\t\tvar snapIndex = slatIndex * snapsPerSlot + localSnapIndex;\n\t\t\t\t\tvar snapTop = slatTop + (localSnapIndex / snapsPerSlot) * slatHeight;\n\t\t\t\t\tvar snapBottom = slatTop + ((localSnapIndex + 1) / snapsPerSlot) * slatHeight;\n\t\n\t\t\t\t\treturn {\n\t\t\t\t\t\tcol: colIndex,\n\t\t\t\t\t\tsnap: snapIndex,\n\t\t\t\t\t\tcomponent: this, // needed unfortunately :(\n\t\t\t\t\t\tleft: colCoordCache.getLeftOffset(colIndex),\n\t\t\t\t\t\tright: colCoordCache.getRightOffset(colIndex),\n\t\t\t\t\t\ttop: snapTop,\n\t\t\t\t\t\tbottom: snapBottom\n\t\t\t\t\t};\n\t\t\t\t}\n\t\t\t}\n\t\t},\n\t\n\t\n\t\tgetHitSpan: function(hit) {\n\t\t\tvar start = this.getCellDate(0, hit.col); // row=0\n\t\t\tvar time = this.computeSnapTime(hit.snap); // pass in the snap-index\n\t\t\tvar end;\n\t\n\t\t\tstart.time(time);\n\t\t\tend = start.clone().add(this.snapDuration);\n\t\n\t\t\treturn { start: start, end: end };\n\t\t},\n\t\n\t\n\t\tgetHitEl: function(hit) {\n\t\t\treturn this.colEls.eq(hit.col);\n\t\t},\n\t\n\t\n\t\t/* Dates\n\t\t------------------------------------------------------------------------------------------------------------------*/\n\t\n\t\n\t\trangeUpdated: function() {\n\t\t\tthis.updateDayTable();\n\t\t},\n\t\n\t\n\t\t// Given a row number of the grid, representing a \"snap\", returns a time (Duration) from its start-of-day\n\t\tcomputeSnapTime: function(snapIndex) {\n\t\t\treturn moment.duration(this.minTime + this.snapDuration * snapIndex);\n\t\t},\n\t\n\t\n\t\t// Slices up the given span (unzoned start/end with other misc data) into an array of segments\n\t\tspanToSegs: function(span) {\n\t\t\tvar segs = this.sliceRangeByTimes(span);\n\t\t\tvar i;\n\t\n\t\t\tfor (i = 0; i < segs.length; i++) {\n\t\t\t\tif (this.isRTL) {\n\t\t\t\t\tsegs[i].col = this.daysPerRow - 1 - segs[i].dayIndex;\n\t\t\t\t}\n\t\t\t\telse {\n\t\t\t\t\tsegs[i].col = segs[i].dayIndex;\n\t\t\t\t}\n\t\t\t}\n\t\n\t\t\treturn segs;\n\t\t},\n\t\n\t\n\t\tsliceRangeByTimes: function(range) {\n\t\t\tvar segs = [];\n\t\t\tvar seg;\n\t\t\tvar dayIndex;\n\t\t\tvar dayDate;\n\t\t\tvar dayRange;\n\t\n\t\t\tfor (dayIndex = 0; dayIndex < this.daysPerRow; dayIndex++) {\n\t\t\t\tdayDate = this.dayDates[dayIndex].clone(); // TODO: better API for this?\n\t\t\t\tdayRange = {\n\t\t\t\t\tstart: dayDate.clone().time(this.minTime),\n\t\t\t\t\tend: dayDate.clone().time(this.maxTime)\n\t\t\t\t};\n\t\t\t\tseg = intersectRanges(range, dayRange); // both will be ambig timezone\n\t\t\t\tif (seg) {\n\t\t\t\t\tseg.dayIndex = dayIndex;\n\t\t\t\t\tsegs.push(seg);\n\t\t\t\t}\n\t\t\t}\n\t\n\t\t\treturn segs;\n\t\t},\n\t\n\t\n\t\t/* Coordinates\n\t\t------------------------------------------------------------------------------------------------------------------*/\n\t\n\t\n\t\tupdateSize: function(isResize) { // NOT a standard Grid method\n\t\t\tthis.slatCoordCache.build();\n\t\n\t\t\tif (isResize) {\n\t\t\t\tthis.updateSegVerticals(\n\t\t\t\t\t[].concat(this.fgSegs || [], this.bgSegs || [], this.businessSegs || [])\n\t\t\t\t);\n\t\t\t}\n\t\t},\n\t\n\t\n\t\tgetTotalSlatHeight: function() {\n\t\t\treturn this.slatContainerEl.outerHeight();\n\t\t},\n\t\n\t\n\t\t// Computes the top coordinate, relative to the bounds of the grid, of the given date.\n\t\t// A `startOfDayDate` must be given for avoiding ambiguity over how to treat midnight.\n\t\tcomputeDateTop: function(date, startOfDayDate) {\n\t\t\treturn this.computeTimeTop(\n\t\t\t\tmoment.duration(\n\t\t\t\t\tdate - startOfDayDate.clone().stripTime()\n\t\t\t\t)\n\t\t\t);\n\t\t},\n\t\n\t\n\t\t// Computes the top coordinate, relative to the bounds of the grid, of the given time (a Duration).\n\t\tcomputeTimeTop: function(time) {\n\t\t\tvar len = this.slatEls.length;\n\t\t\tvar slatCoverage = (time - this.minTime) / this.slotDuration; // floating-point value of # of slots covered\n\t\t\tvar slatIndex;\n\t\t\tvar slatRemainder;\n\t\n\t\t\t// compute a floating-point number for how many slats should be progressed through.\n\t\t\t// from 0 to number of slats (inclusive)\n\t\t\t// constrained because minTime/maxTime might be customized.\n\t\t\tslatCoverage = Math.max(0, slatCoverage);\n\t\t\tslatCoverage = Math.min(len, slatCoverage);\n\t\n\t\t\t// an integer index of the furthest whole slat\n\t\t\t// from 0 to number slats (*exclusive*, so len-1)\n\t\t\tslatIndex = Math.floor(slatCoverage);\n\t\t\tslatIndex = Math.min(slatIndex, len - 1);\n\t\n\t\t\t// how much further through the slatIndex slat (from 0.0-1.0) must be covered in addition.\n\t\t\t// could be 1.0 if slatCoverage is covering *all* the slots\n\t\t\tslatRemainder = slatCoverage - slatIndex;\n\t\n\t\t\treturn this.slatCoordCache.getTopPosition(slatIndex) +\n\t\t\t\tthis.slatCoordCache.getHeight(slatIndex) * slatRemainder;\n\t\t},\n\t\n\t\n\t\n\t\t/* Event Drag Visualization\n\t\t------------------------------------------------------------------------------------------------------------------*/\n\t\n\t\n\t\t// Renders a visual indication of an event being dragged over the specified date(s).\n\t\t// A returned value of `true` signals that a mock \"helper\" event has been rendered.\n\t\trenderDrag: function(eventLocation, seg) {\n\t\n\t\t\tif (seg) { // if there is event information for this drag, render a helper event\n\t\n\t\t\t\t// returns mock event elements\n\t\t\t\t// signal that a helper has been rendered\n\t\t\t\treturn this.renderEventLocationHelper(eventLocation, seg);\n\t\t\t}\n\t\t\telse {\n\t\t\t\t// otherwise, just render a highlight\n\t\t\t\tthis.renderHighlight(this.eventToSpan(eventLocation));\n\t\t\t}\n\t\t},\n\t\n\t\n\t\t// Unrenders any visual indication of an event being dragged\n\t\tunrenderDrag: function() {\n\t\t\tthis.unrenderHelper();\n\t\t\tthis.unrenderHighlight();\n\t\t},\n\t\n\t\n\t\t/* Event Resize Visualization\n\t\t------------------------------------------------------------------------------------------------------------------*/\n\t\n\t\n\t\t// Renders a visual indication of an event being resized\n\t\trenderEventResize: function(eventLocation, seg) {\n\t\t\treturn this.renderEventLocationHelper(eventLocation, seg); // returns mock event elements\n\t\t},\n\t\n\t\n\t\t// Unrenders any visual indication of an event being resized\n\t\tunrenderEventResize: function() {\n\t\t\tthis.unrenderHelper();\n\t\t},\n\t\n\t\n\t\t/* Event Helper\n\t\t------------------------------------------------------------------------------------------------------------------*/\n\t\n\t\n\t\t// Renders a mock \"helper\" event. `sourceSeg` is the original segment object and might be null (an external drag)\n\t\trenderHelper: function(event, sourceSeg) {\n\t\t\treturn this.renderHelperSegs(this.eventToSegs(event), sourceSeg); // returns mock event elements\n\t\t},\n\t\n\t\n\t\t// Unrenders any mock helper event\n\t\tunrenderHelper: function() {\n\t\t\tthis.unrenderHelperSegs();\n\t\t},\n\t\n\t\n\t\t/* Business Hours\n\t\t------------------------------------------------------------------------------------------------------------------*/\n\t\n\t\n\t\trenderBusinessHours: function() {\n\t\t\tthis.renderBusinessSegs(\n\t\t\t\tthis.buildBusinessHourSegs()\n\t\t\t);\n\t\t},\n\t\n\t\n\t\tunrenderBusinessHours: function() {\n\t\t\tthis.unrenderBusinessSegs();\n\t\t},\n\t\n\t\n\t\t/* Now Indicator\n\t\t------------------------------------------------------------------------------------------------------------------*/\n\t\n\t\n\t\tgetNowIndicatorUnit: function() {\n\t\t\treturn 'minute'; // will refresh on the minute\n\t\t},\n\t\n\t\n\t\trenderNowIndicator: function(date) {\n\t\t\t// seg system might be overkill, but it handles scenario where line needs to be rendered\n\t\t\t// more than once because of columns with the same date (resources columns for example)\n\t\t\tvar segs = this.spanToSegs({ start: date, end: date });\n\t\t\tvar top = this.computeDateTop(date, date);\n\t\t\tvar nodes = [];\n\t\t\tvar i;\n\t\n\t\t\t// render lines within the columns\n\t\t\tfor (i = 0; i < segs.length; i++) {\n\t\t\t\tnodes.push($('
')\n\t\t\t\t\t.css('top', top)\n\t\t\t\t\t.appendTo(this.colContainerEls.eq(segs[i].col))[0]);\n\t\t\t}\n\t\n\t\t\t// render an arrow over the axis\n\t\t\tif (segs.length > 0) { // is the current time in view?\n\t\t\t\tnodes.push($('
')\n\t\t\t\t\t.css('top', top)\n\t\t\t\t\t.appendTo(this.el.find('.fc-content-skeleton'))[0]);\n\t\t\t}\n\t\n\t\t\tthis.nowIndicatorEls = $(nodes);\n\t\t},\n\t\n\t\n\t\tunrenderNowIndicator: function() {\n\t\t\tif (this.nowIndicatorEls) {\n\t\t\t\tthis.nowIndicatorEls.remove();\n\t\t\t\tthis.nowIndicatorEls = null;\n\t\t\t}\n\t\t},\n\t\n\t\n\t\t/* Selection\n\t\t------------------------------------------------------------------------------------------------------------------*/\n\t\n\t\n\t\t// Renders a visual indication of a selection. Overrides the default, which was to simply render a highlight.\n\t\trenderSelection: function(span) {\n\t\t\tif (this.view.opt('selectHelper')) { // this setting signals that a mock helper event should be rendered\n\t\n\t\t\t\t// normally acceps an eventLocation, span has a start/end, which is good enough\n\t\t\t\tthis.renderEventLocationHelper(span);\n\t\t\t}\n\t\t\telse {\n\t\t\t\tthis.renderHighlight(span);\n\t\t\t}\n\t\t},\n\t\n\t\n\t\t// Unrenders any visual indication of a selection\n\t\tunrenderSelection: function() {\n\t\t\tthis.unrenderHelper();\n\t\t\tthis.unrenderHighlight();\n\t\t},\n\t\n\t\n\t\t/* Highlight\n\t\t------------------------------------------------------------------------------------------------------------------*/\n\t\n\t\n\t\trenderHighlight: function(span) {\n\t\t\tthis.renderHighlightSegs(this.spanToSegs(span));\n\t\t},\n\t\n\t\n\t\tunrenderHighlight: function() {\n\t\t\tthis.unrenderHighlightSegs();\n\t\t}\n\t\n\t});\n\t\n\t;;\n\t\n\t/* Methods for rendering SEGMENTS, pieces of content that live on the view\n\t ( this file is no longer just for events )\n\t----------------------------------------------------------------------------------------------------------------------*/\n\t\n\tTimeGrid.mixin({\n\t\n\t\tcolContainerEls: null, // containers for each column\n\t\n\t\t// inner-containers for each column where different types of segs live\n\t\tfgContainerEls: null,\n\t\tbgContainerEls: null,\n\t\thelperContainerEls: null,\n\t\thighlightContainerEls: null,\n\t\tbusinessContainerEls: null,\n\t\n\t\t// arrays of different types of displayed segments\n\t\tfgSegs: null,\n\t\tbgSegs: null,\n\t\thelperSegs: null,\n\t\thighlightSegs: null,\n\t\tbusinessSegs: null,\n\t\n\t\n\t\t// Renders the DOM that the view's content will live in\n\t\trenderContentSkeleton: function() {\n\t\t\tvar cellHtml = '';\n\t\t\tvar i;\n\t\t\tvar skeletonEl;\n\t\n\t\t\tfor (i = 0; i < this.colCnt; i++) {\n\t\t\t\tcellHtml +=\n\t\t\t\t\t'' +\n\t\t\t\t\t\t'
' +\n\t\t\t\t\t\t\t'
' +\n\t\t\t\t\t\t\t'
' +\n\t\t\t\t\t\t\t'
' +\n\t\t\t\t\t\t\t'
' +\n\t\t\t\t\t\t\t'
' +\n\t\t\t\t\t\t'
' +\n\t\t\t\t\t'';\n\t\t\t}\n\t\n\t\t\tskeletonEl = $(\n\t\t\t\t'
' +\n\t\t\t\t\t'' +\n\t\t\t\t\t\t'' + cellHtml + '' +\n\t\t\t\t\t'
' +\n\t\t\t\t'
'\n\t\t\t);\n\t\n\t\t\tthis.colContainerEls = skeletonEl.find('.fc-content-col');\n\t\t\tthis.helperContainerEls = skeletonEl.find('.fc-helper-container');\n\t\t\tthis.fgContainerEls = skeletonEl.find('.fc-event-container:not(.fc-helper-container)');\n\t\t\tthis.bgContainerEls = skeletonEl.find('.fc-bgevent-container');\n\t\t\tthis.highlightContainerEls = skeletonEl.find('.fc-highlight-container');\n\t\t\tthis.businessContainerEls = skeletonEl.find('.fc-business-container');\n\t\n\t\t\tthis.bookendCells(skeletonEl.find('tr')); // TODO: do this on string level\n\t\t\tthis.el.append(skeletonEl);\n\t\t},\n\t\n\t\n\t\t/* Foreground Events\n\t\t------------------------------------------------------------------------------------------------------------------*/\n\t\n\t\n\t\trenderFgSegs: function(segs) {\n\t\t\tsegs = this.renderFgSegsIntoContainers(segs, this.fgContainerEls);\n\t\t\tthis.fgSegs = segs;\n\t\t\treturn segs; // needed for Grid::renderEvents\n\t\t},\n\t\n\t\n\t\tunrenderFgSegs: function() {\n\t\t\tthis.unrenderNamedSegs('fgSegs');\n\t\t},\n\t\n\t\n\t\t/* Foreground Helper Events\n\t\t------------------------------------------------------------------------------------------------------------------*/\n\t\n\t\n\t\trenderHelperSegs: function(segs, sourceSeg) {\n\t\t\tvar helperEls = [];\n\t\t\tvar i, seg;\n\t\t\tvar sourceEl;\n\t\n\t\t\tsegs = this.renderFgSegsIntoContainers(segs, this.helperContainerEls);\n\t\n\t\t\t// Try to make the segment that is in the same row as sourceSeg look the same\n\t\t\tfor (i = 0; i < segs.length; i++) {\n\t\t\t\tseg = segs[i];\n\t\t\t\tif (sourceSeg && sourceSeg.col === seg.col) {\n\t\t\t\t\tsourceEl = sourceSeg.el;\n\t\t\t\t\tseg.el.css({\n\t\t\t\t\t\tleft: sourceEl.css('left'),\n\t\t\t\t\t\tright: sourceEl.css('right'),\n\t\t\t\t\t\t'margin-left': sourceEl.css('margin-left'),\n\t\t\t\t\t\t'margin-right': sourceEl.css('margin-right')\n\t\t\t\t\t});\n\t\t\t\t}\n\t\t\t\thelperEls.push(seg.el[0]);\n\t\t\t}\n\t\n\t\t\tthis.helperSegs = segs;\n\t\n\t\t\treturn $(helperEls); // must return rendered helpers\n\t\t},\n\t\n\t\n\t\tunrenderHelperSegs: function() {\n\t\t\tthis.unrenderNamedSegs('helperSegs');\n\t\t},\n\t\n\t\n\t\t/* Background Events\n\t\t------------------------------------------------------------------------------------------------------------------*/\n\t\n\t\n\t\trenderBgSegs: function(segs) {\n\t\t\tsegs = this.renderFillSegEls('bgEvent', segs); // TODO: old fill system\n\t\t\tthis.updateSegVerticals(segs);\n\t\t\tthis.attachSegsByCol(this.groupSegsByCol(segs), this.bgContainerEls);\n\t\t\tthis.bgSegs = segs;\n\t\t\treturn segs; // needed for Grid::renderEvents\n\t\t},\n\t\n\t\n\t\tunrenderBgSegs: function() {\n\t\t\tthis.unrenderNamedSegs('bgSegs');\n\t\t},\n\t\n\t\n\t\t/* Highlight\n\t\t------------------------------------------------------------------------------------------------------------------*/\n\t\n\t\n\t\trenderHighlightSegs: function(segs) {\n\t\t\tsegs = this.renderFillSegEls('highlight', segs); // TODO: old fill system\n\t\t\tthis.updateSegVerticals(segs);\n\t\t\tthis.attachSegsByCol(this.groupSegsByCol(segs), this.highlightContainerEls);\n\t\t\tthis.highlightSegs = segs;\n\t\t},\n\t\n\t\n\t\tunrenderHighlightSegs: function() {\n\t\t\tthis.unrenderNamedSegs('highlightSegs');\n\t\t},\n\t\n\t\n\t\t/* Business Hours\n\t\t------------------------------------------------------------------------------------------------------------------*/\n\t\n\t\n\t\trenderBusinessSegs: function(segs) {\n\t\t\tsegs = this.renderFillSegEls('businessHours', segs); // TODO: old fill system\n\t\t\tthis.updateSegVerticals(segs);\n\t\t\tthis.attachSegsByCol(this.groupSegsByCol(segs), this.businessContainerEls);\n\t\t\tthis.businessSegs = segs;\n\t\t},\n\t\n\t\n\t\tunrenderBusinessSegs: function() {\n\t\t\tthis.unrenderNamedSegs('businessSegs');\n\t\t},\n\t\n\t\n\t\t/* Seg Rendering Utils\n\t\t------------------------------------------------------------------------------------------------------------------*/\n\t\n\t\n\t\t// Given a flat array of segments, return an array of sub-arrays, grouped by each segment's col\n\t\tgroupSegsByCol: function(segs) {\n\t\t\tvar segsByCol = [];\n\t\t\tvar i;\n\t\n\t\t\tfor (i = 0; i < this.colCnt; i++) {\n\t\t\t\tsegsByCol.push([]);\n\t\t\t}\n\t\n\t\t\tfor (i = 0; i < segs.length; i++) {\n\t\t\t\tsegsByCol[segs[i].col].push(segs[i]);\n\t\t\t}\n\t\n\t\t\treturn segsByCol;\n\t\t},\n\t\n\t\n\t\t// Given segments grouped by column, insert the segments' elements into a parallel array of container\n\t\t// elements, each living within a column.\n\t\tattachSegsByCol: function(segsByCol, containerEls) {\n\t\t\tvar col;\n\t\t\tvar segs;\n\t\t\tvar i;\n\t\n\t\t\tfor (col = 0; col < this.colCnt; col++) { // iterate each column grouping\n\t\t\t\tsegs = segsByCol[col];\n\t\n\t\t\t\tfor (i = 0; i < segs.length; i++) {\n\t\t\t\t\tcontainerEls.eq(col).append(segs[i].el);\n\t\t\t\t}\n\t\t\t}\n\t\t},\n\t\n\t\n\t\t// Given the name of a property of `this` object, assumed to be an array of segments,\n\t\t// loops through each segment and removes from DOM. Will null-out the property afterwards.\n\t\tunrenderNamedSegs: function(propName) {\n\t\t\tvar segs = this[propName];\n\t\t\tvar i;\n\t\n\t\t\tif (segs) {\n\t\t\t\tfor (i = 0; i < segs.length; i++) {\n\t\t\t\t\tsegs[i].el.remove();\n\t\t\t\t}\n\t\t\t\tthis[propName] = null;\n\t\t\t}\n\t\t},\n\t\n\t\n\t\n\t\t/* Foreground Event Rendering Utils\n\t\t------------------------------------------------------------------------------------------------------------------*/\n\t\n\t\n\t\t// Given an array of foreground segments, render a DOM element for each, computes position,\n\t\t// and attaches to the column inner-container elements.\n\t\trenderFgSegsIntoContainers: function(segs, containerEls) {\n\t\t\tvar segsByCol;\n\t\t\tvar col;\n\t\n\t\t\tsegs = this.renderFgSegEls(segs); // will call fgSegHtml\n\t\t\tsegsByCol = this.groupSegsByCol(segs);\n\t\n\t\t\tfor (col = 0; col < this.colCnt; col++) {\n\t\t\t\tthis.updateFgSegCoords(segsByCol[col]);\n\t\t\t}\n\t\n\t\t\tthis.attachSegsByCol(segsByCol, containerEls);\n\t\n\t\t\treturn segs;\n\t\t},\n\t\n\t\n\t\t// Renders the HTML for a single event segment's default rendering\n\t\tfgSegHtml: function(seg, disableResizing) {\n\t\t\tvar view = this.view;\n\t\t\tvar event = seg.event;\n\t\t\tvar isDraggable = view.isEventDraggable(event);\n\t\t\tvar isResizableFromStart = !disableResizing && seg.isStart && view.isEventResizableFromStart(event);\n\t\t\tvar isResizableFromEnd = !disableResizing && seg.isEnd && view.isEventResizableFromEnd(event);\n\t\t\tvar classes = this.getSegClasses(seg, isDraggable, isResizableFromStart || isResizableFromEnd);\n\t\t\tvar skinCss = cssToStr(this.getSegSkinCss(seg));\n\t\t\tvar timeText;\n\t\t\tvar fullTimeText; // more verbose time text. for the print stylesheet\n\t\t\tvar startTimeText; // just the start time text\n\t\n\t\t\tclasses.unshift('fc-time-grid-event', 'fc-v-event');\n\t\n\t\t\tif (view.isMultiDayEvent(event)) { // if the event appears to span more than one day...\n\t\t\t\t// Don't display time text on segments that run entirely through a day.\n\t\t\t\t// That would appear as midnight-midnight and would look dumb.\n\t\t\t\t// Otherwise, display the time text for the *segment's* times (like 6pm-midnight or midnight-10am)\n\t\t\t\tif (seg.isStart || seg.isEnd) {\n\t\t\t\t\ttimeText = this.getEventTimeText(seg);\n\t\t\t\t\tfullTimeText = this.getEventTimeText(seg, 'LT');\n\t\t\t\t\tstartTimeText = this.getEventTimeText(seg, null, false); // displayEnd=false\n\t\t\t\t}\n\t\t\t} else {\n\t\t\t\t// Display the normal time text for the *event's* times\n\t\t\t\ttimeText = this.getEventTimeText(event);\n\t\t\t\tfullTimeText = this.getEventTimeText(event, 'LT');\n\t\t\t\tstartTimeText = this.getEventTimeText(event, null, false); // displayEnd=false\n\t\t\t}\n\t\n\t\t\treturn '
' +\n\t\t\t\t\t'
' +\n\t\t\t\t\t\t(timeText ?\n\t\t\t\t\t\t\t'
' +\n\t\t\t\t\t\t\t\t'' + htmlEscape(timeText) + '' +\n\t\t\t\t\t\t\t'
' :\n\t\t\t\t\t\t\t''\n\t\t\t\t\t\t\t) +\n\t\t\t\t\t\t(event.title ?\n\t\t\t\t\t\t\t'
' +\n\t\t\t\t\t\t\t\thtmlEscape(event.title) +\n\t\t\t\t\t\t\t'
' :\n\t\t\t\t\t\t\t''\n\t\t\t\t\t\t\t) +\n\t\t\t\t\t'
' +\n\t\t\t\t\t'
' +\n\t\t\t\t\t/* TODO: write CSS for this\n\t\t\t\t\t(isResizableFromStart ?\n\t\t\t\t\t\t'
' :\n\t\t\t\t\t\t''\n\t\t\t\t\t\t) +\n\t\t\t\t\t*/\n\t\t\t\t\t(isResizableFromEnd ?\n\t\t\t\t\t\t'
' :\n\t\t\t\t\t\t''\n\t\t\t\t\t\t) +\n\t\t\t\t'';\n\t\t},\n\t\n\t\n\t\t/* Seg Position Utils\n\t\t------------------------------------------------------------------------------------------------------------------*/\n\t\n\t\n\t\t// Refreshes the CSS top/bottom coordinates for each segment element.\n\t\t// Works when called after initial render, after a window resize/zoom for example.\n\t\tupdateSegVerticals: function(segs) {\n\t\t\tthis.computeSegVerticals(segs);\n\t\t\tthis.assignSegVerticals(segs);\n\t\t},\n\t\n\t\n\t\t// For each segment in an array, computes and assigns its top and bottom properties\n\t\tcomputeSegVerticals: function(segs) {\n\t\t\tvar i, seg;\n\t\n\t\t\tfor (i = 0; i < segs.length; i++) {\n\t\t\t\tseg = segs[i];\n\t\t\t\tseg.top = this.computeDateTop(seg.start, seg.start);\n\t\t\t\tseg.bottom = this.computeDateTop(seg.end, seg.start);\n\t\t\t}\n\t\t},\n\t\n\t\n\t\t// Given segments that already have their top/bottom properties computed, applies those values to\n\t\t// the segments' elements.\n\t\tassignSegVerticals: function(segs) {\n\t\t\tvar i, seg;\n\t\n\t\t\tfor (i = 0; i < segs.length; i++) {\n\t\t\t\tseg = segs[i];\n\t\t\t\tseg.el.css(this.generateSegVerticalCss(seg));\n\t\t\t}\n\t\t},\n\t\n\t\n\t\t// Generates an object with CSS properties for the top/bottom coordinates of a segment element\n\t\tgenerateSegVerticalCss: function(seg) {\n\t\t\treturn {\n\t\t\t\ttop: seg.top,\n\t\t\t\tbottom: -seg.bottom // flipped because needs to be space beyond bottom edge of event container\n\t\t\t};\n\t\t},\n\t\n\t\n\t\t/* Foreground Event Positioning Utils\n\t\t------------------------------------------------------------------------------------------------------------------*/\n\t\n\t\n\t\t// Given segments that are assumed to all live in the *same column*,\n\t\t// compute their verical/horizontal coordinates and assign to their elements.\n\t\tupdateFgSegCoords: function(segs) {\n\t\t\tthis.computeSegVerticals(segs); // horizontals relies on this\n\t\t\tthis.computeFgSegHorizontals(segs); // compute horizontal coordinates, z-index's, and reorder the array\n\t\t\tthis.assignSegVerticals(segs);\n\t\t\tthis.assignFgSegHorizontals(segs);\n\t\t},\n\t\n\t\n\t\t// Given an array of segments that are all in the same column, sets the backwardCoord and forwardCoord on each.\n\t\t// NOTE: Also reorders the given array by date!\n\t\tcomputeFgSegHorizontals: function(segs) {\n\t\t\tvar levels;\n\t\t\tvar level0;\n\t\t\tvar i;\n\t\n\t\t\tthis.sortEventSegs(segs); // order by certain criteria\n\t\t\tlevels = buildSlotSegLevels(segs);\n\t\t\tcomputeForwardSlotSegs(levels);\n\t\n\t\t\tif ((level0 = levels[0])) {\n\t\n\t\t\t\tfor (i = 0; i < level0.length; i++) {\n\t\t\t\t\tcomputeSlotSegPressures(level0[i]);\n\t\t\t\t}\n\t\n\t\t\t\tfor (i = 0; i < level0.length; i++) {\n\t\t\t\t\tthis.computeFgSegForwardBack(level0[i], 0, 0);\n\t\t\t\t}\n\t\t\t}\n\t\t},\n\t\n\t\n\t\t// Calculate seg.forwardCoord and seg.backwardCoord for the segment, where both values range\n\t\t// from 0 to 1. If the calendar is left-to-right, the seg.backwardCoord maps to \"left\" and\n\t\t// seg.forwardCoord maps to \"right\" (via percentage). Vice-versa if the calendar is right-to-left.\n\t\t//\n\t\t// The segment might be part of a \"series\", which means consecutive segments with the same pressure\n\t\t// who's width is unknown until an edge has been hit. `seriesBackwardPressure` is the number of\n\t\t// segments behind this one in the current series, and `seriesBackwardCoord` is the starting\n\t\t// coordinate of the first segment in the series.\n\t\tcomputeFgSegForwardBack: function(seg, seriesBackwardPressure, seriesBackwardCoord) {\n\t\t\tvar forwardSegs = seg.forwardSegs;\n\t\t\tvar i;\n\t\n\t\t\tif (seg.forwardCoord === undefined) { // not already computed\n\t\n\t\t\t\tif (!forwardSegs.length) {\n\t\n\t\t\t\t\t// if there are no forward segments, this segment should butt up against the edge\n\t\t\t\t\tseg.forwardCoord = 1;\n\t\t\t\t}\n\t\t\t\telse {\n\t\n\t\t\t\t\t// sort highest pressure first\n\t\t\t\t\tthis.sortForwardSegs(forwardSegs);\n\t\n\t\t\t\t\t// this segment's forwardCoord will be calculated from the backwardCoord of the\n\t\t\t\t\t// highest-pressure forward segment.\n\t\t\t\t\tthis.computeFgSegForwardBack(forwardSegs[0], seriesBackwardPressure + 1, seriesBackwardCoord);\n\t\t\t\t\tseg.forwardCoord = forwardSegs[0].backwardCoord;\n\t\t\t\t}\n\t\n\t\t\t\t// calculate the backwardCoord from the forwardCoord. consider the series\n\t\t\t\tseg.backwardCoord = seg.forwardCoord -\n\t\t\t\t\t(seg.forwardCoord - seriesBackwardCoord) / // available width for series\n\t\t\t\t\t(seriesBackwardPressure + 1); // # of segments in the series\n\t\n\t\t\t\t// use this segment's coordinates to computed the coordinates of the less-pressurized\n\t\t\t\t// forward segments\n\t\t\t\tfor (i=0; i seg2.top && seg1.top < seg2.bottom;\n\t}\n\t\n\t;;\n\t\n\t/* An abstract class from which other views inherit from\n\t----------------------------------------------------------------------------------------------------------------------*/\n\t\n\tvar View = FC.View = Class.extend(EmitterMixin, ListenerMixin, {\n\t\n\t\ttype: null, // subclass' view name (string)\n\t\tname: null, // deprecated. use `type` instead\n\t\ttitle: null, // the text that will be displayed in the header's title\n\t\n\t\tcalendar: null, // owner Calendar object\n\t\toptions: null, // hash containing all options. already merged with view-specific-options\n\t\tel: null, // the view's containing element. set by Calendar\n\t\n\t\tdisplaying: null, // a promise representing the state of rendering. null if no render requested\n\t\tisSkeletonRendered: false,\n\t\tisEventsRendered: false,\n\t\n\t\t// range the view is actually displaying (moments)\n\t\tstart: null,\n\t\tend: null, // exclusive\n\t\n\t\t// range the view is formally responsible for (moments)\n\t\t// may be different from start/end. for example, a month view might have 1st-31st, excluding padded dates\n\t\tintervalStart: null,\n\t\tintervalEnd: null, // exclusive\n\t\tintervalDuration: null,\n\t\tintervalUnit: null, // name of largest unit being displayed, like \"month\" or \"week\"\n\t\n\t\tisRTL: false,\n\t\tisSelected: false, // boolean whether a range of time is user-selected or not\n\t\tselectedEvent: null,\n\t\n\t\teventOrderSpecs: null, // criteria for ordering events when they have same date/time\n\t\n\t\t// classNames styled by jqui themes\n\t\twidgetHeaderClass: null,\n\t\twidgetContentClass: null,\n\t\thighlightStateClass: null,\n\t\n\t\t// for date utils, computed from options\n\t\tnextDayThreshold: null,\n\t\tisHiddenDayHash: null,\n\t\n\t\t// now indicator\n\t\tisNowIndicatorRendered: null,\n\t\tinitialNowDate: null, // result first getNow call\n\t\tinitialNowQueriedMs: null, // ms time the getNow was called\n\t\tnowIndicatorTimeoutID: null, // for refresh timing of now indicator\n\t\tnowIndicatorIntervalID: null, // \"\n\t\n\t\n\t\tconstructor: function(calendar, type, options, intervalDuration) {\n\t\n\t\t\tthis.calendar = calendar;\n\t\t\tthis.type = this.name = type; // .name is deprecated\n\t\t\tthis.options = options;\n\t\t\tthis.intervalDuration = intervalDuration || moment.duration(1, 'day');\n\t\n\t\t\tthis.nextDayThreshold = moment.duration(this.opt('nextDayThreshold'));\n\t\t\tthis.initThemingProps();\n\t\t\tthis.initHiddenDays();\n\t\t\tthis.isRTL = this.opt('isRTL');\n\t\n\t\t\tthis.eventOrderSpecs = parseFieldSpecs(this.opt('eventOrder'));\n\t\n\t\t\tthis.initialize();\n\t\t},\n\t\n\t\n\t\t// A good place for subclasses to initialize member variables\n\t\tinitialize: function() {\n\t\t\t// subclasses can implement\n\t\t},\n\t\n\t\n\t\t// Retrieves an option with the given name\n\t\topt: function(name) {\n\t\t\treturn this.options[name];\n\t\t},\n\t\n\t\n\t\t// Triggers handlers that are view-related. Modifies args before passing to calendar.\n\t\ttrigger: function(name, thisObj) { // arguments beyond thisObj are passed along\n\t\t\tvar calendar = this.calendar;\n\t\n\t\t\treturn calendar.trigger.apply(\n\t\t\t\tcalendar,\n\t\t\t\t[name, thisObj || this].concat(\n\t\t\t\t\tArray.prototype.slice.call(arguments, 2), // arguments beyond thisObj\n\t\t\t\t\t[ this ] // always make the last argument a reference to the view. TODO: deprecate\n\t\t\t\t)\n\t\t\t);\n\t\t},\n\t\n\t\n\t\t/* Dates\n\t\t------------------------------------------------------------------------------------------------------------------*/\n\t\n\t\n\t\t// Updates all internal dates to center around the given current unzoned date.\n\t\tsetDate: function(date) {\n\t\t\tthis.setRange(this.computeRange(date));\n\t\t},\n\t\n\t\n\t\t// Updates all internal dates for displaying the given unzoned range.\n\t\tsetRange: function(range) {\n\t\t\t$.extend(this, range); // assigns every property to this object's member variables\n\t\t\tthis.updateTitle();\n\t\t},\n\t\n\t\n\t\t// Given a single current unzoned date, produce information about what range to display.\n\t\t// Subclasses can override. Must return all properties.\n\t\tcomputeRange: function(date) {\n\t\t\tvar intervalUnit = computeIntervalUnit(this.intervalDuration);\n\t\t\tvar intervalStart = date.clone().startOf(intervalUnit);\n\t\t\tvar intervalEnd = intervalStart.clone().add(this.intervalDuration);\n\t\t\tvar start, end;\n\t\n\t\t\t// normalize the range's time-ambiguity\n\t\t\tif (/year|month|week|day/.test(intervalUnit)) { // whole-days?\n\t\t\t\tintervalStart.stripTime();\n\t\t\t\tintervalEnd.stripTime();\n\t\t\t}\n\t\t\telse { // needs to have a time?\n\t\t\t\tif (!intervalStart.hasTime()) {\n\t\t\t\t\tintervalStart = this.calendar.time(0); // give 00:00 time\n\t\t\t\t}\n\t\t\t\tif (!intervalEnd.hasTime()) {\n\t\t\t\t\tintervalEnd = this.calendar.time(0); // give 00:00 time\n\t\t\t\t}\n\t\t\t}\n\t\n\t\t\tstart = intervalStart.clone();\n\t\t\tstart = this.skipHiddenDays(start);\n\t\t\tend = intervalEnd.clone();\n\t\t\tend = this.skipHiddenDays(end, -1, true); // exclusively move backwards\n\t\n\t\t\treturn {\n\t\t\t\tintervalUnit: intervalUnit,\n\t\t\t\tintervalStart: intervalStart,\n\t\t\t\tintervalEnd: intervalEnd,\n\t\t\t\tstart: start,\n\t\t\t\tend: end\n\t\t\t};\n\t\t},\n\t\n\t\n\t\t// Computes the new date when the user hits the prev button, given the current date\n\t\tcomputePrevDate: function(date) {\n\t\t\treturn this.massageCurrentDate(\n\t\t\t\tdate.clone().startOf(this.intervalUnit).subtract(this.intervalDuration), -1\n\t\t\t);\n\t\t},\n\t\n\t\n\t\t// Computes the new date when the user hits the next button, given the current date\n\t\tcomputeNextDate: function(date) {\n\t\t\treturn this.massageCurrentDate(\n\t\t\t\tdate.clone().startOf(this.intervalUnit).add(this.intervalDuration)\n\t\t\t);\n\t\t},\n\t\n\t\n\t\t// Given an arbitrarily calculated current date of the calendar, returns a date that is ensured to be completely\n\t\t// visible. `direction` is optional and indicates which direction the current date was being\n\t\t// incremented or decremented (1 or -1).\n\t\tmassageCurrentDate: function(date, direction) {\n\t\t\tif (this.intervalDuration.as('days') <= 1) { // if the view displays a single day or smaller\n\t\t\t\tif (this.isHiddenDay(date)) {\n\t\t\t\t\tdate = this.skipHiddenDays(date, direction);\n\t\t\t\t\tdate.startOf('day');\n\t\t\t\t}\n\t\t\t}\n\t\n\t\t\treturn date;\n\t\t},\n\t\n\t\n\t\t/* Title and Date Formatting\n\t\t------------------------------------------------------------------------------------------------------------------*/\n\t\n\t\n\t\t// Sets the view's title property to the most updated computed value\n\t\tupdateTitle: function() {\n\t\t\tthis.title = this.computeTitle();\n\t\t},\n\t\n\t\n\t\t// Computes what the title at the top of the calendar should be for this view\n\t\tcomputeTitle: function() {\n\t\t\treturn this.formatRange(\n\t\t\t\t{\n\t\t\t\t\t// in case intervalStart/End has a time, make sure timezone is correct\n\t\t\t\t\tstart: this.calendar.applyTimezone(this.intervalStart),\n\t\t\t\t\tend: this.calendar.applyTimezone(this.intervalEnd)\n\t\t\t\t},\n\t\t\t\tthis.opt('titleFormat') || this.computeTitleFormat(),\n\t\t\t\tthis.opt('titleRangeSeparator')\n\t\t\t);\n\t\t},\n\t\n\t\n\t\t// Generates the format string that should be used to generate the title for the current date range.\n\t\t// Attempts to compute the most appropriate format if not explicitly specified with `titleFormat`.\n\t\tcomputeTitleFormat: function() {\n\t\t\tif (this.intervalUnit == 'year') {\n\t\t\t\treturn 'YYYY';\n\t\t\t}\n\t\t\telse if (this.intervalUnit == 'month') {\n\t\t\t\treturn this.opt('monthYearFormat'); // like \"September 2014\"\n\t\t\t}\n\t\t\telse if (this.intervalDuration.as('days') > 1) {\n\t\t\t\treturn 'll'; // multi-day range. shorter, like \"Sep 9 - 10 2014\"\n\t\t\t}\n\t\t\telse {\n\t\t\t\treturn 'LL'; // one day. longer, like \"September 9 2014\"\n\t\t\t}\n\t\t},\n\t\n\t\n\t\t// Utility for formatting a range. Accepts a range object, formatting string, and optional separator.\n\t\t// Displays all-day ranges naturally, with an inclusive end. Takes the current isRTL into account.\n\t\t// The timezones of the dates within `range` will be respected.\n\t\tformatRange: function(range, formatStr, separator) {\n\t\t\tvar end = range.end;\n\t\n\t\t\tif (!end.hasTime()) { // all-day?\n\t\t\t\tend = end.clone().subtract(1); // convert to inclusive. last ms of previous day\n\t\t\t}\n\t\n\t\t\treturn formatRange(range.start, end, formatStr, separator, this.opt('isRTL'));\n\t\t},\n\t\n\t\n\t\t/* Rendering\n\t\t------------------------------------------------------------------------------------------------------------------*/\n\t\n\t\n\t\t// Sets the container element that the view should render inside of.\n\t\t// Does other DOM-related initializations.\n\t\tsetElement: function(el) {\n\t\t\tthis.el = el;\n\t\t\tthis.bindGlobalHandlers();\n\t\t},\n\t\n\t\n\t\t// Removes the view's container element from the DOM, clearing any content beforehand.\n\t\t// Undoes any other DOM-related attachments.\n\t\tremoveElement: function() {\n\t\t\tthis.clear(); // clears all content\n\t\n\t\t\t// clean up the skeleton\n\t\t\tif (this.isSkeletonRendered) {\n\t\t\t\tthis.unrenderSkeleton();\n\t\t\t\tthis.isSkeletonRendered = false;\n\t\t\t}\n\t\n\t\t\tthis.unbindGlobalHandlers();\n\t\n\t\t\tthis.el.remove();\n\t\n\t\t\t// NOTE: don't null-out this.el in case the View was destroyed within an API callback.\n\t\t\t// We don't null-out the View's other jQuery element references upon destroy,\n\t\t\t// so we shouldn't kill this.el either.\n\t\t},\n\t\n\t\n\t\t// Does everything necessary to display the view centered around the given unzoned date.\n\t\t// Does every type of rendering EXCEPT rendering events.\n\t\t// Is asychronous and returns a promise.\n\t\tdisplay: function(date, explicitScrollState) {\n\t\t\tvar _this = this;\n\t\t\tvar prevScrollState = null;\n\t\n\t\t\tif (explicitScrollState != null && this.displaying) { // don't need prevScrollState if explicitScrollState\n\t\t\t\tprevScrollState = this.queryScroll();\n\t\t\t}\n\t\n\t\t\tthis.calendar.freezeContentHeight();\n\t\n\t\t\treturn syncThen(this.clear(), function() { // clear the content first\n\t\t\t\treturn (\n\t\t\t\t\t_this.displaying =\n\t\t\t\t\t\tsyncThen(_this.displayView(date), function() { // displayView might return a promise\n\t\n\t\t\t\t\t\t\t// caller of display() wants a specific scroll state?\n\t\t\t\t\t\t\tif (explicitScrollState != null) {\n\t\t\t\t\t\t\t\t// we make an assumption that this is NOT the initial render,\n\t\t\t\t\t\t\t\t// and thus don't need forceScroll (is inconveniently asynchronous)\n\t\t\t\t\t\t\t\t_this.setScroll(explicitScrollState);\n\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\telse {\n\t\t\t\t\t\t\t\t_this.forceScroll(_this.computeInitialScroll(prevScrollState));\n\t\t\t\t\t\t\t}\n\t\n\t\t\t\t\t\t\t_this.calendar.unfreezeContentHeight();\n\t\t\t\t\t\t\t_this.triggerRender();\n\t\t\t\t\t\t})\n\t\t\t\t);\n\t\t\t});\n\t\t},\n\t\n\t\n\t\t// Does everything necessary to clear the content of the view.\n\t\t// Clears dates and events. Does not clear the skeleton.\n\t\t// Is asychronous and returns a promise.\n\t\tclear: function() {\n\t\t\tvar _this = this;\n\t\t\tvar displaying = this.displaying;\n\t\n\t\t\tif (displaying) { // previously displayed, or in the process of being displayed?\n\t\t\t\treturn syncThen(displaying, function() { // wait for the display to finish\n\t\t\t\t\t_this.displaying = null;\n\t\t\t\t\t_this.clearEvents();\n\t\t\t\t\treturn _this.clearView(); // might return a promise. chain it\n\t\t\t\t});\n\t\t\t}\n\t\t\telse {\n\t\t\t\treturn $.when(); // an immediately-resolved promise\n\t\t\t}\n\t\t},\n\t\n\t\n\t\t// Displays the view's non-event content, such as date-related content or anything required by events.\n\t\t// Renders the view's non-content skeleton if necessary.\n\t\t// Can be asynchronous and return a promise.\n\t\tdisplayView: function(date) {\n\t\t\tif (!this.isSkeletonRendered) {\n\t\t\t\tthis.renderSkeleton();\n\t\t\t\tthis.isSkeletonRendered = true;\n\t\t\t}\n\t\t\tif (date) {\n\t\t\t\tthis.setDate(date);\n\t\t\t}\n\t\t\tif (this.render) {\n\t\t\t\tthis.render(); // TODO: deprecate\n\t\t\t}\n\t\t\tthis.renderDates();\n\t\t\tthis.updateSize();\n\t\t\tthis.renderBusinessHours(); // might need coordinates, so should go after updateSize()\n\t\t\tthis.startNowIndicator();\n\t\t},\n\t\n\t\n\t\t// Unrenders the view content that was rendered in displayView.\n\t\t// Can be asynchronous and return a promise.\n\t\tclearView: function() {\n\t\t\tthis.unselect();\n\t\t\tthis.stopNowIndicator();\n\t\t\tthis.triggerUnrender();\n\t\t\tthis.unrenderBusinessHours();\n\t\t\tthis.unrenderDates();\n\t\t\tif (this.destroy) {\n\t\t\t\tthis.destroy(); // TODO: deprecate\n\t\t\t}\n\t\t},\n\t\n\t\n\t\t// Renders the basic structure of the view before any content is rendered\n\t\trenderSkeleton: function() {\n\t\t\t// subclasses should implement\n\t\t},\n\t\n\t\n\t\t// Unrenders the basic structure of the view\n\t\tunrenderSkeleton: function() {\n\t\t\t// subclasses should implement\n\t\t},\n\t\n\t\n\t\t// Renders the view's date-related content.\n\t\t// Assumes setRange has already been called and the skeleton has already been rendered.\n\t\trenderDates: function() {\n\t\t\t// subclasses should implement\n\t\t},\n\t\n\t\n\t\t// Unrenders the view's date-related content\n\t\tunrenderDates: function() {\n\t\t\t// subclasses should override\n\t\t},\n\t\n\t\n\t\t// Signals that the view's content has been rendered\n\t\ttriggerRender: function() {\n\t\t\tthis.trigger('viewRender', this, this, this.el);\n\t\t},\n\t\n\t\n\t\t// Signals that the view's content is about to be unrendered\n\t\ttriggerUnrender: function() {\n\t\t\tthis.trigger('viewDestroy', this, this, this.el);\n\t\t},\n\t\n\t\n\t\t// Binds DOM handlers to elements that reside outside the view container, such as the document\n\t\tbindGlobalHandlers: function() {\n\t\t\tthis.listenTo($(document), 'mousedown', this.handleDocumentMousedown);\n\t\t\tthis.listenTo($(document), 'touchstart', this.processUnselect);\n\t\t},\n\t\n\t\n\t\t// Unbinds DOM handlers from elements that reside outside the view container\n\t\tunbindGlobalHandlers: function() {\n\t\t\tthis.stopListeningTo($(document));\n\t\t},\n\t\n\t\n\t\t// Initializes internal variables related to theming\n\t\tinitThemingProps: function() {\n\t\t\tvar tm = this.opt('theme') ? 'ui' : 'fc';\n\t\n\t\t\tthis.widgetHeaderClass = tm + '-widget-header';\n\t\t\tthis.widgetContentClass = tm + '-widget-content';\n\t\t\tthis.highlightStateClass = tm + '-state-highlight';\n\t\t},\n\t\n\t\n\t\t/* Business Hours\n\t\t------------------------------------------------------------------------------------------------------------------*/\n\t\n\t\n\t\t// Renders business-hours onto the view. Assumes updateSize has already been called.\n\t\trenderBusinessHours: function() {\n\t\t\t// subclasses should implement\n\t\t},\n\t\n\t\n\t\t// Unrenders previously-rendered business-hours\n\t\tunrenderBusinessHours: function() {\n\t\t\t// subclasses should implement\n\t\t},\n\t\n\t\n\t\t/* Now Indicator\n\t\t------------------------------------------------------------------------------------------------------------------*/\n\t\n\t\n\t\t// Immediately render the current time indicator and begins re-rendering it at an interval,\n\t\t// which is defined by this.getNowIndicatorUnit().\n\t\t// TODO: somehow do this for the current whole day's background too\n\t\tstartNowIndicator: function() {\n\t\t\tvar _this = this;\n\t\t\tvar unit;\n\t\t\tvar update;\n\t\t\tvar delay; // ms wait value\n\t\n\t\t\tif (this.opt('nowIndicator')) {\n\t\t\t\tunit = this.getNowIndicatorUnit();\n\t\t\t\tif (unit) {\n\t\t\t\t\tupdate = proxy(this, 'updateNowIndicator'); // bind to `this`\n\t\n\t\t\t\t\tthis.initialNowDate = this.calendar.getNow();\n\t\t\t\t\tthis.initialNowQueriedMs = +new Date();\n\t\t\t\t\tthis.renderNowIndicator(this.initialNowDate);\n\t\t\t\t\tthis.isNowIndicatorRendered = true;\n\t\n\t\t\t\t\t// wait until the beginning of the next interval\n\t\t\t\t\tdelay = this.initialNowDate.clone().startOf(unit).add(1, unit) - this.initialNowDate;\n\t\t\t\t\tthis.nowIndicatorTimeoutID = setTimeout(function() {\n\t\t\t\t\t\t_this.nowIndicatorTimeoutID = null;\n\t\t\t\t\t\tupdate();\n\t\t\t\t\t\tdelay = +moment.duration(1, unit);\n\t\t\t\t\t\tdelay = Math.max(100, delay); // prevent too frequent\n\t\t\t\t\t\t_this.nowIndicatorIntervalID = setInterval(update, delay); // update every interval\n\t\t\t\t\t}, delay);\n\t\t\t\t}\n\t\t\t}\n\t\t},\n\t\n\t\n\t\t// rerenders the now indicator, computing the new current time from the amount of time that has passed\n\t\t// since the initial getNow call.\n\t\tupdateNowIndicator: function() {\n\t\t\tif (this.isNowIndicatorRendered) {\n\t\t\t\tthis.unrenderNowIndicator();\n\t\t\t\tthis.renderNowIndicator(\n\t\t\t\t\tthis.initialNowDate.clone().add(new Date() - this.initialNowQueriedMs) // add ms\n\t\t\t\t);\n\t\t\t}\n\t\t},\n\t\n\t\n\t\t// Immediately unrenders the view's current time indicator and stops any re-rendering timers.\n\t\t// Won't cause side effects if indicator isn't rendered.\n\t\tstopNowIndicator: function() {\n\t\t\tif (this.isNowIndicatorRendered) {\n\t\n\t\t\t\tif (this.nowIndicatorTimeoutID) {\n\t\t\t\t\tclearTimeout(this.nowIndicatorTimeoutID);\n\t\t\t\t\tthis.nowIndicatorTimeoutID = null;\n\t\t\t\t}\n\t\t\t\tif (this.nowIndicatorIntervalID) {\n\t\t\t\t\tclearTimeout(this.nowIndicatorIntervalID);\n\t\t\t\t\tthis.nowIndicatorIntervalID = null;\n\t\t\t\t}\n\t\n\t\t\t\tthis.unrenderNowIndicator();\n\t\t\t\tthis.isNowIndicatorRendered = false;\n\t\t\t}\n\t\t},\n\t\n\t\n\t\t// Returns a string unit, like 'second' or 'minute' that defined how often the current time indicator\n\t\t// should be refreshed. If something falsy is returned, no time indicator is rendered at all.\n\t\tgetNowIndicatorUnit: function() {\n\t\t\t// subclasses should implement\n\t\t},\n\t\n\t\n\t\t// Renders a current time indicator at the given datetime\n\t\trenderNowIndicator: function(date) {\n\t\t\t// subclasses should implement\n\t\t},\n\t\n\t\n\t\t// Undoes the rendering actions from renderNowIndicator\n\t\tunrenderNowIndicator: function() {\n\t\t\t// subclasses should implement\n\t\t},\n\t\n\t\n\t\t/* Dimensions\n\t\t------------------------------------------------------------------------------------------------------------------*/\n\t\n\t\n\t\t// Refreshes anything dependant upon sizing of the container element of the grid\n\t\tupdateSize: function(isResize) {\n\t\t\tvar scrollState;\n\t\n\t\t\tif (isResize) {\n\t\t\t\tscrollState = this.queryScroll();\n\t\t\t}\n\t\n\t\t\tthis.updateHeight(isResize);\n\t\t\tthis.updateWidth(isResize);\n\t\t\tthis.updateNowIndicator();\n\t\n\t\t\tif (isResize) {\n\t\t\t\tthis.setScroll(scrollState);\n\t\t\t}\n\t\t},\n\t\n\t\n\t\t// Refreshes the horizontal dimensions of the calendar\n\t\tupdateWidth: function(isResize) {\n\t\t\t// subclasses should implement\n\t\t},\n\t\n\t\n\t\t// Refreshes the vertical dimensions of the calendar\n\t\tupdateHeight: function(isResize) {\n\t\t\tvar calendar = this.calendar; // we poll the calendar for height information\n\t\n\t\t\tthis.setHeight(\n\t\t\t\tcalendar.getSuggestedViewHeight(),\n\t\t\t\tcalendar.isHeightAuto()\n\t\t\t);\n\t\t},\n\t\n\t\n\t\t// Updates the vertical dimensions of the calendar to the specified height.\n\t\t// if `isAuto` is set to true, height becomes merely a suggestion and the view should use its \"natural\" height.\n\t\tsetHeight: function(height, isAuto) {\n\t\t\t// subclasses should implement\n\t\t},\n\t\n\t\n\t\t/* Scroller\n\t\t------------------------------------------------------------------------------------------------------------------*/\n\t\n\t\n\t\t// Computes the initial pre-configured scroll state prior to allowing the user to change it.\n\t\t// Given the scroll state from the previous rendering. If first time rendering, given null.\n\t\tcomputeInitialScroll: function(previousScrollState) {\n\t\t\treturn 0;\n\t\t},\n\t\n\t\n\t\t// Retrieves the view's current natural scroll state. Can return an arbitrary format.\n\t\tqueryScroll: function() {\n\t\t\t// subclasses must implement\n\t\t},\n\t\n\t\n\t\t// Sets the view's scroll state. Will accept the same format computeInitialScroll and queryScroll produce.\n\t\tsetScroll: function(scrollState) {\n\t\t\t// subclasses must implement\n\t\t},\n\t\n\t\n\t\t// Sets the scroll state, making sure to overcome any predefined scroll value the browser has in mind\n\t\tforceScroll: function(scrollState) {\n\t\t\tvar _this = this;\n\t\n\t\t\tthis.setScroll(scrollState);\n\t\t\tsetTimeout(function() {\n\t\t\t\t_this.setScroll(scrollState);\n\t\t\t}, 0);\n\t\t},\n\t\n\t\n\t\t/* Event Elements / Segments\n\t\t------------------------------------------------------------------------------------------------------------------*/\n\t\n\t\n\t\t// Does everything necessary to display the given events onto the current view\n\t\tdisplayEvents: function(events) {\n\t\t\tvar scrollState = this.queryScroll();\n\t\n\t\t\tthis.clearEvents();\n\t\t\tthis.renderEvents(events);\n\t\t\tthis.isEventsRendered = true;\n\t\t\tthis.setScroll(scrollState);\n\t\t\tthis.triggerEventRender();\n\t\t},\n\t\n\t\n\t\t// Does everything necessary to clear the view's currently-rendered events\n\t\tclearEvents: function() {\n\t\t\tvar scrollState;\n\t\n\t\t\tif (this.isEventsRendered) {\n\t\n\t\t\t\t// TODO: optimize: if we know this is part of a displayEvents call, don't queryScroll/setScroll\n\t\t\t\tscrollState = this.queryScroll();\n\t\n\t\t\t\tthis.triggerEventUnrender();\n\t\t\t\tif (this.destroyEvents) {\n\t\t\t\t\tthis.destroyEvents(); // TODO: deprecate\n\t\t\t\t}\n\t\t\t\tthis.unrenderEvents();\n\t\t\t\tthis.setScroll(scrollState);\n\t\t\t\tthis.isEventsRendered = false;\n\t\t\t}\n\t\t},\n\t\n\t\n\t\t// Renders the events onto the view.\n\t\trenderEvents: function(events) {\n\t\t\t// subclasses should implement\n\t\t},\n\t\n\t\n\t\t// Removes event elements from the view.\n\t\tunrenderEvents: function() {\n\t\t\t// subclasses should implement\n\t\t},\n\t\n\t\n\t\t// Signals that all events have been rendered\n\t\ttriggerEventRender: function() {\n\t\t\tthis.renderedEventSegEach(function(seg) {\n\t\t\t\tthis.trigger('eventAfterRender', seg.event, seg.event, seg.el);\n\t\t\t});\n\t\t\tthis.trigger('eventAfterAllRender');\n\t\t},\n\t\n\t\n\t\t// Signals that all event elements are about to be removed\n\t\ttriggerEventUnrender: function() {\n\t\t\tthis.renderedEventSegEach(function(seg) {\n\t\t\t\tthis.trigger('eventDestroy', seg.event, seg.event, seg.el);\n\t\t\t});\n\t\t},\n\t\n\t\n\t\t// Given an event and the default element used for rendering, returns the element that should actually be used.\n\t\t// Basically runs events and elements through the eventRender hook.\n\t\tresolveEventEl: function(event, el) {\n\t\t\tvar custom = this.trigger('eventRender', event, event, el);\n\t\n\t\t\tif (custom === false) { // means don't render at all\n\t\t\t\tel = null;\n\t\t\t}\n\t\t\telse if (custom && custom !== true) {\n\t\t\t\tel = $(custom);\n\t\t\t}\n\t\n\t\t\treturn el;\n\t\t},\n\t\n\t\n\t\t// Hides all rendered event segments linked to the given event\n\t\tshowEvent: function(event) {\n\t\t\tthis.renderedEventSegEach(function(seg) {\n\t\t\t\tseg.el.css('visibility', '');\n\t\t\t}, event);\n\t\t},\n\t\n\t\n\t\t// Shows all rendered event segments linked to the given event\n\t\thideEvent: function(event) {\n\t\t\tthis.renderedEventSegEach(function(seg) {\n\t\t\t\tseg.el.css('visibility', 'hidden');\n\t\t\t}, event);\n\t\t},\n\t\n\t\n\t\t// Iterates through event segments that have been rendered (have an el). Goes through all by default.\n\t\t// If the optional `event` argument is specified, only iterates through segments linked to that event.\n\t\t// The `this` value of the callback function will be the view.\n\t\trenderedEventSegEach: function(func, event) {\n\t\t\tvar segs = this.getEventSegs();\n\t\t\tvar i;\n\t\n\t\t\tfor (i = 0; i < segs.length; i++) {\n\t\t\t\tif (!event || segs[i].event._id === event._id) {\n\t\t\t\t\tif (segs[i].el) {\n\t\t\t\t\t\tfunc.call(this, segs[i]);\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t}\n\t\t},\n\t\n\t\n\t\t// Retrieves all the rendered segment objects for the view\n\t\tgetEventSegs: function() {\n\t\t\t// subclasses must implement\n\t\t\treturn [];\n\t\t},\n\t\n\t\n\t\t/* Event Drag-n-Drop\n\t\t------------------------------------------------------------------------------------------------------------------*/\n\t\n\t\n\t\t// Computes if the given event is allowed to be dragged by the user\n\t\tisEventDraggable: function(event) {\n\t\t\tvar source = event.source || {};\n\t\n\t\t\treturn firstDefined(\n\t\t\t\tevent.startEditable,\n\t\t\t\tsource.startEditable,\n\t\t\t\tthis.opt('eventStartEditable'),\n\t\t\t\tevent.editable,\n\t\t\t\tsource.editable,\n\t\t\t\tthis.opt('editable')\n\t\t\t);\n\t\t},\n\t\n\t\n\t\t// Must be called when an event in the view is dropped onto new location.\n\t\t// `dropLocation` is an object that contains the new zoned start/end/allDay values for the event.\n\t\treportEventDrop: function(event, dropLocation, largeUnit, el, ev) {\n\t\t\tvar calendar = this.calendar;\n\t\t\tvar mutateResult = calendar.mutateEvent(event, dropLocation, largeUnit);\n\t\t\tvar undoFunc = function() {\n\t\t\t\tmutateResult.undo();\n\t\t\t\tcalendar.reportEventChange();\n\t\t\t};\n\t\n\t\t\tthis.triggerEventDrop(event, mutateResult.dateDelta, undoFunc, el, ev);\n\t\t\tcalendar.reportEventChange(); // will rerender events\n\t\t},\n\t\n\t\n\t\t// Triggers event-drop handlers that have subscribed via the API\n\t\ttriggerEventDrop: function(event, dateDelta, undoFunc, el, ev) {\n\t\t\tthis.trigger('eventDrop', el[0], event, dateDelta, undoFunc, ev, {}); // {} = jqui dummy\n\t\t},\n\t\n\t\n\t\t/* External Element Drag-n-Drop\n\t\t------------------------------------------------------------------------------------------------------------------*/\n\t\n\t\n\t\t// Must be called when an external element, via jQuery UI, has been dropped onto the calendar.\n\t\t// `meta` is the parsed data that has been embedded into the dragging event.\n\t\t// `dropLocation` is an object that contains the new zoned start/end/allDay values for the event.\n\t\treportExternalDrop: function(meta, dropLocation, el, ev, ui) {\n\t\t\tvar eventProps = meta.eventProps;\n\t\t\tvar eventInput;\n\t\t\tvar event;\n\t\n\t\t\t// Try to build an event object and render it. TODO: decouple the two\n\t\t\tif (eventProps) {\n\t\t\t\teventInput = $.extend({}, eventProps, dropLocation);\n\t\t\t\tevent = this.calendar.renderEvent(eventInput, meta.stick)[0]; // renderEvent returns an array\n\t\t\t}\n\t\n\t\t\tthis.triggerExternalDrop(event, dropLocation, el, ev, ui);\n\t\t},\n\t\n\t\n\t\t// Triggers external-drop handlers that have subscribed via the API\n\t\ttriggerExternalDrop: function(event, dropLocation, el, ev, ui) {\n\t\n\t\t\t// trigger 'drop' regardless of whether element represents an event\n\t\t\tthis.trigger('drop', el[0], dropLocation.start, ev, ui);\n\t\n\t\t\tif (event) {\n\t\t\t\tthis.trigger('eventReceive', null, event); // signal an external event landed\n\t\t\t}\n\t\t},\n\t\n\t\n\t\t/* Drag-n-Drop Rendering (for both events and external elements)\n\t\t------------------------------------------------------------------------------------------------------------------*/\n\t\n\t\n\t\t// Renders a visual indication of a event or external-element drag over the given drop zone.\n\t\t// If an external-element, seg will be `null`.\n\t\t// Must return elements used for any mock events.\n\t\trenderDrag: function(dropLocation, seg) {\n\t\t\t// subclasses must implement\n\t\t},\n\t\n\t\n\t\t// Unrenders a visual indication of an event or external-element being dragged.\n\t\tunrenderDrag: function() {\n\t\t\t// subclasses must implement\n\t\t},\n\t\n\t\n\t\t/* Event Resizing\n\t\t------------------------------------------------------------------------------------------------------------------*/\n\t\n\t\n\t\t// Computes if the given event is allowed to be resized from its starting edge\n\t\tisEventResizableFromStart: function(event) {\n\t\t\treturn this.opt('eventResizableFromStart') && this.isEventResizable(event);\n\t\t},\n\t\n\t\n\t\t// Computes if the given event is allowed to be resized from its ending edge\n\t\tisEventResizableFromEnd: function(event) {\n\t\t\treturn this.isEventResizable(event);\n\t\t},\n\t\n\t\n\t\t// Computes if the given event is allowed to be resized by the user at all\n\t\tisEventResizable: function(event) {\n\t\t\tvar source = event.source || {};\n\t\n\t\t\treturn firstDefined(\n\t\t\t\tevent.durationEditable,\n\t\t\t\tsource.durationEditable,\n\t\t\t\tthis.opt('eventDurationEditable'),\n\t\t\t\tevent.editable,\n\t\t\t\tsource.editable,\n\t\t\t\tthis.opt('editable')\n\t\t\t);\n\t\t},\n\t\n\t\n\t\t// Must be called when an event in the view has been resized to a new length\n\t\treportEventResize: function(event, resizeLocation, largeUnit, el, ev) {\n\t\t\tvar calendar = this.calendar;\n\t\t\tvar mutateResult = calendar.mutateEvent(event, resizeLocation, largeUnit);\n\t\t\tvar undoFunc = function() {\n\t\t\t\tmutateResult.undo();\n\t\t\t\tcalendar.reportEventChange();\n\t\t\t};\n\t\n\t\t\tthis.triggerEventResize(event, mutateResult.durationDelta, undoFunc, el, ev);\n\t\t\tcalendar.reportEventChange(); // will rerender events\n\t\t},\n\t\n\t\n\t\t// Triggers event-resize handlers that have subscribed via the API\n\t\ttriggerEventResize: function(event, durationDelta, undoFunc, el, ev) {\n\t\t\tthis.trigger('eventResize', el[0], event, durationDelta, undoFunc, ev, {}); // {} = jqui dummy\n\t\t},\n\t\n\t\n\t\t/* Selection (time range)\n\t\t------------------------------------------------------------------------------------------------------------------*/\n\t\n\t\n\t\t// Selects a date span on the view. `start` and `end` are both Moments.\n\t\t// `ev` is the native mouse event that begin the interaction.\n\t\tselect: function(span, ev) {\n\t\t\tthis.unselect(ev);\n\t\t\tthis.renderSelection(span);\n\t\t\tthis.reportSelection(span, ev);\n\t\t},\n\t\n\t\n\t\t// Renders a visual indication of the selection\n\t\trenderSelection: function(span) {\n\t\t\t// subclasses should implement\n\t\t},\n\t\n\t\n\t\t// Called when a new selection is made. Updates internal state and triggers handlers.\n\t\treportSelection: function(span, ev) {\n\t\t\tthis.isSelected = true;\n\t\t\tthis.triggerSelect(span, ev);\n\t\t},\n\t\n\t\n\t\t// Triggers handlers to 'select'\n\t\ttriggerSelect: function(span, ev) {\n\t\t\tthis.trigger(\n\t\t\t\t'select',\n\t\t\t\tnull,\n\t\t\t\tthis.calendar.applyTimezone(span.start), // convert to calendar's tz for external API\n\t\t\t\tthis.calendar.applyTimezone(span.end), // \"\n\t\t\t\tev\n\t\t\t);\n\t\t},\n\t\n\t\n\t\t// Undoes a selection. updates in the internal state and triggers handlers.\n\t\t// `ev` is the native mouse event that began the interaction.\n\t\tunselect: function(ev) {\n\t\t\tif (this.isSelected) {\n\t\t\t\tthis.isSelected = false;\n\t\t\t\tif (this.destroySelection) {\n\t\t\t\t\tthis.destroySelection(); // TODO: deprecate\n\t\t\t\t}\n\t\t\t\tthis.unrenderSelection();\n\t\t\t\tthis.trigger('unselect', null, ev);\n\t\t\t}\n\t\t},\n\t\n\t\n\t\t// Unrenders a visual indication of selection\n\t\tunrenderSelection: function() {\n\t\t\t// subclasses should implement\n\t\t},\n\t\n\t\n\t\t/* Event Selection\n\t\t------------------------------------------------------------------------------------------------------------------*/\n\t\n\t\n\t\tselectEvent: function(event) {\n\t\t\tif (!this.selectedEvent || this.selectedEvent !== event) {\n\t\t\t\tthis.unselectEvent();\n\t\t\t\tthis.renderedEventSegEach(function(seg) {\n\t\t\t\t\tseg.el.addClass('fc-selected');\n\t\t\t\t}, event);\n\t\t\t\tthis.selectedEvent = event;\n\t\t\t}\n\t\t},\n\t\n\t\n\t\tunselectEvent: function() {\n\t\t\tif (this.selectedEvent) {\n\t\t\t\tthis.renderedEventSegEach(function(seg) {\n\t\t\t\t\tseg.el.removeClass('fc-selected');\n\t\t\t\t}, this.selectedEvent);\n\t\t\t\tthis.selectedEvent = null;\n\t\t\t}\n\t\t},\n\t\n\t\n\t\tisEventSelected: function(event) {\n\t\t\t// event references might change on refetchEvents(), while selectedEvent doesn't,\n\t\t\t// so compare IDs\n\t\t\treturn this.selectedEvent && this.selectedEvent._id === event._id;\n\t\t},\n\t\n\t\n\t\t/* Mouse / Touch Unselecting (time range & event unselection)\n\t\t------------------------------------------------------------------------------------------------------------------*/\n\t\t// TODO: move consistently to down/start or up/end?\n\t\t// TODO: don't kill previous selection if touch scrolling\n\t\n\t\n\t\thandleDocumentMousedown: function(ev) {\n\t\t\tif (isPrimaryMouseButton(ev)) {\n\t\t\t\tthis.processUnselect(ev);\n\t\t\t}\n\t\t},\n\t\n\t\n\t\tprocessUnselect: function(ev) {\n\t\t\tthis.processRangeUnselect(ev);\n\t\t\tthis.processEventUnselect(ev);\n\t\t},\n\t\n\t\n\t\tprocessRangeUnselect: function(ev) {\n\t\t\tvar ignore;\n\t\n\t\t\t// is there a time-range selection?\n\t\t\tif (this.isSelected && this.opt('unselectAuto')) {\n\t\t\t\t// only unselect if the clicked element is not identical to or inside of an 'unselectCancel' element\n\t\t\t\tignore = this.opt('unselectCancel');\n\t\t\t\tif (!ignore || !$(ev.target).closest(ignore).length) {\n\t\t\t\t\tthis.unselect(ev);\n\t\t\t\t}\n\t\t\t}\n\t\t},\n\t\n\t\n\t\tprocessEventUnselect: function(ev) {\n\t\t\tif (this.selectedEvent) {\n\t\t\t\tif (!$(ev.target).closest('.fc-selected').length) {\n\t\t\t\t\tthis.unselectEvent();\n\t\t\t\t}\n\t\t\t}\n\t\t},\n\t\n\t\n\t\t/* Day Click\n\t\t------------------------------------------------------------------------------------------------------------------*/\n\t\n\t\n\t\t// Triggers handlers to 'dayClick'\n\t\t// Span has start/end of the clicked area. Only the start is useful.\n\t\ttriggerDayClick: function(span, dayEl, ev) {\n\t\t\tthis.trigger(\n\t\t\t\t'dayClick',\n\t\t\t\tdayEl,\n\t\t\t\tthis.calendar.applyTimezone(span.start), // convert to calendar's timezone for external API\n\t\t\t\tev\n\t\t\t);\n\t\t},\n\t\n\t\n\t\t/* Date Utils\n\t\t------------------------------------------------------------------------------------------------------------------*/\n\t\n\t\n\t\t// Initializes internal variables related to calculating hidden days-of-week\n\t\tinitHiddenDays: function() {\n\t\t\tvar hiddenDays = this.opt('hiddenDays') || []; // array of day-of-week indices that are hidden\n\t\t\tvar isHiddenDayHash = []; // is the day-of-week hidden? (hash with day-of-week-index -> bool)\n\t\t\tvar dayCnt = 0;\n\t\t\tvar i;\n\t\n\t\t\tif (this.opt('weekends') === false) {\n\t\t\t\thiddenDays.push(0, 6); // 0=sunday, 6=saturday\n\t\t\t}\n\t\n\t\t\tfor (i = 0; i < 7; i++) {\n\t\t\t\tif (\n\t\t\t\t\t!(isHiddenDayHash[i] = $.inArray(i, hiddenDays) !== -1)\n\t\t\t\t) {\n\t\t\t\t\tdayCnt++;\n\t\t\t\t}\n\t\t\t}\n\t\n\t\t\tif (!dayCnt) {\n\t\t\t\tthrow 'invalid hiddenDays'; // all days were hidden? bad.\n\t\t\t}\n\t\n\t\t\tthis.isHiddenDayHash = isHiddenDayHash;\n\t\t},\n\t\n\t\n\t\t// Is the current day hidden?\n\t\t// `day` is a day-of-week index (0-6), or a Moment\n\t\tisHiddenDay: function(day) {\n\t\t\tif (moment.isMoment(day)) {\n\t\t\t\tday = day.day();\n\t\t\t}\n\t\t\treturn this.isHiddenDayHash[day];\n\t\t},\n\t\n\t\n\t\t// Incrementing the current day until it is no longer a hidden day, returning a copy.\n\t\t// If the initial value of `date` is not a hidden day, don't do anything.\n\t\t// Pass `isExclusive` as `true` if you are dealing with an end date.\n\t\t// `inc` defaults to `1` (increment one day forward each time)\n\t\tskipHiddenDays: function(date, inc, isExclusive) {\n\t\t\tvar out = date.clone();\n\t\t\tinc = inc || 1;\n\t\t\twhile (\n\t\t\t\tthis.isHiddenDayHash[(out.day() + (isExclusive ? inc : 0) + 7) % 7]\n\t\t\t) {\n\t\t\t\tout.add(inc, 'days');\n\t\t\t}\n\t\t\treturn out;\n\t\t},\n\t\n\t\n\t\t// Returns the date range of the full days the given range visually appears to occupy.\n\t\t// Returns a new range object.\n\t\tcomputeDayRange: function(range) {\n\t\t\tvar startDay = range.start.clone().stripTime(); // the beginning of the day the range starts\n\t\t\tvar end = range.end;\n\t\t\tvar endDay = null;\n\t\t\tvar endTimeMS;\n\t\n\t\t\tif (end) {\n\t\t\t\tendDay = end.clone().stripTime(); // the beginning of the day the range exclusively ends\n\t\t\t\tendTimeMS = +end.time(); // # of milliseconds into `endDay`\n\t\n\t\t\t\t// If the end time is actually inclusively part of the next day and is equal to or\n\t\t\t\t// beyond the next day threshold, adjust the end to be the exclusive end of `endDay`.\n\t\t\t\t// Otherwise, leaving it as inclusive will cause it to exclude `endDay`.\n\t\t\t\tif (endTimeMS && endTimeMS >= this.nextDayThreshold) {\n\t\t\t\t\tendDay.add(1, 'days');\n\t\t\t\t}\n\t\t\t}\n\t\n\t\t\t// If no end was specified, or if it is within `startDay` but not past nextDayThreshold,\n\t\t\t// assign the default duration of one day.\n\t\t\tif (!end || endDay <= startDay) {\n\t\t\t\tendDay = startDay.clone().add(1, 'days');\n\t\t\t}\n\t\n\t\t\treturn { start: startDay, end: endDay };\n\t\t},\n\t\n\t\n\t\t// Does the given event visually appear to occupy more than one day?\n\t\tisMultiDayEvent: function(event) {\n\t\t\tvar range = this.computeDayRange(event); // event is range-ish\n\t\n\t\t\treturn range.end.diff(range.start, 'days') > 1;\n\t\t}\n\t\n\t});\n\t\n\t;;\n\t\n\t/*\n\tEmbodies a div that has potential scrollbars\n\t*/\n\tvar Scroller = FC.Scroller = Class.extend({\n\t\n\t\tel: null, // the guaranteed outer element\n\t\tscrollEl: null, // the element with the scrollbars\n\t\toverflowX: null,\n\t\toverflowY: null,\n\t\n\t\n\t\tconstructor: function(options) {\n\t\t\toptions = options || {};\n\t\t\tthis.overflowX = options.overflowX || options.overflow || 'auto';\n\t\t\tthis.overflowY = options.overflowY || options.overflow || 'auto';\n\t\t},\n\t\n\t\n\t\trender: function() {\n\t\t\tthis.el = this.renderEl();\n\t\t\tthis.applyOverflow();\n\t\t},\n\t\n\t\n\t\trenderEl: function() {\n\t\t\treturn (this.scrollEl = $('
'));\n\t\t},\n\t\n\t\n\t\t// sets to natural height, unlocks overflow\n\t\tclear: function() {\n\t\t\tthis.setHeight('auto');\n\t\t\tthis.applyOverflow();\n\t\t},\n\t\n\t\n\t\tdestroy: function() {\n\t\t\tthis.el.remove();\n\t\t},\n\t\n\t\n\t\t// Overflow\n\t\t// -----------------------------------------------------------------------------------------------------------------\n\t\n\t\n\t\tapplyOverflow: function() {\n\t\t\tthis.scrollEl.css({\n\t\t\t\t'overflow-x': this.overflowX,\n\t\t\t\t'overflow-y': this.overflowY\n\t\t\t});\n\t\t},\n\t\n\t\n\t\t// Causes any 'auto' overflow values to resolves to 'scroll' or 'hidden'.\n\t\t// Useful for preserving scrollbar widths regardless of future resizes.\n\t\t// Can pass in scrollbarWidths for optimization.\n\t\tlockOverflow: function(scrollbarWidths) {\n\t\t\tvar overflowX = this.overflowX;\n\t\t\tvar overflowY = this.overflowY;\n\t\n\t\t\tscrollbarWidths = scrollbarWidths || this.getScrollbarWidths();\n\t\n\t\t\tif (overflowX === 'auto') {\n\t\t\t\toverflowX = (\n\t\t\t\t\t\tscrollbarWidths.top || scrollbarWidths.bottom || // horizontal scrollbars?\n\t\t\t\t\t\t// OR scrolling pane with massless scrollbars?\n\t\t\t\t\t\tthis.scrollEl[0].scrollWidth - 1 > this.scrollEl[0].clientWidth\n\t\t\t\t\t\t\t// subtract 1 because of IE off-by-one issue\n\t\t\t\t\t) ? 'scroll' : 'hidden';\n\t\t\t}\n\t\n\t\t\tif (overflowY === 'auto') {\n\t\t\t\toverflowY = (\n\t\t\t\t\t\tscrollbarWidths.left || scrollbarWidths.right || // vertical scrollbars?\n\t\t\t\t\t\t// OR scrolling pane with massless scrollbars?\n\t\t\t\t\t\tthis.scrollEl[0].scrollHeight - 1 > this.scrollEl[0].clientHeight\n\t\t\t\t\t\t\t// subtract 1 because of IE off-by-one issue\n\t\t\t\t\t) ? 'scroll' : 'hidden';\n\t\t\t}\n\t\n\t\t\tthis.scrollEl.css({ 'overflow-x': overflowX, 'overflow-y': overflowY });\n\t\t},\n\t\n\t\n\t\t// Getters / Setters\n\t\t// -----------------------------------------------------------------------------------------------------------------\n\t\n\t\n\t\tsetHeight: function(height) {\n\t\t\tthis.scrollEl.height(height);\n\t\t},\n\t\n\t\n\t\tgetScrollTop: function() {\n\t\t\treturn this.scrollEl.scrollTop();\n\t\t},\n\t\n\t\n\t\tsetScrollTop: function(top) {\n\t\t\tthis.scrollEl.scrollTop(top);\n\t\t},\n\t\n\t\n\t\tgetClientWidth: function() {\n\t\t\treturn this.scrollEl[0].clientWidth;\n\t\t},\n\t\n\t\n\t\tgetClientHeight: function() {\n\t\t\treturn this.scrollEl[0].clientHeight;\n\t\t},\n\t\n\t\n\t\tgetScrollbarWidths: function() {\n\t\t\treturn getScrollbarWidths(this.scrollEl);\n\t\t}\n\t\n\t});\n\t\n\t;;\n\t\n\tvar Calendar = FC.Calendar = Class.extend({\n\t\n\t\tdirDefaults: null, // option defaults related to LTR or RTL\n\t\tlangDefaults: null, // option defaults related to current locale\n\t\toverrides: null, // option overrides given to the fullCalendar constructor\n\t\tdynamicOverrides: null, // options set with dynamic setter method. higher precedence than view overrides.\n\t\toptions: null, // all defaults combined with overrides\n\t\tviewSpecCache: null, // cache of view definitions\n\t\tview: null, // current View object\n\t\theader: null,\n\t\tloadingLevel: 0, // number of simultaneous loading tasks\n\t\n\t\n\t\t// a lot of this class' OOP logic is scoped within this constructor function,\n\t\t// but in the future, write individual methods on the prototype.\n\t\tconstructor: Calendar_constructor,\n\t\n\t\n\t\t// Subclasses can override this for initialization logic after the constructor has been called\n\t\tinitialize: function() {\n\t\t},\n\t\n\t\n\t\t// Computes the flattened options hash for the calendar and assigns to `this.options`.\n\t\t// Assumes this.overrides and this.dynamicOverrides have already been initialized.\n\t\tpopulateOptionsHash: function() {\n\t\t\tvar lang, langDefaults;\n\t\t\tvar isRTL, dirDefaults;\n\t\n\t\t\tlang = firstDefined( // explicit lang option given?\n\t\t\t\tthis.dynamicOverrides.lang,\n\t\t\t\tthis.overrides.lang\n\t\t\t);\n\t\t\tlangDefaults = langOptionHash[lang];\n\t\t\tif (!langDefaults) { // explicit lang option not given or invalid?\n\t\t\t\tlang = Calendar.defaults.lang;\n\t\t\t\tlangDefaults = langOptionHash[lang] || {};\n\t\t\t}\n\t\n\t\t\tisRTL = firstDefined( // based on options computed so far, is direction RTL?\n\t\t\t\tthis.dynamicOverrides.isRTL,\n\t\t\t\tthis.overrides.isRTL,\n\t\t\t\tlangDefaults.isRTL,\n\t\t\t\tCalendar.defaults.isRTL\n\t\t\t);\n\t\t\tdirDefaults = isRTL ? Calendar.rtlDefaults : {};\n\t\n\t\t\tthis.dirDefaults = dirDefaults;\n\t\t\tthis.langDefaults = langDefaults;\n\t\t\tthis.options = mergeOptions([ // merge defaults and overrides. lowest to highest precedence\n\t\t\t\tCalendar.defaults, // global defaults\n\t\t\t\tdirDefaults,\n\t\t\t\tlangDefaults,\n\t\t\t\tthis.overrides,\n\t\t\t\tthis.dynamicOverrides\n\t\t\t]);\n\t\t\tpopulateInstanceComputableOptions(this.options); // fill in gaps with computed options\n\t\t},\n\t\n\t\n\t\t// Gets information about how to create a view. Will use a cache.\n\t\tgetViewSpec: function(viewType) {\n\t\t\tvar cache = this.viewSpecCache;\n\t\n\t\t\treturn cache[viewType] || (cache[viewType] = this.buildViewSpec(viewType));\n\t\t},\n\t\n\t\n\t\t// Given a duration singular unit, like \"week\" or \"day\", finds a matching view spec.\n\t\t// Preference is given to views that have corresponding buttons.\n\t\tgetUnitViewSpec: function(unit) {\n\t\t\tvar viewTypes;\n\t\t\tvar i;\n\t\t\tvar spec;\n\t\n\t\t\tif ($.inArray(unit, intervalUnits) != -1) {\n\t\n\t\t\t\t// put views that have buttons first. there will be duplicates, but oh well\n\t\t\t\tviewTypes = this.header.getViewsWithButtons();\n\t\t\t\t$.each(FC.views, function(viewType) { // all views\n\t\t\t\t\tviewTypes.push(viewType);\n\t\t\t\t});\n\t\n\t\t\t\tfor (i = 0; i < viewTypes.length; i++) {\n\t\t\t\t\tspec = this.getViewSpec(viewTypes[i]);\n\t\t\t\t\tif (spec) {\n\t\t\t\t\t\tif (spec.singleUnit == unit) {\n\t\t\t\t\t\t\treturn spec;\n\t\t\t\t\t\t}\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t}\n\t\t},\n\t\n\t\n\t\t// Builds an object with information on how to create a given view\n\t\tbuildViewSpec: function(requestedViewType) {\n\t\t\tvar viewOverrides = this.overrides.views || {};\n\t\t\tvar specChain = []; // for the view. lowest to highest priority\n\t\t\tvar defaultsChain = []; // for the view. lowest to highest priority\n\t\t\tvar overridesChain = []; // for the view. lowest to highest priority\n\t\t\tvar viewType = requestedViewType;\n\t\t\tvar spec; // for the view\n\t\t\tvar overrides; // for the view\n\t\t\tvar duration;\n\t\t\tvar unit;\n\t\n\t\t\t// iterate from the specific view definition to a more general one until we hit an actual View class\n\t\t\twhile (viewType) {\n\t\t\t\tspec = fcViews[viewType];\n\t\t\t\toverrides = viewOverrides[viewType];\n\t\t\t\tviewType = null; // clear. might repopulate for another iteration\n\t\n\t\t\t\tif (typeof spec === 'function') { // TODO: deprecate\n\t\t\t\t\tspec = { 'class': spec };\n\t\t\t\t}\n\t\n\t\t\t\tif (spec) {\n\t\t\t\t\tspecChain.unshift(spec);\n\t\t\t\t\tdefaultsChain.unshift(spec.defaults || {});\n\t\t\t\t\tduration = duration || spec.duration;\n\t\t\t\t\tviewType = viewType || spec.type;\n\t\t\t\t}\n\t\n\t\t\t\tif (overrides) {\n\t\t\t\t\toverridesChain.unshift(overrides); // view-specific option hashes have options at zero-level\n\t\t\t\t\tduration = duration || overrides.duration;\n\t\t\t\t\tviewType = viewType || overrides.type;\n\t\t\t\t}\n\t\t\t}\n\t\n\t\t\tspec = mergeProps(specChain);\n\t\t\tspec.type = requestedViewType;\n\t\t\tif (!spec['class']) {\n\t\t\t\treturn false;\n\t\t\t}\n\t\n\t\t\tif (duration) {\n\t\t\t\tduration = moment.duration(duration);\n\t\t\t\tif (duration.valueOf()) { // valid?\n\t\t\t\t\tspec.duration = duration;\n\t\t\t\t\tunit = computeIntervalUnit(duration);\n\t\n\t\t\t\t\t// view is a single-unit duration, like \"week\" or \"day\"\n\t\t\t\t\t// incorporate options for this. lowest priority\n\t\t\t\t\tif (duration.as(unit) === 1) {\n\t\t\t\t\t\tspec.singleUnit = unit;\n\t\t\t\t\t\toverridesChain.unshift(viewOverrides[unit] || {});\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t}\n\t\n\t\t\tspec.defaults = mergeOptions(defaultsChain);\n\t\t\tspec.overrides = mergeOptions(overridesChain);\n\t\n\t\t\tthis.buildViewSpecOptions(spec);\n\t\t\tthis.buildViewSpecButtonText(spec, requestedViewType);\n\t\n\t\t\treturn spec;\n\t\t},\n\t\n\t\n\t\t// Builds and assigns a view spec's options object from its already-assigned defaults and overrides\n\t\tbuildViewSpecOptions: function(spec) {\n\t\t\tspec.options = mergeOptions([ // lowest to highest priority\n\t\t\t\tCalendar.defaults, // global defaults\n\t\t\t\tspec.defaults, // view's defaults (from ViewSubclass.defaults)\n\t\t\t\tthis.dirDefaults,\n\t\t\t\tthis.langDefaults, // locale and dir take precedence over view's defaults!\n\t\t\t\tthis.overrides, // calendar's overrides (options given to constructor)\n\t\t\t\tspec.overrides, // view's overrides (view-specific options)\n\t\t\t\tthis.dynamicOverrides // dynamically set via setter. highest precedence\n\t\t\t]);\n\t\t\tpopulateInstanceComputableOptions(spec.options);\n\t\t},\n\t\n\t\n\t\t// Computes and assigns a view spec's buttonText-related options\n\t\tbuildViewSpecButtonText: function(spec, requestedViewType) {\n\t\n\t\t\t// given an options object with a possible `buttonText` hash, lookup the buttonText for the\n\t\t\t// requested view, falling back to a generic unit entry like \"week\" or \"day\"\n\t\t\tfunction queryButtonText(options) {\n\t\t\t\tvar buttonText = options.buttonText || {};\n\t\t\t\treturn buttonText[requestedViewType] ||\n\t\t\t\t\t(spec.singleUnit ? buttonText[spec.singleUnit] : null);\n\t\t\t}\n\t\n\t\t\t// highest to lowest priority\n\t\t\tspec.buttonTextOverride =\n\t\t\t\tqueryButtonText(this.dynamicOverrides) ||\n\t\t\t\tqueryButtonText(this.overrides) || // constructor-specified buttonText lookup hash takes precedence\n\t\t\t\tspec.overrides.buttonText; // `buttonText` for view-specific options is a string\n\t\n\t\t\t// highest to lowest priority. mirrors buildViewSpecOptions\n\t\t\tspec.buttonTextDefault =\n\t\t\t\tqueryButtonText(this.langDefaults) ||\n\t\t\t\tqueryButtonText(this.dirDefaults) ||\n\t\t\t\tspec.defaults.buttonText || // a single string. from ViewSubclass.defaults\n\t\t\t\tqueryButtonText(Calendar.defaults) ||\n\t\t\t\t(spec.duration ? this.humanizeDuration(spec.duration) : null) || // like \"3 days\"\n\t\t\t\trequestedViewType; // fall back to given view name\n\t\t},\n\t\n\t\n\t\t// Given a view name for a custom view or a standard view, creates a ready-to-go View object\n\t\tinstantiateView: function(viewType) {\n\t\t\tvar spec = this.getViewSpec(viewType);\n\t\n\t\t\treturn new spec['class'](this, viewType, spec.options, spec.duration);\n\t\t},\n\t\n\t\n\t\t// Returns a boolean about whether the view is okay to instantiate at some point\n\t\tisValidViewType: function(viewType) {\n\t\t\treturn Boolean(this.getViewSpec(viewType));\n\t\t},\n\t\n\t\n\t\t// Should be called when any type of async data fetching begins\n\t\tpushLoading: function() {\n\t\t\tif (!(this.loadingLevel++)) {\n\t\t\t\tthis.trigger('loading', null, true, this.view);\n\t\t\t}\n\t\t},\n\t\n\t\n\t\t// Should be called when any type of async data fetching completes\n\t\tpopLoading: function() {\n\t\t\tif (!(--this.loadingLevel)) {\n\t\t\t\tthis.trigger('loading', null, false, this.view);\n\t\t\t}\n\t\t},\n\t\n\t\n\t\t// Given arguments to the select method in the API, returns a span (unzoned start/end and other info)\n\t\tbuildSelectSpan: function(zonedStartInput, zonedEndInput) {\n\t\t\tvar start = this.moment(zonedStartInput).stripZone();\n\t\t\tvar end;\n\t\n\t\t\tif (zonedEndInput) {\n\t\t\t\tend = this.moment(zonedEndInput).stripZone();\n\t\t\t}\n\t\t\telse if (start.hasTime()) {\n\t\t\t\tend = start.clone().add(this.defaultTimedEventDuration);\n\t\t\t}\n\t\t\telse {\n\t\t\t\tend = start.clone().add(this.defaultAllDayEventDuration);\n\t\t\t}\n\t\n\t\t\treturn { start: start, end: end };\n\t\t}\n\t\n\t});\n\t\n\t\n\tCalendar.mixin(EmitterMixin);\n\t\n\t\n\tfunction Calendar_constructor(element, overrides) {\n\t\tvar t = this;\n\t\n\t\n\t\t// Exports\n\t\t// -----------------------------------------------------------------------------------\n\t\n\t\tt.render = render;\n\t\tt.destroy = destroy;\n\t\tt.refetchEvents = refetchEvents;\n\t\tt.refetchEventSources = refetchEventSources;\n\t\tt.reportEvents = reportEvents;\n\t\tt.reportEventChange = reportEventChange;\n\t\tt.rerenderEvents = renderEvents; // `renderEvents` serves as a rerender. an API method\n\t\tt.changeView = renderView; // `renderView` will switch to another view\n\t\tt.select = select;\n\t\tt.unselect = unselect;\n\t\tt.prev = prev;\n\t\tt.next = next;\n\t\tt.prevYear = prevYear;\n\t\tt.nextYear = nextYear;\n\t\tt.today = today;\n\t\tt.gotoDate = gotoDate;\n\t\tt.incrementDate = incrementDate;\n\t\tt.zoomTo = zoomTo;\n\t\tt.getDate = getDate;\n\t\tt.getCalendar = getCalendar;\n\t\tt.getView = getView;\n\t\tt.option = option; // getter/setter method\n\t\tt.trigger = trigger;\n\t\n\t\n\t\t// Options\n\t\t// -----------------------------------------------------------------------------------\n\t\n\t\tt.dynamicOverrides = {};\n\t\tt.viewSpecCache = {};\n\t\tt.optionHandlers = {}; // for Calendar.options.js\n\t\n\t\t// convert legacy options into non-legacy ones.\n\t\t// in the future, when this is removed, don't use `overrides` reference. make a copy.\n\t\tt.overrides = massageOverrides(overrides || {});\n\t\n\t\tt.populateOptionsHash(); // sets this.options\n\t\n\t\n\t\n\t\t// Language-data Internals\n\t\t// -----------------------------------------------------------------------------------\n\t\t// Apply overrides to the current language's data\n\t\n\t\tvar localeData;\n\t\n\t\t// Called immediately, and when any of the options change.\n\t\t// Happens before any internal objects rebuild or rerender, because this is very core.\n\t\tt.bindOptions([\n\t\t\t'lang', 'monthNames', 'monthNamesShort', 'dayNames', 'dayNamesShort', 'firstDay', 'weekNumberCalculation'\n\t\t], function(lang, monthNames, monthNamesShort, dayNames, dayNamesShort, firstDay, weekNumberCalculation) {\n\t\n\t\t\tlocaleData = createObject( // make a cheap copy\n\t\t\t\tgetMomentLocaleData(lang) // will fall back to en\n\t\t\t);\n\t\n\t\t\tif (monthNames) {\n\t\t\t\tlocaleData._months = monthNames;\n\t\t\t}\n\t\t\tif (monthNamesShort) {\n\t\t\t\tlocaleData._monthsShort = monthNamesShort;\n\t\t\t}\n\t\t\tif (dayNames) {\n\t\t\t\tlocaleData._weekdays = dayNames;\n\t\t\t}\n\t\t\tif (dayNamesShort) {\n\t\t\t\tlocaleData._weekdaysShort = dayNamesShort;\n\t\t\t}\n\t\t\tif (firstDay != null) {\n\t\t\t\tvar _week = createObject(localeData._week); // _week: { dow: # }\n\t\t\t\t_week.dow = firstDay;\n\t\t\t\tlocaleData._week = _week;\n\t\t\t}\n\t\n\t\t\tif (weekNumberCalculation === 'iso') {\n\t\t\t\tweekNumberCalculation = 'ISO'; // normalize\n\t\t\t}\n\t\t\tif ( // whitelist certain kinds of input\n\t\t\t\tweekNumberCalculation === 'ISO' ||\n\t\t\t\tweekNumberCalculation === 'local' ||\n\t\t\t\ttypeof weekNumberCalculation === 'function'\n\t\t\t) {\n\t\t\t\tlocaleData._fullCalendar_weekCalc = weekNumberCalculation; // moment-ext will know what to do with it\n\t\t\t}\n\t\n\t\t\t// If the internal current date object already exists, move to new locale.\n\t\t\t// We do NOT need to do this technique for event dates, because this happens when converting to \"segments\".\n\t\t\tif (date) {\n\t\t\t\tlocalizeMoment(date); // sets to localeData\n\t\t\t}\n\t\t});\n\t\n\t\n\t\n\t\t// Calendar-specific Date Utilities\n\t\t// -----------------------------------------------------------------------------------\n\t\n\t\n\t\tt.defaultAllDayEventDuration = moment.duration(t.options.defaultAllDayEventDuration);\n\t\tt.defaultTimedEventDuration = moment.duration(t.options.defaultTimedEventDuration);\n\t\n\t\n\t\t// Builds a moment using the settings of the current calendar: timezone and language.\n\t\t// Accepts anything the vanilla moment() constructor accepts.\n\t\tt.moment = function() {\n\t\t\tvar mom;\n\t\n\t\t\tif (t.options.timezone === 'local') {\n\t\t\t\tmom = FC.moment.apply(null, arguments);\n\t\n\t\t\t\t// Force the moment to be local, because FC.moment doesn't guarantee it.\n\t\t\t\tif (mom.hasTime()) { // don't give ambiguously-timed moments a local zone\n\t\t\t\t\tmom.local();\n\t\t\t\t}\n\t\t\t}\n\t\t\telse if (t.options.timezone === 'UTC') {\n\t\t\t\tmom = FC.moment.utc.apply(null, arguments); // process as UTC\n\t\t\t}\n\t\t\telse {\n\t\t\t\tmom = FC.moment.parseZone.apply(null, arguments); // let the input decide the zone\n\t\t\t}\n\t\n\t\t\tlocalizeMoment(mom);\n\t\n\t\t\treturn mom;\n\t\t};\n\t\n\t\n\t\t// Updates the given moment's locale settings to the current calendar locale settings.\n\t\tfunction localizeMoment(mom) {\n\t\t\tif ('_locale' in mom) { // moment 2.8 and above\n\t\t\t\tmom._locale = localeData;\n\t\t\t}\n\t\t\telse { // pre-moment-2.8\n\t\t\t\tmom._lang = localeData;\n\t\t\t}\n\t\t}\n\t\n\t\n\t\t// Returns a boolean about whether or not the calendar knows how to calculate\n\t\t// the timezone offset of arbitrary dates in the current timezone.\n\t\tt.getIsAmbigTimezone = function() {\n\t\t\treturn t.options.timezone !== 'local' && t.options.timezone !== 'UTC';\n\t\t};\n\t\n\t\n\t\t// Returns a copy of the given date in the current timezone. Has no effect on dates without times.\n\t\tt.applyTimezone = function(date) {\n\t\t\tif (!date.hasTime()) {\n\t\t\t\treturn date.clone();\n\t\t\t}\n\t\n\t\t\tvar zonedDate = t.moment(date.toArray());\n\t\t\tvar timeAdjust = date.time() - zonedDate.time();\n\t\t\tvar adjustedZonedDate;\n\t\n\t\t\t// Safari sometimes has problems with this coersion when near DST. Adjust if necessary. (bug #2396)\n\t\t\tif (timeAdjust) { // is the time result different than expected?\n\t\t\t\tadjustedZonedDate = zonedDate.clone().add(timeAdjust); // add milliseconds\n\t\t\t\tif (date.time() - adjustedZonedDate.time() === 0) { // does it match perfectly now?\n\t\t\t\t\tzonedDate = adjustedZonedDate;\n\t\t\t\t}\n\t\t\t}\n\t\n\t\t\treturn zonedDate;\n\t\t};\n\t\n\t\n\t\t// Returns a moment for the current date, as defined by the client's computer or from the `now` option.\n\t\t// Will return an moment with an ambiguous timezone.\n\t\tt.getNow = function() {\n\t\t\tvar now = t.options.now;\n\t\t\tif (typeof now === 'function') {\n\t\t\t\tnow = now();\n\t\t\t}\n\t\t\treturn t.moment(now).stripZone();\n\t\t};\n\t\n\t\n\t\t// Get an event's normalized end date. If not present, calculate it from the defaults.\n\t\tt.getEventEnd = function(event) {\n\t\t\tif (event.end) {\n\t\t\t\treturn event.end.clone();\n\t\t\t}\n\t\t\telse {\n\t\t\t\treturn t.getDefaultEventEnd(event.allDay, event.start);\n\t\t\t}\n\t\t};\n\t\n\t\n\t\t// Given an event's allDay status and start date, return what its fallback end date should be.\n\t\t// TODO: rename to computeDefaultEventEnd\n\t\tt.getDefaultEventEnd = function(allDay, zonedStart) {\n\t\t\tvar end = zonedStart.clone();\n\t\n\t\t\tif (allDay) {\n\t\t\t\tend.stripTime().add(t.defaultAllDayEventDuration);\n\t\t\t}\n\t\t\telse {\n\t\t\t\tend.add(t.defaultTimedEventDuration);\n\t\t\t}\n\t\n\t\t\tif (t.getIsAmbigTimezone()) {\n\t\t\t\tend.stripZone(); // we don't know what the tzo should be\n\t\t\t}\n\t\n\t\t\treturn end;\n\t\t};\n\t\n\t\n\t\t// Produces a human-readable string for the given duration.\n\t\t// Side-effect: changes the locale of the given duration.\n\t\tt.humanizeDuration = function(duration) {\n\t\t\treturn (duration.locale || duration.lang).call(duration, t.options.lang) // works moment-pre-2.8\n\t\t\t\t.humanize();\n\t\t};\n\t\n\t\n\t\t\n\t\t// Imports\n\t\t// -----------------------------------------------------------------------------------\n\t\n\t\n\t\tEventManager.call(t);\n\t\tvar isFetchNeeded = t.isFetchNeeded;\n\t\tvar fetchEvents = t.fetchEvents;\n\t\tvar fetchEventSources = t.fetchEventSources;\n\t\n\t\n\t\n\t\t// Locals\n\t\t// -----------------------------------------------------------------------------------\n\t\n\t\n\t\tvar _element = element[0];\n\t\tvar header;\n\t\tvar content;\n\t\tvar tm; // for making theme classes\n\t\tvar currentView; // NOTE: keep this in sync with this.view\n\t\tvar viewsByType = {}; // holds all instantiated view instances, current or not\n\t\tvar suggestedViewHeight;\n\t\tvar windowResizeProxy; // wraps the windowResize function\n\t\tvar ignoreWindowResize = 0;\n\t\tvar events = [];\n\t\tvar date; // unzoned\n\t\t\n\t\t\n\t\t\n\t\t// Main Rendering\n\t\t// -----------------------------------------------------------------------------------\n\t\n\t\n\t\t// compute the initial ambig-timezone date\n\t\tif (t.options.defaultDate != null) {\n\t\t\tdate = t.moment(t.options.defaultDate).stripZone();\n\t\t}\n\t\telse {\n\t\t\tdate = t.getNow(); // getNow already returns unzoned\n\t\t}\n\t\t\n\t\t\n\t\tfunction render() {\n\t\t\tif (!content) {\n\t\t\t\tinitialRender();\n\t\t\t}\n\t\t\telse if (elementVisible()) {\n\t\t\t\t// mainly for the public API\n\t\t\t\tcalcSize();\n\t\t\t\trenderView();\n\t\t\t}\n\t\t}\n\t\t\n\t\t\n\t\tfunction initialRender() {\n\t\t\telement.addClass('fc');\n\t\n\t\t\t// called immediately, and upon option change\n\t\t\tt.bindOption('theme', function(theme) {\n\t\t\t\ttm = theme ? 'ui' : 'fc'; // affects a larger scope\n\t\t\t\telement.toggleClass('ui-widget', theme);\n\t\t\t\telement.toggleClass('fc-unthemed', !theme);\n\t\t\t});\n\t\n\t\t\t// called immediately, and upon option change.\n\t\t\t// HACK: lang often affects isRTL, so we explicitly listen to that too.\n\t\t\tt.bindOptions([ 'isRTL', 'lang' ], function(isRTL) {\n\t\t\t\telement.toggleClass('fc-ltr', !isRTL);\n\t\t\t\telement.toggleClass('fc-rtl', isRTL);\n\t\t\t});\n\t\n\t\t\tcontent = $(\"
\").prependTo(element);\n\t\n\t\t\theader = t.header = new Header(t);\n\t\t\trenderHeader();\n\t\n\t\t\trenderView(t.options.defaultView);\n\t\n\t\t\tif (t.options.handleWindowResize) {\n\t\t\t\twindowResizeProxy = debounce(windowResize, t.options.windowResizeDelay); // prevents rapid calls\n\t\t\t\t$(window).resize(windowResizeProxy);\n\t\t\t}\n\t\t}\n\t\n\t\n\t\t// can be called repeatedly and Header will rerender\n\t\tfunction renderHeader() {\n\t\t\theader.render();\n\t\t\tif (header.el) {\n\t\t\t\telement.prepend(header.el);\n\t\t\t}\n\t\t}\n\t\t\n\t\t\n\t\tfunction destroy() {\n\t\n\t\t\tif (currentView) {\n\t\t\t\tcurrentView.removeElement();\n\t\n\t\t\t\t// NOTE: don't null-out currentView/t.view in case API methods are called after destroy.\n\t\t\t\t// It is still the \"current\" view, just not rendered.\n\t\t\t}\n\t\n\t\t\theader.removeElement();\n\t\t\tcontent.remove();\n\t\t\telement.removeClass('fc fc-ltr fc-rtl fc-unthemed ui-widget');\n\t\n\t\t\tif (windowResizeProxy) {\n\t\t\t\t$(window).unbind('resize', windowResizeProxy);\n\t\t\t}\n\t\t}\n\t\t\n\t\t\n\t\tfunction elementVisible() {\n\t\t\treturn element.is(':visible');\n\t\t}\n\t\t\n\t\t\n\t\n\t\t// View Rendering\n\t\t// -----------------------------------------------------------------------------------\n\t\n\t\n\t\t// Renders a view because of a date change, view-type change, or for the first time.\n\t\t// If not given a viewType, keep the current view but render different dates.\n\t\t// Accepts an optional scroll state to restore to.\n\t\tfunction renderView(viewType, explicitScrollState) {\n\t\t\tignoreWindowResize++;\n\t\n\t\t\t// if viewType is changing, remove the old view's rendering\n\t\t\tif (currentView && viewType && currentView.type !== viewType) {\n\t\t\t\tfreezeContentHeight(); // prevent a scroll jump when view element is removed\n\t\t\t\tclearView();\n\t\t\t}\n\t\n\t\t\t// if viewType changed, or the view was never created, create a fresh view\n\t\t\tif (!currentView && viewType) {\n\t\t\t\tcurrentView = t.view =\n\t\t\t\t\tviewsByType[viewType] ||\n\t\t\t\t\t(viewsByType[viewType] = t.instantiateView(viewType));\n\t\n\t\t\t\tcurrentView.setElement(\n\t\t\t\t\t$(\"
\").appendTo(content)\n\t\t\t\t);\n\t\t\t\theader.activateButton(viewType);\n\t\t\t}\n\t\n\t\t\tif (currentView) {\n\t\n\t\t\t\t// in case the view should render a period of time that is completely hidden\n\t\t\t\tdate = currentView.massageCurrentDate(date);\n\t\n\t\t\t\t// render or rerender the view\n\t\t\t\tif (\n\t\t\t\t\t!currentView.displaying ||\n\t\t\t\t\t!date.isWithin(currentView.intervalStart, currentView.intervalEnd) // implicit date window change\n\t\t\t\t) {\n\t\t\t\t\tif (elementVisible()) {\n\t\n\t\t\t\t\t\tcurrentView.display(date, explicitScrollState); // will call freezeContentHeight\n\t\t\t\t\t\tunfreezeContentHeight(); // immediately unfreeze regardless of whether display is async\n\t\n\t\t\t\t\t\t// need to do this after View::render, so dates are calculated\n\t\t\t\t\t\tupdateHeaderTitle();\n\t\t\t\t\t\tupdateTodayButton();\n\t\n\t\t\t\t\t\tgetAndRenderEvents();\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t}\n\t\n\t\t\tunfreezeContentHeight(); // undo any lone freezeContentHeight calls\n\t\t\tignoreWindowResize--;\n\t\t}\n\t\n\t\n\t\t// Unrenders the current view and reflects this change in the Header.\n\t\t// Unregsiters the `currentView`, but does not remove from viewByType hash.\n\t\tfunction clearView() {\n\t\t\theader.deactivateButton(currentView.type);\n\t\t\tcurrentView.removeElement();\n\t\t\tcurrentView = t.view = null;\n\t\t}\n\t\n\t\n\t\t// Destroys the view, including the view object. Then, re-instantiates it and renders it.\n\t\t// Maintains the same scroll state.\n\t\t// TODO: maintain any other user-manipulated state.\n\t\tfunction reinitView() {\n\t\t\tignoreWindowResize++;\n\t\t\tfreezeContentHeight();\n\t\n\t\t\tvar viewType = currentView.type;\n\t\t\tvar scrollState = currentView.queryScroll();\n\t\t\tclearView();\n\t\t\trenderView(viewType, scrollState);\n\t\n\t\t\tunfreezeContentHeight();\n\t\t\tignoreWindowResize--;\n\t\t}\n\t\n\t\t\n\t\n\t\t// Resizing\n\t\t// -----------------------------------------------------------------------------------\n\t\n\t\n\t\tt.getSuggestedViewHeight = function() {\n\t\t\tif (suggestedViewHeight === undefined) {\n\t\t\t\tcalcSize();\n\t\t\t}\n\t\t\treturn suggestedViewHeight;\n\t\t};\n\t\n\t\n\t\tt.isHeightAuto = function() {\n\t\t\treturn t.options.contentHeight === 'auto' || t.options.height === 'auto';\n\t\t};\n\t\t\n\t\t\n\t\tfunction updateSize(shouldRecalc) {\n\t\t\tif (elementVisible()) {\n\t\n\t\t\t\tif (shouldRecalc) {\n\t\t\t\t\t_calcSize();\n\t\t\t\t}\n\t\n\t\t\t\tignoreWindowResize++;\n\t\t\t\tcurrentView.updateSize(true); // isResize=true. will poll getSuggestedViewHeight() and isHeightAuto()\n\t\t\t\tignoreWindowResize--;\n\t\n\t\t\t\treturn true; // signal success\n\t\t\t}\n\t\t}\n\t\n\t\n\t\tfunction calcSize() {\n\t\t\tif (elementVisible()) {\n\t\t\t\t_calcSize();\n\t\t\t}\n\t\t}\n\t\t\n\t\t\n\t\tfunction _calcSize() { // assumes elementVisible\n\t\t\tvar contentHeightInput = t.options.contentHeight;\n\t\t\tvar heightInput = t.options.height;\n\t\n\t\t\tif (typeof contentHeightInput === 'number') { // exists and not 'auto'\n\t\t\t\tsuggestedViewHeight = contentHeightInput;\n\t\t\t}\n\t\t\telse if (typeof contentHeightInput === 'function') { // exists and is a function\n\t\t\t\tsuggestedViewHeight = contentHeightInput();\n\t\t\t}\n\t\t\telse if (typeof heightInput === 'number') { // exists and not 'auto'\n\t\t\t\tsuggestedViewHeight = heightInput - queryHeaderHeight();\n\t\t\t}\n\t\t\telse if (typeof heightInput === 'function') { // exists and is a function\n\t\t\t\tsuggestedViewHeight = heightInput() - queryHeaderHeight();\n\t\t\t}\n\t\t\telse if (heightInput === 'parent') { // set to height of parent element\n\t\t\t\tsuggestedViewHeight = element.parent().height() - queryHeaderHeight();\n\t\t\t}\n\t\t\telse {\n\t\t\t\tsuggestedViewHeight = Math.round(content.width() / Math.max(t.options.aspectRatio, .5));\n\t\t\t}\n\t\t}\n\t\n\t\n\t\tfunction queryHeaderHeight() {\n\t\t\treturn header.el ? header.el.outerHeight(true) : 0; // includes margin\n\t\t}\n\t\t\n\t\t\n\t\tfunction windowResize(ev) {\n\t\t\tif (\n\t\t\t\t!ignoreWindowResize &&\n\t\t\t\tev.target === window && // so we don't process jqui \"resize\" events that have bubbled up\n\t\t\t\tcurrentView.start // view has already been rendered\n\t\t\t) {\n\t\t\t\tif (updateSize(true)) {\n\t\t\t\t\tcurrentView.trigger('windowResize', _element);\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\t\t\n\t\t\n\t\t\n\t\t/* Event Fetching/Rendering\n\t\t-----------------------------------------------------------------------------*/\n\t\t// TODO: going forward, most of this stuff should be directly handled by the view\n\t\n\t\n\t\tfunction refetchEvents() { // can be called as an API method\n\t\t\tfetchAndRenderEvents();\n\t\t}\n\t\n\t\n\t\t// TODO: move this into EventManager?\n\t\tfunction refetchEventSources(matchInputs) {\n\t\t\tfetchEventSources(t.getEventSourcesByMatchArray(matchInputs));\n\t\t}\n\t\n\t\n\t\tfunction renderEvents() { // destroys old events if previously rendered\n\t\t\tif (elementVisible()) {\n\t\t\t\tfreezeContentHeight();\n\t\t\t\tcurrentView.displayEvents(events);\n\t\t\t\tunfreezeContentHeight();\n\t\t\t}\n\t\t}\n\t\t\n\t\n\t\tfunction getAndRenderEvents() {\n\t\t\tif (!t.options.lazyFetching || isFetchNeeded(currentView.start, currentView.end)) {\n\t\t\t\tfetchAndRenderEvents();\n\t\t\t}\n\t\t\telse {\n\t\t\t\trenderEvents();\n\t\t\t}\n\t\t}\n\t\n\t\n\t\tfunction fetchAndRenderEvents() {\n\t\t\tfetchEvents(currentView.start, currentView.end);\n\t\t\t\t// ... will call reportEvents\n\t\t\t\t// ... which will call renderEvents\n\t\t}\n\t\n\t\t\n\t\t// called when event data arrives\n\t\tfunction reportEvents(_events) {\n\t\t\tevents = _events;\n\t\t\trenderEvents();\n\t\t}\n\t\n\t\n\t\t// called when a single event's data has been changed\n\t\tfunction reportEventChange() {\n\t\t\trenderEvents();\n\t\t}\n\t\n\t\n\t\n\t\t/* Header Updating\n\t\t-----------------------------------------------------------------------------*/\n\t\n\t\n\t\tfunction updateHeaderTitle() {\n\t\t\theader.updateTitle(currentView.title);\n\t\t}\n\t\n\t\n\t\tfunction updateTodayButton() {\n\t\t\tvar now = t.getNow();\n\t\t\tif (now.isWithin(currentView.intervalStart, currentView.intervalEnd)) {\n\t\t\t\theader.disableButton('today');\n\t\t\t}\n\t\t\telse {\n\t\t\t\theader.enableButton('today');\n\t\t\t}\n\t\t}\n\t\t\n\t\n\t\n\t\t/* Selection\n\t\t-----------------------------------------------------------------------------*/\n\t\t\n\t\n\t\t// this public method receives start/end dates in any format, with any timezone\n\t\tfunction select(zonedStartInput, zonedEndInput) {\n\t\t\tcurrentView.select(\n\t\t\t\tt.buildSelectSpan.apply(t, arguments)\n\t\t\t);\n\t\t}\n\t\t\n\t\n\t\tfunction unselect() { // safe to be called before renderView\n\t\t\tif (currentView) {\n\t\t\t\tcurrentView.unselect();\n\t\t\t}\n\t\t}\n\t\t\n\t\t\n\t\t\n\t\t/* Date\n\t\t-----------------------------------------------------------------------------*/\n\t\t\n\t\t\n\t\tfunction prev() {\n\t\t\tdate = currentView.computePrevDate(date);\n\t\t\trenderView();\n\t\t}\n\t\t\n\t\t\n\t\tfunction next() {\n\t\t\tdate = currentView.computeNextDate(date);\n\t\t\trenderView();\n\t\t}\n\t\t\n\t\t\n\t\tfunction prevYear() {\n\t\t\tdate.add(-1, 'years');\n\t\t\trenderView();\n\t\t}\n\t\t\n\t\t\n\t\tfunction nextYear() {\n\t\t\tdate.add(1, 'years');\n\t\t\trenderView();\n\t\t}\n\t\t\n\t\t\n\t\tfunction today() {\n\t\t\tdate = t.getNow();\n\t\t\trenderView();\n\t\t}\n\t\t\n\t\t\n\t\tfunction gotoDate(zonedDateInput) {\n\t\t\tdate = t.moment(zonedDateInput).stripZone();\n\t\t\trenderView();\n\t\t}\n\t\t\n\t\t\n\t\tfunction incrementDate(delta) {\n\t\t\tdate.add(moment.duration(delta));\n\t\t\trenderView();\n\t\t}\n\t\n\t\n\t\t// Forces navigation to a view for the given date.\n\t\t// `viewType` can be a specific view name or a generic one like \"week\" or \"day\".\n\t\tfunction zoomTo(newDate, viewType) {\n\t\t\tvar spec;\n\t\n\t\t\tviewType = viewType || 'day'; // day is default zoom\n\t\t\tspec = t.getViewSpec(viewType) || t.getUnitViewSpec(viewType);\n\t\n\t\t\tdate = newDate.clone();\n\t\t\trenderView(spec ? spec.type : null);\n\t\t}\n\t\t\n\t\t\n\t\t// for external API\n\t\tfunction getDate() {\n\t\t\treturn t.applyTimezone(date); // infuse the calendar's timezone\n\t\t}\n\t\n\t\n\t\n\t\t/* Height \"Freezing\"\n\t\t-----------------------------------------------------------------------------*/\n\t\t// TODO: move this into the view\n\t\n\t\tt.freezeContentHeight = freezeContentHeight;\n\t\tt.unfreezeContentHeight = unfreezeContentHeight;\n\t\n\t\n\t\tfunction freezeContentHeight() {\n\t\t\tcontent.css({\n\t\t\t\twidth: '100%',\n\t\t\t\theight: content.height(),\n\t\t\t\toverflow: 'hidden'\n\t\t\t});\n\t\t}\n\t\n\t\n\t\tfunction unfreezeContentHeight() {\n\t\t\tcontent.css({\n\t\t\t\twidth: '',\n\t\t\t\theight: '',\n\t\t\t\toverflow: ''\n\t\t\t});\n\t\t}\n\t\t\n\t\t\n\t\t\n\t\t/* Misc\n\t\t-----------------------------------------------------------------------------*/\n\t\t\n\t\n\t\tfunction getCalendar() {\n\t\t\treturn t;\n\t\t}\n\t\n\t\t\n\t\tfunction getView() {\n\t\t\treturn currentView;\n\t\t}\n\t\t\n\t\t\n\t\tfunction option(name, value) {\n\t\t\tvar newOptionHash;\n\t\n\t\t\tif (typeof name === 'string') {\n\t\t\t\tif (value === undefined) { // getter\n\t\t\t\t\treturn t.options[name];\n\t\t\t\t}\n\t\t\t\telse { // setter for individual option\n\t\t\t\t\tnewOptionHash = {};\n\t\t\t\t\tnewOptionHash[name] = value;\n\t\t\t\t\tsetOptions(newOptionHash);\n\t\t\t\t}\n\t\t\t}\n\t\t\telse if (typeof name === 'object') { // compound setter with object input\n\t\t\t\tsetOptions(name);\n\t\t\t}\n\t\t}\n\t\n\t\n\t\tfunction setOptions(newOptionHash) {\n\t\t\tvar optionCnt = 0;\n\t\t\tvar optionName;\n\t\n\t\t\tfor (optionName in newOptionHash) {\n\t\t\t\tt.dynamicOverrides[optionName] = newOptionHash[optionName];\n\t\t\t}\n\t\n\t\t\tt.viewSpecCache = {}; // the dynamic override invalidates the options in this cache, so just clear it\n\t\t\tt.populateOptionsHash(); // this.options needs to be recomputed after the dynamic override\n\t\n\t\t\t// trigger handlers after this.options has been updated\n\t\t\tfor (optionName in newOptionHash) {\n\t\t\t\tt.triggerOptionHandlers(optionName); // recall bindOption/bindOptions\n\t\t\t\toptionCnt++;\n\t\t\t}\n\t\n\t\t\t// special-case handling of single option change.\n\t\t\t// if only one option change, `optionName` will be its name.\n\t\t\tif (optionCnt === 1) {\n\t\t\t\tif (optionName === 'height' || optionName === 'contentHeight' || optionName === 'aspectRatio') {\n\t\t\t\t\tupdateSize(true); // true = allow recalculation of height\n\t\t\t\t\treturn;\n\t\t\t\t}\n\t\t\t\telse if (optionName === 'defaultDate') {\n\t\t\t\t\treturn; // can't change date this way. use gotoDate instead\n\t\t\t\t}\n\t\t\t\telse if (optionName === 'businessHours') {\n\t\t\t\t\tif (currentView) {\n\t\t\t\t\t\tcurrentView.unrenderBusinessHours();\n\t\t\t\t\t\tcurrentView.renderBusinessHours();\n\t\t\t\t\t}\n\t\t\t\t\treturn;\n\t\t\t\t}\n\t\t\t\telse if (optionName === 'timezone') {\n\t\t\t\t\tt.rezoneArrayEventSources();\n\t\t\t\t\trefetchEvents();\n\t\t\t\t\treturn;\n\t\t\t\t}\n\t\t\t}\n\t\n\t\t\t// catch-all. rerender the header and rebuild/rerender the current view\n\t\t\trenderHeader();\n\t\t\tviewsByType = {}; // even non-current views will be affected by this option change. do before rerender\n\t\t\treinitView();\n\t\t}\n\t\t\n\t\t\n\t\tfunction trigger(name, thisObj) { // overrides the Emitter's trigger method :(\n\t\t\tvar args = Array.prototype.slice.call(arguments, 2);\n\t\n\t\t\tthisObj = thisObj || _element;\n\t\t\tthis.triggerWith(name, thisObj, args); // Emitter's method\n\t\n\t\t\tif (t.options[name]) {\n\t\t\t\treturn t.options[name].apply(thisObj, args);\n\t\t\t}\n\t\t}\n\t\n\t\tt.initialize();\n\t}\n\t\n\t;;\n\t/*\n\tOptions binding/triggering system.\n\t*/\n\tCalendar.mixin({\n\t\n\t\t// A map of option names to arrays of handler objects. Initialized to {} in Calendar.\n\t\t// Format for a handler object:\n\t\t// {\n\t\t// func // callback function to be called upon change\n\t\t// names // option names whose values should be given to func\n\t\t// }\n\t\toptionHandlers: null, \n\t\n\t\t// Calls handlerFunc immediately, and when the given option has changed.\n\t\t// handlerFunc will be given the option value.\n\t\tbindOption: function(optionName, handlerFunc) {\n\t\t\tthis.bindOptions([ optionName ], handlerFunc);\n\t\t},\n\t\n\t\t// Calls handlerFunc immediately, and when any of the given options change.\n\t\t// handlerFunc will be given each option value as ordered function arguments.\n\t\tbindOptions: function(optionNames, handlerFunc) {\n\t\t\tvar handlerObj = { func: handlerFunc, names: optionNames };\n\t\t\tvar i;\n\t\n\t\t\tfor (i = 0; i < optionNames.length; i++) {\n\t\t\t\tthis.registerOptionHandlerObj(optionNames[i], handlerObj);\n\t\t\t}\n\t\n\t\t\tthis.triggerOptionHandlerObj(handlerObj);\n\t\t},\n\t\n\t\t// Puts the given handler object into the internal hash\n\t\tregisterOptionHandlerObj: function(optionName, handlerObj) {\n\t\t\t(this.optionHandlers[optionName] || (this.optionHandlers[optionName] = []))\n\t\t\t\t.push(handlerObj);\n\t\t},\n\t\n\t\t// Reports that the given option has changed, and calls all appropriate handlers.\n\t\ttriggerOptionHandlers: function(optionName) {\n\t\t\tvar handlerObjs = this.optionHandlers[optionName] || [];\n\t\t\tvar i;\n\t\n\t\t\tfor (i = 0; i < handlerObjs.length; i++) {\n\t\t\t\tthis.triggerOptionHandlerObj(handlerObjs[i]);\n\t\t\t}\n\t\t},\n\t\n\t\t// Calls the callback for a specific handler object, passing in the appropriate arguments.\n\t\ttriggerOptionHandlerObj: function(handlerObj) {\n\t\t\tvar optionNames = handlerObj.names;\n\t\t\tvar optionValues = [];\n\t\t\tvar i;\n\t\n\t\t\tfor (i = 0; i < optionNames.length; i++) {\n\t\t\t\toptionValues.push(this.options[optionNames[i]]);\n\t\t\t}\n\t\n\t\t\thandlerObj.func.apply(this, optionValues); // maintain the Calendar's `this` context\n\t\t}\n\t\n\t});\n\t\n\t;;\n\t\n\tCalendar.defaults = {\n\t\n\t\ttitleRangeSeparator: ' \\u2013 ', // en dash\n\t\tmonthYearFormat: 'MMMM YYYY', // required for en. other languages rely on datepicker computable option\n\t\n\t\tdefaultTimedEventDuration: '02:00:00',\n\t\tdefaultAllDayEventDuration: { days: 1 },\n\t\tforceEventDuration: false,\n\t\tnextDayThreshold: '09:00:00', // 9am\n\t\n\t\t// display\n\t\tdefaultView: 'month',\n\t\taspectRatio: 1.35,\n\t\theader: {\n\t\t\tleft: 'title',\n\t\t\tcenter: '',\n\t\t\tright: 'today prev,next'\n\t\t},\n\t\tweekends: true,\n\t\tweekNumbers: false,\n\t\n\t\tweekNumberTitle: 'W',\n\t\tweekNumberCalculation: 'local',\n\t\t\n\t\t//editable: false,\n\t\n\t\t//nowIndicator: false,\n\t\n\t\tscrollTime: '06:00:00',\n\t\t\n\t\t// event ajax\n\t\tlazyFetching: true,\n\t\tstartParam: 'start',\n\t\tendParam: 'end',\n\t\ttimezoneParam: 'timezone',\n\t\n\t\ttimezone: false,\n\t\n\t\t//allDayDefault: undefined,\n\t\n\t\t// locale\n\t\tisRTL: false,\n\t\tbuttonText: {\n\t\t\tprev: \"prev\",\n\t\t\tnext: \"next\",\n\t\t\tprevYear: \"prev year\",\n\t\t\tnextYear: \"next year\",\n\t\t\tyear: 'year', // TODO: locale files need to specify this\n\t\t\ttoday: 'today',\n\t\t\tmonth: 'month',\n\t\t\tweek: 'week',\n\t\t\tday: 'day'\n\t\t},\n\t\n\t\tbuttonIcons: {\n\t\t\tprev: 'left-single-arrow',\n\t\t\tnext: 'right-single-arrow',\n\t\t\tprevYear: 'left-double-arrow',\n\t\t\tnextYear: 'right-double-arrow'\n\t\t},\n\t\t\n\t\t// jquery-ui theming\n\t\ttheme: false,\n\t\tthemeButtonIcons: {\n\t\t\tprev: 'circle-triangle-w',\n\t\t\tnext: 'circle-triangle-e',\n\t\t\tprevYear: 'seek-prev',\n\t\t\tnextYear: 'seek-next'\n\t\t},\n\t\n\t\t//eventResizableFromStart: false,\n\t\tdragOpacity: .75,\n\t\tdragRevertDuration: 500,\n\t\tdragScroll: true,\n\t\t\n\t\t//selectable: false,\n\t\tunselectAuto: true,\n\t\t\n\t\tdropAccept: '*',\n\t\n\t\teventOrder: 'title',\n\t\n\t\teventLimit: false,\n\t\teventLimitText: 'more',\n\t\teventLimitClick: 'popover',\n\t\tdayPopoverFormat: 'LL',\n\t\t\n\t\thandleWindowResize: true,\n\t\twindowResizeDelay: 100, // milliseconds before an updateSize happens\n\t\n\t\tlongPressDelay: 1000\n\t\t\n\t};\n\t\n\t\n\tCalendar.englishDefaults = { // used by lang.js\n\t\tdayPopoverFormat: 'dddd, MMMM D'\n\t};\n\t\n\t\n\tCalendar.rtlDefaults = { // right-to-left defaults\n\t\theader: { // TODO: smarter solution (first/center/last ?)\n\t\t\tleft: 'next,prev today',\n\t\t\tcenter: '',\n\t\t\tright: 'title'\n\t\t},\n\t\tbuttonIcons: {\n\t\t\tprev: 'right-single-arrow',\n\t\t\tnext: 'left-single-arrow',\n\t\t\tprevYear: 'right-double-arrow',\n\t\t\tnextYear: 'left-double-arrow'\n\t\t},\n\t\tthemeButtonIcons: {\n\t\t\tprev: 'circle-triangle-e',\n\t\t\tnext: 'circle-triangle-w',\n\t\t\tnextYear: 'seek-prev',\n\t\t\tprevYear: 'seek-next'\n\t\t}\n\t};\n\t\n\t;;\n\t\n\tvar langOptionHash = FC.langs = {}; // initialize and expose\n\t\n\t\n\t// TODO: document the structure and ordering of a FullCalendar lang file\n\t// TODO: rename everything \"lang\" to \"locale\", like what the moment project did\n\t\n\t\n\t// Initialize jQuery UI datepicker translations while using some of the translations\n\t// Will set this as the default language for datepicker.\n\tFC.datepickerLang = function(langCode, dpLangCode, dpOptions) {\n\t\n\t\t// get the FullCalendar internal option hash for this language. create if necessary\n\t\tvar fcOptions = langOptionHash[langCode] || (langOptionHash[langCode] = {});\n\t\n\t\t// transfer some simple options from datepicker to fc\n\t\tfcOptions.isRTL = dpOptions.isRTL;\n\t\tfcOptions.weekNumberTitle = dpOptions.weekHeader;\n\t\n\t\t// compute some more complex options from datepicker\n\t\t$.each(dpComputableOptions, function(name, func) {\n\t\t\tfcOptions[name] = func(dpOptions);\n\t\t});\n\t\n\t\t// is jQuery UI Datepicker is on the page?\n\t\tif ($.datepicker) {\n\t\n\t\t\t// Register the language data.\n\t\t\t// FullCalendar and MomentJS use language codes like \"pt-br\" but Datepicker\n\t\t\t// does it like \"pt-BR\" or if it doesn't have the language, maybe just \"pt\".\n\t\t\t// Make an alias so the language can be referenced either way.\n\t\t\t$.datepicker.regional[dpLangCode] =\n\t\t\t\t$.datepicker.regional[langCode] = // alias\n\t\t\t\t\tdpOptions;\n\t\n\t\t\t// Alias 'en' to the default language data. Do this every time.\n\t\t\t$.datepicker.regional.en = $.datepicker.regional[''];\n\t\n\t\t\t// Set as Datepicker's global defaults.\n\t\t\t$.datepicker.setDefaults(dpOptions);\n\t\t}\n\t};\n\t\n\t\n\t// Sets FullCalendar-specific translations. Will set the language as the global default.\n\tFC.lang = function(langCode, newFcOptions) {\n\t\tvar fcOptions;\n\t\tvar momOptions;\n\t\n\t\t// get the FullCalendar internal option hash for this language. create if necessary\n\t\tfcOptions = langOptionHash[langCode] || (langOptionHash[langCode] = {});\n\t\n\t\t// provided new options for this language? merge them in\n\t\tif (newFcOptions) {\n\t\t\tfcOptions = langOptionHash[langCode] = mergeOptions([ fcOptions, newFcOptions ]);\n\t\t}\n\t\n\t\t// compute language options that weren't defined.\n\t\t// always do this. newFcOptions can be undefined when initializing from i18n file,\n\t\t// so no way to tell if this is an initialization or a default-setting.\n\t\tmomOptions = getMomentLocaleData(langCode); // will fall back to en\n\t\t$.each(momComputableOptions, function(name, func) {\n\t\t\tif (fcOptions[name] == null) {\n\t\t\t\tfcOptions[name] = func(momOptions, fcOptions);\n\t\t\t}\n\t\t});\n\t\n\t\t// set it as the default language for FullCalendar\n\t\tCalendar.defaults.lang = langCode;\n\t};\n\t\n\t\n\t// NOTE: can't guarantee any of these computations will run because not every language has datepicker\n\t// configs, so make sure there are English fallbacks for these in the defaults file.\n\tvar dpComputableOptions = {\n\t\n\t\tbuttonText: function(dpOptions) {\n\t\t\treturn {\n\t\t\t\t// the translations sometimes wrongly contain HTML entities\n\t\t\t\tprev: stripHtmlEntities(dpOptions.prevText),\n\t\t\t\tnext: stripHtmlEntities(dpOptions.nextText),\n\t\t\t\ttoday: stripHtmlEntities(dpOptions.currentText)\n\t\t\t};\n\t\t},\n\t\n\t\t// Produces format strings like \"MMMM YYYY\" -> \"September 2014\"\n\t\tmonthYearFormat: function(dpOptions) {\n\t\t\treturn dpOptions.showMonthAfterYear ?\n\t\t\t\t'YYYY[' + dpOptions.yearSuffix + '] MMMM' :\n\t\t\t\t'MMMM YYYY[' + dpOptions.yearSuffix + ']';\n\t\t}\n\t\n\t};\n\t\n\tvar momComputableOptions = {\n\t\n\t\t// Produces format strings like \"ddd M/D\" -> \"Fri 9/15\"\n\t\tdayOfMonthFormat: function(momOptions, fcOptions) {\n\t\t\tvar format = momOptions.longDateFormat('l'); // for the format like \"M/D/YYYY\"\n\t\n\t\t\t// strip the year off the edge, as well as other misc non-whitespace chars\n\t\t\tformat = format.replace(/^Y+[^\\w\\s]*|[^\\w\\s]*Y+$/g, '');\n\t\n\t\t\tif (fcOptions.isRTL) {\n\t\t\t\tformat += ' ddd'; // for RTL, add day-of-week to end\n\t\t\t}\n\t\t\telse {\n\t\t\t\tformat = 'ddd ' + format; // for LTR, add day-of-week to beginning\n\t\t\t}\n\t\t\treturn format;\n\t\t},\n\t\n\t\t// Produces format strings like \"h:mma\" -> \"6:00pm\"\n\t\tmediumTimeFormat: function(momOptions) { // can't be called `timeFormat` because collides with option\n\t\t\treturn momOptions.longDateFormat('LT')\n\t\t\t\t.replace(/\\s*a$/i, 'a'); // convert AM/PM/am/pm to lowercase. remove any spaces beforehand\n\t\t},\n\t\n\t\t// Produces format strings like \"h(:mm)a\" -> \"6pm\" / \"6:30pm\"\n\t\tsmallTimeFormat: function(momOptions) {\n\t\t\treturn momOptions.longDateFormat('LT')\n\t\t\t\t.replace(':mm', '(:mm)')\n\t\t\t\t.replace(/(\\Wmm)$/, '($1)') // like above, but for foreign langs\n\t\t\t\t.replace(/\\s*a$/i, 'a'); // convert AM/PM/am/pm to lowercase. remove any spaces beforehand\n\t\t},\n\t\n\t\t// Produces format strings like \"h(:mm)t\" -> \"6p\" / \"6:30p\"\n\t\textraSmallTimeFormat: function(momOptions) {\n\t\t\treturn momOptions.longDateFormat('LT')\n\t\t\t\t.replace(':mm', '(:mm)')\n\t\t\t\t.replace(/(\\Wmm)$/, '($1)') // like above, but for foreign langs\n\t\t\t\t.replace(/\\s*a$/i, 't'); // convert to AM/PM/am/pm to lowercase one-letter. remove any spaces beforehand\n\t\t},\n\t\n\t\t// Produces format strings like \"ha\" / \"H\" -> \"6pm\" / \"18\"\n\t\thourFormat: function(momOptions) {\n\t\t\treturn momOptions.longDateFormat('LT')\n\t\t\t\t.replace(':mm', '')\n\t\t\t\t.replace(/(\\Wmm)$/, '') // like above, but for foreign langs\n\t\t\t\t.replace(/\\s*a$/i, 'a'); // convert AM/PM/am/pm to lowercase. remove any spaces beforehand\n\t\t},\n\t\n\t\t// Produces format strings like \"h:mm\" -> \"6:30\" (with no AM/PM)\n\t\tnoMeridiemTimeFormat: function(momOptions) {\n\t\t\treturn momOptions.longDateFormat('LT')\n\t\t\t\t.replace(/\\s*a$/i, ''); // remove trailing AM/PM\n\t\t}\n\t\n\t};\n\t\n\t\n\t// options that should be computed off live calendar options (considers override options)\n\t// TODO: best place for this? related to lang?\n\t// TODO: flipping text based on isRTL is a bad idea because the CSS `direction` might want to handle it\n\tvar instanceComputableOptions = {\n\t\n\t\t// Produces format strings for results like \"Mo 16\"\n\t\tsmallDayDateFormat: function(options) {\n\t\t\treturn options.isRTL ?\n\t\t\t\t'D dd' :\n\t\t\t\t'dd D';\n\t\t},\n\t\n\t\t// Produces format strings for results like \"Wk 5\"\n\t\tweekFormat: function(options) {\n\t\t\treturn options.isRTL ?\n\t\t\t\t'w[ ' + options.weekNumberTitle + ']' :\n\t\t\t\t'[' + options.weekNumberTitle + ' ]w';\n\t\t},\n\t\n\t\t// Produces format strings for results like \"Wk5\"\n\t\tsmallWeekFormat: function(options) {\n\t\t\treturn options.isRTL ?\n\t\t\t\t'w[' + options.weekNumberTitle + ']' :\n\t\t\t\t'[' + options.weekNumberTitle + ']w';\n\t\t}\n\t\n\t};\n\t\n\tfunction populateInstanceComputableOptions(options) {\n\t\t$.each(instanceComputableOptions, function(name, func) {\n\t\t\tif (options[name] == null) {\n\t\t\t\toptions[name] = func(options);\n\t\t\t}\n\t\t});\n\t}\n\t\n\t\n\t// Returns moment's internal locale data. If doesn't exist, returns English.\n\t// Works with moment-pre-2.8\n\tfunction getMomentLocaleData(langCode) {\n\t\tvar func = moment.localeData || moment.langData;\n\t\treturn func.call(moment, langCode) ||\n\t\t\tfunc.call(moment, 'en'); // the newer localData could return null, so fall back to en\n\t}\n\t\n\t\n\t// Initialize English by forcing computation of moment-derived options.\n\t// Also, sets it as the default.\n\tFC.lang('en', Calendar.englishDefaults);\n\t\n\t;;\n\t\n\t/* Top toolbar area with buttons and title\n\t----------------------------------------------------------------------------------------------------------------------*/\n\t// TODO: rename all header-related things to \"toolbar\"\n\t\n\tfunction Header(calendar) {\n\t\tvar t = this;\n\t\t\n\t\t// exports\n\t\tt.render = render;\n\t\tt.removeElement = removeElement;\n\t\tt.updateTitle = updateTitle;\n\t\tt.activateButton = activateButton;\n\t\tt.deactivateButton = deactivateButton;\n\t\tt.disableButton = disableButton;\n\t\tt.enableButton = enableButton;\n\t\tt.getViewsWithButtons = getViewsWithButtons;\n\t\tt.el = null; // mirrors local `el`\n\t\t\n\t\t// locals\n\t\tvar el;\n\t\tvar viewsWithButtons = [];\n\t\tvar tm;\n\t\n\t\n\t\t// can be called repeatedly and will rerender\n\t\tfunction render() {\n\t\t\tvar options = calendar.options;\n\t\t\tvar sections = options.header;\n\t\n\t\t\ttm = options.theme ? 'ui' : 'fc';\n\t\n\t\t\tif (sections) {\n\t\t\t\tif (!el) {\n\t\t\t\t\tel = this.el = $(\"
\");\n\t\t\t\t}\n\t\t\t\telse {\n\t\t\t\t\tel.empty();\n\t\t\t\t}\n\t\t\t\tel.append(renderSection('left'))\n\t\t\t\t\t.append(renderSection('right'))\n\t\t\t\t\t.append(renderSection('center'))\n\t\t\t\t\t.append('
');\n\t\t\t}\n\t\t\telse {\n\t\t\t\tremoveElement();\n\t\t\t}\n\t\t}\n\t\t\n\t\t\n\t\tfunction removeElement() {\n\t\t\tif (el) {\n\t\t\t\tel.remove();\n\t\t\t\tel = t.el = null;\n\t\t\t}\n\t\t}\n\t\t\n\t\t\n\t\tfunction renderSection(position) {\n\t\t\tvar sectionEl = $('
');\n\t\t\tvar options = calendar.options;\n\t\t\tvar buttonStr = options.header[position];\n\t\n\t\t\tif (buttonStr) {\n\t\t\t\t$.each(buttonStr.split(' '), function(i) {\n\t\t\t\t\tvar groupChildren = $();\n\t\t\t\t\tvar isOnlyButtons = true;\n\t\t\t\t\tvar groupEl;\n\t\n\t\t\t\t\t$.each(this.split(','), function(j, buttonName) {\n\t\t\t\t\t\tvar customButtonProps;\n\t\t\t\t\t\tvar viewSpec;\n\t\t\t\t\t\tvar buttonClick;\n\t\t\t\t\t\tvar overrideText; // text explicitly set by calendar's constructor options. overcomes icons\n\t\t\t\t\t\tvar defaultText;\n\t\t\t\t\t\tvar themeIcon;\n\t\t\t\t\t\tvar normalIcon;\n\t\t\t\t\t\tvar innerHtml;\n\t\t\t\t\t\tvar classes;\n\t\t\t\t\t\tvar button; // the element\n\t\n\t\t\t\t\t\tif (buttonName == 'title') {\n\t\t\t\t\t\t\tgroupChildren = groupChildren.add($('

 

')); // we always want it to take up height\n\t\t\t\t\t\t\tisOnlyButtons = false;\n\t\t\t\t\t\t}\n\t\t\t\t\t\telse {\n\t\t\t\t\t\t\tif ((customButtonProps = (options.customButtons || {})[buttonName])) {\n\t\t\t\t\t\t\t\tbuttonClick = function(ev) {\n\t\t\t\t\t\t\t\t\tif (customButtonProps.click) {\n\t\t\t\t\t\t\t\t\t\tcustomButtonProps.click.call(button[0], ev);\n\t\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t\t};\n\t\t\t\t\t\t\t\toverrideText = ''; // icons will override text\n\t\t\t\t\t\t\t\tdefaultText = customButtonProps.text;\n\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\telse if ((viewSpec = calendar.getViewSpec(buttonName))) {\n\t\t\t\t\t\t\t\tbuttonClick = function() {\n\t\t\t\t\t\t\t\t\tcalendar.changeView(buttonName);\n\t\t\t\t\t\t\t\t};\n\t\t\t\t\t\t\t\tviewsWithButtons.push(buttonName);\n\t\t\t\t\t\t\t\toverrideText = viewSpec.buttonTextOverride;\n\t\t\t\t\t\t\t\tdefaultText = viewSpec.buttonTextDefault;\n\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\telse if (calendar[buttonName]) { // a calendar method\n\t\t\t\t\t\t\t\tbuttonClick = function() {\n\t\t\t\t\t\t\t\t\tcalendar[buttonName]();\n\t\t\t\t\t\t\t\t};\n\t\t\t\t\t\t\t\toverrideText = (calendar.overrides.buttonText || {})[buttonName];\n\t\t\t\t\t\t\t\tdefaultText = options.buttonText[buttonName]; // everything else is considered default\n\t\t\t\t\t\t\t}\n\t\n\t\t\t\t\t\t\tif (buttonClick) {\n\t\n\t\t\t\t\t\t\t\tthemeIcon =\n\t\t\t\t\t\t\t\t\tcustomButtonProps ?\n\t\t\t\t\t\t\t\t\t\tcustomButtonProps.themeIcon :\n\t\t\t\t\t\t\t\t\t\toptions.themeButtonIcons[buttonName];\n\t\n\t\t\t\t\t\t\t\tnormalIcon =\n\t\t\t\t\t\t\t\t\tcustomButtonProps ?\n\t\t\t\t\t\t\t\t\t\tcustomButtonProps.icon :\n\t\t\t\t\t\t\t\t\t\toptions.buttonIcons[buttonName];\n\t\n\t\t\t\t\t\t\t\tif (overrideText) {\n\t\t\t\t\t\t\t\t\tinnerHtml = htmlEscape(overrideText);\n\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t\telse if (themeIcon && options.theme) {\n\t\t\t\t\t\t\t\t\tinnerHtml = \"\";\n\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t\telse if (normalIcon && !options.theme) {\n\t\t\t\t\t\t\t\t\tinnerHtml = \"\";\n\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t\telse {\n\t\t\t\t\t\t\t\t\tinnerHtml = htmlEscape(defaultText);\n\t\t\t\t\t\t\t\t}\n\t\n\t\t\t\t\t\t\t\tclasses = [\n\t\t\t\t\t\t\t\t\t'fc-' + buttonName + '-button',\n\t\t\t\t\t\t\t\t\ttm + '-button',\n\t\t\t\t\t\t\t\t\ttm + '-state-default'\n\t\t\t\t\t\t\t\t];\n\t\n\t\t\t\t\t\t\t\tbutton = $( // type=\"button\" so that it doesn't submit a form\n\t\t\t\t\t\t\t\t\t''\n\t\t\t\t\t\t\t\t\t)\n\t\t\t\t\t\t\t\t\t.click(function(ev) {\n\t\t\t\t\t\t\t\t\t\t// don't process clicks for disabled buttons\n\t\t\t\t\t\t\t\t\t\tif (!button.hasClass(tm + '-state-disabled')) {\n\t\n\t\t\t\t\t\t\t\t\t\t\tbuttonClick(ev);\n\t\n\t\t\t\t\t\t\t\t\t\t\t// after the click action, if the button becomes the \"active\" tab, or disabled,\n\t\t\t\t\t\t\t\t\t\t\t// it should never have a hover class, so remove it now.\n\t\t\t\t\t\t\t\t\t\t\tif (\n\t\t\t\t\t\t\t\t\t\t\t\tbutton.hasClass(tm + '-state-active') ||\n\t\t\t\t\t\t\t\t\t\t\t\tbutton.hasClass(tm + '-state-disabled')\n\t\t\t\t\t\t\t\t\t\t\t) {\n\t\t\t\t\t\t\t\t\t\t\t\tbutton.removeClass(tm + '-state-hover');\n\t\t\t\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t\t\t})\n\t\t\t\t\t\t\t\t\t.mousedown(function() {\n\t\t\t\t\t\t\t\t\t\t// the *down* effect (mouse pressed in).\n\t\t\t\t\t\t\t\t\t\t// only on buttons that are not the \"active\" tab, or disabled\n\t\t\t\t\t\t\t\t\t\tbutton\n\t\t\t\t\t\t\t\t\t\t\t.not('.' + tm + '-state-active')\n\t\t\t\t\t\t\t\t\t\t\t.not('.' + tm + '-state-disabled')\n\t\t\t\t\t\t\t\t\t\t\t.addClass(tm + '-state-down');\n\t\t\t\t\t\t\t\t\t})\n\t\t\t\t\t\t\t\t\t.mouseup(function() {\n\t\t\t\t\t\t\t\t\t\t// undo the *down* effect\n\t\t\t\t\t\t\t\t\t\tbutton.removeClass(tm + '-state-down');\n\t\t\t\t\t\t\t\t\t})\n\t\t\t\t\t\t\t\t\t.hover(\n\t\t\t\t\t\t\t\t\t\tfunction() {\n\t\t\t\t\t\t\t\t\t\t\t// the *hover* effect.\n\t\t\t\t\t\t\t\t\t\t\t// only on buttons that are not the \"active\" tab, or disabled\n\t\t\t\t\t\t\t\t\t\t\tbutton\n\t\t\t\t\t\t\t\t\t\t\t\t.not('.' + tm + '-state-active')\n\t\t\t\t\t\t\t\t\t\t\t\t.not('.' + tm + '-state-disabled')\n\t\t\t\t\t\t\t\t\t\t\t\t.addClass(tm + '-state-hover');\n\t\t\t\t\t\t\t\t\t\t},\n\t\t\t\t\t\t\t\t\t\tfunction() {\n\t\t\t\t\t\t\t\t\t\t\t// undo the *hover* effect\n\t\t\t\t\t\t\t\t\t\t\tbutton\n\t\t\t\t\t\t\t\t\t\t\t\t.removeClass(tm + '-state-hover')\n\t\t\t\t\t\t\t\t\t\t\t\t.removeClass(tm + '-state-down'); // if mouseleave happens before mouseup\n\t\t\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t\t\t);\n\t\n\t\t\t\t\t\t\t\tgroupChildren = groupChildren.add(button);\n\t\t\t\t\t\t\t}\n\t\t\t\t\t\t}\n\t\t\t\t\t});\n\t\n\t\t\t\t\tif (isOnlyButtons) {\n\t\t\t\t\t\tgroupChildren\n\t\t\t\t\t\t\t.first().addClass(tm + '-corner-left').end()\n\t\t\t\t\t\t\t.last().addClass(tm + '-corner-right').end();\n\t\t\t\t\t}\n\t\n\t\t\t\t\tif (groupChildren.length > 1) {\n\t\t\t\t\t\tgroupEl = $('
');\n\t\t\t\t\t\tif (isOnlyButtons) {\n\t\t\t\t\t\t\tgroupEl.addClass('fc-button-group');\n\t\t\t\t\t\t}\n\t\t\t\t\t\tgroupEl.append(groupChildren);\n\t\t\t\t\t\tsectionEl.append(groupEl);\n\t\t\t\t\t}\n\t\t\t\t\telse {\n\t\t\t\t\t\tsectionEl.append(groupChildren); // 1 or 0 children\n\t\t\t\t\t}\n\t\t\t\t});\n\t\t\t}\n\t\n\t\t\treturn sectionEl;\n\t\t}\n\t\t\n\t\t\n\t\tfunction updateTitle(text) {\n\t\t\tif (el) {\n\t\t\t\tel.find('h2').text(text);\n\t\t\t}\n\t\t}\n\t\t\n\t\t\n\t\tfunction activateButton(buttonName) {\n\t\t\tif (el) {\n\t\t\t\tel.find('.fc-' + buttonName + '-button')\n\t\t\t\t\t.addClass(tm + '-state-active');\n\t\t\t}\n\t\t}\n\t\t\n\t\t\n\t\tfunction deactivateButton(buttonName) {\n\t\t\tif (el) {\n\t\t\t\tel.find('.fc-' + buttonName + '-button')\n\t\t\t\t\t.removeClass(tm + '-state-active');\n\t\t\t}\n\t\t}\n\t\t\n\t\t\n\t\tfunction disableButton(buttonName) {\n\t\t\tif (el) {\n\t\t\t\tel.find('.fc-' + buttonName + '-button')\n\t\t\t\t\t.prop('disabled', true)\n\t\t\t\t\t.addClass(tm + '-state-disabled');\n\t\t\t}\n\t\t}\n\t\t\n\t\t\n\t\tfunction enableButton(buttonName) {\n\t\t\tif (el) {\n\t\t\t\tel.find('.fc-' + buttonName + '-button')\n\t\t\t\t\t.prop('disabled', false)\n\t\t\t\t\t.removeClass(tm + '-state-disabled');\n\t\t\t}\n\t\t}\n\t\n\t\n\t\tfunction getViewsWithButtons() {\n\t\t\treturn viewsWithButtons;\n\t\t}\n\t\n\t}\n\t\n\t;;\n\t\n\tFC.sourceNormalizers = [];\n\tFC.sourceFetchers = [];\n\t\n\tvar ajaxDefaults = {\n\t\tdataType: 'json',\n\t\tcache: false\n\t};\n\t\n\tvar eventGUID = 1;\n\t\n\t\n\tfunction EventManager() { // assumed to be a calendar\n\t\tvar t = this;\n\t\t\n\t\t\n\t\t// exports\n\t\tt.isFetchNeeded = isFetchNeeded;\n\t\tt.fetchEvents = fetchEvents;\n\t\tt.fetchEventSources = fetchEventSources;\n\t\tt.getEventSources = getEventSources;\n\t\tt.getEventSourceById = getEventSourceById;\n\t\tt.getEventSourcesByMatchArray = getEventSourcesByMatchArray;\n\t\tt.getEventSourcesByMatch = getEventSourcesByMatch;\n\t\tt.addEventSource = addEventSource;\n\t\tt.removeEventSource = removeEventSource;\n\t\tt.removeEventSources = removeEventSources;\n\t\tt.updateEvent = updateEvent;\n\t\tt.renderEvent = renderEvent;\n\t\tt.removeEvents = removeEvents;\n\t\tt.clientEvents = clientEvents;\n\t\tt.mutateEvent = mutateEvent;\n\t\tt.normalizeEventDates = normalizeEventDates;\n\t\tt.normalizeEventTimes = normalizeEventTimes;\n\t\t\n\t\t\n\t\t// imports\n\t\tvar reportEvents = t.reportEvents;\n\t\t\n\t\t\n\t\t// locals\n\t\tvar stickySource = { events: [] };\n\t\tvar sources = [ stickySource ];\n\t\tvar rangeStart, rangeEnd;\n\t\tvar pendingSourceCnt = 0; // outstanding fetch requests, max one per source\n\t\tvar cache = []; // holds events that have already been expanded\n\t\n\t\n\t\t$.each(\n\t\t\t(t.options.events ? [ t.options.events ] : []).concat(t.options.eventSources || []),\n\t\t\tfunction(i, sourceInput) {\n\t\t\t\tvar source = buildEventSource(sourceInput);\n\t\t\t\tif (source) {\n\t\t\t\t\tsources.push(source);\n\t\t\t\t}\n\t\t\t}\n\t\t);\n\t\t\n\t\t\n\t\t\n\t\t/* Fetching\n\t\t-----------------------------------------------------------------------------*/\n\t\n\t\n\t\t// start and end are assumed to be unzoned\n\t\tfunction isFetchNeeded(start, end) {\n\t\t\treturn !rangeStart || // nothing has been fetched yet?\n\t\t\t\tstart < rangeStart || end > rangeEnd; // is part of the new range outside of the old range?\n\t\t}\n\t\t\n\t\t\n\t\tfunction fetchEvents(start, end) {\n\t\t\trangeStart = start;\n\t\t\trangeEnd = end;\n\t\t\tfetchEventSources(sources, 'reset');\n\t\t}\n\t\n\t\n\t\t// expects an array of event source objects (the originals, not copies)\n\t\t// `specialFetchType` is an optimization parameter that affects purging of the event cache.\n\t\tfunction fetchEventSources(specificSources, specialFetchType) {\n\t\t\tvar i, source;\n\t\n\t\t\tif (specialFetchType === 'reset') {\n\t\t\t\tcache = [];\n\t\t\t}\n\t\t\telse if (specialFetchType !== 'add') {\n\t\t\t\tcache = excludeEventsBySources(cache, specificSources);\n\t\t\t}\n\t\n\t\t\tfor (i = 0; i < specificSources.length; i++) {\n\t\t\t\tsource = specificSources[i];\n\t\n\t\t\t\t// already-pending sources have already been accounted for in pendingSourceCnt\n\t\t\t\tif (source._status !== 'pending') {\n\t\t\t\t\tpendingSourceCnt++;\n\t\t\t\t}\n\t\n\t\t\t\tsource._fetchId = (source._fetchId || 0) + 1;\n\t\t\t\tsource._status = 'pending';\n\t\t\t}\n\t\n\t\t\tfor (i = 0; i < specificSources.length; i++) {\n\t\t\t\tsource = specificSources[i];\n\t\n\t\t\t\ttryFetchEventSource(source, source._fetchId);\n\t\t\t}\n\t\t}\n\t\n\t\n\t\t// fetches an event source and processes its result ONLY if it is still the current fetch.\n\t\t// caller is responsible for incrementing pendingSourceCnt first.\n\t\tfunction tryFetchEventSource(source, fetchId) {\n\t\t\t_fetchEventSource(source, function(eventInputs) {\n\t\t\t\tvar isArraySource = $.isArray(source.events);\n\t\t\t\tvar i, eventInput;\n\t\t\t\tvar abstractEvent;\n\t\n\t\t\t\tif (\n\t\t\t\t\t// is this the source's most recent fetch?\n\t\t\t\t\t// if not, rely on an upcoming fetch of this source to decrement pendingSourceCnt\n\t\t\t\t\tfetchId === source._fetchId &&\n\t\t\t\t\t// event source no longer valid?\n\t\t\t\t\tsource._status !== 'rejected'\n\t\t\t\t) {\n\t\t\t\t\tsource._status = 'resolved';\n\t\n\t\t\t\t\tif (eventInputs) {\n\t\t\t\t\t\tfor (i = 0; i < eventInputs.length; i++) {\n\t\t\t\t\t\t\teventInput = eventInputs[i];\n\t\n\t\t\t\t\t\t\tif (isArraySource) { // array sources have already been convert to Event Objects\n\t\t\t\t\t\t\t\tabstractEvent = eventInput;\n\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\telse {\n\t\t\t\t\t\t\t\tabstractEvent = buildEventFromInput(eventInput, source);\n\t\t\t\t\t\t\t}\n\t\n\t\t\t\t\t\t\tif (abstractEvent) { // not false (an invalid event)\n\t\t\t\t\t\t\t\tcache.push.apply(\n\t\t\t\t\t\t\t\t\tcache,\n\t\t\t\t\t\t\t\t\texpandEvent(abstractEvent) // add individual expanded events to the cache\n\t\t\t\t\t\t\t\t);\n\t\t\t\t\t\t\t}\n\t\t\t\t\t\t}\n\t\t\t\t\t}\n\t\n\t\t\t\t\tdecrementPendingSourceCnt();\n\t\t\t\t}\n\t\t\t});\n\t\t}\n\t\n\t\n\t\tfunction rejectEventSource(source) {\n\t\t\tvar wasPending = source._status === 'pending';\n\t\n\t\t\tsource._status = 'rejected';\n\t\n\t\t\tif (wasPending) {\n\t\t\t\tdecrementPendingSourceCnt();\n\t\t\t}\n\t\t}\n\t\n\t\n\t\tfunction decrementPendingSourceCnt() {\n\t\t\tpendingSourceCnt--;\n\t\t\tif (!pendingSourceCnt) {\n\t\t\t\treportEvents(cache);\n\t\t\t}\n\t\t}\n\t\t\n\t\t\n\t\tfunction _fetchEventSource(source, callback) {\n\t\t\tvar i;\n\t\t\tvar fetchers = FC.sourceFetchers;\n\t\t\tvar res;\n\t\n\t\t\tfor (i=0; i eventStart;\n\t\t}\n\t\n\t\n\t\tt.getEventCache = function() {\n\t\t\treturn cache;\n\t\t};\n\t\n\t}\n\t\n\t\n\t// hook for external libs to manipulate event properties upon creation.\n\t// should manipulate the event in-place.\n\tCalendar.prototype.normalizeEvent = function(event) {\n\t};\n\t\n\t\n\t// Does the given span (start, end, and other location information)\n\t// fully contain the other?\n\tCalendar.prototype.spanContainsSpan = function(outerSpan, innerSpan) {\n\t\tvar eventStart = outerSpan.start.clone().stripZone();\n\t\tvar eventEnd = this.getEventEnd(outerSpan).stripZone();\n\t\n\t\treturn innerSpan.start >= eventStart && innerSpan.end <= eventEnd;\n\t};\n\t\n\t\n\t// Returns a list of events that the given event should be compared against when being considered for a move to\n\t// the specified span. Attached to the Calendar's prototype because EventManager is a mixin for a Calendar.\n\tCalendar.prototype.getPeerEvents = function(span, event) {\n\t\tvar cache = this.getEventCache();\n\t\tvar peerEvents = [];\n\t\tvar i, otherEvent;\n\t\n\t\tfor (i = 0; i < cache.length; i++) {\n\t\t\totherEvent = cache[i];\n\t\t\tif (\n\t\t\t\t!event ||\n\t\t\t\tevent._id !== otherEvent._id // don't compare the event to itself or other related [repeating] events\n\t\t\t) {\n\t\t\t\tpeerEvents.push(otherEvent);\n\t\t\t}\n\t\t}\n\t\n\t\treturn peerEvents;\n\t};\n\t\n\t\n\t// updates the \"backup\" properties, which are preserved in order to compute diffs later on.\n\tfunction backupEventDates(event) {\n\t\tevent._allDay = event.allDay;\n\t\tevent._start = event.start.clone();\n\t\tevent._end = event.end ? event.end.clone() : null;\n\t}\n\t\n\t\n\t/* Business Hours\n\t-----------------------------------------------------------------------------------------*/\n\t\n\tvar BUSINESS_HOUR_EVENT_DEFAULTS = {\n\t\tid: '_fcBusinessHours', // will relate events from different calls to expandEvent\n\t\tstart: '09:00',\n\t\tend: '17:00',\n\t\tdow: [ 1, 2, 3, 4, 5 ], // monday - friday\n\t\trendering: 'inverse-background'\n\t\t// classNames are defined in businessHoursSegClasses\n\t};\n\t\n\t// Return events objects for business hours within the current view.\n\t// Abuse of our event system :(\n\tCalendar.prototype.getCurrentBusinessHourEvents = function(wholeDay) {\n\t\treturn this.computeBusinessHourEvents(wholeDay, this.options.businessHours);\n\t};\n\t\n\t// Given a raw input value from options, return events objects for business hours within the current view.\n\tCalendar.prototype.computeBusinessHourEvents = function(wholeDay, input) {\n\t\tif (input === true) {\n\t\t\treturn this.expandBusinessHourEvents(wholeDay, [ {} ]);\n\t\t}\n\t\telse if ($.isPlainObject(input)) {\n\t\t\treturn this.expandBusinessHourEvents(wholeDay, [ input ]);\n\t\t}\n\t\telse if ($.isArray(input)) {\n\t\t\treturn this.expandBusinessHourEvents(wholeDay, input, true);\n\t\t}\n\t\telse {\n\t\t\treturn [];\n\t\t}\n\t};\n\t\n\t// inputs expected to be an array of objects.\n\t// if ignoreNoDow is true, will ignore entries that don't specify a day-of-week (dow) key.\n\tCalendar.prototype.expandBusinessHourEvents = function(wholeDay, inputs, ignoreNoDow) {\n\t\tvar view = this.getView();\n\t\tvar events = [];\n\t\tvar i, input;\n\t\n\t\tfor (i = 0; i < inputs.length; i++) {\n\t\t\tinput = inputs[i];\n\t\n\t\t\tif (ignoreNoDow && !input.dow) {\n\t\t\t\tcontinue;\n\t\t\t}\n\t\n\t\t\t// give defaults. will make a copy\n\t\t\tinput = $.extend({}, BUSINESS_HOUR_EVENT_DEFAULTS, input);\n\t\n\t\t\t// if a whole-day series is requested, clear the start/end times\n\t\t\tif (wholeDay) {\n\t\t\t\tinput.start = null;\n\t\t\t\tinput.end = null;\n\t\t\t}\n\t\n\t\t\tevents.push.apply(events, // append\n\t\t\t\tthis.expandEvent(\n\t\t\t\t\tthis.buildEventFromInput(input),\n\t\t\t\t\tview.start,\n\t\t\t\t\tview.end\n\t\t\t\t)\n\t\t\t);\n\t\t}\n\t\n\t\treturn events;\n\t};\n\t\n\t;;\n\t\n\t/* An abstract class for the \"basic\" views, as well as month view. Renders one or more rows of day cells.\n\t----------------------------------------------------------------------------------------------------------------------*/\n\t// It is a manager for a DayGrid subcomponent, which does most of the heavy lifting.\n\t// It is responsible for managing width/height.\n\t\n\tvar BasicView = FC.BasicView = View.extend({\n\t\n\t\tscroller: null,\n\t\n\t\tdayGridClass: DayGrid, // class the dayGrid will be instantiated from (overridable by subclasses)\n\t\tdayGrid: null, // the main subcomponent that does most of the heavy lifting\n\t\n\t\tdayNumbersVisible: false, // display day numbers on each day cell?\n\t\tweekNumbersVisible: false, // display week numbers along the side?\n\t\n\t\tweekNumberWidth: null, // width of all the week-number cells running down the side\n\t\n\t\theadContainerEl: null, // div that hold's the dayGrid's rendered date header\n\t\theadRowEl: null, // the fake row element of the day-of-week header\n\t\n\t\n\t\tinitialize: function() {\n\t\t\tthis.dayGrid = this.instantiateDayGrid();\n\t\n\t\t\tthis.scroller = new Scroller({\n\t\t\t\toverflowX: 'hidden',\n\t\t\t\toverflowY: 'auto'\n\t\t\t});\n\t\t},\n\t\n\t\n\t\t// Generates the DayGrid object this view needs. Draws from this.dayGridClass\n\t\tinstantiateDayGrid: function() {\n\t\t\t// generate a subclass on the fly with BasicView-specific behavior\n\t\t\t// TODO: cache this subclass\n\t\t\tvar subclass = this.dayGridClass.extend(basicDayGridMethods);\n\t\n\t\t\treturn new subclass(this);\n\t\t},\n\t\n\t\n\t\t// Sets the display range and computes all necessary dates\n\t\tsetRange: function(range) {\n\t\t\tView.prototype.setRange.call(this, range); // call the super-method\n\t\n\t\t\tthis.dayGrid.breakOnWeeks = /year|month|week/.test(this.intervalUnit); // do before setRange\n\t\t\tthis.dayGrid.setRange(range);\n\t\t},\n\t\n\t\n\t\t// Compute the value to feed into setRange. Overrides superclass.\n\t\tcomputeRange: function(date) {\n\t\t\tvar range = View.prototype.computeRange.call(this, date); // get value from the super-method\n\t\n\t\t\t// year and month views should be aligned with weeks. this is already done for week\n\t\t\tif (/year|month/.test(range.intervalUnit)) {\n\t\t\t\trange.start.startOf('week');\n\t\t\t\trange.start = this.skipHiddenDays(range.start);\n\t\n\t\t\t\t// make end-of-week if not already\n\t\t\t\tif (range.end.weekday()) {\n\t\t\t\t\trange.end.add(1, 'week').startOf('week');\n\t\t\t\t\trange.end = this.skipHiddenDays(range.end, -1, true); // exclusively move backwards\n\t\t\t\t}\n\t\t\t}\n\t\n\t\t\treturn range;\n\t\t},\n\t\n\t\n\t\t// Renders the view into `this.el`, which should already be assigned\n\t\trenderDates: function() {\n\t\n\t\t\tthis.dayNumbersVisible = this.dayGrid.rowCnt > 1; // TODO: make grid responsible\n\t\t\tthis.weekNumbersVisible = this.opt('weekNumbers');\n\t\t\tthis.dayGrid.numbersVisible = this.dayNumbersVisible || this.weekNumbersVisible;\n\t\n\t\t\tthis.el.addClass('fc-basic-view').html(this.renderSkeletonHtml());\n\t\t\tthis.renderHead();\n\t\n\t\t\tthis.scroller.render();\n\t\t\tvar dayGridContainerEl = this.scroller.el.addClass('fc-day-grid-container');\n\t\t\tvar dayGridEl = $('
').appendTo(dayGridContainerEl);\n\t\t\tthis.el.find('.fc-body > tr > td').append(dayGridContainerEl);\n\t\n\t\t\tthis.dayGrid.setElement(dayGridEl);\n\t\t\tthis.dayGrid.renderDates(this.hasRigidRows());\n\t\t},\n\t\n\t\n\t\t// render the day-of-week headers\n\t\trenderHead: function() {\n\t\t\tthis.headContainerEl =\n\t\t\t\tthis.el.find('.fc-head-container')\n\t\t\t\t\t.html(this.dayGrid.renderHeadHtml());\n\t\t\tthis.headRowEl = this.headContainerEl.find('.fc-row');\n\t\t},\n\t\n\t\n\t\t// Unrenders the content of the view. Since we haven't separated skeleton rendering from date rendering,\n\t\t// always completely kill the dayGrid's rendering.\n\t\tunrenderDates: function() {\n\t\t\tthis.dayGrid.unrenderDates();\n\t\t\tthis.dayGrid.removeElement();\n\t\t\tthis.scroller.destroy();\n\t\t},\n\t\n\t\n\t\trenderBusinessHours: function() {\n\t\t\tthis.dayGrid.renderBusinessHours();\n\t\t},\n\t\n\t\n\t\tunrenderBusinessHours: function() {\n\t\t\tthis.dayGrid.unrenderBusinessHours();\n\t\t},\n\t\n\t\n\t\t// Builds the HTML skeleton for the view.\n\t\t// The day-grid component will render inside of a container defined by this HTML.\n\t\trenderSkeletonHtml: function() {\n\t\t\treturn '' +\n\t\t\t\t'' +\n\t\t\t\t\t'' +\n\t\t\t\t\t\t'' +\n\t\t\t\t\t\t\t'' +\n\t\t\t\t\t\t'' +\n\t\t\t\t\t'' +\n\t\t\t\t\t'' +\n\t\t\t\t\t\t'' +\n\t\t\t\t\t\t\t'' +\n\t\t\t\t\t\t'' +\n\t\t\t\t\t'' +\n\t\t\t\t'
';\n\t\t},\n\t\n\t\n\t\t// Generates an HTML attribute string for setting the width of the week number column, if it is known\n\t\tweekNumberStyleAttr: function() {\n\t\t\tif (this.weekNumberWidth !== null) {\n\t\t\t\treturn 'style=\"width:' + this.weekNumberWidth + 'px\"';\n\t\t\t}\n\t\t\treturn '';\n\t\t},\n\t\n\t\n\t\t// Determines whether each row should have a constant height\n\t\thasRigidRows: function() {\n\t\t\tvar eventLimit = this.opt('eventLimit');\n\t\t\treturn eventLimit && typeof eventLimit !== 'number';\n\t\t},\n\t\n\t\n\t\t/* Dimensions\n\t\t------------------------------------------------------------------------------------------------------------------*/\n\t\n\t\n\t\t// Refreshes the horizontal dimensions of the view\n\t\tupdateWidth: function() {\n\t\t\tif (this.weekNumbersVisible) {\n\t\t\t\t// Make sure all week number cells running down the side have the same width.\n\t\t\t\t// Record the width for cells created later.\n\t\t\t\tthis.weekNumberWidth = matchCellWidths(\n\t\t\t\t\tthis.el.find('.fc-week-number')\n\t\t\t\t);\n\t\t\t}\n\t\t},\n\t\n\t\n\t\t// Adjusts the vertical dimensions of the view to the specified values\n\t\tsetHeight: function(totalHeight, isAuto) {\n\t\t\tvar eventLimit = this.opt('eventLimit');\n\t\t\tvar scrollerHeight;\n\t\t\tvar scrollbarWidths;\n\t\n\t\t\t// reset all heights to be natural\n\t\t\tthis.scroller.clear();\n\t\t\tuncompensateScroll(this.headRowEl);\n\t\n\t\t\tthis.dayGrid.removeSegPopover(); // kill the \"more\" popover if displayed\n\t\n\t\t\t// is the event limit a constant level number?\n\t\t\tif (eventLimit && typeof eventLimit === 'number') {\n\t\t\t\tthis.dayGrid.limitRows(eventLimit); // limit the levels first so the height can redistribute after\n\t\t\t}\n\t\n\t\t\t// distribute the height to the rows\n\t\t\t// (totalHeight is a \"recommended\" value if isAuto)\n\t\t\tscrollerHeight = this.computeScrollerHeight(totalHeight);\n\t\t\tthis.setGridHeight(scrollerHeight, isAuto);\n\t\n\t\t\t// is the event limit dynamically calculated?\n\t\t\tif (eventLimit && typeof eventLimit !== 'number') {\n\t\t\t\tthis.dayGrid.limitRows(eventLimit); // limit the levels after the grid's row heights have been set\n\t\t\t}\n\t\n\t\t\tif (!isAuto) { // should we force dimensions of the scroll container?\n\t\n\t\t\t\tthis.scroller.setHeight(scrollerHeight);\n\t\t\t\tscrollbarWidths = this.scroller.getScrollbarWidths();\n\t\n\t\t\t\tif (scrollbarWidths.left || scrollbarWidths.right) { // using scrollbars?\n\t\n\t\t\t\t\tcompensateScroll(this.headRowEl, scrollbarWidths);\n\t\n\t\t\t\t\t// doing the scrollbar compensation might have created text overflow which created more height. redo\n\t\t\t\t\tscrollerHeight = this.computeScrollerHeight(totalHeight);\n\t\t\t\t\tthis.scroller.setHeight(scrollerHeight);\n\t\t\t\t}\n\t\n\t\t\t\t// guarantees the same scrollbar widths\n\t\t\t\tthis.scroller.lockOverflow(scrollbarWidths);\n\t\t\t}\n\t\t},\n\t\n\t\n\t\t// given a desired total height of the view, returns what the height of the scroller should be\n\t\tcomputeScrollerHeight: function(totalHeight) {\n\t\t\treturn totalHeight -\n\t\t\t\tsubtractInnerElHeight(this.el, this.scroller.el); // everything that's NOT the scroller\n\t\t},\n\t\n\t\n\t\t// Sets the height of just the DayGrid component in this view\n\t\tsetGridHeight: function(height, isAuto) {\n\t\t\tif (isAuto) {\n\t\t\t\tundistributeHeight(this.dayGrid.rowEls); // let the rows be their natural height with no expanding\n\t\t\t}\n\t\t\telse {\n\t\t\t\tdistributeHeight(this.dayGrid.rowEls, height, true); // true = compensate for height-hogging rows\n\t\t\t}\n\t\t},\n\t\n\t\n\t\t/* Scroll\n\t\t------------------------------------------------------------------------------------------------------------------*/\n\t\n\t\n\t\tqueryScroll: function() {\n\t\t\treturn this.scroller.getScrollTop();\n\t\t},\n\t\n\t\n\t\tsetScroll: function(top) {\n\t\t\tthis.scroller.setScrollTop(top);\n\t\t},\n\t\n\t\n\t\t/* Hit Areas\n\t\t------------------------------------------------------------------------------------------------------------------*/\n\t\t// forward all hit-related method calls to dayGrid\n\t\n\t\n\t\tprepareHits: function() {\n\t\t\tthis.dayGrid.prepareHits();\n\t\t},\n\t\n\t\n\t\treleaseHits: function() {\n\t\t\tthis.dayGrid.releaseHits();\n\t\t},\n\t\n\t\n\t\tqueryHit: function(left, top) {\n\t\t\treturn this.dayGrid.queryHit(left, top);\n\t\t},\n\t\n\t\n\t\tgetHitSpan: function(hit) {\n\t\t\treturn this.dayGrid.getHitSpan(hit);\n\t\t},\n\t\n\t\n\t\tgetHitEl: function(hit) {\n\t\t\treturn this.dayGrid.getHitEl(hit);\n\t\t},\n\t\n\t\n\t\t/* Events\n\t\t------------------------------------------------------------------------------------------------------------------*/\n\t\n\t\n\t\t// Renders the given events onto the view and populates the segments array\n\t\trenderEvents: function(events) {\n\t\t\tthis.dayGrid.renderEvents(events);\n\t\n\t\t\tthis.updateHeight(); // must compensate for events that overflow the row\n\t\t},\n\t\n\t\n\t\t// Retrieves all segment objects that are rendered in the view\n\t\tgetEventSegs: function() {\n\t\t\treturn this.dayGrid.getEventSegs();\n\t\t},\n\t\n\t\n\t\t// Unrenders all event elements and clears internal segment data\n\t\tunrenderEvents: function() {\n\t\t\tthis.dayGrid.unrenderEvents();\n\t\n\t\t\t// we DON'T need to call updateHeight() because:\n\t\t\t// A) a renderEvents() call always happens after this, which will eventually call updateHeight()\n\t\t\t// B) in IE8, this causes a flash whenever events are rerendered\n\t\t},\n\t\n\t\n\t\t/* Dragging (for both events and external elements)\n\t\t------------------------------------------------------------------------------------------------------------------*/\n\t\n\t\n\t\t// A returned value of `true` signals that a mock \"helper\" event has been rendered.\n\t\trenderDrag: function(dropLocation, seg) {\n\t\t\treturn this.dayGrid.renderDrag(dropLocation, seg);\n\t\t},\n\t\n\t\n\t\tunrenderDrag: function() {\n\t\t\tthis.dayGrid.unrenderDrag();\n\t\t},\n\t\n\t\n\t\t/* Selection\n\t\t------------------------------------------------------------------------------------------------------------------*/\n\t\n\t\n\t\t// Renders a visual indication of a selection\n\t\trenderSelection: function(span) {\n\t\t\tthis.dayGrid.renderSelection(span);\n\t\t},\n\t\n\t\n\t\t// Unrenders a visual indications of a selection\n\t\tunrenderSelection: function() {\n\t\t\tthis.dayGrid.unrenderSelection();\n\t\t}\n\t\n\t});\n\t\n\t\n\t// Methods that will customize the rendering behavior of the BasicView's dayGrid\n\tvar basicDayGridMethods = {\n\t\n\t\n\t\t// Generates the HTML that will go before the day-of week header cells\n\t\trenderHeadIntroHtml: function() {\n\t\t\tvar view = this.view;\n\t\n\t\t\tif (view.weekNumbersVisible) {\n\t\t\t\treturn '' +\n\t\t\t\t\t'' +\n\t\t\t\t\t\t'' + // needed for matchCellWidths\n\t\t\t\t\t\t\thtmlEscape(view.opt('weekNumberTitle')) +\n\t\t\t\t\t\t'' +\n\t\t\t\t\t'';\n\t\t\t}\n\t\n\t\t\treturn '';\n\t\t},\n\t\n\t\n\t\t// Generates the HTML that will go before content-skeleton cells that display the day/week numbers\n\t\trenderNumberIntroHtml: function(row) {\n\t\t\tvar view = this.view;\n\t\n\t\t\tif (view.weekNumbersVisible) {\n\t\t\t\treturn '' +\n\t\t\t\t\t'' +\n\t\t\t\t\t\t'' + // needed for matchCellWidths\n\t\t\t\t\t\t\tthis.getCellDate(row, 0).format('w') +\n\t\t\t\t\t\t'' +\n\t\t\t\t\t'';\n\t\t\t}\n\t\n\t\t\treturn '';\n\t\t},\n\t\n\t\n\t\t// Generates the HTML that goes before the day bg cells for each day-row\n\t\trenderBgIntroHtml: function() {\n\t\t\tvar view = this.view;\n\t\n\t\t\tif (view.weekNumbersVisible) {\n\t\t\t\treturn '';\n\t\t\t}\n\t\n\t\t\treturn '';\n\t\t},\n\t\n\t\n\t\t// Generates the HTML that goes before every other type of row generated by DayGrid.\n\t\t// Affects helper-skeleton and highlight-skeleton rows.\n\t\trenderIntroHtml: function() {\n\t\t\tvar view = this.view;\n\t\n\t\t\tif (view.weekNumbersVisible) {\n\t\t\t\treturn '';\n\t\t\t}\n\t\n\t\t\treturn '';\n\t\t}\n\t\n\t};\n\t\n\t;;\n\t\n\t/* A month view with day cells running in rows (one-per-week) and columns\n\t----------------------------------------------------------------------------------------------------------------------*/\n\t\n\tvar MonthView = FC.MonthView = BasicView.extend({\n\t\n\t\t// Produces information about what range to display\n\t\tcomputeRange: function(date) {\n\t\t\tvar range = BasicView.prototype.computeRange.call(this, date); // get value from super-method\n\t\t\tvar rowCnt;\n\t\n\t\t\t// ensure 6 weeks\n\t\t\tif (this.isFixedWeeks()) {\n\t\t\t\trowCnt = Math.ceil(range.end.diff(range.start, 'weeks', true)); // could be partial weeks due to hiddenDays\n\t\t\t\trange.end.add(6 - rowCnt, 'weeks');\n\t\t\t}\n\t\n\t\t\treturn range;\n\t\t},\n\t\n\t\n\t\t// Overrides the default BasicView behavior to have special multi-week auto-height logic\n\t\tsetGridHeight: function(height, isAuto) {\n\t\n\t\t\tisAuto = isAuto || this.opt('weekMode') === 'variable'; // LEGACY: weekMode is deprecated\n\t\n\t\t\t// if auto, make the height of each row the height that it would be if there were 6 weeks\n\t\t\tif (isAuto) {\n\t\t\t\theight *= this.rowCnt / 6;\n\t\t\t}\n\t\n\t\t\tdistributeHeight(this.dayGrid.rowEls, height, !isAuto); // if auto, don't compensate for height-hogging rows\n\t\t},\n\t\n\t\n\t\tisFixedWeeks: function() {\n\t\t\tvar weekMode = this.opt('weekMode'); // LEGACY: weekMode is deprecated\n\t\t\tif (weekMode) {\n\t\t\t\treturn weekMode === 'fixed'; // if any other type of weekMode, assume NOT fixed\n\t\t\t}\n\t\n\t\t\treturn this.opt('fixedWeekCount');\n\t\t}\n\t\n\t});\n\t\n\t;;\n\t\n\tfcViews.basic = {\n\t\t'class': BasicView\n\t};\n\t\n\tfcViews.basicDay = {\n\t\ttype: 'basic',\n\t\tduration: { days: 1 }\n\t};\n\t\n\tfcViews.basicWeek = {\n\t\ttype: 'basic',\n\t\tduration: { weeks: 1 }\n\t};\n\t\n\tfcViews.month = {\n\t\t'class': MonthView,\n\t\tduration: { months: 1 }, // important for prev/next\n\t\tdefaults: {\n\t\t\tfixedWeekCount: true\n\t\t}\n\t};\n\t;;\n\t\n\t/* An abstract class for all agenda-related views. Displays one more columns with time slots running vertically.\n\t----------------------------------------------------------------------------------------------------------------------*/\n\t// Is a manager for the TimeGrid subcomponent and possibly the DayGrid subcomponent (if allDaySlot is on).\n\t// Responsible for managing width/height.\n\t\n\tvar AgendaView = FC.AgendaView = View.extend({\n\t\n\t\tscroller: null,\n\t\n\t\ttimeGridClass: TimeGrid, // class used to instantiate the timeGrid. subclasses can override\n\t\ttimeGrid: null, // the main time-grid subcomponent of this view\n\t\n\t\tdayGridClass: DayGrid, // class used to instantiate the dayGrid. subclasses can override\n\t\tdayGrid: null, // the \"all-day\" subcomponent. if all-day is turned off, this will be null\n\t\n\t\taxisWidth: null, // the width of the time axis running down the side\n\t\n\t\theadContainerEl: null, // div that hold's the timeGrid's rendered date header\n\t\tnoScrollRowEls: null, // set of fake row elements that must compensate when scroller has scrollbars\n\t\n\t\t// when the time-grid isn't tall enough to occupy the given height, we render an
underneath\n\t\tbottomRuleEl: null,\n\t\n\t\n\t\tinitialize: function() {\n\t\t\tthis.timeGrid = this.instantiateTimeGrid();\n\t\n\t\t\tif (this.opt('allDaySlot')) { // should we display the \"all-day\" area?\n\t\t\t\tthis.dayGrid = this.instantiateDayGrid(); // the all-day subcomponent of this view\n\t\t\t}\n\t\n\t\t\tthis.scroller = new Scroller({\n\t\t\t\toverflowX: 'hidden',\n\t\t\t\toverflowY: 'auto'\n\t\t\t});\n\t\t},\n\t\n\t\n\t\t// Instantiates the TimeGrid object this view needs. Draws from this.timeGridClass\n\t\tinstantiateTimeGrid: function() {\n\t\t\tvar subclass = this.timeGridClass.extend(agendaTimeGridMethods);\n\t\n\t\t\treturn new subclass(this);\n\t\t},\n\t\n\t\n\t\t// Instantiates the DayGrid object this view might need. Draws from this.dayGridClass\n\t\tinstantiateDayGrid: function() {\n\t\t\tvar subclass = this.dayGridClass.extend(agendaDayGridMethods);\n\t\n\t\t\treturn new subclass(this);\n\t\t},\n\t\n\t\n\t\t/* Rendering\n\t\t------------------------------------------------------------------------------------------------------------------*/\n\t\n\t\n\t\t// Sets the display range and computes all necessary dates\n\t\tsetRange: function(range) {\n\t\t\tView.prototype.setRange.call(this, range); // call the super-method\n\t\n\t\t\tthis.timeGrid.setRange(range);\n\t\t\tif (this.dayGrid) {\n\t\t\t\tthis.dayGrid.setRange(range);\n\t\t\t}\n\t\t},\n\t\n\t\n\t\t// Renders the view into `this.el`, which has already been assigned\n\t\trenderDates: function() {\n\t\n\t\t\tthis.el.addClass('fc-agenda-view').html(this.renderSkeletonHtml());\n\t\t\tthis.renderHead();\n\t\n\t\t\tthis.scroller.render();\n\t\t\tvar timeGridWrapEl = this.scroller.el.addClass('fc-time-grid-container');\n\t\t\tvar timeGridEl = $('
').appendTo(timeGridWrapEl);\n\t\t\tthis.el.find('.fc-body > tr > td').append(timeGridWrapEl);\n\t\n\t\t\tthis.timeGrid.setElement(timeGridEl);\n\t\t\tthis.timeGrid.renderDates();\n\t\n\t\t\t// the
that sometimes displays under the time-grid\n\t\t\tthis.bottomRuleEl = $('
')\n\t\t\t\t.appendTo(this.timeGrid.el); // inject it into the time-grid\n\t\n\t\t\tif (this.dayGrid) {\n\t\t\t\tthis.dayGrid.setElement(this.el.find('.fc-day-grid'));\n\t\t\t\tthis.dayGrid.renderDates();\n\t\n\t\t\t\t// have the day-grid extend it's coordinate area over the
dividing the two grids\n\t\t\t\tthis.dayGrid.bottomCoordPadding = this.dayGrid.el.next('hr').outerHeight();\n\t\t\t}\n\t\n\t\t\tthis.noScrollRowEls = this.el.find('.fc-row:not(.fc-scroller *)'); // fake rows not within the scroller\n\t\t},\n\t\n\t\n\t\t// render the day-of-week headers\n\t\trenderHead: function() {\n\t\t\tthis.headContainerEl =\n\t\t\t\tthis.el.find('.fc-head-container')\n\t\t\t\t\t.html(this.timeGrid.renderHeadHtml());\n\t\t},\n\t\n\t\n\t\t// Unrenders the content of the view. Since we haven't separated skeleton rendering from date rendering,\n\t\t// always completely kill each grid's rendering.\n\t\tunrenderDates: function() {\n\t\t\tthis.timeGrid.unrenderDates();\n\t\t\tthis.timeGrid.removeElement();\n\t\n\t\t\tif (this.dayGrid) {\n\t\t\t\tthis.dayGrid.unrenderDates();\n\t\t\t\tthis.dayGrid.removeElement();\n\t\t\t}\n\t\n\t\t\tthis.scroller.destroy();\n\t\t},\n\t\n\t\n\t\t// Builds the HTML skeleton for the view.\n\t\t// The day-grid and time-grid components will render inside containers defined by this HTML.\n\t\trenderSkeletonHtml: function() {\n\t\t\treturn '' +\n\t\t\t\t'' +\n\t\t\t\t\t'' +\n\t\t\t\t\t\t'' +\n\t\t\t\t\t\t\t'' +\n\t\t\t\t\t\t'' +\n\t\t\t\t\t'' +\n\t\t\t\t\t'' +\n\t\t\t\t\t\t'' +\n\t\t\t\t\t\t\t'' +\n\t\t\t\t\t\t'' +\n\t\t\t\t\t'' +\n\t\t\t\t'
' +\n\t\t\t\t\t\t\t\t(this.dayGrid ?\n\t\t\t\t\t\t\t\t\t'
' +\n\t\t\t\t\t\t\t\t\t'
' :\n\t\t\t\t\t\t\t\t\t''\n\t\t\t\t\t\t\t\t\t) +\n\t\t\t\t\t\t\t'
';\n\t\t},\n\t\n\t\n\t\t// Generates an HTML attribute string for setting the width of the axis, if it is known\n\t\taxisStyleAttr: function() {\n\t\t\tif (this.axisWidth !== null) {\n\t\t\t\t return 'style=\"width:' + this.axisWidth + 'px\"';\n\t\t\t}\n\t\t\treturn '';\n\t\t},\n\t\n\t\n\t\t/* Business Hours\n\t\t------------------------------------------------------------------------------------------------------------------*/\n\t\n\t\n\t\trenderBusinessHours: function() {\n\t\t\tthis.timeGrid.renderBusinessHours();\n\t\n\t\t\tif (this.dayGrid) {\n\t\t\t\tthis.dayGrid.renderBusinessHours();\n\t\t\t}\n\t\t},\n\t\n\t\n\t\tunrenderBusinessHours: function() {\n\t\t\tthis.timeGrid.unrenderBusinessHours();\n\t\n\t\t\tif (this.dayGrid) {\n\t\t\t\tthis.dayGrid.unrenderBusinessHours();\n\t\t\t}\n\t\t},\n\t\n\t\n\t\t/* Now Indicator\n\t\t------------------------------------------------------------------------------------------------------------------*/\n\t\n\t\n\t\tgetNowIndicatorUnit: function() {\n\t\t\treturn this.timeGrid.getNowIndicatorUnit();\n\t\t},\n\t\n\t\n\t\trenderNowIndicator: function(date) {\n\t\t\tthis.timeGrid.renderNowIndicator(date);\n\t\t},\n\t\n\t\n\t\tunrenderNowIndicator: function() {\n\t\t\tthis.timeGrid.unrenderNowIndicator();\n\t\t},\n\t\n\t\n\t\t/* Dimensions\n\t\t------------------------------------------------------------------------------------------------------------------*/\n\t\n\t\n\t\tupdateSize: function(isResize) {\n\t\t\tthis.timeGrid.updateSize(isResize);\n\t\n\t\t\tView.prototype.updateSize.call(this, isResize); // call the super-method\n\t\t},\n\t\n\t\n\t\t// Refreshes the horizontal dimensions of the view\n\t\tupdateWidth: function() {\n\t\t\t// make all axis cells line up, and record the width so newly created axis cells will have it\n\t\t\tthis.axisWidth = matchCellWidths(this.el.find('.fc-axis'));\n\t\t},\n\t\n\t\n\t\t// Adjusts the vertical dimensions of the view to the specified values\n\t\tsetHeight: function(totalHeight, isAuto) {\n\t\t\tvar eventLimit;\n\t\t\tvar scrollerHeight;\n\t\t\tvar scrollbarWidths;\n\t\n\t\t\t// reset all dimensions back to the original state\n\t\t\tthis.bottomRuleEl.hide(); // .show() will be called later if this
is necessary\n\t\t\tthis.scroller.clear(); // sets height to 'auto' and clears overflow\n\t\t\tuncompensateScroll(this.noScrollRowEls);\n\t\n\t\t\t// limit number of events in the all-day area\n\t\t\tif (this.dayGrid) {\n\t\t\t\tthis.dayGrid.removeSegPopover(); // kill the \"more\" popover if displayed\n\t\n\t\t\t\teventLimit = this.opt('eventLimit');\n\t\t\t\tif (eventLimit && typeof eventLimit !== 'number') {\n\t\t\t\t\teventLimit = AGENDA_ALL_DAY_EVENT_LIMIT; // make sure \"auto\" goes to a real number\n\t\t\t\t}\n\t\t\t\tif (eventLimit) {\n\t\t\t\t\tthis.dayGrid.limitRows(eventLimit);\n\t\t\t\t}\n\t\t\t}\n\t\n\t\t\tif (!isAuto) { // should we force dimensions of the scroll container?\n\t\n\t\t\t\tscrollerHeight = this.computeScrollerHeight(totalHeight);\n\t\t\t\tthis.scroller.setHeight(scrollerHeight);\n\t\t\t\tscrollbarWidths = this.scroller.getScrollbarWidths();\n\t\n\t\t\t\tif (scrollbarWidths.left || scrollbarWidths.right) { // using scrollbars?\n\t\n\t\t\t\t\t// make the all-day and header rows lines up\n\t\t\t\t\tcompensateScroll(this.noScrollRowEls, scrollbarWidths);\n\t\n\t\t\t\t\t// the scrollbar compensation might have changed text flow, which might affect height, so recalculate\n\t\t\t\t\t// and reapply the desired height to the scroller.\n\t\t\t\t\tscrollerHeight = this.computeScrollerHeight(totalHeight);\n\t\t\t\t\tthis.scroller.setHeight(scrollerHeight);\n\t\t\t\t}\n\t\n\t\t\t\t// guarantees the same scrollbar widths\n\t\t\t\tthis.scroller.lockOverflow(scrollbarWidths);\n\t\n\t\t\t\t// if there's any space below the slats, show the horizontal rule.\n\t\t\t\t// this won't cause any new overflow, because lockOverflow already called.\n\t\t\t\tif (this.timeGrid.getTotalSlatHeight() < scrollerHeight) {\n\t\t\t\t\tthis.bottomRuleEl.show();\n\t\t\t\t}\n\t\t\t}\n\t\t},\n\t\n\t\n\t\t// given a desired total height of the view, returns what the height of the scroller should be\n\t\tcomputeScrollerHeight: function(totalHeight) {\n\t\t\treturn totalHeight -\n\t\t\t\tsubtractInnerElHeight(this.el, this.scroller.el); // everything that's NOT the scroller\n\t\t},\n\t\n\t\n\t\t/* Scroll\n\t\t------------------------------------------------------------------------------------------------------------------*/\n\t\n\t\n\t\t// Computes the initial pre-configured scroll state prior to allowing the user to change it\n\t\tcomputeInitialScroll: function() {\n\t\t\tvar scrollTime = moment.duration(this.opt('scrollTime'));\n\t\t\tvar top = this.timeGrid.computeTimeTop(scrollTime);\n\t\n\t\t\t// zoom can give weird floating-point values. rather scroll a little bit further\n\t\t\ttop = Math.ceil(top);\n\t\n\t\t\tif (top) {\n\t\t\t\ttop++; // to overcome top border that slots beyond the first have. looks better\n\t\t\t}\n\t\n\t\t\treturn top;\n\t\t},\n\t\n\t\n\t\tqueryScroll: function() {\n\t\t\treturn this.scroller.getScrollTop();\n\t\t},\n\t\n\t\n\t\tsetScroll: function(top) {\n\t\t\tthis.scroller.setScrollTop(top);\n\t\t},\n\t\n\t\n\t\t/* Hit Areas\n\t\t------------------------------------------------------------------------------------------------------------------*/\n\t\t// forward all hit-related method calls to the grids (dayGrid might not be defined)\n\t\n\t\n\t\tprepareHits: function() {\n\t\t\tthis.timeGrid.prepareHits();\n\t\t\tif (this.dayGrid) {\n\t\t\t\tthis.dayGrid.prepareHits();\n\t\t\t}\n\t\t},\n\t\n\t\n\t\treleaseHits: function() {\n\t\t\tthis.timeGrid.releaseHits();\n\t\t\tif (this.dayGrid) {\n\t\t\t\tthis.dayGrid.releaseHits();\n\t\t\t}\n\t\t},\n\t\n\t\n\t\tqueryHit: function(left, top) {\n\t\t\tvar hit = this.timeGrid.queryHit(left, top);\n\t\n\t\t\tif (!hit && this.dayGrid) {\n\t\t\t\thit = this.dayGrid.queryHit(left, top);\n\t\t\t}\n\t\n\t\t\treturn hit;\n\t\t},\n\t\n\t\n\t\tgetHitSpan: function(hit) {\n\t\t\t// TODO: hit.component is set as a hack to identify where the hit came from\n\t\t\treturn hit.component.getHitSpan(hit);\n\t\t},\n\t\n\t\n\t\tgetHitEl: function(hit) {\n\t\t\t// TODO: hit.component is set as a hack to identify where the hit came from\n\t\t\treturn hit.component.getHitEl(hit);\n\t\t},\n\t\n\t\n\t\t/* Events\n\t\t------------------------------------------------------------------------------------------------------------------*/\n\t\n\t\n\t\t// Renders events onto the view and populates the View's segment array\n\t\trenderEvents: function(events) {\n\t\t\tvar dayEvents = [];\n\t\t\tvar timedEvents = [];\n\t\t\tvar daySegs = [];\n\t\t\tvar timedSegs;\n\t\t\tvar i;\n\t\n\t\t\t// separate the events into all-day and timed\n\t\t\tfor (i = 0; i < events.length; i++) {\n\t\t\t\tif (events[i].allDay) {\n\t\t\t\t\tdayEvents.push(events[i]);\n\t\t\t\t}\n\t\t\t\telse {\n\t\t\t\t\ttimedEvents.push(events[i]);\n\t\t\t\t}\n\t\t\t}\n\t\n\t\t\t// render the events in the subcomponents\n\t\t\ttimedSegs = this.timeGrid.renderEvents(timedEvents);\n\t\t\tif (this.dayGrid) {\n\t\t\t\tdaySegs = this.dayGrid.renderEvents(dayEvents);\n\t\t\t}\n\t\n\t\t\t// the all-day area is flexible and might have a lot of events, so shift the height\n\t\t\tthis.updateHeight();\n\t\t},\n\t\n\t\n\t\t// Retrieves all segment objects that are rendered in the view\n\t\tgetEventSegs: function() {\n\t\t\treturn this.timeGrid.getEventSegs().concat(\n\t\t\t\tthis.dayGrid ? this.dayGrid.getEventSegs() : []\n\t\t\t);\n\t\t},\n\t\n\t\n\t\t// Unrenders all event elements and clears internal segment data\n\t\tunrenderEvents: function() {\n\t\n\t\t\t// unrender the events in the subcomponents\n\t\t\tthis.timeGrid.unrenderEvents();\n\t\t\tif (this.dayGrid) {\n\t\t\t\tthis.dayGrid.unrenderEvents();\n\t\t\t}\n\t\n\t\t\t// we DON'T need to call updateHeight() because:\n\t\t\t// A) a renderEvents() call always happens after this, which will eventually call updateHeight()\n\t\t\t// B) in IE8, this causes a flash whenever events are rerendered\n\t\t},\n\t\n\t\n\t\t/* Dragging (for events and external elements)\n\t\t------------------------------------------------------------------------------------------------------------------*/\n\t\n\t\n\t\t// A returned value of `true` signals that a mock \"helper\" event has been rendered.\n\t\trenderDrag: function(dropLocation, seg) {\n\t\t\tif (dropLocation.start.hasTime()) {\n\t\t\t\treturn this.timeGrid.renderDrag(dropLocation, seg);\n\t\t\t}\n\t\t\telse if (this.dayGrid) {\n\t\t\t\treturn this.dayGrid.renderDrag(dropLocation, seg);\n\t\t\t}\n\t\t},\n\t\n\t\n\t\tunrenderDrag: function() {\n\t\t\tthis.timeGrid.unrenderDrag();\n\t\t\tif (this.dayGrid) {\n\t\t\t\tthis.dayGrid.unrenderDrag();\n\t\t\t}\n\t\t},\n\t\n\t\n\t\t/* Selection\n\t\t------------------------------------------------------------------------------------------------------------------*/\n\t\n\t\n\t\t// Renders a visual indication of a selection\n\t\trenderSelection: function(span) {\n\t\t\tif (span.start.hasTime() || span.end.hasTime()) {\n\t\t\t\tthis.timeGrid.renderSelection(span);\n\t\t\t}\n\t\t\telse if (this.dayGrid) {\n\t\t\t\tthis.dayGrid.renderSelection(span);\n\t\t\t}\n\t\t},\n\t\n\t\n\t\t// Unrenders a visual indications of a selection\n\t\tunrenderSelection: function() {\n\t\t\tthis.timeGrid.unrenderSelection();\n\t\t\tif (this.dayGrid) {\n\t\t\t\tthis.dayGrid.unrenderSelection();\n\t\t\t}\n\t\t}\n\t\n\t});\n\t\n\t\n\t// Methods that will customize the rendering behavior of the AgendaView's timeGrid\n\t// TODO: move into TimeGrid\n\tvar agendaTimeGridMethods = {\n\t\n\t\n\t\t// Generates the HTML that will go before the day-of week header cells\n\t\trenderHeadIntroHtml: function() {\n\t\t\tvar view = this.view;\n\t\t\tvar weekText;\n\t\n\t\t\tif (view.opt('weekNumbers')) {\n\t\t\t\tweekText = this.start.format(view.opt('smallWeekFormat'));\n\t\n\t\t\t\treturn '' +\n\t\t\t\t\t'' +\n\t\t\t\t\t\t'' + // needed for matchCellWidths\n\t\t\t\t\t\t\thtmlEscape(weekText) +\n\t\t\t\t\t\t'' +\n\t\t\t\t\t'';\n\t\t\t}\n\t\t\telse {\n\t\t\t\treturn '';\n\t\t\t}\n\t\t},\n\t\n\t\n\t\t// Generates the HTML that goes before the bg of the TimeGrid slot area. Long vertical column.\n\t\trenderBgIntroHtml: function() {\n\t\t\tvar view = this.view;\n\t\n\t\t\treturn '';\n\t\t},\n\t\n\t\n\t\t// Generates the HTML that goes before all other types of cells.\n\t\t// Affects content-skeleton, helper-skeleton, highlight-skeleton for both the time-grid and day-grid.\n\t\trenderIntroHtml: function() {\n\t\t\tvar view = this.view;\n\t\n\t\t\treturn '';\n\t\t}\n\t\n\t};\n\t\n\t\n\t// Methods that will customize the rendering behavior of the AgendaView's dayGrid\n\tvar agendaDayGridMethods = {\n\t\n\t\n\t\t// Generates the HTML that goes before the all-day cells\n\t\trenderBgIntroHtml: function() {\n\t\t\tvar view = this.view;\n\t\n\t\t\treturn '' +\n\t\t\t\t'' +\n\t\t\t\t\t'' + // needed for matchCellWidths\n\t\t\t\t\t\t(view.opt('allDayHtml') || htmlEscape(view.opt('allDayText'))) +\n\t\t\t\t\t'' +\n\t\t\t\t'';\n\t\t},\n\t\n\t\n\t\t// Generates the HTML that goes before all other types of cells.\n\t\t// Affects content-skeleton, helper-skeleton, highlight-skeleton for both the time-grid and day-grid.\n\t\trenderIntroHtml: function() {\n\t\t\tvar view = this.view;\n\t\n\t\t\treturn '';\n\t\t}\n\t\n\t};\n\t\n\t;;\n\t\n\tvar AGENDA_ALL_DAY_EVENT_LIMIT = 5;\n\t\n\t// potential nice values for the slot-duration and interval-duration\n\t// from largest to smallest\n\tvar AGENDA_STOCK_SUB_DURATIONS = [\n\t\t{ hours: 1 },\n\t\t{ minutes: 30 },\n\t\t{ minutes: 15 },\n\t\t{ seconds: 30 },\n\t\t{ seconds: 15 }\n\t];\n\t\n\tfcViews.agenda = {\n\t\t'class': AgendaView,\n\t\tdefaults: {\n\t\t\tallDaySlot: true,\n\t\t\tallDayText: 'all-day',\n\t\t\tslotDuration: '00:30:00',\n\t\t\tminTime: '00:00:00',\n\t\t\tmaxTime: '24:00:00',\n\t\t\tslotEventOverlap: true // a bad name. confused with overlap/constraint system\n\t\t}\n\t};\n\t\n\tfcViews.agendaDay = {\n\t\ttype: 'agenda',\n\t\tduration: { days: 1 }\n\t};\n\t\n\tfcViews.agendaWeek = {\n\t\ttype: 'agenda',\n\t\tduration: { weeks: 1 }\n\t};\n\t;;\n\t\r\n\treturn FC; // export for Node/CommonJS\r\n\t});\n\n/***/ })\n\n});\n\n\n// WEBPACK FOOTER //\n// javascripts/user-page-js/default.page.js","//! moment.js\n//! version : 2.29.1\n//! authors : Tim Wood, Iskren Chernev, Moment.js contributors\n//! license : MIT\n//! momentjs.com\n\n;(function (global, factory) {\n typeof exports === 'object' && typeof module !== 'undefined' ? module.exports = factory() :\n typeof define === 'function' && define.amd ? define(factory) :\n global.moment = factory()\n}(this, (function () { 'use strict';\n\n var hookCallback;\n\n function hooks() {\n return hookCallback.apply(null, arguments);\n }\n\n // This is done to register the method called with moment()\n // without creating circular dependencies.\n function setHookCallback(callback) {\n hookCallback = callback;\n }\n\n function isArray(input) {\n return (\n input instanceof Array ||\n Object.prototype.toString.call(input) === '[object Array]'\n );\n }\n\n function isObject(input) {\n // IE8 will treat undefined and null as object if it wasn't for\n // input != null\n return (\n input != null &&\n Object.prototype.toString.call(input) === '[object Object]'\n );\n }\n\n function hasOwnProp(a, b) {\n return Object.prototype.hasOwnProperty.call(a, b);\n }\n\n function isObjectEmpty(obj) {\n if (Object.getOwnPropertyNames) {\n return Object.getOwnPropertyNames(obj).length === 0;\n } else {\n var k;\n for (k in obj) {\n if (hasOwnProp(obj, k)) {\n return false;\n }\n }\n return true;\n }\n }\n\n function isUndefined(input) {\n return input === void 0;\n }\n\n function isNumber(input) {\n return (\n typeof input === 'number' ||\n Object.prototype.toString.call(input) === '[object Number]'\n );\n }\n\n function isDate(input) {\n return (\n input instanceof Date ||\n Object.prototype.toString.call(input) === '[object Date]'\n );\n }\n\n function map(arr, fn) {\n var res = [],\n i;\n for (i = 0; i < arr.length; ++i) {\n res.push(fn(arr[i], i));\n }\n return res;\n }\n\n function extend(a, b) {\n for (var i in b) {\n if (hasOwnProp(b, i)) {\n a[i] = b[i];\n }\n }\n\n if (hasOwnProp(b, 'toString')) {\n a.toString = b.toString;\n }\n\n if (hasOwnProp(b, 'valueOf')) {\n a.valueOf = b.valueOf;\n }\n\n return a;\n }\n\n function createUTC(input, format, locale, strict) {\n return createLocalOrUTC(input, format, locale, strict, true).utc();\n }\n\n function defaultParsingFlags() {\n // We need to deep clone this object.\n return {\n empty: false,\n unusedTokens: [],\n unusedInput: [],\n overflow: -2,\n charsLeftOver: 0,\n nullInput: false,\n invalidEra: null,\n invalidMonth: null,\n invalidFormat: false,\n userInvalidated: false,\n iso: false,\n parsedDateParts: [],\n era: null,\n meridiem: null,\n rfc2822: false,\n weekdayMismatch: false,\n };\n }\n\n function getParsingFlags(m) {\n if (m._pf == null) {\n m._pf = defaultParsingFlags();\n }\n return m._pf;\n }\n\n var some;\n if (Array.prototype.some) {\n some = Array.prototype.some;\n } else {\n some = function (fun) {\n var t = Object(this),\n len = t.length >>> 0,\n i;\n\n for (i = 0; i < len; i++) {\n if (i in t && fun.call(this, t[i], i, t)) {\n return true;\n }\n }\n\n return false;\n };\n }\n\n function isValid(m) {\n if (m._isValid == null) {\n var flags = getParsingFlags(m),\n parsedParts = some.call(flags.parsedDateParts, function (i) {\n return i != null;\n }),\n isNowValid =\n !isNaN(m._d.getTime()) &&\n flags.overflow < 0 &&\n !flags.empty &&\n !flags.invalidEra &&\n !flags.invalidMonth &&\n !flags.invalidWeekday &&\n !flags.weekdayMismatch &&\n !flags.nullInput &&\n !flags.invalidFormat &&\n !flags.userInvalidated &&\n (!flags.meridiem || (flags.meridiem && parsedParts));\n\n if (m._strict) {\n isNowValid =\n isNowValid &&\n flags.charsLeftOver === 0 &&\n flags.unusedTokens.length === 0 &&\n flags.bigHour === undefined;\n }\n\n if (Object.isFrozen == null || !Object.isFrozen(m)) {\n m._isValid = isNowValid;\n } else {\n return isNowValid;\n }\n }\n return m._isValid;\n }\n\n function createInvalid(flags) {\n var m = createUTC(NaN);\n if (flags != null) {\n extend(getParsingFlags(m), flags);\n } else {\n getParsingFlags(m).userInvalidated = true;\n }\n\n return m;\n }\n\n // Plugins that add properties should also add the key here (null value),\n // so we can properly clone ourselves.\n var momentProperties = (hooks.momentProperties = []),\n updateInProgress = false;\n\n function copyConfig(to, from) {\n var i, prop, val;\n\n if (!isUndefined(from._isAMomentObject)) {\n to._isAMomentObject = from._isAMomentObject;\n }\n if (!isUndefined(from._i)) {\n to._i = from._i;\n }\n if (!isUndefined(from._f)) {\n to._f = from._f;\n }\n if (!isUndefined(from._l)) {\n to._l = from._l;\n }\n if (!isUndefined(from._strict)) {\n to._strict = from._strict;\n }\n if (!isUndefined(from._tzm)) {\n to._tzm = from._tzm;\n }\n if (!isUndefined(from._isUTC)) {\n to._isUTC = from._isUTC;\n }\n if (!isUndefined(from._offset)) {\n to._offset = from._offset;\n }\n if (!isUndefined(from._pf)) {\n to._pf = getParsingFlags(from);\n }\n if (!isUndefined(from._locale)) {\n to._locale = from._locale;\n }\n\n if (momentProperties.length > 0) {\n for (i = 0; i < momentProperties.length; i++) {\n prop = momentProperties[i];\n val = from[prop];\n if (!isUndefined(val)) {\n to[prop] = val;\n }\n }\n }\n\n return to;\n }\n\n // Moment prototype object\n function Moment(config) {\n copyConfig(this, config);\n this._d = new Date(config._d != null ? config._d.getTime() : NaN);\n if (!this.isValid()) {\n this._d = new Date(NaN);\n }\n // Prevent infinite loop in case updateOffset creates new moment\n // objects.\n if (updateInProgress === false) {\n updateInProgress = true;\n hooks.updateOffset(this);\n updateInProgress = false;\n }\n }\n\n function isMoment(obj) {\n return (\n obj instanceof Moment || (obj != null && obj._isAMomentObject != null)\n );\n }\n\n function warn(msg) {\n if (\n hooks.suppressDeprecationWarnings === false &&\n typeof console !== 'undefined' &&\n console.warn\n ) {\n console.warn('Deprecation warning: ' + msg);\n }\n }\n\n function deprecate(msg, fn) {\n var firstTime = true;\n\n return extend(function () {\n if (hooks.deprecationHandler != null) {\n hooks.deprecationHandler(null, msg);\n }\n if (firstTime) {\n var args = [],\n arg,\n i,\n key;\n for (i = 0; i < arguments.length; i++) {\n arg = '';\n if (typeof arguments[i] === 'object') {\n arg += '\\n[' + i + '] ';\n for (key in arguments[0]) {\n if (hasOwnProp(arguments[0], key)) {\n arg += key + ': ' + arguments[0][key] + ', ';\n }\n }\n arg = arg.slice(0, -2); // Remove trailing comma and space\n } else {\n arg = arguments[i];\n }\n args.push(arg);\n }\n warn(\n msg +\n '\\nArguments: ' +\n Array.prototype.slice.call(args).join('') +\n '\\n' +\n new Error().stack\n );\n firstTime = false;\n }\n return fn.apply(this, arguments);\n }, fn);\n }\n\n var deprecations = {};\n\n function deprecateSimple(name, msg) {\n if (hooks.deprecationHandler != null) {\n hooks.deprecationHandler(name, msg);\n }\n if (!deprecations[name]) {\n warn(msg);\n deprecations[name] = true;\n }\n }\n\n hooks.suppressDeprecationWarnings = false;\n hooks.deprecationHandler = null;\n\n function isFunction(input) {\n return (\n (typeof Function !== 'undefined' && input instanceof Function) ||\n Object.prototype.toString.call(input) === '[object Function]'\n );\n }\n\n function set(config) {\n var prop, i;\n for (i in config) {\n if (hasOwnProp(config, i)) {\n prop = config[i];\n if (isFunction(prop)) {\n this[i] = prop;\n } else {\n this['_' + i] = prop;\n }\n }\n }\n this._config = config;\n // Lenient ordinal parsing accepts just a number in addition to\n // number + (possibly) stuff coming from _dayOfMonthOrdinalParse.\n // TODO: Remove \"ordinalParse\" fallback in next major release.\n this._dayOfMonthOrdinalParseLenient = new RegExp(\n (this._dayOfMonthOrdinalParse.source || this._ordinalParse.source) +\n '|' +\n /\\d{1,2}/.source\n );\n }\n\n function mergeConfigs(parentConfig, childConfig) {\n var res = extend({}, parentConfig),\n prop;\n for (prop in childConfig) {\n if (hasOwnProp(childConfig, prop)) {\n if (isObject(parentConfig[prop]) && isObject(childConfig[prop])) {\n res[prop] = {};\n extend(res[prop], parentConfig[prop]);\n extend(res[prop], childConfig[prop]);\n } else if (childConfig[prop] != null) {\n res[prop] = childConfig[prop];\n } else {\n delete res[prop];\n }\n }\n }\n for (prop in parentConfig) {\n if (\n hasOwnProp(parentConfig, prop) &&\n !hasOwnProp(childConfig, prop) &&\n isObject(parentConfig[prop])\n ) {\n // make sure changes to properties don't modify parent config\n res[prop] = extend({}, res[prop]);\n }\n }\n return res;\n }\n\n function Locale(config) {\n if (config != null) {\n this.set(config);\n }\n }\n\n var keys;\n\n if (Object.keys) {\n keys = Object.keys;\n } else {\n keys = function (obj) {\n var i,\n res = [];\n for (i in obj) {\n if (hasOwnProp(obj, i)) {\n res.push(i);\n }\n }\n return res;\n };\n }\n\n var defaultCalendar = {\n sameDay: '[Today at] LT',\n nextDay: '[Tomorrow at] LT',\n nextWeek: 'dddd [at] LT',\n lastDay: '[Yesterday at] LT',\n lastWeek: '[Last] dddd [at] LT',\n sameElse: 'L',\n };\n\n function calendar(key, mom, now) {\n var output = this._calendar[key] || this._calendar['sameElse'];\n return isFunction(output) ? output.call(mom, now) : output;\n }\n\n function zeroFill(number, targetLength, forceSign) {\n var absNumber = '' + Math.abs(number),\n zerosToFill = targetLength - absNumber.length,\n sign = number >= 0;\n return (\n (sign ? (forceSign ? '+' : '') : '-') +\n Math.pow(10, Math.max(0, zerosToFill)).toString().substr(1) +\n absNumber\n );\n }\n\n var formattingTokens = /(\\[[^\\[]*\\])|(\\\\)?([Hh]mm(ss)?|Mo|MM?M?M?|Do|DDDo|DD?D?D?|ddd?d?|do?|w[o|w]?|W[o|W]?|Qo?|N{1,5}|YYYYYY|YYYYY|YYYY|YY|y{2,4}|yo?|gg(ggg?)?|GG(GGG?)?|e|E|a|A|hh?|HH?|kk?|mm?|ss?|S{1,9}|x|X|zz?|ZZ?|.)/g,\n localFormattingTokens = /(\\[[^\\[]*\\])|(\\\\)?(LTS|LT|LL?L?L?|l{1,4})/g,\n formatFunctions = {},\n formatTokenFunctions = {};\n\n // token: 'M'\n // padded: ['MM', 2]\n // ordinal: 'Mo'\n // callback: function () { this.month() + 1 }\n function addFormatToken(token, padded, ordinal, callback) {\n var func = callback;\n if (typeof callback === 'string') {\n func = function () {\n return this[callback]();\n };\n }\n if (token) {\n formatTokenFunctions[token] = func;\n }\n if (padded) {\n formatTokenFunctions[padded[0]] = function () {\n return zeroFill(func.apply(this, arguments), padded[1], padded[2]);\n };\n }\n if (ordinal) {\n formatTokenFunctions[ordinal] = function () {\n return this.localeData().ordinal(\n func.apply(this, arguments),\n token\n );\n };\n }\n }\n\n function removeFormattingTokens(input) {\n if (input.match(/\\[[\\s\\S]/)) {\n return input.replace(/^\\[|\\]$/g, '');\n }\n return input.replace(/\\\\/g, '');\n }\n\n function makeFormatFunction(format) {\n var array = format.match(formattingTokens),\n i,\n length;\n\n for (i = 0, length = array.length; i < length; i++) {\n if (formatTokenFunctions[array[i]]) {\n array[i] = formatTokenFunctions[array[i]];\n } else {\n array[i] = removeFormattingTokens(array[i]);\n }\n }\n\n return function (mom) {\n var output = '',\n i;\n for (i = 0; i < length; i++) {\n output += isFunction(array[i])\n ? array[i].call(mom, format)\n : array[i];\n }\n return output;\n };\n }\n\n // format date using native date object\n function formatMoment(m, format) {\n if (!m.isValid()) {\n return m.localeData().invalidDate();\n }\n\n format = expandFormat(format, m.localeData());\n formatFunctions[format] =\n formatFunctions[format] || makeFormatFunction(format);\n\n return formatFunctions[format](m);\n }\n\n function expandFormat(format, locale) {\n var i = 5;\n\n function replaceLongDateFormatTokens(input) {\n return locale.longDateFormat(input) || input;\n }\n\n localFormattingTokens.lastIndex = 0;\n while (i >= 0 && localFormattingTokens.test(format)) {\n format = format.replace(\n localFormattingTokens,\n replaceLongDateFormatTokens\n );\n localFormattingTokens.lastIndex = 0;\n i -= 1;\n }\n\n return format;\n }\n\n var defaultLongDateFormat = {\n LTS: 'h:mm:ss A',\n LT: 'h:mm A',\n L: 'MM/DD/YYYY',\n LL: 'MMMM D, YYYY',\n LLL: 'MMMM D, YYYY h:mm A',\n LLLL: 'dddd, MMMM D, YYYY h:mm A',\n };\n\n function longDateFormat(key) {\n var format = this._longDateFormat[key],\n formatUpper = this._longDateFormat[key.toUpperCase()];\n\n if (format || !formatUpper) {\n return format;\n }\n\n this._longDateFormat[key] = formatUpper\n .match(formattingTokens)\n .map(function (tok) {\n if (\n tok === 'MMMM' ||\n tok === 'MM' ||\n tok === 'DD' ||\n tok === 'dddd'\n ) {\n return tok.slice(1);\n }\n return tok;\n })\n .join('');\n\n return this._longDateFormat[key];\n }\n\n var defaultInvalidDate = 'Invalid date';\n\n function invalidDate() {\n return this._invalidDate;\n }\n\n var defaultOrdinal = '%d',\n defaultDayOfMonthOrdinalParse = /\\d{1,2}/;\n\n function ordinal(number) {\n return this._ordinal.replace('%d', number);\n }\n\n var defaultRelativeTime = {\n future: 'in %s',\n past: '%s ago',\n s: 'a few seconds',\n ss: '%d seconds',\n m: 'a minute',\n mm: '%d minutes',\n h: 'an hour',\n hh: '%d hours',\n d: 'a day',\n dd: '%d days',\n w: 'a week',\n ww: '%d weeks',\n M: 'a month',\n MM: '%d months',\n y: 'a year',\n yy: '%d years',\n };\n\n function relativeTime(number, withoutSuffix, string, isFuture) {\n var output = this._relativeTime[string];\n return isFunction(output)\n ? output(number, withoutSuffix, string, isFuture)\n : output.replace(/%d/i, number);\n }\n\n function pastFuture(diff, output) {\n var format = this._relativeTime[diff > 0 ? 'future' : 'past'];\n return isFunction(format) ? format(output) : format.replace(/%s/i, output);\n }\n\n var aliases = {};\n\n function addUnitAlias(unit, shorthand) {\n var lowerCase = unit.toLowerCase();\n aliases[lowerCase] = aliases[lowerCase + 's'] = aliases[shorthand] = unit;\n }\n\n function normalizeUnits(units) {\n return typeof units === 'string'\n ? aliases[units] || aliases[units.toLowerCase()]\n : undefined;\n }\n\n function normalizeObjectUnits(inputObject) {\n var normalizedInput = {},\n normalizedProp,\n prop;\n\n for (prop in inputObject) {\n if (hasOwnProp(inputObject, prop)) {\n normalizedProp = normalizeUnits(prop);\n if (normalizedProp) {\n normalizedInput[normalizedProp] = inputObject[prop];\n }\n }\n }\n\n return normalizedInput;\n }\n\n var priorities = {};\n\n function addUnitPriority(unit, priority) {\n priorities[unit] = priority;\n }\n\n function getPrioritizedUnits(unitsObj) {\n var units = [],\n u;\n for (u in unitsObj) {\n if (hasOwnProp(unitsObj, u)) {\n units.push({ unit: u, priority: priorities[u] });\n }\n }\n units.sort(function (a, b) {\n return a.priority - b.priority;\n });\n return units;\n }\n\n function isLeapYear(year) {\n return (year % 4 === 0 && year % 100 !== 0) || year % 400 === 0;\n }\n\n function absFloor(number) {\n if (number < 0) {\n // -0 -> 0\n return Math.ceil(number) || 0;\n } else {\n return Math.floor(number);\n }\n }\n\n function toInt(argumentForCoercion) {\n var coercedNumber = +argumentForCoercion,\n value = 0;\n\n if (coercedNumber !== 0 && isFinite(coercedNumber)) {\n value = absFloor(coercedNumber);\n }\n\n return value;\n }\n\n function makeGetSet(unit, keepTime) {\n return function (value) {\n if (value != null) {\n set$1(this, unit, value);\n hooks.updateOffset(this, keepTime);\n return this;\n } else {\n return get(this, unit);\n }\n };\n }\n\n function get(mom, unit) {\n return mom.isValid()\n ? mom._d['get' + (mom._isUTC ? 'UTC' : '') + unit]()\n : NaN;\n }\n\n function set$1(mom, unit, value) {\n if (mom.isValid() && !isNaN(value)) {\n if (\n unit === 'FullYear' &&\n isLeapYear(mom.year()) &&\n mom.month() === 1 &&\n mom.date() === 29\n ) {\n value = toInt(value);\n mom._d['set' + (mom._isUTC ? 'UTC' : '') + unit](\n value,\n mom.month(),\n daysInMonth(value, mom.month())\n );\n } else {\n mom._d['set' + (mom._isUTC ? 'UTC' : '') + unit](value);\n }\n }\n }\n\n // MOMENTS\n\n function stringGet(units) {\n units = normalizeUnits(units);\n if (isFunction(this[units])) {\n return this[units]();\n }\n return this;\n }\n\n function stringSet(units, value) {\n if (typeof units === 'object') {\n units = normalizeObjectUnits(units);\n var prioritized = getPrioritizedUnits(units),\n i;\n for (i = 0; i < prioritized.length; i++) {\n this[prioritized[i].unit](units[prioritized[i].unit]);\n }\n } else {\n units = normalizeUnits(units);\n if (isFunction(this[units])) {\n return this[units](value);\n }\n }\n return this;\n }\n\n var match1 = /\\d/, // 0 - 9\n match2 = /\\d\\d/, // 00 - 99\n match3 = /\\d{3}/, // 000 - 999\n match4 = /\\d{4}/, // 0000 - 9999\n match6 = /[+-]?\\d{6}/, // -999999 - 999999\n match1to2 = /\\d\\d?/, // 0 - 99\n match3to4 = /\\d\\d\\d\\d?/, // 999 - 9999\n match5to6 = /\\d\\d\\d\\d\\d\\d?/, // 99999 - 999999\n match1to3 = /\\d{1,3}/, // 0 - 999\n match1to4 = /\\d{1,4}/, // 0 - 9999\n match1to6 = /[+-]?\\d{1,6}/, // -999999 - 999999\n matchUnsigned = /\\d+/, // 0 - inf\n matchSigned = /[+-]?\\d+/, // -inf - inf\n matchOffset = /Z|[+-]\\d\\d:?\\d\\d/gi, // +00:00 -00:00 +0000 -0000 or Z\n matchShortOffset = /Z|[+-]\\d\\d(?::?\\d\\d)?/gi, // +00 -00 +00:00 -00:00 +0000 -0000 or Z\n matchTimestamp = /[+-]?\\d+(\\.\\d{1,3})?/, // 123456789 123456789.123\n // any word (or two) characters or numbers including two/three word month in arabic.\n // includes scottish gaelic two word and hyphenated months\n matchWord = /[0-9]{0,256}['a-z\\u00A0-\\u05FF\\u0700-\\uD7FF\\uF900-\\uFDCF\\uFDF0-\\uFF07\\uFF10-\\uFFEF]{1,256}|[\\u0600-\\u06FF\\/]{1,256}(\\s*?[\\u0600-\\u06FF]{1,256}){1,2}/i,\n regexes;\n\n regexes = {};\n\n function addRegexToken(token, regex, strictRegex) {\n regexes[token] = isFunction(regex)\n ? regex\n : function (isStrict, localeData) {\n return isStrict && strictRegex ? strictRegex : regex;\n };\n }\n\n function getParseRegexForToken(token, config) {\n if (!hasOwnProp(regexes, token)) {\n return new RegExp(unescapeFormat(token));\n }\n\n return regexes[token](config._strict, config._locale);\n }\n\n // Code from http://stackoverflow.com/questions/3561493/is-there-a-regexp-escape-function-in-javascript\n function unescapeFormat(s) {\n return regexEscape(\n s\n .replace('\\\\', '')\n .replace(/\\\\(\\[)|\\\\(\\])|\\[([^\\]\\[]*)\\]|\\\\(.)/g, function (\n matched,\n p1,\n p2,\n p3,\n p4\n ) {\n return p1 || p2 || p3 || p4;\n })\n );\n }\n\n function regexEscape(s) {\n return s.replace(/[-\\/\\\\^$*+?.()|[\\]{}]/g, '\\\\$&');\n }\n\n var tokens = {};\n\n function addParseToken(token, callback) {\n var i,\n func = callback;\n 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 for (i = 0; i < token.length; i++) {\n tokens[token[i]] = func;\n }\n }\n\n function addWeekParseToken(token, callback) {\n addParseToken(token, function (input, array, config, token) {\n config._w = config._w || {};\n callback(input, config._w, config, token);\n });\n }\n\n function addTimeToArrayFromToken(token, input, config) {\n if (input != null && hasOwnProp(tokens, token)) {\n tokens[token](input, config._a, config, token);\n }\n }\n\n var YEAR = 0,\n MONTH = 1,\n DATE = 2,\n HOUR = 3,\n MINUTE = 4,\n SECOND = 5,\n MILLISECOND = 6,\n WEEK = 7,\n WEEKDAY = 8;\n\n function mod(n, x) {\n return ((n % x) + x) % x;\n }\n\n var indexOf;\n\n if (Array.prototype.indexOf) {\n indexOf = Array.prototype.indexOf;\n } else {\n indexOf = function (o) {\n // I know\n var i;\n for (i = 0; i < this.length; ++i) {\n if (this[i] === o) {\n return i;\n }\n }\n return -1;\n };\n }\n\n function daysInMonth(year, month) {\n if (isNaN(year) || isNaN(month)) {\n return NaN;\n }\n var modMonth = mod(month, 12);\n year += (month - modMonth) / 12;\n return modMonth === 1\n ? isLeapYear(year)\n ? 29\n : 28\n : 31 - ((modMonth % 7) % 2);\n }\n\n // FORMATTING\n\n addFormatToken('M', ['MM', 2], 'Mo', function () {\n return this.month() + 1;\n });\n\n addFormatToken('MMM', 0, 0, function (format) {\n return this.localeData().monthsShort(this, format);\n });\n\n addFormatToken('MMMM', 0, 0, function (format) {\n return this.localeData().months(this, format);\n });\n\n // ALIASES\n\n addUnitAlias('month', 'M');\n\n // PRIORITY\n\n addUnitPriority('month', 8);\n\n // PARSING\n\n addRegexToken('M', match1to2);\n addRegexToken('MM', match1to2, match2);\n addRegexToken('MMM', function (isStrict, locale) {\n return locale.monthsShortRegex(isStrict);\n });\n addRegexToken('MMMM', function (isStrict, locale) {\n return locale.monthsRegex(isStrict);\n });\n\n addParseToken(['M', 'MM'], function (input, array) {\n array[MONTH] = toInt(input) - 1;\n });\n\n addParseToken(['MMM', 'MMMM'], function (input, array, config, token) {\n var month = config._locale.monthsParse(input, token, config._strict);\n // if we didn't find a month name, mark the date as invalid.\n if (month != null) {\n array[MONTH] = month;\n } else {\n getParsingFlags(config).invalidMonth = input;\n }\n });\n\n // LOCALES\n\n var defaultLocaleMonths = 'January_February_March_April_May_June_July_August_September_October_November_December'.split(\n '_'\n ),\n defaultLocaleMonthsShort = 'Jan_Feb_Mar_Apr_May_Jun_Jul_Aug_Sep_Oct_Nov_Dec'.split(\n '_'\n ),\n MONTHS_IN_FORMAT = /D[oD]?(\\[[^\\[\\]]*\\]|\\s)+MMMM?/,\n defaultMonthsShortRegex = matchWord,\n defaultMonthsRegex = matchWord;\n\n function localeMonths(m, format) {\n if (!m) {\n return isArray(this._months)\n ? this._months\n : this._months['standalone'];\n }\n return isArray(this._months)\n ? this._months[m.month()]\n : this._months[\n (this._months.isFormat || MONTHS_IN_FORMAT).test(format)\n ? 'format'\n : 'standalone'\n ][m.month()];\n }\n\n function localeMonthsShort(m, format) {\n if (!m) {\n return isArray(this._monthsShort)\n ? this._monthsShort\n : this._monthsShort['standalone'];\n }\n return isArray(this._monthsShort)\n ? this._monthsShort[m.month()]\n : this._monthsShort[\n MONTHS_IN_FORMAT.test(format) ? 'format' : 'standalone'\n ][m.month()];\n }\n\n function handleStrictParse(monthName, format, strict) {\n var i,\n ii,\n mom,\n llc = monthName.toLocaleLowerCase();\n if (!this._monthsParse) {\n // this is not used\n this._monthsParse = [];\n this._longMonthsParse = [];\n this._shortMonthsParse = [];\n for (i = 0; i < 12; ++i) {\n mom = createUTC([2000, i]);\n this._shortMonthsParse[i] = this.monthsShort(\n mom,\n ''\n ).toLocaleLowerCase();\n this._longMonthsParse[i] = this.months(mom, '').toLocaleLowerCase();\n }\n }\n\n if (strict) {\n if (format === 'MMM') {\n ii = indexOf.call(this._shortMonthsParse, llc);\n return ii !== -1 ? ii : null;\n } else {\n ii = indexOf.call(this._longMonthsParse, llc);\n return ii !== -1 ? ii : null;\n }\n } else {\n if (format === 'MMM') {\n ii = indexOf.call(this._shortMonthsParse, llc);\n if (ii !== -1) {\n return ii;\n }\n ii = indexOf.call(this._longMonthsParse, llc);\n return ii !== -1 ? ii : null;\n } else {\n ii = indexOf.call(this._longMonthsParse, llc);\n if (ii !== -1) {\n return ii;\n }\n ii = indexOf.call(this._shortMonthsParse, llc);\n return ii !== -1 ? ii : null;\n }\n }\n }\n\n function localeMonthsParse(monthName, format, strict) {\n var i, mom, regex;\n\n if (this._monthsParseExact) {\n return handleStrictParse.call(this, monthName, format, strict);\n }\n\n if (!this._monthsParse) {\n this._monthsParse = [];\n this._longMonthsParse = [];\n this._shortMonthsParse = [];\n }\n\n // TODO: add sorting\n // Sorting makes sure if one month (or abbr) is a prefix of another\n // see sorting in computeMonthsParse\n for (i = 0; i < 12; i++) {\n // make the regex if we don't have it already\n mom = createUTC([2000, i]);\n if (strict && !this._longMonthsParse[i]) {\n this._longMonthsParse[i] = new RegExp(\n '^' + this.months(mom, '').replace('.', '') + '$',\n 'i'\n );\n this._shortMonthsParse[i] = new RegExp(\n '^' + this.monthsShort(mom, '').replace('.', '') + '$',\n 'i'\n );\n }\n if (!strict && !this._monthsParse[i]) {\n regex =\n '^' + this.months(mom, '') + '|^' + this.monthsShort(mom, '');\n this._monthsParse[i] = new RegExp(regex.replace('.', ''), 'i');\n }\n // test the regex\n if (\n strict &&\n format === 'MMMM' &&\n this._longMonthsParse[i].test(monthName)\n ) {\n return i;\n } else if (\n strict &&\n format === 'MMM' &&\n this._shortMonthsParse[i].test(monthName)\n ) {\n return i;\n } else if (!strict && this._monthsParse[i].test(monthName)) {\n return i;\n }\n }\n }\n\n // MOMENTS\n\n function setMonth(mom, value) {\n var dayOfMonth;\n\n if (!mom.isValid()) {\n // No op\n return mom;\n }\n\n if (typeof value === 'string') {\n if (/^\\d+$/.test(value)) {\n value = toInt(value);\n } else {\n value = mom.localeData().monthsParse(value);\n // TODO: Another silent failure?\n if (!isNumber(value)) {\n return mom;\n }\n }\n }\n\n dayOfMonth = Math.min(mom.date(), daysInMonth(mom.year(), value));\n mom._d['set' + (mom._isUTC ? 'UTC' : '') + 'Month'](value, dayOfMonth);\n return mom;\n }\n\n function getSetMonth(value) {\n if (value != null) {\n setMonth(this, value);\n hooks.updateOffset(this, true);\n return this;\n } else {\n return get(this, 'Month');\n }\n }\n\n function getDaysInMonth() {\n return daysInMonth(this.year(), this.month());\n }\n\n function monthsShortRegex(isStrict) {\n if (this._monthsParseExact) {\n if (!hasOwnProp(this, '_monthsRegex')) {\n computeMonthsParse.call(this);\n }\n if (isStrict) {\n return this._monthsShortStrictRegex;\n } else {\n return this._monthsShortRegex;\n }\n } else {\n if (!hasOwnProp(this, '_monthsShortRegex')) {\n this._monthsShortRegex = defaultMonthsShortRegex;\n }\n return this._monthsShortStrictRegex && isStrict\n ? this._monthsShortStrictRegex\n : this._monthsShortRegex;\n }\n }\n\n function monthsRegex(isStrict) {\n if (this._monthsParseExact) {\n if (!hasOwnProp(this, '_monthsRegex')) {\n computeMonthsParse.call(this);\n }\n if (isStrict) {\n return this._monthsStrictRegex;\n } else {\n return this._monthsRegex;\n }\n } else {\n if (!hasOwnProp(this, '_monthsRegex')) {\n this._monthsRegex = defaultMonthsRegex;\n }\n return this._monthsStrictRegex && isStrict\n ? this._monthsStrictRegex\n : this._monthsRegex;\n }\n }\n\n function computeMonthsParse() {\n function cmpLenRev(a, b) {\n return b.length - a.length;\n }\n\n var shortPieces = [],\n longPieces = [],\n mixedPieces = [],\n i,\n mom;\n for (i = 0; i < 12; i++) {\n // make the regex if we don't have it already\n mom = createUTC([2000, i]);\n shortPieces.push(this.monthsShort(mom, ''));\n longPieces.push(this.months(mom, ''));\n mixedPieces.push(this.months(mom, ''));\n mixedPieces.push(this.monthsShort(mom, ''));\n }\n // Sorting makes sure if one month (or abbr) is a prefix of another it\n // will match the longer piece.\n shortPieces.sort(cmpLenRev);\n longPieces.sort(cmpLenRev);\n mixedPieces.sort(cmpLenRev);\n for (i = 0; i < 12; i++) {\n shortPieces[i] = regexEscape(shortPieces[i]);\n longPieces[i] = regexEscape(longPieces[i]);\n }\n for (i = 0; i < 24; i++) {\n mixedPieces[i] = regexEscape(mixedPieces[i]);\n }\n\n this._monthsRegex = new RegExp('^(' + mixedPieces.join('|') + ')', 'i');\n this._monthsShortRegex = this._monthsRegex;\n this._monthsStrictRegex = new RegExp(\n '^(' + longPieces.join('|') + ')',\n 'i'\n );\n this._monthsShortStrictRegex = new RegExp(\n '^(' + shortPieces.join('|') + ')',\n 'i'\n );\n }\n\n // FORMATTING\n\n addFormatToken('Y', 0, 0, function () {\n var y = this.year();\n return y <= 9999 ? zeroFill(y, 4) : '+' + y;\n });\n\n addFormatToken(0, ['YY', 2], 0, function () {\n return this.year() % 100;\n });\n\n addFormatToken(0, ['YYYY', 4], 0, 'year');\n addFormatToken(0, ['YYYYY', 5], 0, 'year');\n addFormatToken(0, ['YYYYYY', 6, true], 0, 'year');\n\n // ALIASES\n\n addUnitAlias('year', 'y');\n\n // PRIORITIES\n\n addUnitPriority('year', 1);\n\n // PARSING\n\n addRegexToken('Y', matchSigned);\n addRegexToken('YY', match1to2, match2);\n addRegexToken('YYYY', match1to4, match4);\n addRegexToken('YYYYY', match1to6, match6);\n addRegexToken('YYYYYY', match1to6, match6);\n\n addParseToken(['YYYYY', 'YYYYYY'], YEAR);\n addParseToken('YYYY', function (input, array) {\n array[YEAR] =\n input.length === 2 ? hooks.parseTwoDigitYear(input) : toInt(input);\n });\n addParseToken('YY', function (input, array) {\n array[YEAR] = hooks.parseTwoDigitYear(input);\n });\n addParseToken('Y', function (input, array) {\n array[YEAR] = parseInt(input, 10);\n });\n\n // HELPERS\n\n function daysInYear(year) {\n return isLeapYear(year) ? 366 : 365;\n }\n\n // HOOKS\n\n hooks.parseTwoDigitYear = function (input) {\n return toInt(input) + (toInt(input) > 68 ? 1900 : 2000);\n };\n\n // MOMENTS\n\n var getSetYear = makeGetSet('FullYear', true);\n\n function getIsLeapYear() {\n return isLeapYear(this.year());\n }\n\n function createDate(y, m, d, h, M, s, ms) {\n // can't just apply() to create a date:\n // https://stackoverflow.com/q/181348\n var date;\n // the date constructor remaps years 0-99 to 1900-1999\n if (y < 100 && y >= 0) {\n // preserve leap years using a full 400 year cycle, then reset\n date = new Date(y + 400, m, d, h, M, s, ms);\n if (isFinite(date.getFullYear())) {\n date.setFullYear(y);\n }\n } else {\n date = new Date(y, m, d, h, M, s, ms);\n }\n\n return date;\n }\n\n function createUTCDate(y) {\n var date, args;\n // the Date.UTC function remaps years 0-99 to 1900-1999\n if (y < 100 && y >= 0) {\n args = Array.prototype.slice.call(arguments);\n // preserve leap years using a full 400 year cycle, then reset\n args[0] = y + 400;\n date = new Date(Date.UTC.apply(null, args));\n if (isFinite(date.getUTCFullYear())) {\n date.setUTCFullYear(y);\n }\n } else {\n date = new Date(Date.UTC.apply(null, arguments));\n }\n\n return date;\n }\n\n // start-of-first-week - start-of-year\n function firstWeekOffset(year, dow, doy) {\n var // first-week day -- which january is always in the first week (4 for iso, 1 for other)\n fwd = 7 + dow - doy,\n // first-week day local weekday -- which local weekday is fwd\n fwdlw = (7 + createUTCDate(year, 0, fwd).getUTCDay() - dow) % 7;\n\n return -fwdlw + fwd - 1;\n }\n\n // https://en.wikipedia.org/wiki/ISO_week_date#Calculating_a_date_given_the_year.2C_week_number_and_weekday\n function dayOfYearFromWeeks(year, week, weekday, dow, doy) {\n var localWeekday = (7 + weekday - dow) % 7,\n weekOffset = firstWeekOffset(year, dow, doy),\n dayOfYear = 1 + 7 * (week - 1) + localWeekday + weekOffset,\n resYear,\n resDayOfYear;\n\n if (dayOfYear <= 0) {\n resYear = year - 1;\n resDayOfYear = daysInYear(resYear) + dayOfYear;\n } else if (dayOfYear > daysInYear(year)) {\n resYear = year + 1;\n resDayOfYear = dayOfYear - daysInYear(year);\n } else {\n resYear = year;\n resDayOfYear = dayOfYear;\n }\n\n return {\n year: resYear,\n dayOfYear: resDayOfYear,\n };\n }\n\n function weekOfYear(mom, dow, doy) {\n var weekOffset = firstWeekOffset(mom.year(), dow, doy),\n week = Math.floor((mom.dayOfYear() - weekOffset - 1) / 7) + 1,\n resWeek,\n resYear;\n\n if (week < 1) {\n resYear = mom.year() - 1;\n resWeek = week + weeksInYear(resYear, dow, doy);\n } else if (week > weeksInYear(mom.year(), dow, doy)) {\n resWeek = week - weeksInYear(mom.year(), dow, doy);\n resYear = mom.year() + 1;\n } else {\n resYear = mom.year();\n resWeek = week;\n }\n\n return {\n week: resWeek,\n year: resYear,\n };\n }\n\n function weeksInYear(year, dow, doy) {\n var weekOffset = firstWeekOffset(year, dow, doy),\n weekOffsetNext = firstWeekOffset(year + 1, dow, doy);\n return (daysInYear(year) - weekOffset + weekOffsetNext) / 7;\n }\n\n // FORMATTING\n\n addFormatToken('w', ['ww', 2], 'wo', 'week');\n addFormatToken('W', ['WW', 2], 'Wo', 'isoWeek');\n\n // ALIASES\n\n addUnitAlias('week', 'w');\n addUnitAlias('isoWeek', 'W');\n\n // PRIORITIES\n\n addUnitPriority('week', 5);\n addUnitPriority('isoWeek', 5);\n\n // PARSING\n\n addRegexToken('w', match1to2);\n addRegexToken('ww', match1to2, match2);\n addRegexToken('W', match1to2);\n addRegexToken('WW', match1to2, match2);\n\n addWeekParseToken(['w', 'ww', 'W', 'WW'], function (\n input,\n week,\n config,\n token\n ) {\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\n var defaultLocaleWeek = {\n dow: 0, // Sunday is the first day of the week.\n doy: 6, // The week that contains Jan 6th is the first week of the year.\n };\n\n function localeFirstDayOfWeek() {\n return this._week.dow;\n }\n\n function localeFirstDayOfYear() {\n return this._week.doy;\n }\n\n // MOMENTS\n\n function getSetWeek(input) {\n var week = this.localeData().week(this);\n return input == null ? week : this.add((input - week) * 7, 'd');\n }\n\n function getSetISOWeek(input) {\n var week = weekOfYear(this, 1, 4).week;\n return input == null ? week : this.add((input - week) * 7, 'd');\n }\n\n // FORMATTING\n\n addFormatToken('d', 0, 'do', 'day');\n\n addFormatToken('dd', 0, 0, function (format) {\n return this.localeData().weekdaysMin(this, format);\n });\n\n addFormatToken('ddd', 0, 0, function (format) {\n return this.localeData().weekdaysShort(this, format);\n });\n\n addFormatToken('dddd', 0, 0, function (format) {\n return this.localeData().weekdays(this, format);\n });\n\n addFormatToken('e', 0, 0, 'weekday');\n addFormatToken('E', 0, 0, 'isoWeekday');\n\n // ALIASES\n\n addUnitAlias('day', 'd');\n addUnitAlias('weekday', 'e');\n addUnitAlias('isoWeekday', 'E');\n\n // PRIORITY\n addUnitPriority('day', 11);\n addUnitPriority('weekday', 11);\n addUnitPriority('isoWeekday', 11);\n\n // PARSING\n\n addRegexToken('d', match1to2);\n addRegexToken('e', match1to2);\n addRegexToken('E', match1to2);\n addRegexToken('dd', function (isStrict, locale) {\n return locale.weekdaysMinRegex(isStrict);\n });\n addRegexToken('ddd', function (isStrict, locale) {\n return locale.weekdaysShortRegex(isStrict);\n });\n addRegexToken('dddd', function (isStrict, locale) {\n return locale.weekdaysRegex(isStrict);\n });\n\n addWeekParseToken(['dd', 'ddd', 'dddd'], function (input, week, config, token) {\n var weekday = config._locale.weekdaysParse(input, token, config._strict);\n // if we didn't get a weekday name, mark the date as invalid\n if (weekday != null) {\n week.d = weekday;\n } else {\n getParsingFlags(config).invalidWeekday = input;\n }\n });\n\n addWeekParseToken(['d', 'e', 'E'], function (input, week, config, token) {\n week[token] = toInt(input);\n });\n\n // HELPERS\n\n function parseWeekday(input, locale) {\n if (typeof input !== 'string') {\n return input;\n }\n\n if (!isNaN(input)) {\n return parseInt(input, 10);\n }\n\n input = locale.weekdaysParse(input);\n if (typeof input === 'number') {\n return input;\n }\n\n return null;\n }\n\n function parseIsoWeekday(input, locale) {\n if (typeof input === 'string') {\n return locale.weekdaysParse(input) % 7 || 7;\n }\n return isNaN(input) ? null : input;\n }\n\n // LOCALES\n function shiftWeekdays(ws, n) {\n return ws.slice(n, 7).concat(ws.slice(0, n));\n }\n\n var defaultLocaleWeekdays = 'Sunday_Monday_Tuesday_Wednesday_Thursday_Friday_Saturday'.split(\n '_'\n ),\n defaultLocaleWeekdaysShort = 'Sun_Mon_Tue_Wed_Thu_Fri_Sat'.split('_'),\n defaultLocaleWeekdaysMin = 'Su_Mo_Tu_We_Th_Fr_Sa'.split('_'),\n defaultWeekdaysRegex = matchWord,\n defaultWeekdaysShortRegex = matchWord,\n defaultWeekdaysMinRegex = matchWord;\n\n function localeWeekdays(m, format) {\n var weekdays = isArray(this._weekdays)\n ? this._weekdays\n : this._weekdays[\n m && m !== true && this._weekdays.isFormat.test(format)\n ? 'format'\n : 'standalone'\n ];\n return m === true\n ? shiftWeekdays(weekdays, this._week.dow)\n : m\n ? weekdays[m.day()]\n : weekdays;\n }\n\n function localeWeekdaysShort(m) {\n return m === true\n ? shiftWeekdays(this._weekdaysShort, this._week.dow)\n : m\n ? this._weekdaysShort[m.day()]\n : this._weekdaysShort;\n }\n\n function localeWeekdaysMin(m) {\n return m === true\n ? shiftWeekdays(this._weekdaysMin, this._week.dow)\n : m\n ? this._weekdaysMin[m.day()]\n : this._weekdaysMin;\n }\n\n function handleStrictParse$1(weekdayName, format, strict) {\n var i,\n ii,\n mom,\n llc = weekdayName.toLocaleLowerCase();\n if (!this._weekdaysParse) {\n this._weekdaysParse = [];\n this._shortWeekdaysParse = [];\n this._minWeekdaysParse = [];\n\n for (i = 0; i < 7; ++i) {\n mom = createUTC([2000, 1]).day(i);\n this._minWeekdaysParse[i] = this.weekdaysMin(\n mom,\n ''\n ).toLocaleLowerCase();\n this._shortWeekdaysParse[i] = this.weekdaysShort(\n mom,\n ''\n ).toLocaleLowerCase();\n this._weekdaysParse[i] = this.weekdays(mom, '').toLocaleLowerCase();\n }\n }\n\n if (strict) {\n if (format === 'dddd') {\n ii = indexOf.call(this._weekdaysParse, llc);\n return ii !== -1 ? ii : null;\n } else if (format === 'ddd') {\n ii = indexOf.call(this._shortWeekdaysParse, llc);\n return ii !== -1 ? ii : null;\n } else {\n ii = indexOf.call(this._minWeekdaysParse, llc);\n return ii !== -1 ? ii : null;\n }\n } else {\n if (format === 'dddd') {\n ii = indexOf.call(this._weekdaysParse, llc);\n if (ii !== -1) {\n return ii;\n }\n ii = indexOf.call(this._shortWeekdaysParse, llc);\n if (ii !== -1) {\n return ii;\n }\n ii = indexOf.call(this._minWeekdaysParse, llc);\n return ii !== -1 ? ii : null;\n } else if (format === 'ddd') {\n ii = indexOf.call(this._shortWeekdaysParse, llc);\n if (ii !== -1) {\n return ii;\n }\n ii = indexOf.call(this._weekdaysParse, llc);\n if (ii !== -1) {\n return ii;\n }\n ii = indexOf.call(this._minWeekdaysParse, llc);\n return ii !== -1 ? ii : null;\n } else {\n ii = indexOf.call(this._minWeekdaysParse, llc);\n if (ii !== -1) {\n return ii;\n }\n ii = indexOf.call(this._weekdaysParse, llc);\n if (ii !== -1) {\n return ii;\n }\n ii = indexOf.call(this._shortWeekdaysParse, llc);\n return ii !== -1 ? ii : null;\n }\n }\n }\n\n function localeWeekdaysParse(weekdayName, format, strict) {\n var i, mom, regex;\n\n if (this._weekdaysParseExact) {\n return handleStrictParse$1.call(this, weekdayName, format, strict);\n }\n\n if (!this._weekdaysParse) {\n this._weekdaysParse = [];\n this._minWeekdaysParse = [];\n this._shortWeekdaysParse = [];\n this._fullWeekdaysParse = [];\n }\n\n for (i = 0; i < 7; i++) {\n // make the regex if we don't have it already\n\n mom = createUTC([2000, 1]).day(i);\n if (strict && !this._fullWeekdaysParse[i]) {\n this._fullWeekdaysParse[i] = new RegExp(\n '^' + this.weekdays(mom, '').replace('.', '\\\\.?') + '$',\n 'i'\n );\n this._shortWeekdaysParse[i] = new RegExp(\n '^' + this.weekdaysShort(mom, '').replace('.', '\\\\.?') + '$',\n 'i'\n );\n this._minWeekdaysParse[i] = new RegExp(\n '^' + this.weekdaysMin(mom, '').replace('.', '\\\\.?') + '$',\n 'i'\n );\n }\n if (!this._weekdaysParse[i]) {\n regex =\n '^' +\n this.weekdays(mom, '') +\n '|^' +\n this.weekdaysShort(mom, '') +\n '|^' +\n this.weekdaysMin(mom, '');\n this._weekdaysParse[i] = new RegExp(regex.replace('.', ''), 'i');\n }\n // test the regex\n if (\n strict &&\n format === 'dddd' &&\n this._fullWeekdaysParse[i].test(weekdayName)\n ) {\n return i;\n } else if (\n strict &&\n format === 'ddd' &&\n this._shortWeekdaysParse[i].test(weekdayName)\n ) {\n return i;\n } else if (\n strict &&\n format === 'dd' &&\n this._minWeekdaysParse[i].test(weekdayName)\n ) {\n return i;\n } else if (!strict && this._weekdaysParse[i].test(weekdayName)) {\n return i;\n }\n }\n }\n\n // MOMENTS\n\n function getSetDayOfWeek(input) {\n if (!this.isValid()) {\n return input != null ? this : NaN;\n }\n var day = this._isUTC ? this._d.getUTCDay() : this._d.getDay();\n if (input != null) {\n input = parseWeekday(input, this.localeData());\n return this.add(input - day, 'd');\n } else {\n return day;\n }\n }\n\n function getSetLocaleDayOfWeek(input) {\n if (!this.isValid()) {\n return input != null ? this : NaN;\n }\n var weekday = (this.day() + 7 - this.localeData()._week.dow) % 7;\n return input == null ? weekday : this.add(input - weekday, 'd');\n }\n\n function getSetISODayOfWeek(input) {\n if (!this.isValid()) {\n return input != null ? this : NaN;\n }\n\n // behaves the same as moment#day except\n // as a getter, returns 7 instead of 0 (1-7 range instead of 0-6)\n // as a setter, sunday should belong to the previous week.\n\n if (input != null) {\n var weekday = parseIsoWeekday(input, this.localeData());\n return this.day(this.day() % 7 ? weekday : weekday - 7);\n } else {\n return this.day() || 7;\n }\n }\n\n function weekdaysRegex(isStrict) {\n if (this._weekdaysParseExact) {\n if (!hasOwnProp(this, '_weekdaysRegex')) {\n computeWeekdaysParse.call(this);\n }\n if (isStrict) {\n return this._weekdaysStrictRegex;\n } else {\n return this._weekdaysRegex;\n }\n } else {\n if (!hasOwnProp(this, '_weekdaysRegex')) {\n this._weekdaysRegex = defaultWeekdaysRegex;\n }\n return this._weekdaysStrictRegex && isStrict\n ? this._weekdaysStrictRegex\n : this._weekdaysRegex;\n }\n }\n\n function weekdaysShortRegex(isStrict) {\n if (this._weekdaysParseExact) {\n if (!hasOwnProp(this, '_weekdaysRegex')) {\n computeWeekdaysParse.call(this);\n }\n if (isStrict) {\n return this._weekdaysShortStrictRegex;\n } else {\n return this._weekdaysShortRegex;\n }\n } else {\n if (!hasOwnProp(this, '_weekdaysShortRegex')) {\n this._weekdaysShortRegex = defaultWeekdaysShortRegex;\n }\n return this._weekdaysShortStrictRegex && isStrict\n ? this._weekdaysShortStrictRegex\n : this._weekdaysShortRegex;\n }\n }\n\n function weekdaysMinRegex(isStrict) {\n if (this._weekdaysParseExact) {\n if (!hasOwnProp(this, '_weekdaysRegex')) {\n computeWeekdaysParse.call(this);\n }\n if (isStrict) {\n return this._weekdaysMinStrictRegex;\n } else {\n return this._weekdaysMinRegex;\n }\n } else {\n if (!hasOwnProp(this, '_weekdaysMinRegex')) {\n this._weekdaysMinRegex = defaultWeekdaysMinRegex;\n }\n return this._weekdaysMinStrictRegex && isStrict\n ? this._weekdaysMinStrictRegex\n : this._weekdaysMinRegex;\n }\n }\n\n function computeWeekdaysParse() {\n function cmpLenRev(a, b) {\n return b.length - a.length;\n }\n\n var minPieces = [],\n shortPieces = [],\n longPieces = [],\n mixedPieces = [],\n i,\n mom,\n minp,\n shortp,\n longp;\n for (i = 0; i < 7; i++) {\n // make the regex if we don't have it already\n mom = createUTC([2000, 1]).day(i);\n minp = regexEscape(this.weekdaysMin(mom, ''));\n shortp = regexEscape(this.weekdaysShort(mom, ''));\n longp = regexEscape(this.weekdays(mom, ''));\n minPieces.push(minp);\n shortPieces.push(shortp);\n longPieces.push(longp);\n mixedPieces.push(minp);\n mixedPieces.push(shortp);\n mixedPieces.push(longp);\n }\n // Sorting makes sure if one weekday (or abbr) is a prefix of another it\n // will match the longer piece.\n minPieces.sort(cmpLenRev);\n shortPieces.sort(cmpLenRev);\n longPieces.sort(cmpLenRev);\n mixedPieces.sort(cmpLenRev);\n\n this._weekdaysRegex = new RegExp('^(' + mixedPieces.join('|') + ')', 'i');\n this._weekdaysShortRegex = this._weekdaysRegex;\n this._weekdaysMinRegex = this._weekdaysRegex;\n\n this._weekdaysStrictRegex = new RegExp(\n '^(' + longPieces.join('|') + ')',\n 'i'\n );\n this._weekdaysShortStrictRegex = new RegExp(\n '^(' + shortPieces.join('|') + ')',\n 'i'\n );\n this._weekdaysMinStrictRegex = new RegExp(\n '^(' + minPieces.join('|') + ')',\n 'i'\n );\n }\n\n // FORMATTING\n\n function hFormat() {\n return this.hours() % 12 || 12;\n }\n\n function kFormat() {\n return this.hours() || 24;\n }\n\n addFormatToken('H', ['HH', 2], 0, 'hour');\n addFormatToken('h', ['hh', 2], 0, hFormat);\n addFormatToken('k', ['kk', 2], 0, kFormat);\n\n addFormatToken('hmm', 0, 0, function () {\n return '' + hFormat.apply(this) + zeroFill(this.minutes(), 2);\n });\n\n addFormatToken('hmmss', 0, 0, function () {\n return (\n '' +\n hFormat.apply(this) +\n zeroFill(this.minutes(), 2) +\n zeroFill(this.seconds(), 2)\n );\n });\n\n addFormatToken('Hmm', 0, 0, function () {\n return '' + this.hours() + zeroFill(this.minutes(), 2);\n });\n\n addFormatToken('Hmmss', 0, 0, function () {\n return (\n '' +\n this.hours() +\n zeroFill(this.minutes(), 2) +\n zeroFill(this.seconds(), 2)\n );\n });\n\n function meridiem(token, lowercase) {\n addFormatToken(token, 0, 0, function () {\n return this.localeData().meridiem(\n this.hours(),\n this.minutes(),\n lowercase\n );\n });\n }\n\n meridiem('a', true);\n meridiem('A', false);\n\n // ALIASES\n\n addUnitAlias('hour', 'h');\n\n // PRIORITY\n addUnitPriority('hour', 13);\n\n // PARSING\n\n function matchMeridiem(isStrict, locale) {\n return locale._meridiemParse;\n }\n\n addRegexToken('a', matchMeridiem);\n addRegexToken('A', matchMeridiem);\n addRegexToken('H', match1to2);\n addRegexToken('h', match1to2);\n addRegexToken('k', match1to2);\n addRegexToken('HH', match1to2, match2);\n addRegexToken('hh', match1to2, match2);\n addRegexToken('kk', match1to2, match2);\n\n addRegexToken('hmm', match3to4);\n addRegexToken('hmmss', match5to6);\n addRegexToken('Hmm', match3to4);\n addRegexToken('Hmmss', match5to6);\n\n addParseToken(['H', 'HH'], HOUR);\n addParseToken(['k', 'kk'], function (input, array, config) {\n var kInput = toInt(input);\n array[HOUR] = kInput === 24 ? 0 : kInput;\n });\n addParseToken(['a', 'A'], function (input, array, config) {\n config._isPm = config._locale.isPM(input);\n config._meridiem = input;\n });\n addParseToken(['h', 'hh'], function (input, array, config) {\n array[HOUR] = toInt(input);\n getParsingFlags(config).bigHour = true;\n });\n addParseToken('hmm', function (input, array, config) {\n var pos = input.length - 2;\n array[HOUR] = toInt(input.substr(0, pos));\n array[MINUTE] = toInt(input.substr(pos));\n getParsingFlags(config).bigHour = true;\n });\n addParseToken('hmmss', function (input, array, config) {\n var pos1 = input.length - 4,\n pos2 = input.length - 2;\n array[HOUR] = toInt(input.substr(0, pos1));\n array[MINUTE] = toInt(input.substr(pos1, 2));\n array[SECOND] = toInt(input.substr(pos2));\n getParsingFlags(config).bigHour = true;\n });\n addParseToken('Hmm', function (input, array, config) {\n var pos = input.length - 2;\n array[HOUR] = toInt(input.substr(0, pos));\n array[MINUTE] = toInt(input.substr(pos));\n });\n addParseToken('Hmmss', function (input, array, config) {\n var pos1 = input.length - 4,\n pos2 = input.length - 2;\n array[HOUR] = toInt(input.substr(0, pos1));\n array[MINUTE] = toInt(input.substr(pos1, 2));\n array[SECOND] = toInt(input.substr(pos2));\n });\n\n // LOCALES\n\n function localeIsPM(input) {\n // IE8 Quirks Mode & IE7 Standards Mode do not allow accessing strings like arrays\n // Using charAt should be more compatible.\n return (input + '').toLowerCase().charAt(0) === 'p';\n }\n\n var defaultLocaleMeridiemParse = /[ap]\\.?m?\\.?/i,\n // Setting the hour should keep the time, because the user explicitly\n // specified which hour they want. So trying to maintain the same hour (in\n // a new timezone) makes sense. Adding/subtracting hours does not follow\n // this rule.\n getSetHour = makeGetSet('Hours', true);\n\n function localeMeridiem(hours, minutes, isLower) {\n if (hours > 11) {\n return isLower ? 'pm' : 'PM';\n } else {\n return isLower ? 'am' : 'AM';\n }\n }\n\n var baseConfig = {\n calendar: defaultCalendar,\n longDateFormat: defaultLongDateFormat,\n invalidDate: defaultInvalidDate,\n ordinal: defaultOrdinal,\n dayOfMonthOrdinalParse: defaultDayOfMonthOrdinalParse,\n relativeTime: defaultRelativeTime,\n\n months: defaultLocaleMonths,\n monthsShort: defaultLocaleMonthsShort,\n\n week: defaultLocaleWeek,\n\n weekdays: defaultLocaleWeekdays,\n weekdaysMin: defaultLocaleWeekdaysMin,\n weekdaysShort: defaultLocaleWeekdaysShort,\n\n meridiemParse: defaultLocaleMeridiemParse,\n };\n\n // internal storage for locale config files\n var locales = {},\n localeFamilies = {},\n globalLocale;\n\n function commonPrefix(arr1, arr2) {\n var i,\n minl = Math.min(arr1.length, arr2.length);\n for (i = 0; i < minl; i += 1) {\n if (arr1[i] !== arr2[i]) {\n return i;\n }\n }\n return minl;\n }\n\n function normalizeLocale(key) {\n return key ? key.toLowerCase().replace('_', '-') : key;\n }\n\n // pick the locale from the array\n // try ['en-au', 'en-gb'] as 'en-au', 'en-gb', 'en', as in move through the list trying each\n // substring from most specific to least, but move to the next array item if it's a more specific variant than the current root\n function chooseLocale(names) {\n var i = 0,\n j,\n next,\n locale,\n split;\n\n while (i < names.length) {\n split = normalizeLocale(names[i]).split('-');\n j = split.length;\n next = normalizeLocale(names[i + 1]);\n next = next ? next.split('-') : null;\n while (j > 0) {\n locale = loadLocale(split.slice(0, j).join('-'));\n if (locale) {\n return locale;\n }\n if (\n next &&\n next.length >= j &&\n commonPrefix(split, next) >= j - 1\n ) {\n //the next array item is better than a shallower substring of this one\n break;\n }\n j--;\n }\n i++;\n }\n return globalLocale;\n }\n\n function loadLocale(name) {\n var oldLocale = null,\n aliasedRequire;\n // TODO: Find a better way to register and load all the locales in Node\n if (\n locales[name] === undefined &&\n typeof module !== 'undefined' &&\n module &&\n module.exports\n ) {\n try {\n oldLocale = globalLocale._abbr;\n aliasedRequire = require;\n aliasedRequire('./locale/' + name);\n getSetGlobalLocale(oldLocale);\n } catch (e) {\n // mark as not found to avoid repeating expensive file require call causing high CPU\n // when trying to find en-US, en_US, en-us for every format call\n locales[name] = null; // null means not found\n }\n }\n return locales[name];\n }\n\n // This function will load locale and then set the global locale. If\n // no arguments are passed in, it will simply return the current global\n // locale key.\n function getSetGlobalLocale(key, values) {\n var data;\n if (key) {\n if (isUndefined(values)) {\n data = getLocale(key);\n } else {\n data = defineLocale(key, values);\n }\n\n if (data) {\n // moment.duration._locale = moment._locale = data;\n globalLocale = data;\n } else {\n if (typeof console !== 'undefined' && console.warn) {\n //warn user if arguments are passed but the locale could not be set\n console.warn(\n 'Locale ' + key + ' not found. Did you forget to load it?'\n );\n }\n }\n }\n\n return globalLocale._abbr;\n }\n\n function defineLocale(name, config) {\n if (config !== null) {\n var locale,\n parentConfig = baseConfig;\n config.abbr = name;\n if (locales[name] != null) {\n deprecateSimple(\n 'defineLocaleOverride',\n 'use moment.updateLocale(localeName, config) to change ' +\n 'an existing locale. moment.defineLocale(localeName, ' +\n 'config) should only be used for creating a new locale ' +\n 'See http://momentjs.com/guides/#/warnings/define-locale/ for more info.'\n );\n parentConfig = locales[name]._config;\n } else if (config.parentLocale != null) {\n if (locales[config.parentLocale] != null) {\n parentConfig = locales[config.parentLocale]._config;\n } else {\n locale = loadLocale(config.parentLocale);\n if (locale != null) {\n parentConfig = locale._config;\n } else {\n if (!localeFamilies[config.parentLocale]) {\n localeFamilies[config.parentLocale] = [];\n }\n localeFamilies[config.parentLocale].push({\n name: name,\n config: config,\n });\n return null;\n }\n }\n }\n locales[name] = new Locale(mergeConfigs(parentConfig, config));\n\n if (localeFamilies[name]) {\n localeFamilies[name].forEach(function (x) {\n defineLocale(x.name, x.config);\n });\n }\n\n // backwards compat for now: also set the locale\n // make sure we set the locale AFTER all child locales have been\n // created, so we won't end up with the child locale set.\n getSetGlobalLocale(name);\n\n return locales[name];\n } else {\n // useful for testing\n delete locales[name];\n return null;\n }\n }\n\n function updateLocale(name, config) {\n if (config != null) {\n var locale,\n tmpLocale,\n parentConfig = baseConfig;\n\n if (locales[name] != null && locales[name].parentLocale != null) {\n // Update existing child locale in-place to avoid memory-leaks\n locales[name].set(mergeConfigs(locales[name]._config, config));\n } else {\n // MERGE\n tmpLocale = loadLocale(name);\n if (tmpLocale != null) {\n parentConfig = tmpLocale._config;\n }\n config = mergeConfigs(parentConfig, config);\n if (tmpLocale == null) {\n // updateLocale is called for creating a new locale\n // Set abbr so it will have a name (getters return\n // undefined otherwise).\n config.abbr = name;\n }\n locale = new Locale(config);\n locale.parentLocale = locales[name];\n locales[name] = locale;\n }\n\n // backwards compat for now: also set the locale\n getSetGlobalLocale(name);\n } else {\n // pass null for config to unupdate, useful for tests\n if (locales[name] != null) {\n if (locales[name].parentLocale != null) {\n locales[name] = locales[name].parentLocale;\n if (name === getSetGlobalLocale()) {\n getSetGlobalLocale(name);\n }\n } else if (locales[name] != null) {\n delete locales[name];\n }\n }\n }\n return locales[name];\n }\n\n // returns locale data\n function getLocale(key) {\n var locale;\n\n if (key && key._locale && key._locale._abbr) {\n key = key._locale._abbr;\n }\n\n if (!key) {\n return globalLocale;\n }\n\n if (!isArray(key)) {\n //short-circuit everything else\n locale = loadLocale(key);\n if (locale) {\n return locale;\n }\n key = [key];\n }\n\n return chooseLocale(key);\n }\n\n function listLocales() {\n return keys(locales);\n }\n\n function checkOverflow(m) {\n var overflow,\n a = m._a;\n\n if (a && getParsingFlags(m).overflow === -2) {\n overflow =\n a[MONTH] < 0 || a[MONTH] > 11\n ? MONTH\n : a[DATE] < 1 || a[DATE] > daysInMonth(a[YEAR], a[MONTH])\n ? DATE\n : a[HOUR] < 0 ||\n a[HOUR] > 24 ||\n (a[HOUR] === 24 &&\n (a[MINUTE] !== 0 ||\n a[SECOND] !== 0 ||\n a[MILLISECOND] !== 0))\n ? HOUR\n : a[MINUTE] < 0 || a[MINUTE] > 59\n ? MINUTE\n : a[SECOND] < 0 || a[SECOND] > 59\n ? SECOND\n : a[MILLISECOND] < 0 || a[MILLISECOND] > 999\n ? MILLISECOND\n : -1;\n\n if (\n getParsingFlags(m)._overflowDayOfYear &&\n (overflow < YEAR || overflow > DATE)\n ) {\n overflow = DATE;\n }\n if (getParsingFlags(m)._overflowWeeks && overflow === -1) {\n overflow = WEEK;\n }\n if (getParsingFlags(m)._overflowWeekday && overflow === -1) {\n overflow = WEEKDAY;\n }\n\n getParsingFlags(m).overflow = overflow;\n }\n\n return m;\n }\n\n // iso 8601 regex\n // 0000-00-00 0000-W00 or 0000-W00-0 + T + 00 or 00:00 or 00:00:00 or 00:00:00.000 + +00:00 or +0000 or +00)\n var extendedIsoRegex = /^\\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 = [\n ['YYYYYY-MM-DD', /[+-]\\d{6}-\\d\\d-\\d\\d/],\n ['YYYY-MM-DD', /\\d{4}-\\d\\d-\\d\\d/],\n ['GGGG-[W]WW-E', /\\d{4}-W\\d\\d-\\d/],\n ['GGGG-[W]WW', /\\d{4}-W\\d\\d/, false],\n ['YYYY-DDD', /\\d{4}-\\d{3}/],\n ['YYYY-MM', /\\d{4}-\\d\\d/, false],\n ['YYYYYYMMDD', /[+-]\\d{10}/],\n ['YYYYMMDD', /\\d{8}/],\n ['GGGG[W]WWE', /\\d{4}W\\d{3}/],\n ['GGGG[W]WW', /\\d{4}W\\d{2}/, false],\n ['YYYYDDD', /\\d{7}/],\n ['YYYYMM', /\\d{6}/, false],\n ['YYYY', /\\d{4}/, false],\n ],\n // iso time formats and regexes\n isoTimes = [\n ['HH:mm:ss.SSSS', /\\d\\d:\\d\\d:\\d\\d\\.\\d+/],\n ['HH:mm:ss,SSSS', /\\d\\d:\\d\\d:\\d\\d,\\d+/],\n ['HH:mm:ss', /\\d\\d:\\d\\d:\\d\\d/],\n ['HH:mm', /\\d\\d:\\d\\d/],\n ['HHmmss.SSSS', /\\d\\d\\d\\d\\d\\d\\.\\d+/],\n ['HHmmss,SSSS', /\\d\\d\\d\\d\\d\\d,\\d+/],\n ['HHmmss', /\\d\\d\\d\\d\\d\\d/],\n ['HHmm', /\\d\\d\\d\\d/],\n ['HH', /\\d\\d/],\n ],\n aspNetJsonRegex = /^\\/?Date\\((-?\\d+)/i,\n // RFC 2822 regex: For details see https://tools.ietf.org/html/rfc2822#section-3.3\n rfc2822 = /^(?:(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\n if (match) {\n getParsingFlags(config).iso = true;\n\n for (i = 0, l = isoDates.length; 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 = isoTimes.length; i < l; i++) {\n if (isoTimes[i][1].exec(match[3])) {\n // match[2] should be 'T' or space\n timeFormat = (match[2] || ' ') + isoTimes[i][0];\n break;\n }\n }\n if (timeFormat == null) {\n config._isValid = false;\n return;\n }\n }\n if (!allowTime && timeFormat != null) {\n config._isValid = false;\n return;\n }\n if (match[4]) {\n if (tzRegex.exec(match[4])) {\n tzFormat = 'Z';\n } else {\n config._isValid = false;\n return;\n }\n }\n config._f = dateFormat + (timeFormat || '') + (tzFormat || '');\n configFromStringAndFormat(config);\n } else {\n config._isValid = false;\n }\n }\n\n function extractFromRFC2822Strings(\n yearStr,\n monthStr,\n dayStr,\n hourStr,\n minuteStr,\n secondStr\n ) {\n var result = [\n untruncateYear(yearStr),\n defaultLocaleMonthsShort.indexOf(monthStr),\n parseInt(dayStr, 10),\n parseInt(hourStr, 10),\n parseInt(minuteStr, 10),\n ];\n\n if (secondStr) {\n result.push(parseInt(secondStr, 10));\n }\n\n return result;\n }\n\n function untruncateYear(yearStr) {\n var year = parseInt(yearStr, 10);\n if (year <= 49) {\n return 2000 + year;\n } else if (year <= 999) {\n return 1900 + year;\n }\n return year;\n }\n\n function preprocessRFC2822(s) {\n // Remove comments and folding whitespace and replace multiple-spaces with a single space\n return s\n .replace(/\\([^)]*\\)|[\\n\\t]/g, ' ')\n .replace(/(\\s\\s+)/g, ' ')\n .replace(/^\\s\\s*/, '')\n .replace(/\\s\\s*$/, '');\n }\n\n function checkWeekday(weekdayStr, parsedInput, config) {\n if (weekdayStr) {\n // TODO: Replace the vanilla JS Date object with an independent day-of-week check.\n var weekdayProvided = defaultLocaleWeekdaysShort.indexOf(weekdayStr),\n weekdayActual = new Date(\n parsedInput[0],\n parsedInput[1],\n parsedInput[2]\n ).getDay();\n if (weekdayProvided !== weekdayActual) {\n getParsingFlags(config).weekdayMismatch = true;\n config._isValid = false;\n return false;\n }\n }\n return true;\n }\n\n function calculateOffset(obsOffset, militaryOffset, numOffset) {\n if (obsOffset) {\n return obsOffsets[obsOffset];\n } else if (militaryOffset) {\n // the only allowed military tz is Z\n return 0;\n } else {\n var hm = parseInt(numOffset, 10),\n m = hm % 100,\n h = (hm - m) / 100;\n return h * 60 + m;\n }\n }\n\n // date and time from ref 2822 format\n function configFromRFC2822(config) {\n var match = rfc2822.exec(preprocessRFC2822(config._i)),\n parsedArray;\n if (match) {\n parsedArray = extractFromRFC2822Strings(\n match[4],\n match[3],\n match[2],\n match[5],\n match[6],\n match[7]\n );\n if (!checkWeekday(match[1], parsedArray, config)) {\n return;\n }\n\n config._a = parsedArray;\n config._tzm = calculateOffset(match[8], match[9], match[10]);\n\n config._d = createUTCDate.apply(null, config._a);\n config._d.setUTCMinutes(config._d.getUTCMinutes() - config._tzm);\n\n getParsingFlags(config).rfc2822 = true;\n } else {\n config._isValid = false;\n }\n }\n\n // date from 1) ASP.NET, 2) ISO, 3) RFC 2822 formats, or 4) optional fallback if parsing isn't strict\n function configFromString(config) {\n var matched = aspNetJsonRegex.exec(config._i);\n if (matched !== null) {\n config._d = new Date(+matched[1]);\n return;\n }\n\n configFromISO(config);\n if (config._isValid === false) {\n delete config._isValid;\n } else {\n return;\n }\n\n configFromRFC2822(config);\n if (config._isValid === false) {\n delete config._isValid;\n } else {\n return;\n }\n\n if (config._strict) {\n config._isValid = false;\n } else {\n // Final attempt, use Input Fallback\n hooks.createFromInputFallback(config);\n }\n }\n\n hooks.createFromInputFallback = deprecate(\n 'value provided is not in a recognized RFC2822 or ISO format. moment construction falls back to js Date(), ' +\n 'which is not reliable across all browsers and versions. Non RFC2822/ISO date formats are ' +\n 'discouraged. Please refer to http://momentjs.com/guides/#/warnings/js-date/ for more info.',\n function (config) {\n config._d = new Date(config._i + (config._useUTC ? ' UTC' : ''));\n }\n );\n\n // Pick the first defined of two or three arguments.\n function defaults(a, b, c) {\n if (a != null) {\n return a;\n }\n if (b != null) {\n return b;\n }\n return c;\n }\n\n function currentDateArray(config) {\n // hooks is actually the exported moment object\n var nowValue = new Date(hooks.now());\n if (config._useUTC) {\n return [\n nowValue.getUTCFullYear(),\n nowValue.getUTCMonth(),\n nowValue.getUTCDate(),\n ];\n }\n return [nowValue.getFullYear(), nowValue.getMonth(), nowValue.getDate()];\n }\n\n // convert an array to a date.\n // the array should mirror the parameters below\n // note: all values past the year are optional and will default to the lowest possible value.\n // [year, month, day , hour, minute, second, millisecond]\n function configFromArray(config) {\n var i,\n date,\n input = [],\n currentDate,\n expectedWeekday,\n yearToUse;\n\n if (config._d) {\n return;\n }\n\n currentDate = currentDateArray(config);\n\n //compute day of the year from weeks and weekdays\n if (config._w && config._a[DATE] == null && config._a[MONTH] == null) {\n dayOfYearFromWeekInfo(config);\n }\n\n //if the day of the year is set, figure out what it is\n if (config._dayOfYear != null) {\n yearToUse = defaults(config._a[YEAR], currentDate[YEAR]);\n\n if (\n config._dayOfYear > daysInYear(yearToUse) ||\n config._dayOfYear === 0\n ) {\n getParsingFlags(config)._overflowDayOfYear = true;\n }\n\n date = createUTCDate(yearToUse, 0, config._dayOfYear);\n config._a[MONTH] = date.getUTCMonth();\n config._a[DATE] = date.getUTCDate();\n }\n\n // Default to current date.\n // * if no year, month, day of month are given, default to today\n // * if day of month is given, default month and year\n // * if month is given, default only year\n // * if year is given, don't default anything\n for (i = 0; i < 3 && config._a[i] == null; ++i) {\n config._a[i] = input[i] = currentDate[i];\n }\n\n // Zero out whatever was not defaulted, including time\n for (; i < 7; i++) {\n config._a[i] = input[i] =\n config._a[i] == null ? (i === 2 ? 1 : 0) : config._a[i];\n }\n\n // Check for 24:00:00.000\n if (\n config._a[HOUR] === 24 &&\n config._a[MINUTE] === 0 &&\n config._a[SECOND] === 0 &&\n config._a[MILLISECOND] === 0\n ) {\n config._nextDay = true;\n config._a[HOUR] = 0;\n }\n\n config._d = (config._useUTC ? createUTCDate : createDate).apply(\n null,\n input\n );\n expectedWeekday = config._useUTC\n ? config._d.getUTCDay()\n : config._d.getDay();\n\n // Apply timezone offset from input. The actual utcOffset can be changed\n // with parseZone.\n if (config._tzm != null) {\n config._d.setUTCMinutes(config._d.getUTCMinutes() - config._tzm);\n }\n\n if (config._nextDay) {\n config._a[HOUR] = 24;\n }\n\n // check for mismatching day of week\n if (\n config._w &&\n typeof config._w.d !== 'undefined' &&\n config._w.d !== expectedWeekday\n ) {\n getParsingFlags(config).weekdayMismatch = true;\n }\n }\n\n function dayOfYearFromWeekInfo(config) {\n var w, weekYear, week, weekday, dow, doy, temp, weekdayOverflow, curWeek;\n\n w = config._w;\n if (w.GG != null || w.W != null || w.E != null) {\n dow = 1;\n doy = 4;\n\n // TODO: We need to take the current isoWeekYear, but that depends on\n // how we interpret now (local, utc, fixed offset). So create\n // a now version of current config (take local/utc/offset flags, and\n // create now).\n weekYear = defaults(\n w.GG,\n config._a[YEAR],\n weekOfYear(createLocal(), 1, 4).year\n );\n week = defaults(w.W, 1);\n weekday = defaults(w.E, 1);\n if (weekday < 1 || weekday > 7) {\n weekdayOverflow = true;\n }\n } else {\n dow = config._locale._week.dow;\n doy = config._locale._week.doy;\n\n curWeek = weekOfYear(createLocal(), dow, doy);\n\n weekYear = defaults(w.gg, config._a[YEAR], curWeek.year);\n\n // Default to current week.\n week = defaults(w.w, curWeek.week);\n\n if (w.d != null) {\n // weekday -- low day numbers are considered next week\n weekday = w.d;\n if (weekday < 0 || weekday > 6) {\n weekdayOverflow = true;\n }\n } else if (w.e != null) {\n // local weekday -- counting starts from beginning of week\n weekday = w.e + dow;\n if (w.e < 0 || w.e > 6) {\n weekdayOverflow = true;\n }\n } else {\n // default to beginning of week\n weekday = dow;\n }\n }\n if (week < 1 || week > weeksInYear(weekYear, dow, doy)) {\n getParsingFlags(config)._overflowWeeks = true;\n } else if (weekdayOverflow != null) {\n getParsingFlags(config)._overflowWeekday = true;\n } else {\n temp = dayOfYearFromWeeks(weekYear, week, weekday, dow, doy);\n config._a[YEAR] = temp.year;\n config._dayOfYear = temp.dayOfYear;\n }\n }\n\n // constant that refers to the ISO standard\n hooks.ISO_8601 = function () {};\n\n // constant that refers to the RFC 2822 form\n hooks.RFC_2822 = function () {};\n\n // date from string and format string\n function configFromStringAndFormat(config) {\n // TODO: Move this to another part of the creation flow to prevent circular deps\n if (config._f === hooks.ISO_8601) {\n configFromISO(config);\n return;\n }\n if (config._f === hooks.RFC_2822) {\n configFromRFC2822(config);\n return;\n }\n config._a = [];\n getParsingFlags(config).empty = true;\n\n // This array is used to make a Date, either with `new Date` or `Date.UTC`\n var string = '' + config._i,\n i,\n parsedInput,\n tokens,\n token,\n skipped,\n stringLength = string.length,\n totalParsedInputLength = 0,\n era;\n\n tokens =\n expandFormat(config._f, config._locale).match(formattingTokens) || [];\n\n for (i = 0; i < tokens.length; i++) {\n token = tokens[i];\n parsedInput = (string.match(getParseRegexForToken(token, config)) ||\n [])[0];\n if (parsedInput) {\n skipped = string.substr(0, string.indexOf(parsedInput));\n if (skipped.length > 0) {\n getParsingFlags(config).unusedInput.push(skipped);\n }\n string = string.slice(\n string.indexOf(parsedInput) + parsedInput.length\n );\n totalParsedInputLength += parsedInput.length;\n }\n // don't parse if it's not a known token\n if (formatTokenFunctions[token]) {\n if (parsedInput) {\n getParsingFlags(config).empty = false;\n } else {\n getParsingFlags(config).unusedTokens.push(token);\n }\n addTimeToArrayFromToken(token, parsedInput, config);\n } else if (config._strict && !parsedInput) {\n getParsingFlags(config).unusedTokens.push(token);\n }\n }\n\n // add remaining unparsed input length to the string\n getParsingFlags(config).charsLeftOver =\n stringLength - totalParsedInputLength;\n if (string.length > 0) {\n getParsingFlags(config).unusedInput.push(string);\n }\n\n // clear _12h flag if hour is <= 12\n if (\n config._a[HOUR] <= 12 &&\n getParsingFlags(config).bigHour === true &&\n config._a[HOUR] > 0\n ) {\n getParsingFlags(config).bigHour = undefined;\n }\n\n getParsingFlags(config).parsedDateParts = config._a.slice(0);\n getParsingFlags(config).meridiem = config._meridiem;\n // handle meridiem\n config._a[HOUR] = meridiemFixWrap(\n config._locale,\n config._a[HOUR],\n config._meridiem\n );\n\n // handle era\n era = getParsingFlags(config).era;\n if (era !== null) {\n config._a[YEAR] = config._locale.erasConvertYear(era, config._a[YEAR]);\n }\n\n configFromArray(config);\n checkOverflow(config);\n }\n\n function meridiemFixWrap(locale, hour, meridiem) {\n var isPm;\n\n if (meridiem == null) {\n // nothing to do\n return hour;\n }\n if (locale.meridiemHour != null) {\n return locale.meridiemHour(hour, meridiem);\n } else if (locale.isPM != null) {\n // Fallback\n isPm = locale.isPM(meridiem);\n if (isPm && hour < 12) {\n hour += 12;\n }\n if (!isPm && hour === 12) {\n hour = 0;\n }\n return hour;\n } else {\n // this is not supposed to happen\n return hour;\n }\n }\n\n // date from string and array of format strings\n function configFromStringAndArray(config) {\n var tempConfig,\n bestMoment,\n scoreToBeat,\n i,\n currentScore,\n validFormatFound,\n bestFormatIsValid = false;\n\n if (config._f.length === 0) {\n getParsingFlags(config).invalidFormat = true;\n config._d = new Date(NaN);\n return;\n }\n\n for (i = 0; i < config._f.length; i++) {\n currentScore = 0;\n validFormatFound = false;\n tempConfig = copyConfig({}, config);\n if (config._useUTC != null) {\n tempConfig._useUTC = config._useUTC;\n }\n tempConfig._f = config._f[i];\n configFromStringAndFormat(tempConfig);\n\n if (isValid(tempConfig)) {\n validFormatFound = true;\n }\n\n // if there is any input that was not parsed add a penalty for that format\n currentScore += getParsingFlags(tempConfig).charsLeftOver;\n\n //or tokens\n currentScore += getParsingFlags(tempConfig).unusedTokens.length * 10;\n\n getParsingFlags(tempConfig).score = currentScore;\n\n if (!bestFormatIsValid) {\n if (\n scoreToBeat == null ||\n currentScore < scoreToBeat ||\n validFormatFound\n ) {\n scoreToBeat = currentScore;\n bestMoment = tempConfig;\n if (validFormatFound) {\n bestFormatIsValid = true;\n }\n }\n } else {\n if (currentScore < scoreToBeat) {\n scoreToBeat = currentScore;\n bestMoment = tempConfig;\n }\n }\n }\n\n extend(config, bestMoment || tempConfig);\n }\n\n function configFromObject(config) {\n if (config._d) {\n return;\n }\n\n var i = normalizeObjectUnits(config._i),\n dayOrDate = i.day === undefined ? i.date : i.day;\n config._a = map(\n [i.year, i.month, dayOrDate, i.hour, i.minute, i.second, i.millisecond],\n function (obj) {\n return obj && parseInt(obj, 10);\n }\n );\n\n configFromArray(config);\n }\n\n function createFromConfig(config) {\n var res = new Moment(checkOverflow(prepareConfig(config)));\n if (res._nextDay) {\n // Adding is smart enough around DST\n res.add(1, 'd');\n res._nextDay = undefined;\n }\n\n return res;\n }\n\n function prepareConfig(config) {\n var input = config._i,\n format = config._f;\n\n config._locale = config._locale || getLocale(config._l);\n\n if (input === null || (format === undefined && input === '')) {\n return createInvalid({ nullInput: true });\n }\n\n if (typeof input === 'string') {\n config._i = input = config._locale.preparse(input);\n }\n\n if (isMoment(input)) {\n return new Moment(checkOverflow(input));\n } else if (isDate(input)) {\n config._d = input;\n } else if (isArray(format)) {\n configFromStringAndArray(config);\n } else if (format) {\n configFromStringAndFormat(config);\n } else {\n configFromInput(config);\n }\n\n if (!isValid(config)) {\n config._d = null;\n }\n\n return config;\n }\n\n function configFromInput(config) {\n var input = config._i;\n if (isUndefined(input)) {\n config._d = new Date(hooks.now());\n } else if (isDate(input)) {\n config._d = new Date(input.valueOf());\n } else if (typeof input === 'string') {\n configFromString(config);\n } else if (isArray(input)) {\n config._a = map(input.slice(0), function (obj) {\n return parseInt(obj, 10);\n });\n configFromArray(config);\n } else if (isObject(input)) {\n configFromObject(config);\n } else if (isNumber(input)) {\n // from milliseconds\n config._d = new Date(input);\n } else {\n hooks.createFromInputFallback(config);\n }\n }\n\n function createLocalOrUTC(input, format, locale, strict, isUTC) {\n var c = {};\n\n if (format === true || format === false) {\n strict = format;\n format = undefined;\n }\n\n if (locale === true || locale === false) {\n strict = locale;\n locale = undefined;\n }\n\n if (\n (isObject(input) && isObjectEmpty(input)) ||\n (isArray(input) && input.length === 0)\n ) {\n input = undefined;\n }\n // object construction must be done this way.\n // https://github.com/moment/moment/issues/1423\n c._isAMomentObject = true;\n c._useUTC = c._isUTC = isUTC;\n c._l = locale;\n c._i = input;\n c._f = format;\n c._strict = strict;\n\n return createFromConfig(c);\n }\n\n function createLocal(input, format, locale, strict) {\n return createLocalOrUTC(input, format, locale, strict, false);\n }\n\n var prototypeMin = deprecate(\n 'moment().min is deprecated, use moment.max instead. http://momentjs.com/guides/#/warnings/min-max/',\n function () {\n var other = createLocal.apply(null, arguments);\n if (this.isValid() && other.isValid()) {\n return other < this ? this : other;\n } else {\n return createInvalid();\n }\n }\n ),\n prototypeMax = deprecate(\n 'moment().max is deprecated, use moment.min instead. http://momentjs.com/guides/#/warnings/min-max/',\n function () {\n var other = createLocal.apply(null, arguments);\n if (this.isValid() && other.isValid()) {\n return other > this ? this : other;\n } else {\n return createInvalid();\n }\n }\n );\n\n // Pick a moment m from moments so that m[fn](other) is true for all\n // other. This relies on the function fn to be transitive.\n //\n // moments should either be an array of moment objects or an array, whose\n // first element is an array of moment objects.\n function pickBy(fn, moments) {\n var res, i;\n if (moments.length === 1 && isArray(moments[0])) {\n moments = moments[0];\n }\n if (!moments.length) {\n return createLocal();\n }\n res = moments[0];\n for (i = 1; i < moments.length; ++i) {\n if (!moments[i].isValid() || moments[i][fn](res)) {\n res = moments[i];\n }\n }\n return res;\n }\n\n // TODO: Use [].sort instead?\n function min() {\n var args = [].slice.call(arguments, 0);\n\n return pickBy('isBefore', args);\n }\n\n function max() {\n var args = [].slice.call(arguments, 0);\n\n return pickBy('isAfter', args);\n }\n\n var now = function () {\n return Date.now ? Date.now() : +new Date();\n };\n\n var ordering = [\n 'year',\n 'quarter',\n 'month',\n 'week',\n 'day',\n 'hour',\n 'minute',\n 'second',\n 'millisecond',\n ];\n\n function isDurationValid(m) {\n var key,\n unitHasDecimal = false,\n i;\n for (key in m) {\n if (\n hasOwnProp(m, key) &&\n !(\n indexOf.call(ordering, key) !== -1 &&\n (m[key] == null || !isNaN(m[key]))\n )\n ) {\n return false;\n }\n }\n\n for (i = 0; i < ordering.length; ++i) {\n if (m[ordering[i]]) {\n if (unitHasDecimal) {\n return false; // only allow non-integers for smallest unit\n }\n if (parseFloat(m[ordering[i]]) !== toInt(m[ordering[i]])) {\n unitHasDecimal = true;\n }\n }\n }\n\n return true;\n }\n\n function isValid$1() {\n return this._isValid;\n }\n\n function createInvalid$1() {\n return createDuration(NaN);\n }\n\n function Duration(duration) {\n var normalizedInput = normalizeObjectUnits(duration),\n years = normalizedInput.year || 0,\n quarters = normalizedInput.quarter || 0,\n months = normalizedInput.month || 0,\n weeks = normalizedInput.week || normalizedInput.isoWeek || 0,\n days = normalizedInput.day || 0,\n hours = normalizedInput.hour || 0,\n minutes = normalizedInput.minute || 0,\n seconds = normalizedInput.second || 0,\n milliseconds = normalizedInput.millisecond || 0;\n\n this._isValid = isDurationValid(normalizedInput);\n\n // representation for dateAddRemove\n this._milliseconds =\n +milliseconds +\n seconds * 1e3 + // 1000\n minutes * 6e4 + // 1000 * 60\n hours * 1000 * 60 * 60; //using 1000 * 60 * 60 instead of 36e5 to avoid floating point rounding errors https://github.com/moment/moment/issues/2978\n // Because of dateAddRemove treats 24 hours as different from a\n // day when working around DST, we need to store them separately\n this._days = +days + weeks * 7;\n // It is impossible to translate months into days without knowing\n // which months you are are talking about, so we have to store\n // it separately.\n this._months = +months + quarters * 3 + years * 12;\n\n this._data = {};\n\n this._locale = getLocale();\n\n this._bubble();\n }\n\n function isDuration(obj) {\n return obj instanceof Duration;\n }\n\n function absRound(number) {\n if (number < 0) {\n return Math.round(-1 * number) * -1;\n } else {\n return Math.round(number);\n }\n }\n\n // compare two arrays, return the number of differences\n function compareArrays(array1, array2, dontConvert) {\n var len = Math.min(array1.length, array2.length),\n lengthDiff = Math.abs(array1.length - array2.length),\n diffs = 0,\n i;\n for (i = 0; i < len; i++) {\n if (\n (dontConvert && array1[i] !== array2[i]) ||\n (!dontConvert && toInt(array1[i]) !== toInt(array2[i]))\n ) {\n diffs++;\n }\n }\n return diffs + lengthDiff;\n }\n\n // FORMATTING\n\n function offset(token, separator) {\n addFormatToken(token, 0, 0, function () {\n var offset = this.utcOffset(),\n sign = '+';\n if (offset < 0) {\n offset = -offset;\n sign = '-';\n }\n return (\n sign +\n zeroFill(~~(offset / 60), 2) +\n separator +\n zeroFill(~~offset % 60, 2)\n );\n });\n }\n\n offset('Z', ':');\n offset('ZZ', '');\n\n // PARSING\n\n addRegexToken('Z', matchShortOffset);\n addRegexToken('ZZ', matchShortOffset);\n addParseToken(['Z', 'ZZ'], function (input, array, config) {\n config._useUTC = true;\n config._tzm = offsetFromString(matchShortOffset, input);\n });\n\n // HELPERS\n\n // timezone chunker\n // '+10:00' > ['10', '00']\n // '-1530' > ['-15', '30']\n var chunkOffset = /([\\+\\-]|\\d\\d)/gi;\n\n function offsetFromString(matcher, string) {\n var matches = (string || '').match(matcher),\n chunk,\n parts,\n minutes;\n\n if (matches === null) {\n return null;\n }\n\n chunk = matches[matches.length - 1] || [];\n parts = (chunk + '').match(chunkOffset) || ['-', 0, 0];\n minutes = +(parts[1] * 60) + toInt(parts[2]);\n\n return minutes === 0 ? 0 : parts[0] === '+' ? minutes : -minutes;\n }\n\n // Return a moment from input, that is local/utc/zone equivalent to model.\n function cloneWithOffset(input, model) {\n var res, diff;\n if (model._isUTC) {\n res = model.clone();\n diff =\n (isMoment(input) || isDate(input)\n ? input.valueOf()\n : createLocal(input).valueOf()) - res.valueOf();\n // Use low-level api, because this fn is low-level api.\n res._d.setTime(res._d.valueOf() + diff);\n hooks.updateOffset(res, false);\n return res;\n } else {\n return createLocal(input).local();\n }\n }\n\n function getDateOffset(m) {\n // On Firefox.24 Date#getTimezoneOffset returns a floating point.\n // https://github.com/moment/moment/pull/1871\n return -Math.round(m._d.getTimezoneOffset());\n }\n\n // HOOKS\n\n // This function will be called whenever a moment is mutated.\n // It is intended to keep the offset in sync with the timezone.\n hooks.updateOffset = function () {};\n\n // MOMENTS\n\n // keepLocalTime = true means only change the timezone, without\n // affecting the local hour. So 5:31:26 +0300 --[utcOffset(2, true)]-->\n // 5:31:26 +0200 It is possible that 5:31:26 doesn't exist with offset\n // +0200, so we adjust the time as needed, to be valid.\n //\n // Keeping the time actually adds/subtracts (one hour)\n // from the actual represented time. That is why we call updateOffset\n // a second time. In case it wants us to change the offset again\n // _changeInProgress == true case, then we have to adjust, because\n // there is no such time in the given timezone.\n function getSetOffset(input, keepLocalTime, keepMinutes) {\n var offset = this._offset || 0,\n localAdjust;\n if (!this.isValid()) {\n return input != null ? this : NaN;\n }\n if (input != null) {\n if (typeof input === 'string') {\n input = offsetFromString(matchShortOffset, input);\n if (input === null) {\n return this;\n }\n } else if (Math.abs(input) < 16 && !keepMinutes) {\n input = input * 60;\n }\n if (!this._isUTC && keepLocalTime) {\n localAdjust = getDateOffset(this);\n }\n this._offset = input;\n this._isUTC = true;\n if (localAdjust != null) {\n this.add(localAdjust, 'm');\n }\n if (offset !== input) {\n if (!keepLocalTime || this._changeInProgress) {\n addSubtract(\n this,\n createDuration(input - offset, 'm'),\n 1,\n false\n );\n } else if (!this._changeInProgress) {\n this._changeInProgress = true;\n hooks.updateOffset(this, true);\n this._changeInProgress = null;\n }\n }\n return this;\n } else {\n return this._isUTC ? offset : getDateOffset(this);\n }\n }\n\n function getSetZone(input, keepLocalTime) {\n if (input != null) {\n if (typeof input !== 'string') {\n input = -input;\n }\n\n this.utcOffset(input, keepLocalTime);\n\n return this;\n } else {\n return -this.utcOffset();\n }\n }\n\n function setOffsetToUTC(keepLocalTime) {\n return this.utcOffset(0, keepLocalTime);\n }\n\n function setOffsetToLocal(keepLocalTime) {\n if (this._isUTC) {\n this.utcOffset(0, keepLocalTime);\n this._isUTC = false;\n\n if (keepLocalTime) {\n this.subtract(getDateOffset(this), 'm');\n }\n }\n return this;\n }\n\n function setOffsetToParsedOffset() {\n if (this._tzm != null) {\n this.utcOffset(this._tzm, false, true);\n } else if (typeof this._i === 'string') {\n var tZone = offsetFromString(matchOffset, this._i);\n if (tZone != null) {\n this.utcOffset(tZone);\n } else {\n this.utcOffset(0, true);\n }\n }\n return this;\n }\n\n function hasAlignedHourOffset(input) {\n if (!this.isValid()) {\n return false;\n }\n input = input ? createLocal(input).utcOffset() : 0;\n\n return (this.utcOffset() - input) % 60 === 0;\n }\n\n function isDaylightSavingTime() {\n return (\n this.utcOffset() > this.clone().month(0).utcOffset() ||\n this.utcOffset() > this.clone().month(5).utcOffset()\n );\n }\n\n function isDaylightSavingTimeShifted() {\n if (!isUndefined(this._isDSTShifted)) {\n return this._isDSTShifted;\n }\n\n var c = {},\n other;\n\n copyConfig(c, this);\n c = prepareConfig(c);\n\n if (c._a) {\n other = c._isUTC ? createUTC(c._a) : createLocal(c._a);\n this._isDSTShifted =\n this.isValid() && compareArrays(c._a, other.toArray()) > 0;\n } else {\n this._isDSTShifted = false;\n }\n\n return this._isDSTShifted;\n }\n\n function isLocal() {\n return this.isValid() ? !this._isUTC : false;\n }\n\n function isUtcOffset() {\n return this.isValid() ? this._isUTC : false;\n }\n\n function isUtc() {\n return this.isValid() ? this._isUTC && this._offset === 0 : false;\n }\n\n // ASP.NET json date format regex\n var aspNetRegex = /^(-|\\+)?(?:(\\d*)[. ])?(\\d+):(\\d+)(?::(\\d+)(\\.\\d*)?)?$/,\n // from http://docs.closure-library.googlecode.com/git/closure_goog_date_date.js.source.html\n // somewhat more in line with 4.4.3.2 2004 spec, but allows decimal anywhere\n // and further modified to allow for strings containing both week and day\n isoRegex = /^(-|\\+)?P(?:([-+]?[0-9,.]*)Y)?(?:([-+]?[0-9,.]*)M)?(?:([-+]?[0-9,.]*)W)?(?:([-+]?[0-9,.]*)D)?(?:T(?:([-+]?[0-9,.]*)H)?(?:([-+]?[0-9,.]*)M)?(?:([-+]?[0-9,.]*)S)?)?$/;\n\n function createDuration(input, key) {\n var duration = input,\n // matching against regexp is expensive, do it on demand\n match = null,\n sign,\n ret,\n diffRes;\n\n if (isDuration(input)) {\n duration = {\n ms: input._milliseconds,\n d: input._days,\n M: input._months,\n };\n } else if (isNumber(input) || !isNaN(+input)) {\n duration = {};\n if (key) {\n duration[key] = +input;\n } else {\n duration.milliseconds = +input;\n }\n } else if ((match = aspNetRegex.exec(input))) {\n sign = match[1] === '-' ? -1 : 1;\n duration = {\n y: 0,\n d: toInt(match[DATE]) * sign,\n h: toInt(match[HOUR]) * sign,\n m: toInt(match[MINUTE]) * sign,\n s: toInt(match[SECOND]) * sign,\n ms: toInt(absRound(match[MILLISECOND] * 1000)) * sign, // the millisecond decimal point is included in the match\n };\n } else if ((match = isoRegex.exec(input))) {\n sign = match[1] === '-' ? -1 : 1;\n duration = {\n y: parseIso(match[2], sign),\n M: parseIso(match[3], sign),\n w: parseIso(match[4], sign),\n d: parseIso(match[5], sign),\n h: parseIso(match[6], sign),\n m: parseIso(match[7], sign),\n s: parseIso(match[8], sign),\n };\n } else if (duration == null) {\n // checks for null or undefined\n duration = {};\n } else if (\n typeof duration === 'object' &&\n ('from' in duration || 'to' in duration)\n ) {\n diffRes = momentsDifference(\n createLocal(duration.from),\n createLocal(duration.to)\n );\n\n duration = {};\n duration.ms = diffRes.milliseconds;\n duration.M = diffRes.months;\n }\n\n ret = new Duration(duration);\n\n if (isDuration(input) && hasOwnProp(input, '_locale')) {\n ret._locale = input._locale;\n }\n\n if (isDuration(input) && hasOwnProp(input, '_isValid')) {\n ret._isValid = input._isValid;\n }\n\n return ret;\n }\n\n createDuration.fn = Duration.prototype;\n createDuration.invalid = createInvalid$1;\n\n function parseIso(inp, sign) {\n // We'd normally use ~~inp for this, but unfortunately it also\n // converts floats to ints.\n // inp may be undefined, so careful calling replace on it.\n var res = inp && parseFloat(inp.replace(',', '.'));\n // apply sign while we're at it\n return (isNaN(res) ? 0 : res) * sign;\n }\n\n function positiveMomentsDifference(base, other) {\n var res = {};\n\n res.months =\n other.month() - base.month() + (other.year() - base.year()) * 12;\n if (base.clone().add(res.months, 'M').isAfter(other)) {\n --res.months;\n }\n\n res.milliseconds = +other - +base.clone().add(res.months, 'M');\n\n return res;\n }\n\n function momentsDifference(base, other) {\n var res;\n if (!(base.isValid() && other.isValid())) {\n return { milliseconds: 0, months: 0 };\n }\n\n other = cloneWithOffset(other, base);\n if (base.isBefore(other)) {\n res = positiveMomentsDifference(base, other);\n } else {\n res = positiveMomentsDifference(other, base);\n res.milliseconds = -res.milliseconds;\n res.months = -res.months;\n }\n\n return res;\n }\n\n // TODO: remove 'name' arg after deprecation is removed\n function createAdder(direction, name) {\n return function (val, period) {\n var dur, tmp;\n //invert the arguments, but complain about it\n if (period !== null && !isNaN(+period)) {\n deprecateSimple(\n name,\n 'moment().' +\n name +\n '(period, number) is deprecated. Please use moment().' +\n name +\n '(number, period). ' +\n 'See http://momentjs.com/guides/#/warnings/add-inverted-param/ for more info.'\n );\n tmp = val;\n val = period;\n period = tmp;\n }\n\n dur = createDuration(val, period);\n addSubtract(this, dur, direction);\n return this;\n };\n }\n\n function addSubtract(mom, duration, isAdding, updateOffset) {\n var milliseconds = duration._milliseconds,\n days = absRound(duration._days),\n months = absRound(duration._months);\n\n if (!mom.isValid()) {\n // No op\n return;\n }\n\n updateOffset = updateOffset == null ? true : updateOffset;\n\n if (months) {\n setMonth(mom, get(mom, 'Month') + months * isAdding);\n }\n if (days) {\n set$1(mom, 'Date', get(mom, 'Date') + days * isAdding);\n }\n if (milliseconds) {\n mom._d.setTime(mom._d.valueOf() + milliseconds * isAdding);\n }\n if (updateOffset) {\n hooks.updateOffset(mom, days || months);\n }\n }\n\n var add = createAdder(1, 'add'),\n subtract = createAdder(-1, 'subtract');\n\n function isString(input) {\n return typeof input === 'string' || input instanceof String;\n }\n\n // type MomentInput = Moment | Date | string | number | (number | string)[] | MomentInputObject | void; // null | undefined\n function isMomentInput(input) {\n return (\n isMoment(input) ||\n isDate(input) ||\n isString(input) ||\n isNumber(input) ||\n isNumberOrStringArray(input) ||\n isMomentInputObject(input) ||\n input === null ||\n input === undefined\n );\n }\n\n function isMomentInputObject(input) {\n var objectTest = isObject(input) && !isObjectEmpty(input),\n propertyTest = false,\n properties = [\n 'years',\n 'year',\n 'y',\n 'months',\n 'month',\n 'M',\n 'days',\n 'day',\n 'd',\n 'dates',\n 'date',\n 'D',\n 'hours',\n 'hour',\n 'h',\n 'minutes',\n 'minute',\n 'm',\n 'seconds',\n 'second',\n 's',\n 'milliseconds',\n 'millisecond',\n 'ms',\n ],\n i,\n property;\n\n for (i = 0; i < properties.length; i += 1) {\n property = properties[i];\n propertyTest = propertyTest || hasOwnProp(input, property);\n }\n\n return objectTest && propertyTest;\n }\n\n function isNumberOrStringArray(input) {\n var arrayTest = isArray(input),\n dataTypeTest = false;\n if (arrayTest) {\n dataTypeTest =\n input.filter(function (item) {\n return !isNumber(item) && isString(input);\n }).length === 0;\n }\n return arrayTest && dataTypeTest;\n }\n\n function isCalendarSpec(input) {\n var objectTest = isObject(input) && !isObjectEmpty(input),\n propertyTest = false,\n properties = [\n 'sameDay',\n 'nextDay',\n 'lastDay',\n 'nextWeek',\n 'lastWeek',\n 'sameElse',\n ],\n i,\n property;\n\n for (i = 0; i < properties.length; i += 1) {\n property = properties[i];\n propertyTest = propertyTest || hasOwnProp(input, property);\n }\n\n return objectTest && propertyTest;\n }\n\n function getCalendarFormat(myMoment, now) {\n var diff = myMoment.diff(now, 'days', true);\n return diff < -6\n ? 'sameElse'\n : diff < -1\n ? 'lastWeek'\n : diff < 0\n ? 'lastDay'\n : diff < 1\n ? 'sameDay'\n : diff < 2\n ? 'nextDay'\n : diff < 7\n ? 'nextWeek'\n : 'sameElse';\n }\n\n function calendar$1(time, formats) {\n // Support for single parameter, formats only overload to the calendar function\n if (arguments.length === 1) {\n if (!arguments[0]) {\n time = undefined;\n formats = undefined;\n } else if (isMomentInput(arguments[0])) {\n time = arguments[0];\n formats = undefined;\n } else if (isCalendarSpec(arguments[0])) {\n formats = arguments[0];\n time = undefined;\n }\n }\n // We want to compare the start of today, vs this.\n // Getting start-of-today depends on whether we're local/utc/offset or not.\n var now = time || createLocal(),\n sod = cloneWithOffset(now, this).startOf('day'),\n format = hooks.calendarFormat(this, sod) || 'sameElse',\n output =\n formats &&\n (isFunction(formats[format])\n ? formats[format].call(this, now)\n : formats[format]);\n\n return this.format(\n output || this.localeData().calendar(format, this, createLocal(now))\n );\n }\n\n function clone() {\n return new Moment(this);\n }\n\n function isAfter(input, units) {\n var localInput = isMoment(input) ? input : createLocal(input);\n if (!(this.isValid() && localInput.isValid())) {\n return false;\n }\n units = normalizeUnits(units) || 'millisecond';\n if (units === 'millisecond') {\n return this.valueOf() > localInput.valueOf();\n } else {\n return localInput.valueOf() < this.clone().startOf(units).valueOf();\n }\n }\n\n function isBefore(input, units) {\n var localInput = isMoment(input) ? input : createLocal(input);\n if (!(this.isValid() && localInput.isValid())) {\n return false;\n }\n units = normalizeUnits(units) || 'millisecond';\n if (units === 'millisecond') {\n return this.valueOf() < localInput.valueOf();\n } else {\n return this.clone().endOf(units).valueOf() < localInput.valueOf();\n }\n }\n\n function isBetween(from, to, units, inclusivity) {\n var localFrom = isMoment(from) ? from : createLocal(from),\n localTo = isMoment(to) ? to : createLocal(to);\n if (!(this.isValid() && localFrom.isValid() && localTo.isValid())) {\n return false;\n }\n inclusivity = inclusivity || '()';\n return (\n (inclusivity[0] === '('\n ? this.isAfter(localFrom, units)\n : !this.isBefore(localFrom, units)) &&\n (inclusivity[1] === ')'\n ? this.isBefore(localTo, units)\n : !this.isAfter(localTo, units))\n );\n }\n\n function isSame(input, units) {\n var localInput = isMoment(input) ? input : createLocal(input),\n inputMs;\n if (!(this.isValid() && localInput.isValid())) {\n return false;\n }\n units = normalizeUnits(units) || 'millisecond';\n if (units === 'millisecond') {\n return this.valueOf() === localInput.valueOf();\n } else {\n inputMs = localInput.valueOf();\n return (\n this.clone().startOf(units).valueOf() <= inputMs &&\n inputMs <= this.clone().endOf(units).valueOf()\n );\n }\n }\n\n function isSameOrAfter(input, units) {\n return this.isSame(input, units) || this.isAfter(input, units);\n }\n\n function isSameOrBefore(input, units) {\n return this.isSame(input, units) || this.isBefore(input, units);\n }\n\n function diff(input, units, asFloat) {\n var that, zoneDelta, output;\n\n if (!this.isValid()) {\n return NaN;\n }\n\n that = cloneWithOffset(input, this);\n\n if (!that.isValid()) {\n return NaN;\n }\n\n zoneDelta = (that.utcOffset() - this.utcOffset()) * 6e4;\n\n units = normalizeUnits(units);\n\n switch (units) {\n case 'year':\n output = monthDiff(this, that) / 12;\n break;\n case 'month':\n output = monthDiff(this, that);\n break;\n case 'quarter':\n output = monthDiff(this, that) / 3;\n break;\n case 'second':\n output = (this - that) / 1e3;\n break; // 1000\n case 'minute':\n output = (this - that) / 6e4;\n break; // 1000 * 60\n case 'hour':\n output = (this - that) / 36e5;\n break; // 1000 * 60 * 60\n case 'day':\n output = (this - that - zoneDelta) / 864e5;\n break; // 1000 * 60 * 60 * 24, negate dst\n case 'week':\n output = (this - that - zoneDelta) / 6048e5;\n break; // 1000 * 60 * 60 * 24 * 7, negate dst\n default:\n output = this - that;\n }\n\n return asFloat ? output : absFloor(output);\n }\n\n function monthDiff(a, b) {\n if (a.date() < b.date()) {\n // end-of-month calculations work correct when the start month has more\n // days than the end month.\n return -monthDiff(b, a);\n }\n // difference in months\n var wholeMonthDiff = (b.year() - a.year()) * 12 + (b.month() - a.month()),\n // b is in (anchor - 1 month, anchor + 1 month)\n anchor = a.clone().add(wholeMonthDiff, 'months'),\n anchor2,\n adjust;\n\n if (b - anchor < 0) {\n anchor2 = a.clone().add(wholeMonthDiff - 1, 'months');\n // linear across the month\n adjust = (b - anchor) / (anchor - anchor2);\n } else {\n anchor2 = a.clone().add(wholeMonthDiff + 1, 'months');\n // linear across the month\n adjust = (b - anchor) / (anchor2 - anchor);\n }\n\n //check for negative zero, return zero if negative zero\n return -(wholeMonthDiff + adjust) || 0;\n }\n\n hooks.defaultFormat = 'YYYY-MM-DDTHH:mm:ssZ';\n hooks.defaultFormatUtc = 'YYYY-MM-DDTHH:mm:ss[Z]';\n\n function toString() {\n return this.clone().locale('en').format('ddd MMM DD YYYY HH:mm:ss [GMT]ZZ');\n }\n\n function toISOString(keepOffset) {\n if (!this.isValid()) {\n return null;\n }\n var utc = keepOffset !== true,\n m = utc ? this.clone().utc() : this;\n if (m.year() < 0 || m.year() > 9999) {\n return formatMoment(\n m,\n utc\n ? 'YYYYYY-MM-DD[T]HH:mm:ss.SSS[Z]'\n : 'YYYYYY-MM-DD[T]HH:mm:ss.SSSZ'\n );\n }\n if (isFunction(Date.prototype.toISOString)) {\n // native implementation is ~50x faster, use it when we can\n if (utc) {\n return this.toDate().toISOString();\n } else {\n return new Date(this.valueOf() + this.utcOffset() * 60 * 1000)\n .toISOString()\n .replace('Z', formatMoment(m, 'Z'));\n }\n }\n return formatMoment(\n m,\n utc ? 'YYYY-MM-DD[T]HH:mm:ss.SSS[Z]' : 'YYYY-MM-DD[T]HH:mm:ss.SSSZ'\n );\n }\n\n /**\n * Return a human readable representation of a moment that can\n * also be evaluated to get a new moment which is the same\n *\n * @link https://nodejs.org/dist/latest/docs/api/util.html#util_custom_inspect_function_on_objects\n */\n function inspect() {\n if (!this.isValid()) {\n return 'moment.invalid(/* ' + this._i + ' */)';\n }\n var func = 'moment',\n zone = '',\n prefix,\n year,\n datetime,\n suffix;\n if (!this.isLocal()) {\n func = this.utcOffset() === 0 ? 'moment.utc' : 'moment.parseZone';\n zone = 'Z';\n }\n prefix = '[' + func + '(\"]';\n year = 0 <= this.year() && this.year() <= 9999 ? 'YYYY' : 'YYYYYY';\n datetime = '-MM-DD[T]HH:mm:ss.SSS';\n suffix = zone + '[\")]';\n\n return this.format(prefix + year + datetime + suffix);\n }\n\n function format(inputString) {\n if (!inputString) {\n inputString = this.isUtc()\n ? hooks.defaultFormatUtc\n : hooks.defaultFormat;\n }\n var output = formatMoment(this, inputString);\n return this.localeData().postformat(output);\n }\n\n function from(time, withoutSuffix) {\n if (\n this.isValid() &&\n ((isMoment(time) && time.isValid()) || createLocal(time).isValid())\n ) {\n return createDuration({ to: this, from: time })\n .locale(this.locale())\n .humanize(!withoutSuffix);\n } else {\n return this.localeData().invalidDate();\n }\n }\n\n function fromNow(withoutSuffix) {\n return this.from(createLocal(), withoutSuffix);\n }\n\n function to(time, withoutSuffix) {\n if (\n this.isValid() &&\n ((isMoment(time) && time.isValid()) || createLocal(time).isValid())\n ) {\n return createDuration({ from: this, to: time })\n .locale(this.locale())\n .humanize(!withoutSuffix);\n } else {\n return this.localeData().invalidDate();\n }\n }\n\n function toNow(withoutSuffix) {\n return this.to(createLocal(), withoutSuffix);\n }\n\n // If passed a locale key, it will set the locale for this\n // instance. Otherwise, it will return the locale configuration\n // variables for this instance.\n function locale(key) {\n var newLocaleData;\n\n if (key === undefined) {\n return this._locale._abbr;\n } else {\n newLocaleData = getLocale(key);\n if (newLocaleData != null) {\n this._locale = newLocaleData;\n }\n return this;\n }\n }\n\n var lang = deprecate(\n 'moment().lang() is deprecated. Instead, use moment().localeData() to get the language configuration. Use moment().locale() to change languages.',\n function (key) {\n if (key === undefined) {\n return this.localeData();\n } else {\n return this.locale(key);\n }\n }\n );\n\n function localeData() {\n return this._locale;\n }\n\n var MS_PER_SECOND = 1000,\n MS_PER_MINUTE = 60 * MS_PER_SECOND,\n MS_PER_HOUR = 60 * MS_PER_MINUTE,\n MS_PER_400_YEARS = (365 * 400 + 97) * 24 * MS_PER_HOUR;\n\n // actual modulo - handles negative numbers (for dates before 1970):\n function mod$1(dividend, divisor) {\n return ((dividend % divisor) + divisor) % divisor;\n }\n\n function localStartOfDate(y, m, d) {\n // the date constructor remaps years 0-99 to 1900-1999\n if (y < 100 && y >= 0) {\n // preserve leap years using a full 400 year cycle, then reset\n return new Date(y + 400, m, d) - MS_PER_400_YEARS;\n } else {\n return new Date(y, m, d).valueOf();\n }\n }\n\n function utcStartOfDate(y, m, d) {\n // Date.UTC remaps years 0-99 to 1900-1999\n if (y < 100 && y >= 0) {\n // preserve leap years using a full 400 year cycle, then reset\n return Date.UTC(y + 400, m, d) - MS_PER_400_YEARS;\n } else {\n return Date.UTC(y, m, d);\n }\n }\n\n function startOf(units) {\n var time, startOfDate;\n units = normalizeUnits(units);\n if (units === undefined || units === 'millisecond' || !this.isValid()) {\n return this;\n }\n\n startOfDate = this._isUTC ? utcStartOfDate : localStartOfDate;\n\n switch (units) {\n case 'year':\n time = startOfDate(this.year(), 0, 1);\n break;\n case 'quarter':\n time = startOfDate(\n this.year(),\n this.month() - (this.month() % 3),\n 1\n );\n break;\n case 'month':\n time = startOfDate(this.year(), this.month(), 1);\n break;\n case 'week':\n time = startOfDate(\n this.year(),\n this.month(),\n this.date() - this.weekday()\n );\n break;\n case 'isoWeek':\n time = startOfDate(\n this.year(),\n this.month(),\n this.date() - (this.isoWeekday() - 1)\n );\n break;\n case 'day':\n case 'date':\n time = startOfDate(this.year(), this.month(), this.date());\n break;\n case 'hour':\n time = this._d.valueOf();\n time -= mod$1(\n time + (this._isUTC ? 0 : this.utcOffset() * MS_PER_MINUTE),\n MS_PER_HOUR\n );\n break;\n case 'minute':\n time = this._d.valueOf();\n time -= mod$1(time, MS_PER_MINUTE);\n break;\n case 'second':\n time = this._d.valueOf();\n time -= mod$1(time, MS_PER_SECOND);\n break;\n }\n\n this._d.setTime(time);\n hooks.updateOffset(this, true);\n return this;\n }\n\n function endOf(units) {\n var time, startOfDate;\n units = normalizeUnits(units);\n if (units === undefined || units === 'millisecond' || !this.isValid()) {\n return this;\n }\n\n startOfDate = this._isUTC ? utcStartOfDate : localStartOfDate;\n\n switch (units) {\n case 'year':\n time = startOfDate(this.year() + 1, 0, 1) - 1;\n break;\n case 'quarter':\n time =\n startOfDate(\n this.year(),\n this.month() - (this.month() % 3) + 3,\n 1\n ) - 1;\n break;\n case 'month':\n time = startOfDate(this.year(), this.month() + 1, 1) - 1;\n break;\n case 'week':\n time =\n startOfDate(\n this.year(),\n this.month(),\n this.date() - this.weekday() + 7\n ) - 1;\n break;\n case 'isoWeek':\n time =\n startOfDate(\n this.year(),\n this.month(),\n this.date() - (this.isoWeekday() - 1) + 7\n ) - 1;\n break;\n case 'day':\n case 'date':\n time = startOfDate(this.year(), this.month(), this.date() + 1) - 1;\n break;\n case 'hour':\n time = this._d.valueOf();\n time +=\n MS_PER_HOUR -\n mod$1(\n time + (this._isUTC ? 0 : this.utcOffset() * MS_PER_MINUTE),\n MS_PER_HOUR\n ) -\n 1;\n break;\n case 'minute':\n time = this._d.valueOf();\n time += MS_PER_MINUTE - mod$1(time, MS_PER_MINUTE) - 1;\n break;\n case 'second':\n time = this._d.valueOf();\n time += MS_PER_SECOND - mod$1(time, MS_PER_SECOND) - 1;\n break;\n }\n\n this._d.setTime(time);\n hooks.updateOffset(this, true);\n return this;\n }\n\n function valueOf() {\n return this._d.valueOf() - (this._offset || 0) * 60000;\n }\n\n function unix() {\n return Math.floor(this.valueOf() / 1000);\n }\n\n function toDate() {\n return new Date(this.valueOf());\n }\n\n function toArray() {\n var m = this;\n return [\n m.year(),\n m.month(),\n m.date(),\n m.hour(),\n m.minute(),\n m.second(),\n m.millisecond(),\n ];\n }\n\n function toObject() {\n var m = this;\n return {\n years: m.year(),\n months: m.month(),\n date: m.date(),\n hours: m.hours(),\n minutes: m.minutes(),\n seconds: m.seconds(),\n milliseconds: m.milliseconds(),\n };\n }\n\n function toJSON() {\n // new Date(NaN).toJSON() === null\n return this.isValid() ? this.toISOString() : null;\n }\n\n function isValid$2() {\n return isValid(this);\n }\n\n function parsingFlags() {\n return extend({}, getParsingFlags(this));\n }\n\n function invalidAt() {\n return getParsingFlags(this).overflow;\n }\n\n function creationData() {\n return {\n input: this._i,\n format: this._f,\n locale: this._locale,\n isUTC: this._isUTC,\n strict: this._strict,\n };\n }\n\n addFormatToken('N', 0, 0, 'eraAbbr');\n addFormatToken('NN', 0, 0, 'eraAbbr');\n addFormatToken('NNN', 0, 0, 'eraAbbr');\n addFormatToken('NNNN', 0, 0, 'eraName');\n addFormatToken('NNNNN', 0, 0, 'eraNarrow');\n\n addFormatToken('y', ['y', 1], 'yo', 'eraYear');\n addFormatToken('y', ['yy', 2], 0, 'eraYear');\n addFormatToken('y', ['yyy', 3], 0, 'eraYear');\n addFormatToken('y', ['yyyy', 4], 0, 'eraYear');\n\n addRegexToken('N', matchEraAbbr);\n addRegexToken('NN', matchEraAbbr);\n addRegexToken('NNN', matchEraAbbr);\n addRegexToken('NNNN', matchEraName);\n addRegexToken('NNNNN', matchEraNarrow);\n\n addParseToken(['N', 'NN', 'NNN', 'NNNN', 'NNNNN'], function (\n input,\n array,\n config,\n token\n ) {\n var era = config._locale.erasParse(input, token, config._strict);\n if (era) {\n getParsingFlags(config).era = era;\n } else {\n getParsingFlags(config).invalidEra = input;\n }\n });\n\n addRegexToken('y', matchUnsigned);\n addRegexToken('yy', matchUnsigned);\n addRegexToken('yyy', matchUnsigned);\n addRegexToken('yyyy', matchUnsigned);\n addRegexToken('yo', matchEraYearOrdinal);\n\n addParseToken(['y', 'yy', 'yyy', 'yyyy'], YEAR);\n addParseToken(['yo'], function (input, array, config, token) {\n var match;\n if (config._locale._eraYearOrdinalRegex) {\n match = input.match(config._locale._eraYearOrdinalRegex);\n }\n\n if (config._locale.eraYearOrdinalParse) {\n array[YEAR] = config._locale.eraYearOrdinalParse(input, match);\n } else {\n array[YEAR] = parseInt(input, 10);\n }\n });\n\n function localeEras(m, format) {\n var i,\n l,\n date,\n eras = this._eras || getLocale('en')._eras;\n for (i = 0, l = eras.length; i < l; ++i) {\n switch (typeof eras[i].since) {\n case 'string':\n // truncate time\n date = hooks(eras[i].since).startOf('day');\n eras[i].since = date.valueOf();\n break;\n }\n\n switch (typeof eras[i].until) {\n case 'undefined':\n eras[i].until = +Infinity;\n break;\n case 'string':\n // truncate time\n date = hooks(eras[i].until).startOf('day').valueOf();\n eras[i].until = date.valueOf();\n break;\n }\n }\n return eras;\n }\n\n function localeErasParse(eraName, format, strict) {\n var i,\n l,\n eras = this.eras(),\n name,\n abbr,\n narrow;\n eraName = eraName.toUpperCase();\n\n for (i = 0, l = eras.length; i < l; ++i) {\n name = eras[i].name.toUpperCase();\n abbr = eras[i].abbr.toUpperCase();\n narrow = eras[i].narrow.toUpperCase();\n\n if (strict) {\n switch (format) {\n case 'N':\n case 'NN':\n case 'NNN':\n if (abbr === eraName) {\n return eras[i];\n }\n break;\n\n case 'NNNN':\n if (name === eraName) {\n return eras[i];\n }\n break;\n\n case 'NNNNN':\n if (narrow === eraName) {\n return eras[i];\n }\n break;\n }\n } else if ([name, abbr, narrow].indexOf(eraName) >= 0) {\n return eras[i];\n }\n }\n }\n\n function localeErasConvertYear(era, year) {\n var dir = era.since <= era.until ? +1 : -1;\n if (year === undefined) {\n return hooks(era.since).year();\n } else {\n return hooks(era.since).year() + (year - era.offset) * dir;\n }\n }\n\n function getEraName() {\n var i,\n l,\n val,\n eras = this.localeData().eras();\n for (i = 0, l = eras.length; i < l; ++i) {\n // truncate time\n val = this.clone().startOf('day').valueOf();\n\n if (eras[i].since <= val && val <= eras[i].until) {\n return eras[i].name;\n }\n if (eras[i].until <= val && val <= eras[i].since) {\n return eras[i].name;\n }\n }\n\n return '';\n }\n\n function getEraNarrow() {\n var i,\n l,\n val,\n eras = this.localeData().eras();\n for (i = 0, l = eras.length; i < l; ++i) {\n // truncate time\n val = this.clone().startOf('day').valueOf();\n\n if (eras[i].since <= val && val <= eras[i].until) {\n return eras[i].narrow;\n }\n if (eras[i].until <= val && val <= eras[i].since) {\n return eras[i].narrow;\n }\n }\n\n return '';\n }\n\n function getEraAbbr() {\n var i,\n l,\n val,\n eras = this.localeData().eras();\n for (i = 0, l = eras.length; i < l; ++i) {\n // truncate time\n val = this.clone().startOf('day').valueOf();\n\n if (eras[i].since <= val && val <= eras[i].until) {\n return eras[i].abbr;\n }\n if (eras[i].until <= val && val <= eras[i].since) {\n return eras[i].abbr;\n }\n }\n\n return '';\n }\n\n function getEraYear() {\n var i,\n l,\n dir,\n val,\n eras = this.localeData().eras();\n for (i = 0, l = eras.length; i < l; ++i) {\n dir = eras[i].since <= eras[i].until ? +1 : -1;\n\n // truncate time\n val = this.clone().startOf('day').valueOf();\n\n if (\n (eras[i].since <= val && val <= eras[i].until) ||\n (eras[i].until <= val && val <= eras[i].since)\n ) {\n return (\n (this.year() - hooks(eras[i].since).year()) * dir +\n eras[i].offset\n );\n }\n }\n\n return this.year();\n }\n\n function erasNameRegex(isStrict) {\n if (!hasOwnProp(this, '_erasNameRegex')) {\n computeErasParse.call(this);\n }\n return isStrict ? this._erasNameRegex : this._erasRegex;\n }\n\n function erasAbbrRegex(isStrict) {\n if (!hasOwnProp(this, '_erasAbbrRegex')) {\n computeErasParse.call(this);\n }\n return isStrict ? this._erasAbbrRegex : this._erasRegex;\n }\n\n function erasNarrowRegex(isStrict) {\n if (!hasOwnProp(this, '_erasNarrowRegex')) {\n computeErasParse.call(this);\n }\n return isStrict ? this._erasNarrowRegex : this._erasRegex;\n }\n\n function matchEraAbbr(isStrict, locale) {\n return locale.erasAbbrRegex(isStrict);\n }\n\n function matchEraName(isStrict, locale) {\n return locale.erasNameRegex(isStrict);\n }\n\n function matchEraNarrow(isStrict, locale) {\n return locale.erasNarrowRegex(isStrict);\n }\n\n function matchEraYearOrdinal(isStrict, locale) {\n return locale._eraYearOrdinalRegex || matchUnsigned;\n }\n\n function computeErasParse() {\n var abbrPieces = [],\n namePieces = [],\n narrowPieces = [],\n mixedPieces = [],\n i,\n l,\n eras = this.eras();\n\n for (i = 0, l = eras.length; i < l; ++i) {\n namePieces.push(regexEscape(eras[i].name));\n abbrPieces.push(regexEscape(eras[i].abbr));\n narrowPieces.push(regexEscape(eras[i].narrow));\n\n mixedPieces.push(regexEscape(eras[i].name));\n mixedPieces.push(regexEscape(eras[i].abbr));\n mixedPieces.push(regexEscape(eras[i].narrow));\n }\n\n this._erasRegex = new RegExp('^(' + mixedPieces.join('|') + ')', 'i');\n this._erasNameRegex = new RegExp('^(' + namePieces.join('|') + ')', 'i');\n this._erasAbbrRegex = new RegExp('^(' + abbrPieces.join('|') + ')', 'i');\n this._erasNarrowRegex = new RegExp(\n '^(' + narrowPieces.join('|') + ')',\n 'i'\n );\n }\n\n // FORMATTING\n\n addFormatToken(0, ['gg', 2], 0, function () {\n return this.weekYear() % 100;\n });\n\n addFormatToken(0, ['GG', 2], 0, function () {\n return this.isoWeekYear() % 100;\n });\n\n function addWeekYearFormatToken(token, getter) {\n addFormatToken(0, [token, token.length], 0, getter);\n }\n\n addWeekYearFormatToken('gggg', 'weekYear');\n addWeekYearFormatToken('ggggg', 'weekYear');\n addWeekYearFormatToken('GGGG', 'isoWeekYear');\n addWeekYearFormatToken('GGGGG', 'isoWeekYear');\n\n // ALIASES\n\n addUnitAlias('weekYear', 'gg');\n addUnitAlias('isoWeekYear', 'GG');\n\n // PRIORITY\n\n addUnitPriority('weekYear', 1);\n addUnitPriority('isoWeekYear', 1);\n\n // PARSING\n\n addRegexToken('G', matchSigned);\n addRegexToken('g', matchSigned);\n addRegexToken('GG', match1to2, match2);\n addRegexToken('gg', match1to2, match2);\n addRegexToken('GGGG', match1to4, match4);\n addRegexToken('gggg', match1to4, match4);\n addRegexToken('GGGGG', match1to6, match6);\n addRegexToken('ggggg', match1to6, match6);\n\n addWeekParseToken(['gggg', 'ggggg', 'GGGG', 'GGGGG'], function (\n input,\n week,\n config,\n token\n ) {\n week[token.substr(0, 2)] = toInt(input);\n });\n\n addWeekParseToken(['gg', 'GG'], function (input, week, config, token) {\n week[token] = hooks.parseTwoDigitYear(input);\n });\n\n // MOMENTS\n\n function getSetWeekYear(input) {\n return getSetWeekYearHelper.call(\n this,\n input,\n this.week(),\n this.weekday(),\n this.localeData()._week.dow,\n this.localeData()._week.doy\n );\n }\n\n function getSetISOWeekYear(input) {\n return getSetWeekYearHelper.call(\n this,\n input,\n this.isoWeek(),\n this.isoWeekday(),\n 1,\n 4\n );\n }\n\n function getISOWeeksInYear() {\n return weeksInYear(this.year(), 1, 4);\n }\n\n function getISOWeeksInISOWeekYear() {\n return weeksInYear(this.isoWeekYear(), 1, 4);\n }\n\n function getWeeksInYear() {\n var weekInfo = this.localeData()._week;\n return weeksInYear(this.year(), weekInfo.dow, weekInfo.doy);\n }\n\n function getWeeksInWeekYear() {\n var weekInfo = this.localeData()._week;\n return weeksInYear(this.weekYear(), weekInfo.dow, weekInfo.doy);\n }\n\n function getSetWeekYearHelper(input, week, weekday, dow, doy) {\n var weeksTarget;\n if (input == null) {\n return weekOfYear(this, dow, doy).year;\n } else {\n weeksTarget = weeksInYear(input, dow, doy);\n if (week > weeksTarget) {\n week = weeksTarget;\n }\n return setWeekAll.call(this, input, week, weekday, dow, doy);\n }\n }\n\n function setWeekAll(weekYear, week, weekday, dow, doy) {\n var dayOfYearData = dayOfYearFromWeeks(weekYear, week, weekday, dow, doy),\n date = createUTCDate(dayOfYearData.year, 0, dayOfYearData.dayOfYear);\n\n this.year(date.getUTCFullYear());\n this.month(date.getUTCMonth());\n this.date(date.getUTCDate());\n return this;\n }\n\n // FORMATTING\n\n addFormatToken('Q', 0, 'Qo', 'quarter');\n\n // ALIASES\n\n addUnitAlias('quarter', 'Q');\n\n // PRIORITY\n\n addUnitPriority('quarter', 7);\n\n // PARSING\n\n addRegexToken('Q', match1);\n addParseToken('Q', function (input, array) {\n array[MONTH] = (toInt(input) - 1) * 3;\n });\n\n // MOMENTS\n\n function getSetQuarter(input) {\n return input == null\n ? Math.ceil((this.month() + 1) / 3)\n : this.month((input - 1) * 3 + (this.month() % 3));\n }\n\n // FORMATTING\n\n addFormatToken('D', ['DD', 2], 'Do', 'date');\n\n // ALIASES\n\n addUnitAlias('date', 'D');\n\n // PRIORITY\n addUnitPriority('date', 9);\n\n // PARSING\n\n addRegexToken('D', match1to2);\n addRegexToken('DD', match1to2, match2);\n addRegexToken('Do', function (isStrict, locale) {\n // TODO: Remove \"ordinalParse\" fallback in next major release.\n return isStrict\n ? locale._dayOfMonthOrdinalParse || locale._ordinalParse\n : locale._dayOfMonthOrdinalParseLenient;\n });\n\n addParseToken(['D', 'DD'], DATE);\n addParseToken('Do', function (input, array) {\n array[DATE] = toInt(input.match(match1to2)[0]);\n });\n\n // MOMENTS\n\n var getSetDayOfMonth = makeGetSet('Date', true);\n\n // FORMATTING\n\n addFormatToken('DDD', ['DDDD', 3], 'DDDo', 'dayOfYear');\n\n // ALIASES\n\n addUnitAlias('dayOfYear', 'DDD');\n\n // PRIORITY\n addUnitPriority('dayOfYear', 4);\n\n // PARSING\n\n addRegexToken('DDD', match1to3);\n addRegexToken('DDDD', match3);\n addParseToken(['DDD', 'DDDD'], function (input, array, config) {\n config._dayOfYear = toInt(input);\n });\n\n // HELPERS\n\n // MOMENTS\n\n function getSetDayOfYear(input) {\n var dayOfYear =\n Math.round(\n (this.clone().startOf('day') - this.clone().startOf('year')) / 864e5\n ) + 1;\n return input == null ? dayOfYear : this.add(input - dayOfYear, 'd');\n }\n\n // FORMATTING\n\n addFormatToken('m', ['mm', 2], 0, 'minute');\n\n // ALIASES\n\n addUnitAlias('minute', 'm');\n\n // PRIORITY\n\n addUnitPriority('minute', 14);\n\n // PARSING\n\n addRegexToken('m', match1to2);\n addRegexToken('mm', match1to2, match2);\n addParseToken(['m', 'mm'], MINUTE);\n\n // MOMENTS\n\n var getSetMinute = makeGetSet('Minutes', false);\n\n // FORMATTING\n\n addFormatToken('s', ['ss', 2], 0, 'second');\n\n // ALIASES\n\n addUnitAlias('second', 's');\n\n // PRIORITY\n\n addUnitPriority('second', 15);\n\n // PARSING\n\n addRegexToken('s', match1to2);\n addRegexToken('ss', match1to2, match2);\n addParseToken(['s', 'ss'], SECOND);\n\n // MOMENTS\n\n var getSetSecond = makeGetSet('Seconds', false);\n\n // FORMATTING\n\n addFormatToken('S', 0, 0, function () {\n return ~~(this.millisecond() / 100);\n });\n\n addFormatToken(0, ['SS', 2], 0, function () {\n return ~~(this.millisecond() / 10);\n });\n\n addFormatToken(0, ['SSS', 3], 0, 'millisecond');\n addFormatToken(0, ['SSSS', 4], 0, function () {\n return this.millisecond() * 10;\n });\n addFormatToken(0, ['SSSSS', 5], 0, function () {\n return this.millisecond() * 100;\n });\n addFormatToken(0, ['SSSSSS', 6], 0, function () {\n return this.millisecond() * 1000;\n });\n addFormatToken(0, ['SSSSSSS', 7], 0, function () {\n return this.millisecond() * 10000;\n });\n addFormatToken(0, ['SSSSSSSS', 8], 0, function () {\n return this.millisecond() * 100000;\n });\n addFormatToken(0, ['SSSSSSSSS', 9], 0, function () {\n return this.millisecond() * 1000000;\n });\n\n // ALIASES\n\n addUnitAlias('millisecond', 'ms');\n\n // PRIORITY\n\n addUnitPriority('millisecond', 16);\n\n // PARSING\n\n addRegexToken('S', match1to3, match1);\n addRegexToken('SS', match1to3, match2);\n addRegexToken('SSS', match1to3, match3);\n\n var token, getSetMillisecond;\n for (token = 'SSSS'; token.length <= 9; token += 'S') {\n addRegexToken(token, matchUnsigned);\n }\n\n function parseMs(input, array) {\n array[MILLISECOND] = toInt(('0.' + input) * 1000);\n }\n\n for (token = 'S'; token.length <= 9; token += 'S') {\n addParseToken(token, parseMs);\n }\n\n getSetMillisecond = makeGetSet('Milliseconds', false);\n\n // FORMATTING\n\n addFormatToken('z', 0, 0, 'zoneAbbr');\n addFormatToken('zz', 0, 0, 'zoneName');\n\n // MOMENTS\n\n function getZoneAbbr() {\n return this._isUTC ? 'UTC' : '';\n }\n\n function getZoneName() {\n return this._isUTC ? 'Coordinated Universal Time' : '';\n }\n\n var proto = Moment.prototype;\n\n proto.add = add;\n proto.calendar = calendar$1;\n proto.clone = clone;\n proto.diff = diff;\n proto.endOf = endOf;\n proto.format = format;\n proto.from = from;\n proto.fromNow = fromNow;\n proto.to = to;\n proto.toNow = toNow;\n proto.get = stringGet;\n proto.invalidAt = invalidAt;\n proto.isAfter = isAfter;\n proto.isBefore = isBefore;\n proto.isBetween = isBetween;\n proto.isSame = isSame;\n proto.isSameOrAfter = isSameOrAfter;\n proto.isSameOrBefore = isSameOrBefore;\n proto.isValid = isValid$2;\n proto.lang = lang;\n proto.locale = locale;\n proto.localeData = localeData;\n proto.max = prototypeMax;\n proto.min = prototypeMin;\n proto.parsingFlags = parsingFlags;\n proto.set = stringSet;\n proto.startOf = startOf;\n proto.subtract = subtract;\n proto.toArray = toArray;\n proto.toObject = toObject;\n proto.toDate = toDate;\n proto.toISOString = toISOString;\n proto.inspect = inspect;\n if (typeof Symbol !== 'undefined' && Symbol.for != null) {\n proto[Symbol.for('nodejs.util.inspect.custom')] = function () {\n return 'Moment<' + this.format() + '>';\n };\n }\n proto.toJSON = toJSON;\n proto.toString = toString;\n proto.unix = unix;\n proto.valueOf = valueOf;\n proto.creationData = creationData;\n proto.eraName = getEraName;\n proto.eraNarrow = getEraNarrow;\n proto.eraAbbr = getEraAbbr;\n proto.eraYear = getEraYear;\n proto.year = getSetYear;\n proto.isLeapYear = getIsLeapYear;\n proto.weekYear = getSetWeekYear;\n proto.isoWeekYear = getSetISOWeekYear;\n proto.quarter = proto.quarters = getSetQuarter;\n proto.month = getSetMonth;\n proto.daysInMonth = getDaysInMonth;\n proto.week = proto.weeks = getSetWeek;\n proto.isoWeek = proto.isoWeeks = getSetISOWeek;\n proto.weeksInYear = getWeeksInYear;\n proto.weeksInWeekYear = getWeeksInWeekYear;\n proto.isoWeeksInYear = getISOWeeksInYear;\n proto.isoWeeksInISOWeekYear = getISOWeeksInISOWeekYear;\n proto.date = getSetDayOfMonth;\n proto.day = proto.days = getSetDayOfWeek;\n proto.weekday = getSetLocaleDayOfWeek;\n proto.isoWeekday = getSetISODayOfWeek;\n proto.dayOfYear = getSetDayOfYear;\n proto.hour = proto.hours = getSetHour;\n proto.minute = proto.minutes = getSetMinute;\n proto.second = proto.seconds = getSetSecond;\n proto.millisecond = proto.milliseconds = getSetMillisecond;\n proto.utcOffset = getSetOffset;\n proto.utc = setOffsetToUTC;\n proto.local = setOffsetToLocal;\n proto.parseZone = setOffsetToParsedOffset;\n proto.hasAlignedHourOffset = hasAlignedHourOffset;\n proto.isDST = isDaylightSavingTime;\n proto.isLocal = isLocal;\n proto.isUtcOffset = isUtcOffset;\n proto.isUtc = isUtc;\n proto.isUTC = isUtc;\n proto.zoneAbbr = getZoneAbbr;\n proto.zoneName = getZoneName;\n proto.dates = deprecate(\n 'dates accessor is deprecated. Use date instead.',\n getSetDayOfMonth\n );\n proto.months = deprecate(\n 'months accessor is deprecated. Use month instead',\n getSetMonth\n );\n proto.years = deprecate(\n 'years accessor is deprecated. Use year instead',\n getSetYear\n );\n proto.zone = deprecate(\n 'moment().zone is deprecated, use moment().utcOffset instead. http://momentjs.com/guides/#/warnings/zone/',\n getSetZone\n );\n proto.isDSTShifted = deprecate(\n 'isDSTShifted is deprecated. See http://momentjs.com/guides/#/warnings/dst-shifted/ for more information',\n isDaylightSavingTimeShifted\n );\n\n function createUnix(input) {\n return createLocal(input * 1000);\n }\n\n function createInZone() {\n return createLocal.apply(null, arguments).parseZone();\n }\n\n function preParsePostFormat(string) {\n return string;\n }\n\n var proto$1 = Locale.prototype;\n\n proto$1.calendar = calendar;\n proto$1.longDateFormat = longDateFormat;\n proto$1.invalidDate = invalidDate;\n proto$1.ordinal = ordinal;\n proto$1.preparse = preParsePostFormat;\n proto$1.postformat = preParsePostFormat;\n proto$1.relativeTime = relativeTime;\n proto$1.pastFuture = pastFuture;\n proto$1.set = set;\n proto$1.eras = localeEras;\n proto$1.erasParse = localeErasParse;\n proto$1.erasConvertYear = localeErasConvertYear;\n proto$1.erasAbbrRegex = erasAbbrRegex;\n proto$1.erasNameRegex = erasNameRegex;\n proto$1.erasNarrowRegex = erasNarrowRegex;\n\n proto$1.months = localeMonths;\n proto$1.monthsShort = localeMonthsShort;\n proto$1.monthsParse = localeMonthsParse;\n proto$1.monthsRegex = monthsRegex;\n proto$1.monthsShortRegex = monthsShortRegex;\n proto$1.week = localeWeek;\n proto$1.firstDayOfYear = localeFirstDayOfYear;\n proto$1.firstDayOfWeek = localeFirstDayOfWeek;\n\n proto$1.weekdays = localeWeekdays;\n proto$1.weekdaysMin = localeWeekdaysMin;\n proto$1.weekdaysShort = localeWeekdaysShort;\n proto$1.weekdaysParse = localeWeekdaysParse;\n\n proto$1.weekdaysRegex = weekdaysRegex;\n proto$1.weekdaysShortRegex = weekdaysShortRegex;\n proto$1.weekdaysMinRegex = weekdaysMinRegex;\n\n proto$1.isPM = localeIsPM;\n proto$1.meridiem = localeMeridiem;\n\n function get$1(format, index, field, setter) {\n var locale = getLocale(),\n utc = createUTC().set(setter, index);\n return locale[field](utc, format);\n }\n\n function listMonthsImpl(format, index, field) {\n if (isNumber(format)) {\n index = format;\n format = undefined;\n }\n\n format = format || '';\n\n if (index != null) {\n return get$1(format, index, field, 'month');\n }\n\n var i,\n out = [];\n for (i = 0; i < 12; i++) {\n out[i] = get$1(format, i, field, 'month');\n }\n return out;\n }\n\n // ()\n // (5)\n // (fmt, 5)\n // (fmt)\n // (true)\n // (true, 5)\n // (true, fmt, 5)\n // (true, fmt)\n function listWeekdaysImpl(localeSorted, format, index, field) {\n if (typeof localeSorted === 'boolean') {\n if (isNumber(format)) {\n index = format;\n format = undefined;\n }\n\n format = format || '';\n } else {\n format = localeSorted;\n index = format;\n localeSorted = false;\n\n if (isNumber(format)) {\n index = format;\n format = undefined;\n }\n\n format = format || '';\n }\n\n var locale = getLocale(),\n shift = localeSorted ? locale._week.dow : 0,\n i,\n out = [];\n\n if (index != null) {\n return get$1(format, (index + shift) % 7, field, 'day');\n }\n\n for (i = 0; i < 7; i++) {\n out[i] = get$1(format, (i + shift) % 7, field, 'day');\n }\n return out;\n }\n\n function listMonths(format, index) {\n return listMonthsImpl(format, index, 'months');\n }\n\n function listMonthsShort(format, index) {\n return listMonthsImpl(format, index, 'monthsShort');\n }\n\n function listWeekdays(localeSorted, format, index) {\n return listWeekdaysImpl(localeSorted, format, index, 'weekdays');\n }\n\n function listWeekdaysShort(localeSorted, format, index) {\n return listWeekdaysImpl(localeSorted, format, index, 'weekdaysShort');\n }\n\n function listWeekdaysMin(localeSorted, format, index) {\n return listWeekdaysImpl(localeSorted, format, index, 'weekdaysMin');\n }\n\n getSetGlobalLocale('en', {\n eras: [\n {\n since: '0001-01-01',\n until: +Infinity,\n offset: 1,\n name: 'Anno Domini',\n narrow: 'AD',\n abbr: 'AD',\n },\n {\n since: '0000-12-31',\n until: -Infinity,\n offset: 1,\n name: 'Before Christ',\n narrow: 'BC',\n abbr: 'BC',\n },\n ],\n dayOfMonthOrdinalParse: /\\d{1,2}(th|st|nd|rd)/,\n ordinal: function (number) {\n var b = number % 10,\n output =\n toInt((number % 100) / 10) === 1\n ? 'th'\n : b === 1\n ? 'st'\n : b === 2\n ? 'nd'\n : b === 3\n ? 'rd'\n : 'th';\n return number + output;\n },\n });\n\n // Side effect imports\n\n hooks.lang = deprecate(\n 'moment.lang is deprecated. Use moment.locale instead.',\n getSetGlobalLocale\n );\n hooks.langData = deprecate(\n 'moment.langData is deprecated. Use moment.localeData instead.',\n getLocale\n );\n\n var mathAbs = Math.abs;\n\n function abs() {\n var data = this._data;\n\n this._milliseconds = mathAbs(this._milliseconds);\n this._days = mathAbs(this._days);\n this._months = mathAbs(this._months);\n\n data.milliseconds = mathAbs(data.milliseconds);\n data.seconds = mathAbs(data.seconds);\n data.minutes = mathAbs(data.minutes);\n data.hours = mathAbs(data.hours);\n data.months = mathAbs(data.months);\n data.years = mathAbs(data.years);\n\n return this;\n }\n\n function addSubtract$1(duration, input, value, direction) {\n var other = createDuration(input, value);\n\n duration._milliseconds += direction * other._milliseconds;\n duration._days += direction * other._days;\n duration._months += direction * other._months;\n\n return duration._bubble();\n }\n\n // supports only 2.0-style add(1, 's') or add(duration)\n function add$1(input, value) {\n return addSubtract$1(this, input, value, 1);\n }\n\n // supports only 2.0-style subtract(1, 's') or subtract(duration)\n function subtract$1(input, value) {\n return addSubtract$1(this, input, value, -1);\n }\n\n function absCeil(number) {\n if (number < 0) {\n return Math.floor(number);\n } else {\n return Math.ceil(number);\n }\n }\n\n function bubble() {\n var milliseconds = this._milliseconds,\n days = this._days,\n months = this._months,\n data = this._data,\n seconds,\n minutes,\n hours,\n years,\n monthsFromDays;\n\n // if we have a mix of positive and negative values, bubble down first\n // check: https://github.com/moment/moment/issues/2166\n if (\n !(\n (milliseconds >= 0 && days >= 0 && months >= 0) ||\n (milliseconds <= 0 && days <= 0 && months <= 0)\n )\n ) {\n milliseconds += absCeil(monthsToDays(months) + days) * 864e5;\n days = 0;\n months = 0;\n }\n\n // The following code bubbles up values, see the tests for\n // examples of what that means.\n data.milliseconds = milliseconds % 1000;\n\n seconds = absFloor(milliseconds / 1000);\n data.seconds = seconds % 60;\n\n minutes = absFloor(seconds / 60);\n data.minutes = minutes % 60;\n\n hours = absFloor(minutes / 60);\n data.hours = hours % 24;\n\n days += absFloor(hours / 24);\n\n // convert days to months\n monthsFromDays = absFloor(daysToMonths(days));\n months += monthsFromDays;\n days -= absCeil(monthsToDays(monthsFromDays));\n\n // 12 months -> 1 year\n years = absFloor(months / 12);\n months %= 12;\n\n data.days = days;\n data.months = months;\n data.years = years;\n\n return this;\n }\n\n function daysToMonths(days) {\n // 400 years have 146097 days (taking into account leap year rules)\n // 400 years have 12 months === 4800\n return (days * 4800) / 146097;\n }\n\n function monthsToDays(months) {\n // the reverse of daysToMonths\n return (months * 146097) / 4800;\n }\n\n function as(units) {\n if (!this.isValid()) {\n return NaN;\n }\n var days,\n months,\n milliseconds = this._milliseconds;\n\n units = normalizeUnits(units);\n\n if (units === 'month' || units === 'quarter' || units === 'year') {\n days = this._days + milliseconds / 864e5;\n months = this._months + daysToMonths(days);\n switch (units) {\n case 'month':\n return months;\n case 'quarter':\n return months / 3;\n case 'year':\n return months / 12;\n }\n } else {\n // handle milliseconds separately because of floating point math errors (issue #1867)\n days = this._days + Math.round(monthsToDays(this._months));\n switch (units) {\n case 'week':\n return days / 7 + milliseconds / 6048e5;\n case 'day':\n return days + milliseconds / 864e5;\n case 'hour':\n return days * 24 + milliseconds / 36e5;\n case 'minute':\n return days * 1440 + milliseconds / 6e4;\n case 'second':\n return days * 86400 + milliseconds / 1000;\n // Math.floor prevents floating point math errors here\n case 'millisecond':\n return Math.floor(days * 864e5) + milliseconds;\n default:\n throw new Error('Unknown unit ' + units);\n }\n }\n }\n\n // TODO: Use this.as('ms')?\n function valueOf$1() {\n if (!this.isValid()) {\n return NaN;\n }\n return (\n this._milliseconds +\n this._days * 864e5 +\n (this._months % 12) * 2592e6 +\n toInt(this._months / 12) * 31536e6\n );\n }\n\n function makeAs(alias) {\n return function () {\n return this.as(alias);\n };\n }\n\n var asMilliseconds = makeAs('ms'),\n asSeconds = makeAs('s'),\n asMinutes = makeAs('m'),\n asHours = makeAs('h'),\n asDays = makeAs('d'),\n asWeeks = makeAs('w'),\n asMonths = makeAs('M'),\n asQuarters = makeAs('Q'),\n asYears = makeAs('y');\n\n function clone$1() {\n return createDuration(this);\n }\n\n function get$2(units) {\n units = normalizeUnits(units);\n return this.isValid() ? this[units + 's']() : NaN;\n }\n\n function makeGetter(name) {\n return function () {\n return this.isValid() ? this._data[name] : NaN;\n };\n }\n\n var milliseconds = makeGetter('milliseconds'),\n seconds = makeGetter('seconds'),\n minutes = makeGetter('minutes'),\n hours = makeGetter('hours'),\n days = makeGetter('days'),\n months = makeGetter('months'),\n years = makeGetter('years');\n\n function weeks() {\n return absFloor(this.days() / 7);\n }\n\n var round = Math.round,\n thresholds = {\n ss: 44, // a few seconds to seconds\n s: 45, // seconds to minute\n m: 45, // minutes to hour\n h: 22, // hours to day\n d: 26, // days to month/week\n w: null, // weeks to month\n M: 11, // months to year\n };\n\n // helper function for moment.fn.from, moment.fn.fromNow, and moment.duration.fn.humanize\n function substituteTimeAgo(string, number, withoutSuffix, isFuture, locale) {\n return locale.relativeTime(number || 1, !!withoutSuffix, string, isFuture);\n }\n\n function relativeTime$1(posNegDuration, withoutSuffix, thresholds, locale) {\n var duration = createDuration(posNegDuration).abs(),\n seconds = round(duration.as('s')),\n minutes = round(duration.as('m')),\n hours = round(duration.as('h')),\n days = round(duration.as('d')),\n months = round(duration.as('M')),\n weeks = round(duration.as('w')),\n years = round(duration.as('y')),\n a =\n (seconds <= thresholds.ss && ['s', seconds]) ||\n (seconds < thresholds.s && ['ss', seconds]) ||\n (minutes <= 1 && ['m']) ||\n (minutes < thresholds.m && ['mm', minutes]) ||\n (hours <= 1 && ['h']) ||\n (hours < thresholds.h && ['hh', hours]) ||\n (days <= 1 && ['d']) ||\n (days < thresholds.d && ['dd', days]);\n\n if (thresholds.w != null) {\n a =\n a ||\n (weeks <= 1 && ['w']) ||\n (weeks < thresholds.w && ['ww', weeks]);\n }\n a = a ||\n (months <= 1 && ['M']) ||\n (months < thresholds.M && ['MM', months]) ||\n (years <= 1 && ['y']) || ['yy', years];\n\n a[2] = withoutSuffix;\n a[3] = +posNegDuration > 0;\n a[4] = locale;\n return substituteTimeAgo.apply(null, a);\n }\n\n // This function allows you to set the rounding function for relative time strings\n function getSetRelativeTimeRounding(roundingFunction) {\n if (roundingFunction === undefined) {\n return round;\n }\n if (typeof roundingFunction === 'function') {\n round = roundingFunction;\n return true;\n }\n return false;\n }\n\n // This function allows you to set a threshold for relative time strings\n function getSetRelativeTimeThreshold(threshold, limit) {\n if (thresholds[threshold] === undefined) {\n return false;\n }\n if (limit === undefined) {\n return thresholds[threshold];\n }\n thresholds[threshold] = limit;\n if (threshold === 's') {\n thresholds.ss = limit - 1;\n }\n return true;\n }\n\n function humanize(argWithSuffix, argThresholds) {\n if (!this.isValid()) {\n return this.localeData().invalidDate();\n }\n\n var withSuffix = false,\n th = thresholds,\n locale,\n output;\n\n if (typeof argWithSuffix === 'object') {\n argThresholds = argWithSuffix;\n argWithSuffix = false;\n }\n if (typeof argWithSuffix === 'boolean') {\n withSuffix = argWithSuffix;\n }\n if (typeof argThresholds === 'object') {\n th = Object.assign({}, thresholds, argThresholds);\n if (argThresholds.s != null && argThresholds.ss == null) {\n th.ss = argThresholds.s - 1;\n }\n }\n\n locale = this.localeData();\n output = relativeTime$1(this, !withSuffix, th, locale);\n\n if (withSuffix) {\n output = locale.pastFuture(+this, output);\n }\n\n return locale.postformat(output);\n }\n\n var abs$1 = Math.abs;\n\n function sign(x) {\n return (x > 0) - (x < 0) || +x;\n }\n\n function toISOString$1() {\n // for ISO strings we do not use the normal bubbling rules:\n // * milliseconds bubble up until they become hours\n // * days do not bubble at all\n // * months bubble up until they become years\n // This is because there is no context-free conversion between hours and days\n // (think of clock changes)\n // and also not between days and months (28-31 days per month)\n if (!this.isValid()) {\n return this.localeData().invalidDate();\n }\n\n var seconds = abs$1(this._milliseconds) / 1000,\n days = abs$1(this._days),\n months = abs$1(this._months),\n minutes,\n hours,\n years,\n s,\n total = this.asSeconds(),\n totalSign,\n ymSign,\n daysSign,\n hmsSign;\n\n if (!total) {\n // this is the same as C#'s (Noda) and python (isodate)...\n // but not other JS (goog.date)\n return 'P0D';\n }\n\n // 3600 seconds -> 60 minutes -> 1 hour\n minutes = absFloor(seconds / 60);\n hours = absFloor(minutes / 60);\n seconds %= 60;\n minutes %= 60;\n\n // 12 months -> 1 year\n years = absFloor(months / 12);\n months %= 12;\n\n // inspired by https://github.com/dordille/moment-isoduration/blob/master/moment.isoduration.js\n s = seconds ? seconds.toFixed(3).replace(/\\.?0+$/, '') : '';\n\n totalSign = total < 0 ? '-' : '';\n ymSign = sign(this._months) !== sign(total) ? '-' : '';\n daysSign = sign(this._days) !== sign(total) ? '-' : '';\n hmsSign = sign(this._milliseconds) !== sign(total) ? '-' : '';\n\n return (\n totalSign +\n 'P' +\n (years ? ymSign + years + 'Y' : '') +\n (months ? ymSign + months + 'M' : '') +\n (days ? daysSign + days + 'D' : '') +\n (hours || minutes || seconds ? 'T' : '') +\n (hours ? hmsSign + hours + 'H' : '') +\n (minutes ? hmsSign + minutes + 'M' : '') +\n (seconds ? hmsSign + s + 'S' : '')\n );\n }\n\n var proto$2 = Duration.prototype;\n\n proto$2.isValid = isValid$1;\n proto$2.abs = abs;\n proto$2.add = add$1;\n proto$2.subtract = subtract$1;\n proto$2.as = as;\n proto$2.asMilliseconds = asMilliseconds;\n proto$2.asSeconds = asSeconds;\n proto$2.asMinutes = asMinutes;\n proto$2.asHours = asHours;\n proto$2.asDays = asDays;\n proto$2.asWeeks = asWeeks;\n proto$2.asMonths = asMonths;\n proto$2.asQuarters = asQuarters;\n proto$2.asYears = asYears;\n proto$2.valueOf = valueOf$1;\n proto$2._bubble = bubble;\n proto$2.clone = clone$1;\n proto$2.get = get$2;\n proto$2.milliseconds = milliseconds;\n proto$2.seconds = seconds;\n proto$2.minutes = minutes;\n proto$2.hours = hours;\n proto$2.days = days;\n proto$2.weeks = weeks;\n proto$2.months = months;\n proto$2.years = years;\n proto$2.humanize = humanize;\n proto$2.toISOString = toISOString$1;\n proto$2.toString = toISOString$1;\n proto$2.toJSON = toISOString$1;\n proto$2.locale = locale;\n proto$2.localeData = localeData;\n\n proto$2.toIsoString = deprecate(\n 'toIsoString() is deprecated. Please use toISOString() instead (notice the capitals)',\n toISOString$1\n );\n proto$2.lang = lang;\n\n // FORMATTING\n\n addFormatToken('X', 0, 0, 'unix');\n addFormatToken('x', 0, 0, 'valueOf');\n\n // PARSING\n\n addRegexToken('x', matchSigned);\n addRegexToken('X', matchTimestamp);\n addParseToken('X', function (input, array, config) {\n config._d = new Date(parseFloat(input) * 1000);\n });\n addParseToken('x', function (input, array, config) {\n config._d = new Date(toInt(input));\n });\n\n //! moment.js\n\n hooks.version = '2.29.1';\n\n setHookCallback(createLocal);\n\n hooks.fn = proto;\n hooks.min = min;\n hooks.max = max;\n hooks.now = now;\n hooks.utc = createUTC;\n hooks.unix = createUnix;\n hooks.months = listMonths;\n hooks.isDate = isDate;\n hooks.locale = getSetGlobalLocale;\n hooks.invalid = createInvalid;\n hooks.duration = createDuration;\n hooks.isMoment = isMoment;\n hooks.weekdays = listWeekdays;\n hooks.parseZone = createInZone;\n hooks.localeData = getLocale;\n hooks.isDuration = isDuration;\n hooks.monthsShort = listMonthsShort;\n hooks.weekdaysMin = listWeekdaysMin;\n hooks.defineLocale = defineLocale;\n hooks.updateLocale = updateLocale;\n hooks.locales = listLocales;\n hooks.weekdaysShort = listWeekdaysShort;\n hooks.normalizeUnits = normalizeUnits;\n hooks.relativeTimeRounding = getSetRelativeTimeRounding;\n hooks.relativeTimeThreshold = getSetRelativeTimeThreshold;\n hooks.calendarFormat = getCalendarFormat;\n hooks.prototype = proto;\n\n // currently HTML5 input type only supports 24-hour formats\n hooks.HTML5_FMT = {\n DATETIME_LOCAL: 'YYYY-MM-DDTHH:mm', // \n DATETIME_LOCAL_SECONDS: 'YYYY-MM-DDTHH:mm:ss', // \n DATETIME_LOCAL_MS: 'YYYY-MM-DDTHH:mm:ss.SSS', // \n DATE: 'YYYY-MM-DD', // \n TIME: 'HH:mm', // \n TIME_SECONDS: 'HH:mm:ss', // \n TIME_MS: 'HH:mm:ss.SSS', // \n WEEK: 'GGGG-[W]WW', // \n MONTH: 'YYYY-MM', // \n };\n\n return hooks;\n\n})));\n\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./~/moment/moment.js\n// module id = 1\n// module chunks = 0 1 2 3 5 6 160","module.exports = function(module) {\r\n\tif(!module.webpackPolyfill) {\r\n\t\tmodule.deprecate = function() {};\r\n\t\tmodule.paths = [];\r\n\t\t// module.parent = undefined by default\r\n\t\tmodule.children = [];\r\n\t\tmodule.webpackPolyfill = 1;\r\n\t}\r\n\treturn module;\r\n}\r\n\n\n\n//////////////////\n// WEBPACK FOOTER\n// (webpack)/buildin/module.js\n// module id = 94\n// module chunks = 0 1 2 3 4 5 6 7 8 9 10 11 12 13 14 17 18 19 24 160","//! moment.js locale configuration\n//! locale : Japanese [ja]\n//! author : LI Long : https://github.com/baryon\n\n;(function (global, factory) {\n typeof exports === 'object' && typeof module !== 'undefined'\n && typeof require === 'function' ? factory(require('../moment')) :\n typeof define === 'function' && define.amd ? define(['../moment'], factory) :\n factory(global.moment)\n}(this, (function (moment) { 'use strict';\n\n //! moment.js locale configuration\n\n var ja = moment.defineLocale('ja', {\n eras: [\n {\n since: '2019-05-01',\n offset: 1,\n name: '令和',\n narrow: '㋿',\n abbr: 'R',\n },\n {\n since: '1989-01-08',\n until: '2019-04-30',\n offset: 1,\n name: '平成',\n narrow: '㍻',\n abbr: 'H',\n },\n {\n since: '1926-12-25',\n until: '1989-01-07',\n offset: 1,\n name: '昭和',\n narrow: '㍼',\n abbr: 'S',\n },\n {\n since: '1912-07-30',\n until: '1926-12-24',\n offset: 1,\n name: '大正',\n narrow: '㍽',\n abbr: 'T',\n },\n {\n since: '1873-01-01',\n until: '1912-07-29',\n offset: 6,\n name: '明治',\n narrow: '㍾',\n abbr: 'M',\n },\n {\n since: '0001-01-01',\n until: '1873-12-31',\n offset: 1,\n name: '西暦',\n narrow: 'AD',\n abbr: 'AD',\n },\n {\n since: '0000-12-31',\n until: -Infinity,\n offset: 1,\n name: '紀元前',\n narrow: 'BC',\n abbr: 'BC',\n },\n ],\n eraYearOrdinalRegex: /(元|\\d+)年/,\n eraYearOrdinalParse: function (input, match) {\n return match[1] === '元' ? 1 : parseInt(match[1] || input, 10);\n },\n months: '1月_2月_3月_4月_5月_6月_7月_8月_9月_10月_11月_12月'.split('_'),\n monthsShort: '1月_2月_3月_4月_5月_6月_7月_8月_9月_10月_11月_12月'.split(\n '_'\n ),\n weekdays: '日曜日_月曜日_火曜日_水曜日_木曜日_金曜日_土曜日'.split('_'),\n weekdaysShort: '日_月_火_水_木_金_土'.split('_'),\n weekdaysMin: '日_月_火_水_木_金_土'.split('_'),\n longDateFormat: {\n LT: 'HH:mm',\n LTS: 'HH:mm:ss',\n L: 'YYYY/MM/DD',\n LL: 'YYYY年M月D日',\n LLL: 'YYYY年M月D日 HH:mm',\n LLLL: 'YYYY年M月D日 dddd HH:mm',\n l: 'YYYY/MM/DD',\n ll: 'YYYY年M月D日',\n lll: 'YYYY年M月D日 HH:mm',\n llll: 'YYYY年M月D日(ddd) HH:mm',\n },\n meridiemParse: /午前|午後/i,\n isPM: function (input) {\n return input === '午後';\n },\n meridiem: function (hour, minute, isLower) {\n if (hour < 12) {\n return '午前';\n } else {\n return '午後';\n }\n },\n calendar: {\n sameDay: '[今日] LT',\n nextDay: '[明日] LT',\n nextWeek: function (now) {\n if (now.week() !== this.week()) {\n return '[来週]dddd LT';\n } else {\n return 'dddd LT';\n }\n },\n lastDay: '[昨日] LT',\n lastWeek: function (now) {\n if (this.week() !== now.week()) {\n return '[先週]dddd LT';\n } else {\n return 'dddd LT';\n }\n },\n sameElse: 'L',\n },\n dayOfMonthOrdinalParse: /\\d{1,2}日/,\n ordinal: function (number, period) {\n switch (period) {\n case 'y':\n return number === 1 ? '元年' : number + '年';\n case 'd':\n case 'D':\n case 'DDD':\n return number + '日';\n default:\n return number;\n }\n },\n relativeTime: {\n future: '%s後',\n past: '%s前',\n s: '数秒',\n ss: '%d秒',\n m: '1分',\n mm: '%d分',\n h: '1時間',\n hh: '%d時間',\n d: '1日',\n dd: '%d日',\n M: '1ヶ月',\n MM: '%dヶ月',\n y: '1年',\n yy: '%d年',\n },\n });\n\n return ja;\n\n})));\n\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./~/moment/locale/ja.js\n// module id = 286\n// module chunks = 0 1 2 3 5 6 160","//! moment.js locale configuration\n//! locale : Afrikaans [af]\n//! author : Werner Mollentze : https://github.com/wernerm\n\n;(function (global, factory) {\n typeof exports === 'object' && typeof module !== 'undefined'\n && typeof require === 'function' ? factory(require('../moment')) :\n typeof define === 'function' && define.amd ? define(['../moment'], factory) :\n factory(global.moment)\n}(this, (function (moment) { 'use strict';\n\n //! moment.js locale configuration\n\n var af = moment.defineLocale('af', {\n months: 'Januarie_Februarie_Maart_April_Mei_Junie_Julie_Augustus_September_Oktober_November_Desember'.split(\n '_'\n ),\n monthsShort: 'Jan_Feb_Mrt_Apr_Mei_Jun_Jul_Aug_Sep_Okt_Nov_Des'.split('_'),\n weekdays: 'Sondag_Maandag_Dinsdag_Woensdag_Donderdag_Vrydag_Saterdag'.split(\n '_'\n ),\n weekdaysShort: 'Son_Maa_Din_Woe_Don_Vry_Sat'.split('_'),\n weekdaysMin: 'So_Ma_Di_Wo_Do_Vr_Sa'.split('_'),\n meridiemParse: /vm|nm/i,\n isPM: function (input) {\n return /^nm$/i.test(input);\n },\n meridiem: function (hours, minutes, isLower) {\n if (hours < 12) {\n return isLower ? 'vm' : 'VM';\n } else {\n return isLower ? 'nm' : 'NM';\n }\n },\n longDateFormat: {\n LT: 'HH:mm',\n LTS: 'HH:mm:ss',\n L: 'DD/MM/YYYY',\n LL: 'D MMMM YYYY',\n LLL: 'D MMMM YYYY HH:mm',\n LLLL: 'dddd, D MMMM YYYY HH:mm',\n },\n calendar: {\n sameDay: '[Vandag om] LT',\n nextDay: '[Môre om] LT',\n nextWeek: 'dddd [om] LT',\n lastDay: '[Gister om] LT',\n lastWeek: '[Laas] dddd [om] LT',\n sameElse: 'L',\n },\n relativeTime: {\n future: 'oor %s',\n past: '%s gelede',\n s: \"'n paar sekondes\",\n ss: '%d sekondes',\n m: \"'n minuut\",\n mm: '%d minute',\n h: \"'n uur\",\n hh: '%d ure',\n d: \"'n dag\",\n dd: '%d dae',\n M: \"'n maand\",\n MM: '%d maande',\n y: \"'n jaar\",\n yy: '%d jaar',\n },\n dayOfMonthOrdinalParse: /\\d{1,2}(ste|de)/,\n ordinal: function (number) {\n return (\n number +\n (number === 1 || number === 8 || number >= 20 ? 'ste' : 'de')\n ); // Thanks to Joris Röling : https://github.com/jjupiter\n },\n week: {\n dow: 1, // Maandag is die eerste dag van die week.\n doy: 4, // Die week wat die 4de Januarie bevat is die eerste week van die jaar.\n },\n });\n\n return af;\n\n})));\n\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./~/moment/locale/af.js\n// module id = 306\n// module chunks = 0 1 2 3 5 6 160","//! moment.js locale configuration\n//! locale : Arabic (Algeria) [ar-dz]\n//! author : Amine Roukh: https://github.com/Amine27\n//! author : Abdel Said: https://github.com/abdelsaid\n//! author : Ahmed Elkhatib\n//! author : forabi https://github.com/forabi\n//! author : Noureddine LOUAHEDJ : https://github.com/noureddinem\n\n;(function (global, factory) {\n typeof exports === 'object' && typeof module !== 'undefined'\n && typeof require === 'function' ? factory(require('../moment')) :\n typeof define === 'function' && define.amd ? define(['../moment'], factory) :\n factory(global.moment)\n}(this, (function (moment) { 'use strict';\n\n //! moment.js locale configuration\n\n var pluralForm = function (n) {\n return n === 0\n ? 0\n : n === 1\n ? 1\n : n === 2\n ? 2\n : n % 100 >= 3 && n % 100 <= 10\n ? 3\n : n % 100 >= 11\n ? 4\n : 5;\n },\n plurals = {\n s: [\n 'أقل من ثانية',\n 'ثانية واحدة',\n ['ثانيتان', 'ثانيتين'],\n '%d ثوان',\n '%d ثانية',\n '%d ثانية',\n ],\n m: [\n 'أقل من دقيقة',\n 'دقيقة واحدة',\n ['دقيقتان', 'دقيقتين'],\n '%d دقائق',\n '%d دقيقة',\n '%d دقيقة',\n ],\n h: [\n 'أقل من ساعة',\n 'ساعة واحدة',\n ['ساعتان', 'ساعتين'],\n '%d ساعات',\n '%d ساعة',\n '%d ساعة',\n ],\n d: [\n 'أقل من يوم',\n 'يوم واحد',\n ['يومان', 'يومين'],\n '%d أيام',\n '%d يومًا',\n '%d يوم',\n ],\n M: [\n 'أقل من شهر',\n 'شهر واحد',\n ['شهران', 'شهرين'],\n '%d أشهر',\n '%d شهرا',\n '%d شهر',\n ],\n y: [\n 'أقل من عام',\n 'عام واحد',\n ['عامان', 'عامين'],\n '%d أعوام',\n '%d عامًا',\n '%d عام',\n ],\n },\n pluralize = function (u) {\n return function (number, withoutSuffix, string, isFuture) {\n var f = pluralForm(number),\n str = plurals[u][pluralForm(number)];\n if (f === 2) {\n str = str[withoutSuffix ? 0 : 1];\n }\n return str.replace(/%d/i, number);\n };\n },\n months = [\n 'جانفي',\n 'فيفري',\n 'مارس',\n 'أفريل',\n 'ماي',\n 'جوان',\n 'جويلية',\n 'أوت',\n 'سبتمبر',\n 'أكتوبر',\n 'نوفمبر',\n 'ديسمبر',\n ];\n\n var arDz = moment.defineLocale('ar-dz', {\n months: months,\n monthsShort: months,\n weekdays: 'الأحد_الإثنين_الثلاثاء_الأربعاء_الخميس_الجمعة_السبت'.split('_'),\n weekdaysShort: 'أحد_إثنين_ثلاثاء_أربعاء_خميس_جمعة_سبت'.split('_'),\n weekdaysMin: 'ح_ن_ث_ر_خ_ج_س'.split('_'),\n weekdaysParseExact: true,\n longDateFormat: {\n LT: 'HH:mm',\n LTS: 'HH:mm:ss',\n L: 'D/\\u200FM/\\u200FYYYY',\n LL: 'D MMMM YYYY',\n LLL: 'D MMMM YYYY HH:mm',\n LLLL: 'dddd D MMMM YYYY HH:mm',\n },\n meridiemParse: /ص|م/,\n isPM: function (input) {\n return 'م' === input;\n },\n meridiem: function (hour, minute, isLower) {\n if (hour < 12) {\n return 'ص';\n } else {\n return 'م';\n }\n },\n calendar: {\n sameDay: '[اليوم عند الساعة] LT',\n nextDay: '[غدًا عند الساعة] LT',\n nextWeek: 'dddd [عند الساعة] LT',\n lastDay: '[أمس عند الساعة] LT',\n lastWeek: 'dddd [عند الساعة] LT',\n sameElse: 'L',\n },\n relativeTime: {\n future: 'بعد %s',\n past: 'منذ %s',\n s: pluralize('s'),\n ss: pluralize('s'),\n m: pluralize('m'),\n mm: pluralize('m'),\n h: pluralize('h'),\n hh: pluralize('h'),\n d: pluralize('d'),\n dd: pluralize('d'),\n M: pluralize('M'),\n MM: pluralize('M'),\n y: pluralize('y'),\n yy: pluralize('y'),\n },\n postformat: function (string) {\n return string.replace(/,/g, '،');\n },\n week: {\n dow: 0, // Sunday is the first day of the week.\n doy: 4, // The week that contains Jan 4th is the first week of the year.\n },\n });\n\n return arDz;\n\n})));\n\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./~/moment/locale/ar-dz.js\n// module id = 307\n// module chunks = 0 1 2 3 5 6 160","//! moment.js locale configuration\n//! locale : Arabic (Kuwait) [ar-kw]\n//! author : Nusret Parlak: https://github.com/nusretparlak\n\n;(function (global, factory) {\n typeof exports === 'object' && typeof module !== 'undefined'\n && typeof require === 'function' ? factory(require('../moment')) :\n typeof define === 'function' && define.amd ? define(['../moment'], factory) :\n factory(global.moment)\n}(this, (function (moment) { 'use strict';\n\n //! moment.js locale configuration\n\n var arKw = moment.defineLocale('ar-kw', {\n months: 'يناير_فبراير_مارس_أبريل_ماي_يونيو_يوليوز_غشت_شتنبر_أكتوبر_نونبر_دجنبر'.split(\n '_'\n ),\n monthsShort: 'يناير_فبراير_مارس_أبريل_ماي_يونيو_يوليوز_غشت_شتنبر_أكتوبر_نونبر_دجنبر'.split(\n '_'\n ),\n weekdays: 'الأحد_الإتنين_الثلاثاء_الأربعاء_الخميس_الجمعة_السبت'.split('_'),\n weekdaysShort: 'احد_اتنين_ثلاثاء_اربعاء_خميس_جمعة_سبت'.split('_'),\n weekdaysMin: 'ح_ن_ث_ر_خ_ج_س'.split('_'),\n weekdaysParseExact: true,\n longDateFormat: {\n LT: 'HH:mm',\n LTS: 'HH:mm:ss',\n L: 'DD/MM/YYYY',\n LL: 'D MMMM YYYY',\n LLL: 'D MMMM YYYY HH:mm',\n LLLL: 'dddd D MMMM YYYY HH:mm',\n },\n calendar: {\n sameDay: '[اليوم على الساعة] LT',\n nextDay: '[غدا على الساعة] LT',\n nextWeek: 'dddd [على الساعة] LT',\n lastDay: '[أمس على الساعة] LT',\n lastWeek: 'dddd [على الساعة] LT',\n sameElse: 'L',\n },\n relativeTime: {\n future: 'في %s',\n past: 'منذ %s',\n s: 'ثوان',\n ss: '%d ثانية',\n m: 'دقيقة',\n mm: '%d دقائق',\n h: 'ساعة',\n hh: '%d ساعات',\n d: 'يوم',\n dd: '%d أيام',\n M: 'شهر',\n MM: '%d أشهر',\n y: 'سنة',\n yy: '%d سنوات',\n },\n week: {\n dow: 0, // Sunday is the first day of the week.\n doy: 12, // The week that contains Jan 12th is the first week of the year.\n },\n });\n\n return arKw;\n\n})));\n\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./~/moment/locale/ar-kw.js\n// module id = 308\n// module chunks = 0 1 2 3 5 6 160","//! moment.js locale configuration\n//! locale : Arabic (Lybia) [ar-ly]\n//! author : Ali Hmer: https://github.com/kikoanis\n\n;(function (global, factory) {\n typeof exports === 'object' && typeof module !== 'undefined'\n && typeof require === 'function' ? factory(require('../moment')) :\n typeof define === 'function' && define.amd ? define(['../moment'], factory) :\n factory(global.moment)\n}(this, (function (moment) { 'use strict';\n\n //! moment.js locale configuration\n\n var symbolMap = {\n 1: '1',\n 2: '2',\n 3: '3',\n 4: '4',\n 5: '5',\n 6: '6',\n 7: '7',\n 8: '8',\n 9: '9',\n 0: '0',\n },\n pluralForm = function (n) {\n return n === 0\n ? 0\n : n === 1\n ? 1\n : n === 2\n ? 2\n : n % 100 >= 3 && n % 100 <= 10\n ? 3\n : n % 100 >= 11\n ? 4\n : 5;\n },\n plurals = {\n s: [\n 'أقل من ثانية',\n 'ثانية واحدة',\n ['ثانيتان', 'ثانيتين'],\n '%d ثوان',\n '%d ثانية',\n '%d ثانية',\n ],\n m: [\n 'أقل من دقيقة',\n 'دقيقة واحدة',\n ['دقيقتان', 'دقيقتين'],\n '%d دقائق',\n '%d دقيقة',\n '%d دقيقة',\n ],\n h: [\n 'أقل من ساعة',\n 'ساعة واحدة',\n ['ساعتان', 'ساعتين'],\n '%d ساعات',\n '%d ساعة',\n '%d ساعة',\n ],\n d: [\n 'أقل من يوم',\n 'يوم واحد',\n ['يومان', 'يومين'],\n '%d أيام',\n '%d يومًا',\n '%d يوم',\n ],\n M: [\n 'أقل من شهر',\n 'شهر واحد',\n ['شهران', 'شهرين'],\n '%d أشهر',\n '%d شهرا',\n '%d شهر',\n ],\n y: [\n 'أقل من عام',\n 'عام واحد',\n ['عامان', 'عامين'],\n '%d أعوام',\n '%d عامًا',\n '%d عام',\n ],\n },\n pluralize = function (u) {\n return function (number, withoutSuffix, string, isFuture) {\n var f = pluralForm(number),\n str = plurals[u][pluralForm(number)];\n if (f === 2) {\n str = str[withoutSuffix ? 0 : 1];\n }\n return str.replace(/%d/i, number);\n };\n },\n months = [\n 'يناير',\n 'فبراير',\n 'مارس',\n 'أبريل',\n 'مايو',\n 'يونيو',\n 'يوليو',\n 'أغسطس',\n 'سبتمبر',\n 'أكتوبر',\n 'نوفمبر',\n 'ديسمبر',\n ];\n\n var arLy = moment.defineLocale('ar-ly', {\n months: months,\n monthsShort: months,\n weekdays: 'الأحد_الإثنين_الثلاثاء_الأربعاء_الخميس_الجمعة_السبت'.split('_'),\n weekdaysShort: 'أحد_إثنين_ثلاثاء_أربعاء_خميس_جمعة_سبت'.split('_'),\n weekdaysMin: 'ح_ن_ث_ر_خ_ج_س'.split('_'),\n weekdaysParseExact: true,\n longDateFormat: {\n LT: 'HH:mm',\n LTS: 'HH:mm:ss',\n L: 'D/\\u200FM/\\u200FYYYY',\n LL: 'D MMMM YYYY',\n LLL: 'D MMMM YYYY HH:mm',\n LLLL: 'dddd D MMMM YYYY HH:mm',\n },\n meridiemParse: /ص|م/,\n isPM: function (input) {\n return 'م' === input;\n },\n meridiem: function (hour, minute, isLower) {\n if (hour < 12) {\n return 'ص';\n } else {\n return 'م';\n }\n },\n calendar: {\n sameDay: '[اليوم عند الساعة] LT',\n nextDay: '[غدًا عند الساعة] LT',\n nextWeek: 'dddd [عند الساعة] LT',\n lastDay: '[أمس عند الساعة] LT',\n lastWeek: 'dddd [عند الساعة] LT',\n sameElse: 'L',\n },\n relativeTime: {\n future: 'بعد %s',\n past: 'منذ %s',\n s: pluralize('s'),\n ss: pluralize('s'),\n m: pluralize('m'),\n mm: pluralize('m'),\n h: pluralize('h'),\n hh: pluralize('h'),\n d: pluralize('d'),\n dd: pluralize('d'),\n M: pluralize('M'),\n MM: pluralize('M'),\n y: pluralize('y'),\n yy: pluralize('y'),\n },\n preparse: function (string) {\n return string.replace(/،/g, ',');\n },\n postformat: function (string) {\n return string\n .replace(/\\d/g, function (match) {\n return symbolMap[match];\n })\n .replace(/,/g, '،');\n },\n week: {\n dow: 6, // Saturday is the first day of the week.\n doy: 12, // The week that contains Jan 12th is the first week of the year.\n },\n });\n\n return arLy;\n\n})));\n\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./~/moment/locale/ar-ly.js\n// module id = 309\n// module chunks = 0 1 2 3 5 6 160","//! moment.js locale configuration\n//! locale : Arabic (Morocco) [ar-ma]\n//! author : ElFadili Yassine : https://github.com/ElFadiliY\n//! author : Abdel Said : https://github.com/abdelsaid\n\n;(function (global, factory) {\n typeof exports === 'object' && typeof module !== 'undefined'\n && typeof require === 'function' ? factory(require('../moment')) :\n typeof define === 'function' && define.amd ? define(['../moment'], factory) :\n factory(global.moment)\n}(this, (function (moment) { 'use strict';\n\n //! moment.js locale configuration\n\n var arMa = moment.defineLocale('ar-ma', {\n months: 'يناير_فبراير_مارس_أبريل_ماي_يونيو_يوليوز_غشت_شتنبر_أكتوبر_نونبر_دجنبر'.split(\n '_'\n ),\n monthsShort: 'يناير_فبراير_مارس_أبريل_ماي_يونيو_يوليوز_غشت_شتنبر_أكتوبر_نونبر_دجنبر'.split(\n '_'\n ),\n weekdays: 'الأحد_الإثنين_الثلاثاء_الأربعاء_الخميس_الجمعة_السبت'.split('_'),\n weekdaysShort: 'احد_اثنين_ثلاثاء_اربعاء_خميس_جمعة_سبت'.split('_'),\n weekdaysMin: 'ح_ن_ث_ر_خ_ج_س'.split('_'),\n weekdaysParseExact: true,\n longDateFormat: {\n LT: 'HH:mm',\n LTS: 'HH:mm:ss',\n L: 'DD/MM/YYYY',\n LL: 'D MMMM YYYY',\n LLL: 'D MMMM YYYY HH:mm',\n LLLL: 'dddd D MMMM YYYY HH:mm',\n },\n calendar: {\n sameDay: '[اليوم على الساعة] LT',\n nextDay: '[غدا على الساعة] LT',\n nextWeek: 'dddd [على الساعة] LT',\n lastDay: '[أمس على الساعة] LT',\n lastWeek: 'dddd [على الساعة] LT',\n sameElse: 'L',\n },\n relativeTime: {\n future: 'في %s',\n past: 'منذ %s',\n s: 'ثوان',\n ss: '%d ثانية',\n m: 'دقيقة',\n mm: '%d دقائق',\n h: 'ساعة',\n hh: '%d ساعات',\n d: 'يوم',\n dd: '%d أيام',\n M: 'شهر',\n MM: '%d أشهر',\n y: 'سنة',\n yy: '%d سنوات',\n },\n week: {\n dow: 1, // Monday is the first day of the week.\n doy: 4, // The week that contains Jan 4th is the first week of the year.\n },\n });\n\n return arMa;\n\n})));\n\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./~/moment/locale/ar-ma.js\n// module id = 310\n// module chunks = 0 1 2 3 5 6 160","//! moment.js locale configuration\n//! locale : Arabic (Saudi Arabia) [ar-sa]\n//! author : Suhail Alkowaileet : https://github.com/xsoh\n\n;(function (global, factory) {\n typeof exports === 'object' && typeof module !== 'undefined'\n && typeof require === 'function' ? factory(require('../moment')) :\n typeof define === 'function' && define.amd ? define(['../moment'], factory) :\n factory(global.moment)\n}(this, (function (moment) { 'use strict';\n\n //! moment.js locale configuration\n\n var symbolMap = {\n 1: '١',\n 2: '٢',\n 3: '٣',\n 4: '٤',\n 5: '٥',\n 6: '٦',\n 7: '٧',\n 8: '٨',\n 9: '٩',\n 0: '٠',\n },\n numberMap = {\n '١': '1',\n '٢': '2',\n '٣': '3',\n '٤': '4',\n '٥': '5',\n '٦': '6',\n '٧': '7',\n '٨': '8',\n '٩': '9',\n '٠': '0',\n };\n\n var arSa = moment.defineLocale('ar-sa', {\n months: 'يناير_فبراير_مارس_أبريل_مايو_يونيو_يوليو_أغسطس_سبتمبر_أكتوبر_نوفمبر_ديسمبر'.split(\n '_'\n ),\n monthsShort: 'يناير_فبراير_مارس_أبريل_مايو_يونيو_يوليو_أغسطس_سبتمبر_أكتوبر_نوفمبر_ديسمبر'.split(\n '_'\n ),\n weekdays: 'الأحد_الإثنين_الثلاثاء_الأربعاء_الخميس_الجمعة_السبت'.split('_'),\n weekdaysShort: 'أحد_إثنين_ثلاثاء_أربعاء_خميس_جمعة_سبت'.split('_'),\n weekdaysMin: 'ح_ن_ث_ر_خ_ج_س'.split('_'),\n weekdaysParseExact: true,\n longDateFormat: {\n LT: 'HH:mm',\n LTS: 'HH:mm:ss',\n L: 'DD/MM/YYYY',\n LL: 'D MMMM YYYY',\n LLL: 'D MMMM YYYY HH:mm',\n LLLL: 'dddd D MMMM YYYY HH:mm',\n },\n meridiemParse: /ص|م/,\n isPM: function (input) {\n return 'م' === input;\n },\n meridiem: function (hour, minute, isLower) {\n if (hour < 12) {\n return 'ص';\n } else {\n return 'م';\n }\n },\n calendar: {\n sameDay: '[اليوم على الساعة] LT',\n nextDay: '[غدا على الساعة] LT',\n nextWeek: 'dddd [على الساعة] LT',\n lastDay: '[أمس على الساعة] LT',\n lastWeek: 'dddd [على الساعة] LT',\n sameElse: 'L',\n },\n relativeTime: {\n future: 'في %s',\n past: 'منذ %s',\n s: 'ثوان',\n ss: '%d ثانية',\n m: 'دقيقة',\n mm: '%d دقائق',\n h: 'ساعة',\n hh: '%d ساعات',\n d: 'يوم',\n dd: '%d أيام',\n M: 'شهر',\n MM: '%d أشهر',\n y: 'سنة',\n yy: '%d سنوات',\n },\n preparse: function (string) {\n return string\n .replace(/[١٢٣٤٥٦٧٨٩٠]/g, function (match) {\n return numberMap[match];\n })\n .replace(/،/g, ',');\n },\n postformat: function (string) {\n return string\n .replace(/\\d/g, function (match) {\n return symbolMap[match];\n })\n .replace(/,/g, '،');\n },\n week: {\n dow: 0, // Sunday is the first day of the week.\n doy: 6, // The week that contains Jan 6th is the first week of the year.\n },\n });\n\n return arSa;\n\n})));\n\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./~/moment/locale/ar-sa.js\n// module id = 311\n// module chunks = 0 1 2 3 5 6 160","//! moment.js locale configuration\n//! locale : Arabic (Tunisia) [ar-tn]\n//! author : Nader Toukabri : https://github.com/naderio\n\n;(function (global, factory) {\n typeof exports === 'object' && typeof module !== 'undefined'\n && typeof require === 'function' ? factory(require('../moment')) :\n typeof define === 'function' && define.amd ? define(['../moment'], factory) :\n factory(global.moment)\n}(this, (function (moment) { 'use strict';\n\n //! moment.js locale configuration\n\n var arTn = moment.defineLocale('ar-tn', {\n months: 'جانفي_فيفري_مارس_أفريل_ماي_جوان_جويلية_أوت_سبتمبر_أكتوبر_نوفمبر_ديسمبر'.split(\n '_'\n ),\n monthsShort: 'جانفي_فيفري_مارس_أفريل_ماي_جوان_جويلية_أوت_سبتمبر_أكتوبر_نوفمبر_ديسمبر'.split(\n '_'\n ),\n weekdays: 'الأحد_الإثنين_الثلاثاء_الأربعاء_الخميس_الجمعة_السبت'.split('_'),\n weekdaysShort: 'أحد_إثنين_ثلاثاء_أربعاء_خميس_جمعة_سبت'.split('_'),\n weekdaysMin: 'ح_ن_ث_ر_خ_ج_س'.split('_'),\n weekdaysParseExact: true,\n longDateFormat: {\n LT: 'HH:mm',\n LTS: 'HH:mm:ss',\n L: 'DD/MM/YYYY',\n LL: 'D MMMM YYYY',\n LLL: 'D MMMM YYYY HH:mm',\n LLLL: 'dddd D MMMM YYYY HH:mm',\n },\n calendar: {\n sameDay: '[اليوم على الساعة] LT',\n nextDay: '[غدا على الساعة] LT',\n nextWeek: 'dddd [على الساعة] LT',\n lastDay: '[أمس على الساعة] LT',\n lastWeek: 'dddd [على الساعة] LT',\n sameElse: 'L',\n },\n relativeTime: {\n future: 'في %s',\n past: 'منذ %s',\n s: 'ثوان',\n ss: '%d ثانية',\n m: 'دقيقة',\n mm: '%d دقائق',\n h: 'ساعة',\n hh: '%d ساعات',\n d: 'يوم',\n dd: '%d أيام',\n M: 'شهر',\n MM: '%d أشهر',\n y: 'سنة',\n yy: '%d سنوات',\n },\n week: {\n dow: 1, // Monday is the first day of the week.\n doy: 4, // The week that contains Jan 4th is the first week of the year.\n },\n });\n\n return arTn;\n\n})));\n\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./~/moment/locale/ar-tn.js\n// module id = 312\n// module chunks = 0 1 2 3 5 6 160","//! moment.js locale configuration\n//! locale : Arabic [ar]\n//! author : Abdel Said: https://github.com/abdelsaid\n//! author : Ahmed Elkhatib\n//! author : forabi https://github.com/forabi\n\n;(function (global, factory) {\n typeof exports === 'object' && typeof module !== 'undefined'\n && typeof require === 'function' ? factory(require('../moment')) :\n typeof define === 'function' && define.amd ? define(['../moment'], factory) :\n factory(global.moment)\n}(this, (function (moment) { 'use strict';\n\n //! moment.js locale configuration\n\n var symbolMap = {\n 1: '١',\n 2: '٢',\n 3: '٣',\n 4: '٤',\n 5: '٥',\n 6: '٦',\n 7: '٧',\n 8: '٨',\n 9: '٩',\n 0: '٠',\n },\n numberMap = {\n '١': '1',\n '٢': '2',\n '٣': '3',\n '٤': '4',\n '٥': '5',\n '٦': '6',\n '٧': '7',\n '٨': '8',\n '٩': '9',\n '٠': '0',\n },\n pluralForm = function (n) {\n return n === 0\n ? 0\n : n === 1\n ? 1\n : n === 2\n ? 2\n : n % 100 >= 3 && n % 100 <= 10\n ? 3\n : n % 100 >= 11\n ? 4\n : 5;\n },\n plurals = {\n s: [\n 'أقل من ثانية',\n 'ثانية واحدة',\n ['ثانيتان', 'ثانيتين'],\n '%d ثوان',\n '%d ثانية',\n '%d ثانية',\n ],\n m: [\n 'أقل من دقيقة',\n 'دقيقة واحدة',\n ['دقيقتان', 'دقيقتين'],\n '%d دقائق',\n '%d دقيقة',\n '%d دقيقة',\n ],\n h: [\n 'أقل من ساعة',\n 'ساعة واحدة',\n ['ساعتان', 'ساعتين'],\n '%d ساعات',\n '%d ساعة',\n '%d ساعة',\n ],\n d: [\n 'أقل من يوم',\n 'يوم واحد',\n ['يومان', 'يومين'],\n '%d أيام',\n '%d يومًا',\n '%d يوم',\n ],\n M: [\n 'أقل من شهر',\n 'شهر واحد',\n ['شهران', 'شهرين'],\n '%d أشهر',\n '%d شهرا',\n '%d شهر',\n ],\n y: [\n 'أقل من عام',\n 'عام واحد',\n ['عامان', 'عامين'],\n '%d أعوام',\n '%d عامًا',\n '%d عام',\n ],\n },\n pluralize = function (u) {\n return function (number, withoutSuffix, string, isFuture) {\n var f = pluralForm(number),\n str = plurals[u][pluralForm(number)];\n if (f === 2) {\n str = str[withoutSuffix ? 0 : 1];\n }\n return str.replace(/%d/i, number);\n };\n },\n months = [\n 'يناير',\n 'فبراير',\n 'مارس',\n 'أبريل',\n 'مايو',\n 'يونيو',\n 'يوليو',\n 'أغسطس',\n 'سبتمبر',\n 'أكتوبر',\n 'نوفمبر',\n 'ديسمبر',\n ];\n\n var ar = moment.defineLocale('ar', {\n months: months,\n monthsShort: months,\n weekdays: 'الأحد_الإثنين_الثلاثاء_الأربعاء_الخميس_الجمعة_السبت'.split('_'),\n weekdaysShort: 'أحد_إثنين_ثلاثاء_أربعاء_خميس_جمعة_سبت'.split('_'),\n weekdaysMin: 'ح_ن_ث_ر_خ_ج_س'.split('_'),\n weekdaysParseExact: true,\n longDateFormat: {\n LT: 'HH:mm',\n LTS: 'HH:mm:ss',\n L: 'D/\\u200FM/\\u200FYYYY',\n LL: 'D MMMM YYYY',\n LLL: 'D MMMM YYYY HH:mm',\n LLLL: 'dddd D MMMM YYYY HH:mm',\n },\n meridiemParse: /ص|م/,\n isPM: function (input) {\n return 'م' === input;\n },\n meridiem: function (hour, minute, isLower) {\n if (hour < 12) {\n return 'ص';\n } else {\n return 'م';\n }\n },\n calendar: {\n sameDay: '[اليوم عند الساعة] LT',\n nextDay: '[غدًا عند الساعة] LT',\n nextWeek: 'dddd [عند الساعة] LT',\n lastDay: '[أمس عند الساعة] LT',\n lastWeek: 'dddd [عند الساعة] LT',\n sameElse: 'L',\n },\n relativeTime: {\n future: 'بعد %s',\n past: 'منذ %s',\n s: pluralize('s'),\n ss: pluralize('s'),\n m: pluralize('m'),\n mm: pluralize('m'),\n h: pluralize('h'),\n hh: pluralize('h'),\n d: pluralize('d'),\n dd: pluralize('d'),\n M: pluralize('M'),\n MM: pluralize('M'),\n y: pluralize('y'),\n yy: pluralize('y'),\n },\n preparse: function (string) {\n return string\n .replace(/[١٢٣٤٥٦٧٨٩٠]/g, function (match) {\n return numberMap[match];\n })\n .replace(/،/g, ',');\n },\n postformat: function (string) {\n return string\n .replace(/\\d/g, function (match) {\n return symbolMap[match];\n })\n .replace(/,/g, '،');\n },\n week: {\n dow: 6, // Saturday is the first day of the week.\n doy: 12, // The week that contains Jan 12th is the first week of the year.\n },\n });\n\n return ar;\n\n})));\n\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./~/moment/locale/ar.js\n// module id = 313\n// module chunks = 0 1 2 3 5 6 160","//! moment.js locale configuration\n//! locale : Azerbaijani [az]\n//! author : topchiyev : https://github.com/topchiyev\n\n;(function (global, factory) {\n typeof exports === 'object' && typeof module !== 'undefined'\n && typeof require === 'function' ? factory(require('../moment')) :\n typeof define === 'function' && define.amd ? define(['../moment'], factory) :\n factory(global.moment)\n}(this, (function (moment) { 'use strict';\n\n //! moment.js locale configuration\n\n var suffixes = {\n 1: '-inci',\n 5: '-inci',\n 8: '-inci',\n 70: '-inci',\n 80: '-inci',\n 2: '-nci',\n 7: '-nci',\n 20: '-nci',\n 50: '-nci',\n 3: '-üncü',\n 4: '-üncü',\n 100: '-üncü',\n 6: '-ncı',\n 9: '-uncu',\n 10: '-uncu',\n 30: '-uncu',\n 60: '-ıncı',\n 90: '-ıncı',\n };\n\n var az = moment.defineLocale('az', {\n months: 'yanvar_fevral_mart_aprel_may_iyun_iyul_avqust_sentyabr_oktyabr_noyabr_dekabr'.split(\n '_'\n ),\n monthsShort: 'yan_fev_mar_apr_may_iyn_iyl_avq_sen_okt_noy_dek'.split('_'),\n weekdays: 'Bazar_Bazar ertəsi_Çərşənbə axşamı_Çərşənbə_Cümə axşamı_Cümə_Şənbə'.split(\n '_'\n ),\n weekdaysShort: 'Baz_BzE_ÇAx_Çər_CAx_Cüm_Şən'.split('_'),\n weekdaysMin: 'Bz_BE_ÇA_Çə_CA_Cü_Şə'.split('_'),\n weekdaysParseExact: true,\n longDateFormat: {\n LT: 'HH:mm',\n LTS: 'HH:mm:ss',\n L: 'DD.MM.YYYY',\n LL: 'D MMMM YYYY',\n LLL: 'D MMMM YYYY HH:mm',\n LLLL: 'dddd, D MMMM YYYY HH:mm',\n },\n calendar: {\n sameDay: '[bugün saat] LT',\n nextDay: '[sabah saat] LT',\n nextWeek: '[gələn həftə] dddd [saat] LT',\n lastDay: '[dünən] LT',\n lastWeek: '[keçən həftə] dddd [saat] LT',\n sameElse: 'L',\n },\n relativeTime: {\n future: '%s sonra',\n past: '%s əvvəl',\n s: 'bir neçə saniyə',\n ss: '%d saniyə',\n m: 'bir dəqiqə',\n mm: '%d dəqiqə',\n h: 'bir saat',\n hh: '%d saat',\n d: 'bir gün',\n dd: '%d gün',\n M: 'bir ay',\n MM: '%d ay',\n y: 'bir il',\n yy: '%d il',\n },\n meridiemParse: /gecə|səhər|gündüz|axşam/,\n isPM: function (input) {\n return /^(gündüz|axşam)$/.test(input);\n },\n meridiem: function (hour, minute, isLower) {\n if (hour < 4) {\n return 'gecə';\n } else if (hour < 12) {\n return 'səhər';\n } else if (hour < 17) {\n return 'gündüz';\n } else {\n return 'axşam';\n }\n },\n dayOfMonthOrdinalParse: /\\d{1,2}-(ıncı|inci|nci|üncü|ncı|uncu)/,\n ordinal: function (number) {\n if (number === 0) {\n // special case for zero\n return number + '-ıncı';\n }\n var a = number % 10,\n b = (number % 100) - a,\n c = number >= 100 ? 100 : null;\n return number + (suffixes[a] || suffixes[b] || suffixes[c]);\n },\n week: {\n dow: 1, // Monday is the first day of the week.\n doy: 7, // The week that contains Jan 7th is the first week of the year.\n },\n });\n\n return az;\n\n})));\n\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./~/moment/locale/az.js\n// module id = 314\n// module chunks = 0 1 2 3 5 6 160","//! moment.js locale configuration\n//! locale : Belarusian [be]\n//! author : Dmitry Demidov : https://github.com/demidov91\n//! author: Praleska: http://praleska.pro/\n//! Author : Menelion Elensúle : https://github.com/Oire\n\n;(function (global, factory) {\n typeof exports === 'object' && typeof module !== 'undefined'\n && typeof require === 'function' ? factory(require('../moment')) :\n typeof define === 'function' && define.amd ? define(['../moment'], factory) :\n factory(global.moment)\n}(this, (function (moment) { 'use strict';\n\n //! moment.js locale configuration\n\n function plural(word, num) {\n var forms = word.split('_');\n return num % 10 === 1 && num % 100 !== 11\n ? forms[0]\n : num % 10 >= 2 && num % 10 <= 4 && (num % 100 < 10 || num % 100 >= 20)\n ? forms[1]\n : forms[2];\n }\n function relativeTimeWithPlural(number, withoutSuffix, key) {\n var format = {\n ss: withoutSuffix ? 'секунда_секунды_секунд' : 'секунду_секунды_секунд',\n mm: withoutSuffix ? 'хвіліна_хвіліны_хвілін' : 'хвіліну_хвіліны_хвілін',\n hh: withoutSuffix ? 'гадзіна_гадзіны_гадзін' : 'гадзіну_гадзіны_гадзін',\n dd: 'дзень_дні_дзён',\n MM: 'месяц_месяцы_месяцаў',\n yy: 'год_гады_гадоў',\n };\n if (key === 'm') {\n return withoutSuffix ? 'хвіліна' : 'хвіліну';\n } else if (key === 'h') {\n return withoutSuffix ? 'гадзіна' : 'гадзіну';\n } else {\n return number + ' ' + plural(format[key], +number);\n }\n }\n\n var be = moment.defineLocale('be', {\n months: {\n format: 'студзеня_лютага_сакавіка_красавіка_траўня_чэрвеня_ліпеня_жніўня_верасня_кастрычніка_лістапада_снежня'.split(\n '_'\n ),\n standalone: 'студзень_люты_сакавік_красавік_травень_чэрвень_ліпень_жнівень_верасень_кастрычнік_лістапад_снежань'.split(\n '_'\n ),\n },\n monthsShort: 'студ_лют_сак_крас_трав_чэрв_ліп_жнів_вер_каст_ліст_снеж'.split(\n '_'\n ),\n weekdays: {\n format: 'нядзелю_панядзелак_аўторак_сераду_чацвер_пятніцу_суботу'.split(\n '_'\n ),\n standalone: 'нядзеля_панядзелак_аўторак_серада_чацвер_пятніца_субота'.split(\n '_'\n ),\n isFormat: /\\[ ?[Ууў] ?(?:мінулую|наступную)? ?\\] ?dddd/,\n },\n weekdaysShort: 'нд_пн_ат_ср_чц_пт_сб'.split('_'),\n weekdaysMin: 'нд_пн_ат_ср_чц_пт_сб'.split('_'),\n longDateFormat: {\n LT: 'HH:mm',\n LTS: 'HH:mm:ss',\n L: 'DD.MM.YYYY',\n LL: 'D MMMM YYYY г.',\n LLL: 'D MMMM YYYY г., HH:mm',\n LLLL: 'dddd, D MMMM YYYY г., HH:mm',\n },\n calendar: {\n sameDay: '[Сёння ў] LT',\n nextDay: '[Заўтра ў] LT',\n lastDay: '[Учора ў] LT',\n nextWeek: function () {\n return '[У] dddd [ў] LT';\n },\n lastWeek: function () {\n switch (this.day()) {\n case 0:\n case 3:\n case 5:\n case 6:\n return '[У мінулую] dddd [ў] LT';\n case 1:\n case 2:\n case 4:\n return '[У мінулы] dddd [ў] LT';\n }\n },\n sameElse: 'L',\n },\n relativeTime: {\n future: 'праз %s',\n past: '%s таму',\n s: 'некалькі секунд',\n m: relativeTimeWithPlural,\n mm: relativeTimeWithPlural,\n h: relativeTimeWithPlural,\n hh: relativeTimeWithPlural,\n d: 'дзень',\n dd: relativeTimeWithPlural,\n M: 'месяц',\n MM: relativeTimeWithPlural,\n y: 'год',\n yy: relativeTimeWithPlural,\n },\n meridiemParse: /ночы|раніцы|дня|вечара/,\n isPM: function (input) {\n return /^(дня|вечара)$/.test(input);\n },\n meridiem: function (hour, minute, isLower) {\n if (hour < 4) {\n return 'ночы';\n } else if (hour < 12) {\n return 'раніцы';\n } else if (hour < 17) {\n return 'дня';\n } else {\n return 'вечара';\n }\n },\n dayOfMonthOrdinalParse: /\\d{1,2}-(і|ы|га)/,\n ordinal: function (number, period) {\n switch (period) {\n case 'M':\n case 'd':\n case 'DDD':\n case 'w':\n case 'W':\n return (number % 10 === 2 || number % 10 === 3) &&\n number % 100 !== 12 &&\n number % 100 !== 13\n ? number + '-і'\n : number + '-ы';\n case 'D':\n return number + '-га';\n default:\n return number;\n }\n },\n week: {\n dow: 1, // Monday is the first day of the week.\n doy: 7, // The week that contains Jan 7th is the first week of the year.\n },\n });\n\n return be;\n\n})));\n\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./~/moment/locale/be.js\n// module id = 315\n// module chunks = 0 1 2 3 5 6 160","//! moment.js locale configuration\n//! locale : Bulgarian [bg]\n//! author : Krasen Borisov : https://github.com/kraz\n\n;(function (global, factory) {\n typeof exports === 'object' && typeof module !== 'undefined'\n && typeof require === 'function' ? factory(require('../moment')) :\n typeof define === 'function' && define.amd ? define(['../moment'], factory) :\n factory(global.moment)\n}(this, (function (moment) { 'use strict';\n\n //! moment.js locale configuration\n\n var bg = moment.defineLocale('bg', {\n months: 'януари_февруари_март_април_май_юни_юли_август_септември_октомври_ноември_декември'.split(\n '_'\n ),\n monthsShort: 'яну_фев_мар_апр_май_юни_юли_авг_сеп_окт_ное_дек'.split('_'),\n weekdays: 'неделя_понеделник_вторник_сряда_четвъртък_петък_събота'.split(\n '_'\n ),\n weekdaysShort: 'нед_пон_вто_сря_чет_пет_съб'.split('_'),\n weekdaysMin: 'нд_пн_вт_ср_чт_пт_сб'.split('_'),\n longDateFormat: {\n LT: 'H:mm',\n LTS: 'H:mm:ss',\n L: 'D.MM.YYYY',\n LL: 'D MMMM YYYY',\n LLL: 'D MMMM YYYY H:mm',\n LLLL: 'dddd, D MMMM YYYY H:mm',\n },\n calendar: {\n sameDay: '[Днес в] LT',\n nextDay: '[Утре в] LT',\n nextWeek: 'dddd [в] LT',\n lastDay: '[Вчера в] LT',\n lastWeek: function () {\n switch (this.day()) {\n case 0:\n case 3:\n case 6:\n return '[Миналата] dddd [в] LT';\n case 1:\n case 2:\n case 4:\n case 5:\n return '[Миналия] dddd [в] LT';\n }\n },\n sameElse: 'L',\n },\n relativeTime: {\n future: 'след %s',\n past: 'преди %s',\n s: 'няколко секунди',\n ss: '%d секунди',\n m: 'минута',\n mm: '%d минути',\n h: 'час',\n hh: '%d часа',\n d: 'ден',\n dd: '%d дена',\n w: 'седмица',\n ww: '%d седмици',\n M: 'месец',\n MM: '%d месеца',\n y: 'година',\n yy: '%d години',\n },\n dayOfMonthOrdinalParse: /\\d{1,2}-(ев|ен|ти|ви|ри|ми)/,\n ordinal: function (number) {\n var lastDigit = number % 10,\n last2Digits = number % 100;\n if (number === 0) {\n return number + '-ев';\n } else if (last2Digits === 0) {\n return number + '-ен';\n } else if (last2Digits > 10 && last2Digits < 20) {\n return number + '-ти';\n } else if (lastDigit === 1) {\n return number + '-ви';\n } else if (lastDigit === 2) {\n return number + '-ри';\n } else if (lastDigit === 7 || lastDigit === 8) {\n return number + '-ми';\n } else {\n return number + '-ти';\n }\n },\n week: {\n dow: 1, // Monday is the first day of the week.\n doy: 7, // The week that contains Jan 7th is the first week of the year.\n },\n });\n\n return bg;\n\n})));\n\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./~/moment/locale/bg.js\n// module id = 316\n// module chunks = 0 1 2 3 5 6 160","//! moment.js locale configuration\n//! locale : Bambara [bm]\n//! author : Estelle Comment : https://github.com/estellecomment\n\n;(function (global, factory) {\n typeof exports === 'object' && typeof module !== 'undefined'\n && typeof require === 'function' ? factory(require('../moment')) :\n typeof define === 'function' && define.amd ? define(['../moment'], factory) :\n factory(global.moment)\n}(this, (function (moment) { 'use strict';\n\n //! moment.js locale configuration\n\n var bm = moment.defineLocale('bm', {\n months: 'Zanwuyekalo_Fewuruyekalo_Marisikalo_Awirilikalo_Mɛkalo_Zuwɛnkalo_Zuluyekalo_Utikalo_Sɛtanburukalo_ɔkutɔburukalo_Nowanburukalo_Desanburukalo'.split(\n '_'\n ),\n monthsShort: 'Zan_Few_Mar_Awi_Mɛ_Zuw_Zul_Uti_Sɛt_ɔku_Now_Des'.split('_'),\n weekdays: 'Kari_Ntɛnɛn_Tarata_Araba_Alamisa_Juma_Sibiri'.split('_'),\n weekdaysShort: 'Kar_Ntɛ_Tar_Ara_Ala_Jum_Sib'.split('_'),\n weekdaysMin: 'Ka_Nt_Ta_Ar_Al_Ju_Si'.split('_'),\n longDateFormat: {\n LT: 'HH:mm',\n LTS: 'HH:mm:ss',\n L: 'DD/MM/YYYY',\n LL: 'MMMM [tile] D [san] YYYY',\n LLL: 'MMMM [tile] D [san] YYYY [lɛrɛ] HH:mm',\n LLLL: 'dddd MMMM [tile] D [san] YYYY [lɛrɛ] HH:mm',\n },\n calendar: {\n sameDay: '[Bi lɛrɛ] LT',\n nextDay: '[Sini lɛrɛ] LT',\n nextWeek: 'dddd [don lɛrɛ] LT',\n lastDay: '[Kunu lɛrɛ] LT',\n lastWeek: 'dddd [tɛmɛnen lɛrɛ] LT',\n sameElse: 'L',\n },\n relativeTime: {\n future: '%s kɔnɔ',\n past: 'a bɛ %s bɔ',\n s: 'sanga dama dama',\n ss: 'sekondi %d',\n m: 'miniti kelen',\n mm: 'miniti %d',\n h: 'lɛrɛ kelen',\n hh: 'lɛrɛ %d',\n d: 'tile kelen',\n dd: 'tile %d',\n M: 'kalo kelen',\n MM: 'kalo %d',\n y: 'san kelen',\n yy: 'san %d',\n },\n week: {\n dow: 1, // Monday is the first day of the week.\n doy: 4, // The week that contains Jan 4th is the first week of the year.\n },\n });\n\n return bm;\n\n})));\n\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./~/moment/locale/bm.js\n// module id = 317\n// module chunks = 0 1 2 3 5 6 160","//! moment.js locale configuration\n//! locale : Bengali (Bangladesh) [bn-bd]\n//! author : Asraf Hossain Patoary : https://github.com/ashwoolford\n\n;(function (global, factory) {\n typeof exports === 'object' && typeof module !== 'undefined'\n && typeof require === 'function' ? factory(require('../moment')) :\n typeof define === 'function' && define.amd ? define(['../moment'], factory) :\n factory(global.moment)\n}(this, (function (moment) { 'use strict';\n\n //! moment.js locale configuration\n\n var symbolMap = {\n 1: '১',\n 2: '২',\n 3: '৩',\n 4: '৪',\n 5: '৫',\n 6: '৬',\n 7: '৭',\n 8: '৮',\n 9: '৯',\n 0: '০',\n },\n numberMap = {\n '১': '1',\n '২': '2',\n '৩': '3',\n '৪': '4',\n '৫': '5',\n '৬': '6',\n '৭': '7',\n '৮': '8',\n '৯': '9',\n '০': '0',\n };\n\n var bnBd = moment.defineLocale('bn-bd', {\n months: 'জানুয়ারি_ফেব্রুয়ারি_মার্চ_এপ্রিল_মে_জুন_জুলাই_আগস্ট_সেপ্টেম্বর_অক্টোবর_নভেম্বর_ডিসেম্বর'.split(\n '_'\n ),\n monthsShort: 'জানু_ফেব্রু_মার্চ_এপ্রিল_মে_জুন_জুলাই_আগস্ট_সেপ্ট_অক্টো_নভে_ডিসে'.split(\n '_'\n ),\n weekdays: 'রবিবার_সোমবার_মঙ্গলবার_বুধবার_বৃহস্পতিবার_শুক্রবার_শনিবার'.split(\n '_'\n ),\n weekdaysShort: 'রবি_সোম_মঙ্গল_বুধ_বৃহস্পতি_শুক্র_শনি'.split('_'),\n weekdaysMin: 'রবি_সোম_মঙ্গল_বুধ_বৃহ_শুক্র_শনি'.split('_'),\n longDateFormat: {\n LT: 'A h:mm সময়',\n LTS: 'A h:mm:ss সময়',\n L: 'DD/MM/YYYY',\n LL: 'D MMMM YYYY',\n LLL: 'D MMMM YYYY, A h:mm সময়',\n LLLL: 'dddd, D MMMM YYYY, A h:mm সময়',\n },\n calendar: {\n sameDay: '[আজ] LT',\n nextDay: '[আগামীকাল] LT',\n nextWeek: 'dddd, LT',\n lastDay: '[গতকাল] LT',\n lastWeek: '[গত] dddd, LT',\n sameElse: 'L',\n },\n relativeTime: {\n future: '%s পরে',\n past: '%s আগে',\n s: 'কয়েক সেকেন্ড',\n ss: '%d সেকেন্ড',\n m: 'এক মিনিট',\n mm: '%d মিনিট',\n h: 'এক ঘন্টা',\n hh: '%d ঘন্টা',\n d: 'এক দিন',\n dd: '%d দিন',\n M: 'এক মাস',\n MM: '%d মাস',\n y: 'এক বছর',\n yy: '%d বছর',\n },\n preparse: function (string) {\n return string.replace(/[১২৩৪৫৬৭৮৯০]/g, function (match) {\n return numberMap[match];\n });\n },\n postformat: function (string) {\n return string.replace(/\\d/g, function (match) {\n return symbolMap[match];\n });\n },\n\n meridiemParse: /রাত|ভোর|সকাল|দুপুর|বিকাল|সন্ধ্যা|রাত/,\n meridiemHour: function (hour, meridiem) {\n if (hour === 12) {\n hour = 0;\n }\n if (meridiem === 'রাত') {\n return hour < 4 ? hour : hour + 12;\n } else if (meridiem === 'ভোর') {\n return hour;\n } else if (meridiem === 'সকাল') {\n return hour;\n } else if (meridiem === 'দুপুর') {\n return hour >= 3 ? hour : hour + 12;\n } else if (meridiem === 'বিকাল') {\n return hour + 12;\n } else if (meridiem === 'সন্ধ্যা') {\n return hour + 12;\n }\n },\n\n meridiem: function (hour, minute, isLower) {\n if (hour < 4) {\n return 'রাত';\n } else if (hour < 6) {\n return 'ভোর';\n } else if (hour < 12) {\n return 'সকাল';\n } else if (hour < 15) {\n return 'দুপুর';\n } else if (hour < 18) {\n return 'বিকাল';\n } else if (hour < 20) {\n return 'সন্ধ্যা';\n } else {\n return 'রাত';\n }\n },\n week: {\n dow: 0, // Sunday is the first day of the week.\n doy: 6, // The week that contains Jan 6th is the first week of the year.\n },\n });\n\n return bnBd;\n\n})));\n\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./~/moment/locale/bn-bd.js\n// module id = 318\n// module chunks = 0 1 2 3 5 6 160","//! moment.js locale configuration\n//! locale : Bengali [bn]\n//! author : Kaushik Gandhi : https://github.com/kaushikgandhi\n\n;(function (global, factory) {\n typeof exports === 'object' && typeof module !== 'undefined'\n && typeof require === 'function' ? factory(require('../moment')) :\n typeof define === 'function' && define.amd ? define(['../moment'], factory) :\n factory(global.moment)\n}(this, (function (moment) { 'use strict';\n\n //! moment.js locale configuration\n\n var symbolMap = {\n 1: '১',\n 2: '২',\n 3: '৩',\n 4: '৪',\n 5: '৫',\n 6: '৬',\n 7: '৭',\n 8: '৮',\n 9: '৯',\n 0: '০',\n },\n numberMap = {\n '১': '1',\n '২': '2',\n '৩': '3',\n '৪': '4',\n '৫': '5',\n '৬': '6',\n '৭': '7',\n '৮': '8',\n '৯': '9',\n '০': '0',\n };\n\n var bn = moment.defineLocale('bn', {\n months: 'জানুয়ারি_ফেব্রুয়ারি_মার্চ_এপ্রিল_মে_জুন_জুলাই_আগস্ট_সেপ্টেম্বর_অক্টোবর_নভেম্বর_ডিসেম্বর'.split(\n '_'\n ),\n monthsShort: 'জানু_ফেব্রু_মার্চ_এপ্রিল_মে_জুন_জুলাই_আগস্ট_সেপ্ট_অক্টো_নভে_ডিসে'.split(\n '_'\n ),\n weekdays: 'রবিবার_সোমবার_মঙ্গলবার_বুধবার_বৃহস্পতিবার_শুক্রবার_শনিবার'.split(\n '_'\n ),\n weekdaysShort: 'রবি_সোম_মঙ্গল_বুধ_বৃহস্পতি_শুক্র_শনি'.split('_'),\n weekdaysMin: 'রবি_সোম_মঙ্গল_বুধ_বৃহ_শুক্র_শনি'.split('_'),\n longDateFormat: {\n LT: 'A h:mm সময়',\n LTS: 'A h:mm:ss সময়',\n L: 'DD/MM/YYYY',\n LL: 'D MMMM YYYY',\n LLL: 'D MMMM YYYY, A h:mm সময়',\n LLLL: 'dddd, D MMMM YYYY, A h:mm সময়',\n },\n calendar: {\n sameDay: '[আজ] LT',\n nextDay: '[আগামীকাল] LT',\n nextWeek: 'dddd, LT',\n lastDay: '[গতকাল] LT',\n lastWeek: '[গত] dddd, LT',\n sameElse: 'L',\n },\n relativeTime: {\n future: '%s পরে',\n past: '%s আগে',\n s: 'কয়েক সেকেন্ড',\n ss: '%d সেকেন্ড',\n m: 'এক মিনিট',\n mm: '%d মিনিট',\n h: 'এক ঘন্টা',\n hh: '%d ঘন্টা',\n d: 'এক দিন',\n dd: '%d দিন',\n M: 'এক মাস',\n MM: '%d মাস',\n y: 'এক বছর',\n yy: '%d বছর',\n },\n preparse: function (string) {\n return string.replace(/[১২৩৪৫৬৭৮৯০]/g, function (match) {\n return numberMap[match];\n });\n },\n postformat: function (string) {\n return string.replace(/\\d/g, function (match) {\n return symbolMap[match];\n });\n },\n meridiemParse: /রাত|সকাল|দুপুর|বিকাল|রাত/,\n meridiemHour: function (hour, meridiem) {\n if (hour === 12) {\n hour = 0;\n }\n if (\n (meridiem === 'রাত' && hour >= 4) ||\n (meridiem === 'দুপুর' && hour < 5) ||\n meridiem === 'বিকাল'\n ) {\n return hour + 12;\n } else {\n return hour;\n }\n },\n meridiem: function (hour, minute, isLower) {\n if (hour < 4) {\n return 'রাত';\n } else if (hour < 10) {\n return 'সকাল';\n } else if (hour < 17) {\n return 'দুপুর';\n } else if (hour < 20) {\n return 'বিকাল';\n } else {\n return 'রাত';\n }\n },\n week: {\n dow: 0, // Sunday is the first day of the week.\n doy: 6, // The week that contains Jan 6th is the first week of the year.\n },\n });\n\n return bn;\n\n})));\n\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./~/moment/locale/bn.js\n// module id = 319\n// module chunks = 0 1 2 3 5 6 160","//! moment.js locale configuration\n//! locale : Tibetan [bo]\n//! author : Thupten N. Chakrishar : https://github.com/vajradog\n\n;(function (global, factory) {\n typeof exports === 'object' && typeof module !== 'undefined'\n && typeof require === 'function' ? factory(require('../moment')) :\n typeof define === 'function' && define.amd ? define(['../moment'], factory) :\n factory(global.moment)\n}(this, (function (moment) { 'use strict';\n\n //! moment.js locale configuration\n\n var symbolMap = {\n 1: '༡',\n 2: '༢',\n 3: '༣',\n 4: '༤',\n 5: '༥',\n 6: '༦',\n 7: '༧',\n 8: '༨',\n 9: '༩',\n 0: '༠',\n },\n numberMap = {\n '༡': '1',\n '༢': '2',\n '༣': '3',\n '༤': '4',\n '༥': '5',\n '༦': '6',\n '༧': '7',\n '༨': '8',\n '༩': '9',\n '༠': '0',\n };\n\n var bo = moment.defineLocale('bo', {\n months: 'ཟླ་བ་དང་པོ_ཟླ་བ་གཉིས་པ_ཟླ་བ་གསུམ་པ_ཟླ་བ་བཞི་པ_ཟླ་བ་ལྔ་པ_ཟླ་བ་དྲུག་པ_ཟླ་བ་བདུན་པ_ཟླ་བ་བརྒྱད་པ_ཟླ་བ་དགུ་པ_ཟླ་བ་བཅུ་པ_ཟླ་བ་བཅུ་གཅིག་པ_ཟླ་བ་བཅུ་གཉིས་པ'.split(\n '_'\n ),\n monthsShort: 'ཟླ་1_ཟླ་2_ཟླ་3_ཟླ་4_ཟླ་5_ཟླ་6_ཟླ་7_ཟླ་8_ཟླ་9_ཟླ་10_ཟླ་11_ཟླ་12'.split(\n '_'\n ),\n monthsShortRegex: /^(ཟླ་\\d{1,2})/,\n monthsParseExact: true,\n weekdays: 'གཟའ་ཉི་མ་_གཟའ་ཟླ་བ་_གཟའ་མིག་དམར་_གཟའ་ལྷག་པ་_གཟའ་ཕུར་བུ_གཟའ་པ་སངས་_གཟའ་སྤེན་པ་'.split(\n '_'\n ),\n weekdaysShort: 'ཉི་མ་_ཟླ་བ་_མིག་དམར་_ལྷག་པ་_ཕུར་བུ_པ་སངས་_སྤེན་པ་'.split(\n '_'\n ),\n weekdaysMin: 'ཉི_ཟླ_མིག_ལྷག_ཕུར_སངས_སྤེན'.split('_'),\n longDateFormat: {\n LT: 'A h:mm',\n LTS: 'A h:mm:ss',\n L: 'DD/MM/YYYY',\n LL: 'D MMMM YYYY',\n LLL: 'D MMMM YYYY, A h:mm',\n LLLL: 'dddd, D MMMM YYYY, A h:mm',\n },\n calendar: {\n sameDay: '[དི་རིང] LT',\n nextDay: '[སང་ཉིན] LT',\n nextWeek: '[བདུན་ཕྲག་རྗེས་མ], LT',\n lastDay: '[ཁ་སང] LT',\n lastWeek: '[བདུན་ཕྲག་མཐའ་མ] dddd, LT',\n sameElse: 'L',\n },\n relativeTime: {\n future: '%s ལ་',\n past: '%s སྔན་ལ',\n s: 'ལམ་སང',\n ss: '%d སྐར་ཆ།',\n m: 'སྐར་མ་གཅིག',\n mm: '%d སྐར་མ',\n h: 'ཆུ་ཚོད་གཅིག',\n hh: '%d ཆུ་ཚོད',\n d: 'ཉིན་གཅིག',\n dd: '%d ཉིན་',\n M: 'ཟླ་བ་གཅིག',\n MM: '%d ཟླ་བ',\n y: 'ལོ་གཅིག',\n yy: '%d ལོ',\n },\n preparse: function (string) {\n return string.replace(/[༡༢༣༤༥༦༧༨༩༠]/g, function (match) {\n return numberMap[match];\n });\n },\n postformat: function (string) {\n return string.replace(/\\d/g, function (match) {\n return symbolMap[match];\n });\n },\n meridiemParse: /མཚན་མོ|ཞོགས་ཀས|ཉིན་གུང|དགོང་དག|མཚན་མོ/,\n meridiemHour: function (hour, meridiem) {\n if (hour === 12) {\n hour = 0;\n }\n if (\n (meridiem === 'མཚན་མོ' && hour >= 4) ||\n (meridiem === 'ཉིན་གུང' && hour < 5) ||\n meridiem === 'དགོང་དག'\n ) {\n return hour + 12;\n } else {\n return hour;\n }\n },\n meridiem: function (hour, minute, isLower) {\n if (hour < 4) {\n return 'མཚན་མོ';\n } else if (hour < 10) {\n return 'ཞོགས་ཀས';\n } else if (hour < 17) {\n return 'ཉིན་གུང';\n } else if (hour < 20) {\n return 'དགོང་དག';\n } else {\n return 'མཚན་མོ';\n }\n },\n week: {\n dow: 0, // Sunday is the first day of the week.\n doy: 6, // The week that contains Jan 6th is the first week of the year.\n },\n });\n\n return bo;\n\n})));\n\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./~/moment/locale/bo.js\n// module id = 320\n// module chunks = 0 1 2 3 5 6 160","//! moment.js locale configuration\n//! locale : Breton [br]\n//! author : Jean-Baptiste Le Duigou : https://github.com/jbleduigou\n\n;(function (global, factory) {\n typeof exports === 'object' && typeof module !== 'undefined'\n && typeof require === 'function' ? factory(require('../moment')) :\n typeof define === 'function' && define.amd ? define(['../moment'], factory) :\n factory(global.moment)\n}(this, (function (moment) { 'use strict';\n\n //! moment.js locale configuration\n\n function relativeTimeWithMutation(number, withoutSuffix, key) {\n var format = {\n mm: 'munutenn',\n MM: 'miz',\n dd: 'devezh',\n };\n return number + ' ' + mutation(format[key], number);\n }\n function specialMutationForYears(number) {\n switch (lastNumber(number)) {\n case 1:\n case 3:\n case 4:\n case 5:\n case 9:\n return number + ' bloaz';\n default:\n return number + ' vloaz';\n }\n }\n function lastNumber(number) {\n if (number > 9) {\n return lastNumber(number % 10);\n }\n return number;\n }\n function mutation(text, number) {\n if (number === 2) {\n return softMutation(text);\n }\n return text;\n }\n function softMutation(text) {\n var mutationTable = {\n m: 'v',\n b: 'v',\n d: 'z',\n };\n if (mutationTable[text.charAt(0)] === undefined) {\n return text;\n }\n return mutationTable[text.charAt(0)] + text.substring(1);\n }\n\n var monthsParse = [\n /^gen/i,\n /^c[ʼ\\']hwe/i,\n /^meu/i,\n /^ebr/i,\n /^mae/i,\n /^(mez|eve)/i,\n /^gou/i,\n /^eos/i,\n /^gwe/i,\n /^her/i,\n /^du/i,\n /^ker/i,\n ],\n monthsRegex = /^(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 = [\n /^sul/i,\n /^lun/i,\n /^meurzh/i,\n /^merc[ʼ\\']her/i,\n /^yaou/i,\n /^gwener/i,\n /^sadorn/i,\n ],\n shortWeekdaysParse = [\n /^Sul/i,\n /^Lun/i,\n /^Meu/i,\n /^Mer/i,\n /^Yao/i,\n /^Gwe/i,\n /^Sad/i,\n ],\n minWeekdaysParse = [\n /^Su/i,\n /^Lu/i,\n /^Me([^r]|$)/i,\n /^Mer/i,\n /^Ya/i,\n /^Gw/i,\n /^Sa/i,\n ];\n\n var br = moment.defineLocale('br', {\n months: 'Genver_Cʼhwevrer_Meurzh_Ebrel_Mae_Mezheven_Gouere_Eost_Gwengolo_Here_Du_Kerzu'.split(\n '_'\n ),\n monthsShort: 'Gen_Cʼhwe_Meu_Ebr_Mae_Eve_Gou_Eos_Gwe_Her_Du_Ker'.split('_'),\n weekdays: 'Sul_Lun_Meurzh_Mercʼher_Yaou_Gwener_Sadorn'.split('_'),\n weekdaysShort: 'Sul_Lun_Meu_Mer_Yao_Gwe_Sad'.split('_'),\n weekdaysMin: 'Su_Lu_Me_Mer_Ya_Gw_Sa'.split('_'),\n weekdaysParse: minWeekdaysParse,\n fullWeekdaysParse: fullWeekdaysParse,\n shortWeekdaysParse: shortWeekdaysParse,\n minWeekdaysParse: minWeekdaysParse,\n\n monthsRegex: monthsRegex,\n monthsShortRegex: monthsRegex,\n monthsStrictRegex: monthsStrictRegex,\n monthsShortStrictRegex: monthsShortStrictRegex,\n monthsParse: monthsParse,\n longMonthsParse: monthsParse,\n shortMonthsParse: monthsParse,\n\n longDateFormat: {\n LT: 'HH:mm',\n LTS: 'HH:mm:ss',\n L: 'DD/MM/YYYY',\n LL: 'D [a viz] MMMM YYYY',\n LLL: 'D [a viz] MMMM YYYY HH:mm',\n LLLL: 'dddd, D [a viz] MMMM YYYY HH:mm',\n },\n calendar: {\n sameDay: '[Hiziv da] LT',\n nextDay: '[Warcʼhoazh da] LT',\n nextWeek: 'dddd [da] LT',\n lastDay: '[Decʼh da] LT',\n lastWeek: 'dddd [paset da] LT',\n sameElse: 'L',\n },\n relativeTime: {\n future: 'a-benn %s',\n past: '%s ʼzo',\n s: 'un nebeud segondennoù',\n ss: '%d eilenn',\n m: 'ur vunutenn',\n mm: relativeTimeWithMutation,\n h: 'un eur',\n hh: '%d eur',\n d: 'un devezh',\n dd: relativeTimeWithMutation,\n M: 'ur miz',\n MM: relativeTimeWithMutation,\n y: 'ur bloaz',\n yy: specialMutationForYears,\n },\n dayOfMonthOrdinalParse: /\\d{1,2}(añ|vet)/,\n ordinal: function (number) {\n var output = number === 1 ? 'añ' : 'vet';\n return number + output;\n },\n week: {\n dow: 1, // Monday is the first day of the week.\n doy: 4, // The week that contains Jan 4th is the first week of the year.\n },\n meridiemParse: /a.m.|g.m./, // goude merenn | a-raok merenn\n isPM: function (token) {\n return token === 'g.m.';\n },\n meridiem: function (hour, minute, isLower) {\n return hour < 12 ? 'a.m.' : 'g.m.';\n },\n });\n\n return br;\n\n})));\n\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./~/moment/locale/br.js\n// module id = 321\n// module chunks = 0 1 2 3 5 6 160","//! moment.js locale configuration\n//! locale : Bosnian [bs]\n//! author : Nedim Cholich : https://github.com/frontyard\n//! based on (hr) translation by Bojan Marković\n\n;(function (global, factory) {\n typeof exports === 'object' && typeof module !== 'undefined'\n && typeof require === 'function' ? factory(require('../moment')) :\n typeof define === 'function' && define.amd ? define(['../moment'], factory) :\n factory(global.moment)\n}(this, (function (moment) { 'use strict';\n\n //! moment.js locale configuration\n\n function translate(number, withoutSuffix, key) {\n var result = number + ' ';\n switch (key) {\n case 'ss':\n if (number === 1) {\n result += 'sekunda';\n } else if (number === 2 || number === 3 || number === 4) {\n result += 'sekunde';\n } else {\n result += 'sekundi';\n }\n return result;\n case 'm':\n return withoutSuffix ? 'jedna minuta' : 'jedne minute';\n case 'mm':\n if (number === 1) {\n result += 'minuta';\n } else if (number === 2 || number === 3 || number === 4) {\n result += 'minute';\n } else {\n result += 'minuta';\n }\n return result;\n case 'h':\n return withoutSuffix ? 'jedan sat' : 'jednog sata';\n case 'hh':\n if (number === 1) {\n result += 'sat';\n } else if (number === 2 || number === 3 || number === 4) {\n result += 'sata';\n } else {\n result += 'sati';\n }\n return result;\n case 'dd':\n if (number === 1) {\n result += 'dan';\n } else {\n result += 'dana';\n }\n return result;\n case 'MM':\n if (number === 1) {\n result += 'mjesec';\n } else if (number === 2 || number === 3 || number === 4) {\n result += 'mjeseca';\n } else {\n result += 'mjeseci';\n }\n return result;\n case 'yy':\n if (number === 1) {\n result += 'godina';\n } else if (number === 2 || number === 3 || number === 4) {\n result += 'godine';\n } else {\n result += 'godina';\n }\n return result;\n }\n }\n\n var bs = moment.defineLocale('bs', {\n months: 'januar_februar_mart_april_maj_juni_juli_august_septembar_oktobar_novembar_decembar'.split(\n '_'\n ),\n monthsShort: 'jan._feb._mar._apr._maj._jun._jul._aug._sep._okt._nov._dec.'.split(\n '_'\n ),\n monthsParseExact: true,\n weekdays: 'nedjelja_ponedjeljak_utorak_srijeda_četvrtak_petak_subota'.split(\n '_'\n ),\n weekdaysShort: 'ned._pon._uto._sri._čet._pet._sub.'.split('_'),\n weekdaysMin: 'ne_po_ut_sr_če_pe_su'.split('_'),\n weekdaysParseExact: true,\n longDateFormat: {\n LT: 'H:mm',\n LTS: 'H:mm:ss',\n L: 'DD.MM.YYYY',\n LL: 'D. MMMM YYYY',\n LLL: 'D. MMMM YYYY H:mm',\n LLLL: 'dddd, D. MMMM YYYY H:mm',\n },\n calendar: {\n sameDay: '[danas u] LT',\n nextDay: '[sutra u] LT',\n nextWeek: function () {\n switch (this.day()) {\n case 0:\n return '[u] [nedjelju] [u] LT';\n case 3:\n return '[u] [srijedu] [u] LT';\n case 6:\n return '[u] [subotu] [u] LT';\n case 1:\n case 2:\n case 4:\n case 5:\n return '[u] dddd [u] LT';\n }\n },\n lastDay: '[jučer u] LT',\n lastWeek: function () {\n switch (this.day()) {\n case 0:\n case 3:\n return '[prošlu] dddd [u] LT';\n case 6:\n return '[prošle] [subote] [u] LT';\n case 1:\n case 2:\n case 4:\n case 5:\n return '[prošli] dddd [u] LT';\n }\n },\n sameElse: 'L',\n },\n relativeTime: {\n future: 'za %s',\n past: 'prije %s',\n s: 'par sekundi',\n ss: translate,\n m: translate,\n mm: translate,\n h: translate,\n hh: translate,\n d: 'dan',\n dd: translate,\n M: 'mjesec',\n MM: translate,\n y: 'godinu',\n yy: translate,\n },\n dayOfMonthOrdinalParse: /\\d{1,2}\\./,\n ordinal: '%d.',\n week: {\n dow: 1, // Monday is the first day of the week.\n doy: 7, // The week that contains Jan 7th is the first week of the year.\n },\n });\n\n return bs;\n\n})));\n\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./~/moment/locale/bs.js\n// module id = 322\n// module chunks = 0 1 2 3 5 6 160","//! moment.js locale configuration\n//! locale : Catalan [ca]\n//! author : Juan G. Hurtado : https://github.com/juanghurtado\n\n;(function (global, factory) {\n typeof exports === 'object' && typeof module !== 'undefined'\n && typeof require === 'function' ? factory(require('../moment')) :\n typeof define === 'function' && define.amd ? define(['../moment'], factory) :\n factory(global.moment)\n}(this, (function (moment) { 'use strict';\n\n //! moment.js locale configuration\n\n var ca = moment.defineLocale('ca', {\n months: {\n standalone: 'gener_febrer_març_abril_maig_juny_juliol_agost_setembre_octubre_novembre_desembre'.split(\n '_'\n ),\n format: \"de gener_de febrer_de març_d'abril_de maig_de juny_de juliol_d'agost_de setembre_d'octubre_de novembre_de desembre\".split(\n '_'\n ),\n isFormat: /D[oD]?(\\s)+MMMM/,\n },\n monthsShort: 'gen._febr._març_abr._maig_juny_jul._ag._set._oct._nov._des.'.split(\n '_'\n ),\n monthsParseExact: true,\n weekdays: 'diumenge_dilluns_dimarts_dimecres_dijous_divendres_dissabte'.split(\n '_'\n ),\n weekdaysShort: 'dg._dl._dt._dc._dj._dv._ds.'.split('_'),\n weekdaysMin: 'dg_dl_dt_dc_dj_dv_ds'.split('_'),\n weekdaysParseExact: true,\n longDateFormat: {\n LT: 'H:mm',\n LTS: 'H:mm:ss',\n L: 'DD/MM/YYYY',\n LL: 'D MMMM [de] YYYY',\n ll: 'D MMM YYYY',\n LLL: 'D MMMM [de] YYYY [a les] H:mm',\n lll: 'D MMM YYYY, H:mm',\n LLLL: 'dddd D MMMM [de] YYYY [a les] H:mm',\n llll: 'ddd D MMM YYYY, H:mm',\n },\n calendar: {\n sameDay: function () {\n return '[avui a ' + (this.hours() !== 1 ? 'les' : 'la') + '] LT';\n },\n nextDay: function () {\n return '[demà a ' + (this.hours() !== 1 ? 'les' : 'la') + '] LT';\n },\n nextWeek: function () {\n return 'dddd [a ' + (this.hours() !== 1 ? 'les' : 'la') + '] LT';\n },\n lastDay: function () {\n return '[ahir a ' + (this.hours() !== 1 ? 'les' : 'la') + '] LT';\n },\n lastWeek: function () {\n return (\n '[el] dddd [passat a ' +\n (this.hours() !== 1 ? 'les' : 'la') +\n '] LT'\n );\n },\n sameElse: 'L',\n },\n relativeTime: {\n future: \"d'aquí %s\",\n past: 'fa %s',\n s: 'uns segons',\n ss: '%d segons',\n m: 'un minut',\n mm: '%d minuts',\n h: 'una hora',\n hh: '%d hores',\n d: 'un dia',\n dd: '%d dies',\n M: 'un mes',\n MM: '%d mesos',\n y: 'un any',\n yy: '%d anys',\n },\n dayOfMonthOrdinalParse: /\\d{1,2}(r|n|t|è|a)/,\n ordinal: function (number, period) {\n var output =\n number === 1\n ? 'r'\n : number === 2\n ? 'n'\n : number === 3\n ? 'r'\n : number === 4\n ? 't'\n : 'è';\n if (period === 'w' || period === 'W') {\n output = 'a';\n }\n return number + output;\n },\n week: {\n dow: 1, // Monday is the first day of the week.\n doy: 4, // The week that contains Jan 4th is the first week of the year.\n },\n });\n\n return ca;\n\n})));\n\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./~/moment/locale/ca.js\n// module id = 323\n// module chunks = 0 1 2 3 5 6 160","//! moment.js locale configuration\n//! locale : Czech [cs]\n//! author : petrbela : https://github.com/petrbela\n\n;(function (global, factory) {\n typeof exports === 'object' && typeof module !== 'undefined'\n && typeof require === 'function' ? factory(require('../moment')) :\n typeof define === 'function' && define.amd ? define(['../moment'], factory) :\n factory(global.moment)\n}(this, (function (moment) { 'use strict';\n\n //! moment.js locale configuration\n\n var months = 'leden_únor_březen_duben_květen_červen_červenec_srpen_září_říjen_listopad_prosinec'.split(\n '_'\n ),\n monthsShort = 'led_úno_bře_dub_kvě_čvn_čvc_srp_zář_říj_lis_pro'.split('_'),\n monthsParse = [\n /^led/i,\n /^úno/i,\n /^bře/i,\n /^dub/i,\n /^kvě/i,\n /^(čvn|červen$|června)/i,\n /^(čvc|červenec|července)/i,\n /^srp/i,\n /^zář/i,\n /^říj/i,\n /^lis/i,\n /^pro/i,\n ],\n // NOTE: 'červen' is substring of 'červenec'; therefore 'červenec' must precede 'červen' in the regex to be fully matched.\n // Otherwise parser matches '1. červenec' as '1. červen' + 'ec'.\n monthsRegex = /^(leden|únor|březen|duben|květen|červenec|července|červen|června|srpen|září|říjen|listopad|prosinec|led|úno|bře|dub|kvě|čvn|čvc|srp|zář|říj|lis|pro)/i;\n\n function plural(n) {\n return n > 1 && n < 5 && ~~(n / 10) !== 1;\n }\n function translate(number, withoutSuffix, key, isFuture) {\n var result = number + ' ';\n switch (key) {\n case 's': // a few seconds / in a few seconds / a few seconds ago\n return withoutSuffix || isFuture ? 'pár sekund' : 'pár sekundami';\n case 'ss': // 9 seconds / in 9 seconds / 9 seconds ago\n if (withoutSuffix || isFuture) {\n return result + (plural(number) ? 'sekundy' : 'sekund');\n } else {\n return result + 'sekundami';\n }\n case 'm': // a minute / in a minute / a minute ago\n return withoutSuffix ? 'minuta' : isFuture ? 'minutu' : 'minutou';\n case 'mm': // 9 minutes / in 9 minutes / 9 minutes ago\n if (withoutSuffix || isFuture) {\n return result + (plural(number) ? 'minuty' : 'minut');\n } else {\n return result + 'minutami';\n }\n case 'h': // an hour / in an hour / an hour ago\n return withoutSuffix ? 'hodina' : isFuture ? 'hodinu' : 'hodinou';\n case 'hh': // 9 hours / in 9 hours / 9 hours ago\n if (withoutSuffix || isFuture) {\n return result + (plural(number) ? 'hodiny' : 'hodin');\n } else {\n return result + 'hodinami';\n }\n case 'd': // a day / in a day / a day ago\n return withoutSuffix || isFuture ? 'den' : 'dnem';\n case 'dd': // 9 days / in 9 days / 9 days ago\n if (withoutSuffix || isFuture) {\n return result + (plural(number) ? 'dny' : 'dní');\n } else {\n return result + 'dny';\n }\n case 'M': // a month / in a month / a month ago\n return withoutSuffix || isFuture ? 'měsíc' : 'měsícem';\n case 'MM': // 9 months / in 9 months / 9 months ago\n if (withoutSuffix || isFuture) {\n return result + (plural(number) ? 'měsíce' : 'měsíců');\n } else {\n return result + 'měsíci';\n }\n case 'y': // a year / in a year / a year ago\n return withoutSuffix || isFuture ? 'rok' : 'rokem';\n case 'yy': // 9 years / in 9 years / 9 years ago\n if (withoutSuffix || isFuture) {\n return result + (plural(number) ? 'roky' : 'let');\n } else {\n return result + 'lety';\n }\n }\n }\n\n var cs = moment.defineLocale('cs', {\n months: months,\n monthsShort: monthsShort,\n monthsRegex: monthsRegex,\n monthsShortRegex: monthsRegex,\n // NOTE: 'červen' is substring of 'červenec'; therefore 'červenec' must precede 'červen' in the regex to be fully matched.\n // Otherwise parser matches '1. červenec' as '1. červen' + 'ec'.\n monthsStrictRegex: /^(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, // Monday is the first day of the week.\n doy: 4, // The week that contains Jan 4th is the first week of the year.\n },\n });\n\n return cs;\n\n})));\n\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./~/moment/locale/cs.js\n// module id = 324\n// module chunks = 0 1 2 3 5 6 160","//! moment.js locale configuration\n//! locale : Chuvash [cv]\n//! author : Anatoly Mironov : https://github.com/mirontoli\n\n;(function (global, factory) {\n typeof exports === 'object' && typeof module !== 'undefined'\n && typeof require === 'function' ? factory(require('../moment')) :\n typeof define === 'function' && define.amd ? define(['../moment'], factory) :\n factory(global.moment)\n}(this, (function (moment) { 'use strict';\n\n //! moment.js locale configuration\n\n var cv = moment.defineLocale('cv', {\n months: 'кӑрлач_нарӑс_пуш_ака_май_ҫӗртме_утӑ_ҫурла_авӑн_юпа_чӳк_раштав'.split(\n '_'\n ),\n monthsShort: 'кӑр_нар_пуш_ака_май_ҫӗр_утӑ_ҫур_авн_юпа_чӳк_раш'.split('_'),\n weekdays: 'вырсарникун_тунтикун_ытларикун_юнкун_кӗҫнерникун_эрнекун_шӑматкун'.split(\n '_'\n ),\n weekdaysShort: 'выр_тун_ытл_юн_кӗҫ_эрн_шӑм'.split('_'),\n weekdaysMin: 'вр_тн_ыт_юн_кҫ_эр_шм'.split('_'),\n longDateFormat: {\n LT: 'HH:mm',\n LTS: 'HH:mm:ss',\n L: 'DD-MM-YYYY',\n LL: 'YYYY [ҫулхи] MMMM [уйӑхӗн] D[-мӗшӗ]',\n LLL: 'YYYY [ҫулхи] MMMM [уйӑхӗн] D[-мӗшӗ], HH:mm',\n LLLL: 'dddd, YYYY [ҫулхи] MMMM [уйӑхӗн] D[-мӗшӗ], HH:mm',\n },\n calendar: {\n sameDay: '[Паян] LT [сехетре]',\n nextDay: '[Ыран] LT [сехетре]',\n lastDay: '[Ӗнер] LT [сехетре]',\n nextWeek: '[Ҫитес] dddd LT [сехетре]',\n lastWeek: '[Иртнӗ] dddd LT [сехетре]',\n sameElse: 'L',\n },\n relativeTime: {\n future: function (output) {\n var affix = /сехет$/i.exec(output)\n ? 'рен'\n : /ҫул$/i.exec(output)\n ? 'тан'\n : 'ран';\n return output + affix;\n },\n past: '%s каялла',\n s: 'пӗр-ик ҫеккунт',\n ss: '%d ҫеккунт',\n m: 'пӗр минут',\n mm: '%d минут',\n h: 'пӗр сехет',\n hh: '%d сехет',\n d: 'пӗр кун',\n dd: '%d кун',\n M: 'пӗр уйӑх',\n MM: '%d уйӑх',\n y: 'пӗр ҫул',\n yy: '%d ҫул',\n },\n dayOfMonthOrdinalParse: /\\d{1,2}-мӗш/,\n ordinal: '%d-мӗш',\n week: {\n dow: 1, // Monday is the first day of the week.\n doy: 7, // The week that contains Jan 7th is the first week of the year.\n },\n });\n\n return cv;\n\n})));\n\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./~/moment/locale/cv.js\n// module id = 325\n// module chunks = 0 1 2 3 5 6 160","//! moment.js locale configuration\n//! locale : Welsh [cy]\n//! author : Robert Allen : https://github.com/robgallen\n//! author : https://github.com/ryangreaves\n\n;(function (global, factory) {\n typeof exports === 'object' && typeof module !== 'undefined'\n && typeof require === 'function' ? factory(require('../moment')) :\n typeof define === 'function' && define.amd ? define(['../moment'], factory) :\n factory(global.moment)\n}(this, (function (moment) { 'use strict';\n\n //! moment.js locale configuration\n\n var cy = moment.defineLocale('cy', {\n months: 'Ionawr_Chwefror_Mawrth_Ebrill_Mai_Mehefin_Gorffennaf_Awst_Medi_Hydref_Tachwedd_Rhagfyr'.split(\n '_'\n ),\n monthsShort: 'Ion_Chwe_Maw_Ebr_Mai_Meh_Gor_Aws_Med_Hyd_Tach_Rhag'.split(\n '_'\n ),\n weekdays: 'Dydd Sul_Dydd Llun_Dydd Mawrth_Dydd Mercher_Dydd Iau_Dydd Gwener_Dydd Sadwrn'.split(\n '_'\n ),\n weekdaysShort: 'Sul_Llun_Maw_Mer_Iau_Gwe_Sad'.split('_'),\n weekdaysMin: 'Su_Ll_Ma_Me_Ia_Gw_Sa'.split('_'),\n weekdaysParseExact: true,\n // time formats are the same as en-gb\n longDateFormat: {\n LT: 'HH:mm',\n LTS: 'HH:mm:ss',\n L: 'DD/MM/YYYY',\n LL: 'D MMMM YYYY',\n LLL: 'D MMMM YYYY HH:mm',\n LLLL: 'dddd, D MMMM YYYY HH:mm',\n },\n calendar: {\n sameDay: '[Heddiw am] LT',\n nextDay: '[Yfory am] LT',\n nextWeek: 'dddd [am] LT',\n lastDay: '[Ddoe am] LT',\n lastWeek: 'dddd [diwethaf am] LT',\n sameElse: 'L',\n },\n relativeTime: {\n future: 'mewn %s',\n past: '%s yn ôl',\n s: 'ychydig eiliadau',\n ss: '%d eiliad',\n m: 'munud',\n mm: '%d munud',\n h: 'awr',\n hh: '%d awr',\n d: 'diwrnod',\n dd: '%d diwrnod',\n M: 'mis',\n MM: '%d mis',\n y: 'blwyddyn',\n yy: '%d flynedd',\n },\n dayOfMonthOrdinalParse: /\\d{1,2}(fed|ain|af|il|ydd|ed|eg)/,\n // traditional ordinal numbers above 31 are not commonly used in colloquial Welsh\n ordinal: function (number) {\n var b = number,\n output = '',\n lookup = [\n '',\n 'af',\n 'il',\n 'ydd',\n 'ydd',\n 'ed',\n 'ed',\n 'ed',\n 'fed',\n 'fed',\n 'fed', // 1af to 10fed\n 'eg',\n 'fed',\n 'eg',\n 'eg',\n 'fed',\n 'eg',\n 'eg',\n 'fed',\n 'eg',\n 'fed', // 11eg to 20fed\n ];\n if (b > 20) {\n if (b === 40 || b === 50 || b === 60 || b === 80 || b === 100) {\n output = 'fed'; // not 30ain, 70ain or 90ain\n } else {\n output = 'ain';\n }\n } else if (b > 0) {\n output = lookup[b];\n }\n return number + output;\n },\n week: {\n dow: 1, // Monday is the first day of the week.\n doy: 4, // The week that contains Jan 4th is the first week of the year.\n },\n });\n\n return cy;\n\n})));\n\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./~/moment/locale/cy.js\n// module id = 326\n// module chunks = 0 1 2 3 5 6 160","//! moment.js locale configuration\n//! locale : Danish [da]\n//! author : Ulrik Nielsen : https://github.com/mrbase\n\n;(function (global, factory) {\n typeof exports === 'object' && typeof module !== 'undefined'\n && typeof require === 'function' ? factory(require('../moment')) :\n typeof define === 'function' && define.amd ? define(['../moment'], factory) :\n factory(global.moment)\n}(this, (function (moment) { 'use strict';\n\n //! moment.js locale configuration\n\n var da = moment.defineLocale('da', {\n months: 'januar_februar_marts_april_maj_juni_juli_august_september_oktober_november_december'.split(\n '_'\n ),\n monthsShort: 'jan_feb_mar_apr_maj_jun_jul_aug_sep_okt_nov_dec'.split('_'),\n weekdays: 'søndag_mandag_tirsdag_onsdag_torsdag_fredag_lørdag'.split('_'),\n weekdaysShort: 'søn_man_tir_ons_tor_fre_lør'.split('_'),\n weekdaysMin: 'sø_ma_ti_on_to_fr_lø'.split('_'),\n longDateFormat: {\n LT: 'HH:mm',\n LTS: 'HH:mm:ss',\n L: 'DD.MM.YYYY',\n LL: 'D. MMMM YYYY',\n LLL: 'D. MMMM YYYY HH:mm',\n LLLL: 'dddd [d.] D. MMMM YYYY [kl.] HH:mm',\n },\n calendar: {\n sameDay: '[i dag kl.] LT',\n nextDay: '[i morgen kl.] LT',\n nextWeek: 'på dddd [kl.] LT',\n lastDay: '[i går kl.] LT',\n lastWeek: '[i] dddd[s kl.] LT',\n sameElse: 'L',\n },\n relativeTime: {\n future: 'om %s',\n past: '%s siden',\n s: 'få sekunder',\n ss: '%d sekunder',\n m: 'et minut',\n mm: '%d minutter',\n h: 'en time',\n hh: '%d timer',\n d: 'en dag',\n dd: '%d dage',\n M: 'en måned',\n MM: '%d måneder',\n y: 'et år',\n yy: '%d år',\n },\n dayOfMonthOrdinalParse: /\\d{1,2}\\./,\n ordinal: '%d.',\n week: {\n dow: 1, // Monday is the first day of the week.\n doy: 4, // The week that contains Jan 4th is the first week of the year.\n },\n });\n\n return da;\n\n})));\n\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./~/moment/locale/da.js\n// module id = 327\n// module chunks = 0 1 2 3 5 6 160","//! moment.js locale configuration\n//! locale : German (Austria) [de-at]\n//! author : lluchs : https://github.com/lluchs\n//! author: Menelion Elensúle: https://github.com/Oire\n//! author : Martin Groller : https://github.com/MadMG\n//! author : Mikolaj Dadela : https://github.com/mik01aj\n\n;(function (global, factory) {\n typeof exports === 'object' && typeof module !== 'undefined'\n && typeof require === 'function' ? factory(require('../moment')) :\n typeof define === 'function' && define.amd ? define(['../moment'], factory) :\n factory(global.moment)\n}(this, (function (moment) { 'use strict';\n\n //! moment.js locale configuration\n\n function processRelativeTime(number, withoutSuffix, key, isFuture) {\n var format = {\n m: ['eine Minute', 'einer Minute'],\n h: ['eine Stunde', 'einer Stunde'],\n d: ['ein Tag', 'einem Tag'],\n dd: [number + ' Tage', number + ' Tagen'],\n w: ['eine Woche', 'einer Woche'],\n M: ['ein Monat', 'einem Monat'],\n MM: [number + ' Monate', number + ' Monaten'],\n y: ['ein Jahr', 'einem Jahr'],\n yy: [number + ' Jahre', number + ' Jahren'],\n };\n return withoutSuffix ? format[key][0] : format[key][1];\n }\n\n var deAt = moment.defineLocale('de-at', {\n months: 'Jänner_Februar_März_April_Mai_Juni_Juli_August_September_Oktober_November_Dezember'.split(\n '_'\n ),\n monthsShort: 'Jän._Feb._März_Apr._Mai_Juni_Juli_Aug._Sep._Okt._Nov._Dez.'.split(\n '_'\n ),\n monthsParseExact: true,\n weekdays: 'Sonntag_Montag_Dienstag_Mittwoch_Donnerstag_Freitag_Samstag'.split(\n '_'\n ),\n weekdaysShort: 'So._Mo._Di._Mi._Do._Fr._Sa.'.split('_'),\n weekdaysMin: 'So_Mo_Di_Mi_Do_Fr_Sa'.split('_'),\n weekdaysParseExact: true,\n longDateFormat: {\n LT: 'HH:mm',\n LTS: 'HH:mm:ss',\n L: 'DD.MM.YYYY',\n LL: 'D. MMMM YYYY',\n LLL: 'D. MMMM YYYY HH:mm',\n LLLL: 'dddd, D. MMMM YYYY HH:mm',\n },\n calendar: {\n sameDay: '[heute um] LT [Uhr]',\n sameElse: 'L',\n nextDay: '[morgen um] LT [Uhr]',\n nextWeek: 'dddd [um] LT [Uhr]',\n lastDay: '[gestern um] LT [Uhr]',\n lastWeek: '[letzten] dddd [um] LT [Uhr]',\n },\n relativeTime: {\n future: 'in %s',\n past: 'vor %s',\n s: 'ein paar Sekunden',\n ss: '%d Sekunden',\n m: processRelativeTime,\n mm: '%d Minuten',\n h: processRelativeTime,\n hh: '%d Stunden',\n d: processRelativeTime,\n dd: processRelativeTime,\n w: processRelativeTime,\n ww: '%d Wochen',\n M: processRelativeTime,\n MM: processRelativeTime,\n y: processRelativeTime,\n yy: processRelativeTime,\n },\n dayOfMonthOrdinalParse: /\\d{1,2}\\./,\n ordinal: '%d.',\n week: {\n dow: 1, // Monday is the first day of the week.\n doy: 4, // The week that contains Jan 4th is the first week of the year.\n },\n });\n\n return deAt;\n\n})));\n\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./~/moment/locale/de-at.js\n// module id = 328\n// module chunks = 0 1 2 3 5 6 160","//! moment.js locale configuration\n//! locale : German (Switzerland) [de-ch]\n//! author : sschueller : https://github.com/sschueller\n\n;(function (global, factory) {\n typeof exports === 'object' && typeof module !== 'undefined'\n && typeof require === 'function' ? factory(require('../moment')) :\n typeof define === 'function' && define.amd ? define(['../moment'], factory) :\n factory(global.moment)\n}(this, (function (moment) { 'use strict';\n\n //! moment.js locale configuration\n\n function processRelativeTime(number, withoutSuffix, key, isFuture) {\n var format = {\n m: ['eine Minute', 'einer Minute'],\n h: ['eine Stunde', 'einer Stunde'],\n d: ['ein Tag', 'einem Tag'],\n dd: [number + ' Tage', number + ' Tagen'],\n w: ['eine Woche', 'einer Woche'],\n M: ['ein Monat', 'einem Monat'],\n MM: [number + ' Monate', number + ' Monaten'],\n y: ['ein Jahr', 'einem Jahr'],\n yy: [number + ' Jahre', number + ' Jahren'],\n };\n return withoutSuffix ? format[key][0] : format[key][1];\n }\n\n var deCh = moment.defineLocale('de-ch', {\n months: 'Januar_Februar_März_April_Mai_Juni_Juli_August_September_Oktober_November_Dezember'.split(\n '_'\n ),\n monthsShort: 'Jan._Feb._März_Apr._Mai_Juni_Juli_Aug._Sep._Okt._Nov._Dez.'.split(\n '_'\n ),\n monthsParseExact: true,\n weekdays: 'Sonntag_Montag_Dienstag_Mittwoch_Donnerstag_Freitag_Samstag'.split(\n '_'\n ),\n weekdaysShort: 'So_Mo_Di_Mi_Do_Fr_Sa'.split('_'),\n weekdaysMin: 'So_Mo_Di_Mi_Do_Fr_Sa'.split('_'),\n weekdaysParseExact: true,\n longDateFormat: {\n LT: 'HH:mm',\n LTS: 'HH:mm:ss',\n L: 'DD.MM.YYYY',\n LL: 'D. MMMM YYYY',\n LLL: 'D. MMMM YYYY HH:mm',\n LLLL: 'dddd, D. MMMM YYYY HH:mm',\n },\n calendar: {\n sameDay: '[heute um] LT [Uhr]',\n sameElse: 'L',\n nextDay: '[morgen um] LT [Uhr]',\n nextWeek: 'dddd [um] LT [Uhr]',\n lastDay: '[gestern um] LT [Uhr]',\n lastWeek: '[letzten] dddd [um] LT [Uhr]',\n },\n relativeTime: {\n future: 'in %s',\n past: 'vor %s',\n s: 'ein paar Sekunden',\n ss: '%d Sekunden',\n m: processRelativeTime,\n mm: '%d Minuten',\n h: processRelativeTime,\n hh: '%d Stunden',\n d: processRelativeTime,\n dd: processRelativeTime,\n w: processRelativeTime,\n ww: '%d Wochen',\n M: processRelativeTime,\n MM: processRelativeTime,\n y: processRelativeTime,\n yy: processRelativeTime,\n },\n dayOfMonthOrdinalParse: /\\d{1,2}\\./,\n ordinal: '%d.',\n week: {\n dow: 1, // Monday is the first day of the week.\n doy: 4, // The week that contains Jan 4th is the first week of the year.\n },\n });\n\n return deCh;\n\n})));\n\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./~/moment/locale/de-ch.js\n// module id = 329\n// module chunks = 0 1 2 3 5 6 160","//! moment.js locale configuration\n//! locale : German [de]\n//! author : lluchs : https://github.com/lluchs\n//! author: Menelion Elensúle: https://github.com/Oire\n//! author : Mikolaj Dadela : https://github.com/mik01aj\n\n;(function (global, factory) {\n typeof exports === 'object' && typeof module !== 'undefined'\n && typeof require === 'function' ? factory(require('../moment')) :\n typeof define === 'function' && define.amd ? define(['../moment'], factory) :\n factory(global.moment)\n}(this, (function (moment) { 'use strict';\n\n //! moment.js locale configuration\n\n function processRelativeTime(number, withoutSuffix, key, isFuture) {\n var format = {\n m: ['eine Minute', 'einer Minute'],\n h: ['eine Stunde', 'einer Stunde'],\n d: ['ein Tag', 'einem Tag'],\n dd: [number + ' Tage', number + ' Tagen'],\n w: ['eine Woche', 'einer Woche'],\n M: ['ein Monat', 'einem Monat'],\n MM: [number + ' Monate', number + ' Monaten'],\n y: ['ein Jahr', 'einem Jahr'],\n yy: [number + ' Jahre', number + ' Jahren'],\n };\n return withoutSuffix ? format[key][0] : format[key][1];\n }\n\n var de = moment.defineLocale('de', {\n months: 'Januar_Februar_März_April_Mai_Juni_Juli_August_September_Oktober_November_Dezember'.split(\n '_'\n ),\n monthsShort: 'Jan._Feb._März_Apr._Mai_Juni_Juli_Aug._Sep._Okt._Nov._Dez.'.split(\n '_'\n ),\n monthsParseExact: true,\n weekdays: 'Sonntag_Montag_Dienstag_Mittwoch_Donnerstag_Freitag_Samstag'.split(\n '_'\n ),\n weekdaysShort: 'So._Mo._Di._Mi._Do._Fr._Sa.'.split('_'),\n weekdaysMin: 'So_Mo_Di_Mi_Do_Fr_Sa'.split('_'),\n weekdaysParseExact: true,\n longDateFormat: {\n LT: 'HH:mm',\n LTS: 'HH:mm:ss',\n L: 'DD.MM.YYYY',\n LL: 'D. MMMM YYYY',\n LLL: 'D. MMMM YYYY HH:mm',\n LLLL: 'dddd, D. MMMM YYYY HH:mm',\n },\n calendar: {\n sameDay: '[heute um] LT [Uhr]',\n sameElse: 'L',\n nextDay: '[morgen um] LT [Uhr]',\n nextWeek: 'dddd [um] LT [Uhr]',\n lastDay: '[gestern um] LT [Uhr]',\n lastWeek: '[letzten] dddd [um] LT [Uhr]',\n },\n relativeTime: {\n future: 'in %s',\n past: 'vor %s',\n s: 'ein paar Sekunden',\n ss: '%d Sekunden',\n m: processRelativeTime,\n mm: '%d Minuten',\n h: processRelativeTime,\n hh: '%d Stunden',\n d: processRelativeTime,\n dd: processRelativeTime,\n w: processRelativeTime,\n ww: '%d Wochen',\n M: processRelativeTime,\n MM: processRelativeTime,\n y: processRelativeTime,\n yy: processRelativeTime,\n },\n dayOfMonthOrdinalParse: /\\d{1,2}\\./,\n ordinal: '%d.',\n week: {\n dow: 1, // Monday is the first day of the week.\n doy: 4, // The week that contains Jan 4th is the first week of the year.\n },\n });\n\n return de;\n\n})));\n\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./~/moment/locale/de.js\n// module id = 330\n// module chunks = 0 1 2 3 5 6 160","//! moment.js locale configuration\n//! locale : Maldivian [dv]\n//! author : Jawish Hameed : https://github.com/jawish\n\n;(function (global, factory) {\n typeof exports === 'object' && typeof module !== 'undefined'\n && typeof require === 'function' ? factory(require('../moment')) :\n typeof define === 'function' && define.amd ? define(['../moment'], factory) :\n factory(global.moment)\n}(this, (function (moment) { 'use strict';\n\n //! moment.js locale configuration\n\n var months = [\n 'ޖެނުއަރީ',\n 'ފެބްރުއަރީ',\n 'މާރިޗު',\n 'އޭޕްރީލު',\n 'މޭ',\n 'ޖޫން',\n 'ޖުލައި',\n 'އޯގަސްޓު',\n 'ސެޕްޓެމްބަރު',\n 'އޮކްޓޯބަރު',\n 'ނޮވެމްބަރު',\n 'ޑިސެމްބަރު',\n ],\n weekdays = [\n 'އާދިއްތަ',\n 'ހޯމަ',\n 'އަންގާރަ',\n 'ބުދަ',\n 'ބުރާސްފަތި',\n 'ހުކުރު',\n 'ހޮނިހިރު',\n ];\n\n var dv = moment.defineLocale('dv', {\n months: months,\n monthsShort: months,\n weekdays: weekdays,\n weekdaysShort: weekdays,\n weekdaysMin: 'އާދި_ހޯމަ_އަން_ބުދަ_ބުރާ_ހުކު_ހޮނި'.split('_'),\n longDateFormat: {\n LT: 'HH:mm',\n LTS: 'HH:mm:ss',\n L: 'D/M/YYYY',\n LL: 'D MMMM YYYY',\n LLL: 'D MMMM YYYY HH:mm',\n LLLL: 'dddd D MMMM YYYY HH:mm',\n },\n meridiemParse: /މކ|މފ/,\n isPM: function (input) {\n return 'މފ' === input;\n },\n meridiem: function (hour, minute, isLower) {\n if (hour < 12) {\n return 'މކ';\n } else {\n return 'މފ';\n }\n },\n calendar: {\n sameDay: '[މިއަދު] LT',\n nextDay: '[މާދަމާ] LT',\n nextWeek: 'dddd LT',\n lastDay: '[އިއްޔެ] LT',\n lastWeek: '[ފާއިތުވި] dddd LT',\n sameElse: 'L',\n },\n relativeTime: {\n future: 'ތެރޭގައި %s',\n past: 'ކުރިން %s',\n s: 'ސިކުންތުކޮޅެއް',\n ss: 'd% ސިކުންތު',\n m: 'މިނިޓެއް',\n mm: 'މިނިޓު %d',\n h: 'ގަޑިއިރެއް',\n hh: 'ގަޑިއިރު %d',\n d: 'ދުވަހެއް',\n dd: 'ދުވަސް %d',\n M: 'މަހެއް',\n MM: 'މަސް %d',\n y: 'އަހަރެއް',\n yy: 'އަހަރު %d',\n },\n preparse: function (string) {\n return string.replace(/،/g, ',');\n },\n postformat: function (string) {\n return string.replace(/,/g, '،');\n },\n week: {\n dow: 7, // Sunday is the first day of the week.\n doy: 12, // The week that contains Jan 12th is the first week of the year.\n },\n });\n\n return dv;\n\n})));\n\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./~/moment/locale/dv.js\n// module id = 331\n// module chunks = 0 1 2 3 5 6 160","//! moment.js locale configuration\n//! locale : Greek [el]\n//! author : Aggelos Karalias : https://github.com/mehiel\n\n;(function (global, factory) {\n typeof exports === 'object' && typeof module !== 'undefined'\n && typeof require === 'function' ? factory(require('../moment')) :\n typeof define === 'function' && define.amd ? define(['../moment'], factory) :\n factory(global.moment)\n}(this, (function (moment) { 'use strict';\n\n //! moment.js locale configuration\n\n function isFunction(input) {\n return (\n (typeof Function !== 'undefined' && input instanceof Function) ||\n Object.prototype.toString.call(input) === '[object Function]'\n );\n }\n\n var el = moment.defineLocale('el', {\n monthsNominativeEl: 'Ιανουάριος_Φεβρουάριος_Μάρτιος_Απρίλιος_Μάιος_Ιούνιος_Ιούλιος_Αύγουστος_Σεπτέμβριος_Οκτώβριος_Νοέμβριος_Δεκέμβριος'.split(\n '_'\n ),\n monthsGenitiveEl: 'Ιανουαρίου_Φεβρουαρίου_Μαρτίου_Απριλίου_Μαΐου_Ιουνίου_Ιουλίου_Αυγούστου_Σεπτεμβρίου_Οκτωβρίου_Νοεμβρίου_Δεκεμβρίου'.split(\n '_'\n ),\n months: function (momentToFormat, format) {\n if (!momentToFormat) {\n return this._monthsNominativeEl;\n } else if (\n typeof format === 'string' &&\n /D/.test(format.substring(0, format.indexOf('MMMM')))\n ) {\n // if there is a day number before 'MMMM'\n return this._monthsGenitiveEl[momentToFormat.month()];\n } else {\n return this._monthsNominativeEl[momentToFormat.month()];\n }\n },\n monthsShort: 'Ιαν_Φεβ_Μαρ_Απρ_Μαϊ_Ιουν_Ιουλ_Αυγ_Σεπ_Οκτ_Νοε_Δεκ'.split('_'),\n weekdays: 'Κυριακή_Δευτέρα_Τρίτη_Τετάρτη_Πέμπτη_Παρασκευή_Σάββατο'.split(\n '_'\n ),\n weekdaysShort: 'Κυρ_Δευ_Τρι_Τετ_Πεμ_Παρ_Σαβ'.split('_'),\n weekdaysMin: 'Κυ_Δε_Τρ_Τε_Πε_Πα_Σα'.split('_'),\n meridiem: function (hours, minutes, isLower) {\n if (hours > 11) {\n return isLower ? 'μμ' : 'ΜΜ';\n } else {\n return isLower ? 'πμ' : 'ΠΜ';\n }\n },\n isPM: function (input) {\n return (input + '').toLowerCase()[0] === 'μ';\n },\n meridiemParse: /[ΠΜ]\\.?Μ?\\.?/i,\n longDateFormat: {\n LT: 'h:mm A',\n LTS: 'h:mm:ss A',\n L: 'DD/MM/YYYY',\n LL: 'D MMMM YYYY',\n LLL: 'D MMMM YYYY h:mm A',\n LLLL: 'dddd, D MMMM YYYY h:mm A',\n },\n calendarEl: {\n sameDay: '[Σήμερα {}] LT',\n nextDay: '[Αύριο {}] LT',\n nextWeek: 'dddd [{}] LT',\n lastDay: '[Χθες {}] LT',\n lastWeek: function () {\n switch (this.day()) {\n case 6:\n return '[το προηγούμενο] dddd [{}] LT';\n default:\n return '[την προηγούμενη] dddd [{}] LT';\n }\n },\n sameElse: 'L',\n },\n calendar: function (key, mom) {\n var output = this._calendarEl[key],\n hours = mom && mom.hours();\n if (isFunction(output)) {\n output = output.apply(mom);\n }\n return output.replace('{}', hours % 12 === 1 ? 'στη' : 'στις');\n },\n relativeTime: {\n future: 'σε %s',\n past: '%s πριν',\n s: 'λίγα δευτερόλεπτα',\n ss: '%d δευτερόλεπτα',\n m: 'ένα λεπτό',\n mm: '%d λεπτά',\n h: 'μία ώρα',\n hh: '%d ώρες',\n d: 'μία μέρα',\n dd: '%d μέρες',\n M: 'ένας μήνας',\n MM: '%d μήνες',\n y: 'ένας χρόνος',\n yy: '%d χρόνια',\n },\n dayOfMonthOrdinalParse: /\\d{1,2}η/,\n ordinal: '%dη',\n week: {\n dow: 1, // Monday is the first day of the week.\n doy: 4, // The week that contains Jan 4st is the first week of the year.\n },\n });\n\n return el;\n\n})));\n\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./~/moment/locale/el.js\n// module id = 332\n// module chunks = 0 1 2 3 5 6 160","//! moment.js locale configuration\n//! locale : English (Australia) [en-au]\n//! author : Jared Morse : https://github.com/jarcoal\n\n;(function (global, factory) {\n typeof exports === 'object' && typeof module !== 'undefined'\n && typeof require === 'function' ? factory(require('../moment')) :\n typeof define === 'function' && define.amd ? define(['../moment'], factory) :\n factory(global.moment)\n}(this, (function (moment) { 'use strict';\n\n //! moment.js locale configuration\n\n var enAu = moment.defineLocale('en-au', {\n months: 'January_February_March_April_May_June_July_August_September_October_November_December'.split(\n '_'\n ),\n monthsShort: 'Jan_Feb_Mar_Apr_May_Jun_Jul_Aug_Sep_Oct_Nov_Dec'.split('_'),\n weekdays: 'Sunday_Monday_Tuesday_Wednesday_Thursday_Friday_Saturday'.split(\n '_'\n ),\n weekdaysShort: 'Sun_Mon_Tue_Wed_Thu_Fri_Sat'.split('_'),\n weekdaysMin: 'Su_Mo_Tu_We_Th_Fr_Sa'.split('_'),\n longDateFormat: {\n LT: 'h:mm A',\n LTS: 'h:mm:ss A',\n L: 'DD/MM/YYYY',\n LL: 'D MMMM YYYY',\n LLL: 'D MMMM YYYY h:mm A',\n LLLL: 'dddd, D MMMM YYYY h:mm A',\n },\n calendar: {\n sameDay: '[Today at] LT',\n nextDay: '[Tomorrow at] LT',\n nextWeek: 'dddd [at] LT',\n lastDay: '[Yesterday at] LT',\n lastWeek: '[Last] dddd [at] LT',\n sameElse: 'L',\n },\n relativeTime: {\n future: 'in %s',\n past: '%s ago',\n s: 'a few seconds',\n ss: '%d seconds',\n m: 'a minute',\n mm: '%d minutes',\n h: 'an hour',\n hh: '%d hours',\n d: 'a day',\n dd: '%d days',\n M: 'a month',\n MM: '%d months',\n y: 'a year',\n yy: '%d years',\n },\n dayOfMonthOrdinalParse: /\\d{1,2}(st|nd|rd|th)/,\n ordinal: function (number) {\n var b = number % 10,\n output =\n ~~((number % 100) / 10) === 1\n ? 'th'\n : b === 1\n ? 'st'\n : b === 2\n ? 'nd'\n : b === 3\n ? 'rd'\n : 'th';\n return number + output;\n },\n week: {\n dow: 0, // Sunday is the first day of the week.\n doy: 4, // The week that contains Jan 4th is the first week of the year.\n },\n });\n\n return enAu;\n\n})));\n\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./~/moment/locale/en-au.js\n// module id = 333\n// module chunks = 0 1 2 3 5 6 160","//! moment.js locale configuration\n//! locale : English (Canada) [en-ca]\n//! author : Jonathan Abourbih : https://github.com/jonbca\n\n;(function (global, factory) {\n typeof exports === 'object' && typeof module !== 'undefined'\n && typeof require === 'function' ? factory(require('../moment')) :\n typeof define === 'function' && define.amd ? define(['../moment'], factory) :\n factory(global.moment)\n}(this, (function (moment) { 'use strict';\n\n //! moment.js locale configuration\n\n var enCa = moment.defineLocale('en-ca', {\n months: 'January_February_March_April_May_June_July_August_September_October_November_December'.split(\n '_'\n ),\n monthsShort: 'Jan_Feb_Mar_Apr_May_Jun_Jul_Aug_Sep_Oct_Nov_Dec'.split('_'),\n weekdays: 'Sunday_Monday_Tuesday_Wednesday_Thursday_Friday_Saturday'.split(\n '_'\n ),\n weekdaysShort: 'Sun_Mon_Tue_Wed_Thu_Fri_Sat'.split('_'),\n weekdaysMin: 'Su_Mo_Tu_We_Th_Fr_Sa'.split('_'),\n longDateFormat: {\n LT: 'h:mm A',\n LTS: 'h:mm:ss A',\n L: 'YYYY-MM-DD',\n LL: 'MMMM D, YYYY',\n LLL: 'MMMM D, YYYY h:mm A',\n LLLL: 'dddd, MMMM D, YYYY h:mm A',\n },\n calendar: {\n sameDay: '[Today at] LT',\n nextDay: '[Tomorrow at] LT',\n nextWeek: 'dddd [at] LT',\n lastDay: '[Yesterday at] LT',\n lastWeek: '[Last] dddd [at] LT',\n sameElse: 'L',\n },\n relativeTime: {\n future: 'in %s',\n past: '%s ago',\n s: 'a few seconds',\n ss: '%d seconds',\n m: 'a minute',\n mm: '%d minutes',\n h: 'an hour',\n hh: '%d hours',\n d: 'a day',\n dd: '%d days',\n M: 'a month',\n MM: '%d months',\n y: 'a year',\n yy: '%d years',\n },\n dayOfMonthOrdinalParse: /\\d{1,2}(st|nd|rd|th)/,\n ordinal: function (number) {\n var b = number % 10,\n output =\n ~~((number % 100) / 10) === 1\n ? 'th'\n : b === 1\n ? 'st'\n : b === 2\n ? 'nd'\n : b === 3\n ? 'rd'\n : 'th';\n return number + output;\n },\n });\n\n return enCa;\n\n})));\n\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./~/moment/locale/en-ca.js\n// module id = 334\n// module chunks = 0 1 2 3 5 6 160","//! moment.js locale configuration\n//! locale : English (United Kingdom) [en-gb]\n//! author : Chris Gedrim : https://github.com/chrisgedrim\n\n;(function (global, factory) {\n typeof exports === 'object' && typeof module !== 'undefined'\n && typeof require === 'function' ? factory(require('../moment')) :\n typeof define === 'function' && define.amd ? define(['../moment'], factory) :\n factory(global.moment)\n}(this, (function (moment) { 'use strict';\n\n //! moment.js locale configuration\n\n var enGb = moment.defineLocale('en-gb', {\n months: 'January_February_March_April_May_June_July_August_September_October_November_December'.split(\n '_'\n ),\n monthsShort: 'Jan_Feb_Mar_Apr_May_Jun_Jul_Aug_Sep_Oct_Nov_Dec'.split('_'),\n weekdays: 'Sunday_Monday_Tuesday_Wednesday_Thursday_Friday_Saturday'.split(\n '_'\n ),\n weekdaysShort: 'Sun_Mon_Tue_Wed_Thu_Fri_Sat'.split('_'),\n weekdaysMin: 'Su_Mo_Tu_We_Th_Fr_Sa'.split('_'),\n longDateFormat: {\n LT: 'HH:mm',\n LTS: 'HH:mm:ss',\n L: 'DD/MM/YYYY',\n LL: 'D MMMM YYYY',\n LLL: 'D MMMM YYYY HH:mm',\n LLLL: 'dddd, D MMMM YYYY HH:mm',\n },\n calendar: {\n sameDay: '[Today at] LT',\n nextDay: '[Tomorrow at] LT',\n nextWeek: 'dddd [at] LT',\n lastDay: '[Yesterday at] LT',\n lastWeek: '[Last] dddd [at] LT',\n sameElse: 'L',\n },\n relativeTime: {\n future: 'in %s',\n past: '%s ago',\n s: 'a few seconds',\n ss: '%d seconds',\n m: 'a minute',\n mm: '%d minutes',\n h: 'an hour',\n hh: '%d hours',\n d: 'a day',\n dd: '%d days',\n M: 'a month',\n MM: '%d months',\n y: 'a year',\n yy: '%d years',\n },\n dayOfMonthOrdinalParse: /\\d{1,2}(st|nd|rd|th)/,\n ordinal: function (number) {\n var b = number % 10,\n output =\n ~~((number % 100) / 10) === 1\n ? 'th'\n : b === 1\n ? 'st'\n : b === 2\n ? 'nd'\n : b === 3\n ? 'rd'\n : 'th';\n return number + output;\n },\n week: {\n dow: 1, // Monday is the first day of the week.\n doy: 4, // The week that contains Jan 4th is the first week of the year.\n },\n });\n\n return enGb;\n\n})));\n\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./~/moment/locale/en-gb.js\n// module id = 335\n// module chunks = 0 1 2 3 5 6 160","//! moment.js locale configuration\n//! locale : English (Ireland) [en-ie]\n//! author : Chris Cartlidge : https://github.com/chriscartlidge\n\n;(function (global, factory) {\n typeof exports === 'object' && typeof module !== 'undefined'\n && typeof require === 'function' ? factory(require('../moment')) :\n typeof define === 'function' && define.amd ? define(['../moment'], factory) :\n factory(global.moment)\n}(this, (function (moment) { 'use strict';\n\n //! moment.js locale configuration\n\n var enIe = moment.defineLocale('en-ie', {\n months: 'January_February_March_April_May_June_July_August_September_October_November_December'.split(\n '_'\n ),\n monthsShort: 'Jan_Feb_Mar_Apr_May_Jun_Jul_Aug_Sep_Oct_Nov_Dec'.split('_'),\n weekdays: 'Sunday_Monday_Tuesday_Wednesday_Thursday_Friday_Saturday'.split(\n '_'\n ),\n weekdaysShort: 'Sun_Mon_Tue_Wed_Thu_Fri_Sat'.split('_'),\n weekdaysMin: 'Su_Mo_Tu_We_Th_Fr_Sa'.split('_'),\n longDateFormat: {\n LT: 'HH:mm',\n LTS: 'HH:mm:ss',\n L: 'DD/MM/YYYY',\n LL: 'D MMMM YYYY',\n LLL: 'D MMMM YYYY HH:mm',\n LLLL: 'dddd D MMMM YYYY HH:mm',\n },\n calendar: {\n sameDay: '[Today at] LT',\n nextDay: '[Tomorrow at] LT',\n nextWeek: 'dddd [at] LT',\n lastDay: '[Yesterday at] LT',\n lastWeek: '[Last] dddd [at] LT',\n sameElse: 'L',\n },\n relativeTime: {\n future: 'in %s',\n past: '%s ago',\n s: 'a few seconds',\n ss: '%d seconds',\n m: 'a minute',\n mm: '%d minutes',\n h: 'an hour',\n hh: '%d hours',\n d: 'a day',\n dd: '%d days',\n M: 'a month',\n MM: '%d months',\n y: 'a year',\n yy: '%d years',\n },\n dayOfMonthOrdinalParse: /\\d{1,2}(st|nd|rd|th)/,\n ordinal: function (number) {\n var b = number % 10,\n output =\n ~~((number % 100) / 10) === 1\n ? 'th'\n : b === 1\n ? 'st'\n : b === 2\n ? 'nd'\n : b === 3\n ? 'rd'\n : 'th';\n return number + output;\n },\n week: {\n dow: 1, // Monday is the first day of the week.\n doy: 4, // The week that contains Jan 4th is the first week of the year.\n },\n });\n\n return enIe;\n\n})));\n\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./~/moment/locale/en-ie.js\n// module id = 336\n// module chunks = 0 1 2 3 5 6 160","//! moment.js locale configuration\n//! locale : English (Israel) [en-il]\n//! author : Chris Gedrim : https://github.com/chrisgedrim\n\n;(function (global, factory) {\n typeof exports === 'object' && typeof module !== 'undefined'\n && typeof require === 'function' ? factory(require('../moment')) :\n typeof define === 'function' && define.amd ? define(['../moment'], factory) :\n factory(global.moment)\n}(this, (function (moment) { 'use strict';\n\n //! moment.js locale configuration\n\n var enIl = moment.defineLocale('en-il', {\n months: 'January_February_March_April_May_June_July_August_September_October_November_December'.split(\n '_'\n ),\n monthsShort: 'Jan_Feb_Mar_Apr_May_Jun_Jul_Aug_Sep_Oct_Nov_Dec'.split('_'),\n weekdays: 'Sunday_Monday_Tuesday_Wednesday_Thursday_Friday_Saturday'.split(\n '_'\n ),\n weekdaysShort: 'Sun_Mon_Tue_Wed_Thu_Fri_Sat'.split('_'),\n weekdaysMin: 'Su_Mo_Tu_We_Th_Fr_Sa'.split('_'),\n longDateFormat: {\n LT: 'HH:mm',\n LTS: 'HH:mm:ss',\n L: 'DD/MM/YYYY',\n LL: 'D MMMM YYYY',\n LLL: 'D MMMM YYYY HH:mm',\n LLLL: 'dddd, D MMMM YYYY HH:mm',\n },\n calendar: {\n sameDay: '[Today at] LT',\n nextDay: '[Tomorrow at] LT',\n nextWeek: 'dddd [at] LT',\n lastDay: '[Yesterday at] LT',\n lastWeek: '[Last] dddd [at] LT',\n sameElse: 'L',\n },\n relativeTime: {\n future: 'in %s',\n past: '%s ago',\n s: 'a few seconds',\n ss: '%d seconds',\n m: 'a minute',\n mm: '%d minutes',\n h: 'an hour',\n hh: '%d hours',\n d: 'a day',\n dd: '%d days',\n M: 'a month',\n MM: '%d months',\n y: 'a year',\n yy: '%d years',\n },\n dayOfMonthOrdinalParse: /\\d{1,2}(st|nd|rd|th)/,\n ordinal: function (number) {\n var b = number % 10,\n output =\n ~~((number % 100) / 10) === 1\n ? 'th'\n : b === 1\n ? 'st'\n : b === 2\n ? 'nd'\n : b === 3\n ? 'rd'\n : 'th';\n return number + output;\n },\n });\n\n return enIl;\n\n})));\n\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./~/moment/locale/en-il.js\n// module id = 337\n// module chunks = 0 1 2 3 5 6 160","//! moment.js locale configuration\n//! locale : English (India) [en-in]\n//! author : Jatin Agrawal : https://github.com/jatinag22\n\n;(function (global, factory) {\n typeof exports === 'object' && typeof module !== 'undefined'\n && typeof require === 'function' ? factory(require('../moment')) :\n typeof define === 'function' && define.amd ? define(['../moment'], factory) :\n factory(global.moment)\n}(this, (function (moment) { 'use strict';\n\n //! moment.js locale configuration\n\n var enIn = moment.defineLocale('en-in', {\n months: 'January_February_March_April_May_June_July_August_September_October_November_December'.split(\n '_'\n ),\n monthsShort: 'Jan_Feb_Mar_Apr_May_Jun_Jul_Aug_Sep_Oct_Nov_Dec'.split('_'),\n weekdays: 'Sunday_Monday_Tuesday_Wednesday_Thursday_Friday_Saturday'.split(\n '_'\n ),\n weekdaysShort: 'Sun_Mon_Tue_Wed_Thu_Fri_Sat'.split('_'),\n weekdaysMin: 'Su_Mo_Tu_We_Th_Fr_Sa'.split('_'),\n longDateFormat: {\n LT: 'h:mm A',\n LTS: 'h:mm:ss A',\n L: 'DD/MM/YYYY',\n LL: 'D MMMM YYYY',\n LLL: 'D MMMM YYYY h:mm A',\n LLLL: 'dddd, D MMMM YYYY h:mm A',\n },\n calendar: {\n sameDay: '[Today at] LT',\n nextDay: '[Tomorrow at] LT',\n nextWeek: 'dddd [at] LT',\n lastDay: '[Yesterday at] LT',\n lastWeek: '[Last] dddd [at] LT',\n sameElse: 'L',\n },\n relativeTime: {\n future: 'in %s',\n past: '%s ago',\n s: 'a few seconds',\n ss: '%d seconds',\n m: 'a minute',\n mm: '%d minutes',\n h: 'an hour',\n hh: '%d hours',\n d: 'a day',\n dd: '%d days',\n M: 'a month',\n MM: '%d months',\n y: 'a year',\n yy: '%d years',\n },\n dayOfMonthOrdinalParse: /\\d{1,2}(st|nd|rd|th)/,\n ordinal: function (number) {\n var b = number % 10,\n output =\n ~~((number % 100) / 10) === 1\n ? 'th'\n : b === 1\n ? 'st'\n : b === 2\n ? 'nd'\n : b === 3\n ? 'rd'\n : 'th';\n return number + output;\n },\n week: {\n dow: 0, // Sunday is the first day of the week.\n doy: 6, // The week that contains Jan 1st is the first week of the year.\n },\n });\n\n return enIn;\n\n})));\n\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./~/moment/locale/en-in.js\n// module id = 338\n// module chunks = 0 1 2 3 5 6 160","//! moment.js locale configuration\n//! locale : English (New Zealand) [en-nz]\n//! author : Luke McGregor : https://github.com/lukemcgregor\n\n;(function (global, factory) {\n typeof exports === 'object' && typeof module !== 'undefined'\n && typeof require === 'function' ? factory(require('../moment')) :\n typeof define === 'function' && define.amd ? define(['../moment'], factory) :\n factory(global.moment)\n}(this, (function (moment) { 'use strict';\n\n //! moment.js locale configuration\n\n var enNz = moment.defineLocale('en-nz', {\n months: 'January_February_March_April_May_June_July_August_September_October_November_December'.split(\n '_'\n ),\n monthsShort: 'Jan_Feb_Mar_Apr_May_Jun_Jul_Aug_Sep_Oct_Nov_Dec'.split('_'),\n weekdays: 'Sunday_Monday_Tuesday_Wednesday_Thursday_Friday_Saturday'.split(\n '_'\n ),\n weekdaysShort: 'Sun_Mon_Tue_Wed_Thu_Fri_Sat'.split('_'),\n weekdaysMin: 'Su_Mo_Tu_We_Th_Fr_Sa'.split('_'),\n longDateFormat: {\n LT: 'h:mm A',\n LTS: 'h:mm:ss A',\n L: 'DD/MM/YYYY',\n LL: 'D MMMM YYYY',\n LLL: 'D MMMM YYYY h:mm A',\n LLLL: 'dddd, D MMMM YYYY h:mm A',\n },\n calendar: {\n sameDay: '[Today at] LT',\n nextDay: '[Tomorrow at] LT',\n nextWeek: 'dddd [at] LT',\n lastDay: '[Yesterday at] LT',\n lastWeek: '[Last] dddd [at] LT',\n sameElse: 'L',\n },\n relativeTime: {\n future: 'in %s',\n past: '%s ago',\n s: 'a few seconds',\n ss: '%d seconds',\n m: 'a minute',\n mm: '%d minutes',\n h: 'an hour',\n hh: '%d hours',\n d: 'a day',\n dd: '%d days',\n M: 'a month',\n MM: '%d months',\n y: 'a year',\n yy: '%d years',\n },\n dayOfMonthOrdinalParse: /\\d{1,2}(st|nd|rd|th)/,\n ordinal: function (number) {\n var b = number % 10,\n output =\n ~~((number % 100) / 10) === 1\n ? 'th'\n : b === 1\n ? 'st'\n : b === 2\n ? 'nd'\n : b === 3\n ? 'rd'\n : 'th';\n return number + output;\n },\n week: {\n dow: 1, // Monday is the first day of the week.\n doy: 4, // The week that contains Jan 4th is the first week of the year.\n },\n });\n\n return enNz;\n\n})));\n\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./~/moment/locale/en-nz.js\n// module id = 339\n// module chunks = 0 1 2 3 5 6 160","//! moment.js locale configuration\n//! locale : English (Singapore) [en-sg]\n//! author : Matthew Castrillon-Madrigal : https://github.com/techdimension\n\n;(function (global, factory) {\n typeof exports === 'object' && typeof module !== 'undefined'\n && typeof require === 'function' ? factory(require('../moment')) :\n typeof define === 'function' && define.amd ? define(['../moment'], factory) :\n factory(global.moment)\n}(this, (function (moment) { 'use strict';\n\n //! moment.js locale configuration\n\n var enSg = moment.defineLocale('en-sg', {\n months: 'January_February_March_April_May_June_July_August_September_October_November_December'.split(\n '_'\n ),\n monthsShort: 'Jan_Feb_Mar_Apr_May_Jun_Jul_Aug_Sep_Oct_Nov_Dec'.split('_'),\n weekdays: 'Sunday_Monday_Tuesday_Wednesday_Thursday_Friday_Saturday'.split(\n '_'\n ),\n weekdaysShort: 'Sun_Mon_Tue_Wed_Thu_Fri_Sat'.split('_'),\n weekdaysMin: 'Su_Mo_Tu_We_Th_Fr_Sa'.split('_'),\n longDateFormat: {\n LT: 'HH:mm',\n LTS: 'HH:mm:ss',\n L: 'DD/MM/YYYY',\n LL: 'D MMMM YYYY',\n LLL: 'D MMMM YYYY HH:mm',\n LLLL: 'dddd, D MMMM YYYY HH:mm',\n },\n calendar: {\n sameDay: '[Today at] LT',\n nextDay: '[Tomorrow at] LT',\n nextWeek: 'dddd [at] LT',\n lastDay: '[Yesterday at] LT',\n lastWeek: '[Last] dddd [at] LT',\n sameElse: 'L',\n },\n relativeTime: {\n future: 'in %s',\n past: '%s ago',\n s: 'a few seconds',\n ss: '%d seconds',\n m: 'a minute',\n mm: '%d minutes',\n h: 'an hour',\n hh: '%d hours',\n d: 'a day',\n dd: '%d days',\n M: 'a month',\n MM: '%d months',\n y: 'a year',\n yy: '%d years',\n },\n dayOfMonthOrdinalParse: /\\d{1,2}(st|nd|rd|th)/,\n ordinal: function (number) {\n var b = number % 10,\n output =\n ~~((number % 100) / 10) === 1\n ? 'th'\n : b === 1\n ? 'st'\n : b === 2\n ? 'nd'\n : b === 3\n ? 'rd'\n : 'th';\n return number + output;\n },\n week: {\n dow: 1, // Monday is the first day of the week.\n doy: 4, // The week that contains Jan 4th is the first week of the year.\n },\n });\n\n return enSg;\n\n})));\n\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./~/moment/locale/en-sg.js\n// module id = 340\n// module chunks = 0 1 2 3 5 6 160","//! moment.js locale configuration\n//! locale : Esperanto [eo]\n//! author : Colin Dean : https://github.com/colindean\n//! author : Mia Nordentoft Imperatori : https://github.com/miestasmia\n//! comment : miestasmia corrected the translation by colindean\n//! comment : Vivakvo corrected the translation by colindean and miestasmia\n\n;(function (global, factory) {\n typeof exports === 'object' && typeof module !== 'undefined'\n && typeof require === 'function' ? factory(require('../moment')) :\n typeof define === 'function' && define.amd ? define(['../moment'], factory) :\n factory(global.moment)\n}(this, (function (moment) { 'use strict';\n\n //! moment.js locale configuration\n\n var eo = moment.defineLocale('eo', {\n months: 'januaro_februaro_marto_aprilo_majo_junio_julio_aŭgusto_septembro_oktobro_novembro_decembro'.split(\n '_'\n ),\n monthsShort: 'jan_feb_mart_apr_maj_jun_jul_aŭg_sept_okt_nov_dec'.split('_'),\n weekdays: 'dimanĉo_lundo_mardo_merkredo_ĵaŭdo_vendredo_sabato'.split('_'),\n weekdaysShort: 'dim_lun_mard_merk_ĵaŭ_ven_sab'.split('_'),\n weekdaysMin: 'di_lu_ma_me_ĵa_ve_sa'.split('_'),\n longDateFormat: {\n LT: 'HH:mm',\n LTS: 'HH:mm:ss',\n L: 'YYYY-MM-DD',\n LL: '[la] D[-an de] MMMM, YYYY',\n LLL: '[la] D[-an de] MMMM, YYYY HH:mm',\n LLLL: 'dddd[n], [la] D[-an de] MMMM, YYYY HH:mm',\n llll: 'ddd, [la] D[-an de] MMM, YYYY HH:mm',\n },\n meridiemParse: /[ap]\\.t\\.m/i,\n isPM: function (input) {\n return input.charAt(0).toLowerCase() === 'p';\n },\n meridiem: function (hours, minutes, isLower) {\n if (hours > 11) {\n return isLower ? 'p.t.m.' : 'P.T.M.';\n } else {\n return isLower ? 'a.t.m.' : 'A.T.M.';\n }\n },\n calendar: {\n sameDay: '[Hodiaŭ je] LT',\n nextDay: '[Morgaŭ je] LT',\n nextWeek: 'dddd[n je] LT',\n lastDay: '[Hieraŭ je] LT',\n lastWeek: '[pasintan] dddd[n je] LT',\n sameElse: 'L',\n },\n relativeTime: {\n future: 'post %s',\n past: 'antaŭ %s',\n s: 'kelkaj sekundoj',\n ss: '%d sekundoj',\n m: 'unu minuto',\n mm: '%d minutoj',\n h: 'unu horo',\n hh: '%d horoj',\n d: 'unu tago', //ne 'diurno', ĉar estas uzita por proksimumo\n dd: '%d tagoj',\n M: 'unu monato',\n MM: '%d monatoj',\n y: 'unu jaro',\n yy: '%d jaroj',\n },\n dayOfMonthOrdinalParse: /\\d{1,2}a/,\n ordinal: '%da',\n week: {\n dow: 1, // Monday is the first day of the week.\n doy: 7, // The week that contains Jan 7th is the first week of the year.\n },\n });\n\n return eo;\n\n})));\n\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./~/moment/locale/eo.js\n// module id = 341\n// module chunks = 0 1 2 3 5 6 160","//! moment.js locale configuration\n//! locale : Spanish (Dominican Republic) [es-do]\n\n;(function (global, factory) {\n typeof exports === 'object' && typeof module !== 'undefined'\n && typeof require === 'function' ? factory(require('../moment')) :\n typeof define === 'function' && define.amd ? define(['../moment'], factory) :\n factory(global.moment)\n}(this, (function (moment) { 'use strict';\n\n //! moment.js locale configuration\n\n var monthsShortDot = 'ene._feb._mar._abr._may._jun._jul._ago._sep._oct._nov._dic.'.split(\n '_'\n ),\n monthsShort = 'ene_feb_mar_abr_may_jun_jul_ago_sep_oct_nov_dic'.split('_'),\n monthsParse = [\n /^ene/i,\n /^feb/i,\n /^mar/i,\n /^abr/i,\n /^may/i,\n /^jun/i,\n /^jul/i,\n /^ago/i,\n /^sep/i,\n /^oct/i,\n /^nov/i,\n /^dic/i,\n ],\n monthsRegex = /^(enero|febrero|marzo|abril|mayo|junio|julio|agosto|septiembre|octubre|noviembre|diciembre|ene\\.?|feb\\.?|mar\\.?|abr\\.?|may\\.?|jun\\.?|jul\\.?|ago\\.?|sep\\.?|oct\\.?|nov\\.?|dic\\.?)/i;\n\n var esDo = moment.defineLocale('es-do', {\n months: 'enero_febrero_marzo_abril_mayo_junio_julio_agosto_septiembre_octubre_noviembre_diciembre'.split(\n '_'\n ),\n monthsShort: function (m, format) {\n if (!m) {\n return monthsShortDot;\n } else if (/-MMM-/.test(format)) {\n return monthsShort[m.month()];\n } else {\n return monthsShortDot[m.month()];\n }\n },\n monthsRegex: monthsRegex,\n monthsShortRegex: monthsRegex,\n monthsStrictRegex: /^(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 (\n '[el] dddd [pasado a la' +\n (this.hours() !== 1 ? 's' : '') +\n '] LT'\n );\n },\n sameElse: 'L',\n },\n relativeTime: {\n future: 'en %s',\n past: 'hace %s',\n s: 'unos segundos',\n ss: '%d segundos',\n m: 'un minuto',\n mm: '%d minutos',\n h: 'una hora',\n hh: '%d horas',\n d: 'un día',\n dd: '%d días',\n w: 'una semana',\n ww: '%d semanas',\n M: 'un mes',\n MM: '%d meses',\n y: 'un año',\n yy: '%d años',\n },\n dayOfMonthOrdinalParse: /\\d{1,2}º/,\n ordinal: '%dº',\n week: {\n dow: 1, // Monday is the first day of the week.\n doy: 4, // The week that contains Jan 4th is the first week of the year.\n },\n });\n\n return esDo;\n\n})));\n\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./~/moment/locale/es-do.js\n// module id = 342\n// module chunks = 0 1 2 3 5 6 160","//! moment.js locale configuration\n//! locale : Spanish (Mexico) [es-mx]\n//! author : JC Franco : https://github.com/jcfranco\n\n;(function (global, factory) {\n typeof exports === 'object' && typeof module !== 'undefined'\n && typeof require === 'function' ? factory(require('../moment')) :\n typeof define === 'function' && define.amd ? define(['../moment'], factory) :\n factory(global.moment)\n}(this, (function (moment) { 'use strict';\n\n //! moment.js locale configuration\n\n var monthsShortDot = 'ene._feb._mar._abr._may._jun._jul._ago._sep._oct._nov._dic.'.split(\n '_'\n ),\n monthsShort = 'ene_feb_mar_abr_may_jun_jul_ago_sep_oct_nov_dic'.split('_'),\n monthsParse = [\n /^ene/i,\n /^feb/i,\n /^mar/i,\n /^abr/i,\n /^may/i,\n /^jun/i,\n /^jul/i,\n /^ago/i,\n /^sep/i,\n /^oct/i,\n /^nov/i,\n /^dic/i,\n ],\n monthsRegex = /^(enero|febrero|marzo|abril|mayo|junio|julio|agosto|septiembre|octubre|noviembre|diciembre|ene\\.?|feb\\.?|mar\\.?|abr\\.?|may\\.?|jun\\.?|jul\\.?|ago\\.?|sep\\.?|oct\\.?|nov\\.?|dic\\.?)/i;\n\n var esMx = moment.defineLocale('es-mx', {\n months: 'enero_febrero_marzo_abril_mayo_junio_julio_agosto_septiembre_octubre_noviembre_diciembre'.split(\n '_'\n ),\n monthsShort: function (m, format) {\n if (!m) {\n return monthsShortDot;\n } else if (/-MMM-/.test(format)) {\n return monthsShort[m.month()];\n } else {\n return monthsShortDot[m.month()];\n }\n },\n monthsRegex: monthsRegex,\n monthsShortRegex: monthsRegex,\n monthsStrictRegex: /^(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 (\n '[el] dddd [pasado a la' +\n (this.hours() !== 1 ? 's' : '') +\n '] LT'\n );\n },\n sameElse: 'L',\n },\n relativeTime: {\n future: 'en %s',\n past: 'hace %s',\n s: 'unos segundos',\n ss: '%d segundos',\n m: 'un minuto',\n mm: '%d minutos',\n h: 'una hora',\n hh: '%d horas',\n d: 'un día',\n dd: '%d días',\n w: 'una semana',\n ww: '%d semanas',\n M: 'un mes',\n MM: '%d meses',\n y: 'un año',\n yy: '%d años',\n },\n dayOfMonthOrdinalParse: /\\d{1,2}º/,\n ordinal: '%dº',\n week: {\n dow: 0, // Sunday is the first day of the week.\n doy: 4, // The week that contains Jan 4th is the first week of the year.\n },\n invalidDate: 'Fecha inválida',\n });\n\n return esMx;\n\n})));\n\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./~/moment/locale/es-mx.js\n// module id = 343\n// module chunks = 0 1 2 3 5 6 160","//! moment.js locale configuration\n//! locale : Spanish (United States) [es-us]\n//! author : bustta : https://github.com/bustta\n//! author : chrisrodz : https://github.com/chrisrodz\n\n;(function (global, factory) {\n typeof exports === 'object' && typeof module !== 'undefined'\n && typeof require === 'function' ? factory(require('../moment')) :\n typeof define === 'function' && define.amd ? define(['../moment'], factory) :\n factory(global.moment)\n}(this, (function (moment) { 'use strict';\n\n //! moment.js locale configuration\n\n var monthsShortDot = 'ene._feb._mar._abr._may._jun._jul._ago._sep._oct._nov._dic.'.split(\n '_'\n ),\n monthsShort = 'ene_feb_mar_abr_may_jun_jul_ago_sep_oct_nov_dic'.split('_'),\n monthsParse = [\n /^ene/i,\n /^feb/i,\n /^mar/i,\n /^abr/i,\n /^may/i,\n /^jun/i,\n /^jul/i,\n /^ago/i,\n /^sep/i,\n /^oct/i,\n /^nov/i,\n /^dic/i,\n ],\n monthsRegex = /^(enero|febrero|marzo|abril|mayo|junio|julio|agosto|septiembre|octubre|noviembre|diciembre|ene\\.?|feb\\.?|mar\\.?|abr\\.?|may\\.?|jun\\.?|jul\\.?|ago\\.?|sep\\.?|oct\\.?|nov\\.?|dic\\.?)/i;\n\n var esUs = moment.defineLocale('es-us', {\n months: 'enero_febrero_marzo_abril_mayo_junio_julio_agosto_septiembre_octubre_noviembre_diciembre'.split(\n '_'\n ),\n monthsShort: function (m, format) {\n if (!m) {\n return monthsShortDot;\n } else if (/-MMM-/.test(format)) {\n return monthsShort[m.month()];\n } else {\n return monthsShortDot[m.month()];\n }\n },\n monthsRegex: monthsRegex,\n monthsShortRegex: monthsRegex,\n monthsStrictRegex: /^(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 (\n '[el] dddd [pasado a la' +\n (this.hours() !== 1 ? 's' : '') +\n '] LT'\n );\n },\n sameElse: 'L',\n },\n relativeTime: {\n future: 'en %s',\n past: 'hace %s',\n s: 'unos segundos',\n ss: '%d segundos',\n m: 'un minuto',\n mm: '%d minutos',\n h: 'una hora',\n hh: '%d horas',\n d: 'un día',\n dd: '%d días',\n w: 'una semana',\n ww: '%d semanas',\n M: 'un mes',\n MM: '%d meses',\n y: 'un año',\n yy: '%d años',\n },\n dayOfMonthOrdinalParse: /\\d{1,2}º/,\n ordinal: '%dº',\n week: {\n dow: 0, // Sunday is the first day of the week.\n doy: 6, // The week that contains Jan 6th is the first week of the year.\n },\n });\n\n return esUs;\n\n})));\n\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./~/moment/locale/es-us.js\n// module id = 344\n// module chunks = 0 1 2 3 5 6 160","//! moment.js locale configuration\n//! locale : Spanish [es]\n//! author : Julio Napurí : https://github.com/julionc\n\n;(function (global, factory) {\n typeof exports === 'object' && typeof module !== 'undefined'\n && typeof require === 'function' ? factory(require('../moment')) :\n typeof define === 'function' && define.amd ? define(['../moment'], factory) :\n factory(global.moment)\n}(this, (function (moment) { 'use strict';\n\n //! moment.js locale configuration\n\n var monthsShortDot = 'ene._feb._mar._abr._may._jun._jul._ago._sep._oct._nov._dic.'.split(\n '_'\n ),\n monthsShort = 'ene_feb_mar_abr_may_jun_jul_ago_sep_oct_nov_dic'.split('_'),\n monthsParse = [\n /^ene/i,\n /^feb/i,\n /^mar/i,\n /^abr/i,\n /^may/i,\n /^jun/i,\n /^jul/i,\n /^ago/i,\n /^sep/i,\n /^oct/i,\n /^nov/i,\n /^dic/i,\n ],\n monthsRegex = /^(enero|febrero|marzo|abril|mayo|junio|julio|agosto|septiembre|octubre|noviembre|diciembre|ene\\.?|feb\\.?|mar\\.?|abr\\.?|may\\.?|jun\\.?|jul\\.?|ago\\.?|sep\\.?|oct\\.?|nov\\.?|dic\\.?)/i;\n\n var es = moment.defineLocale('es', {\n months: 'enero_febrero_marzo_abril_mayo_junio_julio_agosto_septiembre_octubre_noviembre_diciembre'.split(\n '_'\n ),\n monthsShort: function (m, format) {\n if (!m) {\n return monthsShortDot;\n } else if (/-MMM-/.test(format)) {\n return monthsShort[m.month()];\n } else {\n return monthsShortDot[m.month()];\n }\n },\n monthsRegex: monthsRegex,\n monthsShortRegex: monthsRegex,\n monthsStrictRegex: /^(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 (\n '[el] dddd [pasado a la' +\n (this.hours() !== 1 ? 's' : '') +\n '] LT'\n );\n },\n sameElse: 'L',\n },\n relativeTime: {\n future: 'en %s',\n past: 'hace %s',\n s: 'unos segundos',\n ss: '%d segundos',\n m: 'un minuto',\n mm: '%d minutos',\n h: 'una hora',\n hh: '%d horas',\n d: 'un día',\n dd: '%d días',\n w: 'una semana',\n ww: '%d semanas',\n M: 'un mes',\n MM: '%d meses',\n y: 'un año',\n yy: '%d años',\n },\n dayOfMonthOrdinalParse: /\\d{1,2}º/,\n ordinal: '%dº',\n week: {\n dow: 1, // Monday is the first day of the week.\n doy: 4, // The week that contains Jan 4th is the first week of the year.\n },\n invalidDate: 'Fecha inválida',\n });\n\n return es;\n\n})));\n\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./~/moment/locale/es.js\n// module id = 345\n// module chunks = 0 1 2 3 5 6 160","//! moment.js locale configuration\n//! locale : Estonian [et]\n//! author : Henry Kehlmann : https://github.com/madhenry\n//! improvements : Illimar Tambek : https://github.com/ragulka\n\n;(function (global, factory) {\n typeof exports === 'object' && typeof module !== 'undefined'\n && typeof require === 'function' ? factory(require('../moment')) :\n typeof define === 'function' && define.amd ? define(['../moment'], factory) :\n factory(global.moment)\n}(this, (function (moment) { 'use strict';\n\n //! moment.js locale configuration\n\n function processRelativeTime(number, withoutSuffix, key, isFuture) {\n var format = {\n s: ['mõne sekundi', 'mõni sekund', 'paar sekundit'],\n ss: [number + 'sekundi', number + 'sekundit'],\n m: ['ühe minuti', 'üks minut'],\n mm: [number + ' minuti', number + ' minutit'],\n h: ['ühe tunni', 'tund aega', 'üks tund'],\n hh: [number + ' tunni', number + ' tundi'],\n d: ['ühe päeva', 'üks päev'],\n M: ['kuu aja', 'kuu aega', 'üks kuu'],\n MM: [number + ' kuu', number + ' kuud'],\n y: ['ühe aasta', 'aasta', 'üks aasta'],\n yy: [number + ' aasta', number + ' aastat'],\n };\n if (withoutSuffix) {\n return format[key][2] ? format[key][2] : format[key][1];\n }\n return isFuture ? format[key][0] : format[key][1];\n }\n\n var et = moment.defineLocale('et', {\n months: 'jaanuar_veebruar_märts_aprill_mai_juuni_juuli_august_september_oktoober_november_detsember'.split(\n '_'\n ),\n monthsShort: 'jaan_veebr_märts_apr_mai_juuni_juuli_aug_sept_okt_nov_dets'.split(\n '_'\n ),\n weekdays: 'pühapäev_esmaspäev_teisipäev_kolmapäev_neljapäev_reede_laupäev'.split(\n '_'\n ),\n weekdaysShort: 'P_E_T_K_N_R_L'.split('_'),\n weekdaysMin: 'P_E_T_K_N_R_L'.split('_'),\n longDateFormat: {\n LT: 'H:mm',\n LTS: 'H:mm:ss',\n L: 'DD.MM.YYYY',\n LL: 'D. MMMM YYYY',\n LLL: 'D. MMMM YYYY H:mm',\n LLLL: 'dddd, D. MMMM YYYY H:mm',\n },\n calendar: {\n sameDay: '[Täna,] LT',\n nextDay: '[Homme,] LT',\n nextWeek: '[Järgmine] dddd LT',\n lastDay: '[Eile,] LT',\n lastWeek: '[Eelmine] dddd LT',\n sameElse: 'L',\n },\n relativeTime: {\n future: '%s pärast',\n past: '%s tagasi',\n s: processRelativeTime,\n ss: processRelativeTime,\n m: processRelativeTime,\n mm: processRelativeTime,\n h: processRelativeTime,\n hh: processRelativeTime,\n d: processRelativeTime,\n dd: '%d päeva',\n M: processRelativeTime,\n MM: processRelativeTime,\n y: processRelativeTime,\n yy: processRelativeTime,\n },\n dayOfMonthOrdinalParse: /\\d{1,2}\\./,\n ordinal: '%d.',\n week: {\n dow: 1, // Monday is the first day of the week.\n doy: 4, // The week that contains Jan 4th is the first week of the year.\n },\n });\n\n return et;\n\n})));\n\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./~/moment/locale/et.js\n// module id = 346\n// module chunks = 0 1 2 3 5 6 160","//! moment.js locale configuration\n//! locale : Basque [eu]\n//! author : Eneko Illarramendi : https://github.com/eillarra\n\n;(function (global, factory) {\n typeof exports === 'object' && typeof module !== 'undefined'\n && typeof require === 'function' ? factory(require('../moment')) :\n typeof define === 'function' && define.amd ? define(['../moment'], factory) :\n factory(global.moment)\n}(this, (function (moment) { 'use strict';\n\n //! moment.js locale configuration\n\n var eu = moment.defineLocale('eu', {\n months: 'urtarrila_otsaila_martxoa_apirila_maiatza_ekaina_uztaila_abuztua_iraila_urria_azaroa_abendua'.split(\n '_'\n ),\n monthsShort: 'urt._ots._mar._api._mai._eka._uzt._abu._ira._urr._aza._abe.'.split(\n '_'\n ),\n monthsParseExact: true,\n weekdays: 'igandea_astelehena_asteartea_asteazkena_osteguna_ostirala_larunbata'.split(\n '_'\n ),\n weekdaysShort: 'ig._al._ar._az._og._ol._lr.'.split('_'),\n weekdaysMin: 'ig_al_ar_az_og_ol_lr'.split('_'),\n weekdaysParseExact: true,\n longDateFormat: {\n LT: 'HH:mm',\n LTS: 'HH:mm:ss',\n L: 'YYYY-MM-DD',\n LL: 'YYYY[ko] MMMM[ren] D[a]',\n LLL: 'YYYY[ko] MMMM[ren] D[a] HH:mm',\n LLLL: 'dddd, YYYY[ko] MMMM[ren] D[a] HH:mm',\n l: 'YYYY-M-D',\n ll: 'YYYY[ko] MMM D[a]',\n lll: 'YYYY[ko] MMM D[a] HH:mm',\n llll: 'ddd, YYYY[ko] MMM D[a] HH:mm',\n },\n calendar: {\n sameDay: '[gaur] LT[etan]',\n nextDay: '[bihar] LT[etan]',\n nextWeek: 'dddd LT[etan]',\n lastDay: '[atzo] LT[etan]',\n lastWeek: '[aurreko] dddd LT[etan]',\n sameElse: 'L',\n },\n relativeTime: {\n future: '%s barru',\n past: 'duela %s',\n s: 'segundo batzuk',\n ss: '%d segundo',\n m: 'minutu bat',\n mm: '%d minutu',\n h: 'ordu bat',\n hh: '%d ordu',\n d: 'egun bat',\n dd: '%d egun',\n M: 'hilabete bat',\n MM: '%d hilabete',\n y: 'urte bat',\n yy: '%d urte',\n },\n dayOfMonthOrdinalParse: /\\d{1,2}\\./,\n ordinal: '%d.',\n week: {\n dow: 1, // Monday is the first day of the week.\n doy: 7, // The week that contains Jan 7th is the first week of the year.\n },\n });\n\n return eu;\n\n})));\n\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./~/moment/locale/eu.js\n// module id = 347\n// module chunks = 0 1 2 3 5 6 160","//! moment.js locale configuration\n//! locale : Persian [fa]\n//! author : Ebrahim Byagowi : https://github.com/ebraminio\n\n;(function (global, factory) {\n typeof exports === 'object' && typeof module !== 'undefined'\n && typeof require === 'function' ? factory(require('../moment')) :\n typeof define === 'function' && define.amd ? define(['../moment'], factory) :\n factory(global.moment)\n}(this, (function (moment) { 'use strict';\n\n //! moment.js locale configuration\n\n var symbolMap = {\n 1: '۱',\n 2: '۲',\n 3: '۳',\n 4: '۴',\n 5: '۵',\n 6: '۶',\n 7: '۷',\n 8: '۸',\n 9: '۹',\n 0: '۰',\n },\n numberMap = {\n '۱': '1',\n '۲': '2',\n '۳': '3',\n '۴': '4',\n '۵': '5',\n '۶': '6',\n '۷': '7',\n '۸': '8',\n '۹': '9',\n '۰': '0',\n };\n\n var fa = moment.defineLocale('fa', {\n months: 'ژانویه_فوریه_مارس_آوریل_مه_ژوئن_ژوئیه_اوت_سپتامبر_اکتبر_نوامبر_دسامبر'.split(\n '_'\n ),\n monthsShort: 'ژانویه_فوریه_مارس_آوریل_مه_ژوئن_ژوئیه_اوت_سپتامبر_اکتبر_نوامبر_دسامبر'.split(\n '_'\n ),\n weekdays: 'یک\\u200cشنبه_دوشنبه_سه\\u200cشنبه_چهارشنبه_پنج\\u200cشنبه_جمعه_شنبه'.split(\n '_'\n ),\n weekdaysShort: 'یک\\u200cشنبه_دوشنبه_سه\\u200cشنبه_چهارشنبه_پنج\\u200cشنبه_جمعه_شنبه'.split(\n '_'\n ),\n weekdaysMin: 'ی_د_س_چ_پ_ج_ش'.split('_'),\n weekdaysParseExact: true,\n longDateFormat: {\n LT: 'HH:mm',\n LTS: 'HH:mm:ss',\n L: 'DD/MM/YYYY',\n LL: 'D MMMM YYYY',\n LLL: 'D MMMM YYYY HH:mm',\n LLLL: 'dddd, D MMMM YYYY HH:mm',\n },\n meridiemParse: /قبل از ظهر|بعد از ظهر/,\n isPM: function (input) {\n return /بعد از ظهر/.test(input);\n },\n meridiem: function (hour, minute, isLower) {\n if (hour < 12) {\n return 'قبل از ظهر';\n } else {\n return 'بعد از ظهر';\n }\n },\n calendar: {\n sameDay: '[امروز ساعت] LT',\n nextDay: '[فردا ساعت] LT',\n nextWeek: 'dddd [ساعت] LT',\n lastDay: '[دیروز ساعت] LT',\n lastWeek: 'dddd [پیش] [ساعت] LT',\n sameElse: 'L',\n },\n relativeTime: {\n future: 'در %s',\n past: '%s پیش',\n s: 'چند ثانیه',\n ss: '%d ثانیه',\n m: 'یک دقیقه',\n mm: '%d دقیقه',\n h: 'یک ساعت',\n hh: '%d ساعت',\n d: 'یک روز',\n dd: '%d روز',\n M: 'یک ماه',\n MM: '%d ماه',\n y: 'یک سال',\n yy: '%d سال',\n },\n preparse: function (string) {\n return string\n .replace(/[۰-۹]/g, function (match) {\n return numberMap[match];\n })\n .replace(/،/g, ',');\n },\n postformat: function (string) {\n return string\n .replace(/\\d/g, function (match) {\n return symbolMap[match];\n })\n .replace(/,/g, '،');\n },\n dayOfMonthOrdinalParse: /\\d{1,2}م/,\n ordinal: '%dم',\n week: {\n dow: 6, // Saturday is the first day of the week.\n doy: 12, // The week that contains Jan 12th is the first week of the year.\n },\n });\n\n return fa;\n\n})));\n\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./~/moment/locale/fa.js\n// module id = 348\n// module chunks = 0 1 2 3 5 6 160","//! moment.js locale configuration\n//! locale : Finnish [fi]\n//! author : Tarmo Aidantausta : https://github.com/bleadof\n\n;(function (global, factory) {\n typeof exports === 'object' && typeof module !== 'undefined'\n && typeof require === 'function' ? factory(require('../moment')) :\n typeof define === 'function' && define.amd ? define(['../moment'], factory) :\n factory(global.moment)\n}(this, (function (moment) { 'use strict';\n\n //! moment.js locale configuration\n\n var numbersPast = 'nolla yksi kaksi kolme neljä viisi kuusi seitsemän kahdeksan yhdeksän'.split(\n ' '\n ),\n numbersFuture = [\n 'nolla',\n 'yhden',\n 'kahden',\n 'kolmen',\n 'neljän',\n 'viiden',\n 'kuuden',\n numbersPast[7],\n numbersPast[8],\n numbersPast[9],\n ];\n function translate(number, withoutSuffix, key, isFuture) {\n var result = '';\n switch (key) {\n case 's':\n return isFuture ? 'muutaman sekunnin' : 'muutama sekunti';\n case 'ss':\n result = isFuture ? 'sekunnin' : 'sekuntia';\n break;\n case 'm':\n return isFuture ? 'minuutin' : 'minuutti';\n case 'mm':\n result = isFuture ? 'minuutin' : 'minuuttia';\n break;\n case 'h':\n return isFuture ? 'tunnin' : 'tunti';\n case 'hh':\n result = isFuture ? 'tunnin' : 'tuntia';\n break;\n case 'd':\n return isFuture ? 'päivän' : 'päivä';\n case 'dd':\n result = isFuture ? 'päivän' : 'päivää';\n break;\n case 'M':\n return isFuture ? 'kuukauden' : 'kuukausi';\n case 'MM':\n result = isFuture ? 'kuukauden' : 'kuukautta';\n break;\n case 'y':\n return isFuture ? 'vuoden' : 'vuosi';\n case 'yy':\n result = isFuture ? 'vuoden' : 'vuotta';\n break;\n }\n result = verbalNumber(number, isFuture) + ' ' + result;\n return result;\n }\n function verbalNumber(number, isFuture) {\n return number < 10\n ? isFuture\n ? numbersFuture[number]\n : numbersPast[number]\n : number;\n }\n\n var fi = moment.defineLocale('fi', {\n months: 'tammikuu_helmikuu_maaliskuu_huhtikuu_toukokuu_kesäkuu_heinäkuu_elokuu_syyskuu_lokakuu_marraskuu_joulukuu'.split(\n '_'\n ),\n monthsShort: 'tammi_helmi_maalis_huhti_touko_kesä_heinä_elo_syys_loka_marras_joulu'.split(\n '_'\n ),\n weekdays: 'sunnuntai_maanantai_tiistai_keskiviikko_torstai_perjantai_lauantai'.split(\n '_'\n ),\n weekdaysShort: 'su_ma_ti_ke_to_pe_la'.split('_'),\n weekdaysMin: 'su_ma_ti_ke_to_pe_la'.split('_'),\n longDateFormat: {\n LT: 'HH.mm',\n LTS: 'HH.mm.ss',\n L: 'DD.MM.YYYY',\n LL: 'Do MMMM[ta] YYYY',\n LLL: 'Do MMMM[ta] YYYY, [klo] HH.mm',\n LLLL: 'dddd, Do MMMM[ta] YYYY, [klo] HH.mm',\n l: 'D.M.YYYY',\n ll: 'Do MMM YYYY',\n lll: 'Do MMM YYYY, [klo] HH.mm',\n llll: 'ddd, Do MMM YYYY, [klo] HH.mm',\n },\n calendar: {\n sameDay: '[tänään] [klo] LT',\n nextDay: '[huomenna] [klo] LT',\n nextWeek: 'dddd [klo] LT',\n lastDay: '[eilen] [klo] LT',\n lastWeek: '[viime] dddd[na] [klo] LT',\n sameElse: 'L',\n },\n relativeTime: {\n future: '%s päästä',\n past: '%s sitten',\n s: translate,\n ss: translate,\n m: translate,\n mm: translate,\n h: translate,\n hh: translate,\n d: translate,\n dd: translate,\n M: translate,\n MM: translate,\n y: translate,\n yy: translate,\n },\n dayOfMonthOrdinalParse: /\\d{1,2}\\./,\n ordinal: '%d.',\n week: {\n dow: 1, // Monday is the first day of the week.\n doy: 4, // The week that contains Jan 4th is the first week of the year.\n },\n });\n\n return fi;\n\n})));\n\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./~/moment/locale/fi.js\n// module id = 349\n// module chunks = 0 1 2 3 5 6 160","//! moment.js locale configuration\n//! locale : Filipino [fil]\n//! author : Dan Hagman : https://github.com/hagmandan\n//! author : Matthew Co : https://github.com/matthewdeeco\n\n;(function (global, factory) {\n typeof exports === 'object' && typeof module !== 'undefined'\n && typeof require === 'function' ? factory(require('../moment')) :\n typeof define === 'function' && define.amd ? define(['../moment'], factory) :\n factory(global.moment)\n}(this, (function (moment) { 'use strict';\n\n //! moment.js locale configuration\n\n var fil = moment.defineLocale('fil', {\n months: 'Enero_Pebrero_Marso_Abril_Mayo_Hunyo_Hulyo_Agosto_Setyembre_Oktubre_Nobyembre_Disyembre'.split(\n '_'\n ),\n monthsShort: 'Ene_Peb_Mar_Abr_May_Hun_Hul_Ago_Set_Okt_Nob_Dis'.split('_'),\n weekdays: 'Linggo_Lunes_Martes_Miyerkules_Huwebes_Biyernes_Sabado'.split(\n '_'\n ),\n weekdaysShort: 'Lin_Lun_Mar_Miy_Huw_Biy_Sab'.split('_'),\n weekdaysMin: 'Li_Lu_Ma_Mi_Hu_Bi_Sab'.split('_'),\n longDateFormat: {\n LT: 'HH:mm',\n LTS: 'HH:mm:ss',\n L: 'MM/D/YYYY',\n LL: 'MMMM D, YYYY',\n LLL: 'MMMM D, YYYY HH:mm',\n LLLL: 'dddd, MMMM DD, YYYY HH:mm',\n },\n calendar: {\n sameDay: 'LT [ngayong araw]',\n nextDay: '[Bukas ng] LT',\n nextWeek: 'LT [sa susunod na] dddd',\n lastDay: 'LT [kahapon]',\n lastWeek: 'LT [noong nakaraang] dddd',\n sameElse: 'L',\n },\n relativeTime: {\n future: 'sa loob ng %s',\n past: '%s ang nakalipas',\n s: 'ilang segundo',\n ss: '%d segundo',\n m: 'isang minuto',\n mm: '%d minuto',\n h: 'isang oras',\n hh: '%d oras',\n d: 'isang araw',\n dd: '%d araw',\n M: 'isang buwan',\n MM: '%d buwan',\n y: 'isang taon',\n yy: '%d taon',\n },\n dayOfMonthOrdinalParse: /\\d{1,2}/,\n ordinal: function (number) {\n return number;\n },\n week: {\n dow: 1, // Monday is the first day of the week.\n doy: 4, // The week that contains Jan 4th is the first week of the year.\n },\n });\n\n return fil;\n\n})));\n\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./~/moment/locale/fil.js\n// module id = 350\n// module chunks = 0 1 2 3 5 6 160","//! moment.js locale configuration\n//! locale : Faroese [fo]\n//! author : Ragnar Johannesen : https://github.com/ragnar123\n//! author : Kristian Sakarisson : https://github.com/sakarisson\n\n;(function (global, factory) {\n typeof exports === 'object' && typeof module !== 'undefined'\n && typeof require === 'function' ? factory(require('../moment')) :\n typeof define === 'function' && define.amd ? define(['../moment'], factory) :\n factory(global.moment)\n}(this, (function (moment) { 'use strict';\n\n //! moment.js locale configuration\n\n var fo = moment.defineLocale('fo', {\n months: 'januar_februar_mars_apríl_mai_juni_juli_august_september_oktober_november_desember'.split(\n '_'\n ),\n monthsShort: 'jan_feb_mar_apr_mai_jun_jul_aug_sep_okt_nov_des'.split('_'),\n weekdays: 'sunnudagur_mánadagur_týsdagur_mikudagur_hósdagur_fríggjadagur_leygardagur'.split(\n '_'\n ),\n weekdaysShort: 'sun_mán_týs_mik_hós_frí_ley'.split('_'),\n weekdaysMin: 'su_má_tý_mi_hó_fr_le'.split('_'),\n longDateFormat: {\n LT: 'HH:mm',\n LTS: 'HH:mm:ss',\n L: 'DD/MM/YYYY',\n LL: 'D MMMM YYYY',\n LLL: 'D MMMM YYYY HH:mm',\n LLLL: 'dddd D. MMMM, YYYY HH:mm',\n },\n calendar: {\n sameDay: '[Í dag kl.] LT',\n nextDay: '[Í morgin kl.] LT',\n nextWeek: 'dddd [kl.] LT',\n lastDay: '[Í gjár kl.] LT',\n lastWeek: '[síðstu] dddd [kl] LT',\n sameElse: 'L',\n },\n relativeTime: {\n future: 'um %s',\n past: '%s síðani',\n s: 'fá sekund',\n ss: '%d sekundir',\n m: 'ein minuttur',\n mm: '%d minuttir',\n h: 'ein tími',\n hh: '%d tímar',\n d: 'ein dagur',\n dd: '%d dagar',\n M: 'ein mánaður',\n MM: '%d mánaðir',\n y: 'eitt ár',\n yy: '%d ár',\n },\n dayOfMonthOrdinalParse: /\\d{1,2}\\./,\n ordinal: '%d.',\n week: {\n dow: 1, // Monday is the first day of the week.\n doy: 4, // The week that contains Jan 4th is the first week of the year.\n },\n });\n\n return fo;\n\n})));\n\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./~/moment/locale/fo.js\n// module id = 351\n// module chunks = 0 1 2 3 5 6 160","//! moment.js locale configuration\n//! locale : French (Canada) [fr-ca]\n//! author : Jonathan Abourbih : https://github.com/jonbca\n\n;(function (global, factory) {\n typeof exports === 'object' && typeof module !== 'undefined'\n && typeof require === 'function' ? factory(require('../moment')) :\n typeof define === 'function' && define.amd ? define(['../moment'], factory) :\n factory(global.moment)\n}(this, (function (moment) { 'use strict';\n\n //! moment.js locale configuration\n\n var frCa = moment.defineLocale('fr-ca', {\n months: 'janvier_février_mars_avril_mai_juin_juillet_août_septembre_octobre_novembre_décembre'.split(\n '_'\n ),\n monthsShort: 'janv._févr._mars_avr._mai_juin_juil._août_sept._oct._nov._déc.'.split(\n '_'\n ),\n monthsParseExact: true,\n weekdays: 'dimanche_lundi_mardi_mercredi_jeudi_vendredi_samedi'.split('_'),\n weekdaysShort: 'dim._lun._mar._mer._jeu._ven._sam.'.split('_'),\n weekdaysMin: 'di_lu_ma_me_je_ve_sa'.split('_'),\n weekdaysParseExact: true,\n longDateFormat: {\n LT: 'HH:mm',\n LTS: 'HH:mm:ss',\n L: 'YYYY-MM-DD',\n LL: 'D MMMM YYYY',\n LLL: 'D MMMM YYYY HH:mm',\n LLLL: 'dddd D MMMM YYYY HH:mm',\n },\n calendar: {\n sameDay: '[Aujourd’hui à] LT',\n nextDay: '[Demain à] LT',\n nextWeek: 'dddd [à] LT',\n lastDay: '[Hier à] LT',\n lastWeek: 'dddd [dernier à] LT',\n sameElse: 'L',\n },\n relativeTime: {\n future: 'dans %s',\n past: 'il y a %s',\n s: 'quelques secondes',\n ss: '%d secondes',\n m: 'une minute',\n mm: '%d minutes',\n h: 'une heure',\n hh: '%d heures',\n d: 'un jour',\n dd: '%d jours',\n M: 'un mois',\n MM: '%d mois',\n y: 'un an',\n yy: '%d ans',\n },\n dayOfMonthOrdinalParse: /\\d{1,2}(er|e)/,\n ordinal: function (number, period) {\n switch (period) {\n // Words with masculine grammatical gender: mois, trimestre, jour\n default:\n case 'M':\n case 'Q':\n case 'D':\n case 'DDD':\n case 'd':\n return number + (number === 1 ? 'er' : 'e');\n\n // Words with feminine grammatical gender: semaine\n case 'w':\n case 'W':\n return number + (number === 1 ? 're' : 'e');\n }\n },\n });\n\n return frCa;\n\n})));\n\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./~/moment/locale/fr-ca.js\n// module id = 352\n// module chunks = 0 1 2 3 5 6 160","//! moment.js locale configuration\n//! locale : French (Switzerland) [fr-ch]\n//! author : Gaspard Bucher : https://github.com/gaspard\n\n;(function (global, factory) {\n typeof exports === 'object' && typeof module !== 'undefined'\n && typeof require === 'function' ? factory(require('../moment')) :\n typeof define === 'function' && define.amd ? define(['../moment'], factory) :\n factory(global.moment)\n}(this, (function (moment) { 'use strict';\n\n //! moment.js locale configuration\n\n var frCh = moment.defineLocale('fr-ch', {\n months: 'janvier_février_mars_avril_mai_juin_juillet_août_septembre_octobre_novembre_décembre'.split(\n '_'\n ),\n monthsShort: 'janv._févr._mars_avr._mai_juin_juil._août_sept._oct._nov._déc.'.split(\n '_'\n ),\n monthsParseExact: true,\n weekdays: 'dimanche_lundi_mardi_mercredi_jeudi_vendredi_samedi'.split('_'),\n weekdaysShort: 'dim._lun._mar._mer._jeu._ven._sam.'.split('_'),\n weekdaysMin: 'di_lu_ma_me_je_ve_sa'.split('_'),\n weekdaysParseExact: true,\n longDateFormat: {\n LT: 'HH:mm',\n LTS: 'HH:mm:ss',\n L: 'DD.MM.YYYY',\n LL: 'D MMMM YYYY',\n LLL: 'D MMMM YYYY HH:mm',\n LLLL: 'dddd D MMMM YYYY HH:mm',\n },\n calendar: {\n sameDay: '[Aujourd’hui à] LT',\n nextDay: '[Demain à] LT',\n nextWeek: 'dddd [à] LT',\n lastDay: '[Hier à] LT',\n lastWeek: 'dddd [dernier à] LT',\n sameElse: 'L',\n },\n relativeTime: {\n future: 'dans %s',\n past: 'il y a %s',\n s: 'quelques secondes',\n ss: '%d secondes',\n m: 'une minute',\n mm: '%d minutes',\n h: 'une heure',\n hh: '%d heures',\n d: 'un jour',\n dd: '%d jours',\n M: 'un mois',\n MM: '%d mois',\n y: 'un an',\n yy: '%d ans',\n },\n dayOfMonthOrdinalParse: /\\d{1,2}(er|e)/,\n ordinal: function (number, period) {\n switch (period) {\n // Words with masculine grammatical gender: mois, trimestre, jour\n default:\n case 'M':\n case 'Q':\n case 'D':\n case 'DDD':\n case 'd':\n return number + (number === 1 ? 'er' : 'e');\n\n // Words with feminine grammatical gender: semaine\n case 'w':\n case 'W':\n return number + (number === 1 ? 're' : 'e');\n }\n },\n week: {\n dow: 1, // Monday is the first day of the week.\n doy: 4, // The week that contains Jan 4th is the first week of the year.\n },\n });\n\n return frCh;\n\n})));\n\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./~/moment/locale/fr-ch.js\n// module id = 353\n// module chunks = 0 1 2 3 5 6 160","//! moment.js locale configuration\n//! locale : French [fr]\n//! author : John Fischer : https://github.com/jfroffice\n\n;(function (global, factory) {\n typeof exports === 'object' && typeof module !== 'undefined'\n && typeof require === 'function' ? factory(require('../moment')) :\n typeof define === 'function' && define.amd ? define(['../moment'], factory) :\n factory(global.moment)\n}(this, (function (moment) { 'use strict';\n\n //! moment.js locale configuration\n\n var monthsStrictRegex = /^(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 = [\n /^janv/i,\n /^févr/i,\n /^mars/i,\n /^avr/i,\n /^mai/i,\n /^juin/i,\n /^juil/i,\n /^août/i,\n /^sept/i,\n /^oct/i,\n /^nov/i,\n /^déc/i,\n ];\n\n var fr = moment.defineLocale('fr', {\n months: 'janvier_février_mars_avril_mai_juin_juillet_août_septembre_octobre_novembre_décembre'.split(\n '_'\n ),\n monthsShort: 'janv._févr._mars_avr._mai_juin_juil._août_sept._oct._nov._déc.'.split(\n '_'\n ),\n monthsRegex: monthsRegex,\n monthsShortRegex: monthsRegex,\n monthsStrictRegex: monthsStrictRegex,\n monthsShortStrictRegex: monthsShortStrictRegex,\n monthsParse: monthsParse,\n longMonthsParse: monthsParse,\n shortMonthsParse: monthsParse,\n weekdays: 'dimanche_lundi_mardi_mercredi_jeudi_vendredi_samedi'.split('_'),\n weekdaysShort: 'dim._lun._mar._mer._jeu._ven._sam.'.split('_'),\n weekdaysMin: 'di_lu_ma_me_je_ve_sa'.split('_'),\n weekdaysParseExact: true,\n longDateFormat: {\n LT: 'HH:mm',\n LTS: 'HH:mm:ss',\n L: 'DD/MM/YYYY',\n LL: 'D MMMM YYYY',\n LLL: 'D MMMM YYYY HH:mm',\n LLLL: 'dddd D MMMM YYYY HH:mm',\n },\n calendar: {\n sameDay: '[Aujourd’hui à] LT',\n nextDay: '[Demain à] LT',\n nextWeek: 'dddd [à] LT',\n lastDay: '[Hier à] LT',\n lastWeek: 'dddd [dernier à] LT',\n sameElse: 'L',\n },\n relativeTime: {\n future: 'dans %s',\n past: 'il y a %s',\n s: 'quelques secondes',\n ss: '%d secondes',\n m: 'une minute',\n mm: '%d minutes',\n h: 'une heure',\n hh: '%d heures',\n d: 'un jour',\n dd: '%d jours',\n w: 'une semaine',\n ww: '%d semaines',\n M: 'un mois',\n MM: '%d mois',\n y: 'un an',\n yy: '%d ans',\n },\n dayOfMonthOrdinalParse: /\\d{1,2}(er|)/,\n ordinal: function (number, period) {\n switch (period) {\n // TODO: Return 'e' when day of month > 1. Move this case inside\n // block for masculine words below.\n // See https://github.com/moment/moment/issues/3375\n case 'D':\n return number + (number === 1 ? 'er' : '');\n\n // Words with masculine grammatical gender: mois, trimestre, jour\n default:\n case 'M':\n case 'Q':\n case 'DDD':\n case 'd':\n return number + (number === 1 ? 'er' : 'e');\n\n // Words with feminine grammatical gender: semaine\n case 'w':\n case 'W':\n return number + (number === 1 ? 're' : 'e');\n }\n },\n week: {\n dow: 1, // Monday is the first day of the week.\n doy: 4, // The week that contains Jan 4th is the first week of the year.\n },\n });\n\n return fr;\n\n})));\n\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./~/moment/locale/fr.js\n// module id = 354\n// module chunks = 0 1 2 3 5 6 160","//! moment.js locale configuration\n//! locale : Frisian [fy]\n//! author : Robin van der Vliet : https://github.com/robin0van0der0v\n\n;(function (global, factory) {\n typeof exports === 'object' && typeof module !== 'undefined'\n && typeof require === 'function' ? factory(require('../moment')) :\n typeof define === 'function' && define.amd ? define(['../moment'], factory) :\n factory(global.moment)\n}(this, (function (moment) { 'use strict';\n\n //! moment.js locale configuration\n\n var monthsShortWithDots = 'jan._feb._mrt._apr._mai_jun._jul._aug._sep._okt._nov._des.'.split(\n '_'\n ),\n monthsShortWithoutDots = 'jan_feb_mrt_apr_mai_jun_jul_aug_sep_okt_nov_des'.split(\n '_'\n );\n\n var fy = moment.defineLocale('fy', {\n months: 'jannewaris_febrewaris_maart_april_maaie_juny_july_augustus_septimber_oktober_novimber_desimber'.split(\n '_'\n ),\n monthsShort: function (m, format) {\n if (!m) {\n return monthsShortWithDots;\n } else if (/-MMM-/.test(format)) {\n return monthsShortWithoutDots[m.month()];\n } else {\n return monthsShortWithDots[m.month()];\n }\n },\n monthsParseExact: true,\n weekdays: 'snein_moandei_tiisdei_woansdei_tongersdei_freed_sneon'.split(\n '_'\n ),\n weekdaysShort: 'si._mo._ti._wo._to._fr._so.'.split('_'),\n weekdaysMin: 'Si_Mo_Ti_Wo_To_Fr_So'.split('_'),\n weekdaysParseExact: true,\n longDateFormat: {\n LT: 'HH:mm',\n LTS: 'HH:mm:ss',\n L: 'DD-MM-YYYY',\n LL: 'D MMMM YYYY',\n LLL: 'D MMMM YYYY HH:mm',\n LLLL: 'dddd D MMMM YYYY HH:mm',\n },\n calendar: {\n sameDay: '[hjoed om] LT',\n nextDay: '[moarn om] LT',\n nextWeek: 'dddd [om] LT',\n lastDay: '[juster om] LT',\n lastWeek: '[ôfrûne] dddd [om] LT',\n sameElse: 'L',\n },\n relativeTime: {\n future: 'oer %s',\n past: '%s lyn',\n s: 'in pear sekonden',\n ss: '%d sekonden',\n m: 'ien minút',\n mm: '%d minuten',\n h: 'ien oere',\n hh: '%d oeren',\n d: 'ien dei',\n dd: '%d dagen',\n M: 'ien moanne',\n MM: '%d moannen',\n y: 'ien jier',\n yy: '%d jierren',\n },\n dayOfMonthOrdinalParse: /\\d{1,2}(ste|de)/,\n ordinal: function (number) {\n return (\n number +\n (number === 1 || number === 8 || number >= 20 ? 'ste' : 'de')\n );\n },\n week: {\n dow: 1, // Monday is the first day of the week.\n doy: 4, // The week that contains Jan 4th is the first week of the year.\n },\n });\n\n return fy;\n\n})));\n\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./~/moment/locale/fy.js\n// module id = 355\n// module chunks = 0 1 2 3 5 6 160","//! moment.js locale configuration\n//! locale : Irish or Irish Gaelic [ga]\n//! author : André Silva : https://github.com/askpt\n\n;(function (global, factory) {\n typeof exports === 'object' && typeof module !== 'undefined'\n && typeof require === 'function' ? factory(require('../moment')) :\n typeof define === 'function' && define.amd ? define(['../moment'], factory) :\n factory(global.moment)\n}(this, (function (moment) { 'use strict';\n\n //! moment.js locale configuration\n\n var months = [\n 'Eanáir',\n 'Feabhra',\n 'Márta',\n 'Aibreán',\n 'Bealtaine',\n 'Meitheamh',\n 'Iúil',\n 'Lúnasa',\n 'Meán Fómhair',\n 'Deireadh Fómhair',\n 'Samhain',\n 'Nollaig',\n ],\n monthsShort = [\n 'Ean',\n 'Feabh',\n 'Márt',\n 'Aib',\n 'Beal',\n 'Meith',\n 'Iúil',\n 'Lún',\n 'M.F.',\n 'D.F.',\n 'Samh',\n 'Noll',\n ],\n weekdays = [\n 'Dé Domhnaigh',\n 'Dé Luain',\n 'Dé Máirt',\n 'Dé Céadaoin',\n 'Déardaoin',\n 'Dé hAoine',\n 'Dé Sathairn',\n ],\n weekdaysShort = ['Domh', 'Luan', 'Máirt', 'Céad', 'Déar', 'Aoine', 'Sath'],\n weekdaysMin = ['Do', 'Lu', 'Má', 'Cé', 'Dé', 'A', 'Sa'];\n\n var ga = moment.defineLocale('ga', {\n months: months,\n monthsShort: monthsShort,\n monthsParseExact: true,\n weekdays: weekdays,\n weekdaysShort: weekdaysShort,\n weekdaysMin: weekdaysMin,\n longDateFormat: {\n LT: 'HH:mm',\n LTS: 'HH:mm:ss',\n L: 'DD/MM/YYYY',\n LL: 'D MMMM YYYY',\n LLL: 'D MMMM YYYY HH:mm',\n LLLL: 'dddd, D MMMM YYYY HH:mm',\n },\n calendar: {\n sameDay: '[Inniu ag] LT',\n nextDay: '[Amárach ag] LT',\n nextWeek: 'dddd [ag] LT',\n lastDay: '[Inné ag] LT',\n lastWeek: 'dddd [seo caite] [ag] LT',\n sameElse: 'L',\n },\n relativeTime: {\n future: 'i %s',\n past: '%s ó shin',\n s: 'cúpla soicind',\n ss: '%d soicind',\n m: 'nóiméad',\n mm: '%d nóiméad',\n h: 'uair an chloig',\n hh: '%d uair an chloig',\n d: 'lá',\n dd: '%d lá',\n M: 'mí',\n MM: '%d míonna',\n y: 'bliain',\n yy: '%d bliain',\n },\n dayOfMonthOrdinalParse: /\\d{1,2}(d|na|mh)/,\n ordinal: function (number) {\n var output = number === 1 ? 'd' : number % 10 === 2 ? 'na' : 'mh';\n return number + output;\n },\n week: {\n dow: 1, // Monday is the first day of the week.\n doy: 4, // The week that contains Jan 4th is the first week of the year.\n },\n });\n\n return ga;\n\n})));\n\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./~/moment/locale/ga.js\n// module id = 356\n// module chunks = 0 1 2 3 5 6 160","//! moment.js locale configuration\n//! locale : Scottish Gaelic [gd]\n//! author : Jon Ashdown : https://github.com/jonashdown\n\n;(function (global, factory) {\n typeof exports === 'object' && typeof module !== 'undefined'\n && typeof require === 'function' ? factory(require('../moment')) :\n typeof define === 'function' && define.amd ? define(['../moment'], factory) :\n factory(global.moment)\n}(this, (function (moment) { 'use strict';\n\n //! moment.js locale configuration\n\n var months = [\n 'Am Faoilleach',\n 'An Gearran',\n 'Am Màrt',\n 'An Giblean',\n 'An Cèitean',\n 'An t-Ògmhios',\n 'An t-Iuchar',\n 'An Lùnastal',\n 'An t-Sultain',\n 'An Dàmhair',\n 'An t-Samhain',\n 'An Dùbhlachd',\n ],\n monthsShort = [\n 'Faoi',\n 'Gear',\n 'Màrt',\n 'Gibl',\n 'Cèit',\n 'Ògmh',\n 'Iuch',\n 'Lùn',\n 'Sult',\n 'Dàmh',\n 'Samh',\n 'Dùbh',\n ],\n weekdays = [\n 'Didòmhnaich',\n 'Diluain',\n 'Dimàirt',\n 'Diciadain',\n 'Diardaoin',\n 'Dihaoine',\n 'Disathairne',\n ],\n weekdaysShort = ['Did', 'Dil', 'Dim', 'Dic', 'Dia', 'Dih', 'Dis'],\n weekdaysMin = ['Dò', 'Lu', 'Mà', 'Ci', 'Ar', 'Ha', 'Sa'];\n\n var gd = moment.defineLocale('gd', {\n months: months,\n monthsShort: monthsShort,\n monthsParseExact: true,\n weekdays: weekdays,\n weekdaysShort: weekdaysShort,\n weekdaysMin: weekdaysMin,\n longDateFormat: {\n LT: 'HH:mm',\n LTS: 'HH:mm:ss',\n L: 'DD/MM/YYYY',\n LL: 'D MMMM YYYY',\n LLL: 'D MMMM YYYY HH:mm',\n LLLL: 'dddd, D MMMM YYYY HH:mm',\n },\n calendar: {\n sameDay: '[An-diugh aig] LT',\n nextDay: '[A-màireach aig] LT',\n nextWeek: 'dddd [aig] LT',\n lastDay: '[An-dè aig] LT',\n lastWeek: 'dddd [seo chaidh] [aig] LT',\n sameElse: 'L',\n },\n relativeTime: {\n future: 'ann an %s',\n past: 'bho chionn %s',\n s: 'beagan diogan',\n ss: '%d diogan',\n m: 'mionaid',\n mm: '%d mionaidean',\n h: 'uair',\n hh: '%d uairean',\n d: 'latha',\n dd: '%d latha',\n M: 'mìos',\n MM: '%d mìosan',\n y: 'bliadhna',\n yy: '%d bliadhna',\n },\n dayOfMonthOrdinalParse: /\\d{1,2}(d|na|mh)/,\n ordinal: function (number) {\n var output = number === 1 ? 'd' : number % 10 === 2 ? 'na' : 'mh';\n return number + output;\n },\n week: {\n dow: 1, // Monday is the first day of the week.\n doy: 4, // The week that contains Jan 4th is the first week of the year.\n },\n });\n\n return gd;\n\n})));\n\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./~/moment/locale/gd.js\n// module id = 357\n// module chunks = 0 1 2 3 5 6 160","//! moment.js locale configuration\n//! locale : Galician [gl]\n//! author : Juan G. Hurtado : https://github.com/juanghurtado\n\n;(function (global, factory) {\n typeof exports === 'object' && typeof module !== 'undefined'\n && typeof require === 'function' ? factory(require('../moment')) :\n typeof define === 'function' && define.amd ? define(['../moment'], factory) :\n factory(global.moment)\n}(this, (function (moment) { 'use strict';\n\n //! moment.js locale configuration\n\n var gl = moment.defineLocale('gl', {\n months: 'xaneiro_febreiro_marzo_abril_maio_xuño_xullo_agosto_setembro_outubro_novembro_decembro'.split(\n '_'\n ),\n monthsShort: 'xan._feb._mar._abr._mai._xuñ._xul._ago._set._out._nov._dec.'.split(\n '_'\n ),\n monthsParseExact: true,\n weekdays: 'domingo_luns_martes_mércores_xoves_venres_sábado'.split('_'),\n weekdaysShort: 'dom._lun._mar._mér._xov._ven._sáb.'.split('_'),\n weekdaysMin: 'do_lu_ma_mé_xo_ve_sá'.split('_'),\n weekdaysParseExact: true,\n longDateFormat: {\n LT: 'H:mm',\n LTS: 'H:mm:ss',\n L: 'DD/MM/YYYY',\n LL: 'D [de] MMMM [de] YYYY',\n LLL: 'D [de] MMMM [de] YYYY H:mm',\n LLLL: 'dddd, D [de] MMMM [de] YYYY H:mm',\n },\n calendar: {\n sameDay: function () {\n return '[hoxe ' + (this.hours() !== 1 ? 'ás' : 'á') + '] LT';\n },\n nextDay: function () {\n return '[mañá ' + (this.hours() !== 1 ? 'ás' : 'á') + '] LT';\n },\n nextWeek: function () {\n return 'dddd [' + (this.hours() !== 1 ? 'ás' : 'a') + '] LT';\n },\n lastDay: function () {\n return '[onte ' + (this.hours() !== 1 ? 'á' : 'a') + '] LT';\n },\n lastWeek: function () {\n return (\n '[o] dddd [pasado ' + (this.hours() !== 1 ? 'ás' : 'a') + '] LT'\n );\n },\n sameElse: 'L',\n },\n relativeTime: {\n future: function (str) {\n if (str.indexOf('un') === 0) {\n return 'n' + str;\n }\n return 'en ' + str;\n },\n past: 'hai %s',\n s: 'uns segundos',\n ss: '%d segundos',\n m: 'un minuto',\n mm: '%d minutos',\n h: 'unha hora',\n hh: '%d horas',\n d: 'un día',\n dd: '%d días',\n M: 'un mes',\n MM: '%d meses',\n y: 'un ano',\n yy: '%d anos',\n },\n dayOfMonthOrdinalParse: /\\d{1,2}º/,\n ordinal: '%dº',\n week: {\n dow: 1, // Monday is the first day of the week.\n doy: 4, // The week that contains Jan 4th is the first week of the year.\n },\n });\n\n return gl;\n\n})));\n\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./~/moment/locale/gl.js\n// module id = 358\n// module chunks = 0 1 2 3 5 6 160","//! moment.js locale configuration\n//! locale : Konkani Devanagari script [gom-deva]\n//! author : The Discoverer : https://github.com/WikiDiscoverer\n\n;(function (global, factory) {\n typeof exports === 'object' && typeof module !== 'undefined'\n && typeof require === 'function' ? factory(require('../moment')) :\n typeof define === 'function' && define.amd ? define(['../moment'], factory) :\n factory(global.moment)\n}(this, (function (moment) { 'use strict';\n\n //! moment.js locale configuration\n\n function processRelativeTime(number, withoutSuffix, key, isFuture) {\n var format = {\n s: ['थोडया सॅकंडांनी', 'थोडे सॅकंड'],\n ss: [number + ' सॅकंडांनी', number + ' सॅकंड'],\n m: ['एका मिणटान', 'एक मिनूट'],\n mm: [number + ' मिणटांनी', number + ' मिणटां'],\n h: ['एका वरान', 'एक वर'],\n hh: [number + ' वरांनी', number + ' वरां'],\n d: ['एका दिसान', 'एक दीस'],\n dd: [number + ' दिसांनी', number + ' दीस'],\n M: ['एका म्हयन्यान', 'एक म्हयनो'],\n MM: [number + ' म्हयन्यानी', number + ' म्हयने'],\n y: ['एका वर्सान', 'एक वर्स'],\n yy: [number + ' वर्सांनी', number + ' वर्सां'],\n };\n return isFuture ? format[key][0] : format[key][1];\n }\n\n var gomDeva = moment.defineLocale('gom-deva', {\n months: {\n standalone: 'जानेवारी_फेब्रुवारी_मार्च_एप्रील_मे_जून_जुलय_ऑगस्ट_सप्टेंबर_ऑक्टोबर_नोव्हेंबर_डिसेंबर'.split(\n '_'\n ),\n format: 'जानेवारीच्या_फेब्रुवारीच्या_मार्चाच्या_एप्रीलाच्या_मेयाच्या_जूनाच्या_जुलयाच्या_ऑगस्टाच्या_सप्टेंबराच्या_ऑक्टोबराच्या_नोव्हेंबराच्या_डिसेंबराच्या'.split(\n '_'\n ),\n isFormat: /MMMM(\\s)+D[oD]?/,\n },\n monthsShort: 'जाने._फेब्रु._मार्च_एप्री._मे_जून_जुल._ऑग._सप्टें._ऑक्टो._नोव्हें._डिसें.'.split(\n '_'\n ),\n monthsParseExact: true,\n weekdays: 'आयतार_सोमार_मंगळार_बुधवार_बिरेस्तार_सुक्रार_शेनवार'.split('_'),\n weekdaysShort: 'आयत._सोम._मंगळ._बुध._ब्रेस्त._सुक्र._शेन.'.split('_'),\n weekdaysMin: 'आ_सो_मं_बु_ब्रे_सु_शे'.split('_'),\n weekdaysParseExact: true,\n longDateFormat: {\n LT: 'A h:mm [वाजतां]',\n LTS: 'A h:mm:ss [वाजतां]',\n L: 'DD-MM-YYYY',\n LL: 'D MMMM YYYY',\n LLL: 'D MMMM YYYY A h:mm [वाजतां]',\n LLLL: 'dddd, MMMM Do, YYYY, A h:mm [वाजतां]',\n llll: 'ddd, D MMM YYYY, A h:mm [वाजतां]',\n },\n calendar: {\n sameDay: '[आयज] LT',\n nextDay: '[फाल्यां] LT',\n nextWeek: '[फुडलो] dddd[,] LT',\n lastDay: '[काल] LT',\n lastWeek: '[फाटलो] dddd[,] LT',\n sameElse: 'L',\n },\n relativeTime: {\n future: '%s',\n past: '%s आदीं',\n s: processRelativeTime,\n ss: processRelativeTime,\n m: processRelativeTime,\n mm: processRelativeTime,\n h: processRelativeTime,\n hh: processRelativeTime,\n d: processRelativeTime,\n dd: processRelativeTime,\n M: processRelativeTime,\n MM: processRelativeTime,\n y: processRelativeTime,\n yy: processRelativeTime,\n },\n dayOfMonthOrdinalParse: /\\d{1,2}(वेर)/,\n ordinal: function (number, period) {\n switch (period) {\n // the ordinal 'वेर' only applies to day of the month\n case 'D':\n return number + 'वेर';\n default:\n case 'M':\n case 'Q':\n case 'DDD':\n case 'd':\n case 'w':\n case 'W':\n return number;\n }\n },\n week: {\n dow: 0, // Sunday is the first day of the week\n doy: 3, // The week that contains Jan 4th is the first week of the year (7 + 0 - 4)\n },\n meridiemParse: /राती|सकाळीं|दनपारां|सांजे/,\n meridiemHour: function (hour, meridiem) {\n if (hour === 12) {\n hour = 0;\n }\n if (meridiem === 'राती') {\n return hour < 4 ? hour : hour + 12;\n } else if (meridiem === 'सकाळीं') {\n return hour;\n } else if (meridiem === 'दनपारां') {\n return hour > 12 ? hour : hour + 12;\n } else if (meridiem === 'सांजे') {\n return hour + 12;\n }\n },\n meridiem: function (hour, minute, isLower) {\n if (hour < 4) {\n return 'राती';\n } else if (hour < 12) {\n return 'सकाळीं';\n } else if (hour < 16) {\n return 'दनपारां';\n } else if (hour < 20) {\n return 'सांजे';\n } else {\n return 'राती';\n }\n },\n });\n\n return gomDeva;\n\n})));\n\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./~/moment/locale/gom-deva.js\n// module id = 359\n// module chunks = 0 1 2 3 5 6 160","//! moment.js locale configuration\n//! locale : Konkani Latin script [gom-latn]\n//! author : The Discoverer : https://github.com/WikiDiscoverer\n\n;(function (global, factory) {\n typeof exports === 'object' && typeof module !== 'undefined'\n && typeof require === 'function' ? factory(require('../moment')) :\n typeof define === 'function' && define.amd ? define(['../moment'], factory) :\n factory(global.moment)\n}(this, (function (moment) { 'use strict';\n\n //! moment.js locale configuration\n\n function processRelativeTime(number, withoutSuffix, key, isFuture) {\n var format = {\n s: ['thoddea sekondamni', 'thodde sekond'],\n ss: [number + ' sekondamni', number + ' sekond'],\n m: ['eka mintan', 'ek minut'],\n mm: [number + ' mintamni', number + ' mintam'],\n h: ['eka voran', 'ek vor'],\n hh: [number + ' voramni', number + ' voram'],\n d: ['eka disan', 'ek dis'],\n dd: [number + ' disamni', number + ' dis'],\n M: ['eka mhoinean', 'ek mhoino'],\n MM: [number + ' mhoineamni', number + ' mhoine'],\n y: ['eka vorsan', 'ek voros'],\n yy: [number + ' vorsamni', number + ' vorsam'],\n };\n return isFuture ? format[key][0] : format[key][1];\n }\n\n var gomLatn = moment.defineLocale('gom-latn', {\n months: {\n standalone: 'Janer_Febrer_Mars_Abril_Mai_Jun_Julai_Agost_Setembr_Otubr_Novembr_Dezembr'.split(\n '_'\n ),\n format: 'Janerachea_Febrerachea_Marsachea_Abrilachea_Maiachea_Junachea_Julaiachea_Agostachea_Setembrachea_Otubrachea_Novembrachea_Dezembrachea'.split(\n '_'\n ),\n isFormat: /MMMM(\\s)+D[oD]?/,\n },\n monthsShort: 'Jan._Feb._Mars_Abr._Mai_Jun_Jul._Ago._Set._Otu._Nov._Dez.'.split(\n '_'\n ),\n monthsParseExact: true,\n weekdays: \"Aitar_Somar_Mongllar_Budhvar_Birestar_Sukrar_Son'var\".split('_'),\n weekdaysShort: 'Ait._Som._Mon._Bud._Bre._Suk._Son.'.split('_'),\n weekdaysMin: 'Ai_Sm_Mo_Bu_Br_Su_Sn'.split('_'),\n weekdaysParseExact: true,\n longDateFormat: {\n LT: 'A h:mm [vazta]',\n LTS: 'A h:mm:ss [vazta]',\n L: 'DD-MM-YYYY',\n LL: 'D MMMM YYYY',\n LLL: 'D MMMM YYYY A h:mm [vazta]',\n LLLL: 'dddd, MMMM Do, YYYY, A h:mm [vazta]',\n llll: 'ddd, D MMM YYYY, A h:mm [vazta]',\n },\n calendar: {\n sameDay: '[Aiz] LT',\n nextDay: '[Faleam] LT',\n nextWeek: '[Fuddlo] dddd[,] LT',\n lastDay: '[Kal] LT',\n lastWeek: '[Fattlo] dddd[,] LT',\n sameElse: 'L',\n },\n relativeTime: {\n future: '%s',\n past: '%s adim',\n s: processRelativeTime,\n ss: processRelativeTime,\n m: processRelativeTime,\n mm: processRelativeTime,\n h: processRelativeTime,\n hh: processRelativeTime,\n d: processRelativeTime,\n dd: processRelativeTime,\n M: processRelativeTime,\n MM: processRelativeTime,\n y: processRelativeTime,\n yy: processRelativeTime,\n },\n dayOfMonthOrdinalParse: /\\d{1,2}(er)/,\n ordinal: function (number, period) {\n switch (period) {\n // the ordinal 'er' only applies to day of the month\n case 'D':\n return number + 'er';\n default:\n case 'M':\n case 'Q':\n case 'DDD':\n case 'd':\n case 'w':\n case 'W':\n return number;\n }\n },\n week: {\n dow: 0, // Sunday is the first day of the week\n doy: 3, // The week that contains Jan 4th is the first week of the year (7 + 0 - 4)\n },\n meridiemParse: /rati|sokallim|donparam|sanje/,\n meridiemHour: function (hour, meridiem) {\n if (hour === 12) {\n hour = 0;\n }\n if (meridiem === 'rati') {\n return hour < 4 ? hour : hour + 12;\n } else if (meridiem === 'sokallim') {\n return hour;\n } else if (meridiem === 'donparam') {\n return hour > 12 ? hour : hour + 12;\n } else if (meridiem === 'sanje') {\n return hour + 12;\n }\n },\n meridiem: function (hour, minute, isLower) {\n if (hour < 4) {\n return 'rati';\n } else if (hour < 12) {\n return 'sokallim';\n } else if (hour < 16) {\n return 'donparam';\n } else if (hour < 20) {\n return 'sanje';\n } else {\n return 'rati';\n }\n },\n });\n\n return gomLatn;\n\n})));\n\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./~/moment/locale/gom-latn.js\n// module id = 360\n// module chunks = 0 1 2 3 5 6 160","//! moment.js locale configuration\n//! locale : Gujarati [gu]\n//! author : Kaushik Thanki : https://github.com/Kaushik1987\n\n;(function (global, factory) {\n typeof exports === 'object' && typeof module !== 'undefined'\n && typeof require === 'function' ? factory(require('../moment')) :\n typeof define === 'function' && define.amd ? define(['../moment'], factory) :\n factory(global.moment)\n}(this, (function (moment) { 'use strict';\n\n //! moment.js locale configuration\n\n var symbolMap = {\n 1: '૧',\n 2: '૨',\n 3: '૩',\n 4: '૪',\n 5: '૫',\n 6: '૬',\n 7: '૭',\n 8: '૮',\n 9: '૯',\n 0: '૦',\n },\n numberMap = {\n '૧': '1',\n '૨': '2',\n '૩': '3',\n '૪': '4',\n '૫': '5',\n '૬': '6',\n '૭': '7',\n '૮': '8',\n '૯': '9',\n '૦': '0',\n };\n\n var gu = moment.defineLocale('gu', {\n months: 'જાન્યુઆરી_ફેબ્રુઆરી_માર્ચ_એપ્રિલ_મે_જૂન_જુલાઈ_ઑગસ્ટ_સપ્ટેમ્બર_ઑક્ટ્બર_નવેમ્બર_ડિસેમ્બર'.split(\n '_'\n ),\n monthsShort: 'જાન્યુ._ફેબ્રુ._માર્ચ_એપ્રિ._મે_જૂન_જુલા._ઑગ._સપ્ટે._ઑક્ટ્._નવે._ડિસે.'.split(\n '_'\n ),\n monthsParseExact: true,\n weekdays: 'રવિવાર_સોમવાર_મંગળવાર_બુધ્વાર_ગુરુવાર_શુક્રવાર_શનિવાર'.split(\n '_'\n ),\n weekdaysShort: 'રવિ_સોમ_મંગળ_બુધ્_ગુરુ_શુક્ર_શનિ'.split('_'),\n weekdaysMin: 'ર_સો_મં_બુ_ગુ_શુ_શ'.split('_'),\n longDateFormat: {\n LT: 'A h:mm વાગ્યે',\n LTS: 'A h:mm:ss વાગ્યે',\n L: 'DD/MM/YYYY',\n LL: 'D MMMM YYYY',\n LLL: 'D MMMM YYYY, A h:mm વાગ્યે',\n LLLL: 'dddd, D MMMM YYYY, A h:mm વાગ્યે',\n },\n calendar: {\n sameDay: '[આજ] LT',\n nextDay: '[કાલે] LT',\n nextWeek: 'dddd, LT',\n lastDay: '[ગઇકાલે] LT',\n lastWeek: '[પાછલા] dddd, LT',\n sameElse: 'L',\n },\n relativeTime: {\n future: '%s મા',\n past: '%s પહેલા',\n s: 'અમુક પળો',\n ss: '%d સેકંડ',\n m: 'એક મિનિટ',\n mm: '%d મિનિટ',\n h: 'એક કલાક',\n hh: '%d કલાક',\n d: 'એક દિવસ',\n dd: '%d દિવસ',\n M: 'એક મહિનો',\n MM: '%d મહિનો',\n y: 'એક વર્ષ',\n yy: '%d વર્ષ',\n },\n preparse: function (string) {\n return string.replace(/[૧૨૩૪૫૬૭૮૯૦]/g, function (match) {\n return numberMap[match];\n });\n },\n postformat: function (string) {\n return string.replace(/\\d/g, function (match) {\n return symbolMap[match];\n });\n },\n // Gujarati notation for meridiems are quite fuzzy in practice. While there exists\n // a rigid notion of a 'Pahar' it is not used as rigidly in modern Gujarati.\n meridiemParse: /રાત|બપોર|સવાર|સાંજ/,\n meridiemHour: function (hour, meridiem) {\n if (hour === 12) {\n hour = 0;\n }\n if (meridiem === 'રાત') {\n return hour < 4 ? hour : hour + 12;\n } else if (meridiem === 'સવાર') {\n return hour;\n } else if (meridiem === 'બપોર') {\n return hour >= 10 ? hour : hour + 12;\n } else if (meridiem === 'સાંજ') {\n return hour + 12;\n }\n },\n meridiem: function (hour, minute, isLower) {\n if (hour < 4) {\n return 'રાત';\n } else if (hour < 10) {\n return 'સવાર';\n } else if (hour < 17) {\n return 'બપોર';\n } else if (hour < 20) {\n return 'સાંજ';\n } else {\n return 'રાત';\n }\n },\n week: {\n dow: 0, // Sunday is the first day of the week.\n doy: 6, // The week that contains Jan 6th is the first week of the year.\n },\n });\n\n return gu;\n\n})));\n\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./~/moment/locale/gu.js\n// module id = 361\n// module chunks = 0 1 2 3 5 6 160","//! moment.js locale configuration\n//! locale : Hebrew [he]\n//! author : Tomer Cohen : https://github.com/tomer\n//! author : Moshe Simantov : https://github.com/DevelopmentIL\n//! author : Tal Ater : https://github.com/TalAter\n\n;(function (global, factory) {\n typeof exports === 'object' && typeof module !== 'undefined'\n && typeof require === 'function' ? factory(require('../moment')) :\n typeof define === 'function' && define.amd ? define(['../moment'], factory) :\n factory(global.moment)\n}(this, (function (moment) { 'use strict';\n\n //! moment.js locale configuration\n\n var he = moment.defineLocale('he', {\n months: 'ינואר_פברואר_מרץ_אפריל_מאי_יוני_יולי_אוגוסט_ספטמבר_אוקטובר_נובמבר_דצמבר'.split(\n '_'\n ),\n monthsShort: 'ינו׳_פבר׳_מרץ_אפר׳_מאי_יוני_יולי_אוג׳_ספט׳_אוק׳_נוב׳_דצמ׳'.split(\n '_'\n ),\n weekdays: 'ראשון_שני_שלישי_רביעי_חמישי_שישי_שבת'.split('_'),\n weekdaysShort: 'א׳_ב׳_ג׳_ד׳_ה׳_ו׳_ש׳'.split('_'),\n weekdaysMin: 'א_ב_ג_ד_ה_ו_ש'.split('_'),\n longDateFormat: {\n LT: 'HH:mm',\n LTS: 'HH:mm:ss',\n L: 'DD/MM/YYYY',\n LL: 'D [ב]MMMM YYYY',\n LLL: 'D [ב]MMMM YYYY HH:mm',\n LLLL: 'dddd, D [ב]MMMM YYYY HH:mm',\n 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\n return he;\n\n})));\n\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./~/moment/locale/he.js\n// module id = 362\n// module chunks = 0 1 2 3 5 6 160","//! moment.js locale configuration\n//! locale : Hindi [hi]\n//! author : Mayank Singhal : https://github.com/mayanksinghal\n\n;(function (global, factory) {\n typeof exports === 'object' && typeof module !== 'undefined'\n && typeof require === 'function' ? factory(require('../moment')) :\n typeof define === 'function' && define.amd ? define(['../moment'], factory) :\n factory(global.moment)\n}(this, (function (moment) { 'use strict';\n\n //! moment.js locale configuration\n\n var symbolMap = {\n 1: '१',\n 2: '२',\n 3: '३',\n 4: '४',\n 5: '५',\n 6: '६',\n 7: '७',\n 8: '८',\n 9: '९',\n 0: '०',\n },\n numberMap = {\n '१': '1',\n '२': '2',\n '३': '3',\n '४': '4',\n '५': '5',\n '६': '6',\n '७': '7',\n '८': '8',\n '९': '9',\n '०': '0',\n },\n monthsParse = [\n /^जन/i,\n /^फ़र|फर/i,\n /^मार्च/i,\n /^अप्रै/i,\n /^मई/i,\n /^जून/i,\n /^जुल/i,\n /^अग/i,\n /^सितं|सित/i,\n /^अक्टू/i,\n /^नव|नवं/i,\n /^दिसं|दिस/i,\n ],\n shortMonthsParse = [\n /^जन/i,\n /^फ़र/i,\n /^मार्च/i,\n /^अप्रै/i,\n /^मई/i,\n /^जून/i,\n /^जुल/i,\n /^अग/i,\n /^सित/i,\n /^अक्टू/i,\n /^नव/i,\n /^दिस/i,\n ];\n\n var hi = moment.defineLocale('hi', {\n months: {\n format: 'जनवरी_फ़रवरी_मार्च_अप्रैल_मई_जून_जुलाई_अगस्त_सितम्बर_अक्टूबर_नवम्बर_दिसम्बर'.split(\n '_'\n ),\n standalone: 'जनवरी_फरवरी_मार्च_अप्रैल_मई_जून_जुलाई_अगस्त_सितंबर_अक्टूबर_नवंबर_दिसंबर'.split(\n '_'\n ),\n },\n monthsShort: 'जन._फ़र._मार्च_अप्रै._मई_जून_जुल._अग._सित._अक्टू._नव._दिस.'.split(\n '_'\n ),\n weekdays: 'रविवार_सोमवार_मंगलवार_बुधवार_गुरूवार_शुक्रवार_शनिवार'.split('_'),\n weekdaysShort: 'रवि_सोम_मंगल_बुध_गुरू_शुक्र_शनि'.split('_'),\n weekdaysMin: 'र_सो_मं_बु_गु_शु_श'.split('_'),\n longDateFormat: {\n LT: 'A h:mm बजे',\n LTS: 'A h:mm:ss बजे',\n L: 'DD/MM/YYYY',\n LL: 'D MMMM YYYY',\n LLL: 'D MMMM YYYY, A h:mm बजे',\n LLLL: 'dddd, D MMMM YYYY, A h:mm बजे',\n },\n\n monthsParse: monthsParse,\n longMonthsParse: monthsParse,\n shortMonthsParse: shortMonthsParse,\n\n monthsRegex: /^(जनवरी|जन\\.?|फ़रवरी|फरवरी|फ़र\\.?|मार्च?|अप्रैल|अप्रै\\.?|मई?|जून?|जुलाई|जुल\\.?|अगस्त|अग\\.?|सितम्बर|सितंबर|सित\\.?|अक्टूबर|अक्टू\\.?|नवम्बर|नवंबर|नव\\.?|दिसम्बर|दिसंबर|दिस\\.?)/i,\n\n monthsShortRegex: /^(जनवरी|जन\\.?|फ़रवरी|फरवरी|फ़र\\.?|मार्च?|अप्रैल|अप्रै\\.?|मई?|जून?|जुलाई|जुल\\.?|अगस्त|अग\\.?|सितम्बर|सितंबर|सित\\.?|अक्टूबर|अक्टू\\.?|नवम्बर|नवंबर|नव\\.?|दिसम्बर|दिसंबर|दिस\\.?)/i,\n\n monthsStrictRegex: /^(जनवरी?|फ़रवरी|फरवरी?|मार्च?|अप्रैल?|मई?|जून?|जुलाई?|अगस्त?|सितम्बर|सितंबर|सित?\\.?|अक्टूबर|अक्टू\\.?|नवम्बर|नवंबर?|दिसम्बर|दिसंबर?)/i,\n\n monthsShortStrictRegex: /^(जन\\.?|फ़र\\.?|मार्च?|अप्रै\\.?|मई?|जून?|जुल\\.?|अग\\.?|सित\\.?|अक्टू\\.?|नव\\.?|दिस\\.?)/i,\n\n calendar: {\n sameDay: '[आज] LT',\n nextDay: '[कल] LT',\n nextWeek: 'dddd, LT',\n lastDay: '[कल] LT',\n lastWeek: '[पिछले] dddd, LT',\n sameElse: 'L',\n },\n relativeTime: {\n future: '%s में',\n past: '%s पहले',\n s: 'कुछ ही क्षण',\n ss: '%d सेकंड',\n m: 'एक मिनट',\n mm: '%d मिनट',\n h: 'एक घंटा',\n hh: '%d घंटे',\n d: 'एक दिन',\n dd: '%d दिन',\n M: 'एक महीने',\n MM: '%d महीने',\n y: 'एक वर्ष',\n yy: '%d वर्ष',\n },\n preparse: function (string) {\n return string.replace(/[१२३४५६७८९०]/g, function (match) {\n return numberMap[match];\n });\n },\n postformat: function (string) {\n return string.replace(/\\d/g, function (match) {\n return symbolMap[match];\n });\n },\n // Hindi notation for meridiems are quite fuzzy in practice. While there exists\n // a rigid notion of a 'Pahar' it is not used as rigidly in modern Hindi.\n meridiemParse: /रात|सुबह|दोपहर|शाम/,\n meridiemHour: function (hour, meridiem) {\n if (hour === 12) {\n hour = 0;\n }\n if (meridiem === 'रात') {\n return hour < 4 ? hour : hour + 12;\n } else if (meridiem === 'सुबह') {\n return hour;\n } else if (meridiem === 'दोपहर') {\n return hour >= 10 ? hour : hour + 12;\n } else if (meridiem === 'शाम') {\n return hour + 12;\n }\n },\n meridiem: function (hour, minute, isLower) {\n if (hour < 4) {\n return 'रात';\n } else if (hour < 10) {\n return 'सुबह';\n } else if (hour < 17) {\n return 'दोपहर';\n } else if (hour < 20) {\n return 'शाम';\n } else {\n return 'रात';\n }\n },\n week: {\n dow: 0, // Sunday is the first day of the week.\n doy: 6, // The week that contains Jan 6th is the first week of the year.\n },\n });\n\n return hi;\n\n})));\n\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./~/moment/locale/hi.js\n// module id = 363\n// module chunks = 0 1 2 3 5 6 160","//! moment.js locale configuration\n//! locale : Croatian [hr]\n//! author : Bojan Marković : https://github.com/bmarkovic\n\n;(function (global, factory) {\n typeof exports === 'object' && typeof module !== 'undefined'\n && typeof require === 'function' ? factory(require('../moment')) :\n typeof define === 'function' && define.amd ? define(['../moment'], factory) :\n factory(global.moment)\n}(this, (function (moment) { 'use strict';\n\n //! moment.js locale configuration\n\n function translate(number, withoutSuffix, key) {\n var result = number + ' ';\n switch (key) {\n case 'ss':\n if (number === 1) {\n result += 'sekunda';\n } else if (number === 2 || number === 3 || number === 4) {\n result += 'sekunde';\n } else {\n result += 'sekundi';\n }\n return result;\n case 'm':\n return withoutSuffix ? 'jedna minuta' : 'jedne minute';\n case 'mm':\n if (number === 1) {\n result += 'minuta';\n } else if (number === 2 || number === 3 || number === 4) {\n result += 'minute';\n } else {\n result += 'minuta';\n }\n return result;\n case 'h':\n return withoutSuffix ? 'jedan sat' : 'jednog sata';\n case 'hh':\n if (number === 1) {\n result += 'sat';\n } else if (number === 2 || number === 3 || number === 4) {\n result += 'sata';\n } else {\n result += 'sati';\n }\n return result;\n case 'dd':\n if (number === 1) {\n result += 'dan';\n } else {\n result += 'dana';\n }\n return result;\n case 'MM':\n if (number === 1) {\n result += 'mjesec';\n } else if (number === 2 || number === 3 || number === 4) {\n result += 'mjeseca';\n } else {\n result += 'mjeseci';\n }\n return result;\n case 'yy':\n if (number === 1) {\n result += 'godina';\n } else if (number === 2 || number === 3 || number === 4) {\n result += 'godine';\n } else {\n result += 'godina';\n }\n return result;\n }\n }\n\n var hr = moment.defineLocale('hr', {\n months: {\n format: 'siječnja_veljače_ožujka_travnja_svibnja_lipnja_srpnja_kolovoza_rujna_listopada_studenoga_prosinca'.split(\n '_'\n ),\n standalone: 'siječanj_veljača_ožujak_travanj_svibanj_lipanj_srpanj_kolovoz_rujan_listopad_studeni_prosinac'.split(\n '_'\n ),\n },\n monthsShort: 'sij._velj._ožu._tra._svi._lip._srp._kol._ruj._lis._stu._pro.'.split(\n '_'\n ),\n monthsParseExact: true,\n weekdays: 'nedjelja_ponedjeljak_utorak_srijeda_četvrtak_petak_subota'.split(\n '_'\n ),\n weekdaysShort: 'ned._pon._uto._sri._čet._pet._sub.'.split('_'),\n weekdaysMin: 'ne_po_ut_sr_če_pe_su'.split('_'),\n weekdaysParseExact: true,\n longDateFormat: {\n LT: 'H:mm',\n LTS: 'H:mm:ss',\n L: 'DD.MM.YYYY',\n LL: 'Do MMMM YYYY',\n LLL: 'Do MMMM YYYY H:mm',\n LLLL: 'dddd, Do MMMM YYYY H:mm',\n },\n calendar: {\n sameDay: '[danas u] LT',\n nextDay: '[sutra u] LT',\n nextWeek: function () {\n switch (this.day()) {\n case 0:\n return '[u] [nedjelju] [u] LT';\n case 3:\n return '[u] [srijedu] [u] LT';\n case 6:\n return '[u] [subotu] [u] LT';\n case 1:\n case 2:\n case 4:\n case 5:\n return '[u] dddd [u] LT';\n }\n },\n lastDay: '[jučer u] LT',\n lastWeek: function () {\n switch (this.day()) {\n case 0:\n return '[prošlu] [nedjelju] [u] LT';\n case 3:\n return '[prošlu] [srijedu] [u] LT';\n case 6:\n return '[prošle] [subote] [u] LT';\n case 1:\n case 2:\n case 4:\n case 5:\n return '[prošli] dddd [u] LT';\n }\n },\n sameElse: 'L',\n },\n relativeTime: {\n future: 'za %s',\n past: 'prije %s',\n s: 'par sekundi',\n ss: translate,\n m: translate,\n mm: translate,\n h: translate,\n hh: translate,\n d: 'dan',\n dd: translate,\n M: 'mjesec',\n MM: translate,\n y: 'godinu',\n yy: translate,\n },\n dayOfMonthOrdinalParse: /\\d{1,2}\\./,\n ordinal: '%d.',\n week: {\n dow: 1, // Monday is the first day of the week.\n doy: 7, // The week that contains Jan 7th is the first week of the year.\n },\n });\n\n return hr;\n\n})));\n\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./~/moment/locale/hr.js\n// module id = 364\n// module chunks = 0 1 2 3 5 6 160","//! moment.js locale configuration\n//! locale : Hungarian [hu]\n//! author : Adam Brunner : https://github.com/adambrunner\n//! author : Peter Viszt : https://github.com/passatgt\n\n;(function (global, factory) {\n typeof exports === 'object' && typeof module !== 'undefined'\n && typeof require === 'function' ? factory(require('../moment')) :\n typeof define === 'function' && define.amd ? define(['../moment'], factory) :\n factory(global.moment)\n}(this, (function (moment) { 'use strict';\n\n //! moment.js locale configuration\n\n var weekEndings = 'vasárnap hétfőn kedden szerdán csütörtökön pénteken szombaton'.split(\n ' '\n );\n function translate(number, withoutSuffix, key, isFuture) {\n var num = number;\n switch (key) {\n case 's':\n return isFuture || withoutSuffix\n ? 'néhány másodperc'\n : 'néhány másodperce';\n case 'ss':\n return num + (isFuture || withoutSuffix)\n ? ' másodperc'\n : ' másodperce';\n case 'm':\n return 'egy' + (isFuture || withoutSuffix ? ' perc' : ' perce');\n case 'mm':\n return num + (isFuture || withoutSuffix ? ' perc' : ' perce');\n case 'h':\n return 'egy' + (isFuture || withoutSuffix ? ' óra' : ' órája');\n case 'hh':\n return num + (isFuture || withoutSuffix ? ' óra' : ' órája');\n case 'd':\n return 'egy' + (isFuture || withoutSuffix ? ' nap' : ' napja');\n case 'dd':\n return num + (isFuture || withoutSuffix ? ' nap' : ' napja');\n case 'M':\n return 'egy' + (isFuture || withoutSuffix ? ' hónap' : ' hónapja');\n case 'MM':\n return num + (isFuture || withoutSuffix ? ' hónap' : ' hónapja');\n case 'y':\n return 'egy' + (isFuture || withoutSuffix ? ' év' : ' éve');\n case 'yy':\n return num + (isFuture || withoutSuffix ? ' év' : ' éve');\n }\n return '';\n }\n function week(isFuture) {\n return (\n (isFuture ? '' : '[múlt] ') +\n '[' +\n weekEndings[this.day()] +\n '] LT[-kor]'\n );\n }\n\n var hu = moment.defineLocale('hu', {\n months: 'január_február_március_április_május_június_július_augusztus_szeptember_október_november_december'.split(\n '_'\n ),\n monthsShort: 'jan._feb._márc._ápr._máj._jún._júl._aug._szept._okt._nov._dec.'.split(\n '_'\n ),\n monthsParseExact: true,\n weekdays: 'vasárnap_hétfő_kedd_szerda_csütörtök_péntek_szombat'.split('_'),\n weekdaysShort: 'vas_hét_kedd_sze_csüt_pén_szo'.split('_'),\n weekdaysMin: 'v_h_k_sze_cs_p_szo'.split('_'),\n longDateFormat: {\n LT: 'H:mm',\n LTS: 'H:mm:ss',\n L: 'YYYY.MM.DD.',\n LL: 'YYYY. MMMM D.',\n LLL: 'YYYY. MMMM D. H:mm',\n LLLL: 'YYYY. MMMM D., dddd H:mm',\n },\n meridiemParse: /de|du/i,\n isPM: function (input) {\n return input.charAt(1).toLowerCase() === 'u';\n },\n meridiem: function (hours, minutes, isLower) {\n if (hours < 12) {\n return isLower === true ? 'de' : 'DE';\n } else {\n return isLower === true ? 'du' : 'DU';\n }\n },\n calendar: {\n sameDay: '[ma] LT[-kor]',\n nextDay: '[holnap] LT[-kor]',\n nextWeek: function () {\n return week.call(this, true);\n },\n lastDay: '[tegnap] LT[-kor]',\n lastWeek: function () {\n return week.call(this, false);\n },\n sameElse: 'L',\n },\n relativeTime: {\n future: '%s múlva',\n past: '%s',\n s: translate,\n ss: translate,\n m: translate,\n mm: translate,\n h: translate,\n hh: translate,\n d: translate,\n dd: translate,\n M: translate,\n MM: translate,\n y: translate,\n yy: translate,\n },\n dayOfMonthOrdinalParse: /\\d{1,2}\\./,\n ordinal: '%d.',\n week: {\n dow: 1, // Monday is the first day of the week.\n doy: 4, // The week that contains Jan 4th is the first week of the year.\n },\n });\n\n return hu;\n\n})));\n\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./~/moment/locale/hu.js\n// module id = 365\n// module chunks = 0 1 2 3 5 6 160","//! moment.js locale configuration\n//! locale : Armenian [hy-am]\n//! author : Armendarabyan : https://github.com/armendarabyan\n\n;(function (global, factory) {\n typeof exports === 'object' && typeof module !== 'undefined'\n && typeof require === 'function' ? factory(require('../moment')) :\n typeof define === 'function' && define.amd ? define(['../moment'], factory) :\n factory(global.moment)\n}(this, (function (moment) { 'use strict';\n\n //! moment.js locale configuration\n\n var hyAm = moment.defineLocale('hy-am', {\n months: {\n format: 'հունվարի_փետրվարի_մարտի_ապրիլի_մայիսի_հունիսի_հուլիսի_օգոստոսի_սեպտեմբերի_հոկտեմբերի_նոյեմբերի_դեկտեմբերի'.split(\n '_'\n ),\n standalone: 'հունվար_փետրվար_մարտ_ապրիլ_մայիս_հունիս_հուլիս_օգոստոս_սեպտեմբեր_հոկտեմբեր_նոյեմբեր_դեկտեմբեր'.split(\n '_'\n ),\n },\n monthsShort: 'հնվ_փտր_մրտ_ապր_մյս_հնս_հլս_օգս_սպտ_հկտ_նմբ_դկտ'.split('_'),\n weekdays: 'կիրակի_երկուշաբթի_երեքշաբթի_չորեքշաբթի_հինգշաբթի_ուրբաթ_շաբաթ'.split(\n '_'\n ),\n weekdaysShort: 'կրկ_երկ_երք_չրք_հնգ_ուրբ_շբթ'.split('_'),\n weekdaysMin: 'կրկ_երկ_երք_չրք_հնգ_ուրբ_շբթ'.split('_'),\n longDateFormat: {\n LT: 'HH:mm',\n LTS: 'HH:mm:ss',\n L: 'DD.MM.YYYY',\n LL: 'D MMMM YYYY թ.',\n LLL: 'D MMMM YYYY թ., HH:mm',\n LLLL: 'dddd, D MMMM YYYY թ., HH:mm',\n },\n calendar: {\n sameDay: '[այսօր] LT',\n nextDay: '[վաղը] LT',\n lastDay: '[երեկ] LT',\n nextWeek: function () {\n return 'dddd [օրը ժամը] LT';\n },\n lastWeek: function () {\n return '[անցած] dddd [օրը ժամը] LT';\n },\n sameElse: 'L',\n },\n relativeTime: {\n future: '%s հետո',\n past: '%s առաջ',\n s: 'մի քանի վայրկյան',\n ss: '%d վայրկյան',\n m: 'րոպե',\n mm: '%d րոպե',\n h: 'ժամ',\n hh: '%d ժամ',\n d: 'օր',\n dd: '%d օր',\n M: 'ամիս',\n MM: '%d ամիս',\n y: 'տարի',\n yy: '%d տարի',\n },\n meridiemParse: /գիշերվա|առավոտվա|ցերեկվա|երեկոյան/,\n isPM: function (input) {\n return /^(ցերեկվա|երեկոյան)$/.test(input);\n },\n meridiem: function (hour) {\n if (hour < 4) {\n return 'գիշերվա';\n } else if (hour < 12) {\n return 'առավոտվա';\n } else if (hour < 17) {\n return 'ցերեկվա';\n } else {\n return 'երեկոյան';\n }\n },\n dayOfMonthOrdinalParse: /\\d{1,2}|\\d{1,2}-(ին|րդ)/,\n ordinal: function (number, period) {\n switch (period) {\n case 'DDD':\n case 'w':\n case 'W':\n case 'DDDo':\n if (number === 1) {\n return number + '-ին';\n }\n return number + '-րդ';\n default:\n return number;\n }\n },\n week: {\n dow: 1, // Monday is the first day of the week.\n doy: 7, // The week that contains Jan 7th is the first week of the year.\n },\n });\n\n return hyAm;\n\n})));\n\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./~/moment/locale/hy-am.js\n// module id = 366\n// module chunks = 0 1 2 3 5 6 160","//! moment.js locale configuration\n//! locale : Indonesian [id]\n//! author : Mohammad Satrio Utomo : https://github.com/tyok\n//! reference: http://id.wikisource.org/wiki/Pedoman_Umum_Ejaan_Bahasa_Indonesia_yang_Disempurnakan\n\n;(function (global, factory) {\n typeof exports === 'object' && typeof module !== 'undefined'\n && typeof require === 'function' ? factory(require('../moment')) :\n typeof define === 'function' && define.amd ? define(['../moment'], factory) :\n factory(global.moment)\n}(this, (function (moment) { 'use strict';\n\n //! moment.js locale configuration\n\n var id = moment.defineLocale('id', {\n months: 'Januari_Februari_Maret_April_Mei_Juni_Juli_Agustus_September_Oktober_November_Desember'.split(\n '_'\n ),\n monthsShort: 'Jan_Feb_Mar_Apr_Mei_Jun_Jul_Agt_Sep_Okt_Nov_Des'.split('_'),\n weekdays: 'Minggu_Senin_Selasa_Rabu_Kamis_Jumat_Sabtu'.split('_'),\n weekdaysShort: 'Min_Sen_Sel_Rab_Kam_Jum_Sab'.split('_'),\n weekdaysMin: 'Mg_Sn_Sl_Rb_Km_Jm_Sb'.split('_'),\n longDateFormat: {\n LT: 'HH.mm',\n LTS: 'HH.mm.ss',\n L: 'DD/MM/YYYY',\n LL: 'D MMMM YYYY',\n LLL: 'D MMMM YYYY [pukul] HH.mm',\n LLLL: 'dddd, D MMMM YYYY [pukul] HH.mm',\n },\n meridiemParse: /pagi|siang|sore|malam/,\n meridiemHour: function (hour, meridiem) {\n if (hour === 12) {\n hour = 0;\n }\n if (meridiem === 'pagi') {\n return hour;\n } else if (meridiem === 'siang') {\n return hour >= 11 ? hour : hour + 12;\n } else if (meridiem === 'sore' || meridiem === 'malam') {\n return hour + 12;\n }\n },\n meridiem: function (hours, minutes, isLower) {\n if (hours < 11) {\n return 'pagi';\n } else if (hours < 15) {\n return 'siang';\n } else if (hours < 19) {\n return 'sore';\n } else {\n return 'malam';\n }\n },\n calendar: {\n sameDay: '[Hari ini pukul] LT',\n nextDay: '[Besok pukul] LT',\n nextWeek: 'dddd [pukul] LT',\n lastDay: '[Kemarin pukul] LT',\n lastWeek: 'dddd [lalu pukul] LT',\n sameElse: 'L',\n },\n relativeTime: {\n future: 'dalam %s',\n past: '%s yang lalu',\n s: 'beberapa detik',\n ss: '%d detik',\n m: 'semenit',\n mm: '%d menit',\n h: 'sejam',\n hh: '%d jam',\n d: 'sehari',\n dd: '%d hari',\n M: 'sebulan',\n MM: '%d bulan',\n y: 'setahun',\n yy: '%d tahun',\n },\n week: {\n dow: 0, // Sunday is the first day of the week.\n doy: 6, // The week that contains Jan 6th is the first week of the year.\n },\n });\n\n return id;\n\n})));\n\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./~/moment/locale/id.js\n// module id = 367\n// module chunks = 0 1 2 3 5 6 160","//! moment.js locale configuration\n//! locale : Icelandic [is]\n//! author : Hinrik Örn Sigurðsson : https://github.com/hinrik\n\n;(function (global, factory) {\n typeof exports === 'object' && typeof module !== 'undefined'\n && typeof require === 'function' ? factory(require('../moment')) :\n typeof define === 'function' && define.amd ? define(['../moment'], factory) :\n factory(global.moment)\n}(this, (function (moment) { 'use strict';\n\n //! moment.js locale configuration\n\n function plural(n) {\n if (n % 100 === 11) {\n return true;\n } else if (n % 10 === 1) {\n return false;\n }\n return true;\n }\n function translate(number, withoutSuffix, key, isFuture) {\n var result = number + ' ';\n switch (key) {\n case 's':\n return withoutSuffix || isFuture\n ? 'nokkrar sekúndur'\n : 'nokkrum sekúndum';\n case 'ss':\n if (plural(number)) {\n return (\n result +\n (withoutSuffix || isFuture ? 'sekúndur' : 'sekúndum')\n );\n }\n return result + 'sekúnda';\n case 'm':\n return withoutSuffix ? 'mínúta' : 'mínútu';\n case 'mm':\n if (plural(number)) {\n return (\n result + (withoutSuffix || isFuture ? 'mínútur' : 'mínútum')\n );\n } else if (withoutSuffix) {\n return result + 'mínúta';\n }\n return result + 'mínútu';\n case 'hh':\n if (plural(number)) {\n return (\n result +\n (withoutSuffix || isFuture\n ? 'klukkustundir'\n : 'klukkustundum')\n );\n }\n return result + 'klukkustund';\n case 'd':\n if (withoutSuffix) {\n return 'dagur';\n }\n return isFuture ? 'dag' : 'degi';\n case 'dd':\n if (plural(number)) {\n if (withoutSuffix) {\n return result + 'dagar';\n }\n return result + (isFuture ? 'daga' : 'dögum');\n } else if (withoutSuffix) {\n return result + 'dagur';\n }\n return result + (isFuture ? 'dag' : 'degi');\n case 'M':\n if (withoutSuffix) {\n return 'mánuður';\n }\n return isFuture ? 'mánuð' : 'mánuði';\n case 'MM':\n if (plural(number)) {\n if (withoutSuffix) {\n return result + 'mánuðir';\n }\n return result + (isFuture ? 'mánuði' : 'mánuðum');\n } else if (withoutSuffix) {\n return result + 'mánuður';\n }\n return result + (isFuture ? 'mánuð' : 'mánuði');\n case 'y':\n return withoutSuffix || isFuture ? 'ár' : 'ári';\n case 'yy':\n if (plural(number)) {\n return result + (withoutSuffix || isFuture ? 'ár' : 'árum');\n }\n return result + (withoutSuffix || isFuture ? 'ár' : 'ári');\n }\n }\n\n var is = moment.defineLocale('is', {\n months: 'janúar_febrúar_mars_apríl_maí_júní_júlí_ágúst_september_október_nóvember_desember'.split(\n '_'\n ),\n monthsShort: 'jan_feb_mar_apr_maí_jún_júl_ágú_sep_okt_nóv_des'.split('_'),\n weekdays: 'sunnudagur_mánudagur_þriðjudagur_miðvikudagur_fimmtudagur_föstudagur_laugardagur'.split(\n '_'\n ),\n weekdaysShort: 'sun_mán_þri_mið_fim_fös_lau'.split('_'),\n weekdaysMin: 'Su_Má_Þr_Mi_Fi_Fö_La'.split('_'),\n longDateFormat: {\n LT: 'H:mm',\n LTS: 'H:mm:ss',\n L: 'DD.MM.YYYY',\n LL: 'D. MMMM YYYY',\n LLL: 'D. MMMM YYYY [kl.] H:mm',\n LLLL: 'dddd, D. MMMM YYYY [kl.] H:mm',\n },\n calendar: {\n sameDay: '[í dag kl.] LT',\n nextDay: '[á morgun kl.] LT',\n nextWeek: 'dddd [kl.] LT',\n lastDay: '[í gær kl.] LT',\n lastWeek: '[síðasta] dddd [kl.] LT',\n sameElse: 'L',\n },\n relativeTime: {\n future: 'eftir %s',\n past: 'fyrir %s síðan',\n s: translate,\n ss: translate,\n m: translate,\n mm: translate,\n h: 'klukkustund',\n hh: translate,\n d: translate,\n dd: translate,\n M: translate,\n MM: translate,\n y: translate,\n yy: translate,\n },\n dayOfMonthOrdinalParse: /\\d{1,2}\\./,\n ordinal: '%d.',\n week: {\n dow: 1, // Monday is the first day of the week.\n doy: 4, // The week that contains Jan 4th is the first week of the year.\n },\n });\n\n return is;\n\n})));\n\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./~/moment/locale/is.js\n// module id = 368\n// module chunks = 0 1 2 3 5 6 160","//! moment.js locale configuration\n//! locale : Italian (Switzerland) [it-ch]\n//! author : xfh : https://github.com/xfh\n\n;(function (global, factory) {\n typeof exports === 'object' && typeof module !== 'undefined'\n && typeof require === 'function' ? factory(require('../moment')) :\n typeof define === 'function' && define.amd ? define(['../moment'], factory) :\n factory(global.moment)\n}(this, (function (moment) { 'use strict';\n\n //! moment.js locale configuration\n\n var itCh = moment.defineLocale('it-ch', {\n months: 'gennaio_febbraio_marzo_aprile_maggio_giugno_luglio_agosto_settembre_ottobre_novembre_dicembre'.split(\n '_'\n ),\n monthsShort: 'gen_feb_mar_apr_mag_giu_lug_ago_set_ott_nov_dic'.split('_'),\n weekdays: 'domenica_lunedì_martedì_mercoledì_giovedì_venerdì_sabato'.split(\n '_'\n ),\n weekdaysShort: 'dom_lun_mar_mer_gio_ven_sab'.split('_'),\n weekdaysMin: 'do_lu_ma_me_gi_ve_sa'.split('_'),\n longDateFormat: {\n LT: 'HH:mm',\n LTS: 'HH:mm:ss',\n L: 'DD.MM.YYYY',\n LL: 'D MMMM YYYY',\n LLL: 'D MMMM YYYY HH:mm',\n LLLL: 'dddd D MMMM YYYY HH:mm',\n },\n calendar: {\n sameDay: '[Oggi alle] LT',\n nextDay: '[Domani alle] LT',\n nextWeek: 'dddd [alle] LT',\n lastDay: '[Ieri alle] LT',\n lastWeek: function () {\n switch (this.day()) {\n case 0:\n return '[la scorsa] dddd [alle] LT';\n default:\n return '[lo scorso] dddd [alle] LT';\n }\n },\n sameElse: 'L',\n },\n relativeTime: {\n future: function (s) {\n return (/^[0-9].+$/.test(s) ? 'tra' : 'in') + ' ' + s;\n },\n past: '%s fa',\n s: 'alcuni secondi',\n ss: '%d secondi',\n m: 'un minuto',\n mm: '%d minuti',\n h: \"un'ora\",\n hh: '%d ore',\n d: 'un giorno',\n dd: '%d giorni',\n M: 'un mese',\n MM: '%d mesi',\n y: 'un anno',\n yy: '%d anni',\n },\n dayOfMonthOrdinalParse: /\\d{1,2}º/,\n ordinal: '%dº',\n week: {\n dow: 1, // Monday is the first day of the week.\n doy: 4, // The week that contains Jan 4th is the first week of the year.\n },\n });\n\n return itCh;\n\n})));\n\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./~/moment/locale/it-ch.js\n// module id = 369\n// module chunks = 0 1 2 3 5 6 160","//! moment.js locale configuration\n//! locale : Italian [it]\n//! author : Lorenzo : https://github.com/aliem\n//! author: Mattia Larentis: https://github.com/nostalgiaz\n//! author: Marco : https://github.com/Manfre98\n\n;(function (global, factory) {\n typeof exports === 'object' && typeof module !== 'undefined'\n && typeof require === 'function' ? factory(require('../moment')) :\n typeof define === 'function' && define.amd ? define(['../moment'], factory) :\n factory(global.moment)\n}(this, (function (moment) { 'use strict';\n\n //! moment.js locale configuration\n\n var it = moment.defineLocale('it', {\n months: 'gennaio_febbraio_marzo_aprile_maggio_giugno_luglio_agosto_settembre_ottobre_novembre_dicembre'.split(\n '_'\n ),\n monthsShort: 'gen_feb_mar_apr_mag_giu_lug_ago_set_ott_nov_dic'.split('_'),\n weekdays: 'domenica_lunedì_martedì_mercoledì_giovedì_venerdì_sabato'.split(\n '_'\n ),\n weekdaysShort: 'dom_lun_mar_mer_gio_ven_sab'.split('_'),\n weekdaysMin: 'do_lu_ma_me_gi_ve_sa'.split('_'),\n longDateFormat: {\n LT: 'HH:mm',\n LTS: 'HH:mm:ss',\n L: 'DD/MM/YYYY',\n LL: 'D MMMM YYYY',\n LLL: 'D MMMM YYYY HH:mm',\n LLLL: 'dddd D MMMM YYYY HH:mm',\n },\n calendar: {\n sameDay: function () {\n return (\n '[Oggi a' +\n (this.hours() > 1 ? 'lle ' : this.hours() === 0 ? ' ' : \"ll'\") +\n ']LT'\n );\n },\n nextDay: function () {\n return (\n '[Domani a' +\n (this.hours() > 1 ? 'lle ' : this.hours() === 0 ? ' ' : \"ll'\") +\n ']LT'\n );\n },\n nextWeek: function () {\n return (\n 'dddd [a' +\n (this.hours() > 1 ? 'lle ' : this.hours() === 0 ? ' ' : \"ll'\") +\n ']LT'\n );\n },\n lastDay: function () {\n return (\n '[Ieri a' +\n (this.hours() > 1 ? 'lle ' : this.hours() === 0 ? ' ' : \"ll'\") +\n ']LT'\n );\n },\n lastWeek: function () {\n switch (this.day()) {\n case 0:\n return (\n '[La scorsa] dddd [a' +\n (this.hours() > 1\n ? 'lle '\n : this.hours() === 0\n ? ' '\n : \"ll'\") +\n ']LT'\n );\n default:\n return (\n '[Lo scorso] dddd [a' +\n (this.hours() > 1\n ? 'lle '\n : this.hours() === 0\n ? ' '\n : \"ll'\") +\n ']LT'\n );\n }\n },\n sameElse: 'L',\n },\n relativeTime: {\n future: 'tra %s',\n past: '%s fa',\n s: 'alcuni secondi',\n ss: '%d secondi',\n m: 'un minuto',\n mm: '%d minuti',\n h: \"un'ora\",\n hh: '%d ore',\n d: 'un giorno',\n dd: '%d giorni',\n w: 'una settimana',\n ww: '%d settimane',\n M: 'un mese',\n MM: '%d mesi',\n y: 'un anno',\n yy: '%d anni',\n },\n dayOfMonthOrdinalParse: /\\d{1,2}º/,\n ordinal: '%dº',\n week: {\n dow: 1, // Monday is the first day of the week.\n doy: 4, // The week that contains Jan 4th is the first week of the year.\n },\n });\n\n return it;\n\n})));\n\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./~/moment/locale/it.js\n// module id = 370\n// module chunks = 0 1 2 3 5 6 160","//! moment.js locale configuration\n//! locale : Javanese [jv]\n//! author : Rony Lantip : https://github.com/lantip\n//! reference: http://jv.wikipedia.org/wiki/Basa_Jawa\n\n;(function (global, factory) {\n typeof exports === 'object' && typeof module !== 'undefined'\n && typeof require === 'function' ? factory(require('../moment')) :\n typeof define === 'function' && define.amd ? define(['../moment'], factory) :\n factory(global.moment)\n}(this, (function (moment) { 'use strict';\n\n //! moment.js locale configuration\n\n var jv = moment.defineLocale('jv', {\n months: 'Januari_Februari_Maret_April_Mei_Juni_Juli_Agustus_September_Oktober_Nopember_Desember'.split(\n '_'\n ),\n monthsShort: 'Jan_Feb_Mar_Apr_Mei_Jun_Jul_Ags_Sep_Okt_Nop_Des'.split('_'),\n weekdays: 'Minggu_Senen_Seloso_Rebu_Kemis_Jemuwah_Septu'.split('_'),\n weekdaysShort: 'Min_Sen_Sel_Reb_Kem_Jem_Sep'.split('_'),\n weekdaysMin: 'Mg_Sn_Sl_Rb_Km_Jm_Sp'.split('_'),\n longDateFormat: {\n LT: 'HH.mm',\n LTS: 'HH.mm.ss',\n L: 'DD/MM/YYYY',\n LL: 'D MMMM YYYY',\n LLL: 'D MMMM YYYY [pukul] HH.mm',\n LLLL: 'dddd, D MMMM YYYY [pukul] HH.mm',\n },\n meridiemParse: /enjing|siyang|sonten|ndalu/,\n meridiemHour: function (hour, meridiem) {\n if (hour === 12) {\n hour = 0;\n }\n if (meridiem === 'enjing') {\n return hour;\n } else if (meridiem === 'siyang') {\n return hour >= 11 ? hour : hour + 12;\n } else if (meridiem === 'sonten' || meridiem === 'ndalu') {\n return hour + 12;\n }\n },\n meridiem: function (hours, minutes, isLower) {\n if (hours < 11) {\n return 'enjing';\n } else if (hours < 15) {\n return 'siyang';\n } else if (hours < 19) {\n return 'sonten';\n } else {\n return 'ndalu';\n }\n },\n calendar: {\n sameDay: '[Dinten puniko pukul] LT',\n nextDay: '[Mbenjang pukul] LT',\n nextWeek: 'dddd [pukul] LT',\n lastDay: '[Kala wingi pukul] LT',\n lastWeek: 'dddd [kepengker pukul] LT',\n sameElse: 'L',\n },\n relativeTime: {\n future: 'wonten ing %s',\n past: '%s ingkang kepengker',\n s: 'sawetawis detik',\n ss: '%d detik',\n m: 'setunggal menit',\n mm: '%d menit',\n h: 'setunggal jam',\n hh: '%d jam',\n d: 'sedinten',\n dd: '%d dinten',\n M: 'sewulan',\n MM: '%d wulan',\n y: 'setaun',\n yy: '%d taun',\n },\n week: {\n dow: 1, // Monday is the first day of the week.\n doy: 7, // The week that contains Jan 7th is the first week of the year.\n },\n });\n\n return jv;\n\n})));\n\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./~/moment/locale/jv.js\n// module id = 371\n// module chunks = 0 1 2 3 5 6 160","//! moment.js locale configuration\n//! locale : Georgian [ka]\n//! author : Irakli Janiashvili : https://github.com/IrakliJani\n\n;(function (global, factory) {\n typeof exports === 'object' && typeof module !== 'undefined'\n && typeof require === 'function' ? factory(require('../moment')) :\n typeof define === 'function' && define.amd ? define(['../moment'], factory) :\n factory(global.moment)\n}(this, (function (moment) { 'use strict';\n\n //! moment.js locale configuration\n\n var ka = moment.defineLocale('ka', {\n months: 'იანვარი_თებერვალი_მარტი_აპრილი_მაისი_ივნისი_ივლისი_აგვისტო_სექტემბერი_ოქტომბერი_ნოემბერი_დეკემბერი'.split(\n '_'\n ),\n monthsShort: 'იან_თებ_მარ_აპრ_მაი_ივნ_ივლ_აგვ_სექ_ოქტ_ნოე_დეკ'.split('_'),\n weekdays: {\n standalone: 'კვირა_ორშაბათი_სამშაბათი_ოთხშაბათი_ხუთშაბათი_პარასკევი_შაბათი'.split(\n '_'\n ),\n format: 'კვირას_ორშაბათს_სამშაბათს_ოთხშაბათს_ხუთშაბათს_პარასკევს_შაბათს'.split(\n '_'\n ),\n isFormat: /(წინა|შემდეგ)/,\n },\n weekdaysShort: 'კვი_ორშ_სამ_ოთხ_ხუთ_პარ_შაბ'.split('_'),\n weekdaysMin: 'კვ_ორ_სა_ოთ_ხუ_პა_შა'.split('_'),\n longDateFormat: {\n LT: 'HH:mm',\n LTS: 'HH:mm:ss',\n L: 'DD/MM/YYYY',\n LL: 'D MMMM YYYY',\n LLL: 'D MMMM YYYY HH:mm',\n LLLL: 'dddd, D MMMM YYYY HH:mm',\n },\n calendar: {\n sameDay: '[დღეს] LT[-ზე]',\n nextDay: '[ხვალ] LT[-ზე]',\n lastDay: '[გუშინ] LT[-ზე]',\n nextWeek: '[შემდეგ] dddd LT[-ზე]',\n lastWeek: '[წინა] dddd LT-ზე',\n sameElse: 'L',\n },\n relativeTime: {\n future: function (s) {\n return s.replace(/(წამ|წუთ|საათ|წელ|დღ|თვ)(ი|ე)/, function (\n $0,\n $1,\n $2\n ) {\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 (\n number < 20 ||\n (number <= 100 && number % 20 === 0) ||\n number % 100 === 0\n ) {\n return 'მე-' + number;\n }\n return number + '-ე';\n },\n week: {\n dow: 1,\n doy: 7,\n },\n });\n\n return ka;\n\n})));\n\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./~/moment/locale/ka.js\n// module id = 372\n// module chunks = 0 1 2 3 5 6 160","//! moment.js locale configuration\n//! locale : Kazakh [kk]\n//! authors : Nurlan Rakhimzhanov : https://github.com/nurlan\n\n;(function (global, factory) {\n typeof exports === 'object' && typeof module !== 'undefined'\n && typeof require === 'function' ? factory(require('../moment')) :\n typeof define === 'function' && define.amd ? define(['../moment'], factory) :\n factory(global.moment)\n}(this, (function (moment) { 'use strict';\n\n //! moment.js locale configuration\n\n var suffixes = {\n 0: '-ші',\n 1: '-ші',\n 2: '-ші',\n 3: '-ші',\n 4: '-ші',\n 5: '-ші',\n 6: '-шы',\n 7: '-ші',\n 8: '-ші',\n 9: '-шы',\n 10: '-шы',\n 20: '-шы',\n 30: '-шы',\n 40: '-шы',\n 50: '-ші',\n 60: '-шы',\n 70: '-ші',\n 80: '-ші',\n 90: '-шы',\n 100: '-ші',\n };\n\n var kk = moment.defineLocale('kk', {\n months: 'қаңтар_ақпан_наурыз_сәуір_мамыр_маусым_шілде_тамыз_қыркүйек_қазан_қараша_желтоқсан'.split(\n '_'\n ),\n monthsShort: 'қаң_ақп_нау_сәу_мам_мау_шіл_там_қыр_қаз_қар_жел'.split('_'),\n weekdays: 'жексенбі_дүйсенбі_сейсенбі_сәрсенбі_бейсенбі_жұма_сенбі'.split(\n '_'\n ),\n weekdaysShort: 'жек_дүй_сей_сәр_бей_жұм_сен'.split('_'),\n weekdaysMin: 'жк_дй_сй_ср_бй_жм_сн'.split('_'),\n longDateFormat: {\n LT: 'HH:mm',\n LTS: 'HH:mm:ss',\n L: 'DD.MM.YYYY',\n LL: 'D MMMM YYYY',\n LLL: 'D MMMM YYYY HH:mm',\n LLLL: 'dddd, D MMMM YYYY HH:mm',\n },\n calendar: {\n sameDay: '[Бүгін сағат] LT',\n nextDay: '[Ертең сағат] LT',\n nextWeek: 'dddd [сағат] LT',\n lastDay: '[Кеше сағат] LT',\n lastWeek: '[Өткен аптаның] dddd [сағат] LT',\n sameElse: 'L',\n },\n relativeTime: {\n future: '%s ішінде',\n past: '%s бұрын',\n s: 'бірнеше секунд',\n ss: '%d секунд',\n m: 'бір минут',\n mm: '%d минут',\n h: 'бір сағат',\n hh: '%d сағат',\n d: 'бір күн',\n dd: '%d күн',\n M: 'бір ай',\n MM: '%d ай',\n y: 'бір жыл',\n yy: '%d жыл',\n },\n dayOfMonthOrdinalParse: /\\d{1,2}-(ші|шы)/,\n ordinal: function (number) {\n var a = number % 10,\n b = number >= 100 ? 100 : null;\n return number + (suffixes[number] || suffixes[a] || suffixes[b]);\n },\n week: {\n dow: 1, // Monday is the first day of the week.\n doy: 7, // The week that contains Jan 7th is the first week of the year.\n },\n });\n\n return kk;\n\n})));\n\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./~/moment/locale/kk.js\n// module id = 373\n// module chunks = 0 1 2 3 5 6 160","//! moment.js locale configuration\n//! locale : Cambodian [km]\n//! author : Kruy Vanna : https://github.com/kruyvanna\n\n;(function (global, factory) {\n typeof exports === 'object' && typeof module !== 'undefined'\n && typeof require === 'function' ? factory(require('../moment')) :\n typeof define === 'function' && define.amd ? define(['../moment'], factory) :\n factory(global.moment)\n}(this, (function (moment) { 'use strict';\n\n //! moment.js locale configuration\n\n var symbolMap = {\n 1: '១',\n 2: '២',\n 3: '៣',\n 4: '៤',\n 5: '៥',\n 6: '៦',\n 7: '៧',\n 8: '៨',\n 9: '៩',\n 0: '០',\n },\n numberMap = {\n '១': '1',\n '២': '2',\n '៣': '3',\n '៤': '4',\n '៥': '5',\n '៦': '6',\n '៧': '7',\n '៨': '8',\n '៩': '9',\n '០': '0',\n };\n\n var km = moment.defineLocale('km', {\n months: 'មករា_កុម្ភៈ_មីនា_មេសា_ឧសភា_មិថុនា_កក្កដា_សីហា_កញ្ញា_តុលា_វិច្ឆិកា_ធ្នូ'.split(\n '_'\n ),\n monthsShort: 'មករា_កុម្ភៈ_មីនា_មេសា_ឧសភា_មិថុនា_កក្កដា_សីហា_កញ្ញា_តុលា_វិច្ឆិកា_ធ្នូ'.split(\n '_'\n ),\n weekdays: 'អាទិត្យ_ច័ន្ទ_អង្គារ_ពុធ_ព្រហស្បតិ៍_សុក្រ_សៅរ៍'.split('_'),\n weekdaysShort: 'អា_ច_អ_ព_ព្រ_សុ_ស'.split('_'),\n weekdaysMin: 'អា_ច_អ_ព_ព្រ_សុ_ស'.split('_'),\n weekdaysParseExact: true,\n longDateFormat: {\n LT: 'HH:mm',\n LTS: 'HH:mm:ss',\n L: 'DD/MM/YYYY',\n LL: 'D MMMM YYYY',\n LLL: 'D MMMM YYYY HH:mm',\n LLLL: 'dddd, D MMMM YYYY HH:mm',\n },\n meridiemParse: /ព្រឹក|ល្ងាច/,\n isPM: function (input) {\n return input === 'ល្ងាច';\n },\n meridiem: function (hour, minute, isLower) {\n if (hour < 12) {\n return 'ព្រឹក';\n } else {\n return 'ល្ងាច';\n }\n },\n calendar: {\n sameDay: '[ថ្ងៃនេះ ម៉ោង] LT',\n nextDay: '[ស្អែក ម៉ោង] LT',\n nextWeek: 'dddd [ម៉ោង] LT',\n lastDay: '[ម្សិលមិញ ម៉ោង] LT',\n lastWeek: 'dddd [សប្តាហ៍មុន] [ម៉ោង] LT',\n sameElse: 'L',\n },\n relativeTime: {\n future: '%sទៀត',\n past: '%sមុន',\n s: 'ប៉ុន្មានវិនាទី',\n ss: '%d វិនាទី',\n m: 'មួយនាទី',\n mm: '%d នាទី',\n h: 'មួយម៉ោង',\n hh: '%d ម៉ោង',\n d: 'មួយថ្ងៃ',\n dd: '%d ថ្ងៃ',\n M: 'មួយខែ',\n MM: '%d ខែ',\n y: 'មួយឆ្នាំ',\n yy: '%d ឆ្នាំ',\n },\n dayOfMonthOrdinalParse: /ទី\\d{1,2}/,\n ordinal: 'ទី%d',\n preparse: function (string) {\n return string.replace(/[១២៣៤៥៦៧៨៩០]/g, function (match) {\n return numberMap[match];\n });\n },\n postformat: function (string) {\n return string.replace(/\\d/g, function (match) {\n return symbolMap[match];\n });\n },\n week: {\n dow: 1, // Monday is the first day of the week.\n doy: 4, // The week that contains Jan 4th is the first week of the year.\n },\n });\n\n return km;\n\n})));\n\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./~/moment/locale/km.js\n// module id = 374\n// module chunks = 0 1 2 3 5 6 160","//! moment.js locale configuration\n//! locale : Kannada [kn]\n//! author : Rajeev Naik : https://github.com/rajeevnaikte\n\n;(function (global, factory) {\n typeof exports === 'object' && typeof module !== 'undefined'\n && typeof require === 'function' ? factory(require('../moment')) :\n typeof define === 'function' && define.amd ? define(['../moment'], factory) :\n factory(global.moment)\n}(this, (function (moment) { 'use strict';\n\n //! moment.js locale configuration\n\n var symbolMap = {\n 1: '೧',\n 2: '೨',\n 3: '೩',\n 4: '೪',\n 5: '೫',\n 6: '೬',\n 7: '೭',\n 8: '೮',\n 9: '೯',\n 0: '೦',\n },\n numberMap = {\n '೧': '1',\n '೨': '2',\n '೩': '3',\n '೪': '4',\n '೫': '5',\n '೬': '6',\n '೭': '7',\n '೮': '8',\n '೯': '9',\n '೦': '0',\n };\n\n var kn = moment.defineLocale('kn', {\n months: 'ಜನವರಿ_ಫೆಬ್ರವರಿ_ಮಾರ್ಚ್_ಏಪ್ರಿಲ್_ಮೇ_ಜೂನ್_ಜುಲೈ_ಆಗಸ್ಟ್_ಸೆಪ್ಟೆಂಬರ್_ಅಕ್ಟೋಬರ್_ನವೆಂಬರ್_ಡಿಸೆಂಬರ್'.split(\n '_'\n ),\n monthsShort: 'ಜನ_ಫೆಬ್ರ_ಮಾರ್ಚ್_ಏಪ್ರಿಲ್_ಮೇ_ಜೂನ್_ಜುಲೈ_ಆಗಸ್ಟ್_ಸೆಪ್ಟೆಂ_ಅಕ್ಟೋ_ನವೆಂ_ಡಿಸೆಂ'.split(\n '_'\n ),\n monthsParseExact: true,\n weekdays: 'ಭಾನುವಾರ_ಸೋಮವಾರ_ಮಂಗಳವಾರ_ಬುಧವಾರ_ಗುರುವಾರ_ಶುಕ್ರವಾರ_ಶನಿವಾರ'.split(\n '_'\n ),\n weekdaysShort: 'ಭಾನು_ಸೋಮ_ಮಂಗಳ_ಬುಧ_ಗುರು_ಶುಕ್ರ_ಶನಿ'.split('_'),\n weekdaysMin: 'ಭಾ_ಸೋ_ಮಂ_ಬು_ಗು_ಶು_ಶ'.split('_'),\n longDateFormat: {\n LT: 'A h:mm',\n LTS: 'A h:mm:ss',\n L: 'DD/MM/YYYY',\n LL: 'D MMMM YYYY',\n LLL: 'D MMMM YYYY, A h:mm',\n LLLL: 'dddd, D MMMM YYYY, A h:mm',\n },\n calendar: {\n sameDay: '[ಇಂದು] LT',\n nextDay: '[ನಾಳೆ] LT',\n nextWeek: 'dddd, LT',\n lastDay: '[ನಿನ್ನೆ] LT',\n lastWeek: '[ಕೊನೆಯ] dddd, LT',\n sameElse: 'L',\n },\n relativeTime: {\n future: '%s ನಂತರ',\n past: '%s ಹಿಂದೆ',\n s: 'ಕೆಲವು ಕ್ಷಣಗಳು',\n ss: '%d ಸೆಕೆಂಡುಗಳು',\n m: 'ಒಂದು ನಿಮಿಷ',\n mm: '%d ನಿಮಿಷ',\n h: 'ಒಂದು ಗಂಟೆ',\n hh: '%d ಗಂಟೆ',\n d: 'ಒಂದು ದಿನ',\n dd: '%d ದಿನ',\n M: 'ಒಂದು ತಿಂಗಳು',\n MM: '%d ತಿಂಗಳು',\n y: 'ಒಂದು ವರ್ಷ',\n yy: '%d ವರ್ಷ',\n },\n preparse: function (string) {\n return string.replace(/[೧೨೩೪೫೬೭೮೯೦]/g, function (match) {\n return numberMap[match];\n });\n },\n postformat: function (string) {\n return string.replace(/\\d/g, function (match) {\n return symbolMap[match];\n });\n },\n meridiemParse: /ರಾತ್ರಿ|ಬೆಳಿಗ್ಗೆ|ಮಧ್ಯಾಹ್ನ|ಸಂಜೆ/,\n meridiemHour: function (hour, meridiem) {\n if (hour === 12) {\n hour = 0;\n }\n if (meridiem === 'ರಾತ್ರಿ') {\n return hour < 4 ? hour : hour + 12;\n } else if (meridiem === 'ಬೆಳಿಗ್ಗೆ') {\n return hour;\n } else if (meridiem === 'ಮಧ್ಯಾಹ್ನ') {\n return hour >= 10 ? hour : hour + 12;\n } else if (meridiem === 'ಸಂಜೆ') {\n return hour + 12;\n }\n },\n meridiem: function (hour, minute, isLower) {\n if (hour < 4) {\n return 'ರಾತ್ರಿ';\n } else if (hour < 10) {\n return 'ಬೆಳಿಗ್ಗೆ';\n } else if (hour < 17) {\n return 'ಮಧ್ಯಾಹ್ನ';\n } else if (hour < 20) {\n return 'ಸಂಜೆ';\n } else {\n return 'ರಾತ್ರಿ';\n }\n },\n dayOfMonthOrdinalParse: /\\d{1,2}(ನೇ)/,\n ordinal: function (number) {\n return number + 'ನೇ';\n },\n week: {\n dow: 0, // Sunday is the first day of the week.\n doy: 6, // The week that contains Jan 6th is the first week of the year.\n },\n });\n\n return kn;\n\n})));\n\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./~/moment/locale/kn.js\n// module id = 375\n// module chunks = 0 1 2 3 5 6 160","//! moment.js locale configuration\n//! locale : Korean [ko]\n//! author : Kyungwook, Park : https://github.com/kyungw00k\n//! author : Jeeeyul Lee \n\n;(function (global, factory) {\n typeof exports === 'object' && typeof module !== 'undefined'\n && typeof require === 'function' ? factory(require('../moment')) :\n typeof define === 'function' && define.amd ? define(['../moment'], factory) :\n factory(global.moment)\n}(this, (function (moment) { 'use strict';\n\n //! moment.js locale configuration\n\n var ko = moment.defineLocale('ko', {\n months: '1월_2월_3월_4월_5월_6월_7월_8월_9월_10월_11월_12월'.split('_'),\n monthsShort: '1월_2월_3월_4월_5월_6월_7월_8월_9월_10월_11월_12월'.split(\n '_'\n ),\n weekdays: '일요일_월요일_화요일_수요일_목요일_금요일_토요일'.split('_'),\n weekdaysShort: '일_월_화_수_목_금_토'.split('_'),\n weekdaysMin: '일_월_화_수_목_금_토'.split('_'),\n longDateFormat: {\n LT: 'A h:mm',\n LTS: 'A h:mm:ss',\n L: 'YYYY.MM.DD.',\n LL: 'YYYY년 MMMM D일',\n LLL: 'YYYY년 MMMM D일 A h:mm',\n LLLL: 'YYYY년 MMMM D일 dddd A h:mm',\n l: 'YYYY.MM.DD.',\n ll: 'YYYY년 MMMM D일',\n lll: 'YYYY년 MMMM D일 A h:mm',\n llll: 'YYYY년 MMMM D일 dddd A h:mm',\n },\n calendar: {\n sameDay: '오늘 LT',\n nextDay: '내일 LT',\n nextWeek: 'dddd LT',\n lastDay: '어제 LT',\n lastWeek: '지난주 dddd LT',\n sameElse: 'L',\n },\n relativeTime: {\n future: '%s 후',\n past: '%s 전',\n s: '몇 초',\n ss: '%d초',\n m: '1분',\n mm: '%d분',\n h: '한 시간',\n hh: '%d시간',\n d: '하루',\n dd: '%d일',\n M: '한 달',\n MM: '%d달',\n y: '일 년',\n yy: '%d년',\n },\n dayOfMonthOrdinalParse: /\\d{1,2}(일|월|주)/,\n ordinal: function (number, period) {\n switch (period) {\n case 'd':\n case 'D':\n case 'DDD':\n return number + '일';\n case 'M':\n return number + '월';\n case 'w':\n case 'W':\n return number + '주';\n default:\n return number;\n }\n },\n meridiemParse: /오전|오후/,\n isPM: function (token) {\n return token === '오후';\n },\n meridiem: function (hour, minute, isUpper) {\n return hour < 12 ? '오전' : '오후';\n },\n });\n\n return ko;\n\n})));\n\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./~/moment/locale/ko.js\n// module id = 376\n// module chunks = 0 1 2 3 5 6 160","//! moment.js locale configuration\n//! locale : Kurdish [ku]\n//! author : Shahram Mebashar : https://github.com/ShahramMebashar\n\n;(function (global, factory) {\n typeof exports === 'object' && typeof module !== 'undefined'\n && typeof require === 'function' ? factory(require('../moment')) :\n typeof define === 'function' && define.amd ? define(['../moment'], factory) :\n factory(global.moment)\n}(this, (function (moment) { 'use strict';\n\n //! moment.js locale configuration\n\n var symbolMap = {\n 1: '١',\n 2: '٢',\n 3: '٣',\n 4: '٤',\n 5: '٥',\n 6: '٦',\n 7: '٧',\n 8: '٨',\n 9: '٩',\n 0: '٠',\n },\n numberMap = {\n '١': '1',\n '٢': '2',\n '٣': '3',\n '٤': '4',\n '٥': '5',\n '٦': '6',\n '٧': '7',\n '٨': '8',\n '٩': '9',\n '٠': '0',\n },\n months = [\n 'کانونی دووەم',\n 'شوبات',\n 'ئازار',\n 'نیسان',\n 'ئایار',\n 'حوزەیران',\n 'تەمموز',\n 'ئاب',\n 'ئەیلوول',\n 'تشرینی یەكەم',\n 'تشرینی دووەم',\n 'كانونی یەکەم',\n ];\n\n var ku = moment.defineLocale('ku', {\n months: months,\n monthsShort: months,\n weekdays: 'یه‌كشه‌ممه‌_دووشه‌ممه‌_سێشه‌ممه‌_چوارشه‌ممه‌_پێنجشه‌ممه‌_هه‌ینی_شه‌ممه‌'.split(\n '_'\n ),\n weekdaysShort: 'یه‌كشه‌م_دووشه‌م_سێشه‌م_چوارشه‌م_پێنجشه‌م_هه‌ینی_شه‌ممه‌'.split(\n '_'\n ),\n weekdaysMin: 'ی_د_س_چ_پ_ه_ش'.split('_'),\n weekdaysParseExact: true,\n longDateFormat: {\n LT: 'HH:mm',\n LTS: 'HH:mm:ss',\n L: 'DD/MM/YYYY',\n LL: 'D MMMM YYYY',\n LLL: 'D MMMM YYYY HH:mm',\n LLLL: 'dddd, D MMMM YYYY HH:mm',\n },\n meridiemParse: /ئێواره‌|به‌یانی/,\n isPM: function (input) {\n return /ئێواره‌/.test(input);\n },\n meridiem: function (hour, minute, isLower) {\n if (hour < 12) {\n return 'به‌یانی';\n } else {\n return 'ئێواره‌';\n }\n },\n calendar: {\n sameDay: '[ئه‌مرۆ كاتژمێر] LT',\n nextDay: '[به‌یانی كاتژمێر] LT',\n nextWeek: 'dddd [كاتژمێر] LT',\n lastDay: '[دوێنێ كاتژمێر] LT',\n lastWeek: 'dddd [كاتژمێر] LT',\n sameElse: 'L',\n },\n relativeTime: {\n future: 'له‌ %s',\n past: '%s',\n s: 'چه‌ند چركه‌یه‌ك',\n ss: 'چركه‌ %d',\n m: 'یه‌ك خوله‌ك',\n mm: '%d خوله‌ك',\n h: 'یه‌ك كاتژمێر',\n hh: '%d كاتژمێر',\n d: 'یه‌ك ڕۆژ',\n dd: '%d ڕۆژ',\n M: 'یه‌ك مانگ',\n MM: '%d مانگ',\n y: 'یه‌ك ساڵ',\n yy: '%d ساڵ',\n },\n preparse: function (string) {\n return string\n .replace(/[١٢٣٤٥٦٧٨٩٠]/g, function (match) {\n return numberMap[match];\n })\n .replace(/،/g, ',');\n },\n postformat: function (string) {\n return string\n .replace(/\\d/g, function (match) {\n return symbolMap[match];\n })\n .replace(/,/g, '،');\n },\n week: {\n dow: 6, // Saturday is the first day of the week.\n doy: 12, // The week that contains Jan 12th is the first week of the year.\n },\n });\n\n return ku;\n\n})));\n\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./~/moment/locale/ku.js\n// module id = 377\n// module chunks = 0 1 2 3 5 6 160","//! moment.js locale configuration\n//! locale : Kyrgyz [ky]\n//! author : Chyngyz Arystan uulu : https://github.com/chyngyz\n\n;(function (global, factory) {\n typeof exports === 'object' && typeof module !== 'undefined'\n && typeof require === 'function' ? factory(require('../moment')) :\n typeof define === 'function' && define.amd ? define(['../moment'], factory) :\n factory(global.moment)\n}(this, (function (moment) { 'use strict';\n\n //! moment.js locale configuration\n\n var suffixes = {\n 0: '-чү',\n 1: '-чи',\n 2: '-чи',\n 3: '-чү',\n 4: '-чү',\n 5: '-чи',\n 6: '-чы',\n 7: '-чи',\n 8: '-чи',\n 9: '-чу',\n 10: '-чу',\n 20: '-чы',\n 30: '-чу',\n 40: '-чы',\n 50: '-чү',\n 60: '-чы',\n 70: '-чи',\n 80: '-чи',\n 90: '-чу',\n 100: '-чү',\n };\n\n var ky = moment.defineLocale('ky', {\n months: 'январь_февраль_март_апрель_май_июнь_июль_август_сентябрь_октябрь_ноябрь_декабрь'.split(\n '_'\n ),\n monthsShort: 'янв_фев_март_апр_май_июнь_июль_авг_сен_окт_ноя_дек'.split(\n '_'\n ),\n weekdays: 'Жекшемби_Дүйшөмбү_Шейшемби_Шаршемби_Бейшемби_Жума_Ишемби'.split(\n '_'\n ),\n weekdaysShort: 'Жек_Дүй_Шей_Шар_Бей_Жум_Ише'.split('_'),\n weekdaysMin: 'Жк_Дй_Шй_Шр_Бй_Жм_Иш'.split('_'),\n longDateFormat: {\n LT: 'HH:mm',\n LTS: 'HH:mm:ss',\n L: 'DD.MM.YYYY',\n LL: 'D MMMM YYYY',\n LLL: 'D MMMM YYYY HH:mm',\n LLLL: 'dddd, D MMMM YYYY HH:mm',\n },\n calendar: {\n sameDay: '[Бүгүн саат] LT',\n nextDay: '[Эртең саат] LT',\n nextWeek: 'dddd [саат] LT',\n lastDay: '[Кечээ саат] LT',\n lastWeek: '[Өткөн аптанын] dddd [күнү] [саат] LT',\n sameElse: 'L',\n },\n relativeTime: {\n future: '%s ичинде',\n past: '%s мурун',\n s: 'бирнече секунд',\n ss: '%d секунд',\n m: 'бир мүнөт',\n mm: '%d мүнөт',\n h: 'бир саат',\n hh: '%d саат',\n d: 'бир күн',\n dd: '%d күн',\n M: 'бир ай',\n MM: '%d ай',\n y: 'бир жыл',\n yy: '%d жыл',\n },\n dayOfMonthOrdinalParse: /\\d{1,2}-(чи|чы|чү|чу)/,\n ordinal: function (number) {\n var a = number % 10,\n b = number >= 100 ? 100 : null;\n return number + (suffixes[number] || suffixes[a] || suffixes[b]);\n },\n week: {\n dow: 1, // Monday is the first day of the week.\n doy: 7, // The week that contains Jan 7th is the first week of the year.\n },\n });\n\n return ky;\n\n})));\n\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./~/moment/locale/ky.js\n// module id = 378\n// module chunks = 0 1 2 3 5 6 160","//! moment.js locale configuration\n//! locale : Luxembourgish [lb]\n//! author : mweimerskirch : https://github.com/mweimerskirch\n//! author : David Raison : https://github.com/kwisatz\n\n;(function (global, factory) {\n typeof exports === 'object' && typeof module !== 'undefined'\n && typeof require === 'function' ? factory(require('../moment')) :\n typeof define === 'function' && define.amd ? define(['../moment'], factory) :\n factory(global.moment)\n}(this, (function (moment) { 'use strict';\n\n //! moment.js locale configuration\n\n function processRelativeTime(number, withoutSuffix, key, isFuture) {\n var format = {\n m: ['eng Minutt', 'enger Minutt'],\n h: ['eng Stonn', 'enger Stonn'],\n d: ['een Dag', 'engem Dag'],\n M: ['ee Mount', 'engem Mount'],\n y: ['ee Joer', 'engem Joer'],\n };\n return withoutSuffix ? format[key][0] : format[key][1];\n }\n function processFutureTime(string) {\n var number = string.substr(0, string.indexOf(' '));\n if (eifelerRegelAppliesToNumber(number)) {\n return 'a ' + string;\n }\n return 'an ' + string;\n }\n function processPastTime(string) {\n var number = string.substr(0, string.indexOf(' '));\n if (eifelerRegelAppliesToNumber(number)) {\n return 'viru ' + string;\n }\n return 'virun ' + string;\n }\n /**\n * Returns true if the word before the given number loses the '-n' ending.\n * e.g. 'an 10 Deeg' but 'a 5 Deeg'\n *\n * @param number {integer}\n * @returns {boolean}\n */\n function eifelerRegelAppliesToNumber(number) {\n number = parseInt(number, 10);\n if (isNaN(number)) {\n return false;\n }\n if (number < 0) {\n // Negative Number --> always true\n return true;\n } else if (number < 10) {\n // Only 1 digit\n if (4 <= number && number <= 7) {\n return true;\n }\n return false;\n } else if (number < 100) {\n // 2 digits\n var lastDigit = number % 10,\n firstDigit = number / 10;\n if (lastDigit === 0) {\n return eifelerRegelAppliesToNumber(firstDigit);\n }\n return eifelerRegelAppliesToNumber(lastDigit);\n } else if (number < 10000) {\n // 3 or 4 digits --> recursively check first digit\n while (number >= 10) {\n number = number / 10;\n }\n return eifelerRegelAppliesToNumber(number);\n } else {\n // Anything larger than 4 digits: recursively check first n-3 digits\n number = number / 1000;\n return eifelerRegelAppliesToNumber(number);\n }\n }\n\n var lb = moment.defineLocale('lb', {\n months: 'Januar_Februar_Mäerz_Abrëll_Mee_Juni_Juli_August_September_Oktober_November_Dezember'.split(\n '_'\n ),\n monthsShort: 'Jan._Febr._Mrz._Abr._Mee_Jun._Jul._Aug._Sept._Okt._Nov._Dez.'.split(\n '_'\n ),\n monthsParseExact: true,\n weekdays: 'Sonndeg_Méindeg_Dënschdeg_Mëttwoch_Donneschdeg_Freideg_Samschdeg'.split(\n '_'\n ),\n weekdaysShort: 'So._Mé._Dë._Më._Do._Fr._Sa.'.split('_'),\n weekdaysMin: 'So_Mé_Dë_Më_Do_Fr_Sa'.split('_'),\n weekdaysParseExact: true,\n longDateFormat: {\n LT: 'H:mm [Auer]',\n LTS: 'H:mm:ss [Auer]',\n L: 'DD.MM.YYYY',\n LL: 'D. MMMM YYYY',\n LLL: 'D. MMMM YYYY H:mm [Auer]',\n LLLL: 'dddd, D. MMMM YYYY H:mm [Auer]',\n },\n calendar: {\n sameDay: '[Haut um] LT',\n sameElse: 'L',\n nextDay: '[Muer um] LT',\n nextWeek: 'dddd [um] LT',\n lastDay: '[Gëschter um] LT',\n lastWeek: function () {\n // Different date string for 'Dënschdeg' (Tuesday) and 'Donneschdeg' (Thursday) due to phonological rule\n switch (this.day()) {\n case 2:\n case 4:\n return '[Leschten] dddd [um] LT';\n default:\n return '[Leschte] dddd [um] LT';\n }\n },\n },\n relativeTime: {\n future: processFutureTime,\n past: processPastTime,\n s: 'e puer Sekonnen',\n ss: '%d Sekonnen',\n m: processRelativeTime,\n mm: '%d Minutten',\n h: processRelativeTime,\n hh: '%d Stonnen',\n d: processRelativeTime,\n dd: '%d Deeg',\n M: processRelativeTime,\n MM: '%d Méint',\n y: processRelativeTime,\n yy: '%d Joer',\n },\n dayOfMonthOrdinalParse: /\\d{1,2}\\./,\n ordinal: '%d.',\n week: {\n dow: 1, // Monday is the first day of the week.\n doy: 4, // The week that contains Jan 4th is the first week of the year.\n },\n });\n\n return lb;\n\n})));\n\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./~/moment/locale/lb.js\n// module id = 379\n// module chunks = 0 1 2 3 5 6 160","//! moment.js locale configuration\n//! locale : Lao [lo]\n//! author : Ryan Hart : https://github.com/ryanhart2\n\n;(function (global, factory) {\n typeof exports === 'object' && typeof module !== 'undefined'\n && typeof require === 'function' ? factory(require('../moment')) :\n typeof define === 'function' && define.amd ? define(['../moment'], factory) :\n factory(global.moment)\n}(this, (function (moment) { 'use strict';\n\n //! moment.js locale configuration\n\n var lo = moment.defineLocale('lo', {\n months: 'ມັງກອນ_ກຸມພາ_ມີນາ_ເມສາ_ພຶດສະພາ_ມິຖຸນາ_ກໍລະກົດ_ສິງຫາ_ກັນຍາ_ຕຸລາ_ພະຈິກ_ທັນວາ'.split(\n '_'\n ),\n monthsShort: 'ມັງກອນ_ກຸມພາ_ມີນາ_ເມສາ_ພຶດສະພາ_ມິຖຸນາ_ກໍລະກົດ_ສິງຫາ_ກັນຍາ_ຕຸລາ_ພະຈິກ_ທັນວາ'.split(\n '_'\n ),\n weekdays: 'ອາທິດ_ຈັນ_ອັງຄານ_ພຸດ_ພະຫັດ_ສຸກ_ເສົາ'.split('_'),\n weekdaysShort: 'ທິດ_ຈັນ_ອັງຄານ_ພຸດ_ພະຫັດ_ສຸກ_ເສົາ'.split('_'),\n weekdaysMin: 'ທ_ຈ_ອຄ_ພ_ພຫ_ສກ_ສ'.split('_'),\n weekdaysParseExact: true,\n longDateFormat: {\n LT: 'HH:mm',\n LTS: 'HH:mm:ss',\n L: 'DD/MM/YYYY',\n LL: 'D MMMM YYYY',\n LLL: 'D MMMM YYYY HH:mm',\n LLLL: 'ວັນdddd D MMMM YYYY HH:mm',\n },\n meridiemParse: /ຕອນເຊົ້າ|ຕອນແລງ/,\n isPM: function (input) {\n return input === 'ຕອນແລງ';\n },\n meridiem: function (hour, minute, isLower) {\n if (hour < 12) {\n return 'ຕອນເຊົ້າ';\n } else {\n return 'ຕອນແລງ';\n }\n },\n calendar: {\n sameDay: '[ມື້ນີ້ເວລາ] LT',\n nextDay: '[ມື້ອື່ນເວລາ] LT',\n nextWeek: '[ວັນ]dddd[ໜ້າເວລາ] LT',\n lastDay: '[ມື້ວານນີ້ເວລາ] LT',\n lastWeek: '[ວັນ]dddd[ແລ້ວນີ້ເວລາ] LT',\n sameElse: 'L',\n },\n relativeTime: {\n future: 'ອີກ %s',\n past: '%sຜ່ານມາ',\n s: 'ບໍ່ເທົ່າໃດວິນາທີ',\n ss: '%d ວິນາທີ',\n m: '1 ນາທີ',\n mm: '%d ນາທີ',\n h: '1 ຊົ່ວໂມງ',\n hh: '%d ຊົ່ວໂມງ',\n d: '1 ມື້',\n dd: '%d ມື້',\n M: '1 ເດືອນ',\n MM: '%d ເດືອນ',\n y: '1 ປີ',\n yy: '%d ປີ',\n },\n dayOfMonthOrdinalParse: /(ທີ່)\\d{1,2}/,\n ordinal: function (number) {\n return 'ທີ່' + number;\n },\n });\n\n return lo;\n\n})));\n\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./~/moment/locale/lo.js\n// module id = 380\n// module chunks = 0 1 2 3 5 6 160","//! moment.js locale configuration\n//! locale : Lithuanian [lt]\n//! author : Mindaugas Mozūras : https://github.com/mmozuras\n\n;(function (global, factory) {\n typeof exports === 'object' && typeof module !== 'undefined'\n && typeof require === 'function' ? factory(require('../moment')) :\n typeof define === 'function' && define.amd ? define(['../moment'], factory) :\n factory(global.moment)\n}(this, (function (moment) { 'use strict';\n\n //! moment.js locale configuration\n\n var units = {\n ss: 'sekundė_sekundžių_sekundes',\n m: 'minutė_minutės_minutę',\n mm: 'minutės_minučių_minutes',\n h: 'valanda_valandos_valandą',\n hh: 'valandos_valandų_valandas',\n d: 'diena_dienos_dieną',\n dd: 'dienos_dienų_dienas',\n M: 'mėnuo_mėnesio_mėnesį',\n MM: 'mėnesiai_mėnesių_mėnesius',\n y: 'metai_metų_metus',\n yy: 'metai_metų_metus',\n };\n function translateSeconds(number, withoutSuffix, key, isFuture) {\n if (withoutSuffix) {\n return 'kelios sekundės';\n } else {\n return isFuture ? 'kelių sekundžių' : 'kelias sekundes';\n }\n }\n function translateSingular(number, withoutSuffix, key, isFuture) {\n return withoutSuffix\n ? forms(key)[0]\n : isFuture\n ? forms(key)[1]\n : forms(key)[2];\n }\n function special(number) {\n return number % 10 === 0 || (number > 10 && number < 20);\n }\n function forms(key) {\n return units[key].split('_');\n }\n function translate(number, withoutSuffix, key, isFuture) {\n var result = number + ' ';\n if (number === 1) {\n return (\n result + translateSingular(number, withoutSuffix, key[0], isFuture)\n );\n } else if (withoutSuffix) {\n return result + (special(number) ? forms(key)[1] : forms(key)[0]);\n } else {\n if (isFuture) {\n return result + forms(key)[1];\n } else {\n return result + (special(number) ? forms(key)[1] : forms(key)[2]);\n }\n }\n }\n var lt = moment.defineLocale('lt', {\n months: {\n format: 'sausio_vasario_kovo_balandžio_gegužės_birželio_liepos_rugpjūčio_rugsėjo_spalio_lapkričio_gruodžio'.split(\n '_'\n ),\n standalone: 'sausis_vasaris_kovas_balandis_gegužė_birželis_liepa_rugpjūtis_rugsėjis_spalis_lapkritis_gruodis'.split(\n '_'\n ),\n isFormat: /D[oD]?(\\[[^\\[\\]]*\\]|\\s)+MMMM?|MMMM?(\\[[^\\[\\]]*\\]|\\s)+D[oD]?/,\n },\n monthsShort: 'sau_vas_kov_bal_geg_bir_lie_rgp_rgs_spa_lap_grd'.split('_'),\n weekdays: {\n format: 'sekmadienį_pirmadienį_antradienį_trečiadienį_ketvirtadienį_penktadienį_šeštadienį'.split(\n '_'\n ),\n standalone: 'sekmadienis_pirmadienis_antradienis_trečiadienis_ketvirtadienis_penktadienis_šeštadienis'.split(\n '_'\n ),\n isFormat: /dddd HH:mm/,\n },\n weekdaysShort: 'Sek_Pir_Ant_Tre_Ket_Pen_Šeš'.split('_'),\n weekdaysMin: 'S_P_A_T_K_Pn_Š'.split('_'),\n weekdaysParseExact: true,\n longDateFormat: {\n LT: 'HH:mm',\n LTS: 'HH:mm:ss',\n L: 'YYYY-MM-DD',\n LL: 'YYYY [m.] MMMM D [d.]',\n LLL: 'YYYY [m.] MMMM D [d.], HH:mm [val.]',\n LLLL: 'YYYY [m.] MMMM D [d.], dddd, HH:mm [val.]',\n l: 'YYYY-MM-DD',\n ll: 'YYYY [m.] MMMM D [d.]',\n lll: 'YYYY [m.] MMMM D [d.], HH:mm [val.]',\n llll: 'YYYY [m.] MMMM D [d.], ddd, HH:mm [val.]',\n },\n calendar: {\n sameDay: '[Šiandien] LT',\n nextDay: '[Rytoj] LT',\n nextWeek: 'dddd LT',\n lastDay: '[Vakar] LT',\n lastWeek: '[Praėjusį] dddd LT',\n sameElse: 'L',\n },\n relativeTime: {\n future: 'po %s',\n past: 'prieš %s',\n s: translateSeconds,\n ss: translate,\n m: translateSingular,\n mm: translate,\n h: translateSingular,\n hh: translate,\n d: translateSingular,\n dd: translate,\n M: translateSingular,\n MM: translate,\n y: translateSingular,\n yy: translate,\n },\n dayOfMonthOrdinalParse: /\\d{1,2}-oji/,\n ordinal: function (number) {\n return number + '-oji';\n },\n week: {\n dow: 1, // Monday is the first day of the week.\n doy: 4, // The week that contains Jan 4th is the first week of the year.\n },\n });\n\n return lt;\n\n})));\n\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./~/moment/locale/lt.js\n// module id = 381\n// module chunks = 0 1 2 3 5 6 160","//! moment.js locale configuration\n//! locale : Latvian [lv]\n//! author : Kristaps Karlsons : https://github.com/skakri\n//! author : Jānis Elmeris : https://github.com/JanisE\n\n;(function (global, factory) {\n typeof exports === 'object' && typeof module !== 'undefined'\n && typeof require === 'function' ? factory(require('../moment')) :\n typeof define === 'function' && define.amd ? define(['../moment'], factory) :\n factory(global.moment)\n}(this, (function (moment) { 'use strict';\n\n //! moment.js locale configuration\n\n var units = {\n ss: 'sekundes_sekundēm_sekunde_sekundes'.split('_'),\n m: 'minūtes_minūtēm_minūte_minūtes'.split('_'),\n mm: 'minūtes_minūtēm_minūte_minūtes'.split('_'),\n h: 'stundas_stundām_stunda_stundas'.split('_'),\n hh: 'stundas_stundām_stunda_stundas'.split('_'),\n d: 'dienas_dienām_diena_dienas'.split('_'),\n dd: 'dienas_dienām_diena_dienas'.split('_'),\n M: 'mēneša_mēnešiem_mēnesis_mēneši'.split('_'),\n MM: 'mēneša_mēnešiem_mēnesis_mēneši'.split('_'),\n y: 'gada_gadiem_gads_gadi'.split('_'),\n yy: 'gada_gadiem_gads_gadi'.split('_'),\n };\n /**\n * @param withoutSuffix boolean true = a length of time; false = before/after a period of time.\n */\n function format(forms, number, withoutSuffix) {\n if (withoutSuffix) {\n // E.g. \"21 minūte\", \"3 minūtes\".\n return number % 10 === 1 && number % 100 !== 11 ? forms[2] : forms[3];\n } else {\n // E.g. \"21 minūtes\" as in \"pēc 21 minūtes\".\n // E.g. \"3 minūtēm\" as in \"pēc 3 minūtēm\".\n return number % 10 === 1 && number % 100 !== 11 ? forms[0] : forms[1];\n }\n }\n function relativeTimeWithPlural(number, withoutSuffix, key) {\n return number + ' ' + format(units[key], number, withoutSuffix);\n }\n function relativeTimeWithSingular(number, withoutSuffix, key) {\n return format(units[key], number, withoutSuffix);\n }\n function relativeSeconds(number, withoutSuffix) {\n return withoutSuffix ? 'dažas sekundes' : 'dažām sekundēm';\n }\n\n var lv = moment.defineLocale('lv', {\n months: 'janvāris_februāris_marts_aprīlis_maijs_jūnijs_jūlijs_augusts_septembris_oktobris_novembris_decembris'.split(\n '_'\n ),\n monthsShort: 'jan_feb_mar_apr_mai_jūn_jūl_aug_sep_okt_nov_dec'.split('_'),\n weekdays: 'svētdiena_pirmdiena_otrdiena_trešdiena_ceturtdiena_piektdiena_sestdiena'.split(\n '_'\n ),\n weekdaysShort: 'Sv_P_O_T_C_Pk_S'.split('_'),\n weekdaysMin: 'Sv_P_O_T_C_Pk_S'.split('_'),\n weekdaysParseExact: true,\n longDateFormat: {\n LT: 'HH:mm',\n LTS: 'HH:mm:ss',\n L: 'DD.MM.YYYY.',\n LL: 'YYYY. [gada] D. MMMM',\n LLL: 'YYYY. [gada] D. MMMM, HH:mm',\n LLLL: 'YYYY. [gada] D. MMMM, dddd, HH:mm',\n },\n calendar: {\n sameDay: '[Šodien pulksten] LT',\n nextDay: '[Rīt pulksten] LT',\n nextWeek: 'dddd [pulksten] LT',\n lastDay: '[Vakar pulksten] LT',\n lastWeek: '[Pagājušā] dddd [pulksten] LT',\n sameElse: 'L',\n },\n relativeTime: {\n future: 'pēc %s',\n past: 'pirms %s',\n s: relativeSeconds,\n ss: relativeTimeWithPlural,\n m: relativeTimeWithSingular,\n mm: relativeTimeWithPlural,\n h: relativeTimeWithSingular,\n hh: relativeTimeWithPlural,\n d: relativeTimeWithSingular,\n dd: relativeTimeWithPlural,\n M: relativeTimeWithSingular,\n MM: relativeTimeWithPlural,\n y: relativeTimeWithSingular,\n yy: relativeTimeWithPlural,\n },\n dayOfMonthOrdinalParse: /\\d{1,2}\\./,\n ordinal: '%d.',\n week: {\n dow: 1, // Monday is the first day of the week.\n doy: 4, // The week that contains Jan 4th is the first week of the year.\n },\n });\n\n return lv;\n\n})));\n\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./~/moment/locale/lv.js\n// module id = 382\n// module chunks = 0 1 2 3 5 6 160","//! moment.js locale configuration\n//! locale : Montenegrin [me]\n//! author : Miodrag Nikač : https://github.com/miodragnikac\n\n;(function (global, factory) {\n typeof exports === 'object' && typeof module !== 'undefined'\n && typeof require === 'function' ? factory(require('../moment')) :\n typeof define === 'function' && define.amd ? define(['../moment'], factory) :\n factory(global.moment)\n}(this, (function (moment) { 'use strict';\n\n //! moment.js locale configuration\n\n var translator = {\n words: {\n //Different grammatical cases\n ss: ['sekund', 'sekunda', 'sekundi'],\n m: ['jedan minut', 'jednog minuta'],\n mm: ['minut', 'minuta', 'minuta'],\n h: ['jedan sat', 'jednog sata'],\n hh: ['sat', 'sata', 'sati'],\n dd: ['dan', 'dana', 'dana'],\n MM: ['mjesec', 'mjeseca', 'mjeseci'],\n yy: ['godina', 'godine', 'godina'],\n },\n correctGrammaticalCase: function (number, wordKey) {\n return number === 1\n ? wordKey[0]\n : number >= 2 && number <= 4\n ? wordKey[1]\n : wordKey[2];\n },\n translate: function (number, withoutSuffix, key) {\n var wordKey = translator.words[key];\n if (key.length === 1) {\n return withoutSuffix ? wordKey[0] : wordKey[1];\n } else {\n return (\n number +\n ' ' +\n translator.correctGrammaticalCase(number, wordKey)\n );\n }\n },\n };\n\n var me = moment.defineLocale('me', {\n months: 'januar_februar_mart_april_maj_jun_jul_avgust_septembar_oktobar_novembar_decembar'.split(\n '_'\n ),\n monthsShort: 'jan._feb._mar._apr._maj_jun_jul_avg._sep._okt._nov._dec.'.split(\n '_'\n ),\n monthsParseExact: true,\n weekdays: 'nedjelja_ponedjeljak_utorak_srijeda_četvrtak_petak_subota'.split(\n '_'\n ),\n weekdaysShort: 'ned._pon._uto._sri._čet._pet._sub.'.split('_'),\n weekdaysMin: 'ne_po_ut_sr_če_pe_su'.split('_'),\n weekdaysParseExact: true,\n longDateFormat: {\n LT: 'H:mm',\n LTS: 'H:mm:ss',\n L: 'DD.MM.YYYY',\n LL: 'D. MMMM YYYY',\n LLL: 'D. MMMM YYYY H:mm',\n LLLL: 'dddd, D. MMMM YYYY H:mm',\n },\n calendar: {\n sameDay: '[danas u] LT',\n nextDay: '[sjutra u] LT',\n\n nextWeek: function () {\n switch (this.day()) {\n case 0:\n return '[u] [nedjelju] [u] LT';\n case 3:\n return '[u] [srijedu] [u] LT';\n case 6:\n return '[u] [subotu] [u] LT';\n case 1:\n case 2:\n case 4:\n case 5:\n return '[u] dddd [u] LT';\n }\n },\n lastDay: '[juče u] LT',\n lastWeek: function () {\n var lastWeekDays = [\n '[prošle] [nedjelje] [u] LT',\n '[prošlog] [ponedjeljka] [u] LT',\n '[prošlog] [utorka] [u] LT',\n '[prošle] [srijede] [u] LT',\n '[prošlog] [četvrtka] [u] LT',\n '[prošlog] [petka] [u] LT',\n '[prošle] [subote] [u] LT',\n ];\n return lastWeekDays[this.day()];\n },\n sameElse: 'L',\n },\n relativeTime: {\n future: 'za %s',\n past: 'prije %s',\n s: 'nekoliko sekundi',\n ss: translator.translate,\n m: translator.translate,\n mm: translator.translate,\n h: translator.translate,\n hh: translator.translate,\n d: 'dan',\n dd: translator.translate,\n M: 'mjesec',\n MM: translator.translate,\n y: 'godinu',\n yy: translator.translate,\n },\n dayOfMonthOrdinalParse: /\\d{1,2}\\./,\n ordinal: '%d.',\n week: {\n dow: 1, // Monday is the first day of the week.\n doy: 7, // The week that contains Jan 7th is the first week of the year.\n },\n });\n\n return me;\n\n})));\n\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./~/moment/locale/me.js\n// module id = 383\n// module chunks = 0 1 2 3 5 6 160","//! moment.js locale configuration\n//! locale : Maori [mi]\n//! author : John Corrigan : https://github.com/johnideal\n\n;(function (global, factory) {\n typeof exports === 'object' && typeof module !== 'undefined'\n && typeof require === 'function' ? factory(require('../moment')) :\n typeof define === 'function' && define.amd ? define(['../moment'], factory) :\n factory(global.moment)\n}(this, (function (moment) { 'use strict';\n\n //! moment.js locale configuration\n\n var mi = moment.defineLocale('mi', {\n months: 'Kohi-tāte_Hui-tanguru_Poutū-te-rangi_Paenga-whāwhā_Haratua_Pipiri_Hōngoingoi_Here-turi-kōkā_Mahuru_Whiringa-ā-nuku_Whiringa-ā-rangi_Hakihea'.split(\n '_'\n ),\n monthsShort: 'Kohi_Hui_Pou_Pae_Hara_Pipi_Hōngoi_Here_Mahu_Whi-nu_Whi-ra_Haki'.split(\n '_'\n ),\n monthsRegex: /(?:['a-z\\u0101\\u014D\\u016B]+\\-?){1,3}/i,\n monthsStrictRegex: /(?:['a-z\\u0101\\u014D\\u016B]+\\-?){1,3}/i,\n monthsShortRegex: /(?:['a-z\\u0101\\u014D\\u016B]+\\-?){1,3}/i,\n monthsShortStrictRegex: /(?:['a-z\\u0101\\u014D\\u016B]+\\-?){1,2}/i,\n weekdays: 'Rātapu_Mane_Tūrei_Wenerei_Tāite_Paraire_Hātarei'.split('_'),\n weekdaysShort: 'Ta_Ma_Tū_We_Tāi_Pa_Hā'.split('_'),\n weekdaysMin: 'Ta_Ma_Tū_We_Tāi_Pa_Hā'.split('_'),\n longDateFormat: {\n LT: 'HH:mm',\n LTS: 'HH:mm:ss',\n L: 'DD/MM/YYYY',\n LL: 'D MMMM YYYY',\n LLL: 'D MMMM YYYY [i] HH:mm',\n LLLL: 'dddd, D MMMM YYYY [i] HH:mm',\n },\n calendar: {\n sameDay: '[i teie mahana, i] LT',\n nextDay: '[apopo i] LT',\n nextWeek: 'dddd [i] LT',\n lastDay: '[inanahi i] LT',\n lastWeek: 'dddd [whakamutunga i] LT',\n sameElse: 'L',\n },\n relativeTime: {\n future: 'i roto i %s',\n past: '%s i mua',\n s: 'te hēkona ruarua',\n ss: '%d hēkona',\n m: 'he meneti',\n mm: '%d meneti',\n h: 'te haora',\n hh: '%d haora',\n d: 'he ra',\n dd: '%d ra',\n M: 'he marama',\n MM: '%d marama',\n y: 'he tau',\n yy: '%d tau',\n },\n dayOfMonthOrdinalParse: /\\d{1,2}º/,\n ordinal: '%dº',\n week: {\n dow: 1, // Monday is the first day of the week.\n doy: 4, // The week that contains Jan 4th is the first week of the year.\n },\n });\n\n return mi;\n\n})));\n\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./~/moment/locale/mi.js\n// module id = 384\n// module chunks = 0 1 2 3 5 6 160","//! moment.js locale configuration\n//! locale : Macedonian [mk]\n//! author : Borislav Mickov : https://github.com/B0k0\n//! author : Sashko Todorov : https://github.com/bkyceh\n\n;(function (global, factory) {\n typeof exports === 'object' && typeof module !== 'undefined'\n && typeof require === 'function' ? factory(require('../moment')) :\n typeof define === 'function' && define.amd ? define(['../moment'], factory) :\n factory(global.moment)\n}(this, (function (moment) { 'use strict';\n\n //! moment.js locale configuration\n\n var mk = moment.defineLocale('mk', {\n months: 'јануари_февруари_март_април_мај_јуни_јули_август_септември_октомври_ноември_декември'.split(\n '_'\n ),\n monthsShort: 'јан_фев_мар_апр_мај_јун_јул_авг_сеп_окт_ное_дек'.split('_'),\n weekdays: 'недела_понеделник_вторник_среда_четврток_петок_сабота'.split(\n '_'\n ),\n weekdaysShort: 'нед_пон_вто_сре_чет_пет_саб'.split('_'),\n weekdaysMin: 'нe_пo_вт_ср_че_пе_сa'.split('_'),\n longDateFormat: {\n LT: 'H:mm',\n LTS: 'H:mm:ss',\n L: 'D.MM.YYYY',\n LL: 'D MMMM YYYY',\n LLL: 'D MMMM YYYY H:mm',\n LLLL: 'dddd, D MMMM YYYY H:mm',\n },\n calendar: {\n sameDay: '[Денес во] LT',\n nextDay: '[Утре во] LT',\n nextWeek: '[Во] dddd [во] LT',\n lastDay: '[Вчера во] LT',\n lastWeek: function () {\n switch (this.day()) {\n case 0:\n case 3:\n case 6:\n return '[Изминатата] dddd [во] LT';\n case 1:\n case 2:\n case 4:\n case 5:\n return '[Изминатиот] dddd [во] LT';\n }\n },\n sameElse: 'L',\n },\n relativeTime: {\n future: 'за %s',\n past: 'пред %s',\n s: 'неколку секунди',\n ss: '%d секунди',\n m: 'една минута',\n mm: '%d минути',\n h: 'еден час',\n hh: '%d часа',\n d: 'еден ден',\n dd: '%d дена',\n M: 'еден месец',\n MM: '%d месеци',\n y: 'една година',\n yy: '%d години',\n },\n dayOfMonthOrdinalParse: /\\d{1,2}-(ев|ен|ти|ви|ри|ми)/,\n ordinal: function (number) {\n var lastDigit = number % 10,\n last2Digits = number % 100;\n if (number === 0) {\n return number + '-ев';\n } else if (last2Digits === 0) {\n return number + '-ен';\n } else if (last2Digits > 10 && last2Digits < 20) {\n return number + '-ти';\n } else if (lastDigit === 1) {\n return number + '-ви';\n } else if (lastDigit === 2) {\n return number + '-ри';\n } else if (lastDigit === 7 || lastDigit === 8) {\n return number + '-ми';\n } else {\n return number + '-ти';\n }\n },\n week: {\n dow: 1, // Monday is the first day of the week.\n doy: 7, // The week that contains Jan 7th is the first week of the year.\n },\n });\n\n return mk;\n\n})));\n\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./~/moment/locale/mk.js\n// module id = 385\n// module chunks = 0 1 2 3 5 6 160","//! moment.js locale configuration\n//! locale : Malayalam [ml]\n//! author : Floyd Pink : https://github.com/floydpink\n\n;(function (global, factory) {\n typeof exports === 'object' && typeof module !== 'undefined'\n && typeof require === 'function' ? factory(require('../moment')) :\n typeof define === 'function' && define.amd ? define(['../moment'], factory) :\n factory(global.moment)\n}(this, (function (moment) { 'use strict';\n\n //! moment.js locale configuration\n\n var ml = moment.defineLocale('ml', {\n months: 'ജനുവരി_ഫെബ്രുവരി_മാർച്ച്_ഏപ്രിൽ_മേയ്_ജൂൺ_ജൂലൈ_ഓഗസ്റ്റ്_സെപ്റ്റംബർ_ഒക്ടോബർ_നവംബർ_ഡിസംബർ'.split(\n '_'\n ),\n monthsShort: 'ജനു._ഫെബ്രു._മാർ._ഏപ്രി._മേയ്_ജൂൺ_ജൂലൈ._ഓഗ._സെപ്റ്റ._ഒക്ടോ._നവം._ഡിസം.'.split(\n '_'\n ),\n monthsParseExact: true,\n weekdays: 'ഞായറാഴ്ച_തിങ്കളാഴ്ച_ചൊവ്വാഴ്ച_ബുധനാഴ്ച_വ്യാഴാഴ്ച_വെള്ളിയാഴ്ച_ശനിയാഴ്ച'.split(\n '_'\n ),\n weekdaysShort: 'ഞായർ_തിങ്കൾ_ചൊവ്വ_ബുധൻ_വ്യാഴം_വെള്ളി_ശനി'.split('_'),\n weekdaysMin: 'ഞാ_തി_ചൊ_ബു_വ്യാ_വെ_ശ'.split('_'),\n longDateFormat: {\n LT: 'A h:mm -നു',\n LTS: 'A h:mm:ss -നു',\n L: 'DD/MM/YYYY',\n LL: 'D MMMM YYYY',\n LLL: 'D MMMM YYYY, A h:mm -നു',\n LLLL: 'dddd, D MMMM YYYY, A h:mm -നു',\n },\n calendar: {\n sameDay: '[ഇന്ന്] LT',\n nextDay: '[നാളെ] LT',\n nextWeek: 'dddd, LT',\n lastDay: '[ഇന്നലെ] LT',\n lastWeek: '[കഴിഞ്ഞ] dddd, LT',\n sameElse: 'L',\n },\n relativeTime: {\n future: '%s കഴിഞ്ഞ്',\n past: '%s മുൻപ്',\n s: 'അൽപ നിമിഷങ്ങൾ',\n ss: '%d സെക്കൻഡ്',\n m: 'ഒരു മിനിറ്റ്',\n mm: '%d മിനിറ്റ്',\n h: 'ഒരു മണിക്കൂർ',\n hh: '%d മണിക്കൂർ',\n d: 'ഒരു ദിവസം',\n dd: '%d ദിവസം',\n M: 'ഒരു മാസം',\n MM: '%d മാസം',\n y: 'ഒരു വർഷം',\n yy: '%d വർഷം',\n },\n meridiemParse: /രാത്രി|രാവിലെ|ഉച്ച കഴിഞ്ഞ്|വൈകുന്നേരം|രാത്രി/i,\n meridiemHour: function (hour, meridiem) {\n if (hour === 12) {\n hour = 0;\n }\n if (\n (meridiem === 'രാത്രി' && hour >= 4) ||\n meridiem === 'ഉച്ച കഴിഞ്ഞ്' ||\n meridiem === 'വൈകുന്നേരം'\n ) {\n return hour + 12;\n } else {\n return hour;\n }\n },\n meridiem: function (hour, minute, isLower) {\n if (hour < 4) {\n return 'രാത്രി';\n } else if (hour < 12) {\n return 'രാവിലെ';\n } else if (hour < 17) {\n return 'ഉച്ച കഴിഞ്ഞ്';\n } else if (hour < 20) {\n return 'വൈകുന്നേരം';\n } else {\n return 'രാത്രി';\n }\n },\n });\n\n return ml;\n\n})));\n\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./~/moment/locale/ml.js\n// module id = 386\n// module chunks = 0 1 2 3 5 6 160","//! moment.js locale configuration\n//! locale : Mongolian [mn]\n//! author : Javkhlantugs Nyamdorj : https://github.com/javkhaanj7\n\n;(function (global, factory) {\n typeof exports === 'object' && typeof module !== 'undefined'\n && typeof require === 'function' ? factory(require('../moment')) :\n typeof define === 'function' && define.amd ? define(['../moment'], factory) :\n factory(global.moment)\n}(this, (function (moment) { 'use strict';\n\n //! moment.js locale configuration\n\n function translate(number, withoutSuffix, key, isFuture) {\n switch (key) {\n case 's':\n return withoutSuffix ? 'хэдхэн секунд' : 'хэдхэн секундын';\n case 'ss':\n return number + (withoutSuffix ? ' секунд' : ' секундын');\n case 'm':\n case 'mm':\n return number + (withoutSuffix ? ' минут' : ' минутын');\n case 'h':\n case 'hh':\n return number + (withoutSuffix ? ' цаг' : ' цагийн');\n case 'd':\n case 'dd':\n return number + (withoutSuffix ? ' өдөр' : ' өдрийн');\n case 'M':\n case 'MM':\n return number + (withoutSuffix ? ' сар' : ' сарын');\n case 'y':\n case 'yy':\n return number + (withoutSuffix ? ' жил' : ' жилийн');\n default:\n return number;\n }\n }\n\n var mn = moment.defineLocale('mn', {\n months: 'Нэгдүгээр сар_Хоёрдугаар сар_Гуравдугаар сар_Дөрөвдүгээр сар_Тавдугаар сар_Зургадугаар сар_Долдугаар сар_Наймдугаар сар_Есдүгээр сар_Аравдугаар сар_Арван нэгдүгээр сар_Арван хоёрдугаар сар'.split(\n '_'\n ),\n monthsShort: '1 сар_2 сар_3 сар_4 сар_5 сар_6 сар_7 сар_8 сар_9 сар_10 сар_11 сар_12 сар'.split(\n '_'\n ),\n monthsParseExact: true,\n weekdays: 'Ням_Даваа_Мягмар_Лхагва_Пүрэв_Баасан_Бямба'.split('_'),\n weekdaysShort: 'Ням_Дав_Мяг_Лха_Пүр_Баа_Бям'.split('_'),\n weekdaysMin: 'Ня_Да_Мя_Лх_Пү_Ба_Бя'.split('_'),\n weekdaysParseExact: true,\n longDateFormat: {\n LT: 'HH:mm',\n LTS: 'HH:mm:ss',\n L: 'YYYY-MM-DD',\n LL: 'YYYY оны MMMMын D',\n LLL: 'YYYY оны MMMMын D HH:mm',\n LLLL: 'dddd, YYYY оны MMMMын D HH:mm',\n },\n meridiemParse: /ҮӨ|ҮХ/i,\n isPM: function (input) {\n return input === 'ҮХ';\n },\n meridiem: function (hour, minute, isLower) {\n if (hour < 12) {\n return 'ҮӨ';\n } else {\n return 'ҮХ';\n }\n },\n calendar: {\n sameDay: '[Өнөөдөр] LT',\n nextDay: '[Маргааш] LT',\n nextWeek: '[Ирэх] dddd LT',\n lastDay: '[Өчигдөр] LT',\n lastWeek: '[Өнгөрсөн] dddd LT',\n sameElse: 'L',\n },\n relativeTime: {\n future: '%s дараа',\n past: '%s өмнө',\n s: translate,\n ss: translate,\n m: translate,\n mm: translate,\n h: translate,\n hh: translate,\n d: translate,\n dd: translate,\n M: translate,\n MM: translate,\n y: translate,\n yy: translate,\n },\n dayOfMonthOrdinalParse: /\\d{1,2} өдөр/,\n ordinal: function (number, period) {\n switch (period) {\n case 'd':\n case 'D':\n case 'DDD':\n return number + ' өдөр';\n default:\n return number;\n }\n },\n });\n\n return mn;\n\n})));\n\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./~/moment/locale/mn.js\n// module id = 387\n// module chunks = 0 1 2 3 5 6 160","//! moment.js locale configuration\n//! locale : Marathi [mr]\n//! author : Harshad Kale : https://github.com/kalehv\n//! author : Vivek Athalye : https://github.com/vnathalye\n\n;(function (global, factory) {\n typeof exports === 'object' && typeof module !== 'undefined'\n && typeof require === 'function' ? factory(require('../moment')) :\n typeof define === 'function' && define.amd ? define(['../moment'], factory) :\n factory(global.moment)\n}(this, (function (moment) { 'use strict';\n\n //! moment.js locale configuration\n\n var symbolMap = {\n 1: '१',\n 2: '२',\n 3: '३',\n 4: '४',\n 5: '५',\n 6: '६',\n 7: '७',\n 8: '८',\n 9: '९',\n 0: '०',\n },\n numberMap = {\n '१': '1',\n '२': '2',\n '३': '3',\n '४': '4',\n '५': '5',\n '६': '6',\n '७': '7',\n '८': '8',\n '९': '9',\n '०': '0',\n };\n\n function relativeTimeMr(number, withoutSuffix, string, isFuture) {\n var output = '';\n if (withoutSuffix) {\n switch (string) {\n case 's':\n output = 'काही सेकंद';\n break;\n case 'ss':\n output = '%d सेकंद';\n break;\n case 'm':\n output = 'एक मिनिट';\n break;\n case 'mm':\n output = '%d मिनिटे';\n break;\n case 'h':\n output = 'एक तास';\n break;\n case 'hh':\n output = '%d तास';\n break;\n case 'd':\n output = 'एक दिवस';\n break;\n case 'dd':\n output = '%d दिवस';\n break;\n case 'M':\n output = 'एक महिना';\n break;\n case 'MM':\n output = '%d महिने';\n break;\n case 'y':\n output = 'एक वर्ष';\n break;\n case 'yy':\n output = '%d वर्षे';\n break;\n }\n } else {\n switch (string) {\n case 's':\n output = 'काही सेकंदां';\n break;\n case 'ss':\n output = '%d सेकंदां';\n break;\n case 'm':\n output = 'एका मिनिटा';\n break;\n case 'mm':\n output = '%d मिनिटां';\n break;\n case 'h':\n output = 'एका तासा';\n break;\n case 'hh':\n output = '%d तासां';\n break;\n case 'd':\n output = 'एका दिवसा';\n break;\n case 'dd':\n output = '%d दिवसां';\n break;\n case 'M':\n output = 'एका महिन्या';\n break;\n case 'MM':\n output = '%d महिन्यां';\n break;\n case 'y':\n output = 'एका वर्षा';\n break;\n case 'yy':\n output = '%d वर्षां';\n break;\n }\n }\n return output.replace(/%d/i, number);\n }\n\n var mr = moment.defineLocale('mr', {\n months: 'जानेवारी_फेब्रुवारी_मार्च_एप्रिल_मे_जून_जुलै_ऑगस्ट_सप्टेंबर_ऑक्टोबर_नोव्हेंबर_डिसेंबर'.split(\n '_'\n ),\n monthsShort: 'जाने._फेब्रु._मार्च._एप्रि._मे._जून._जुलै._ऑग._सप्टें._ऑक्टो._नोव्हें._डिसें.'.split(\n '_'\n ),\n monthsParseExact: true,\n weekdays: 'रविवार_सोमवार_मंगळवार_बुधवार_गुरूवार_शुक्रवार_शनिवार'.split('_'),\n weekdaysShort: 'रवि_सोम_मंगळ_बुध_गुरू_शुक्र_शनि'.split('_'),\n weekdaysMin: 'र_सो_मं_बु_गु_शु_श'.split('_'),\n longDateFormat: {\n LT: 'A h:mm वाजता',\n LTS: 'A h:mm:ss वाजता',\n L: 'DD/MM/YYYY',\n LL: 'D MMMM YYYY',\n LLL: 'D MMMM YYYY, A h:mm वाजता',\n LLLL: 'dddd, D MMMM YYYY, A h:mm वाजता',\n },\n calendar: {\n sameDay: '[आज] LT',\n nextDay: '[उद्या] LT',\n nextWeek: 'dddd, LT',\n lastDay: '[काल] LT',\n lastWeek: '[मागील] dddd, LT',\n sameElse: 'L',\n },\n relativeTime: {\n future: '%sमध्ये',\n past: '%sपूर्वी',\n s: relativeTimeMr,\n ss: relativeTimeMr,\n m: relativeTimeMr,\n mm: relativeTimeMr,\n h: relativeTimeMr,\n hh: relativeTimeMr,\n d: relativeTimeMr,\n dd: relativeTimeMr,\n M: relativeTimeMr,\n MM: relativeTimeMr,\n y: relativeTimeMr,\n yy: relativeTimeMr,\n },\n preparse: function (string) {\n return string.replace(/[१२३४५६७८९०]/g, function (match) {\n return numberMap[match];\n });\n },\n postformat: function (string) {\n return string.replace(/\\d/g, function (match) {\n return symbolMap[match];\n });\n },\n meridiemParse: /पहाटे|सकाळी|दुपारी|सायंकाळी|रात्री/,\n meridiemHour: function (hour, meridiem) {\n if (hour === 12) {\n hour = 0;\n }\n if (meridiem === 'पहाटे' || meridiem === 'सकाळी') {\n return hour;\n } else if (\n meridiem === 'दुपारी' ||\n meridiem === 'सायंकाळी' ||\n meridiem === 'रात्री'\n ) {\n return hour >= 12 ? hour : hour + 12;\n }\n },\n meridiem: function (hour, minute, isLower) {\n if (hour >= 0 && hour < 6) {\n return 'पहाटे';\n } else if (hour < 12) {\n return 'सकाळी';\n } else if (hour < 17) {\n return 'दुपारी';\n } else if (hour < 20) {\n return 'सायंकाळी';\n } else {\n return 'रात्री';\n }\n },\n week: {\n dow: 0, // Sunday is the first day of the week.\n doy: 6, // The week that contains Jan 6th is the first week of the year.\n },\n });\n\n return mr;\n\n})));\n\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./~/moment/locale/mr.js\n// module id = 388\n// module chunks = 0 1 2 3 5 6 160","//! moment.js locale configuration\n//! locale : Malay [ms-my]\n//! note : DEPRECATED, the correct one is [ms]\n//! author : Weldan Jamili : https://github.com/weldan\n\n;(function (global, factory) {\n typeof exports === 'object' && typeof module !== 'undefined'\n && typeof require === 'function' ? factory(require('../moment')) :\n typeof define === 'function' && define.amd ? define(['../moment'], factory) :\n factory(global.moment)\n}(this, (function (moment) { 'use strict';\n\n //! moment.js locale configuration\n\n var msMy = moment.defineLocale('ms-my', {\n months: 'Januari_Februari_Mac_April_Mei_Jun_Julai_Ogos_September_Oktober_November_Disember'.split(\n '_'\n ),\n monthsShort: 'Jan_Feb_Mac_Apr_Mei_Jun_Jul_Ogs_Sep_Okt_Nov_Dis'.split('_'),\n weekdays: 'Ahad_Isnin_Selasa_Rabu_Khamis_Jumaat_Sabtu'.split('_'),\n weekdaysShort: 'Ahd_Isn_Sel_Rab_Kha_Jum_Sab'.split('_'),\n weekdaysMin: 'Ah_Is_Sl_Rb_Km_Jm_Sb'.split('_'),\n longDateFormat: {\n LT: 'HH.mm',\n LTS: 'HH.mm.ss',\n L: 'DD/MM/YYYY',\n LL: 'D MMMM YYYY',\n LLL: 'D MMMM YYYY [pukul] HH.mm',\n LLLL: 'dddd, D MMMM YYYY [pukul] HH.mm',\n },\n meridiemParse: /pagi|tengahari|petang|malam/,\n meridiemHour: function (hour, meridiem) {\n if (hour === 12) {\n hour = 0;\n }\n if (meridiem === 'pagi') {\n return hour;\n } else if (meridiem === 'tengahari') {\n return hour >= 11 ? hour : hour + 12;\n } else if (meridiem === 'petang' || meridiem === 'malam') {\n return hour + 12;\n }\n },\n meridiem: function (hours, minutes, isLower) {\n if (hours < 11) {\n return 'pagi';\n } else if (hours < 15) {\n return 'tengahari';\n } else if (hours < 19) {\n return 'petang';\n } else {\n return 'malam';\n }\n },\n calendar: {\n sameDay: '[Hari ini pukul] LT',\n nextDay: '[Esok pukul] LT',\n nextWeek: 'dddd [pukul] LT',\n lastDay: '[Kelmarin pukul] LT',\n lastWeek: 'dddd [lepas pukul] LT',\n sameElse: 'L',\n },\n relativeTime: {\n future: 'dalam %s',\n past: '%s yang lepas',\n s: 'beberapa saat',\n ss: '%d saat',\n m: 'seminit',\n mm: '%d minit',\n h: 'sejam',\n hh: '%d jam',\n d: 'sehari',\n dd: '%d hari',\n M: 'sebulan',\n MM: '%d bulan',\n y: 'setahun',\n yy: '%d tahun',\n },\n week: {\n dow: 1, // Monday is the first day of the week.\n doy: 7, // The week that contains Jan 7th is the first week of the year.\n },\n });\n\n return msMy;\n\n})));\n\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./~/moment/locale/ms-my.js\n// module id = 389\n// module chunks = 0 1 2 3 5 6 160","//! moment.js locale configuration\n//! locale : Malay [ms]\n//! author : Weldan Jamili : https://github.com/weldan\n\n;(function (global, factory) {\n typeof exports === 'object' && typeof module !== 'undefined'\n && typeof require === 'function' ? factory(require('../moment')) :\n typeof define === 'function' && define.amd ? define(['../moment'], factory) :\n factory(global.moment)\n}(this, (function (moment) { 'use strict';\n\n //! moment.js locale configuration\n\n var ms = moment.defineLocale('ms', {\n months: 'Januari_Februari_Mac_April_Mei_Jun_Julai_Ogos_September_Oktober_November_Disember'.split(\n '_'\n ),\n monthsShort: 'Jan_Feb_Mac_Apr_Mei_Jun_Jul_Ogs_Sep_Okt_Nov_Dis'.split('_'),\n weekdays: 'Ahad_Isnin_Selasa_Rabu_Khamis_Jumaat_Sabtu'.split('_'),\n weekdaysShort: 'Ahd_Isn_Sel_Rab_Kha_Jum_Sab'.split('_'),\n weekdaysMin: 'Ah_Is_Sl_Rb_Km_Jm_Sb'.split('_'),\n longDateFormat: {\n LT: 'HH.mm',\n LTS: 'HH.mm.ss',\n L: 'DD/MM/YYYY',\n LL: 'D MMMM YYYY',\n LLL: 'D MMMM YYYY [pukul] HH.mm',\n LLLL: 'dddd, D MMMM YYYY [pukul] HH.mm',\n },\n meridiemParse: /pagi|tengahari|petang|malam/,\n meridiemHour: function (hour, meridiem) {\n if (hour === 12) {\n hour = 0;\n }\n if (meridiem === 'pagi') {\n return hour;\n } else if (meridiem === 'tengahari') {\n return hour >= 11 ? hour : hour + 12;\n } else if (meridiem === 'petang' || meridiem === 'malam') {\n return hour + 12;\n }\n },\n meridiem: function (hours, minutes, isLower) {\n if (hours < 11) {\n return 'pagi';\n } else if (hours < 15) {\n return 'tengahari';\n } else if (hours < 19) {\n return 'petang';\n } else {\n return 'malam';\n }\n },\n calendar: {\n sameDay: '[Hari ini pukul] LT',\n nextDay: '[Esok pukul] LT',\n nextWeek: 'dddd [pukul] LT',\n lastDay: '[Kelmarin pukul] LT',\n lastWeek: 'dddd [lepas pukul] LT',\n sameElse: 'L',\n },\n relativeTime: {\n future: 'dalam %s',\n past: '%s yang lepas',\n s: 'beberapa saat',\n ss: '%d saat',\n m: 'seminit',\n mm: '%d minit',\n h: 'sejam',\n hh: '%d jam',\n d: 'sehari',\n dd: '%d hari',\n M: 'sebulan',\n MM: '%d bulan',\n y: 'setahun',\n yy: '%d tahun',\n },\n week: {\n dow: 1, // Monday is the first day of the week.\n doy: 7, // The week that contains Jan 7th is the first week of the year.\n },\n });\n\n return ms;\n\n})));\n\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./~/moment/locale/ms.js\n// module id = 390\n// module chunks = 0 1 2 3 5 6 160","//! moment.js locale configuration\n//! locale : Maltese (Malta) [mt]\n//! author : Alessandro Maruccia : https://github.com/alesma\n\n;(function (global, factory) {\n typeof exports === 'object' && typeof module !== 'undefined'\n && typeof require === 'function' ? factory(require('../moment')) :\n typeof define === 'function' && define.amd ? define(['../moment'], factory) :\n factory(global.moment)\n}(this, (function (moment) { 'use strict';\n\n //! moment.js locale configuration\n\n var mt = moment.defineLocale('mt', {\n months: 'Jannar_Frar_Marzu_April_Mejju_Ġunju_Lulju_Awwissu_Settembru_Ottubru_Novembru_Diċembru'.split(\n '_'\n ),\n monthsShort: 'Jan_Fra_Mar_Apr_Mej_Ġun_Lul_Aww_Set_Ott_Nov_Diċ'.split('_'),\n weekdays: 'Il-Ħadd_It-Tnejn_It-Tlieta_L-Erbgħa_Il-Ħamis_Il-Ġimgħa_Is-Sibt'.split(\n '_'\n ),\n weekdaysShort: 'Ħad_Tne_Tli_Erb_Ħam_Ġim_Sib'.split('_'),\n weekdaysMin: 'Ħa_Tn_Tl_Er_Ħa_Ġi_Si'.split('_'),\n longDateFormat: {\n LT: 'HH:mm',\n LTS: 'HH:mm:ss',\n L: 'DD/MM/YYYY',\n LL: 'D MMMM YYYY',\n LLL: 'D MMMM YYYY HH:mm',\n LLLL: 'dddd, D MMMM YYYY HH:mm',\n },\n calendar: {\n sameDay: '[Illum fil-]LT',\n nextDay: '[Għada fil-]LT',\n nextWeek: 'dddd [fil-]LT',\n lastDay: '[Il-bieraħ fil-]LT',\n lastWeek: 'dddd [li għadda] [fil-]LT',\n sameElse: 'L',\n },\n relativeTime: {\n future: 'f’ %s',\n past: '%s ilu',\n s: 'ftit sekondi',\n ss: '%d sekondi',\n m: 'minuta',\n mm: '%d minuti',\n h: 'siegħa',\n hh: '%d siegħat',\n d: 'ġurnata',\n dd: '%d ġranet',\n M: 'xahar',\n MM: '%d xhur',\n y: 'sena',\n yy: '%d sni',\n },\n dayOfMonthOrdinalParse: /\\d{1,2}º/,\n ordinal: '%dº',\n week: {\n dow: 1, // Monday is the first day of the week.\n doy: 4, // The week that contains Jan 4th is the first week of the year.\n },\n });\n\n return mt;\n\n})));\n\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./~/moment/locale/mt.js\n// module id = 391\n// module chunks = 0 1 2 3 5 6 160","//! moment.js locale configuration\n//! locale : Burmese [my]\n//! author : Squar team, mysquar.com\n//! author : David Rossellat : https://github.com/gholadr\n//! author : Tin Aung Lin : https://github.com/thanyawzinmin\n\n;(function (global, factory) {\n typeof exports === 'object' && typeof module !== 'undefined'\n && typeof require === 'function' ? factory(require('../moment')) :\n typeof define === 'function' && define.amd ? define(['../moment'], factory) :\n factory(global.moment)\n}(this, (function (moment) { 'use strict';\n\n //! moment.js locale configuration\n\n var symbolMap = {\n 1: '၁',\n 2: '၂',\n 3: '၃',\n 4: '၄',\n 5: '၅',\n 6: '၆',\n 7: '၇',\n 8: '၈',\n 9: '၉',\n 0: '၀',\n },\n numberMap = {\n '၁': '1',\n '၂': '2',\n '၃': '3',\n '၄': '4',\n '၅': '5',\n '၆': '6',\n '၇': '7',\n '၈': '8',\n '၉': '9',\n '၀': '0',\n };\n\n var my = moment.defineLocale('my', {\n months: 'ဇန်နဝါရီ_ဖေဖော်ဝါရီ_မတ်_ဧပြီ_မေ_ဇွန်_ဇူလိုင်_သြဂုတ်_စက်တင်ဘာ_အောက်တိုဘာ_နိုဝင်ဘာ_ဒီဇင်ဘာ'.split(\n '_'\n ),\n monthsShort: 'ဇန်_ဖေ_မတ်_ပြီ_မေ_ဇွန်_လိုင်_သြ_စက်_အောက်_နို_ဒီ'.split('_'),\n weekdays: 'တနင်္ဂနွေ_တနင်္လာ_အင်္ဂါ_ဗုဒ္ဓဟူး_ကြာသပတေး_သောကြာ_စနေ'.split(\n '_'\n ),\n weekdaysShort: 'နွေ_လာ_ဂါ_ဟူး_ကြာ_သော_နေ'.split('_'),\n weekdaysMin: 'နွေ_လာ_ဂါ_ဟူး_ကြာ_သော_နေ'.split('_'),\n\n longDateFormat: {\n LT: 'HH:mm',\n LTS: 'HH:mm:ss',\n L: 'DD/MM/YYYY',\n LL: 'D MMMM YYYY',\n LLL: 'D MMMM YYYY HH:mm',\n LLLL: 'dddd D MMMM YYYY HH:mm',\n },\n calendar: {\n sameDay: '[ယနေ.] LT [မှာ]',\n nextDay: '[မနက်ဖြန်] LT [မှာ]',\n nextWeek: 'dddd LT [မှာ]',\n lastDay: '[မနေ.က] LT [မှာ]',\n lastWeek: '[ပြီးခဲ့သော] dddd LT [မှာ]',\n sameElse: 'L',\n },\n relativeTime: {\n future: 'လာမည့် %s မှာ',\n past: 'လွန်ခဲ့သော %s က',\n s: 'စက္ကန်.အနည်းငယ်',\n ss: '%d စက္ကန့်',\n m: 'တစ်မိနစ်',\n mm: '%d မိနစ်',\n h: 'တစ်နာရီ',\n hh: '%d နာရီ',\n d: 'တစ်ရက်',\n dd: '%d ရက်',\n M: 'တစ်လ',\n MM: '%d လ',\n y: 'တစ်နှစ်',\n yy: '%d နှစ်',\n },\n preparse: function (string) {\n return string.replace(/[၁၂၃၄၅၆၇၈၉၀]/g, function (match) {\n return numberMap[match];\n });\n },\n postformat: function (string) {\n return string.replace(/\\d/g, function (match) {\n return symbolMap[match];\n });\n },\n week: {\n dow: 1, // Monday is the first day of the week.\n doy: 4, // The week that contains Jan 4th is the first week of the year.\n },\n });\n\n return my;\n\n})));\n\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./~/moment/locale/my.js\n// module id = 392\n// module chunks = 0 1 2 3 5 6 160","//! moment.js locale configuration\n//! locale : Norwegian Bokmål [nb]\n//! authors : Espen Hovlandsdal : https://github.com/rexxars\n//! Sigurd Gartmann : https://github.com/sigurdga\n//! Stephen Ramthun : https://github.com/stephenramthun\n\n;(function (global, factory) {\n typeof exports === 'object' && typeof module !== 'undefined'\n && typeof require === 'function' ? factory(require('../moment')) :\n typeof define === 'function' && define.amd ? define(['../moment'], factory) :\n factory(global.moment)\n}(this, (function (moment) { 'use strict';\n\n //! moment.js locale configuration\n\n var nb = moment.defineLocale('nb', {\n months: 'januar_februar_mars_april_mai_juni_juli_august_september_oktober_november_desember'.split(\n '_'\n ),\n monthsShort: 'jan._feb._mars_apr._mai_juni_juli_aug._sep._okt._nov._des.'.split(\n '_'\n ),\n monthsParseExact: true,\n weekdays: 'søndag_mandag_tirsdag_onsdag_torsdag_fredag_lørdag'.split('_'),\n weekdaysShort: 'sø._ma._ti._on._to._fr._lø.'.split('_'),\n weekdaysMin: 'sø_ma_ti_on_to_fr_lø'.split('_'),\n weekdaysParseExact: true,\n longDateFormat: {\n LT: 'HH:mm',\n LTS: 'HH:mm:ss',\n L: 'DD.MM.YYYY',\n LL: 'D. MMMM YYYY',\n LLL: 'D. MMMM YYYY [kl.] HH:mm',\n LLLL: 'dddd D. MMMM YYYY [kl.] HH:mm',\n },\n calendar: {\n sameDay: '[i dag kl.] LT',\n nextDay: '[i morgen kl.] LT',\n nextWeek: 'dddd [kl.] LT',\n lastDay: '[i går kl.] LT',\n lastWeek: '[forrige] dddd [kl.] LT',\n sameElse: 'L',\n },\n relativeTime: {\n future: 'om %s',\n past: '%s siden',\n s: 'noen sekunder',\n ss: '%d sekunder',\n m: 'ett minutt',\n mm: '%d minutter',\n h: 'en time',\n hh: '%d timer',\n d: 'en dag',\n dd: '%d dager',\n w: 'en uke',\n ww: '%d uker',\n M: 'en måned',\n MM: '%d måneder',\n y: 'ett år',\n yy: '%d år',\n },\n dayOfMonthOrdinalParse: /\\d{1,2}\\./,\n ordinal: '%d.',\n week: {\n dow: 1, // Monday is the first day of the week.\n doy: 4, // The week that contains Jan 4th is the first week of the year.\n },\n });\n\n return nb;\n\n})));\n\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./~/moment/locale/nb.js\n// module id = 393\n// module chunks = 0 1 2 3 5 6 160","//! moment.js locale configuration\n//! locale : Nepalese [ne]\n//! author : suvash : https://github.com/suvash\n\n;(function (global, factory) {\n typeof exports === 'object' && typeof module !== 'undefined'\n && typeof require === 'function' ? factory(require('../moment')) :\n typeof define === 'function' && define.amd ? define(['../moment'], factory) :\n factory(global.moment)\n}(this, (function (moment) { 'use strict';\n\n //! moment.js locale configuration\n\n var symbolMap = {\n 1: '१',\n 2: '२',\n 3: '३',\n 4: '४',\n 5: '५',\n 6: '६',\n 7: '७',\n 8: '८',\n 9: '९',\n 0: '०',\n },\n numberMap = {\n '१': '1',\n '२': '2',\n '३': '3',\n '४': '4',\n '५': '5',\n '६': '6',\n '७': '7',\n '८': '8',\n '९': '9',\n '०': '0',\n };\n\n var ne = moment.defineLocale('ne', {\n months: 'जनवरी_फेब्रुवरी_मार्च_अप्रिल_मई_जुन_जुलाई_अगष्ट_सेप्टेम्बर_अक्टोबर_नोभेम्बर_डिसेम्बर'.split(\n '_'\n ),\n monthsShort: 'जन._फेब्रु._मार्च_अप्रि._मई_जुन_जुलाई._अग._सेप्ट._अक्टो._नोभे._डिसे.'.split(\n '_'\n ),\n monthsParseExact: true,\n weekdays: 'आइतबार_सोमबार_मङ्गलबार_बुधबार_बिहिबार_शुक्रबार_शनिबार'.split(\n '_'\n ),\n weekdaysShort: 'आइत._सोम._मङ्गल._बुध._बिहि._शुक्र._शनि.'.split('_'),\n weekdaysMin: 'आ._सो._मं._बु._बि._शु._श.'.split('_'),\n weekdaysParseExact: true,\n longDateFormat: {\n LT: 'Aको h:mm बजे',\n LTS: 'Aको h:mm:ss बजे',\n L: 'DD/MM/YYYY',\n LL: 'D MMMM YYYY',\n LLL: 'D MMMM YYYY, Aको h:mm बजे',\n LLLL: 'dddd, D MMMM YYYY, Aको h:mm बजे',\n },\n preparse: function (string) {\n return string.replace(/[१२३४५६७८९०]/g, function (match) {\n return numberMap[match];\n });\n },\n postformat: function (string) {\n return string.replace(/\\d/g, function (match) {\n return symbolMap[match];\n });\n },\n meridiemParse: /राति|बिहान|दिउँसो|साँझ/,\n meridiemHour: function (hour, meridiem) {\n if (hour === 12) {\n hour = 0;\n }\n if (meridiem === 'राति') {\n return hour < 4 ? hour : hour + 12;\n } else if (meridiem === 'बिहान') {\n return hour;\n } else if (meridiem === 'दिउँसो') {\n return hour >= 10 ? hour : hour + 12;\n } else if (meridiem === 'साँझ') {\n return hour + 12;\n }\n },\n meridiem: function (hour, minute, isLower) {\n if (hour < 3) {\n return 'राति';\n } else if (hour < 12) {\n return 'बिहान';\n } else if (hour < 16) {\n return 'दिउँसो';\n } else if (hour < 20) {\n return 'साँझ';\n } else {\n return 'राति';\n }\n },\n calendar: {\n sameDay: '[आज] LT',\n nextDay: '[भोलि] LT',\n nextWeek: '[आउँदो] dddd[,] LT',\n lastDay: '[हिजो] LT',\n lastWeek: '[गएको] dddd[,] LT',\n sameElse: 'L',\n },\n relativeTime: {\n future: '%sमा',\n past: '%s अगाडि',\n s: 'केही क्षण',\n ss: '%d सेकेण्ड',\n m: 'एक मिनेट',\n mm: '%d मिनेट',\n h: 'एक घण्टा',\n hh: '%d घण्टा',\n d: 'एक दिन',\n dd: '%d दिन',\n M: 'एक महिना',\n MM: '%d महिना',\n y: 'एक बर्ष',\n yy: '%d बर्ष',\n },\n week: {\n dow: 0, // Sunday is the first day of the week.\n doy: 6, // The week that contains Jan 6th is the first week of the year.\n },\n });\n\n return ne;\n\n})));\n\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./~/moment/locale/ne.js\n// module id = 394\n// module chunks = 0 1 2 3 5 6 160","//! moment.js locale configuration\n//! locale : Dutch (Belgium) [nl-be]\n//! author : Joris Röling : https://github.com/jorisroling\n//! author : Jacob Middag : https://github.com/middagj\n\n;(function (global, factory) {\n typeof exports === 'object' && typeof module !== 'undefined'\n && typeof require === 'function' ? factory(require('../moment')) :\n typeof define === 'function' && define.amd ? define(['../moment'], factory) :\n factory(global.moment)\n}(this, (function (moment) { 'use strict';\n\n //! moment.js locale configuration\n\n var monthsShortWithDots = 'jan._feb._mrt._apr._mei_jun._jul._aug._sep._okt._nov._dec.'.split(\n '_'\n ),\n monthsShortWithoutDots = 'jan_feb_mrt_apr_mei_jun_jul_aug_sep_okt_nov_dec'.split(\n '_'\n ),\n monthsParse = [\n /^jan/i,\n /^feb/i,\n /^maart|mrt.?$/i,\n /^apr/i,\n /^mei$/i,\n /^jun[i.]?$/i,\n /^jul[i.]?$/i,\n /^aug/i,\n /^sep/i,\n /^okt/i,\n /^nov/i,\n /^dec/i,\n ],\n monthsRegex = /^(januari|februari|maart|april|mei|ju[nl]i|augustus|september|oktober|november|december|jan\\.?|feb\\.?|mrt\\.?|apr\\.?|ju[nl]\\.?|aug\\.?|sep\\.?|okt\\.?|nov\\.?|dec\\.?)/i;\n\n var nlBe = moment.defineLocale('nl-be', {\n months: 'januari_februari_maart_april_mei_juni_juli_augustus_september_oktober_november_december'.split(\n '_'\n ),\n monthsShort: function (m, format) {\n if (!m) {\n return monthsShortWithDots;\n } else if (/-MMM-/.test(format)) {\n return monthsShortWithoutDots[m.month()];\n } else {\n return monthsShortWithDots[m.month()];\n }\n },\n\n monthsRegex: monthsRegex,\n monthsShortRegex: monthsRegex,\n monthsStrictRegex: /^(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\n monthsParse: monthsParse,\n longMonthsParse: monthsParse,\n shortMonthsParse: monthsParse,\n\n weekdays: 'zondag_maandag_dinsdag_woensdag_donderdag_vrijdag_zaterdag'.split(\n '_'\n ),\n weekdaysShort: 'zo._ma._di._wo._do._vr._za.'.split('_'),\n weekdaysMin: 'zo_ma_di_wo_do_vr_za'.split('_'),\n weekdaysParseExact: true,\n longDateFormat: {\n LT: 'HH:mm',\n LTS: 'HH:mm:ss',\n L: 'DD/MM/YYYY',\n LL: 'D MMMM YYYY',\n LLL: 'D MMMM YYYY HH:mm',\n LLLL: 'dddd D MMMM YYYY HH:mm',\n },\n calendar: {\n sameDay: '[vandaag om] LT',\n nextDay: '[morgen om] LT',\n nextWeek: 'dddd [om] LT',\n lastDay: '[gisteren om] LT',\n lastWeek: '[afgelopen] dddd [om] LT',\n sameElse: 'L',\n },\n relativeTime: {\n future: 'over %s',\n past: '%s geleden',\n s: 'een paar seconden',\n ss: '%d seconden',\n m: 'één minuut',\n mm: '%d minuten',\n h: 'één uur',\n hh: '%d uur',\n d: 'één dag',\n dd: '%d dagen',\n M: 'één maand',\n MM: '%d maanden',\n y: 'één jaar',\n yy: '%d jaar',\n },\n dayOfMonthOrdinalParse: /\\d{1,2}(ste|de)/,\n ordinal: function (number) {\n return (\n number +\n (number === 1 || number === 8 || number >= 20 ? 'ste' : 'de')\n );\n },\n week: {\n dow: 1, // Monday is the first day of the week.\n doy: 4, // The week that contains Jan 4th is the first week of the year.\n },\n });\n\n return nlBe;\n\n})));\n\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./~/moment/locale/nl-be.js\n// module id = 395\n// module chunks = 0 1 2 3 5 6 160","//! moment.js locale configuration\n//! locale : Dutch [nl]\n//! author : Joris Röling : https://github.com/jorisroling\n//! author : Jacob Middag : https://github.com/middagj\n\n;(function (global, factory) {\n typeof exports === 'object' && typeof module !== 'undefined'\n && typeof require === 'function' ? factory(require('../moment')) :\n typeof define === 'function' && define.amd ? define(['../moment'], factory) :\n factory(global.moment)\n}(this, (function (moment) { 'use strict';\n\n //! moment.js locale configuration\n\n var monthsShortWithDots = 'jan._feb._mrt._apr._mei_jun._jul._aug._sep._okt._nov._dec.'.split(\n '_'\n ),\n monthsShortWithoutDots = 'jan_feb_mrt_apr_mei_jun_jul_aug_sep_okt_nov_dec'.split(\n '_'\n ),\n monthsParse = [\n /^jan/i,\n /^feb/i,\n /^maart|mrt.?$/i,\n /^apr/i,\n /^mei$/i,\n /^jun[i.]?$/i,\n /^jul[i.]?$/i,\n /^aug/i,\n /^sep/i,\n /^okt/i,\n /^nov/i,\n /^dec/i,\n ],\n monthsRegex = /^(januari|februari|maart|april|mei|ju[nl]i|augustus|september|oktober|november|december|jan\\.?|feb\\.?|mrt\\.?|apr\\.?|ju[nl]\\.?|aug\\.?|sep\\.?|okt\\.?|nov\\.?|dec\\.?)/i;\n\n var nl = moment.defineLocale('nl', {\n months: 'januari_februari_maart_april_mei_juni_juli_augustus_september_oktober_november_december'.split(\n '_'\n ),\n monthsShort: function (m, format) {\n if (!m) {\n return monthsShortWithDots;\n } else if (/-MMM-/.test(format)) {\n return monthsShortWithoutDots[m.month()];\n } else {\n return monthsShortWithDots[m.month()];\n }\n },\n\n monthsRegex: monthsRegex,\n monthsShortRegex: monthsRegex,\n monthsStrictRegex: /^(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\n monthsParse: monthsParse,\n longMonthsParse: monthsParse,\n shortMonthsParse: monthsParse,\n\n weekdays: 'zondag_maandag_dinsdag_woensdag_donderdag_vrijdag_zaterdag'.split(\n '_'\n ),\n weekdaysShort: 'zo._ma._di._wo._do._vr._za.'.split('_'),\n weekdaysMin: 'zo_ma_di_wo_do_vr_za'.split('_'),\n weekdaysParseExact: true,\n longDateFormat: {\n LT: 'HH:mm',\n LTS: 'HH:mm:ss',\n L: 'DD-MM-YYYY',\n LL: 'D MMMM YYYY',\n LLL: 'D MMMM YYYY HH:mm',\n LLLL: 'dddd D MMMM YYYY HH:mm',\n },\n calendar: {\n sameDay: '[vandaag om] LT',\n nextDay: '[morgen om] LT',\n nextWeek: 'dddd [om] LT',\n lastDay: '[gisteren om] LT',\n lastWeek: '[afgelopen] dddd [om] LT',\n sameElse: 'L',\n },\n relativeTime: {\n future: 'over %s',\n past: '%s geleden',\n s: 'een paar seconden',\n ss: '%d seconden',\n m: 'één minuut',\n mm: '%d minuten',\n h: 'één uur',\n hh: '%d uur',\n d: 'één dag',\n dd: '%d dagen',\n w: 'één week',\n ww: '%d weken',\n M: 'één maand',\n MM: '%d maanden',\n y: 'één jaar',\n yy: '%d jaar',\n },\n dayOfMonthOrdinalParse: /\\d{1,2}(ste|de)/,\n ordinal: function (number) {\n return (\n number +\n (number === 1 || number === 8 || number >= 20 ? 'ste' : 'de')\n );\n },\n week: {\n dow: 1, // Monday is the first day of the week.\n doy: 4, // The week that contains Jan 4th is the first week of the year.\n },\n });\n\n return nl;\n\n})));\n\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./~/moment/locale/nl.js\n// module id = 396\n// module chunks = 0 1 2 3 5 6 160","//! moment.js locale configuration\n//! locale : Nynorsk [nn]\n//! authors : https://github.com/mechuwind\n//! Stephen Ramthun : https://github.com/stephenramthun\n\n;(function (global, factory) {\n typeof exports === 'object' && typeof module !== 'undefined'\n && typeof require === 'function' ? factory(require('../moment')) :\n typeof define === 'function' && define.amd ? define(['../moment'], factory) :\n factory(global.moment)\n}(this, (function (moment) { 'use strict';\n\n //! moment.js locale configuration\n\n var nn = moment.defineLocale('nn', {\n months: 'januar_februar_mars_april_mai_juni_juli_august_september_oktober_november_desember'.split(\n '_'\n ),\n monthsShort: 'jan._feb._mars_apr._mai_juni_juli_aug._sep._okt._nov._des.'.split(\n '_'\n ),\n monthsParseExact: true,\n weekdays: 'sundag_måndag_tysdag_onsdag_torsdag_fredag_laurdag'.split('_'),\n weekdaysShort: 'su._må._ty._on._to._fr._lau.'.split('_'),\n weekdaysMin: 'su_må_ty_on_to_fr_la'.split('_'),\n weekdaysParseExact: true,\n longDateFormat: {\n LT: 'HH:mm',\n LTS: 'HH:mm:ss',\n L: 'DD.MM.YYYY',\n LL: 'D. MMMM YYYY',\n LLL: 'D. MMMM YYYY [kl.] H:mm',\n LLLL: 'dddd D. MMMM YYYY [kl.] HH:mm',\n },\n calendar: {\n sameDay: '[I dag klokka] LT',\n nextDay: '[I morgon klokka] LT',\n nextWeek: 'dddd [klokka] LT',\n lastDay: '[I går klokka] LT',\n lastWeek: '[Føregåande] dddd [klokka] LT',\n sameElse: 'L',\n },\n relativeTime: {\n future: 'om %s',\n past: '%s sidan',\n s: 'nokre sekund',\n ss: '%d sekund',\n m: 'eit minutt',\n mm: '%d minutt',\n h: 'ein time',\n hh: '%d timar',\n d: 'ein dag',\n dd: '%d dagar',\n w: 'ei veke',\n ww: '%d veker',\n M: 'ein månad',\n MM: '%d månader',\n y: 'eit år',\n yy: '%d år',\n },\n dayOfMonthOrdinalParse: /\\d{1,2}\\./,\n ordinal: '%d.',\n week: {\n dow: 1, // Monday is the first day of the week.\n doy: 4, // The week that contains Jan 4th is the first week of the year.\n },\n });\n\n return nn;\n\n})));\n\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./~/moment/locale/nn.js\n// module id = 397\n// module chunks = 0 1 2 3 5 6 160","//! moment.js locale configuration\n//! locale : Occitan, lengadocian dialecte [oc-lnc]\n//! author : Quentin PAGÈS : https://github.com/Quenty31\n\n;(function (global, factory) {\n typeof exports === 'object' && typeof module !== 'undefined'\n && typeof require === 'function' ? factory(require('../moment')) :\n typeof define === 'function' && define.amd ? define(['../moment'], factory) :\n factory(global.moment)\n}(this, (function (moment) { 'use strict';\n\n //! moment.js locale configuration\n\n var ocLnc = moment.defineLocale('oc-lnc', {\n months: {\n standalone: 'genièr_febrièr_març_abril_mai_junh_julhet_agost_setembre_octòbre_novembre_decembre'.split(\n '_'\n ),\n format: \"de genièr_de febrièr_de març_d'abril_de mai_de junh_de julhet_d'agost_de setembre_d'octòbre_de novembre_de decembre\".split(\n '_'\n ),\n isFormat: /D[oD]?(\\s)+MMMM/,\n },\n monthsShort: 'gen._febr._març_abr._mai_junh_julh._ago._set._oct._nov._dec.'.split(\n '_'\n ),\n monthsParseExact: true,\n weekdays: 'dimenge_diluns_dimars_dimècres_dijòus_divendres_dissabte'.split(\n '_'\n ),\n weekdaysShort: 'dg._dl._dm._dc._dj._dv._ds.'.split('_'),\n weekdaysMin: 'dg_dl_dm_dc_dj_dv_ds'.split('_'),\n weekdaysParseExact: true,\n longDateFormat: {\n LT: 'H:mm',\n LTS: 'H:mm:ss',\n L: 'DD/MM/YYYY',\n LL: 'D MMMM [de] YYYY',\n ll: 'D MMM YYYY',\n LLL: 'D MMMM [de] YYYY [a] H:mm',\n lll: 'D MMM YYYY, H:mm',\n LLLL: 'dddd D MMMM [de] YYYY [a] H:mm',\n llll: 'ddd D MMM YYYY, H:mm',\n },\n calendar: {\n sameDay: '[uèi a] LT',\n nextDay: '[deman a] LT',\n nextWeek: 'dddd [a] LT',\n lastDay: '[ièr a] LT',\n lastWeek: 'dddd [passat a] LT',\n sameElse: 'L',\n },\n relativeTime: {\n future: \"d'aquí %s\",\n past: 'fa %s',\n s: 'unas segondas',\n ss: '%d segondas',\n m: 'una minuta',\n mm: '%d minutas',\n h: 'una ora',\n hh: '%d oras',\n d: 'un jorn',\n dd: '%d jorns',\n M: 'un mes',\n MM: '%d meses',\n y: 'un an',\n yy: '%d ans',\n },\n dayOfMonthOrdinalParse: /\\d{1,2}(r|n|t|è|a)/,\n ordinal: function (number, period) {\n var output =\n number === 1\n ? 'r'\n : number === 2\n ? 'n'\n : number === 3\n ? 'r'\n : number === 4\n ? 't'\n : 'è';\n if (period === 'w' || period === 'W') {\n output = 'a';\n }\n return number + output;\n },\n week: {\n dow: 1, // Monday is the first day of the week.\n doy: 4,\n },\n });\n\n return ocLnc;\n\n})));\n\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./~/moment/locale/oc-lnc.js\n// module id = 398\n// module chunks = 0 1 2 3 5 6 160","//! moment.js locale configuration\n//! locale : Punjabi (India) [pa-in]\n//! author : Harpreet Singh : https://github.com/harpreetkhalsagtbit\n\n;(function (global, factory) {\n typeof exports === 'object' && typeof module !== 'undefined'\n && typeof require === 'function' ? factory(require('../moment')) :\n typeof define === 'function' && define.amd ? define(['../moment'], factory) :\n factory(global.moment)\n}(this, (function (moment) { 'use strict';\n\n //! moment.js locale configuration\n\n var symbolMap = {\n 1: '੧',\n 2: '੨',\n 3: '੩',\n 4: '੪',\n 5: '੫',\n 6: '੬',\n 7: '੭',\n 8: '੮',\n 9: '੯',\n 0: '੦',\n },\n numberMap = {\n '੧': '1',\n '੨': '2',\n '੩': '3',\n '੪': '4',\n '੫': '5',\n '੬': '6',\n '੭': '7',\n '੮': '8',\n '੯': '9',\n '੦': '0',\n };\n\n var paIn = moment.defineLocale('pa-in', {\n // There are months name as per Nanakshahi Calendar but they are not used as rigidly in modern Punjabi.\n months: 'ਜਨਵਰੀ_ਫ਼ਰਵਰੀ_ਮਾਰਚ_ਅਪ੍ਰੈਲ_ਮਈ_ਜੂਨ_ਜੁਲਾਈ_ਅਗਸਤ_ਸਤੰਬਰ_ਅਕਤੂਬਰ_ਨਵੰਬਰ_ਦਸੰਬਰ'.split(\n '_'\n ),\n monthsShort: 'ਜਨਵਰੀ_ਫ਼ਰਵਰੀ_ਮਾਰਚ_ਅਪ੍ਰੈਲ_ਮਈ_ਜੂਨ_ਜੁਲਾਈ_ਅਗਸਤ_ਸਤੰਬਰ_ਅਕਤੂਬਰ_ਨਵੰਬਰ_ਦਸੰਬਰ'.split(\n '_'\n ),\n weekdays: 'ਐਤਵਾਰ_ਸੋਮਵਾਰ_ਮੰਗਲਵਾਰ_ਬੁਧਵਾਰ_ਵੀਰਵਾਰ_ਸ਼ੁੱਕਰਵਾਰ_ਸ਼ਨੀਚਰਵਾਰ'.split(\n '_'\n ),\n weekdaysShort: 'ਐਤ_ਸੋਮ_ਮੰਗਲ_ਬੁਧ_ਵੀਰ_ਸ਼ੁਕਰ_ਸ਼ਨੀ'.split('_'),\n weekdaysMin: 'ਐਤ_ਸੋਮ_ਮੰਗਲ_ਬੁਧ_ਵੀਰ_ਸ਼ੁਕਰ_ਸ਼ਨੀ'.split('_'),\n longDateFormat: {\n LT: 'A h:mm ਵਜੇ',\n LTS: 'A h:mm:ss ਵਜੇ',\n L: 'DD/MM/YYYY',\n LL: 'D MMMM YYYY',\n LLL: 'D MMMM YYYY, A h:mm ਵਜੇ',\n LLLL: 'dddd, D MMMM YYYY, A h:mm ਵਜੇ',\n },\n calendar: {\n sameDay: '[ਅਜ] LT',\n nextDay: '[ਕਲ] LT',\n nextWeek: '[ਅਗਲਾ] dddd, LT',\n lastDay: '[ਕਲ] LT',\n lastWeek: '[ਪਿਛਲੇ] dddd, LT',\n sameElse: 'L',\n },\n relativeTime: {\n future: '%s ਵਿੱਚ',\n past: '%s ਪਿਛਲੇ',\n s: 'ਕੁਝ ਸਕਿੰਟ',\n ss: '%d ਸਕਿੰਟ',\n m: 'ਇਕ ਮਿੰਟ',\n mm: '%d ਮਿੰਟ',\n h: 'ਇੱਕ ਘੰਟਾ',\n hh: '%d ਘੰਟੇ',\n d: 'ਇੱਕ ਦਿਨ',\n dd: '%d ਦਿਨ',\n M: 'ਇੱਕ ਮਹੀਨਾ',\n MM: '%d ਮਹੀਨੇ',\n y: 'ਇੱਕ ਸਾਲ',\n yy: '%d ਸਾਲ',\n },\n preparse: function (string) {\n return string.replace(/[੧੨੩੪੫੬੭੮੯੦]/g, function (match) {\n return numberMap[match];\n });\n },\n postformat: function (string) {\n return string.replace(/\\d/g, function (match) {\n return symbolMap[match];\n });\n },\n // Punjabi notation for meridiems are quite fuzzy in practice. While there exists\n // a rigid notion of a 'Pahar' it is not used as rigidly in modern Punjabi.\n meridiemParse: /ਰਾਤ|ਸਵੇਰ|ਦੁਪਹਿਰ|ਸ਼ਾਮ/,\n meridiemHour: function (hour, meridiem) {\n if (hour === 12) {\n hour = 0;\n }\n if (meridiem === 'ਰਾਤ') {\n return hour < 4 ? hour : hour + 12;\n } else if (meridiem === 'ਸਵੇਰ') {\n return hour;\n } else if (meridiem === 'ਦੁਪਹਿਰ') {\n return hour >= 10 ? hour : hour + 12;\n } else if (meridiem === 'ਸ਼ਾਮ') {\n return hour + 12;\n }\n },\n meridiem: function (hour, minute, isLower) {\n if (hour < 4) {\n return 'ਰਾਤ';\n } else if (hour < 10) {\n return 'ਸਵੇਰ';\n } else if (hour < 17) {\n return 'ਦੁਪਹਿਰ';\n } else if (hour < 20) {\n return 'ਸ਼ਾਮ';\n } else {\n return 'ਰਾਤ';\n }\n },\n week: {\n dow: 0, // Sunday is the first day of the week.\n doy: 6, // The week that contains Jan 6th is the first week of the year.\n },\n });\n\n return paIn;\n\n})));\n\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./~/moment/locale/pa-in.js\n// module id = 399\n// module chunks = 0 1 2 3 5 6 160","//! moment.js locale configuration\n//! locale : Polish [pl]\n//! author : Rafal Hirsz : https://github.com/evoL\n\n;(function (global, factory) {\n typeof exports === 'object' && typeof module !== 'undefined'\n && typeof require === 'function' ? factory(require('../moment')) :\n typeof define === 'function' && define.amd ? define(['../moment'], factory) :\n factory(global.moment)\n}(this, (function (moment) { 'use strict';\n\n //! moment.js locale configuration\n\n var monthsNominative = 'styczeń_luty_marzec_kwiecień_maj_czerwiec_lipiec_sierpień_wrzesień_październik_listopad_grudzień'.split(\n '_'\n ),\n monthsSubjective = 'stycznia_lutego_marca_kwietnia_maja_czerwca_lipca_sierpnia_września_października_listopada_grudnia'.split(\n '_'\n ),\n monthsParse = [\n /^sty/i,\n /^lut/i,\n /^mar/i,\n /^kwi/i,\n /^maj/i,\n /^cze/i,\n /^lip/i,\n /^sie/i,\n /^wrz/i,\n /^paź/i,\n /^lis/i,\n /^gru/i,\n ];\n function plural(n) {\n return n % 10 < 5 && n % 10 > 1 && ~~(n / 10) % 10 !== 1;\n }\n function translate(number, withoutSuffix, key) {\n var result = number + ' ';\n switch (key) {\n case 'ss':\n return result + (plural(number) ? 'sekundy' : 'sekund');\n case 'm':\n return withoutSuffix ? 'minuta' : 'minutę';\n case 'mm':\n return result + (plural(number) ? 'minuty' : 'minut');\n case 'h':\n return withoutSuffix ? 'godzina' : 'godzinę';\n case 'hh':\n return result + (plural(number) ? 'godziny' : 'godzin');\n case 'ww':\n return result + (plural(number) ? 'tygodnie' : 'tygodni');\n case 'MM':\n return result + (plural(number) ? 'miesiące' : 'miesięcy');\n case 'yy':\n return result + (plural(number) ? 'lata' : 'lat');\n }\n }\n\n var pl = moment.defineLocale('pl', {\n months: function (momentToFormat, format) {\n if (!momentToFormat) {\n return monthsNominative;\n } else if (/D MMMM/.test(format)) {\n return monthsSubjective[momentToFormat.month()];\n } else {\n return monthsNominative[momentToFormat.month()];\n }\n },\n monthsShort: 'sty_lut_mar_kwi_maj_cze_lip_sie_wrz_paź_lis_gru'.split('_'),\n monthsParse: monthsParse,\n longMonthsParse: monthsParse,\n shortMonthsParse: monthsParse,\n weekdays: 'niedziela_poniedziałek_wtorek_środa_czwartek_piątek_sobota'.split(\n '_'\n ),\n weekdaysShort: 'ndz_pon_wt_śr_czw_pt_sob'.split('_'),\n weekdaysMin: 'Nd_Pn_Wt_Śr_Cz_Pt_So'.split('_'),\n longDateFormat: {\n LT: 'HH:mm',\n LTS: 'HH:mm:ss',\n L: 'DD.MM.YYYY',\n LL: 'D MMMM YYYY',\n LLL: 'D MMMM YYYY HH:mm',\n LLLL: 'dddd, D MMMM YYYY HH:mm',\n },\n calendar: {\n sameDay: '[Dziś o] LT',\n nextDay: '[Jutro o] LT',\n nextWeek: function () {\n switch (this.day()) {\n case 0:\n return '[W niedzielę o] LT';\n\n case 2:\n return '[We wtorek o] LT';\n\n case 3:\n return '[W środę o] LT';\n\n case 6:\n return '[W sobotę o] LT';\n\n default:\n return '[W] dddd [o] LT';\n }\n },\n lastDay: '[Wczoraj o] LT',\n lastWeek: function () {\n switch (this.day()) {\n case 0:\n return '[W zeszłą niedzielę o] LT';\n case 3:\n return '[W zeszłą środę o] LT';\n case 6:\n return '[W zeszłą sobotę o] LT';\n default:\n return '[W zeszły] dddd [o] LT';\n }\n },\n sameElse: 'L',\n },\n relativeTime: {\n future: 'za %s',\n past: '%s temu',\n s: 'kilka sekund',\n ss: translate,\n m: translate,\n mm: translate,\n h: translate,\n hh: translate,\n d: '1 dzień',\n dd: '%d dni',\n w: 'tydzień',\n ww: translate,\n M: 'miesiąc',\n MM: translate,\n y: 'rok',\n yy: translate,\n },\n dayOfMonthOrdinalParse: /\\d{1,2}\\./,\n ordinal: '%d.',\n week: {\n dow: 1, // Monday is the first day of the week.\n doy: 4, // The week that contains Jan 4th is the first week of the year.\n },\n });\n\n return pl;\n\n})));\n\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./~/moment/locale/pl.js\n// module id = 400\n// module chunks = 0 1 2 3 5 6 160","//! moment.js locale configuration\n//! locale : Portuguese (Brazil) [pt-br]\n//! author : Caio Ribeiro Pereira : https://github.com/caio-ribeiro-pereira\n\n;(function (global, factory) {\n typeof exports === 'object' && typeof module !== 'undefined'\n && typeof require === 'function' ? factory(require('../moment')) :\n typeof define === 'function' && define.amd ? define(['../moment'], factory) :\n factory(global.moment)\n}(this, (function (moment) { 'use strict';\n\n //! moment.js locale configuration\n\n var ptBr = moment.defineLocale('pt-br', {\n months: 'janeiro_fevereiro_março_abril_maio_junho_julho_agosto_setembro_outubro_novembro_dezembro'.split(\n '_'\n ),\n monthsShort: 'jan_fev_mar_abr_mai_jun_jul_ago_set_out_nov_dez'.split('_'),\n weekdays: 'domingo_segunda-feira_terça-feira_quarta-feira_quinta-feira_sexta-feira_sábado'.split(\n '_'\n ),\n weekdaysShort: 'dom_seg_ter_qua_qui_sex_sáb'.split('_'),\n weekdaysMin: 'do_2ª_3ª_4ª_5ª_6ª_sá'.split('_'),\n weekdaysParseExact: true,\n longDateFormat: {\n LT: 'HH:mm',\n LTS: 'HH:mm:ss',\n L: 'DD/MM/YYYY',\n LL: 'D [de] MMMM [de] YYYY',\n LLL: 'D [de] MMMM [de] YYYY [às] HH:mm',\n LLLL: 'dddd, D [de] MMMM [de] YYYY [às] HH:mm',\n },\n calendar: {\n sameDay: '[Hoje às] LT',\n nextDay: '[Amanhã às] LT',\n nextWeek: 'dddd [às] LT',\n lastDay: '[Ontem às] LT',\n lastWeek: function () {\n return this.day() === 0 || this.day() === 6\n ? '[Último] dddd [às] LT' // Saturday + Sunday\n : '[Última] dddd [às] LT'; // Monday - Friday\n },\n sameElse: 'L',\n },\n relativeTime: {\n future: 'em %s',\n past: 'há %s',\n s: 'poucos segundos',\n ss: '%d segundos',\n m: 'um minuto',\n mm: '%d minutos',\n h: 'uma hora',\n hh: '%d horas',\n d: 'um dia',\n dd: '%d dias',\n M: 'um mês',\n MM: '%d meses',\n y: 'um ano',\n yy: '%d anos',\n },\n dayOfMonthOrdinalParse: /\\d{1,2}º/,\n ordinal: '%dº',\n invalidDate: 'Data inválida',\n });\n\n return ptBr;\n\n})));\n\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./~/moment/locale/pt-br.js\n// module id = 401\n// module chunks = 0 1 2 3 5 6 160","//! moment.js locale configuration\n//! locale : Portuguese [pt]\n//! author : Jefferson : https://github.com/jalex79\n\n;(function (global, factory) {\n typeof exports === 'object' && typeof module !== 'undefined'\n && typeof require === 'function' ? factory(require('../moment')) :\n typeof define === 'function' && define.amd ? define(['../moment'], factory) :\n factory(global.moment)\n}(this, (function (moment) { 'use strict';\n\n //! moment.js locale configuration\n\n var pt = moment.defineLocale('pt', {\n months: 'janeiro_fevereiro_março_abril_maio_junho_julho_agosto_setembro_outubro_novembro_dezembro'.split(\n '_'\n ),\n monthsShort: 'jan_fev_mar_abr_mai_jun_jul_ago_set_out_nov_dez'.split('_'),\n weekdays: 'Domingo_Segunda-feira_Terça-feira_Quarta-feira_Quinta-feira_Sexta-feira_Sábado'.split(\n '_'\n ),\n weekdaysShort: 'Dom_Seg_Ter_Qua_Qui_Sex_Sáb'.split('_'),\n weekdaysMin: 'Do_2ª_3ª_4ª_5ª_6ª_Sá'.split('_'),\n weekdaysParseExact: true,\n longDateFormat: {\n LT: 'HH:mm',\n LTS: 'HH:mm:ss',\n L: 'DD/MM/YYYY',\n LL: 'D [de] MMMM [de] YYYY',\n LLL: 'D [de] MMMM [de] YYYY HH:mm',\n LLLL: 'dddd, D [de] MMMM [de] YYYY HH:mm',\n },\n calendar: {\n sameDay: '[Hoje às] LT',\n nextDay: '[Amanhã às] LT',\n nextWeek: 'dddd [às] LT',\n lastDay: '[Ontem às] LT',\n lastWeek: function () {\n return this.day() === 0 || this.day() === 6\n ? '[Último] dddd [às] LT' // Saturday + Sunday\n : '[Última] dddd [às] LT'; // Monday - Friday\n },\n sameElse: 'L',\n },\n relativeTime: {\n future: 'em %s',\n past: 'há %s',\n s: 'segundos',\n ss: '%d segundos',\n m: 'um minuto',\n mm: '%d minutos',\n h: 'uma hora',\n hh: '%d horas',\n d: 'um dia',\n dd: '%d dias',\n w: 'uma semana',\n ww: '%d semanas',\n M: 'um mês',\n MM: '%d meses',\n y: 'um ano',\n yy: '%d anos',\n },\n dayOfMonthOrdinalParse: /\\d{1,2}º/,\n ordinal: '%dº',\n week: {\n dow: 1, // Monday is the first day of the week.\n doy: 4, // The week that contains Jan 4th is the first week of the year.\n },\n });\n\n return pt;\n\n})));\n\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./~/moment/locale/pt.js\n// module id = 402\n// module chunks = 0 1 2 3 5 6 160","//! moment.js locale configuration\n//! locale : Romanian [ro]\n//! author : Vlad Gurdiga : https://github.com/gurdiga\n//! author : Valentin Agachi : https://github.com/avaly\n//! author : Emanuel Cepoi : https://github.com/cepem\n\n;(function (global, factory) {\n typeof exports === 'object' && typeof module !== 'undefined'\n && typeof require === 'function' ? factory(require('../moment')) :\n typeof define === 'function' && define.amd ? define(['../moment'], factory) :\n factory(global.moment)\n}(this, (function (moment) { 'use strict';\n\n //! moment.js locale configuration\n\n function relativeTimeWithPlural(number, withoutSuffix, key) {\n var format = {\n ss: 'secunde',\n mm: 'minute',\n hh: 'ore',\n dd: 'zile',\n ww: 'săptămâni',\n MM: 'luni',\n yy: 'ani',\n },\n separator = ' ';\n if (number % 100 >= 20 || (number >= 100 && number % 100 === 0)) {\n separator = ' de ';\n }\n return number + separator + format[key];\n }\n\n var ro = moment.defineLocale('ro', {\n months: 'ianuarie_februarie_martie_aprilie_mai_iunie_iulie_august_septembrie_octombrie_noiembrie_decembrie'.split(\n '_'\n ),\n monthsShort: 'ian._feb._mart._apr._mai_iun._iul._aug._sept._oct._nov._dec.'.split(\n '_'\n ),\n monthsParseExact: true,\n weekdays: 'duminică_luni_marți_miercuri_joi_vineri_sâmbătă'.split('_'),\n weekdaysShort: 'Dum_Lun_Mar_Mie_Joi_Vin_Sâm'.split('_'),\n weekdaysMin: 'Du_Lu_Ma_Mi_Jo_Vi_Sâ'.split('_'),\n longDateFormat: {\n LT: 'H:mm',\n LTS: 'H:mm:ss',\n L: 'DD.MM.YYYY',\n LL: 'D MMMM YYYY',\n LLL: 'D MMMM YYYY H:mm',\n LLLL: 'dddd, D MMMM YYYY H:mm',\n },\n calendar: {\n sameDay: '[azi la] LT',\n nextDay: '[mâine la] LT',\n nextWeek: 'dddd [la] LT',\n lastDay: '[ieri la] LT',\n lastWeek: '[fosta] dddd [la] LT',\n sameElse: 'L',\n },\n relativeTime: {\n future: 'peste %s',\n past: '%s în urmă',\n s: 'câteva secunde',\n ss: relativeTimeWithPlural,\n m: 'un minut',\n mm: relativeTimeWithPlural,\n h: 'o oră',\n hh: relativeTimeWithPlural,\n d: 'o zi',\n dd: relativeTimeWithPlural,\n w: 'o săptămână',\n ww: relativeTimeWithPlural,\n M: 'o lună',\n MM: relativeTimeWithPlural,\n y: 'un an',\n yy: relativeTimeWithPlural,\n },\n week: {\n dow: 1, // Monday is the first day of the week.\n doy: 7, // The week that contains Jan 7th is the first week of the year.\n },\n });\n\n return ro;\n\n})));\n\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./~/moment/locale/ro.js\n// module id = 403\n// module chunks = 0 1 2 3 5 6 160","//! moment.js locale configuration\n//! locale : Russian [ru]\n//! author : Viktorminator : https://github.com/Viktorminator\n//! author : Menelion Elensúle : https://github.com/Oire\n//! author : Коренберг Марк : https://github.com/socketpair\n\n;(function (global, factory) {\n typeof exports === 'object' && typeof module !== 'undefined'\n && typeof require === 'function' ? factory(require('../moment')) :\n typeof define === 'function' && define.amd ? define(['../moment'], factory) :\n factory(global.moment)\n}(this, (function (moment) { 'use strict';\n\n //! moment.js locale configuration\n\n function plural(word, num) {\n var forms = word.split('_');\n return num % 10 === 1 && num % 100 !== 11\n ? forms[0]\n : num % 10 >= 2 && num % 10 <= 4 && (num % 100 < 10 || num % 100 >= 20)\n ? forms[1]\n : forms[2];\n }\n function relativeTimeWithPlural(number, withoutSuffix, key) {\n var format = {\n ss: withoutSuffix ? 'секунда_секунды_секунд' : 'секунду_секунды_секунд',\n mm: withoutSuffix ? 'минута_минуты_минут' : 'минуту_минуты_минут',\n hh: 'час_часа_часов',\n dd: 'день_дня_дней',\n ww: 'неделя_недели_недель',\n MM: 'месяц_месяца_месяцев',\n yy: 'год_года_лет',\n };\n if (key === 'm') {\n return withoutSuffix ? 'минута' : 'минуту';\n } else {\n return number + ' ' + plural(format[key], +number);\n }\n }\n var monthsParse = [\n /^янв/i,\n /^фев/i,\n /^мар/i,\n /^апр/i,\n /^ма[йя]/i,\n /^июн/i,\n /^июл/i,\n /^авг/i,\n /^сен/i,\n /^окт/i,\n /^ноя/i,\n /^дек/i,\n ];\n\n // http://new.gramota.ru/spravka/rules/139-prop : § 103\n // Сокращения месяцев: http://new.gramota.ru/spravka/buro/search-answer?s=242637\n // CLDR data: http://www.unicode.org/cldr/charts/28/summary/ru.html#1753\n var ru = moment.defineLocale('ru', {\n months: {\n format: 'января_февраля_марта_апреля_мая_июня_июля_августа_сентября_октября_ноября_декабря'.split(\n '_'\n ),\n standalone: 'январь_февраль_март_апрель_май_июнь_июль_август_сентябрь_октябрь_ноябрь_декабрь'.split(\n '_'\n ),\n },\n monthsShort: {\n // по CLDR именно \"июл.\" и \"июн.\", но какой смысл менять букву на точку?\n format: 'янв._февр._мар._апр._мая_июня_июля_авг._сент._окт._нояб._дек.'.split(\n '_'\n ),\n standalone: 'янв._февр._март_апр._май_июнь_июль_авг._сент._окт._нояб._дек.'.split(\n '_'\n ),\n },\n weekdays: {\n standalone: 'воскресенье_понедельник_вторник_среда_четверг_пятница_суббота'.split(\n '_'\n ),\n format: 'воскресенье_понедельник_вторник_среду_четверг_пятницу_субботу'.split(\n '_'\n ),\n isFormat: /\\[ ?[Вв] ?(?:прошлую|следующую|эту)? ?] ?dddd/,\n },\n weekdaysShort: 'вс_пн_вт_ср_чт_пт_сб'.split('_'),\n weekdaysMin: 'вс_пн_вт_ср_чт_пт_сб'.split('_'),\n monthsParse: monthsParse,\n longMonthsParse: monthsParse,\n shortMonthsParse: monthsParse,\n\n // полные названия с падежами, по три буквы, для некоторых, по 4 буквы, сокращения с точкой и без точки\n monthsRegex: /^(январ[ья]|янв\\.?|феврал[ья]|февр?\\.?|марта?|мар\\.?|апрел[ья]|апр\\.?|ма[йя]|июн[ья]|июн\\.?|июл[ья]|июл\\.?|августа?|авг\\.?|сентябр[ья]|сент?\\.?|октябр[ья]|окт\\.?|ноябр[ья]|нояб?\\.?|декабр[ья]|дек\\.?)/i,\n\n // копия предыдущего\n monthsShortRegex: /^(январ[ья]|янв\\.?|феврал[ья]|февр?\\.?|марта?|мар\\.?|апрел[ья]|апр\\.?|ма[йя]|июн[ья]|июн\\.?|июл[ья]|июл\\.?|августа?|авг\\.?|сентябр[ья]|сент?\\.?|октябр[ья]|окт\\.?|ноябр[ья]|нояб?\\.?|декабр[ья]|дек\\.?)/i,\n\n // полные названия с падежами\n monthsStrictRegex: /^(январ[яь]|феврал[яь]|марта?|апрел[яь]|ма[яй]|июн[яь]|июл[яь]|августа?|сентябр[яь]|октябр[яь]|ноябр[яь]|декабр[яь])/i,\n\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, // Monday is the first day of the week.\n doy: 4, // The week that contains Jan 4th is the first week of the year.\n },\n });\n\n return ru;\n\n})));\n\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./~/moment/locale/ru.js\n// module id = 404\n// module chunks = 0 1 2 3 5 6 160","//! moment.js locale configuration\n//! locale : Sindhi [sd]\n//! author : Narain Sagar : https://github.com/narainsagar\n\n;(function (global, factory) {\n typeof exports === 'object' && typeof module !== 'undefined'\n && typeof require === 'function' ? factory(require('../moment')) :\n typeof define === 'function' && define.amd ? define(['../moment'], factory) :\n factory(global.moment)\n}(this, (function (moment) { 'use strict';\n\n //! moment.js locale configuration\n\n var months = [\n 'جنوري',\n 'فيبروري',\n 'مارچ',\n 'اپريل',\n 'مئي',\n 'جون',\n 'جولاءِ',\n 'آگسٽ',\n 'سيپٽمبر',\n 'آڪٽوبر',\n 'نومبر',\n 'ڊسمبر',\n ],\n days = ['آچر', 'سومر', 'اڱارو', 'اربع', 'خميس', 'جمع', 'ڇنڇر'];\n\n var sd = moment.defineLocale('sd', {\n months: months,\n monthsShort: months,\n weekdays: days,\n weekdaysShort: days,\n weekdaysMin: days,\n longDateFormat: {\n LT: 'HH:mm',\n LTS: 'HH:mm:ss',\n L: 'DD/MM/YYYY',\n LL: 'D MMMM YYYY',\n LLL: 'D MMMM YYYY HH:mm',\n LLLL: 'dddd، D MMMM YYYY HH:mm',\n },\n meridiemParse: /صبح|شام/,\n isPM: function (input) {\n return 'شام' === input;\n },\n meridiem: function (hour, minute, isLower) {\n if (hour < 12) {\n return 'صبح';\n }\n return 'شام';\n },\n calendar: {\n sameDay: '[اڄ] LT',\n nextDay: '[سڀاڻي] LT',\n nextWeek: 'dddd [اڳين هفتي تي] LT',\n lastDay: '[ڪالهه] LT',\n lastWeek: '[گزريل هفتي] dddd [تي] LT',\n sameElse: 'L',\n },\n relativeTime: {\n future: '%s پوء',\n past: '%s اڳ',\n s: 'چند سيڪنڊ',\n ss: '%d سيڪنڊ',\n m: 'هڪ منٽ',\n mm: '%d منٽ',\n h: 'هڪ ڪلاڪ',\n hh: '%d ڪلاڪ',\n d: 'هڪ ڏينهن',\n dd: '%d ڏينهن',\n M: 'هڪ مهينو',\n MM: '%d مهينا',\n y: 'هڪ سال',\n yy: '%d سال',\n },\n preparse: function (string) {\n return string.replace(/،/g, ',');\n },\n postformat: function (string) {\n return string.replace(/,/g, '،');\n },\n week: {\n dow: 1, // Monday is the first day of the week.\n doy: 4, // The week that contains Jan 4th is the first week of the year.\n },\n });\n\n return sd;\n\n})));\n\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./~/moment/locale/sd.js\n// module id = 405\n// module chunks = 0 1 2 3 5 6 160","//! moment.js locale configuration\n//! locale : Northern Sami [se]\n//! authors : Bård Rolstad Henriksen : https://github.com/karamell\n\n;(function (global, factory) {\n typeof exports === 'object' && typeof module !== 'undefined'\n && typeof require === 'function' ? factory(require('../moment')) :\n typeof define === 'function' && define.amd ? define(['../moment'], factory) :\n factory(global.moment)\n}(this, (function (moment) { 'use strict';\n\n //! moment.js locale configuration\n\n var se = moment.defineLocale('se', {\n months: 'ođđajagemánnu_guovvamánnu_njukčamánnu_cuoŋománnu_miessemánnu_geassemánnu_suoidnemánnu_borgemánnu_čakčamánnu_golggotmánnu_skábmamánnu_juovlamánnu'.split(\n '_'\n ),\n monthsShort: 'ođđj_guov_njuk_cuo_mies_geas_suoi_borg_čakč_golg_skáb_juov'.split(\n '_'\n ),\n weekdays: 'sotnabeaivi_vuossárga_maŋŋebárga_gaskavahkku_duorastat_bearjadat_lávvardat'.split(\n '_'\n ),\n weekdaysShort: 'sotn_vuos_maŋ_gask_duor_bear_láv'.split('_'),\n weekdaysMin: 's_v_m_g_d_b_L'.split('_'),\n longDateFormat: {\n LT: 'HH:mm',\n LTS: 'HH:mm:ss',\n L: 'DD.MM.YYYY',\n LL: 'MMMM D. [b.] YYYY',\n LLL: 'MMMM D. [b.] YYYY [ti.] HH:mm',\n LLLL: 'dddd, MMMM D. [b.] YYYY [ti.] HH:mm',\n },\n calendar: {\n sameDay: '[otne ti] LT',\n nextDay: '[ihttin ti] LT',\n nextWeek: 'dddd [ti] LT',\n lastDay: '[ikte ti] LT',\n lastWeek: '[ovddit] dddd [ti] LT',\n sameElse: 'L',\n },\n relativeTime: {\n future: '%s geažes',\n past: 'maŋit %s',\n s: 'moadde sekunddat',\n ss: '%d sekunddat',\n m: 'okta minuhta',\n mm: '%d minuhtat',\n h: 'okta diimmu',\n hh: '%d diimmut',\n d: 'okta beaivi',\n dd: '%d beaivvit',\n M: 'okta mánnu',\n MM: '%d mánut',\n y: 'okta jahki',\n yy: '%d jagit',\n },\n dayOfMonthOrdinalParse: /\\d{1,2}\\./,\n ordinal: '%d.',\n week: {\n dow: 1, // Monday is the first day of the week.\n doy: 4, // The week that contains Jan 4th is the first week of the year.\n },\n });\n\n return se;\n\n})));\n\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./~/moment/locale/se.js\n// module id = 406\n// module chunks = 0 1 2 3 5 6 160","//! moment.js locale configuration\n//! locale : Sinhalese [si]\n//! author : Sampath Sitinamaluwa : https://github.com/sampathsris\n\n;(function (global, factory) {\n typeof exports === 'object' && typeof module !== 'undefined'\n && typeof require === 'function' ? factory(require('../moment')) :\n typeof define === 'function' && define.amd ? define(['../moment'], factory) :\n factory(global.moment)\n}(this, (function (moment) { 'use strict';\n\n //! moment.js locale configuration\n\n /*jshint -W100*/\n var si = moment.defineLocale('si', {\n months: 'ජනවාරි_පෙබරවාරි_මාර්තු_අප්‍රේල්_මැයි_ජූනි_ජූලි_අගෝස්තු_සැප්තැම්බර්_ඔක්තෝබර්_නොවැම්බර්_දෙසැම්බර්'.split(\n '_'\n ),\n monthsShort: 'ජන_පෙබ_මාර්_අප්_මැයි_ජූනි_ජූලි_අගෝ_සැප්_ඔක්_නොවැ_දෙසැ'.split(\n '_'\n ),\n weekdays: 'ඉරිදා_සඳුදා_අඟහරුවාදා_බදාදා_බ්‍රහස්පතින්දා_සිකුරාදා_සෙනසුරාදා'.split(\n '_'\n ),\n weekdaysShort: 'ඉරි_සඳු_අඟ_බදා_බ්‍රහ_සිකු_සෙන'.split('_'),\n weekdaysMin: 'ඉ_ස_අ_බ_බ්‍ර_සි_සෙ'.split('_'),\n weekdaysParseExact: true,\n longDateFormat: {\n LT: 'a h:mm',\n LTS: 'a h:mm:ss',\n L: 'YYYY/MM/DD',\n LL: 'YYYY MMMM D',\n LLL: 'YYYY MMMM D, a h:mm',\n LLLL: 'YYYY MMMM D [වැනි] dddd, a h:mm:ss',\n },\n calendar: {\n sameDay: '[අද] LT[ට]',\n nextDay: '[හෙට] LT[ට]',\n nextWeek: 'dddd LT[ට]',\n lastDay: '[ඊයේ] LT[ට]',\n lastWeek: '[පසුගිය] dddd LT[ට]',\n sameElse: 'L',\n },\n relativeTime: {\n future: '%sකින්',\n past: '%sකට පෙර',\n s: 'තත්පර කිහිපය',\n ss: 'තත්පර %d',\n m: 'මිනිත්තුව',\n mm: 'මිනිත්තු %d',\n h: 'පැය',\n hh: 'පැය %d',\n d: 'දිනය',\n dd: 'දින %d',\n M: 'මාසය',\n MM: 'මාස %d',\n y: 'වසර',\n yy: 'වසර %d',\n },\n dayOfMonthOrdinalParse: /\\d{1,2} වැනි/,\n ordinal: function (number) {\n return number + ' වැනි';\n },\n meridiemParse: /පෙර වරු|පස් වරු|පෙ.ව|ප.ව./,\n isPM: function (input) {\n return input === 'ප.ව.' || input === 'පස් වරු';\n },\n meridiem: function (hours, minutes, isLower) {\n if (hours > 11) {\n return isLower ? 'ප.ව.' : 'පස් වරු';\n } else {\n return isLower ? 'පෙ.ව.' : 'පෙර වරු';\n }\n },\n });\n\n return si;\n\n})));\n\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./~/moment/locale/si.js\n// module id = 407\n// module chunks = 0 1 2 3 5 6 160","//! moment.js locale configuration\n//! locale : Slovak [sk]\n//! author : Martin Minka : https://github.com/k2s\n//! based on work of petrbela : https://github.com/petrbela\n\n;(function (global, factory) {\n typeof exports === 'object' && typeof module !== 'undefined'\n && typeof require === 'function' ? factory(require('../moment')) :\n typeof define === 'function' && define.amd ? define(['../moment'], factory) :\n factory(global.moment)\n}(this, (function (moment) { 'use strict';\n\n //! moment.js locale configuration\n\n var months = 'január_február_marec_apríl_máj_jún_júl_august_september_október_november_december'.split(\n '_'\n ),\n monthsShort = 'jan_feb_mar_apr_máj_jún_júl_aug_sep_okt_nov_dec'.split('_');\n function plural(n) {\n return n > 1 && n < 5;\n }\n function translate(number, withoutSuffix, key, isFuture) {\n var result = number + ' ';\n switch (key) {\n case 's': // a few seconds / in a few seconds / a few seconds ago\n return withoutSuffix || isFuture ? 'pár sekúnd' : 'pár sekundami';\n case 'ss': // 9 seconds / in 9 seconds / 9 seconds ago\n if (withoutSuffix || isFuture) {\n return result + (plural(number) ? 'sekundy' : 'sekúnd');\n } else {\n return result + 'sekundami';\n }\n case 'm': // a minute / in a minute / a minute ago\n return withoutSuffix ? 'minúta' : isFuture ? 'minútu' : 'minútou';\n case 'mm': // 9 minutes / in 9 minutes / 9 minutes ago\n if (withoutSuffix || isFuture) {\n return result + (plural(number) ? 'minúty' : 'minút');\n } else {\n return result + 'minútami';\n }\n case 'h': // an hour / in an hour / an hour ago\n return withoutSuffix ? 'hodina' : isFuture ? 'hodinu' : 'hodinou';\n case 'hh': // 9 hours / in 9 hours / 9 hours ago\n if (withoutSuffix || isFuture) {\n return result + (plural(number) ? 'hodiny' : 'hodín');\n } else {\n return result + 'hodinami';\n }\n case 'd': // a day / in a day / a day ago\n return withoutSuffix || isFuture ? 'deň' : 'dňom';\n case 'dd': // 9 days / in 9 days / 9 days ago\n if (withoutSuffix || isFuture) {\n return result + (plural(number) ? 'dni' : 'dní');\n } else {\n return result + 'dňami';\n }\n case 'M': // a month / in a month / a month ago\n return withoutSuffix || isFuture ? 'mesiac' : 'mesiacom';\n case 'MM': // 9 months / in 9 months / 9 months ago\n if (withoutSuffix || isFuture) {\n return result + (plural(number) ? 'mesiace' : 'mesiacov');\n } else {\n return result + 'mesiacmi';\n }\n case 'y': // a year / in a year / a year ago\n return withoutSuffix || isFuture ? 'rok' : 'rokom';\n case 'yy': // 9 years / in 9 years / 9 years ago\n if (withoutSuffix || isFuture) {\n return result + (plural(number) ? 'roky' : 'rokov');\n } else {\n return result + 'rokmi';\n }\n }\n }\n\n var sk = moment.defineLocale('sk', {\n months: months,\n monthsShort: monthsShort,\n weekdays: 'nedeľa_pondelok_utorok_streda_štvrtok_piatok_sobota'.split('_'),\n weekdaysShort: 'ne_po_ut_st_št_pi_so'.split('_'),\n weekdaysMin: 'ne_po_ut_st_št_pi_so'.split('_'),\n longDateFormat: {\n LT: 'H:mm',\n LTS: 'H:mm:ss',\n L: 'DD.MM.YYYY',\n LL: 'D. MMMM YYYY',\n LLL: 'D. MMMM YYYY H:mm',\n LLLL: 'dddd D. MMMM YYYY H:mm',\n },\n calendar: {\n sameDay: '[dnes o] LT',\n nextDay: '[zajtra o] LT',\n nextWeek: function () {\n switch (this.day()) {\n case 0:\n return '[v nedeľu o] LT';\n case 1:\n case 2:\n return '[v] dddd [o] LT';\n case 3:\n return '[v stredu o] LT';\n case 4:\n return '[vo štvrtok o] LT';\n case 5:\n return '[v piatok o] LT';\n case 6:\n return '[v sobotu o] LT';\n }\n },\n lastDay: '[včera o] LT',\n lastWeek: function () {\n switch (this.day()) {\n case 0:\n return '[minulú nedeľu o] LT';\n case 1:\n case 2:\n return '[minulý] dddd [o] LT';\n case 3:\n return '[minulú stredu o] LT';\n case 4:\n case 5:\n return '[minulý] dddd [o] LT';\n case 6:\n return '[minulú sobotu o] LT';\n }\n },\n sameElse: 'L',\n },\n relativeTime: {\n future: 'za %s',\n past: 'pred %s',\n s: translate,\n ss: translate,\n m: translate,\n mm: translate,\n h: translate,\n hh: translate,\n d: translate,\n dd: translate,\n M: translate,\n MM: translate,\n y: translate,\n yy: translate,\n },\n dayOfMonthOrdinalParse: /\\d{1,2}\\./,\n ordinal: '%d.',\n week: {\n dow: 1, // Monday is the first day of the week.\n doy: 4, // The week that contains Jan 4th is the first week of the year.\n },\n });\n\n return sk;\n\n})));\n\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./~/moment/locale/sk.js\n// module id = 408\n// module chunks = 0 1 2 3 5 6 160","//! moment.js locale configuration\n//! locale : Slovenian [sl]\n//! author : Robert Sedovšek : https://github.com/sedovsek\n\n;(function (global, factory) {\n typeof exports === 'object' && typeof module !== 'undefined'\n && typeof require === 'function' ? factory(require('../moment')) :\n typeof define === 'function' && define.amd ? define(['../moment'], factory) :\n factory(global.moment)\n}(this, (function (moment) { 'use strict';\n\n //! moment.js locale configuration\n\n function processRelativeTime(number, withoutSuffix, key, isFuture) {\n var result = number + ' ';\n switch (key) {\n case 's':\n return withoutSuffix || isFuture\n ? 'nekaj sekund'\n : 'nekaj sekundami';\n case 'ss':\n if (number === 1) {\n result += withoutSuffix ? 'sekundo' : 'sekundi';\n } else if (number === 2) {\n result += withoutSuffix || isFuture ? 'sekundi' : 'sekundah';\n } else if (number < 5) {\n result += withoutSuffix || isFuture ? 'sekunde' : 'sekundah';\n } else {\n result += 'sekund';\n }\n return result;\n case 'm':\n return withoutSuffix ? 'ena minuta' : 'eno minuto';\n case 'mm':\n if (number === 1) {\n result += withoutSuffix ? 'minuta' : 'minuto';\n } else if (number === 2) {\n result += withoutSuffix || isFuture ? 'minuti' : 'minutama';\n } else if (number < 5) {\n result += withoutSuffix || isFuture ? 'minute' : 'minutami';\n } else {\n result += withoutSuffix || isFuture ? 'minut' : 'minutami';\n }\n return result;\n case 'h':\n return withoutSuffix ? 'ena ura' : 'eno uro';\n case 'hh':\n if (number === 1) {\n result += withoutSuffix ? 'ura' : 'uro';\n } else if (number === 2) {\n result += withoutSuffix || isFuture ? 'uri' : 'urama';\n } else if (number < 5) {\n result += withoutSuffix || isFuture ? 'ure' : 'urami';\n } else {\n result += withoutSuffix || isFuture ? 'ur' : 'urami';\n }\n return result;\n case 'd':\n return withoutSuffix || isFuture ? 'en dan' : 'enim dnem';\n case 'dd':\n if (number === 1) {\n result += withoutSuffix || isFuture ? 'dan' : 'dnem';\n } else if (number === 2) {\n result += withoutSuffix || isFuture ? 'dni' : 'dnevoma';\n } else {\n result += withoutSuffix || isFuture ? 'dni' : 'dnevi';\n }\n return result;\n case 'M':\n return withoutSuffix || isFuture ? 'en mesec' : 'enim mesecem';\n case 'MM':\n if (number === 1) {\n result += withoutSuffix || isFuture ? 'mesec' : 'mesecem';\n } else if (number === 2) {\n result += withoutSuffix || isFuture ? 'meseca' : 'mesecema';\n } else if (number < 5) {\n result += withoutSuffix || isFuture ? 'mesece' : 'meseci';\n } else {\n result += withoutSuffix || isFuture ? 'mesecev' : 'meseci';\n }\n return result;\n case 'y':\n return withoutSuffix || isFuture ? 'eno leto' : 'enim letom';\n case 'yy':\n if (number === 1) {\n result += withoutSuffix || isFuture ? 'leto' : 'letom';\n } else if (number === 2) {\n result += withoutSuffix || isFuture ? 'leti' : 'letoma';\n } else if (number < 5) {\n result += withoutSuffix || isFuture ? 'leta' : 'leti';\n } else {\n result += withoutSuffix || isFuture ? 'let' : 'leti';\n }\n return result;\n }\n }\n\n var sl = moment.defineLocale('sl', {\n months: 'januar_februar_marec_april_maj_junij_julij_avgust_september_oktober_november_december'.split(\n '_'\n ),\n monthsShort: 'jan._feb._mar._apr._maj._jun._jul._avg._sep._okt._nov._dec.'.split(\n '_'\n ),\n monthsParseExact: true,\n weekdays: 'nedelja_ponedeljek_torek_sreda_četrtek_petek_sobota'.split('_'),\n weekdaysShort: 'ned._pon._tor._sre._čet._pet._sob.'.split('_'),\n weekdaysMin: 'ne_po_to_sr_če_pe_so'.split('_'),\n weekdaysParseExact: true,\n longDateFormat: {\n LT: 'H:mm',\n LTS: 'H:mm:ss',\n L: 'DD. MM. YYYY',\n LL: 'D. MMMM YYYY',\n LLL: 'D. MMMM YYYY H:mm',\n LLLL: 'dddd, D. MMMM YYYY H:mm',\n },\n calendar: {\n sameDay: '[danes ob] LT',\n nextDay: '[jutri ob] LT',\n\n nextWeek: function () {\n switch (this.day()) {\n case 0:\n return '[v] [nedeljo] [ob] LT';\n case 3:\n return '[v] [sredo] [ob] LT';\n case 6:\n return '[v] [soboto] [ob] LT';\n case 1:\n case 2:\n case 4:\n case 5:\n return '[v] dddd [ob] LT';\n }\n },\n lastDay: '[včeraj ob] LT',\n lastWeek: function () {\n switch (this.day()) {\n case 0:\n return '[prejšnjo] [nedeljo] [ob] LT';\n case 3:\n return '[prejšnjo] [sredo] [ob] LT';\n case 6:\n return '[prejšnjo] [soboto] [ob] LT';\n case 1:\n case 2:\n case 4:\n case 5:\n return '[prejšnji] dddd [ob] LT';\n }\n },\n sameElse: 'L',\n },\n relativeTime: {\n future: 'čez %s',\n past: 'pred %s',\n s: processRelativeTime,\n ss: processRelativeTime,\n m: processRelativeTime,\n mm: processRelativeTime,\n h: processRelativeTime,\n hh: processRelativeTime,\n d: processRelativeTime,\n dd: processRelativeTime,\n M: processRelativeTime,\n MM: processRelativeTime,\n y: processRelativeTime,\n yy: processRelativeTime,\n },\n dayOfMonthOrdinalParse: /\\d{1,2}\\./,\n ordinal: '%d.',\n week: {\n dow: 1, // Monday is the first day of the week.\n doy: 7, // The week that contains Jan 7th is the first week of the year.\n },\n });\n\n return sl;\n\n})));\n\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./~/moment/locale/sl.js\n// module id = 409\n// module chunks = 0 1 2 3 5 6 160","//! moment.js locale configuration\n//! locale : Albanian [sq]\n//! author : Flakërim Ismani : https://github.com/flakerimi\n//! author : Menelion Elensúle : https://github.com/Oire\n//! author : Oerd Cukalla : https://github.com/oerd\n\n;(function (global, factory) {\n typeof exports === 'object' && typeof module !== 'undefined'\n && typeof require === 'function' ? factory(require('../moment')) :\n typeof define === 'function' && define.amd ? define(['../moment'], factory) :\n factory(global.moment)\n}(this, (function (moment) { 'use strict';\n\n //! moment.js locale configuration\n\n var sq = moment.defineLocale('sq', {\n months: 'Janar_Shkurt_Mars_Prill_Maj_Qershor_Korrik_Gusht_Shtator_Tetor_Nëntor_Dhjetor'.split(\n '_'\n ),\n monthsShort: 'Jan_Shk_Mar_Pri_Maj_Qer_Kor_Gus_Sht_Tet_Nën_Dhj'.split('_'),\n weekdays: 'E Diel_E Hënë_E Martë_E Mërkurë_E Enjte_E Premte_E Shtunë'.split(\n '_'\n ),\n weekdaysShort: 'Die_Hën_Mar_Mër_Enj_Pre_Sht'.split('_'),\n weekdaysMin: 'D_H_Ma_Më_E_P_Sh'.split('_'),\n weekdaysParseExact: true,\n meridiemParse: /PD|MD/,\n isPM: function (input) {\n return input.charAt(0) === 'M';\n },\n meridiem: function (hours, minutes, isLower) {\n return hours < 12 ? 'PD' : 'MD';\n },\n longDateFormat: {\n LT: 'HH:mm',\n LTS: 'HH:mm:ss',\n L: 'DD/MM/YYYY',\n LL: 'D MMMM YYYY',\n LLL: 'D MMMM YYYY HH:mm',\n LLLL: 'dddd, D MMMM YYYY HH:mm',\n },\n calendar: {\n sameDay: '[Sot në] LT',\n nextDay: '[Nesër në] LT',\n nextWeek: 'dddd [në] LT',\n lastDay: '[Dje në] LT',\n lastWeek: 'dddd [e kaluar në] LT',\n sameElse: 'L',\n },\n relativeTime: {\n future: 'në %s',\n past: '%s më parë',\n s: 'disa sekonda',\n ss: '%d sekonda',\n m: 'një minutë',\n mm: '%d minuta',\n h: 'një orë',\n hh: '%d orë',\n d: 'një ditë',\n dd: '%d ditë',\n M: 'një muaj',\n MM: '%d muaj',\n y: 'një vit',\n yy: '%d vite',\n },\n dayOfMonthOrdinalParse: /\\d{1,2}\\./,\n ordinal: '%d.',\n week: {\n dow: 1, // Monday is the first day of the week.\n doy: 4, // The week that contains Jan 4th is the first week of the year.\n },\n });\n\n return sq;\n\n})));\n\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./~/moment/locale/sq.js\n// module id = 410\n// module chunks = 0 1 2 3 5 6 160","//! moment.js locale configuration\n//! locale : Serbian Cyrillic [sr-cyrl]\n//! author : Milan Janačković : https://github.com/milan-j\n//! author : Stefan Crnjaković : https://github.com/crnjakovic\n\n;(function (global, factory) {\n typeof exports === 'object' && typeof module !== 'undefined'\n && typeof require === 'function' ? factory(require('../moment')) :\n typeof define === 'function' && define.amd ? define(['../moment'], factory) :\n factory(global.moment)\n}(this, (function (moment) { 'use strict';\n\n //! moment.js locale configuration\n\n var translator = {\n words: {\n //Different grammatical cases\n ss: ['секунда', 'секунде', 'секунди'],\n m: ['један минут', 'једне минуте'],\n mm: ['минут', 'минуте', 'минута'],\n h: ['један сат', 'једног сата'],\n hh: ['сат', 'сата', 'сати'],\n dd: ['дан', 'дана', 'дана'],\n MM: ['месец', 'месеца', 'месеци'],\n yy: ['година', 'године', 'година'],\n },\n correctGrammaticalCase: function (number, wordKey) {\n return number === 1\n ? wordKey[0]\n : number >= 2 && number <= 4\n ? wordKey[1]\n : wordKey[2];\n },\n translate: function (number, withoutSuffix, key) {\n var wordKey = translator.words[key];\n if (key.length === 1) {\n return withoutSuffix ? wordKey[0] : wordKey[1];\n } else {\n return (\n number +\n ' ' +\n translator.correctGrammaticalCase(number, wordKey)\n );\n }\n },\n };\n\n var srCyrl = moment.defineLocale('sr-cyrl', {\n months: 'јануар_фебруар_март_април_мај_јун_јул_август_септембар_октобар_новембар_децембар'.split(\n '_'\n ),\n monthsShort: 'јан._феб._мар._апр._мај_јун_јул_авг._сеп._окт._нов._дец.'.split(\n '_'\n ),\n monthsParseExact: true,\n weekdays: 'недеља_понедељак_уторак_среда_четвртак_петак_субота'.split('_'),\n weekdaysShort: 'нед._пон._уто._сре._чет._пет._суб.'.split('_'),\n weekdaysMin: 'не_по_ут_ср_че_пе_су'.split('_'),\n weekdaysParseExact: true,\n longDateFormat: {\n LT: 'H:mm',\n LTS: 'H:mm:ss',\n L: 'D. M. YYYY.',\n LL: 'D. MMMM YYYY.',\n LLL: 'D. MMMM YYYY. H:mm',\n LLLL: 'dddd, D. MMMM YYYY. H:mm',\n },\n calendar: {\n sameDay: '[данас у] LT',\n nextDay: '[сутра у] LT',\n nextWeek: function () {\n switch (this.day()) {\n case 0:\n return '[у] [недељу] [у] LT';\n case 3:\n return '[у] [среду] [у] LT';\n case 6:\n return '[у] [суботу] [у] LT';\n case 1:\n case 2:\n case 4:\n case 5:\n return '[у] dddd [у] LT';\n }\n },\n lastDay: '[јуче у] LT',\n lastWeek: function () {\n var lastWeekDays = [\n '[прошле] [недеље] [у] LT',\n '[прошлог] [понедељка] [у] LT',\n '[прошлог] [уторка] [у] LT',\n '[прошле] [среде] [у] LT',\n '[прошлог] [четвртка] [у] LT',\n '[прошлог] [петка] [у] LT',\n '[прошле] [суботе] [у] LT',\n ];\n return lastWeekDays[this.day()];\n },\n sameElse: 'L',\n },\n relativeTime: {\n future: 'за %s',\n past: 'пре %s',\n s: 'неколико секунди',\n ss: translator.translate,\n m: translator.translate,\n mm: translator.translate,\n h: translator.translate,\n hh: translator.translate,\n d: 'дан',\n dd: translator.translate,\n M: 'месец',\n MM: translator.translate,\n y: 'годину',\n yy: translator.translate,\n },\n dayOfMonthOrdinalParse: /\\d{1,2}\\./,\n ordinal: '%d.',\n week: {\n dow: 1, // Monday is the first day of the week.\n doy: 7, // The week that contains Jan 1st is the first week of the year.\n },\n });\n\n return srCyrl;\n\n})));\n\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./~/moment/locale/sr-cyrl.js\n// module id = 411\n// module chunks = 0 1 2 3 5 6 160","//! moment.js locale configuration\n//! locale : Serbian [sr]\n//! author : Milan Janačković : https://github.com/milan-j\n//! author : Stefan Crnjaković : https://github.com/crnjakovic\n\n;(function (global, factory) {\n typeof exports === 'object' && typeof module !== 'undefined'\n && typeof require === 'function' ? factory(require('../moment')) :\n typeof define === 'function' && define.amd ? define(['../moment'], factory) :\n factory(global.moment)\n}(this, (function (moment) { 'use strict';\n\n //! moment.js locale configuration\n\n var translator = {\n words: {\n //Different grammatical cases\n ss: ['sekunda', 'sekunde', 'sekundi'],\n m: ['jedan minut', 'jedne minute'],\n mm: ['minut', 'minute', 'minuta'],\n h: ['jedan sat', 'jednog sata'],\n hh: ['sat', 'sata', 'sati'],\n dd: ['dan', 'dana', 'dana'],\n MM: ['mesec', 'meseca', 'meseci'],\n yy: ['godina', 'godine', 'godina'],\n },\n correctGrammaticalCase: function (number, wordKey) {\n return number === 1\n ? wordKey[0]\n : number >= 2 && number <= 4\n ? wordKey[1]\n : wordKey[2];\n },\n translate: function (number, withoutSuffix, key) {\n var wordKey = translator.words[key];\n if (key.length === 1) {\n return withoutSuffix ? wordKey[0] : wordKey[1];\n } else {\n return (\n number +\n ' ' +\n translator.correctGrammaticalCase(number, wordKey)\n );\n }\n },\n };\n\n var sr = moment.defineLocale('sr', {\n months: 'januar_februar_mart_april_maj_jun_jul_avgust_septembar_oktobar_novembar_decembar'.split(\n '_'\n ),\n monthsShort: 'jan._feb._mar._apr._maj_jun_jul_avg._sep._okt._nov._dec.'.split(\n '_'\n ),\n monthsParseExact: true,\n weekdays: 'nedelja_ponedeljak_utorak_sreda_četvrtak_petak_subota'.split(\n '_'\n ),\n weekdaysShort: 'ned._pon._uto._sre._čet._pet._sub.'.split('_'),\n weekdaysMin: 'ne_po_ut_sr_če_pe_su'.split('_'),\n weekdaysParseExact: true,\n longDateFormat: {\n LT: 'H:mm',\n LTS: 'H:mm:ss',\n L: 'D. M. YYYY.',\n LL: 'D. MMMM YYYY.',\n LLL: 'D. MMMM YYYY. H:mm',\n LLLL: 'dddd, D. MMMM YYYY. H:mm',\n },\n calendar: {\n sameDay: '[danas u] LT',\n nextDay: '[sutra u] LT',\n nextWeek: function () {\n switch (this.day()) {\n case 0:\n return '[u] [nedelju] [u] LT';\n case 3:\n return '[u] [sredu] [u] LT';\n case 6:\n return '[u] [subotu] [u] LT';\n case 1:\n case 2:\n case 4:\n case 5:\n return '[u] dddd [u] LT';\n }\n },\n lastDay: '[juče u] LT',\n lastWeek: function () {\n var lastWeekDays = [\n '[prošle] [nedelje] [u] LT',\n '[prošlog] [ponedeljka] [u] LT',\n '[prošlog] [utorka] [u] LT',\n '[prošle] [srede] [u] LT',\n '[prošlog] [četvrtka] [u] LT',\n '[prošlog] [petka] [u] LT',\n '[prošle] [subote] [u] LT',\n ];\n return lastWeekDays[this.day()];\n },\n sameElse: 'L',\n },\n relativeTime: {\n future: 'za %s',\n past: 'pre %s',\n s: 'nekoliko sekundi',\n ss: translator.translate,\n m: translator.translate,\n mm: translator.translate,\n h: translator.translate,\n hh: translator.translate,\n d: 'dan',\n dd: translator.translate,\n M: 'mesec',\n MM: translator.translate,\n y: 'godinu',\n yy: translator.translate,\n },\n dayOfMonthOrdinalParse: /\\d{1,2}\\./,\n ordinal: '%d.',\n week: {\n dow: 1, // Monday is the first day of the week.\n doy: 7, // The week that contains Jan 7th is the first week of the year.\n },\n });\n\n return sr;\n\n})));\n\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./~/moment/locale/sr.js\n// module id = 412\n// module chunks = 0 1 2 3 5 6 160","//! moment.js locale configuration\n//! locale : siSwati [ss]\n//! author : Nicolai Davies : https://github.com/nicolaidavies\n\n;(function (global, factory) {\n typeof exports === 'object' && typeof module !== 'undefined'\n && typeof require === 'function' ? factory(require('../moment')) :\n typeof define === 'function' && define.amd ? define(['../moment'], factory) :\n factory(global.moment)\n}(this, (function (moment) { 'use strict';\n\n //! moment.js locale configuration\n\n var ss = moment.defineLocale('ss', {\n months: \"Bhimbidvwane_Indlovana_Indlov'lenkhulu_Mabasa_Inkhwekhweti_Inhlaba_Kholwane_Ingci_Inyoni_Imphala_Lweti_Ingongoni\".split(\n '_'\n ),\n monthsShort: 'Bhi_Ina_Inu_Mab_Ink_Inh_Kho_Igc_Iny_Imp_Lwe_Igo'.split('_'),\n weekdays: 'Lisontfo_Umsombuluko_Lesibili_Lesitsatfu_Lesine_Lesihlanu_Umgcibelo'.split(\n '_'\n ),\n weekdaysShort: 'Lis_Umb_Lsb_Les_Lsi_Lsh_Umg'.split('_'),\n weekdaysMin: 'Li_Us_Lb_Lt_Ls_Lh_Ug'.split('_'),\n weekdaysParseExact: true,\n longDateFormat: {\n LT: 'h:mm A',\n LTS: 'h:mm:ss A',\n L: 'DD/MM/YYYY',\n LL: 'D MMMM YYYY',\n LLL: 'D MMMM YYYY h:mm A',\n LLLL: 'dddd, D MMMM YYYY h:mm A',\n },\n calendar: {\n sameDay: '[Namuhla nga] LT',\n nextDay: '[Kusasa nga] LT',\n nextWeek: 'dddd [nga] LT',\n lastDay: '[Itolo nga] LT',\n lastWeek: 'dddd [leliphelile] [nga] LT',\n sameElse: 'L',\n },\n relativeTime: {\n future: 'nga %s',\n past: 'wenteka nga %s',\n s: 'emizuzwana lomcane',\n ss: '%d mzuzwana',\n m: 'umzuzu',\n mm: '%d emizuzu',\n h: 'lihora',\n hh: '%d emahora',\n d: 'lilanga',\n dd: '%d emalanga',\n M: 'inyanga',\n MM: '%d tinyanga',\n y: 'umnyaka',\n yy: '%d iminyaka',\n },\n meridiemParse: /ekuseni|emini|entsambama|ebusuku/,\n meridiem: function (hours, minutes, isLower) {\n if (hours < 11) {\n return 'ekuseni';\n } else if (hours < 15) {\n return 'emini';\n } else if (hours < 19) {\n return 'entsambama';\n } else {\n return 'ebusuku';\n }\n },\n meridiemHour: function (hour, meridiem) {\n if (hour === 12) {\n hour = 0;\n }\n if (meridiem === 'ekuseni') {\n return hour;\n } else if (meridiem === 'emini') {\n return hour >= 11 ? hour : hour + 12;\n } else if (meridiem === 'entsambama' || meridiem === 'ebusuku') {\n if (hour === 0) {\n return 0;\n }\n return hour + 12;\n }\n },\n dayOfMonthOrdinalParse: /\\d{1,2}/,\n ordinal: '%d',\n week: {\n dow: 1, // Monday is the first day of the week.\n doy: 4, // The week that contains Jan 4th is the first week of the year.\n },\n });\n\n return ss;\n\n})));\n\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./~/moment/locale/ss.js\n// module id = 413\n// module chunks = 0 1 2 3 5 6 160","//! moment.js locale configuration\n//! locale : Swedish [sv]\n//! author : Jens Alm : https://github.com/ulmus\n\n;(function (global, factory) {\n typeof exports === 'object' && typeof module !== 'undefined'\n && typeof require === 'function' ? factory(require('../moment')) :\n typeof define === 'function' && define.amd ? define(['../moment'], factory) :\n factory(global.moment)\n}(this, (function (moment) { 'use strict';\n\n //! moment.js locale configuration\n\n var sv = moment.defineLocale('sv', {\n months: 'januari_februari_mars_april_maj_juni_juli_augusti_september_oktober_november_december'.split(\n '_'\n ),\n monthsShort: 'jan_feb_mar_apr_maj_jun_jul_aug_sep_okt_nov_dec'.split('_'),\n weekdays: 'söndag_måndag_tisdag_onsdag_torsdag_fredag_lördag'.split('_'),\n weekdaysShort: 'sön_mån_tis_ons_tor_fre_lör'.split('_'),\n weekdaysMin: 'sö_må_ti_on_to_fr_lö'.split('_'),\n longDateFormat: {\n LT: 'HH:mm',\n LTS: 'HH:mm:ss',\n L: 'YYYY-MM-DD',\n LL: 'D MMMM YYYY',\n LLL: 'D MMMM YYYY [kl.] HH:mm',\n LLLL: 'dddd D MMMM YYYY [kl.] HH:mm',\n lll: 'D MMM YYYY HH:mm',\n llll: 'ddd D MMM YYYY HH:mm',\n },\n calendar: {\n sameDay: '[Idag] LT',\n nextDay: '[Imorgon] LT',\n lastDay: '[Igår] LT',\n nextWeek: '[På] dddd LT',\n lastWeek: '[I] dddd[s] LT',\n sameElse: 'L',\n },\n relativeTime: {\n future: 'om %s',\n past: 'för %s sedan',\n s: 'några sekunder',\n ss: '%d sekunder',\n m: 'en minut',\n mm: '%d minuter',\n h: 'en timme',\n hh: '%d timmar',\n d: 'en dag',\n dd: '%d dagar',\n M: 'en månad',\n MM: '%d månader',\n y: 'ett år',\n yy: '%d år',\n },\n dayOfMonthOrdinalParse: /\\d{1,2}(\\:e|\\:a)/,\n ordinal: function (number) {\n var b = number % 10,\n output =\n ~~((number % 100) / 10) === 1\n ? ':e'\n : b === 1\n ? ':a'\n : b === 2\n ? ':a'\n : b === 3\n ? ':e'\n : ':e';\n return number + output;\n },\n week: {\n dow: 1, // Monday is the first day of the week.\n doy: 4, // The week that contains Jan 4th is the first week of the year.\n },\n });\n\n return sv;\n\n})));\n\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./~/moment/locale/sv.js\n// module id = 414\n// module chunks = 0 1 2 3 5 6 160","//! moment.js locale configuration\n//! locale : Swahili [sw]\n//! author : Fahad Kassim : https://github.com/fadsel\n\n;(function (global, factory) {\n typeof exports === 'object' && typeof module !== 'undefined'\n && typeof require === 'function' ? factory(require('../moment')) :\n typeof define === 'function' && define.amd ? define(['../moment'], factory) :\n factory(global.moment)\n}(this, (function (moment) { 'use strict';\n\n //! moment.js locale configuration\n\n var sw = moment.defineLocale('sw', {\n months: 'Januari_Februari_Machi_Aprili_Mei_Juni_Julai_Agosti_Septemba_Oktoba_Novemba_Desemba'.split(\n '_'\n ),\n monthsShort: 'Jan_Feb_Mac_Apr_Mei_Jun_Jul_Ago_Sep_Okt_Nov_Des'.split('_'),\n weekdays: 'Jumapili_Jumatatu_Jumanne_Jumatano_Alhamisi_Ijumaa_Jumamosi'.split(\n '_'\n ),\n weekdaysShort: 'Jpl_Jtat_Jnne_Jtan_Alh_Ijm_Jmos'.split('_'),\n weekdaysMin: 'J2_J3_J4_J5_Al_Ij_J1'.split('_'),\n weekdaysParseExact: true,\n longDateFormat: {\n LT: 'hh:mm A',\n LTS: 'HH:mm:ss',\n L: 'DD.MM.YYYY',\n LL: 'D MMMM YYYY',\n LLL: 'D MMMM YYYY HH:mm',\n LLLL: 'dddd, D MMMM YYYY HH:mm',\n },\n calendar: {\n sameDay: '[leo saa] LT',\n nextDay: '[kesho saa] LT',\n nextWeek: '[wiki ijayo] dddd [saat] LT',\n lastDay: '[jana] LT',\n lastWeek: '[wiki iliyopita] dddd [saat] LT',\n sameElse: 'L',\n },\n relativeTime: {\n future: '%s baadaye',\n past: 'tokea %s',\n s: 'hivi punde',\n ss: 'sekunde %d',\n m: 'dakika moja',\n mm: 'dakika %d',\n h: 'saa limoja',\n hh: 'masaa %d',\n d: 'siku moja',\n dd: 'siku %d',\n M: 'mwezi mmoja',\n MM: 'miezi %d',\n y: 'mwaka mmoja',\n yy: 'miaka %d',\n },\n week: {\n dow: 1, // Monday is the first day of the week.\n doy: 7, // The week that contains Jan 7th is the first week of the year.\n },\n });\n\n return sw;\n\n})));\n\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./~/moment/locale/sw.js\n// module id = 415\n// module chunks = 0 1 2 3 5 6 160","//! moment.js locale configuration\n//! locale : Tamil [ta]\n//! author : Arjunkumar Krishnamoorthy : https://github.com/tk120404\n\n;(function (global, factory) {\n typeof exports === 'object' && typeof module !== 'undefined'\n && typeof require === 'function' ? factory(require('../moment')) :\n typeof define === 'function' && define.amd ? define(['../moment'], factory) :\n factory(global.moment)\n}(this, (function (moment) { 'use strict';\n\n //! moment.js locale configuration\n\n var symbolMap = {\n 1: '௧',\n 2: '௨',\n 3: '௩',\n 4: '௪',\n 5: '௫',\n 6: '௬',\n 7: '௭',\n 8: '௮',\n 9: '௯',\n 0: '௦',\n },\n numberMap = {\n '௧': '1',\n '௨': '2',\n '௩': '3',\n '௪': '4',\n '௫': '5',\n '௬': '6',\n '௭': '7',\n '௮': '8',\n '௯': '9',\n '௦': '0',\n };\n\n var ta = moment.defineLocale('ta', {\n months: 'ஜனவரி_பிப்ரவரி_மார்ச்_ஏப்ரல்_மே_ஜூன்_ஜூலை_ஆகஸ்ட்_செப்டெம்பர்_அக்டோபர்_நவம்பர்_டிசம்பர்'.split(\n '_'\n ),\n monthsShort: 'ஜனவரி_பிப்ரவரி_மார்ச்_ஏப்ரல்_மே_ஜூன்_ஜூலை_ஆகஸ்ட்_செப்டெம்பர்_அக்டோபர்_நவம்பர்_டிசம்பர்'.split(\n '_'\n ),\n weekdays: 'ஞாயிற்றுக்கிழமை_திங்கட்கிழமை_செவ்வாய்கிழமை_புதன்கிழமை_வியாழக்கிழமை_வெள்ளிக்கிழமை_சனிக்கிழமை'.split(\n '_'\n ),\n weekdaysShort: 'ஞாயிறு_திங்கள்_செவ்வாய்_புதன்_வியாழன்_வெள்ளி_சனி'.split(\n '_'\n ),\n weekdaysMin: 'ஞா_தி_செ_பு_வி_வெ_ச'.split('_'),\n longDateFormat: {\n LT: 'HH:mm',\n LTS: 'HH:mm:ss',\n L: 'DD/MM/YYYY',\n LL: 'D MMMM YYYY',\n LLL: 'D MMMM YYYY, HH:mm',\n LLLL: 'dddd, D MMMM YYYY, HH:mm',\n },\n calendar: {\n sameDay: '[இன்று] LT',\n nextDay: '[நாளை] LT',\n nextWeek: 'dddd, LT',\n lastDay: '[நேற்று] LT',\n lastWeek: '[கடந்த வாரம்] dddd, LT',\n sameElse: 'L',\n },\n relativeTime: {\n future: '%s இல்',\n past: '%s முன்',\n s: 'ஒரு சில விநாடிகள்',\n ss: '%d விநாடிகள்',\n m: 'ஒரு நிமிடம்',\n mm: '%d நிமிடங்கள்',\n h: 'ஒரு மணி நேரம்',\n hh: '%d மணி நேரம்',\n d: 'ஒரு நாள்',\n dd: '%d நாட்கள்',\n M: 'ஒரு மாதம்',\n MM: '%d மாதங்கள்',\n y: 'ஒரு வருடம்',\n yy: '%d ஆண்டுகள்',\n },\n dayOfMonthOrdinalParse: /\\d{1,2}வது/,\n ordinal: function (number) {\n return number + 'வது';\n },\n preparse: function (string) {\n return string.replace(/[௧௨௩௪௫௬௭௮௯௦]/g, function (match) {\n return numberMap[match];\n });\n },\n postformat: function (string) {\n return string.replace(/\\d/g, function (match) {\n return symbolMap[match];\n });\n },\n // refer http://ta.wikipedia.org/s/1er1\n meridiemParse: /யாமம்|வைகறை|காலை|நண்பகல்|எற்பாடு|மாலை/,\n meridiem: function (hour, minute, isLower) {\n if (hour < 2) {\n return ' யாமம்';\n } else if (hour < 6) {\n return ' வைகறை'; // வைகறை\n } else if (hour < 10) {\n return ' காலை'; // காலை\n } else if (hour < 14) {\n return ' நண்பகல்'; // நண்பகல்\n } else if (hour < 18) {\n return ' எற்பாடு'; // எற்பாடு\n } else if (hour < 22) {\n return ' மாலை'; // மாலை\n } else {\n return ' யாமம்';\n }\n },\n meridiemHour: function (hour, meridiem) {\n if (hour === 12) {\n hour = 0;\n }\n if (meridiem === 'யாமம்') {\n return hour < 2 ? hour : hour + 12;\n } else if (meridiem === 'வைகறை' || meridiem === 'காலை') {\n return hour;\n } else if (meridiem === 'நண்பகல்') {\n return hour >= 10 ? hour : hour + 12;\n } else {\n return hour + 12;\n }\n },\n week: {\n dow: 0, // Sunday is the first day of the week.\n doy: 6, // The week that contains Jan 6th is the first week of the year.\n },\n });\n\n return ta;\n\n})));\n\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./~/moment/locale/ta.js\n// module id = 416\n// module chunks = 0 1 2 3 5 6 160","//! moment.js locale configuration\n//! locale : Telugu [te]\n//! author : Krishna Chaitanya Thota : https://github.com/kcthota\n\n;(function (global, factory) {\n typeof exports === 'object' && typeof module !== 'undefined'\n && typeof require === 'function' ? factory(require('../moment')) :\n typeof define === 'function' && define.amd ? define(['../moment'], factory) :\n factory(global.moment)\n}(this, (function (moment) { 'use strict';\n\n //! moment.js locale configuration\n\n var te = moment.defineLocale('te', {\n months: 'జనవరి_ఫిబ్రవరి_మార్చి_ఏప్రిల్_మే_జూన్_జులై_ఆగస్టు_సెప్టెంబర్_అక్టోబర్_నవంబర్_డిసెంబర్'.split(\n '_'\n ),\n monthsShort: 'జన._ఫిబ్ర._మార్చి_ఏప్రి._మే_జూన్_జులై_ఆగ._సెప్._అక్టో._నవ._డిసె.'.split(\n '_'\n ),\n monthsParseExact: true,\n weekdays: 'ఆదివారం_సోమవారం_మంగళవారం_బుధవారం_గురువారం_శుక్రవారం_శనివారం'.split(\n '_'\n ),\n weekdaysShort: 'ఆది_సోమ_మంగళ_బుధ_గురు_శుక్ర_శని'.split('_'),\n weekdaysMin: 'ఆ_సో_మం_బు_గు_శు_శ'.split('_'),\n longDateFormat: {\n LT: 'A h:mm',\n LTS: 'A h:mm:ss',\n L: 'DD/MM/YYYY',\n LL: 'D MMMM YYYY',\n LLL: 'D MMMM YYYY, A h:mm',\n LLLL: 'dddd, D MMMM YYYY, A h:mm',\n },\n calendar: {\n sameDay: '[నేడు] LT',\n nextDay: '[రేపు] LT',\n nextWeek: 'dddd, LT',\n lastDay: '[నిన్న] LT',\n lastWeek: '[గత] dddd, LT',\n sameElse: 'L',\n },\n relativeTime: {\n future: '%s లో',\n past: '%s క్రితం',\n s: 'కొన్ని క్షణాలు',\n ss: '%d సెకన్లు',\n m: 'ఒక నిమిషం',\n mm: '%d నిమిషాలు',\n h: 'ఒక గంట',\n hh: '%d గంటలు',\n d: 'ఒక రోజు',\n dd: '%d రోజులు',\n M: 'ఒక నెల',\n MM: '%d నెలలు',\n y: 'ఒక సంవత్సరం',\n yy: '%d సంవత్సరాలు',\n },\n dayOfMonthOrdinalParse: /\\d{1,2}వ/,\n ordinal: '%dవ',\n meridiemParse: /రాత్రి|ఉదయం|మధ్యాహ్నం|సాయంత్రం/,\n meridiemHour: function (hour, meridiem) {\n if (hour === 12) {\n hour = 0;\n }\n if (meridiem === 'రాత్రి') {\n return hour < 4 ? hour : hour + 12;\n } else if (meridiem === 'ఉదయం') {\n return hour;\n } else if (meridiem === 'మధ్యాహ్నం') {\n return hour >= 10 ? hour : hour + 12;\n } else if (meridiem === 'సాయంత్రం') {\n return hour + 12;\n }\n },\n meridiem: function (hour, minute, isLower) {\n if (hour < 4) {\n return 'రాత్రి';\n } else if (hour < 10) {\n return 'ఉదయం';\n } else if (hour < 17) {\n return 'మధ్యాహ్నం';\n } else if (hour < 20) {\n return 'సాయంత్రం';\n } else {\n return 'రాత్రి';\n }\n },\n week: {\n dow: 0, // Sunday is the first day of the week.\n doy: 6, // The week that contains Jan 6th is the first week of the year.\n },\n });\n\n return te;\n\n})));\n\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./~/moment/locale/te.js\n// module id = 417\n// module chunks = 0 1 2 3 5 6 160","//! moment.js locale configuration\n//! locale : Tetun Dili (East Timor) [tet]\n//! author : Joshua Brooks : https://github.com/joshbrooks\n//! author : Onorio De J. Afonso : https://github.com/marobo\n//! author : Sonia Simoes : https://github.com/soniasimoes\n\n;(function (global, factory) {\n typeof exports === 'object' && typeof module !== 'undefined'\n && typeof require === 'function' ? factory(require('../moment')) :\n typeof define === 'function' && define.amd ? define(['../moment'], factory) :\n factory(global.moment)\n}(this, (function (moment) { 'use strict';\n\n //! moment.js locale configuration\n\n var tet = moment.defineLocale('tet', {\n months: 'Janeiru_Fevereiru_Marsu_Abril_Maiu_Juñu_Jullu_Agustu_Setembru_Outubru_Novembru_Dezembru'.split(\n '_'\n ),\n monthsShort: 'Jan_Fev_Mar_Abr_Mai_Jun_Jul_Ago_Set_Out_Nov_Dez'.split('_'),\n weekdays: 'Domingu_Segunda_Tersa_Kuarta_Kinta_Sesta_Sabadu'.split('_'),\n weekdaysShort: 'Dom_Seg_Ters_Kua_Kint_Sest_Sab'.split('_'),\n weekdaysMin: 'Do_Seg_Te_Ku_Ki_Ses_Sa'.split('_'),\n longDateFormat: {\n LT: 'HH:mm',\n LTS: 'HH:mm:ss',\n L: 'DD/MM/YYYY',\n LL: 'D MMMM YYYY',\n LLL: 'D MMMM YYYY HH:mm',\n LLLL: 'dddd, D MMMM YYYY HH:mm',\n },\n calendar: {\n sameDay: '[Ohin iha] LT',\n nextDay: '[Aban iha] LT',\n nextWeek: 'dddd [iha] LT',\n lastDay: '[Horiseik iha] LT',\n lastWeek: 'dddd [semana kotuk] [iha] LT',\n sameElse: 'L',\n },\n relativeTime: {\n future: 'iha %s',\n past: '%s liuba',\n s: 'segundu balun',\n ss: 'segundu %d',\n m: 'minutu ida',\n mm: 'minutu %d',\n h: 'oras ida',\n hh: 'oras %d',\n d: 'loron ida',\n dd: 'loron %d',\n M: 'fulan ida',\n MM: 'fulan %d',\n y: 'tinan ida',\n yy: 'tinan %d',\n },\n dayOfMonthOrdinalParse: /\\d{1,2}(st|nd|rd|th)/,\n ordinal: function (number) {\n var b = number % 10,\n output =\n ~~((number % 100) / 10) === 1\n ? 'th'\n : b === 1\n ? 'st'\n : b === 2\n ? 'nd'\n : b === 3\n ? 'rd'\n : 'th';\n return number + output;\n },\n week: {\n dow: 1, // Monday is the first day of the week.\n doy: 4, // The week that contains Jan 4th is the first week of the year.\n },\n });\n\n return tet;\n\n})));\n\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./~/moment/locale/tet.js\n// module id = 418\n// module chunks = 0 1 2 3 5 6 160","//! moment.js locale configuration\n//! locale : Tajik [tg]\n//! author : Orif N. Jr. : https://github.com/orif-jr\n\n;(function (global, factory) {\n typeof exports === 'object' && typeof module !== 'undefined'\n && typeof require === 'function' ? factory(require('../moment')) :\n typeof define === 'function' && define.amd ? define(['../moment'], factory) :\n factory(global.moment)\n}(this, (function (moment) { 'use strict';\n\n //! moment.js locale configuration\n\n var suffixes = {\n 0: '-ум',\n 1: '-ум',\n 2: '-юм',\n 3: '-юм',\n 4: '-ум',\n 5: '-ум',\n 6: '-ум',\n 7: '-ум',\n 8: '-ум',\n 9: '-ум',\n 10: '-ум',\n 12: '-ум',\n 13: '-ум',\n 20: '-ум',\n 30: '-юм',\n 40: '-ум',\n 50: '-ум',\n 60: '-ум',\n 70: '-ум',\n 80: '-ум',\n 90: '-ум',\n 100: '-ум',\n };\n\n var tg = moment.defineLocale('tg', {\n months: {\n format: 'январи_феврали_марти_апрели_майи_июни_июли_августи_сентябри_октябри_ноябри_декабри'.split(\n '_'\n ),\n standalone: 'январ_феврал_март_апрел_май_июн_июл_август_сентябр_октябр_ноябр_декабр'.split(\n '_'\n ),\n },\n monthsShort: 'янв_фев_мар_апр_май_июн_июл_авг_сен_окт_ноя_дек'.split('_'),\n weekdays: 'якшанбе_душанбе_сешанбе_чоршанбе_панҷшанбе_ҷумъа_шанбе'.split(\n '_'\n ),\n weekdaysShort: 'яшб_дшб_сшб_чшб_пшб_ҷум_шнб'.split('_'),\n weekdaysMin: 'яш_дш_сш_чш_пш_ҷм_шб'.split('_'),\n longDateFormat: {\n LT: 'HH:mm',\n LTS: 'HH:mm:ss',\n L: 'DD.MM.YYYY',\n LL: 'D MMMM YYYY',\n LLL: 'D MMMM YYYY HH:mm',\n LLLL: 'dddd, D MMMM YYYY HH:mm',\n },\n calendar: {\n sameDay: '[Имрӯз соати] LT',\n nextDay: '[Фардо соати] LT',\n lastDay: '[Дирӯз соати] LT',\n nextWeek: 'dddd[и] [ҳафтаи оянда соати] LT',\n lastWeek: 'dddd[и] [ҳафтаи гузашта соати] LT',\n sameElse: 'L',\n },\n relativeTime: {\n future: 'баъди %s',\n past: '%s пеш',\n s: 'якчанд сония',\n m: 'як дақиқа',\n mm: '%d дақиқа',\n h: 'як соат',\n hh: '%d соат',\n d: 'як рӯз',\n dd: '%d рӯз',\n M: 'як моҳ',\n MM: '%d моҳ',\n y: 'як сол',\n yy: '%d сол',\n },\n meridiemParse: /шаб|субҳ|рӯз|бегоҳ/,\n meridiemHour: function (hour, meridiem) {\n if (hour === 12) {\n hour = 0;\n }\n if (meridiem === 'шаб') {\n return hour < 4 ? hour : hour + 12;\n } else if (meridiem === 'субҳ') {\n return hour;\n } else if (meridiem === 'рӯз') {\n return hour >= 11 ? hour : hour + 12;\n } else if (meridiem === 'бегоҳ') {\n return hour + 12;\n }\n },\n meridiem: function (hour, minute, isLower) {\n if (hour < 4) {\n return 'шаб';\n } else if (hour < 11) {\n return 'субҳ';\n } else if (hour < 16) {\n return 'рӯз';\n } else if (hour < 19) {\n return 'бегоҳ';\n } else {\n return 'шаб';\n }\n },\n dayOfMonthOrdinalParse: /\\d{1,2}-(ум|юм)/,\n ordinal: function (number) {\n var a = number % 10,\n b = number >= 100 ? 100 : null;\n return number + (suffixes[number] || suffixes[a] || suffixes[b]);\n },\n week: {\n dow: 1, // Monday is the first day of the week.\n doy: 7, // The week that contains Jan 1th is the first week of the year.\n },\n });\n\n return tg;\n\n})));\n\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./~/moment/locale/tg.js\n// module id = 419\n// module chunks = 0 1 2 3 5 6 160","//! moment.js locale configuration\n//! locale : Thai [th]\n//! author : Kridsada Thanabulpong : https://github.com/sirn\n\n;(function (global, factory) {\n typeof exports === 'object' && typeof module !== 'undefined'\n && typeof require === 'function' ? factory(require('../moment')) :\n typeof define === 'function' && define.amd ? define(['../moment'], factory) :\n factory(global.moment)\n}(this, (function (moment) { 'use strict';\n\n //! moment.js locale configuration\n\n var th = moment.defineLocale('th', {\n months: 'มกราคม_กุมภาพันธ์_มีนาคม_เมษายน_พฤษภาคม_มิถุนายน_กรกฎาคม_สิงหาคม_กันยายน_ตุลาคม_พฤศจิกายน_ธันวาคม'.split(\n '_'\n ),\n monthsShort: 'ม.ค._ก.พ._มี.ค._เม.ย._พ.ค._มิ.ย._ก.ค._ส.ค._ก.ย._ต.ค._พ.ย._ธ.ค.'.split(\n '_'\n ),\n monthsParseExact: true,\n weekdays: 'อาทิตย์_จันทร์_อังคาร_พุธ_พฤหัสบดี_ศุกร์_เสาร์'.split('_'),\n weekdaysShort: 'อาทิตย์_จันทร์_อังคาร_พุธ_พฤหัส_ศุกร์_เสาร์'.split('_'), // yes, three characters difference\n weekdaysMin: 'อา._จ._อ._พ._พฤ._ศ._ส.'.split('_'),\n weekdaysParseExact: true,\n longDateFormat: {\n LT: 'H:mm',\n LTS: 'H:mm:ss',\n L: 'DD/MM/YYYY',\n LL: 'D MMMM YYYY',\n LLL: 'D MMMM YYYY เวลา H:mm',\n LLLL: 'วันddddที่ D MMMM YYYY เวลา H:mm',\n },\n meridiemParse: /ก่อนเที่ยง|หลังเที่ยง/,\n isPM: function (input) {\n return input === 'หลังเที่ยง';\n },\n meridiem: function (hour, minute, isLower) {\n if (hour < 12) {\n return 'ก่อนเที่ยง';\n } else {\n return 'หลังเที่ยง';\n }\n },\n calendar: {\n sameDay: '[วันนี้ เวลา] LT',\n nextDay: '[พรุ่งนี้ เวลา] LT',\n nextWeek: 'dddd[หน้า เวลา] LT',\n lastDay: '[เมื่อวานนี้ เวลา] LT',\n lastWeek: '[วัน]dddd[ที่แล้ว เวลา] LT',\n sameElse: 'L',\n },\n relativeTime: {\n future: 'อีก %s',\n past: '%sที่แล้ว',\n s: 'ไม่กี่วินาที',\n ss: '%d วินาที',\n m: '1 นาที',\n mm: '%d นาที',\n h: '1 ชั่วโมง',\n hh: '%d ชั่วโมง',\n d: '1 วัน',\n dd: '%d วัน',\n w: '1 สัปดาห์',\n ww: '%d สัปดาห์',\n M: '1 เดือน',\n MM: '%d เดือน',\n y: '1 ปี',\n yy: '%d ปี',\n },\n });\n\n return th;\n\n})));\n\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./~/moment/locale/th.js\n// module id = 420\n// module chunks = 0 1 2 3 5 6 160","//! moment.js locale configuration\n//! locale : Turkmen [tk]\n//! author : Atamyrat Abdyrahmanov : https://github.com/atamyratabdy\n\n;(function (global, factory) {\n typeof exports === 'object' && typeof module !== 'undefined'\n && typeof require === 'function' ? factory(require('../moment')) :\n typeof define === 'function' && define.amd ? define(['../moment'], factory) :\n factory(global.moment)\n}(this, (function (moment) { 'use strict';\n\n //! moment.js locale configuration\n\n var suffixes = {\n 1: \"'inji\",\n 5: \"'inji\",\n 8: \"'inji\",\n 70: \"'inji\",\n 80: \"'inji\",\n 2: \"'nji\",\n 7: \"'nji\",\n 20: \"'nji\",\n 50: \"'nji\",\n 3: \"'ünji\",\n 4: \"'ünji\",\n 100: \"'ünji\",\n 6: \"'njy\",\n 9: \"'unjy\",\n 10: \"'unjy\",\n 30: \"'unjy\",\n 60: \"'ynjy\",\n 90: \"'ynjy\",\n };\n\n var tk = moment.defineLocale('tk', {\n months: 'Ýanwar_Fewral_Mart_Aprel_Maý_Iýun_Iýul_Awgust_Sentýabr_Oktýabr_Noýabr_Dekabr'.split(\n '_'\n ),\n monthsShort: 'Ýan_Few_Mar_Apr_Maý_Iýn_Iýl_Awg_Sen_Okt_Noý_Dek'.split('_'),\n weekdays: 'Ýekşenbe_Duşenbe_Sişenbe_Çarşenbe_Penşenbe_Anna_Şenbe'.split(\n '_'\n ),\n weekdaysShort: 'Ýek_Duş_Siş_Çar_Pen_Ann_Şen'.split('_'),\n weekdaysMin: 'Ýk_Dş_Sş_Çr_Pn_An_Şn'.split('_'),\n longDateFormat: {\n LT: 'HH:mm',\n LTS: 'HH:mm:ss',\n L: 'DD.MM.YYYY',\n LL: 'D MMMM YYYY',\n LLL: 'D MMMM YYYY HH:mm',\n LLLL: 'dddd, D MMMM YYYY HH:mm',\n },\n calendar: {\n sameDay: '[bugün sagat] LT',\n nextDay: '[ertir sagat] LT',\n nextWeek: '[indiki] dddd [sagat] LT',\n lastDay: '[düýn] LT',\n lastWeek: '[geçen] dddd [sagat] LT',\n sameElse: 'L',\n },\n relativeTime: {\n future: '%s soň',\n past: '%s öň',\n s: 'birnäçe sekunt',\n m: 'bir minut',\n mm: '%d minut',\n h: 'bir sagat',\n hh: '%d sagat',\n d: 'bir gün',\n dd: '%d gün',\n M: 'bir aý',\n MM: '%d aý',\n y: 'bir ýyl',\n yy: '%d ýyl',\n },\n ordinal: function (number, period) {\n switch (period) {\n case 'd':\n case 'D':\n case 'Do':\n case 'DD':\n return number;\n default:\n if (number === 0) {\n // special case for zero\n return number + \"'unjy\";\n }\n var a = number % 10,\n b = (number % 100) - a,\n c = number >= 100 ? 100 : null;\n return number + (suffixes[a] || suffixes[b] || suffixes[c]);\n }\n },\n week: {\n dow: 1, // Monday is the first day of the week.\n doy: 7, // The week that contains Jan 7th is the first week of the year.\n },\n });\n\n return tk;\n\n})));\n\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./~/moment/locale/tk.js\n// module id = 421\n// module chunks = 0 1 2 3 5 6 160","//! moment.js locale configuration\n//! locale : Tagalog (Philippines) [tl-ph]\n//! author : Dan Hagman : https://github.com/hagmandan\n\n;(function (global, factory) {\n typeof exports === 'object' && typeof module !== 'undefined'\n && typeof require === 'function' ? factory(require('../moment')) :\n typeof define === 'function' && define.amd ? define(['../moment'], factory) :\n factory(global.moment)\n}(this, (function (moment) { 'use strict';\n\n //! moment.js locale configuration\n\n var tlPh = moment.defineLocale('tl-ph', {\n months: 'Enero_Pebrero_Marso_Abril_Mayo_Hunyo_Hulyo_Agosto_Setyembre_Oktubre_Nobyembre_Disyembre'.split(\n '_'\n ),\n monthsShort: 'Ene_Peb_Mar_Abr_May_Hun_Hul_Ago_Set_Okt_Nob_Dis'.split('_'),\n weekdays: 'Linggo_Lunes_Martes_Miyerkules_Huwebes_Biyernes_Sabado'.split(\n '_'\n ),\n weekdaysShort: 'Lin_Lun_Mar_Miy_Huw_Biy_Sab'.split('_'),\n weekdaysMin: 'Li_Lu_Ma_Mi_Hu_Bi_Sab'.split('_'),\n longDateFormat: {\n LT: 'HH:mm',\n LTS: 'HH:mm:ss',\n L: 'MM/D/YYYY',\n LL: 'MMMM D, YYYY',\n LLL: 'MMMM D, YYYY HH:mm',\n LLLL: 'dddd, MMMM DD, YYYY HH:mm',\n },\n calendar: {\n sameDay: 'LT [ngayong araw]',\n nextDay: '[Bukas ng] LT',\n nextWeek: 'LT [sa susunod na] dddd',\n lastDay: 'LT [kahapon]',\n lastWeek: 'LT [noong nakaraang] dddd',\n sameElse: 'L',\n },\n relativeTime: {\n future: 'sa loob ng %s',\n past: '%s ang nakalipas',\n s: 'ilang segundo',\n ss: '%d segundo',\n m: 'isang minuto',\n mm: '%d minuto',\n h: 'isang oras',\n hh: '%d oras',\n d: 'isang araw',\n dd: '%d araw',\n M: 'isang buwan',\n MM: '%d buwan',\n y: 'isang taon',\n yy: '%d taon',\n },\n dayOfMonthOrdinalParse: /\\d{1,2}/,\n ordinal: function (number) {\n return number;\n },\n week: {\n dow: 1, // Monday is the first day of the week.\n doy: 4, // The week that contains Jan 4th is the first week of the year.\n },\n });\n\n return tlPh;\n\n})));\n\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./~/moment/locale/tl-ph.js\n// module id = 422\n// module chunks = 0 1 2 3 5 6 160","//! moment.js locale configuration\n//! locale : Klingon [tlh]\n//! author : Dominika Kruk : https://github.com/amaranthrose\n\n;(function (global, factory) {\n typeof exports === 'object' && typeof module !== 'undefined'\n && typeof require === 'function' ? factory(require('../moment')) :\n typeof define === 'function' && define.amd ? define(['../moment'], factory) :\n factory(global.moment)\n}(this, (function (moment) { 'use strict';\n\n //! moment.js locale configuration\n\n var numbersNouns = 'pagh_wa’_cha’_wej_loS_vagh_jav_Soch_chorgh_Hut'.split('_');\n\n function translateFuture(output) {\n var time = output;\n time =\n output.indexOf('jaj') !== -1\n ? time.slice(0, -3) + 'leS'\n : output.indexOf('jar') !== -1\n ? time.slice(0, -3) + 'waQ'\n : output.indexOf('DIS') !== -1\n ? time.slice(0, -3) + 'nem'\n : time + ' pIq';\n return time;\n }\n\n function translatePast(output) {\n var time = output;\n time =\n output.indexOf('jaj') !== -1\n ? time.slice(0, -3) + 'Hu’'\n : output.indexOf('jar') !== -1\n ? time.slice(0, -3) + 'wen'\n : output.indexOf('DIS') !== -1\n ? time.slice(0, -3) + 'ben'\n : time + ' ret';\n return time;\n }\n\n function translate(number, withoutSuffix, string, isFuture) {\n var numberNoun = numberAsNoun(number);\n switch (string) {\n case 'ss':\n return numberNoun + ' lup';\n case 'mm':\n return numberNoun + ' tup';\n case 'hh':\n return numberNoun + ' rep';\n case 'dd':\n return numberNoun + ' jaj';\n case 'MM':\n return numberNoun + ' jar';\n case 'yy':\n return numberNoun + ' DIS';\n }\n }\n\n function numberAsNoun(number) {\n var hundred = Math.floor((number % 1000) / 100),\n ten = Math.floor((number % 100) / 10),\n one = number % 10,\n word = '';\n if (hundred > 0) {\n word += numbersNouns[hundred] + 'vatlh';\n }\n if (ten > 0) {\n word += (word !== '' ? ' ' : '') + numbersNouns[ten] + 'maH';\n }\n if (one > 0) {\n word += (word !== '' ? ' ' : '') + numbersNouns[one];\n }\n return word === '' ? 'pagh' : word;\n }\n\n var tlh = moment.defineLocale('tlh', {\n months: 'tera’ jar wa’_tera’ jar cha’_tera’ jar wej_tera’ jar loS_tera’ jar vagh_tera’ jar jav_tera’ jar Soch_tera’ jar chorgh_tera’ jar Hut_tera’ jar wa’maH_tera’ jar wa’maH wa’_tera’ jar wa’maH cha’'.split(\n '_'\n ),\n monthsShort: 'jar wa’_jar cha’_jar wej_jar loS_jar vagh_jar jav_jar Soch_jar chorgh_jar Hut_jar wa’maH_jar wa’maH wa’_jar wa’maH cha’'.split(\n '_'\n ),\n monthsParseExact: true,\n weekdays: 'lojmItjaj_DaSjaj_povjaj_ghItlhjaj_loghjaj_buqjaj_ghInjaj'.split(\n '_'\n ),\n weekdaysShort: 'lojmItjaj_DaSjaj_povjaj_ghItlhjaj_loghjaj_buqjaj_ghInjaj'.split(\n '_'\n ),\n weekdaysMin: 'lojmItjaj_DaSjaj_povjaj_ghItlhjaj_loghjaj_buqjaj_ghInjaj'.split(\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: '[DaHjaj] LT',\n nextDay: '[wa’leS] LT',\n nextWeek: 'LLL',\n lastDay: '[wa’Hu’] LT',\n lastWeek: 'LLL',\n sameElse: 'L',\n },\n relativeTime: {\n future: translateFuture,\n past: translatePast,\n s: 'puS lup',\n ss: translate,\n m: 'wa’ tup',\n mm: translate,\n h: 'wa’ rep',\n hh: translate,\n d: 'wa’ jaj',\n dd: translate,\n M: 'wa’ jar',\n MM: translate,\n y: 'wa’ DIS',\n yy: translate,\n },\n dayOfMonthOrdinalParse: /\\d{1,2}\\./,\n ordinal: '%d.',\n week: {\n dow: 1, // Monday is the first day of the week.\n doy: 4, // The week that contains Jan 4th is the first week of the year.\n },\n });\n\n return tlh;\n\n})));\n\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./~/moment/locale/tlh.js\n// module id = 423\n// module chunks = 0 1 2 3 5 6 160","//! moment.js locale configuration\n//! locale : Turkish [tr]\n//! authors : Erhan Gundogan : https://github.com/erhangundogan,\n//! Burak Yiğit Kaya: https://github.com/BYK\n\n;(function (global, factory) {\n typeof exports === 'object' && typeof module !== 'undefined'\n && typeof require === 'function' ? factory(require('../moment')) :\n typeof define === 'function' && define.amd ? define(['../moment'], factory) :\n factory(global.moment)\n}(this, (function (moment) { 'use strict';\n\n //! moment.js locale configuration\n\n var suffixes = {\n 1: \"'inci\",\n 5: \"'inci\",\n 8: \"'inci\",\n 70: \"'inci\",\n 80: \"'inci\",\n 2: \"'nci\",\n 7: \"'nci\",\n 20: \"'nci\",\n 50: \"'nci\",\n 3: \"'üncü\",\n 4: \"'üncü\",\n 100: \"'üncü\",\n 6: \"'ncı\",\n 9: \"'uncu\",\n 10: \"'uncu\",\n 30: \"'uncu\",\n 60: \"'ıncı\",\n 90: \"'ıncı\",\n };\n\n var tr = moment.defineLocale('tr', {\n months: 'Ocak_Şubat_Mart_Nisan_Mayıs_Haziran_Temmuz_Ağustos_Eylül_Ekim_Kasım_Aralık'.split(\n '_'\n ),\n monthsShort: 'Oca_Şub_Mar_Nis_May_Haz_Tem_Ağu_Eyl_Eki_Kas_Ara'.split('_'),\n weekdays: 'Pazar_Pazartesi_Salı_Çarşamba_Perşembe_Cuma_Cumartesi'.split(\n '_'\n ),\n weekdaysShort: 'Paz_Pts_Sal_Çar_Per_Cum_Cts'.split('_'),\n weekdaysMin: 'Pz_Pt_Sa_Ça_Pe_Cu_Ct'.split('_'),\n meridiem: function (hours, minutes, isLower) {\n if (hours < 12) {\n return isLower ? 'öö' : 'ÖÖ';\n } else {\n return isLower ? 'ös' : 'ÖS';\n }\n },\n meridiemParse: /öö|ÖÖ|ös|ÖS/,\n isPM: function (input) {\n return input === 'ös' || input === 'ÖS';\n },\n longDateFormat: {\n LT: 'HH:mm',\n LTS: 'HH:mm:ss',\n L: 'DD.MM.YYYY',\n LL: 'D MMMM YYYY',\n LLL: 'D MMMM YYYY HH:mm',\n LLLL: 'dddd, D MMMM YYYY HH:mm',\n },\n calendar: {\n sameDay: '[bugün saat] LT',\n nextDay: '[yarın saat] LT',\n nextWeek: '[gelecek] dddd [saat] LT',\n lastDay: '[dün] LT',\n lastWeek: '[geçen] dddd [saat] LT',\n sameElse: 'L',\n },\n relativeTime: {\n future: '%s sonra',\n past: '%s önce',\n s: 'birkaç saniye',\n ss: '%d saniye',\n m: 'bir dakika',\n mm: '%d dakika',\n h: 'bir saat',\n hh: '%d saat',\n d: 'bir gün',\n dd: '%d gün',\n w: 'bir hafta',\n ww: '%d hafta',\n M: 'bir ay',\n MM: '%d ay',\n y: 'bir yıl',\n yy: '%d yıl',\n },\n ordinal: function (number, period) {\n switch (period) {\n case 'd':\n case 'D':\n case 'Do':\n case 'DD':\n return number;\n default:\n if (number === 0) {\n // special case for zero\n return number + \"'ıncı\";\n }\n var a = number % 10,\n b = (number % 100) - a,\n c = number >= 100 ? 100 : null;\n return number + (suffixes[a] || suffixes[b] || suffixes[c]);\n }\n },\n week: {\n dow: 1, // Monday is the first day of the week.\n doy: 7, // The week that contains Jan 7th is the first week of the year.\n },\n });\n\n return tr;\n\n})));\n\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./~/moment/locale/tr.js\n// module id = 424\n// module chunks = 0 1 2 3 5 6 160","//! moment.js locale configuration\n//! locale : Talossan [tzl]\n//! author : Robin van der Vliet : https://github.com/robin0van0der0v\n//! author : Iustì Canun\n\n;(function (global, factory) {\n typeof exports === 'object' && typeof module !== 'undefined'\n && typeof require === 'function' ? factory(require('../moment')) :\n typeof define === 'function' && define.amd ? define(['../moment'], factory) :\n factory(global.moment)\n}(this, (function (moment) { 'use strict';\n\n //! moment.js locale configuration\n\n // After the year there should be a slash and the amount of years since December 26, 1979 in Roman numerals.\n // This is currently too difficult (maybe even impossible) to add.\n var tzl = moment.defineLocale('tzl', {\n months: 'Januar_Fevraglh_Març_Avrïu_Mai_Gün_Julia_Guscht_Setemvar_Listopäts_Noemvar_Zecemvar'.split(\n '_'\n ),\n monthsShort: 'Jan_Fev_Mar_Avr_Mai_Gün_Jul_Gus_Set_Lis_Noe_Zec'.split('_'),\n weekdays: 'Súladi_Lúneçi_Maitzi_Márcuri_Xhúadi_Viénerçi_Sáturi'.split('_'),\n weekdaysShort: 'Súl_Lún_Mai_Már_Xhú_Vié_Sát'.split('_'),\n weekdaysMin: 'Sú_Lú_Ma_Má_Xh_Vi_Sá'.split('_'),\n longDateFormat: {\n LT: 'HH.mm',\n LTS: 'HH.mm.ss',\n L: 'DD.MM.YYYY',\n LL: 'D. MMMM [dallas] YYYY',\n LLL: 'D. MMMM [dallas] YYYY HH.mm',\n LLLL: 'dddd, [li] D. MMMM [dallas] YYYY HH.mm',\n },\n meridiemParse: /d\\'o|d\\'a/i,\n isPM: function (input) {\n return \"d'o\" === input.toLowerCase();\n },\n meridiem: function (hours, minutes, isLower) {\n if (hours > 11) {\n return isLower ? \"d'o\" : \"D'O\";\n } else {\n return isLower ? \"d'a\" : \"D'A\";\n }\n },\n calendar: {\n sameDay: '[oxhi à] LT',\n nextDay: '[demà à] LT',\n nextWeek: 'dddd [à] LT',\n lastDay: '[ieiri à] LT',\n lastWeek: '[sür el] dddd [lasteu à] LT',\n sameElse: 'L',\n },\n relativeTime: {\n future: 'osprei %s',\n past: 'ja%s',\n s: processRelativeTime,\n ss: processRelativeTime,\n m: processRelativeTime,\n mm: processRelativeTime,\n h: processRelativeTime,\n hh: processRelativeTime,\n d: processRelativeTime,\n dd: processRelativeTime,\n M: processRelativeTime,\n MM: processRelativeTime,\n y: processRelativeTime,\n yy: processRelativeTime,\n },\n dayOfMonthOrdinalParse: /\\d{1,2}\\./,\n ordinal: '%d.',\n week: {\n dow: 1, // Monday is the first day of the week.\n doy: 4, // The week that contains Jan 4th is the first week of the year.\n },\n });\n\n function processRelativeTime(number, withoutSuffix, key, isFuture) {\n var format = {\n s: ['viensas secunds', \"'iensas secunds\"],\n ss: [number + ' secunds', '' + number + ' secunds'],\n m: [\"'n míut\", \"'iens míut\"],\n mm: [number + ' míuts', '' + number + ' míuts'],\n h: [\"'n þora\", \"'iensa þora\"],\n hh: [number + ' þoras', '' + number + ' þoras'],\n d: [\"'n ziua\", \"'iensa ziua\"],\n dd: [number + ' ziuas', '' + number + ' ziuas'],\n M: [\"'n mes\", \"'iens mes\"],\n MM: [number + ' mesen', '' + number + ' mesen'],\n y: [\"'n ar\", \"'iens ar\"],\n yy: [number + ' ars', '' + number + ' ars'],\n };\n return isFuture\n ? format[key][0]\n : withoutSuffix\n ? format[key][0]\n : format[key][1];\n }\n\n return tzl;\n\n})));\n\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./~/moment/locale/tzl.js\n// module id = 425\n// module chunks = 0 1 2 3 5 6 160","//! moment.js locale configuration\n//! locale : Central Atlas Tamazight Latin [tzm-latn]\n//! author : Abdel Said : https://github.com/abdelsaid\n\n;(function (global, factory) {\n typeof exports === 'object' && typeof module !== 'undefined'\n && typeof require === 'function' ? factory(require('../moment')) :\n typeof define === 'function' && define.amd ? define(['../moment'], factory) :\n factory(global.moment)\n}(this, (function (moment) { 'use strict';\n\n //! moment.js locale configuration\n\n var tzmLatn = moment.defineLocale('tzm-latn', {\n months: 'innayr_brˤayrˤ_marˤsˤ_ibrir_mayyw_ywnyw_ywlywz_ɣwšt_šwtanbir_ktˤwbrˤ_nwwanbir_dwjnbir'.split(\n '_'\n ),\n monthsShort: 'innayr_brˤayrˤ_marˤsˤ_ibrir_mayyw_ywnyw_ywlywz_ɣwšt_šwtanbir_ktˤwbrˤ_nwwanbir_dwjnbir'.split(\n '_'\n ),\n weekdays: 'asamas_aynas_asinas_akras_akwas_asimwas_asiḍyas'.split('_'),\n weekdaysShort: 'asamas_aynas_asinas_akras_akwas_asimwas_asiḍyas'.split('_'),\n weekdaysMin: 'asamas_aynas_asinas_akras_akwas_asimwas_asiḍyas'.split('_'),\n longDateFormat: {\n LT: 'HH:mm',\n LTS: 'HH:mm:ss',\n L: 'DD/MM/YYYY',\n LL: 'D MMMM YYYY',\n LLL: 'D MMMM YYYY HH:mm',\n LLLL: 'dddd D MMMM YYYY HH:mm',\n },\n calendar: {\n sameDay: '[asdkh g] LT',\n nextDay: '[aska g] LT',\n nextWeek: 'dddd [g] LT',\n lastDay: '[assant g] LT',\n lastWeek: 'dddd [g] LT',\n sameElse: 'L',\n },\n relativeTime: {\n future: 'dadkh s yan %s',\n past: 'yan %s',\n s: 'imik',\n ss: '%d imik',\n m: 'minuḍ',\n mm: '%d minuḍ',\n h: 'saɛa',\n hh: '%d tassaɛin',\n d: 'ass',\n dd: '%d ossan',\n M: 'ayowr',\n MM: '%d iyyirn',\n y: 'asgas',\n yy: '%d isgasn',\n },\n week: {\n dow: 6, // Saturday is the first day of the week.\n doy: 12, // The week that contains Jan 12th is the first week of the year.\n },\n });\n\n return tzmLatn;\n\n})));\n\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./~/moment/locale/tzm-latn.js\n// module id = 426\n// module chunks = 0 1 2 3 5 6 160","//! moment.js locale configuration\n//! locale : Central Atlas Tamazight [tzm]\n//! author : Abdel Said : https://github.com/abdelsaid\n\n;(function (global, factory) {\n typeof exports === 'object' && typeof module !== 'undefined'\n && typeof require === 'function' ? factory(require('../moment')) :\n typeof define === 'function' && define.amd ? define(['../moment'], factory) :\n factory(global.moment)\n}(this, (function (moment) { 'use strict';\n\n //! moment.js locale configuration\n\n var tzm = moment.defineLocale('tzm', {\n months: 'ⵉⵏⵏⴰⵢⵔ_ⴱⵕⴰⵢⵕ_ⵎⴰⵕⵚ_ⵉⴱⵔⵉⵔ_ⵎⴰⵢⵢⵓ_ⵢⵓⵏⵢⵓ_ⵢⵓⵍⵢⵓⵣ_ⵖⵓⵛⵜ_ⵛⵓⵜⴰⵏⴱⵉⵔ_ⴽⵟⵓⴱⵕ_ⵏⵓⵡⴰⵏⴱⵉⵔ_ⴷⵓⵊⵏⴱⵉⵔ'.split(\n '_'\n ),\n monthsShort: 'ⵉⵏⵏⴰⵢⵔ_ⴱⵕⴰⵢⵕ_ⵎⴰⵕⵚ_ⵉⴱⵔⵉⵔ_ⵎⴰⵢⵢⵓ_ⵢⵓⵏⵢⵓ_ⵢⵓⵍⵢⵓⵣ_ⵖⵓⵛⵜ_ⵛⵓⵜⴰⵏⴱⵉⵔ_ⴽⵟⵓⴱⵕ_ⵏⵓⵡⴰⵏⴱⵉⵔ_ⴷⵓⵊⵏⴱⵉⵔ'.split(\n '_'\n ),\n weekdays: 'ⴰⵙⴰⵎⴰⵙ_ⴰⵢⵏⴰⵙ_ⴰⵙⵉⵏⴰⵙ_ⴰⴽⵔⴰⵙ_ⴰⴽⵡⴰⵙ_ⴰⵙⵉⵎⵡⴰⵙ_ⴰⵙⵉⴹⵢⴰⵙ'.split('_'),\n weekdaysShort: 'ⴰⵙⴰⵎⴰⵙ_ⴰⵢⵏⴰⵙ_ⴰⵙⵉⵏⴰⵙ_ⴰⴽⵔⴰⵙ_ⴰⴽⵡⴰⵙ_ⴰⵙⵉⵎⵡⴰⵙ_ⴰⵙⵉⴹⵢⴰⵙ'.split('_'),\n weekdaysMin: 'ⴰⵙⴰⵎⴰⵙ_ⴰⵢⵏⴰⵙ_ⴰⵙⵉⵏⴰⵙ_ⴰⴽⵔⴰⵙ_ⴰⴽⵡⴰⵙ_ⴰⵙⵉⵎⵡⴰⵙ_ⴰⵙⵉⴹⵢⴰⵙ'.split('_'),\n longDateFormat: {\n LT: 'HH:mm',\n LTS: 'HH:mm:ss',\n L: 'DD/MM/YYYY',\n LL: 'D MMMM YYYY',\n LLL: 'D MMMM YYYY HH:mm',\n LLLL: 'dddd D MMMM YYYY HH:mm',\n },\n calendar: {\n sameDay: '[ⴰⵙⴷⵅ ⴴ] LT',\n nextDay: '[ⴰⵙⴽⴰ ⴴ] LT',\n nextWeek: 'dddd [ⴴ] LT',\n lastDay: '[ⴰⵚⴰⵏⵜ ⴴ] LT',\n lastWeek: 'dddd [ⴴ] LT',\n sameElse: 'L',\n },\n relativeTime: {\n future: 'ⴷⴰⴷⵅ ⵙ ⵢⴰⵏ %s',\n past: 'ⵢⴰⵏ %s',\n s: 'ⵉⵎⵉⴽ',\n ss: '%d ⵉⵎⵉⴽ',\n m: 'ⵎⵉⵏⵓⴺ',\n mm: '%d ⵎⵉⵏⵓⴺ',\n h: 'ⵙⴰⵄⴰ',\n hh: '%d ⵜⴰⵙⵙⴰⵄⵉⵏ',\n d: 'ⴰⵙⵙ',\n dd: '%d oⵙⵙⴰⵏ',\n M: 'ⴰⵢoⵓⵔ',\n MM: '%d ⵉⵢⵢⵉⵔⵏ',\n y: 'ⴰⵙⴳⴰⵙ',\n yy: '%d ⵉⵙⴳⴰⵙⵏ',\n },\n week: {\n dow: 6, // Saturday is the first day of the week.\n doy: 12, // The week that contains Jan 12th is the first week of the year.\n },\n });\n\n return tzm;\n\n})));\n\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./~/moment/locale/tzm.js\n// module id = 427\n// module chunks = 0 1 2 3 5 6 160","//! moment.js locale configuration\n//! locale : Uyghur (China) [ug-cn]\n//! author: boyaq : https://github.com/boyaq\n\n;(function (global, factory) {\n typeof exports === 'object' && typeof module !== 'undefined'\n && typeof require === 'function' ? factory(require('../moment')) :\n typeof define === 'function' && define.amd ? define(['../moment'], factory) :\n factory(global.moment)\n}(this, (function (moment) { 'use strict';\n\n //! moment.js locale configuration\n\n var ugCn = moment.defineLocale('ug-cn', {\n months: 'يانۋار_فېۋرال_مارت_ئاپرېل_ماي_ئىيۇن_ئىيۇل_ئاۋغۇست_سېنتەبىر_ئۆكتەبىر_نويابىر_دېكابىر'.split(\n '_'\n ),\n monthsShort: 'يانۋار_فېۋرال_مارت_ئاپرېل_ماي_ئىيۇن_ئىيۇل_ئاۋغۇست_سېنتەبىر_ئۆكتەبىر_نويابىر_دېكابىر'.split(\n '_'\n ),\n weekdays: 'يەكشەنبە_دۈشەنبە_سەيشەنبە_چارشەنبە_پەيشەنبە_جۈمە_شەنبە'.split(\n '_'\n ),\n weekdaysShort: 'يە_دۈ_سە_چا_پە_جۈ_شە'.split('_'),\n weekdaysMin: 'يە_دۈ_سە_چا_پە_جۈ_شە'.split('_'),\n longDateFormat: {\n LT: 'HH:mm',\n LTS: 'HH:mm:ss',\n L: 'YYYY-MM-DD',\n LL: 'YYYY-يىلىM-ئاينىڭD-كۈنى',\n LLL: 'YYYY-يىلىM-ئاينىڭD-كۈنى، HH:mm',\n LLLL: 'dddd، YYYY-يىلىM-ئاينىڭD-كۈنى، HH:mm',\n },\n meridiemParse: /يېرىم كېچە|سەھەر|چۈشتىن بۇرۇن|چۈش|چۈشتىن كېيىن|كەچ/,\n meridiemHour: function (hour, meridiem) {\n if (hour === 12) {\n hour = 0;\n }\n if (\n meridiem === 'يېرىم كېچە' ||\n meridiem === 'سەھەر' ||\n meridiem === 'چۈشتىن بۇرۇن'\n ) {\n return hour;\n } else if (meridiem === 'چۈشتىن كېيىن' || meridiem === 'كەچ') {\n return hour + 12;\n } else {\n return hour >= 11 ? hour : hour + 12;\n }\n },\n meridiem: function (hour, minute, isLower) {\n var hm = hour * 100 + minute;\n if (hm < 600) {\n return 'يېرىم كېچە';\n } else if (hm < 900) {\n return 'سەھەر';\n } else if (hm < 1130) {\n return 'چۈشتىن بۇرۇن';\n } else if (hm < 1230) {\n return 'چۈش';\n } else if (hm < 1800) {\n return 'چۈشتىن كېيىن';\n } else {\n return 'كەچ';\n }\n },\n calendar: {\n sameDay: '[بۈگۈن سائەت] LT',\n nextDay: '[ئەتە سائەت] LT',\n nextWeek: '[كېلەركى] dddd [سائەت] LT',\n lastDay: '[تۆنۈگۈن] LT',\n lastWeek: '[ئالدىنقى] dddd [سائەت] LT',\n sameElse: 'L',\n },\n relativeTime: {\n future: '%s كېيىن',\n past: '%s بۇرۇن',\n s: 'نەچچە سېكونت',\n ss: '%d سېكونت',\n m: 'بىر مىنۇت',\n mm: '%d مىنۇت',\n h: 'بىر سائەت',\n hh: '%d سائەت',\n d: 'بىر كۈن',\n dd: '%d كۈن',\n M: 'بىر ئاي',\n MM: '%d ئاي',\n y: 'بىر يىل',\n yy: '%d يىل',\n },\n\n dayOfMonthOrdinalParse: /\\d{1,2}(-كۈنى|-ئاي|-ھەپتە)/,\n ordinal: function (number, period) {\n switch (period) {\n case 'd':\n case 'D':\n case 'DDD':\n return number + '-كۈنى';\n case 'w':\n case 'W':\n return number + '-ھەپتە';\n default:\n return number;\n }\n },\n preparse: function (string) {\n return string.replace(/،/g, ',');\n },\n postformat: function (string) {\n return string.replace(/,/g, '،');\n },\n week: {\n // GB/T 7408-1994《数据元和交换格式·信息交换·日期和时间表示法》与ISO 8601:1988等效\n dow: 1, // Monday is the first day of the week.\n doy: 7, // The week that contains Jan 1st is the first week of the year.\n },\n });\n\n return ugCn;\n\n})));\n\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./~/moment/locale/ug-cn.js\n// module id = 428\n// module chunks = 0 1 2 3 5 6 160","//! moment.js locale configuration\n//! locale : Ukrainian [uk]\n//! author : zemlanin : https://github.com/zemlanin\n//! Author : Menelion Elensúle : https://github.com/Oire\n\n;(function (global, factory) {\n typeof exports === 'object' && typeof module !== 'undefined'\n && typeof require === 'function' ? factory(require('../moment')) :\n typeof define === 'function' && define.amd ? define(['../moment'], factory) :\n factory(global.moment)\n}(this, (function (moment) { 'use strict';\n\n //! moment.js locale configuration\n\n function plural(word, num) {\n var forms = word.split('_');\n return num % 10 === 1 && num % 100 !== 11\n ? forms[0]\n : num % 10 >= 2 && num % 10 <= 4 && (num % 100 < 10 || num % 100 >= 20)\n ? forms[1]\n : forms[2];\n }\n function relativeTimeWithPlural(number, withoutSuffix, key) {\n var format = {\n ss: withoutSuffix ? 'секунда_секунди_секунд' : 'секунду_секунди_секунд',\n mm: withoutSuffix ? 'хвилина_хвилини_хвилин' : 'хвилину_хвилини_хвилин',\n hh: withoutSuffix ? 'година_години_годин' : 'годину_години_годин',\n dd: 'день_дні_днів',\n MM: 'місяць_місяці_місяців',\n yy: 'рік_роки_років',\n };\n if (key === 'm') {\n return withoutSuffix ? 'хвилина' : 'хвилину';\n } else if (key === 'h') {\n return withoutSuffix ? 'година' : 'годину';\n } else {\n return number + ' ' + plural(format[key], +number);\n }\n }\n function weekdaysCaseReplace(m, format) {\n var weekdays = {\n nominative: 'неділя_понеділок_вівторок_середа_четвер_п’ятниця_субота'.split(\n '_'\n ),\n accusative: 'неділю_понеділок_вівторок_середу_четвер_п’ятницю_суботу'.split(\n '_'\n ),\n genitive: 'неділі_понеділка_вівторка_середи_четверга_п’ятниці_суботи'.split(\n '_'\n ),\n },\n nounCase;\n\n if (m === true) {\n return weekdays['nominative']\n .slice(1, 7)\n .concat(weekdays['nominative'].slice(0, 1));\n }\n if (!m) {\n return weekdays['nominative'];\n }\n\n nounCase = /(\\[[ВвУу]\\]) ?dddd/.test(format)\n ? 'accusative'\n : /\\[?(?:минулої|наступної)? ?\\] ?dddd/.test(format)\n ? 'genitive'\n : 'nominative';\n return weekdays[nounCase][m.day()];\n }\n function processHoursFunction(str) {\n return function () {\n return str + 'о' + (this.hours() === 11 ? 'б' : '') + '] LT';\n };\n }\n\n var uk = moment.defineLocale('uk', {\n months: {\n format: 'січня_лютого_березня_квітня_травня_червня_липня_серпня_вересня_жовтня_листопада_грудня'.split(\n '_'\n ),\n standalone: 'січень_лютий_березень_квітень_травень_червень_липень_серпень_вересень_жовтень_листопад_грудень'.split(\n '_'\n ),\n },\n monthsShort: 'січ_лют_бер_квіт_трав_черв_лип_серп_вер_жовт_лист_груд'.split(\n '_'\n ),\n weekdays: weekdaysCaseReplace,\n weekdaysShort: 'нд_пн_вт_ср_чт_пт_сб'.split('_'),\n weekdaysMin: 'нд_пн_вт_ср_чт_пт_сб'.split('_'),\n longDateFormat: {\n LT: 'HH:mm',\n LTS: 'HH:mm:ss',\n L: 'DD.MM.YYYY',\n LL: 'D MMMM YYYY р.',\n LLL: 'D MMMM YYYY р., HH:mm',\n LLLL: 'dddd, D MMMM YYYY р., HH:mm',\n },\n calendar: {\n sameDay: processHoursFunction('[Сьогодні '),\n nextDay: processHoursFunction('[Завтра '),\n lastDay: processHoursFunction('[Вчора '),\n nextWeek: processHoursFunction('[У] dddd ['),\n lastWeek: function () {\n switch (this.day()) {\n case 0:\n case 3:\n case 5:\n case 6:\n return processHoursFunction('[Минулої] dddd [').call(this);\n case 1:\n case 2:\n case 4:\n return processHoursFunction('[Минулого] dddd [').call(this);\n }\n },\n sameElse: 'L',\n },\n relativeTime: {\n future: 'за %s',\n past: '%s тому',\n s: 'декілька секунд',\n ss: relativeTimeWithPlural,\n m: relativeTimeWithPlural,\n mm: relativeTimeWithPlural,\n h: 'годину',\n hh: relativeTimeWithPlural,\n d: 'день',\n dd: relativeTimeWithPlural,\n M: 'місяць',\n MM: relativeTimeWithPlural,\n y: 'рік',\n yy: relativeTimeWithPlural,\n },\n // M. E.: those two are virtually unused but a user might want to implement them for his/her website for some reason\n meridiemParse: /ночі|ранку|дня|вечора/,\n isPM: function (input) {\n return /^(дня|вечора)$/.test(input);\n },\n meridiem: function (hour, minute, isLower) {\n if (hour < 4) {\n return 'ночі';\n } else if (hour < 12) {\n return 'ранку';\n } else if (hour < 17) {\n return 'дня';\n } else {\n return 'вечора';\n }\n },\n dayOfMonthOrdinalParse: /\\d{1,2}-(й|го)/,\n ordinal: function (number, period) {\n switch (period) {\n case 'M':\n case 'd':\n case 'DDD':\n case 'w':\n case 'W':\n return number + '-й';\n case 'D':\n return number + '-го';\n default:\n return number;\n }\n },\n week: {\n dow: 1, // Monday is the first day of the week.\n doy: 7, // The week that contains Jan 7th is the first week of the year.\n },\n });\n\n return uk;\n\n})));\n\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./~/moment/locale/uk.js\n// module id = 429\n// module chunks = 0 1 2 3 5 6 160","//! moment.js locale configuration\n//! locale : Urdu [ur]\n//! author : Sawood Alam : https://github.com/ibnesayeed\n//! author : Zack : https://github.com/ZackVision\n\n;(function (global, factory) {\n typeof exports === 'object' && typeof module !== 'undefined'\n && typeof require === 'function' ? factory(require('../moment')) :\n typeof define === 'function' && define.amd ? define(['../moment'], factory) :\n factory(global.moment)\n}(this, (function (moment) { 'use strict';\n\n //! moment.js locale configuration\n\n var months = [\n 'جنوری',\n 'فروری',\n 'مارچ',\n 'اپریل',\n 'مئی',\n 'جون',\n 'جولائی',\n 'اگست',\n 'ستمبر',\n 'اکتوبر',\n 'نومبر',\n 'دسمبر',\n ],\n days = ['اتوار', 'پیر', 'منگل', 'بدھ', 'جمعرات', 'جمعہ', 'ہفتہ'];\n\n var ur = moment.defineLocale('ur', {\n months: months,\n monthsShort: months,\n weekdays: days,\n weekdaysShort: days,\n weekdaysMin: days,\n longDateFormat: {\n LT: 'HH:mm',\n LTS: 'HH:mm:ss',\n L: 'DD/MM/YYYY',\n LL: 'D MMMM YYYY',\n LLL: 'D MMMM YYYY HH:mm',\n LLLL: 'dddd، D MMMM YYYY HH:mm',\n },\n meridiemParse: /صبح|شام/,\n isPM: function (input) {\n return 'شام' === input;\n },\n meridiem: function (hour, minute, isLower) {\n if (hour < 12) {\n return 'صبح';\n }\n return 'شام';\n },\n calendar: {\n sameDay: '[آج بوقت] LT',\n nextDay: '[کل بوقت] LT',\n nextWeek: 'dddd [بوقت] LT',\n lastDay: '[گذشتہ روز بوقت] LT',\n lastWeek: '[گذشتہ] dddd [بوقت] LT',\n sameElse: 'L',\n },\n relativeTime: {\n future: '%s بعد',\n past: '%s قبل',\n s: 'چند سیکنڈ',\n ss: '%d سیکنڈ',\n m: 'ایک منٹ',\n mm: '%d منٹ',\n h: 'ایک گھنٹہ',\n hh: '%d گھنٹے',\n d: 'ایک دن',\n dd: '%d دن',\n M: 'ایک ماہ',\n MM: '%d ماہ',\n y: 'ایک سال',\n yy: '%d سال',\n },\n preparse: function (string) {\n return string.replace(/،/g, ',');\n },\n postformat: function (string) {\n return string.replace(/,/g, '،');\n },\n week: {\n dow: 1, // Monday is the first day of the week.\n doy: 4, // The week that contains Jan 4th is the first week of the year.\n },\n });\n\n return ur;\n\n})));\n\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./~/moment/locale/ur.js\n// module id = 430\n// module chunks = 0 1 2 3 5 6 160","//! moment.js locale configuration\n//! locale : Uzbek Latin [uz-latn]\n//! author : Rasulbek Mirzayev : github.com/Rasulbeeek\n\n;(function (global, factory) {\n typeof exports === 'object' && typeof module !== 'undefined'\n && typeof require === 'function' ? factory(require('../moment')) :\n typeof define === 'function' && define.amd ? define(['../moment'], factory) :\n factory(global.moment)\n}(this, (function (moment) { 'use strict';\n\n //! moment.js locale configuration\n\n var uzLatn = moment.defineLocale('uz-latn', {\n months: 'Yanvar_Fevral_Mart_Aprel_May_Iyun_Iyul_Avgust_Sentabr_Oktabr_Noyabr_Dekabr'.split(\n '_'\n ),\n monthsShort: 'Yan_Fev_Mar_Apr_May_Iyun_Iyul_Avg_Sen_Okt_Noy_Dek'.split('_'),\n weekdays: 'Yakshanba_Dushanba_Seshanba_Chorshanba_Payshanba_Juma_Shanba'.split(\n '_'\n ),\n weekdaysShort: 'Yak_Dush_Sesh_Chor_Pay_Jum_Shan'.split('_'),\n weekdaysMin: 'Ya_Du_Se_Cho_Pa_Ju_Sha'.split('_'),\n longDateFormat: {\n LT: 'HH:mm',\n LTS: 'HH:mm:ss',\n L: 'DD/MM/YYYY',\n LL: 'D MMMM YYYY',\n LLL: 'D MMMM YYYY HH:mm',\n LLLL: 'D MMMM YYYY, dddd HH:mm',\n },\n calendar: {\n sameDay: '[Bugun soat] LT [da]',\n nextDay: '[Ertaga] LT [da]',\n nextWeek: 'dddd [kuni soat] LT [da]',\n lastDay: '[Kecha soat] LT [da]',\n lastWeek: \"[O'tgan] dddd [kuni soat] LT [da]\",\n sameElse: 'L',\n },\n relativeTime: {\n future: 'Yaqin %s ichida',\n past: 'Bir necha %s oldin',\n s: 'soniya',\n ss: '%d soniya',\n m: 'bir daqiqa',\n mm: '%d daqiqa',\n h: 'bir soat',\n hh: '%d soat',\n d: 'bir kun',\n dd: '%d kun',\n M: 'bir oy',\n MM: '%d oy',\n y: 'bir yil',\n yy: '%d yil',\n },\n week: {\n dow: 1, // Monday is the first day of the week.\n doy: 7, // The week that contains Jan 7th is the first week of the year.\n },\n });\n\n return uzLatn;\n\n})));\n\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./~/moment/locale/uz-latn.js\n// module id = 431\n// module chunks = 0 1 2 3 5 6 160","//! moment.js locale configuration\n//! locale : Uzbek [uz]\n//! author : Sardor Muminov : https://github.com/muminoff\n\n;(function (global, factory) {\n typeof exports === 'object' && typeof module !== 'undefined'\n && typeof require === 'function' ? factory(require('../moment')) :\n typeof define === 'function' && define.amd ? define(['../moment'], factory) :\n factory(global.moment)\n}(this, (function (moment) { 'use strict';\n\n //! moment.js locale configuration\n\n var uz = moment.defineLocale('uz', {\n months: 'январ_феврал_март_апрел_май_июн_июл_август_сентябр_октябр_ноябр_декабр'.split(\n '_'\n ),\n monthsShort: 'янв_фев_мар_апр_май_июн_июл_авг_сен_окт_ноя_дек'.split('_'),\n weekdays: 'Якшанба_Душанба_Сешанба_Чоршанба_Пайшанба_Жума_Шанба'.split('_'),\n weekdaysShort: 'Якш_Душ_Сеш_Чор_Пай_Жум_Шан'.split('_'),\n weekdaysMin: 'Як_Ду_Се_Чо_Па_Жу_Ша'.split('_'),\n longDateFormat: {\n LT: 'HH:mm',\n LTS: 'HH:mm:ss',\n L: 'DD/MM/YYYY',\n LL: 'D MMMM YYYY',\n LLL: 'D MMMM YYYY HH:mm',\n LLLL: 'D MMMM YYYY, dddd HH:mm',\n },\n calendar: {\n sameDay: '[Бугун соат] LT [да]',\n nextDay: '[Эртага] LT [да]',\n nextWeek: 'dddd [куни соат] LT [да]',\n lastDay: '[Кеча соат] LT [да]',\n lastWeek: '[Утган] dddd [куни соат] LT [да]',\n sameElse: 'L',\n },\n relativeTime: {\n future: 'Якин %s ичида',\n past: 'Бир неча %s олдин',\n s: 'фурсат',\n ss: '%d фурсат',\n m: 'бир дакика',\n mm: '%d дакика',\n h: 'бир соат',\n hh: '%d соат',\n d: 'бир кун',\n dd: '%d кун',\n M: 'бир ой',\n MM: '%d ой',\n y: 'бир йил',\n yy: '%d йил',\n },\n week: {\n dow: 1, // Monday is the first day of the week.\n doy: 7, // The week that contains Jan 4th is the first week of the year.\n },\n });\n\n return uz;\n\n})));\n\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./~/moment/locale/uz.js\n// module id = 432\n// module chunks = 0 1 2 3 5 6 160","//! moment.js locale configuration\n//! locale : Vietnamese [vi]\n//! author : Bang Nguyen : https://github.com/bangnk\n//! author : Chien Kira : https://github.com/chienkira\n\n;(function (global, factory) {\n typeof exports === 'object' && typeof module !== 'undefined'\n && typeof require === 'function' ? factory(require('../moment')) :\n typeof define === 'function' && define.amd ? define(['../moment'], factory) :\n factory(global.moment)\n}(this, (function (moment) { 'use strict';\n\n //! moment.js locale configuration\n\n var vi = moment.defineLocale('vi', {\n months: 'tháng 1_tháng 2_tháng 3_tháng 4_tháng 5_tháng 6_tháng 7_tháng 8_tháng 9_tháng 10_tháng 11_tháng 12'.split(\n '_'\n ),\n monthsShort: 'Thg 01_Thg 02_Thg 03_Thg 04_Thg 05_Thg 06_Thg 07_Thg 08_Thg 09_Thg 10_Thg 11_Thg 12'.split(\n '_'\n ),\n monthsParseExact: true,\n weekdays: 'chủ nhật_thứ hai_thứ ba_thứ tư_thứ năm_thứ sáu_thứ bảy'.split(\n '_'\n ),\n weekdaysShort: 'CN_T2_T3_T4_T5_T6_T7'.split('_'),\n weekdaysMin: 'CN_T2_T3_T4_T5_T6_T7'.split('_'),\n weekdaysParseExact: true,\n meridiemParse: /sa|ch/i,\n isPM: function (input) {\n return /^ch$/i.test(input);\n },\n meridiem: function (hours, minutes, isLower) {\n if (hours < 12) {\n return isLower ? 'sa' : 'SA';\n } else {\n return isLower ? 'ch' : 'CH';\n }\n },\n longDateFormat: {\n LT: 'HH:mm',\n LTS: 'HH:mm:ss',\n L: 'DD/MM/YYYY',\n LL: 'D MMMM [năm] YYYY',\n LLL: 'D MMMM [năm] YYYY HH:mm',\n LLLL: 'dddd, D MMMM [năm] YYYY HH:mm',\n l: 'DD/M/YYYY',\n ll: 'D MMM YYYY',\n lll: 'D MMM YYYY HH:mm',\n llll: 'ddd, D MMM YYYY HH:mm',\n },\n calendar: {\n sameDay: '[Hôm nay lúc] LT',\n nextDay: '[Ngày mai lúc] LT',\n nextWeek: 'dddd [tuần tới lúc] LT',\n lastDay: '[Hôm qua lúc] LT',\n lastWeek: 'dddd [tuần trước lúc] LT',\n sameElse: 'L',\n },\n relativeTime: {\n future: '%s tới',\n past: '%s trước',\n s: 'vài giây',\n ss: '%d giây',\n m: 'một phút',\n mm: '%d phút',\n h: 'một giờ',\n hh: '%d giờ',\n d: 'một ngày',\n dd: '%d ngày',\n w: 'một tuần',\n ww: '%d tuần',\n M: 'một tháng',\n MM: '%d tháng',\n y: 'một năm',\n yy: '%d năm',\n },\n dayOfMonthOrdinalParse: /\\d{1,2}/,\n ordinal: function (number) {\n return number;\n },\n week: {\n dow: 1, // Monday is the first day of the week.\n doy: 4, // The week that contains Jan 4th is the first week of the year.\n },\n });\n\n return vi;\n\n})));\n\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./~/moment/locale/vi.js\n// module id = 433\n// module chunks = 0 1 2 3 5 6 160","//! moment.js locale configuration\n//! locale : Pseudo [x-pseudo]\n//! author : Andrew Hood : https://github.com/andrewhood125\n\n;(function (global, factory) {\n typeof exports === 'object' && typeof module !== 'undefined'\n && typeof require === 'function' ? factory(require('../moment')) :\n typeof define === 'function' && define.amd ? define(['../moment'], factory) :\n factory(global.moment)\n}(this, (function (moment) { 'use strict';\n\n //! moment.js locale configuration\n\n var xPseudo = moment.defineLocale('x-pseudo', {\n months: 'J~áñúá~rý_F~ébrú~árý_~Márc~h_Áp~ríl_~Máý_~Júñé~_Júl~ý_Áú~gúst~_Sép~témb~ér_Ó~ctób~ér_Ñ~óvém~bér_~Décé~mbér'.split(\n '_'\n ),\n monthsShort: 'J~áñ_~Féb_~Már_~Ápr_~Máý_~Júñ_~Júl_~Áúg_~Sép_~Óct_~Ñóv_~Déc'.split(\n '_'\n ),\n monthsParseExact: true,\n weekdays: 'S~úñdá~ý_Mó~ñdáý~_Túé~sdáý~_Wéd~ñésd~áý_T~húrs~dáý_~Fríd~áý_S~átúr~dáý'.split(\n '_'\n ),\n weekdaysShort: 'S~úñ_~Móñ_~Túé_~Wéd_~Thú_~Frí_~Sát'.split('_'),\n weekdaysMin: 'S~ú_Mó~_Tú_~Wé_T~h_Fr~_Sá'.split('_'),\n weekdaysParseExact: true,\n longDateFormat: {\n LT: 'HH:mm',\n L: 'DD/MM/YYYY',\n LL: 'D MMMM YYYY',\n LLL: 'D MMMM YYYY HH:mm',\n LLLL: 'dddd, D MMMM YYYY HH:mm',\n },\n calendar: {\n sameDay: '[T~ódá~ý át] LT',\n nextDay: '[T~ómó~rró~w át] LT',\n nextWeek: 'dddd [át] LT',\n lastDay: '[Ý~ést~érdá~ý át] LT',\n lastWeek: '[L~ást] dddd [át] LT',\n sameElse: 'L',\n },\n relativeTime: {\n future: 'í~ñ %s',\n past: '%s á~gó',\n s: 'á ~féw ~sécó~ñds',\n ss: '%d s~écóñ~ds',\n m: 'á ~míñ~úté',\n mm: '%d m~íñú~tés',\n h: 'á~ñ hó~úr',\n hh: '%d h~óúrs',\n d: 'á ~dáý',\n dd: '%d d~áýs',\n M: 'á ~móñ~th',\n MM: '%d m~óñt~hs',\n y: 'á ~ýéár',\n yy: '%d ý~éárs',\n },\n dayOfMonthOrdinalParse: /\\d{1,2}(th|st|nd|rd)/,\n ordinal: function (number) {\n var b = number % 10,\n output =\n ~~((number % 100) / 10) === 1\n ? 'th'\n : b === 1\n ? 'st'\n : b === 2\n ? 'nd'\n : b === 3\n ? 'rd'\n : 'th';\n return number + output;\n },\n week: {\n dow: 1, // Monday is the first day of the week.\n doy: 4, // The week that contains Jan 4th is the first week of the year.\n },\n });\n\n return xPseudo;\n\n})));\n\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./~/moment/locale/x-pseudo.js\n// module id = 434\n// module chunks = 0 1 2 3 5 6 160","//! moment.js locale configuration\n//! locale : Yoruba Nigeria [yo]\n//! author : Atolagbe Abisoye : https://github.com/andela-batolagbe\n\n;(function (global, factory) {\n typeof exports === 'object' && typeof module !== 'undefined'\n && typeof require === 'function' ? factory(require('../moment')) :\n typeof define === 'function' && define.amd ? define(['../moment'], factory) :\n factory(global.moment)\n}(this, (function (moment) { 'use strict';\n\n //! moment.js locale configuration\n\n var yo = moment.defineLocale('yo', {\n months: 'Sẹ́rẹ́_Èrèlè_Ẹrẹ̀nà_Ìgbé_Èbibi_Òkùdu_Agẹmo_Ògún_Owewe_Ọ̀wàrà_Bélú_Ọ̀pẹ̀̀'.split(\n '_'\n ),\n monthsShort: 'Sẹ́r_Èrl_Ẹrn_Ìgb_Èbi_Òkù_Agẹ_Ògú_Owe_Ọ̀wà_Bél_Ọ̀pẹ̀̀'.split('_'),\n weekdays: 'Àìkú_Ajé_Ìsẹ́gun_Ọjọ́rú_Ọjọ́bọ_Ẹtì_Àbámẹ́ta'.split('_'),\n weekdaysShort: 'Àìk_Ajé_Ìsẹ́_Ọjr_Ọjb_Ẹtì_Àbá'.split('_'),\n weekdaysMin: 'Àì_Aj_Ìs_Ọr_Ọb_Ẹt_À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: '[Ònì ni] LT',\n nextDay: '[Ọ̀la ni] LT',\n nextWeek: \"dddd [Ọsẹ̀ tón'bọ] [ni] LT\",\n lastDay: '[Àna ni] LT',\n lastWeek: 'dddd [Ọsẹ̀ tólọ́] [ni] LT',\n sameElse: 'L',\n },\n relativeTime: {\n future: 'ní %s',\n past: '%s kọjá',\n s: 'ìsẹjú aayá die',\n ss: 'aayá %d',\n m: 'ìsẹjú kan',\n mm: 'ìsẹjú %d',\n h: 'wákati kan',\n hh: 'wákati %d',\n d: 'ọjọ́ kan',\n dd: 'ọjọ́ %d',\n M: 'osù kan',\n MM: 'osù %d',\n y: 'ọdún kan',\n yy: 'ọdún %d',\n },\n dayOfMonthOrdinalParse: /ọjọ́\\s\\d{1,2}/,\n ordinal: 'ọjọ́ %d',\n week: {\n dow: 1, // Monday is the first day of the week.\n doy: 4, // The week that contains Jan 4th is the first week of the year.\n },\n });\n\n return yo;\n\n})));\n\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./~/moment/locale/yo.js\n// module id = 435\n// module chunks = 0 1 2 3 5 6 160","//! moment.js locale configuration\n//! locale : Chinese (China) [zh-cn]\n//! author : suupic : https://github.com/suupic\n//! author : Zeno Zeng : https://github.com/zenozeng\n//! author : uu109 : https://github.com/uu109\n\n;(function (global, factory) {\n typeof exports === 'object' && typeof module !== 'undefined'\n && typeof require === 'function' ? factory(require('../moment')) :\n typeof define === 'function' && define.amd ? define(['../moment'], factory) :\n factory(global.moment)\n}(this, (function (moment) { 'use strict';\n\n //! moment.js locale configuration\n\n var zhCn = moment.defineLocale('zh-cn', {\n months: '一月_二月_三月_四月_五月_六月_七月_八月_九月_十月_十一月_十二月'.split(\n '_'\n ),\n monthsShort: '1月_2月_3月_4月_5月_6月_7月_8月_9月_10月_11月_12月'.split(\n '_'\n ),\n weekdays: '星期日_星期一_星期二_星期三_星期四_星期五_星期六'.split('_'),\n weekdaysShort: '周日_周一_周二_周三_周四_周五_周六'.split('_'),\n weekdaysMin: '日_一_二_三_四_五_六'.split('_'),\n longDateFormat: {\n LT: 'HH:mm',\n LTS: 'HH:mm:ss',\n L: 'YYYY/MM/DD',\n LL: 'YYYY年M月D日',\n LLL: 'YYYY年M月D日Ah点mm分',\n LLLL: 'YYYY年M月D日ddddAh点mm分',\n l: 'YYYY/M/D',\n ll: 'YYYY年M月D日',\n lll: 'YYYY年M月D日 HH:mm',\n llll: 'YYYY年M月D日dddd HH:mm',\n },\n meridiemParse: /凌晨|早上|上午|中午|下午|晚上/,\n meridiemHour: function (hour, meridiem) {\n if (hour === 12) {\n hour = 0;\n }\n if (meridiem === '凌晨' || meridiem === '早上' || meridiem === '上午') {\n return hour;\n } else if (meridiem === '下午' || meridiem === '晚上') {\n return hour + 12;\n } else {\n // '中午'\n return hour >= 11 ? hour : hour + 12;\n }\n },\n meridiem: function (hour, minute, isLower) {\n var hm = hour * 100 + minute;\n if (hm < 600) {\n return '凌晨';\n } else if (hm < 900) {\n return '早上';\n } else if (hm < 1130) {\n return '上午';\n } else if (hm < 1230) {\n return '中午';\n } else if (hm < 1800) {\n return '下午';\n } else {\n return '晚上';\n }\n },\n calendar: {\n sameDay: '[今天]LT',\n nextDay: '[明天]LT',\n nextWeek: function (now) {\n if (now.week() !== this.week()) {\n return '[下]dddLT';\n } else {\n return '[本]dddLT';\n }\n },\n lastDay: '[昨天]LT',\n lastWeek: function (now) {\n if (this.week() !== now.week()) {\n return '[上]dddLT';\n } else {\n return '[本]dddLT';\n }\n },\n sameElse: 'L',\n },\n dayOfMonthOrdinalParse: /\\d{1,2}(日|月|周)/,\n ordinal: function (number, period) {\n switch (period) {\n case 'd':\n case 'D':\n case 'DDD':\n return number + '日';\n case 'M':\n return number + '月';\n case 'w':\n case 'W':\n return number + '周';\n default:\n return number;\n }\n },\n relativeTime: {\n future: '%s后',\n past: '%s前',\n s: '几秒',\n ss: '%d 秒',\n m: '1 分钟',\n mm: '%d 分钟',\n h: '1 小时',\n hh: '%d 小时',\n d: '1 天',\n dd: '%d 天',\n w: '1 周',\n ww: '%d 周',\n M: '1 个月',\n MM: '%d 个月',\n y: '1 年',\n yy: '%d 年',\n },\n week: {\n // GB/T 7408-1994《数据元和交换格式·信息交换·日期和时间表示法》与ISO 8601:1988等效\n dow: 1, // Monday is the first day of the week.\n doy: 4, // The week that contains Jan 4th is the first week of the year.\n },\n });\n\n return zhCn;\n\n})));\n\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./~/moment/locale/zh-cn.js\n// module id = 436\n// module chunks = 0 1 2 3 5 6 160","//! moment.js locale configuration\n//! locale : Chinese (Hong Kong) [zh-hk]\n//! author : Ben : https://github.com/ben-lin\n//! author : Chris Lam : https://github.com/hehachris\n//! author : Konstantin : https://github.com/skfd\n//! author : Anthony : https://github.com/anthonylau\n\n;(function (global, factory) {\n typeof exports === 'object' && typeof module !== 'undefined'\n && typeof require === 'function' ? factory(require('../moment')) :\n typeof define === 'function' && define.amd ? define(['../moment'], factory) :\n factory(global.moment)\n}(this, (function (moment) { 'use strict';\n\n //! moment.js locale configuration\n\n var zhHk = moment.defineLocale('zh-hk', {\n months: '一月_二月_三月_四月_五月_六月_七月_八月_九月_十月_十一月_十二月'.split(\n '_'\n ),\n monthsShort: '1月_2月_3月_4月_5月_6月_7月_8月_9月_10月_11月_12月'.split(\n '_'\n ),\n weekdays: '星期日_星期一_星期二_星期三_星期四_星期五_星期六'.split('_'),\n weekdaysShort: '週日_週一_週二_週三_週四_週五_週六'.split('_'),\n weekdaysMin: '日_一_二_三_四_五_六'.split('_'),\n longDateFormat: {\n LT: 'HH:mm',\n LTS: 'HH:mm:ss',\n L: 'YYYY/MM/DD',\n LL: 'YYYY年M月D日',\n LLL: 'YYYY年M月D日 HH:mm',\n LLLL: 'YYYY年M月D日dddd HH:mm',\n l: 'YYYY/M/D',\n ll: 'YYYY年M月D日',\n lll: 'YYYY年M月D日 HH:mm',\n llll: 'YYYY年M月D日dddd HH:mm',\n },\n meridiemParse: /凌晨|早上|上午|中午|下午|晚上/,\n meridiemHour: function (hour, meridiem) {\n if (hour === 12) {\n hour = 0;\n }\n if (meridiem === '凌晨' || meridiem === '早上' || meridiem === '上午') {\n return hour;\n } else if (meridiem === '中午') {\n return hour >= 11 ? hour : hour + 12;\n } else if (meridiem === '下午' || meridiem === '晚上') {\n return hour + 12;\n }\n },\n meridiem: function (hour, minute, isLower) {\n var hm = hour * 100 + minute;\n if (hm < 600) {\n return '凌晨';\n } else if (hm < 900) {\n return '早上';\n } else if (hm < 1200) {\n return '上午';\n } else if (hm === 1200) {\n return '中午';\n } else if (hm < 1800) {\n return '下午';\n } else {\n return '晚上';\n }\n },\n calendar: {\n sameDay: '[今天]LT',\n nextDay: '[明天]LT',\n nextWeek: '[下]ddddLT',\n lastDay: '[昨天]LT',\n lastWeek: '[上]ddddLT',\n sameElse: 'L',\n },\n dayOfMonthOrdinalParse: /\\d{1,2}(日|月|週)/,\n ordinal: function (number, period) {\n switch (period) {\n case 'd':\n case 'D':\n case 'DDD':\n return number + '日';\n case 'M':\n return number + '月';\n case 'w':\n case 'W':\n return number + '週';\n default:\n return number;\n }\n },\n relativeTime: {\n future: '%s後',\n past: '%s前',\n s: '幾秒',\n ss: '%d 秒',\n m: '1 分鐘',\n mm: '%d 分鐘',\n h: '1 小時',\n hh: '%d 小時',\n d: '1 天',\n dd: '%d 天',\n M: '1 個月',\n MM: '%d 個月',\n y: '1 年',\n yy: '%d 年',\n },\n });\n\n return zhHk;\n\n})));\n\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./~/moment/locale/zh-hk.js\n// module id = 437\n// module chunks = 0 1 2 3 5 6 160","//! moment.js locale configuration\n//! locale : Chinese (Macau) [zh-mo]\n//! author : Ben : https://github.com/ben-lin\n//! author : Chris Lam : https://github.com/hehachris\n//! author : Tan Yuanhong : https://github.com/le0tan\n\n;(function (global, factory) {\n typeof exports === 'object' && typeof module !== 'undefined'\n && typeof require === 'function' ? factory(require('../moment')) :\n typeof define === 'function' && define.amd ? define(['../moment'], factory) :\n factory(global.moment)\n}(this, (function (moment) { 'use strict';\n\n //! moment.js locale configuration\n\n var zhMo = moment.defineLocale('zh-mo', {\n months: '一月_二月_三月_四月_五月_六月_七月_八月_九月_十月_十一月_十二月'.split(\n '_'\n ),\n monthsShort: '1月_2月_3月_4月_5月_6月_7月_8月_9月_10月_11月_12月'.split(\n '_'\n ),\n weekdays: '星期日_星期一_星期二_星期三_星期四_星期五_星期六'.split('_'),\n weekdaysShort: '週日_週一_週二_週三_週四_週五_週六'.split('_'),\n weekdaysMin: '日_一_二_三_四_五_六'.split('_'),\n longDateFormat: {\n LT: 'HH:mm',\n LTS: 'HH:mm:ss',\n L: 'DD/MM/YYYY',\n LL: 'YYYY年M月D日',\n LLL: 'YYYY年M月D日 HH:mm',\n LLLL: 'YYYY年M月D日dddd HH:mm',\n l: 'D/M/YYYY',\n ll: 'YYYY年M月D日',\n lll: 'YYYY年M月D日 HH:mm',\n llll: 'YYYY年M月D日dddd HH:mm',\n },\n meridiemParse: /凌晨|早上|上午|中午|下午|晚上/,\n meridiemHour: function (hour, meridiem) {\n if (hour === 12) {\n hour = 0;\n }\n if (meridiem === '凌晨' || meridiem === '早上' || meridiem === '上午') {\n return hour;\n } else if (meridiem === '中午') {\n return hour >= 11 ? hour : hour + 12;\n } else if (meridiem === '下午' || meridiem === '晚上') {\n return hour + 12;\n }\n },\n meridiem: function (hour, minute, isLower) {\n var hm = hour * 100 + minute;\n if (hm < 600) {\n return '凌晨';\n } else if (hm < 900) {\n return '早上';\n } else if (hm < 1130) {\n return '上午';\n } else if (hm < 1230) {\n return '中午';\n } else if (hm < 1800) {\n return '下午';\n } else {\n return '晚上';\n }\n },\n calendar: {\n sameDay: '[今天] LT',\n nextDay: '[明天] LT',\n nextWeek: '[下]dddd LT',\n lastDay: '[昨天] LT',\n lastWeek: '[上]dddd LT',\n sameElse: 'L',\n },\n dayOfMonthOrdinalParse: /\\d{1,2}(日|月|週)/,\n ordinal: function (number, period) {\n switch (period) {\n case 'd':\n case 'D':\n case 'DDD':\n return number + '日';\n case 'M':\n return number + '月';\n case 'w':\n case 'W':\n return number + '週';\n default:\n return number;\n }\n },\n relativeTime: {\n future: '%s內',\n past: '%s前',\n s: '幾秒',\n ss: '%d 秒',\n m: '1 分鐘',\n mm: '%d 分鐘',\n h: '1 小時',\n hh: '%d 小時',\n d: '1 天',\n dd: '%d 天',\n M: '1 個月',\n MM: '%d 個月',\n y: '1 年',\n yy: '%d 年',\n },\n });\n\n return zhMo;\n\n})));\n\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./~/moment/locale/zh-mo.js\n// module id = 438\n// module chunks = 0 1 2 3 5 6 160","//! moment.js locale configuration\n//! locale : Chinese (Taiwan) [zh-tw]\n//! author : Ben : https://github.com/ben-lin\n//! author : Chris Lam : https://github.com/hehachris\n\n;(function (global, factory) {\n typeof exports === 'object' && typeof module !== 'undefined'\n && typeof require === 'function' ? factory(require('../moment')) :\n typeof define === 'function' && define.amd ? define(['../moment'], factory) :\n factory(global.moment)\n}(this, (function (moment) { 'use strict';\n\n //! moment.js locale configuration\n\n var zhTw = moment.defineLocale('zh-tw', {\n months: '一月_二月_三月_四月_五月_六月_七月_八月_九月_十月_十一月_十二月'.split(\n '_'\n ),\n monthsShort: '1月_2月_3月_4月_5月_6月_7月_8月_9月_10月_11月_12月'.split(\n '_'\n ),\n weekdays: '星期日_星期一_星期二_星期三_星期四_星期五_星期六'.split('_'),\n weekdaysShort: '週日_週一_週二_週三_週四_週五_週六'.split('_'),\n weekdaysMin: '日_一_二_三_四_五_六'.split('_'),\n longDateFormat: {\n LT: 'HH:mm',\n LTS: 'HH:mm:ss',\n L: 'YYYY/MM/DD',\n LL: 'YYYY年M月D日',\n LLL: 'YYYY年M月D日 HH:mm',\n LLLL: 'YYYY年M月D日dddd HH:mm',\n l: 'YYYY/M/D',\n ll: 'YYYY年M月D日',\n lll: 'YYYY年M月D日 HH:mm',\n llll: 'YYYY年M月D日dddd HH:mm',\n },\n meridiemParse: /凌晨|早上|上午|中午|下午|晚上/,\n meridiemHour: function (hour, meridiem) {\n if (hour === 12) {\n hour = 0;\n }\n if (meridiem === '凌晨' || meridiem === '早上' || meridiem === '上午') {\n return hour;\n } else if (meridiem === '中午') {\n return hour >= 11 ? hour : hour + 12;\n } else if (meridiem === '下午' || meridiem === '晚上') {\n return hour + 12;\n }\n },\n meridiem: function (hour, minute, isLower) {\n var hm = hour * 100 + minute;\n if (hm < 600) {\n return '凌晨';\n } else if (hm < 900) {\n return '早上';\n } else if (hm < 1130) {\n return '上午';\n } else if (hm < 1230) {\n return '中午';\n } else if (hm < 1800) {\n return '下午';\n } else {\n return '晚上';\n }\n },\n calendar: {\n sameDay: '[今天] LT',\n nextDay: '[明天] LT',\n nextWeek: '[下]dddd LT',\n lastDay: '[昨天] LT',\n lastWeek: '[上]dddd LT',\n sameElse: 'L',\n },\n dayOfMonthOrdinalParse: /\\d{1,2}(日|月|週)/,\n ordinal: function (number, period) {\n switch (period) {\n case 'd':\n case 'D':\n case 'DDD':\n return number + '日';\n case 'M':\n return number + '月';\n case 'w':\n case 'W':\n return number + '週';\n default:\n return number;\n }\n },\n relativeTime: {\n future: '%s後',\n past: '%s前',\n s: '幾秒',\n ss: '%d 秒',\n m: '1 分鐘',\n mm: '%d 分鐘',\n h: '1 小時',\n hh: '%d 小時',\n d: '1 天',\n dd: '%d 天',\n M: '1 個月',\n MM: '%d 個月',\n y: '1 年',\n yy: '%d 年',\n },\n });\n\n return zhTw;\n\n})));\n\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./~/moment/locale/zh-tw.js\n// module id = 439\n// module chunks = 0 1 2 3 5 6 160","var map = {\n\t\"./af\": 306,\n\t\"./af.js\": 306,\n\t\"./ar\": 313,\n\t\"./ar-dz\": 307,\n\t\"./ar-dz.js\": 307,\n\t\"./ar-kw\": 308,\n\t\"./ar-kw.js\": 308,\n\t\"./ar-ly\": 309,\n\t\"./ar-ly.js\": 309,\n\t\"./ar-ma\": 310,\n\t\"./ar-ma.js\": 310,\n\t\"./ar-sa\": 311,\n\t\"./ar-sa.js\": 311,\n\t\"./ar-tn\": 312,\n\t\"./ar-tn.js\": 312,\n\t\"./ar.js\": 313,\n\t\"./az\": 314,\n\t\"./az.js\": 314,\n\t\"./be\": 315,\n\t\"./be.js\": 315,\n\t\"./bg\": 316,\n\t\"./bg.js\": 316,\n\t\"./bm\": 317,\n\t\"./bm.js\": 317,\n\t\"./bn\": 319,\n\t\"./bn-bd\": 318,\n\t\"./bn-bd.js\": 318,\n\t\"./bn.js\": 319,\n\t\"./bo\": 320,\n\t\"./bo.js\": 320,\n\t\"./br\": 321,\n\t\"./br.js\": 321,\n\t\"./bs\": 322,\n\t\"./bs.js\": 322,\n\t\"./ca\": 323,\n\t\"./ca.js\": 323,\n\t\"./cs\": 324,\n\t\"./cs.js\": 324,\n\t\"./cv\": 325,\n\t\"./cv.js\": 325,\n\t\"./cy\": 326,\n\t\"./cy.js\": 326,\n\t\"./da\": 327,\n\t\"./da.js\": 327,\n\t\"./de\": 330,\n\t\"./de-at\": 328,\n\t\"./de-at.js\": 328,\n\t\"./de-ch\": 329,\n\t\"./de-ch.js\": 329,\n\t\"./de.js\": 330,\n\t\"./dv\": 331,\n\t\"./dv.js\": 331,\n\t\"./el\": 332,\n\t\"./el.js\": 332,\n\t\"./en-au\": 333,\n\t\"./en-au.js\": 333,\n\t\"./en-ca\": 334,\n\t\"./en-ca.js\": 334,\n\t\"./en-gb\": 335,\n\t\"./en-gb.js\": 335,\n\t\"./en-ie\": 336,\n\t\"./en-ie.js\": 336,\n\t\"./en-il\": 337,\n\t\"./en-il.js\": 337,\n\t\"./en-in\": 338,\n\t\"./en-in.js\": 338,\n\t\"./en-nz\": 339,\n\t\"./en-nz.js\": 339,\n\t\"./en-sg\": 340,\n\t\"./en-sg.js\": 340,\n\t\"./eo\": 341,\n\t\"./eo.js\": 341,\n\t\"./es\": 345,\n\t\"./es-do\": 342,\n\t\"./es-do.js\": 342,\n\t\"./es-mx\": 343,\n\t\"./es-mx.js\": 343,\n\t\"./es-us\": 344,\n\t\"./es-us.js\": 344,\n\t\"./es.js\": 345,\n\t\"./et\": 346,\n\t\"./et.js\": 346,\n\t\"./eu\": 347,\n\t\"./eu.js\": 347,\n\t\"./fa\": 348,\n\t\"./fa.js\": 348,\n\t\"./fi\": 349,\n\t\"./fi.js\": 349,\n\t\"./fil\": 350,\n\t\"./fil.js\": 350,\n\t\"./fo\": 351,\n\t\"./fo.js\": 351,\n\t\"./fr\": 354,\n\t\"./fr-ca\": 352,\n\t\"./fr-ca.js\": 352,\n\t\"./fr-ch\": 353,\n\t\"./fr-ch.js\": 353,\n\t\"./fr.js\": 354,\n\t\"./fy\": 355,\n\t\"./fy.js\": 355,\n\t\"./ga\": 356,\n\t\"./ga.js\": 356,\n\t\"./gd\": 357,\n\t\"./gd.js\": 357,\n\t\"./gl\": 358,\n\t\"./gl.js\": 358,\n\t\"./gom-deva\": 359,\n\t\"./gom-deva.js\": 359,\n\t\"./gom-latn\": 360,\n\t\"./gom-latn.js\": 360,\n\t\"./gu\": 361,\n\t\"./gu.js\": 361,\n\t\"./he\": 362,\n\t\"./he.js\": 362,\n\t\"./hi\": 363,\n\t\"./hi.js\": 363,\n\t\"./hr\": 364,\n\t\"./hr.js\": 364,\n\t\"./hu\": 365,\n\t\"./hu.js\": 365,\n\t\"./hy-am\": 366,\n\t\"./hy-am.js\": 366,\n\t\"./id\": 367,\n\t\"./id.js\": 367,\n\t\"./is\": 368,\n\t\"./is.js\": 368,\n\t\"./it\": 370,\n\t\"./it-ch\": 369,\n\t\"./it-ch.js\": 369,\n\t\"./it.js\": 370,\n\t\"./ja\": 286,\n\t\"./ja.js\": 286,\n\t\"./jv\": 371,\n\t\"./jv.js\": 371,\n\t\"./ka\": 372,\n\t\"./ka.js\": 372,\n\t\"./kk\": 373,\n\t\"./kk.js\": 373,\n\t\"./km\": 374,\n\t\"./km.js\": 374,\n\t\"./kn\": 375,\n\t\"./kn.js\": 375,\n\t\"./ko\": 376,\n\t\"./ko.js\": 376,\n\t\"./ku\": 377,\n\t\"./ku.js\": 377,\n\t\"./ky\": 378,\n\t\"./ky.js\": 378,\n\t\"./lb\": 379,\n\t\"./lb.js\": 379,\n\t\"./lo\": 380,\n\t\"./lo.js\": 380,\n\t\"./lt\": 381,\n\t\"./lt.js\": 381,\n\t\"./lv\": 382,\n\t\"./lv.js\": 382,\n\t\"./me\": 383,\n\t\"./me.js\": 383,\n\t\"./mi\": 384,\n\t\"./mi.js\": 384,\n\t\"./mk\": 385,\n\t\"./mk.js\": 385,\n\t\"./ml\": 386,\n\t\"./ml.js\": 386,\n\t\"./mn\": 387,\n\t\"./mn.js\": 387,\n\t\"./mr\": 388,\n\t\"./mr.js\": 388,\n\t\"./ms\": 390,\n\t\"./ms-my\": 389,\n\t\"./ms-my.js\": 389,\n\t\"./ms.js\": 390,\n\t\"./mt\": 391,\n\t\"./mt.js\": 391,\n\t\"./my\": 392,\n\t\"./my.js\": 392,\n\t\"./nb\": 393,\n\t\"./nb.js\": 393,\n\t\"./ne\": 394,\n\t\"./ne.js\": 394,\n\t\"./nl\": 396,\n\t\"./nl-be\": 395,\n\t\"./nl-be.js\": 395,\n\t\"./nl.js\": 396,\n\t\"./nn\": 397,\n\t\"./nn.js\": 397,\n\t\"./oc-lnc\": 398,\n\t\"./oc-lnc.js\": 398,\n\t\"./pa-in\": 399,\n\t\"./pa-in.js\": 399,\n\t\"./pl\": 400,\n\t\"./pl.js\": 400,\n\t\"./pt\": 402,\n\t\"./pt-br\": 401,\n\t\"./pt-br.js\": 401,\n\t\"./pt.js\": 402,\n\t\"./ro\": 403,\n\t\"./ro.js\": 403,\n\t\"./ru\": 404,\n\t\"./ru.js\": 404,\n\t\"./sd\": 405,\n\t\"./sd.js\": 405,\n\t\"./se\": 406,\n\t\"./se.js\": 406,\n\t\"./si\": 407,\n\t\"./si.js\": 407,\n\t\"./sk\": 408,\n\t\"./sk.js\": 408,\n\t\"./sl\": 409,\n\t\"./sl.js\": 409,\n\t\"./sq\": 410,\n\t\"./sq.js\": 410,\n\t\"./sr\": 412,\n\t\"./sr-cyrl\": 411,\n\t\"./sr-cyrl.js\": 411,\n\t\"./sr.js\": 412,\n\t\"./ss\": 413,\n\t\"./ss.js\": 413,\n\t\"./sv\": 414,\n\t\"./sv.js\": 414,\n\t\"./sw\": 415,\n\t\"./sw.js\": 415,\n\t\"./ta\": 416,\n\t\"./ta.js\": 416,\n\t\"./te\": 417,\n\t\"./te.js\": 417,\n\t\"./tet\": 418,\n\t\"./tet.js\": 418,\n\t\"./tg\": 419,\n\t\"./tg.js\": 419,\n\t\"./th\": 420,\n\t\"./th.js\": 420,\n\t\"./tk\": 421,\n\t\"./tk.js\": 421,\n\t\"./tl-ph\": 422,\n\t\"./tl-ph.js\": 422,\n\t\"./tlh\": 423,\n\t\"./tlh.js\": 423,\n\t\"./tr\": 424,\n\t\"./tr.js\": 424,\n\t\"./tzl\": 425,\n\t\"./tzl.js\": 425,\n\t\"./tzm\": 427,\n\t\"./tzm-latn\": 426,\n\t\"./tzm-latn.js\": 426,\n\t\"./tzm.js\": 427,\n\t\"./ug-cn\": 428,\n\t\"./ug-cn.js\": 428,\n\t\"./uk\": 429,\n\t\"./uk.js\": 429,\n\t\"./ur\": 430,\n\t\"./ur.js\": 430,\n\t\"./uz\": 432,\n\t\"./uz-latn\": 431,\n\t\"./uz-latn.js\": 431,\n\t\"./uz.js\": 432,\n\t\"./vi\": 433,\n\t\"./vi.js\": 433,\n\t\"./x-pseudo\": 434,\n\t\"./x-pseudo.js\": 434,\n\t\"./yo\": 435,\n\t\"./yo.js\": 435,\n\t\"./zh-cn\": 436,\n\t\"./zh-cn.js\": 436,\n\t\"./zh-hk\": 437,\n\t\"./zh-hk.js\": 437,\n\t\"./zh-mo\": 438,\n\t\"./zh-mo.js\": 438,\n\t\"./zh-tw\": 439,\n\t\"./zh-tw.js\": 439\n};\nfunction webpackContext(req) {\n\treturn __webpack_require__(webpackContextResolve(req));\n};\nfunction webpackContextResolve(req) {\n\treturn map[req] || (function() { throw new Error(\"Cannot find module '\" + req + \"'.\") }());\n};\nwebpackContext.keys = function webpackContextKeys() {\n\treturn Object.keys(map);\n};\nwebpackContext.resolve = webpackContextResolve;\nmodule.exports = webpackContext;\nwebpackContext.id = 467;\n\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./~/moment/locale ^\\.\\/.*$\n// module id = 467\n// module chunks = 0 1 2 3 5 6 160","/* eslint-disable */\n/* スマホ・タブレット利用制限処理 */\n$(document).ready( function(){\n\t// ページ読み込み時に実行したい処理\n // Ajax通信を開始\n if(window.getUtilizationTimeInfo === undefined) {\n return;\n }\n $.ajax({\n\t\turl: window.getUtilizationTimeInfo,\n\t\ttype: 'GET',\n\t\tdataType: 'json',\n\t\t// フォーム要素の内容をハッシュ形式に変換\n\t\t//data: $('form').serializeArray(),\n\t\t//timeout: 5000,\n\t\tsuccess: function(data){\n\t\t // 通信成功時の処理を記述\n\t\t console.log('success');\n\t\t if (data.result) {\n\t\t\t if(data.logout){\n\t\t\t\twindow.location = data.logout_url; \n\t\t\t };\n\t\t }else{\n\t\t\talert(\"利用権限情報の取得に失敗しました。\");\n\t\t };\n\t\t \n\t\t},\n\t\terror: function(){\n\t\t // 通信失敗時の処理を記述\n\t\t alert(\"利用権限情報の取得に失敗しました。\");\n\t\t}\n })\n\n});\n\n\n\n// WEBPACK FOOTER //\n// ./es6/user-common-js/legacy/utilizationtimeInfo.js","import '../user-common-js';\n\nimport '../../source/javascripts/main';\nimport '../../source/javascripts/vcet';\nimport '../../source/javascripts/vendor/fullcalendar-2.9.1/fullcalendar';\n\nimport '../user-common-js/legacy/utilizationtimeInfo';\n\n\n\n// WEBPACK FOOTER //\n// ./es6/user-page-js/default.page.js","/**\n * Created with IntelliJ IDEA.\n * User: takeo\n * Date: 2012/12/27\n * Time: 18:03\n * To change this template use File | Settings | File Templates.\n */\n\n\n\n$(function () {\n $(\"a[rel='popover']\").popover({\n offset: 10\n });\n $(\"a[rel='popover']\").on('click', function(e) {\n e.preventDefault();\n return true;\n });\n});\n\n\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./source/javascripts/main.js\n// module id = 1140\n// module chunks = 160","/*!\n * <%= meta.title %> v<%= meta.version %>\n * Docs & License: <%= meta.homepage %>\n * (c) <%= meta.copyright %>\n */\n\n(function(factory) {\n\tif (typeof define === 'function' && define.amd) {\n\t\tdefine([ 'jquery', 'moment' ], factory);\n\t}\n\telse if (typeof exports === 'object') { // Node/CommonJS\n\t\tmodule.exports = factory(require('jquery'), require('moment'));\n\t}\n\telse {\n\t\tfactory(jQuery, moment);\n\t}\n})(function($, moment) {\n\n;;\n\nvar FC = $.fullCalendar = {\n\tversion: \"<%= meta.version %>\",\n\tinternalApiVersion: 5\n};\nvar fcViews = FC.views = {};\n\n\n$.fn.fullCalendar = function(options) {\n\tvar args = Array.prototype.slice.call(arguments, 1); // for a possible method call\n\tvar res = this; // what this function will return (this jQuery object by default)\n\n\tthis.each(function(i, _element) { // loop each DOM element involved\n\t\tvar element = $(_element);\n\t\tvar calendar = element.data('fullCalendar'); // get the existing calendar object (if any)\n\t\tvar singleRes; // the returned value of this single method call\n\n\t\t// a method call\n\t\tif (typeof options === 'string') {\n\t\t\tif (calendar && $.isFunction(calendar[options])) {\n\t\t\t\tsingleRes = calendar[options].apply(calendar, args);\n\t\t\t\tif (!i) {\n\t\t\t\t\tres = singleRes; // record the first method call result\n\t\t\t\t}\n\t\t\t\tif (options === 'destroy') { // for the destroy method, must remove Calendar object data\n\t\t\t\t\telement.removeData('fullCalendar');\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\t\t// a new calendar initialization\n\t\telse if (!calendar) { // don't initialize twice\n\t\t\tcalendar = new Calendar(element, options);\n\t\t\telement.data('fullCalendar', calendar);\n\t\t\tcalendar.render();\n\t\t}\n\t});\n\t\n\treturn res;\n};\n\n\nvar complexOptions = [ // names of options that are objects whose properties should be combined\n\t'header',\n\t'buttonText',\n\t'buttonIcons',\n\t'themeButtonIcons'\n];\n\n\n// Merges an array of option objects into a single object\nfunction mergeOptions(optionObjs) {\n\treturn mergeProps(optionObjs, complexOptions);\n}\n\n\n// Given options specified for the calendar's constructor, massages any legacy options into a non-legacy form.\n// Converts View-Option-Hashes into the View-Specific-Options format.\nfunction massageOverrides(input) {\n\tvar overrides = { views: input.views || {} }; // the output. ensure a `views` hash\n\tvar subObj;\n\n\t// iterate through all option override properties (except `views`)\n\t$.each(input, function(name, val) {\n\t\tif (name != 'views') {\n\n\t\t\t// could the value be a legacy View-Option-Hash?\n\t\t\tif (\n\t\t\t\t$.isPlainObject(val) &&\n\t\t\t\t!/(time|duration|interval)$/i.test(name) && // exclude duration options. might be given as objects\n\t\t\t\t$.inArray(name, complexOptions) == -1 // complex options aren't allowed to be View-Option-Hashes\n\t\t\t) {\n\t\t\t\tsubObj = null;\n\n\t\t\t\t// iterate through the properties of this possible View-Option-Hash value\n\t\t\t\t$.each(val, function(subName, subVal) {\n\n\t\t\t\t\t// is the property targeting a view?\n\t\t\t\t\tif (/^(month|week|day|default|basic(Week|Day)?|agenda(Week|Day)?)$/.test(subName)) {\n\t\t\t\t\t\tif (!overrides.views[subName]) { // ensure the view-target entry exists\n\t\t\t\t\t\t\toverrides.views[subName] = {};\n\t\t\t\t\t\t}\n\t\t\t\t\t\toverrides.views[subName][name] = subVal; // record the value in the `views` object\n\t\t\t\t\t}\n\t\t\t\t\telse { // a non-View-Option-Hash property\n\t\t\t\t\t\tif (!subObj) {\n\t\t\t\t\t\t\tsubObj = {};\n\t\t\t\t\t\t}\n\t\t\t\t\t\tsubObj[subName] = subVal; // accumulate these unrelated values for later\n\t\t\t\t\t}\n\t\t\t\t});\n\n\t\t\t\tif (subObj) { // non-View-Option-Hash properties? transfer them as-is\n\t\t\t\t\toverrides[name] = subObj;\n\t\t\t\t}\n\t\t\t}\n\t\t\telse {\n\t\t\t\toverrides[name] = val; // transfer normal options as-is\n\t\t\t}\n\t\t}\n\t});\n\n\treturn overrides;\n}\n\n;;\n\n// exports\nFC.intersectRanges = intersectRanges;\nFC.applyAll = applyAll;\nFC.debounce = debounce;\nFC.isInt = isInt;\nFC.htmlEscape = htmlEscape;\nFC.cssToStr = cssToStr;\nFC.proxy = proxy;\nFC.capitaliseFirstLetter = capitaliseFirstLetter;\n\n\n/* FullCalendar-specific DOM Utilities\n----------------------------------------------------------------------------------------------------------------------*/\n\n\n// Given the scrollbar widths of some other container, create borders/margins on rowEls in order to match the left\n// and right space that was offset by the scrollbars. A 1-pixel border first, then margin beyond that.\nfunction compensateScroll(rowEls, scrollbarWidths) {\n\tif (scrollbarWidths.left) {\n\t\trowEls.css({\n\t\t\t'border-left-width': 1,\n\t\t\t'margin-left': scrollbarWidths.left - 1\n\t\t});\n\t}\n\tif (scrollbarWidths.right) {\n\t\trowEls.css({\n\t\t\t'border-right-width': 1,\n\t\t\t'margin-right': scrollbarWidths.right - 1\n\t\t});\n\t}\n}\n\n\n// Undoes compensateScroll and restores all borders/margins\nfunction uncompensateScroll(rowEls) {\n\trowEls.css({\n\t\t'margin-left': '',\n\t\t'margin-right': '',\n\t\t'border-left-width': '',\n\t\t'border-right-width': ''\n\t});\n}\n\n\n// Make the mouse cursor express that an event is not allowed in the current area\nfunction disableCursor() {\n\t$('body').addClass('fc-not-allowed');\n}\n\n\n// Returns the mouse cursor to its original look\nfunction enableCursor() {\n\t$('body').removeClass('fc-not-allowed');\n}\n\n\n// Given a total available height to fill, have `els` (essentially child rows) expand to accomodate.\n// By default, all elements that are shorter than the recommended height are expanded uniformly, not considering\n// any other els that are already too tall. if `shouldRedistribute` is on, it considers these tall rows and \n// reduces the available height.\nfunction distributeHeight(els, availableHeight, shouldRedistribute) {\n\n\t// *FLOORING NOTE*: we floor in certain places because zoom can give inaccurate floating-point dimensions,\n\t// and it is better to be shorter than taller, to avoid creating unnecessary scrollbars.\n\n\tvar minOffset1 = Math.floor(availableHeight / els.length); // for non-last element\n\tvar minOffset2 = Math.floor(availableHeight - minOffset1 * (els.length - 1)); // for last element *FLOORING NOTE*\n\tvar flexEls = []; // elements that are allowed to expand. array of DOM nodes\n\tvar flexOffsets = []; // amount of vertical space it takes up\n\tvar flexHeights = []; // actual css height\n\tvar usedHeight = 0;\n\n\tundistributeHeight(els); // give all elements their natural height\n\n\t// find elements that are below the recommended height (expandable).\n\t// important to query for heights in a single first pass (to avoid reflow oscillation).\n\tels.each(function(i, el) {\n\t\tvar minOffset = i === els.length - 1 ? minOffset2 : minOffset1;\n\t\tvar naturalOffset = $(el).outerHeight(true);\n\n\t\tif (naturalOffset < minOffset) {\n\t\t\tflexEls.push(el);\n\t\t\tflexOffsets.push(naturalOffset);\n\t\t\tflexHeights.push($(el).height());\n\t\t}\n\t\telse {\n\t\t\t// this element stretches past recommended height (non-expandable). mark the space as occupied.\n\t\t\tusedHeight += naturalOffset;\n\t\t}\n\t});\n\n\t// readjust the recommended height to only consider the height available to non-maxed-out rows.\n\tif (shouldRedistribute) {\n\t\tavailableHeight -= usedHeight;\n\t\tminOffset1 = Math.floor(availableHeight / flexEls.length);\n\t\tminOffset2 = Math.floor(availableHeight - minOffset1 * (flexEls.length - 1)); // *FLOORING NOTE*\n\t}\n\n\t// assign heights to all expandable elements\n\t$(flexEls).each(function(i, el) {\n\t\tvar minOffset = i === flexEls.length - 1 ? minOffset2 : minOffset1;\n\t\tvar naturalOffset = flexOffsets[i];\n\t\tvar naturalHeight = flexHeights[i];\n\t\tvar newHeight = minOffset - (naturalOffset - naturalHeight); // subtract the margin/padding\n\n\t\tif (naturalOffset < minOffset) { // we check this again because redistribution might have changed things\n\t\t\t$(el).height(newHeight);\n\t\t}\n\t});\n}\n\n\n// Undoes distrubuteHeight, restoring all els to their natural height\nfunction undistributeHeight(els) {\n\tels.height('');\n}\n\n\n// Given `els`, a jQuery set of cells, find the cell with the largest natural width and set the widths of all the\n// cells to be that width.\n// PREREQUISITE: if you want a cell to take up width, it needs to have a single inner element w/ display:inline\nfunction matchCellWidths(els) {\n\tvar maxInnerWidth = 0;\n\n\tels.find('> span').each(function(i, innerEl) {\n\t\tvar innerWidth = $(innerEl).outerWidth();\n\t\tif (innerWidth > maxInnerWidth) {\n\t\t\tmaxInnerWidth = innerWidth;\n\t\t}\n\t});\n\n\tmaxInnerWidth++; // sometimes not accurate of width the text needs to stay on one line. insurance\n\n\tels.width(maxInnerWidth);\n\n\treturn maxInnerWidth;\n}\n\n\n// Given one element that resides inside another,\n// Subtracts the height of the inner element from the outer element.\nfunction subtractInnerElHeight(outerEl, innerEl) {\n\tvar both = outerEl.add(innerEl);\n\tvar diff;\n\n\t// effin' IE8/9/10/11 sometimes returns 0 for dimensions. this weird hack was the only thing that worked\n\tboth.css({\n\t\tposition: 'relative', // cause a reflow, which will force fresh dimension recalculation\n\t\tleft: -1 // ensure reflow in case the el was already relative. negative is less likely to cause new scroll\n\t});\n\tdiff = outerEl.outerHeight() - innerEl.outerHeight(); // grab the dimensions\n\tboth.css({ position: '', left: '' }); // undo hack\n\n\treturn diff;\n}\n\n\n/* Element Geom Utilities\n----------------------------------------------------------------------------------------------------------------------*/\n\nFC.getOuterRect = getOuterRect;\nFC.getClientRect = getClientRect;\nFC.getContentRect = getContentRect;\nFC.getScrollbarWidths = getScrollbarWidths;\n\n\n// borrowed from https://github.com/jquery/jquery-ui/blob/1.11.0/ui/core.js#L51\nfunction getScrollParent(el) {\n\tvar position = el.css('position'),\n\t\tscrollParent = el.parents().filter(function() {\n\t\t\tvar parent = $(this);\n\t\t\treturn (/(auto|scroll)/).test(\n\t\t\t\tparent.css('overflow') + parent.css('overflow-y') + parent.css('overflow-x')\n\t\t\t);\n\t\t}).eq(0);\n\n\treturn position === 'fixed' || !scrollParent.length ? $(el[0].ownerDocument || document) : scrollParent;\n}\n\n\n// Queries the outer bounding area of a jQuery element.\n// Returns a rectangle with absolute coordinates: left, right (exclusive), top, bottom (exclusive).\n// Origin is optional.\nfunction getOuterRect(el, origin) {\n\tvar offset = el.offset();\n\tvar left = offset.left - (origin ? origin.left : 0);\n\tvar top = offset.top - (origin ? origin.top : 0);\n\n\treturn {\n\t\tleft: left,\n\t\tright: left + el.outerWidth(),\n\t\ttop: top,\n\t\tbottom: top + el.outerHeight()\n\t};\n}\n\n\n// Queries the area within the margin/border/scrollbars of a jQuery element. Does not go within the padding.\n// Returns a rectangle with absolute coordinates: left, right (exclusive), top, bottom (exclusive).\n// Origin is optional.\n// NOTE: should use clientLeft/clientTop, but very unreliable cross-browser.\nfunction getClientRect(el, origin) {\n\tvar offset = el.offset();\n\tvar scrollbarWidths = getScrollbarWidths(el);\n\tvar left = offset.left + getCssFloat(el, 'border-left-width') + scrollbarWidths.left - (origin ? origin.left : 0);\n\tvar top = offset.top + getCssFloat(el, 'border-top-width') + scrollbarWidths.top - (origin ? origin.top : 0);\n\n\treturn {\n\t\tleft: left,\n\t\tright: left + el[0].clientWidth, // clientWidth includes padding but NOT scrollbars\n\t\ttop: top,\n\t\tbottom: top + el[0].clientHeight // clientHeight includes padding but NOT scrollbars\n\t};\n}\n\n\n// Queries the area within the margin/border/padding of a jQuery element. Assumed not to have scrollbars.\n// Returns a rectangle with absolute coordinates: left, right (exclusive), top, bottom (exclusive).\n// Origin is optional.\nfunction getContentRect(el, origin) {\n\tvar offset = el.offset(); // just outside of border, margin not included\n\tvar left = offset.left + getCssFloat(el, 'border-left-width') + getCssFloat(el, 'padding-left') -\n\t\t(origin ? origin.left : 0);\n\tvar top = offset.top + getCssFloat(el, 'border-top-width') + getCssFloat(el, 'padding-top') -\n\t\t(origin ? origin.top : 0);\n\n\treturn {\n\t\tleft: left,\n\t\tright: left + el.width(),\n\t\ttop: top,\n\t\tbottom: top + el.height()\n\t};\n}\n\n\n// Returns the computed left/right/top/bottom scrollbar widths for the given jQuery element.\n// NOTE: should use clientLeft/clientTop, but very unreliable cross-browser.\nfunction getScrollbarWidths(el) {\n\tvar leftRightWidth = el.innerWidth() - el[0].clientWidth; // the paddings cancel out, leaving the scrollbars\n\tvar widths = {\n\t\tleft: 0,\n\t\tright: 0,\n\t\ttop: 0,\n\t\tbottom: el.innerHeight() - el[0].clientHeight // the paddings cancel out, leaving the bottom scrollbar\n\t};\n\n\tif (getIsLeftRtlScrollbars() && el.css('direction') == 'rtl') { // is the scrollbar on the left side?\n\t\twidths.left = leftRightWidth;\n\t}\n\telse {\n\t\twidths.right = leftRightWidth;\n\t}\n\n\treturn widths;\n}\n\n\n// Logic for determining if, when the element is right-to-left, the scrollbar appears on the left side\n\nvar _isLeftRtlScrollbars = null;\n\nfunction getIsLeftRtlScrollbars() { // responsible for caching the computation\n\tif (_isLeftRtlScrollbars === null) {\n\t\t_isLeftRtlScrollbars = computeIsLeftRtlScrollbars();\n\t}\n\treturn _isLeftRtlScrollbars;\n}\n\nfunction computeIsLeftRtlScrollbars() { // creates an offscreen test element, then removes it\n\tvar el = $('
')\n\t\t.css({\n\t\t\tposition: 'absolute',\n\t\t\ttop: -1000,\n\t\t\tleft: 0,\n\t\t\tborder: 0,\n\t\t\tpadding: 0,\n\t\t\toverflow: 'scroll',\n\t\t\tdirection: 'rtl'\n\t\t})\n\t\t.appendTo('body');\n\tvar innerEl = el.children();\n\tvar res = innerEl.offset().left > el.offset().left; // is the inner div shifted to accommodate a left scrollbar?\n\tel.remove();\n\treturn res;\n}\n\n\n// Retrieves a jQuery element's computed CSS value as a floating-point number.\n// If the queried value is non-numeric (ex: IE can return \"medium\" for border width), will just return zero.\nfunction getCssFloat(el, prop) {\n\treturn parseFloat(el.css(prop)) || 0;\n}\n\n\n/* Mouse / Touch Utilities\n----------------------------------------------------------------------------------------------------------------------*/\n\nFC.preventDefault = preventDefault;\n\n\n// Returns a boolean whether this was a left mouse click and no ctrl key (which means right click on Mac)\nfunction isPrimaryMouseButton(ev) {\n\treturn ev.which == 1 && !ev.ctrlKey;\n}\n\n\nfunction getEvX(ev) {\n\tif (ev.pageX !== undefined) {\n\t\treturn ev.pageX;\n\t}\n\tvar touches = ev.originalEvent.touches;\n\tif (touches) {\n\t\treturn touches[0].pageX;\n\t}\n}\n\n\nfunction getEvY(ev) {\n\tif (ev.pageY !== undefined) {\n\t\treturn ev.pageY;\n\t}\n\tvar touches = ev.originalEvent.touches;\n\tif (touches) {\n\t\treturn touches[0].pageY;\n\t}\n}\n\n\nfunction getEvIsTouch(ev) {\n\treturn /^touch/.test(ev.type);\n}\n\n\nfunction preventSelection(el) {\n\tel.addClass('fc-unselectable')\n\t\t.on('selectstart', preventDefault);\n}\n\n\n// Stops a mouse/touch event from doing it's native browser action\nfunction preventDefault(ev) {\n\tev.preventDefault();\n}\n\n\n// attach a handler to get called when ANY scroll action happens on the page.\n// this was impossible to do with normal on/off because 'scroll' doesn't bubble.\n// http://stackoverflow.com/a/32954565/96342\n// returns `true` on success.\nfunction bindAnyScroll(handler) {\n\tif (window.addEventListener) {\n\t\twindow.addEventListener('scroll', handler, true); // useCapture=true\n\t\treturn true;\n\t}\n\treturn false;\n}\n\n\n// undoes bindAnyScroll. must pass in the original function.\n// returns `true` on success.\nfunction unbindAnyScroll(handler) {\n\tif (window.removeEventListener) {\n\t\twindow.removeEventListener('scroll', handler, true); // useCapture=true\n\t\treturn true;\n\t}\n\treturn false;\n}\n\n\n/* General Geometry Utils\n----------------------------------------------------------------------------------------------------------------------*/\n\nFC.intersectRects = intersectRects;\n\n// Returns a new rectangle that is the intersection of the two rectangles. If they don't intersect, returns false\nfunction intersectRects(rect1, rect2) {\n\tvar res = {\n\t\tleft: Math.max(rect1.left, rect2.left),\n\t\tright: Math.min(rect1.right, rect2.right),\n\t\ttop: Math.max(rect1.top, rect2.top),\n\t\tbottom: Math.min(rect1.bottom, rect2.bottom)\n\t};\n\n\tif (res.left < res.right && res.top < res.bottom) {\n\t\treturn res;\n\t}\n\treturn false;\n}\n\n\n// Returns a new point that will have been moved to reside within the given rectangle\nfunction constrainPoint(point, rect) {\n\treturn {\n\t\tleft: Math.min(Math.max(point.left, rect.left), rect.right),\n\t\ttop: Math.min(Math.max(point.top, rect.top), rect.bottom)\n\t};\n}\n\n\n// Returns a point that is the center of the given rectangle\nfunction getRectCenter(rect) {\n\treturn {\n\t\tleft: (rect.left + rect.right) / 2,\n\t\ttop: (rect.top + rect.bottom) / 2\n\t};\n}\n\n\n// Subtracts point2's coordinates from point1's coordinates, returning a delta\nfunction diffPoints(point1, point2) {\n\treturn {\n\t\tleft: point1.left - point2.left,\n\t\ttop: point1.top - point2.top\n\t};\n}\n\n\n/* Object Ordering by Field\n----------------------------------------------------------------------------------------------------------------------*/\n\nFC.parseFieldSpecs = parseFieldSpecs;\nFC.compareByFieldSpecs = compareByFieldSpecs;\nFC.compareByFieldSpec = compareByFieldSpec;\nFC.flexibleCompare = flexibleCompare;\n\n\nfunction parseFieldSpecs(input) {\n\tvar specs = [];\n\tvar tokens = [];\n\tvar i, token;\n\n\tif (typeof input === 'string') {\n\t\ttokens = input.split(/\\s*,\\s*/);\n\t}\n\telse if (typeof input === 'function') {\n\t\ttokens = [ input ];\n\t}\n\telse if ($.isArray(input)) {\n\t\ttokens = input;\n\t}\n\n\tfor (i = 0; i < tokens.length; i++) {\n\t\ttoken = tokens[i];\n\n\t\tif (typeof token === 'string') {\n\t\t\tspecs.push(\n\t\t\t\ttoken.charAt(0) == '-' ?\n\t\t\t\t\t{ field: token.substring(1), order: -1 } :\n\t\t\t\t\t{ field: token, order: 1 }\n\t\t\t);\n\t\t}\n\t\telse if (typeof token === 'function') {\n\t\t\tspecs.push({ func: token });\n\t\t}\n\t}\n\n\treturn specs;\n}\n\n\nfunction compareByFieldSpecs(obj1, obj2, fieldSpecs) {\n\tvar i;\n\tvar cmp;\n\n\tfor (i = 0; i < fieldSpecs.length; i++) {\n\t\tcmp = compareByFieldSpec(obj1, obj2, fieldSpecs[i]);\n\t\tif (cmp) {\n\t\t\treturn cmp;\n\t\t}\n\t}\n\n\treturn 0;\n}\n\n\nfunction compareByFieldSpec(obj1, obj2, fieldSpec) {\n\tif (fieldSpec.func) {\n\t\treturn fieldSpec.func(obj1, obj2);\n\t}\n\treturn flexibleCompare(obj1[fieldSpec.field], obj2[fieldSpec.field]) *\n\t\t(fieldSpec.order || 1);\n}\n\n\nfunction flexibleCompare(a, b) {\n\tif (!a && !b) {\n\t\treturn 0;\n\t}\n\tif (b == null) {\n\t\treturn -1;\n\t}\n\tif (a == null) {\n\t\treturn 1;\n\t}\n\tif ($.type(a) === 'string' || $.type(b) === 'string') {\n\t\treturn String(a).localeCompare(String(b));\n\t}\n\treturn a - b;\n}\n\n\n/* FullCalendar-specific Misc Utilities\n----------------------------------------------------------------------------------------------------------------------*/\n\n\n// Computes the intersection of the two ranges. Returns undefined if no intersection.\n// Expects all dates to be normalized to the same timezone beforehand.\n// TODO: move to date section?\nfunction intersectRanges(subjectRange, constraintRange) {\n\tvar subjectStart = subjectRange.start;\n\tvar subjectEnd = subjectRange.end;\n\tvar constraintStart = constraintRange.start;\n\tvar constraintEnd = constraintRange.end;\n\tvar segStart, segEnd;\n\tvar isStart, isEnd;\n\n\tif (subjectEnd > constraintStart && subjectStart < constraintEnd) { // in bounds at all?\n\n\t\tif (subjectStart >= constraintStart) {\n\t\t\tsegStart = subjectStart.clone();\n\t\t\tisStart = true;\n\t\t}\n\t\telse {\n\t\t\tsegStart = constraintStart.clone();\n\t\t\tisStart = false;\n\t\t}\n\n\t\tif (subjectEnd <= constraintEnd) {\n\t\t\tsegEnd = subjectEnd.clone();\n\t\t\tisEnd = true;\n\t\t}\n\t\telse {\n\t\t\tsegEnd = constraintEnd.clone();\n\t\t\tisEnd = false;\n\t\t}\n\n\t\treturn {\n\t\t\tstart: segStart,\n\t\t\tend: segEnd,\n\t\t\tisStart: isStart,\n\t\t\tisEnd: isEnd\n\t\t};\n\t}\n}\n\n\n/* Date Utilities\n----------------------------------------------------------------------------------------------------------------------*/\n\nFC.computeIntervalUnit = computeIntervalUnit;\nFC.divideRangeByDuration = divideRangeByDuration;\nFC.divideDurationByDuration = divideDurationByDuration;\nFC.multiplyDuration = multiplyDuration;\nFC.durationHasTime = durationHasTime;\n\nvar dayIDs = [ 'sun', 'mon', 'tue', 'wed', 'thu', 'fri', 'sat' ];\nvar intervalUnits = [ 'year', 'month', 'week', 'day', 'hour', 'minute', 'second', 'millisecond' ];\n\n\n// Diffs the two moments into a Duration where full-days are recorded first, then the remaining time.\n// Moments will have their timezones normalized.\nfunction diffDayTime(a, b) {\n\treturn moment.duration({\n\t\tdays: a.clone().stripTime().diff(b.clone().stripTime(), 'days'),\n\t\tms: a.time() - b.time() // time-of-day from day start. disregards timezone\n\t});\n}\n\n\n// Diffs the two moments via their start-of-day (regardless of timezone). Produces whole-day durations.\nfunction diffDay(a, b) {\n\treturn moment.duration({\n\t\tdays: a.clone().stripTime().diff(b.clone().stripTime(), 'days')\n\t});\n}\n\n\n// Diffs two moments, producing a duration, made of a whole-unit-increment of the given unit. Uses rounding.\nfunction diffByUnit(a, b, unit) {\n\treturn moment.duration(\n\t\tMath.round(a.diff(b, unit, true)), // returnFloat=true\n\t\tunit\n\t);\n}\n\n\n// Computes the unit name of the largest whole-unit period of time.\n// For example, 48 hours will be \"days\" whereas 49 hours will be \"hours\".\n// Accepts start/end, a range object, or an original duration object.\nfunction computeIntervalUnit(start, end) {\n\tvar i, unit;\n\tvar val;\n\n\tfor (i = 0; i < intervalUnits.length; i++) {\n\t\tunit = intervalUnits[i];\n\t\tval = computeRangeAs(unit, start, end);\n\n\t\tif (val >= 1 && isInt(val)) {\n\t\t\tbreak;\n\t\t}\n\t}\n\n\treturn unit; // will be \"milliseconds\" if nothing else matches\n}\n\n\n// Computes the number of units (like \"hours\") in the given range.\n// Range can be a {start,end} object, separate start/end args, or a Duration.\n// Results are based on Moment's .as() and .diff() methods, so results can depend on internal handling\n// of month-diffing logic (which tends to vary from version to version).\nfunction computeRangeAs(unit, start, end) {\n\n\tif (end != null) { // given start, end\n\t\treturn end.diff(start, unit, true);\n\t}\n\telse if (moment.isDuration(start)) { // given duration\n\t\treturn start.as(unit);\n\t}\n\telse { // given { start, end } range object\n\t\treturn start.end.diff(start.start, unit, true);\n\t}\n}\n\n\n// Intelligently divides a range (specified by a start/end params) by a duration\nfunction divideRangeByDuration(start, end, dur) {\n\tvar months;\n\n\tif (durationHasTime(dur)) {\n\t\treturn (end - start) / dur;\n\t}\n\tmonths = dur.asMonths();\n\tif (Math.abs(months) >= 1 && isInt(months)) {\n\t\treturn end.diff(start, 'months', true) / months;\n\t}\n\treturn end.diff(start, 'days', true) / dur.asDays();\n}\n\n\n// Intelligently divides one duration by another\nfunction divideDurationByDuration(dur1, dur2) {\n\tvar months1, months2;\n\n\tif (durationHasTime(dur1) || durationHasTime(dur2)) {\n\t\treturn dur1 / dur2;\n\t}\n\tmonths1 = dur1.asMonths();\n\tmonths2 = dur2.asMonths();\n\tif (\n\t\tMath.abs(months1) >= 1 && isInt(months1) &&\n\t\tMath.abs(months2) >= 1 && isInt(months2)\n\t) {\n\t\treturn months1 / months2;\n\t}\n\treturn dur1.asDays() / dur2.asDays();\n}\n\n\n// Intelligently multiplies a duration by a number\nfunction multiplyDuration(dur, n) {\n\tvar months;\n\n\tif (durationHasTime(dur)) {\n\t\treturn moment.duration(dur * n);\n\t}\n\tmonths = dur.asMonths();\n\tif (Math.abs(months) >= 1 && isInt(months)) {\n\t\treturn moment.duration({ months: months * n });\n\t}\n\treturn moment.duration({ days: dur.asDays() * n });\n}\n\n\n// Returns a boolean about whether the given duration has any time parts (hours/minutes/seconds/ms)\nfunction durationHasTime(dur) {\n\treturn Boolean(dur.hours() || dur.minutes() || dur.seconds() || dur.milliseconds());\n}\n\n\nfunction isNativeDate(input) {\n\treturn Object.prototype.toString.call(input) === '[object Date]' || input instanceof Date;\n}\n\n\n// Returns a boolean about whether the given input is a time string, like \"06:40:00\" or \"06:00\"\nfunction isTimeString(str) {\n\treturn /^\\d+\\:\\d+(?:\\:\\d+\\.?(?:\\d{3})?)?$/.test(str);\n}\n\n\n/* Logging and Debug\n----------------------------------------------------------------------------------------------------------------------*/\n\nFC.log = function() {\n\tvar console = window.console;\n\n\tif (console && console.log) {\n\t\treturn console.log.apply(console, arguments);\n\t}\n};\n\nFC.warn = function() {\n\tvar console = window.console;\n\n\tif (console && console.warn) {\n\t\treturn console.warn.apply(console, arguments);\n\t}\n\telse {\n\t\treturn FC.log.apply(FC, arguments);\n\t}\n};\n\n\n/* General Utilities\n----------------------------------------------------------------------------------------------------------------------*/\n\nvar hasOwnPropMethod = {}.hasOwnProperty;\n\n\n// Merges an array of objects into a single object.\n// The second argument allows for an array of property names who's object values will be merged together.\nfunction mergeProps(propObjs, complexProps) {\n\tvar dest = {};\n\tvar i, name;\n\tvar complexObjs;\n\tvar j, val;\n\tvar props;\n\n\tif (complexProps) {\n\t\tfor (i = 0; i < complexProps.length; i++) {\n\t\t\tname = complexProps[i];\n\t\t\tcomplexObjs = [];\n\n\t\t\t// collect the trailing object values, stopping when a non-object is discovered\n\t\t\tfor (j = propObjs.length - 1; j >= 0; j--) {\n\t\t\t\tval = propObjs[j][name];\n\n\t\t\t\tif (typeof val === 'object') {\n\t\t\t\t\tcomplexObjs.unshift(val);\n\t\t\t\t}\n\t\t\t\telse if (val !== undefined) {\n\t\t\t\t\tdest[name] = val; // if there were no objects, this value will be used\n\t\t\t\t\tbreak;\n\t\t\t\t}\n\t\t\t}\n\n\t\t\t// if the trailing values were objects, use the merged value\n\t\t\tif (complexObjs.length) {\n\t\t\t\tdest[name] = mergeProps(complexObjs);\n\t\t\t}\n\t\t}\n\t}\n\n\t// copy values into the destination, going from last to first\n\tfor (i = propObjs.length - 1; i >= 0; i--) {\n\t\tprops = propObjs[i];\n\n\t\tfor (name in props) {\n\t\t\tif (!(name in dest)) { // if already assigned by previous props or complex props, don't reassign\n\t\t\t\tdest[name] = props[name];\n\t\t\t}\n\t\t}\n\t}\n\n\treturn dest;\n}\n\n\n// Create an object that has the given prototype. Just like Object.create\nfunction createObject(proto) {\n\tvar f = function() {};\n\tf.prototype = proto;\n\treturn new f();\n}\n\n\nfunction copyOwnProps(src, dest) {\n\tfor (var name in src) {\n\t\tif (hasOwnProp(src, name)) {\n\t\t\tdest[name] = src[name];\n\t\t}\n\t}\n}\n\n\n// Copies over certain methods with the same names as Object.prototype methods. Overcomes an IE<=8 bug:\n// https://developer.mozilla.org/en-US/docs/ECMAScript_DontEnum_attribute#JScript_DontEnum_Bug\nfunction copyNativeMethods(src, dest) {\n\tvar names = [ 'constructor', 'toString', 'valueOf' ];\n\tvar i, name;\n\n\tfor (i = 0; i < names.length; i++) {\n\t\tname = names[i];\n\n\t\tif (src[name] !== Object.prototype[name]) {\n\t\t\tdest[name] = src[name];\n\t\t}\n\t}\n}\n\n\nfunction hasOwnProp(obj, name) {\n\treturn hasOwnPropMethod.call(obj, name);\n}\n\n\n// Is the given value a non-object non-function value?\nfunction isAtomic(val) {\n\treturn /undefined|null|boolean|number|string/.test($.type(val));\n}\n\n\nfunction applyAll(functions, thisObj, args) {\n\tif ($.isFunction(functions)) {\n\t\tfunctions = [ functions ];\n\t}\n\tif (functions) {\n\t\tvar i;\n\t\tvar ret;\n\t\tfor (i=0; i/g, '>')\n\t\t.replace(/'/g, ''')\n\t\t.replace(/\"/g, '"')\n\t\t.replace(/\\n/g, '
');\n}\n\n\nfunction stripHtmlEntities(text) {\n\treturn text.replace(/&.*?;/g, '');\n}\n\n\n// Given a hash of CSS properties, returns a string of CSS.\n// Uses property names as-is (no camel-case conversion). Will not make statements for null/undefined values.\nfunction cssToStr(cssProps) {\n\tvar statements = [];\n\n\t$.each(cssProps, function(name, val) {\n\t\tif (val != null) {\n\t\t\tstatements.push(name + ':' + val);\n\t\t}\n\t});\n\n\treturn statements.join(';');\n}\n\n\nfunction capitaliseFirstLetter(str) {\n\treturn str.charAt(0).toUpperCase() + str.slice(1);\n}\n\n\nfunction compareNumbers(a, b) { // for .sort()\n\treturn a - b;\n}\n\n\nfunction isInt(n) {\n\treturn n % 1 === 0;\n}\n\n\n// Returns a method bound to the given object context.\n// Just like one of the jQuery.proxy signatures, but without the undesired behavior of treating the same method with\n// different contexts as identical when binding/unbinding events.\nfunction proxy(obj, methodName) {\n\tvar method = obj[methodName];\n\n\treturn function() {\n\t\treturn method.apply(obj, arguments);\n\t};\n}\n\n\n// Returns a function, that, as long as it continues to be invoked, will not\n// be triggered. The function will be called after it stops being called for\n// N milliseconds. If `immediate` is passed, trigger the function on the\n// leading edge, instead of the trailing.\n// https://github.com/jashkenas/underscore/blob/1.6.0/underscore.js#L714\nfunction debounce(func, wait, immediate) {\n\tvar timeout, args, context, timestamp, result;\n\n\tvar later = function() {\n\t\tvar last = +new Date() - timestamp;\n\t\tif (last < wait) {\n\t\t\ttimeout = setTimeout(later, wait - last);\n\t\t}\n\t\telse {\n\t\t\ttimeout = null;\n\t\t\tif (!immediate) {\n\t\t\t\tresult = func.apply(context, args);\n\t\t\t\tcontext = args = null;\n\t\t\t}\n\t\t}\n\t};\n\n\treturn function() {\n\t\tcontext = this;\n\t\targs = arguments;\n\t\ttimestamp = +new Date();\n\t\tvar callNow = immediate && !timeout;\n\t\tif (!timeout) {\n\t\t\ttimeout = setTimeout(later, wait);\n\t\t}\n\t\tif (callNow) {\n\t\t\tresult = func.apply(context, args);\n\t\t\tcontext = args = null;\n\t\t}\n\t\treturn result;\n\t};\n}\n\n\n// HACK around jQuery's now A+ promises: execute callback synchronously if already resolved.\n// thenFunc shouldn't accept args.\n// similar to whenResources in Scheduler plugin.\nfunction syncThen(promise, thenFunc) {\n\t// not a promise, or an already-resolved promise?\n\tif (!promise || !promise.then || promise.state() === 'resolved') {\n\t\treturn $.when(thenFunc()); // resolve immediately\n\t}\n\telse if (thenFunc) {\n\t\treturn promise.then(thenFunc);\n\t}\n}\n\n;;\n\nvar ambigDateOfMonthRegex = /^\\s*\\d{4}-\\d\\d$/;\nvar ambigTimeOrZoneRegex =\n\t/^\\s*\\d{4}-(?:(\\d\\d-\\d\\d)|(W\\d\\d$)|(W\\d\\d-\\d)|(\\d\\d\\d))((T| )(\\d\\d(:\\d\\d(:\\d\\d(\\.\\d+)?)?)?)?)?$/;\nvar newMomentProto = moment.fn; // where we will attach our new methods\nvar oldMomentProto = $.extend({}, newMomentProto); // copy of original moment methods\nvar allowValueOptimization;\nvar setUTCValues; // function defined below\nvar setLocalValues; // function defined below\n\n\n// Creating\n// -------------------------------------------------------------------------------------------------\n\n// Creates a new moment, similar to the vanilla moment(...) constructor, but with\n// extra features (ambiguous time, enhanced formatting). When given an existing moment,\n// it will function as a clone (and retain the zone of the moment). Anything else will\n// result in a moment in the local zone.\nFC.moment = function() {\n\treturn makeMoment(arguments);\n};\n\n// Sames as FC.moment, but forces the resulting moment to be in the UTC timezone.\nFC.moment.utc = function() {\n\tvar mom = makeMoment(arguments, true);\n\n\t// Force it into UTC because makeMoment doesn't guarantee it\n\t// (if given a pre-existing moment for example)\n\tif (mom.hasTime()) { // don't give ambiguously-timed moments a UTC zone\n\t\tmom.utc();\n\t}\n\n\treturn mom;\n};\n\n// Same as FC.moment, but when given an ISO8601 string, the timezone offset is preserved.\n// ISO8601 strings with no timezone offset will become ambiguously zoned.\nFC.moment.parseZone = function() {\n\treturn makeMoment(arguments, true, true);\n};\n\n// Builds an enhanced moment from args. When given an existing moment, it clones. When given a\n// native Date, or called with no arguments (the current time), the resulting moment will be local.\n// Anything else needs to be \"parsed\" (a string or an array), and will be affected by:\n// parseAsUTC - if there is no zone information, should we parse the input in UTC?\n// parseZone - if there is zone information, should we force the zone of the moment?\nfunction makeMoment(args, parseAsUTC, parseZone) {\n\tvar input = args[0];\n\tvar isSingleString = args.length == 1 && typeof input === 'string';\n\tvar isAmbigTime;\n\tvar isAmbigZone;\n\tvar ambigMatch;\n\tvar mom;\n\n\tif (moment.isMoment(input)) {\n\t\tmom = moment.apply(null, args); // clone it\n\t\ttransferAmbigs(input, mom); // the ambig flags weren't transfered with the clone\n\t}\n\telse if (isNativeDate(input) || input === undefined) {\n\t\tmom = moment.apply(null, args); // will be local\n\t}\n\telse { // \"parsing\" is required\n\t\tisAmbigTime = false;\n\t\tisAmbigZone = false;\n\n\t\tif (isSingleString) {\n\t\t\tif (ambigDateOfMonthRegex.test(input)) {\n\t\t\t\t// accept strings like '2014-05', but convert to the first of the month\n\t\t\t\tinput += '-01';\n\t\t\t\targs = [ input ]; // for when we pass it on to moment's constructor\n\t\t\t\tisAmbigTime = true;\n\t\t\t\tisAmbigZone = true;\n\t\t\t}\n\t\t\telse if ((ambigMatch = ambigTimeOrZoneRegex.exec(input))) {\n\t\t\t\tisAmbigTime = !ambigMatch[5]; // no time part?\n\t\t\t\tisAmbigZone = true;\n\t\t\t}\n\t\t}\n\t\telse if ($.isArray(input)) {\n\t\t\t// arrays have no timezone information, so assume ambiguous zone\n\t\t\tisAmbigZone = true;\n\t\t}\n\t\t// otherwise, probably a string with a format\n\n\t\tif (parseAsUTC || isAmbigTime) {\n\t\t\tmom = moment.utc.apply(moment, args);\n\t\t}\n\t\telse {\n\t\t\tmom = moment.apply(null, args);\n\t\t}\n\n\t\tif (isAmbigTime) {\n\t\t\tmom._ambigTime = true;\n\t\t\tmom._ambigZone = true; // ambiguous time always means ambiguous zone\n\t\t}\n\t\telse if (parseZone) { // let's record the inputted zone somehow\n\t\t\tif (isAmbigZone) {\n\t\t\t\tmom._ambigZone = true;\n\t\t\t}\n\t\t\telse if (isSingleString) {\n\t\t\t\tif (mom.utcOffset) {\n\t\t\t\t\tmom.utcOffset(input); // if not a valid zone, will assign UTC\n\t\t\t\t}\n\t\t\t\telse {\n\t\t\t\t\tmom.zone(input); // for moment-pre-2.9\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\t}\n\n\tmom._fullCalendar = true; // flag for extended functionality\n\n\treturn mom;\n}\n\n\n// A clone method that works with the flags related to our enhanced functionality.\n// In the future, use moment.momentProperties\nnewMomentProto.clone = function() {\n\tvar mom = oldMomentProto.clone.apply(this, arguments);\n\n\t// these flags weren't transfered with the clone\n\ttransferAmbigs(this, mom);\n\tif (this._fullCalendar) {\n\t\tmom._fullCalendar = true;\n\t}\n\n\treturn mom;\n};\n\n\n// Week Number\n// -------------------------------------------------------------------------------------------------\n\n\n// Returns the week number, considering the locale's custom week number calcuation\n// `weeks` is an alias for `week`\nnewMomentProto.week = newMomentProto.weeks = function(input) {\n\tvar weekCalc = (this._locale || this._lang) // works pre-moment-2.8\n\t\t._fullCalendar_weekCalc;\n\n\tif (input == null && typeof weekCalc === 'function') { // custom function only works for getter\n\t\treturn weekCalc(this);\n\t}\n\telse if (weekCalc === 'ISO') {\n\t\treturn oldMomentProto.isoWeek.apply(this, arguments); // ISO getter/setter\n\t}\n\n\treturn oldMomentProto.week.apply(this, arguments); // local getter/setter\n};\n\n\n// Time-of-day\n// -------------------------------------------------------------------------------------------------\n\n// GETTER\n// Returns a Duration with the hours/minutes/seconds/ms values of the moment.\n// If the moment has an ambiguous time, a duration of 00:00 will be returned.\n//\n// SETTER\n// You can supply a Duration, a Moment, or a Duration-like argument.\n// When setting the time, and the moment has an ambiguous time, it then becomes unambiguous.\nnewMomentProto.time = function(time) {\n\n\t// Fallback to the original method (if there is one) if this moment wasn't created via FullCalendar.\n\t// `time` is a generic enough method name where this precaution is necessary to avoid collisions w/ other plugins.\n\tif (!this._fullCalendar) {\n\t\treturn oldMomentProto.time.apply(this, arguments);\n\t}\n\n\tif (time == null) { // getter\n\t\treturn moment.duration({\n\t\t\thours: this.hours(),\n\t\t\tminutes: this.minutes(),\n\t\t\tseconds: this.seconds(),\n\t\t\tmilliseconds: this.milliseconds()\n\t\t});\n\t}\n\telse { // setter\n\n\t\tthis._ambigTime = false; // mark that the moment now has a time\n\n\t\tif (!moment.isDuration(time) && !moment.isMoment(time)) {\n\t\t\ttime = moment.duration(time);\n\t\t}\n\n\t\t// The day value should cause overflow (so 24 hours becomes 00:00:00 of next day).\n\t\t// Only for Duration times, not Moment times.\n\t\tvar dayHours = 0;\n\t\tif (moment.isDuration(time)) {\n\t\t\tdayHours = Math.floor(time.asDays()) * 24;\n\t\t}\n\n\t\t// We need to set the individual fields.\n\t\t// Can't use startOf('day') then add duration. In case of DST at start of day.\n\t\treturn this.hours(dayHours + time.hours())\n\t\t\t.minutes(time.minutes())\n\t\t\t.seconds(time.seconds())\n\t\t\t.milliseconds(time.milliseconds());\n\t}\n};\n\n// Converts the moment to UTC, stripping out its time-of-day and timezone offset,\n// but preserving its YMD. A moment with a stripped time will display no time\n// nor timezone offset when .format() is called.\nnewMomentProto.stripTime = function() {\n\tvar a;\n\n\tif (!this._ambigTime) {\n\n\t\t// get the values before any conversion happens\n\t\ta = this.toArray(); // array of y/m/d/h/m/s/ms\n\n\t\t// TODO: use keepLocalTime in the future\n\t\tthis.utc(); // set the internal UTC flag (will clear the ambig flags)\n\t\tsetUTCValues(this, a.slice(0, 3)); // set the year/month/date. time will be zero\n\n\t\t// Mark the time as ambiguous. This needs to happen after the .utc() call, which might call .utcOffset(),\n\t\t// which clears all ambig flags. Same with setUTCValues with moment-timezone.\n\t\tthis._ambigTime = true;\n\t\tthis._ambigZone = true; // if ambiguous time, also ambiguous timezone offset\n\t}\n\n\treturn this; // for chaining\n};\n\n// Returns if the moment has a non-ambiguous time (boolean)\nnewMomentProto.hasTime = function() {\n\treturn !this._ambigTime;\n};\n\n\n// Timezone\n// -------------------------------------------------------------------------------------------------\n\n// Converts the moment to UTC, stripping out its timezone offset, but preserving its\n// YMD and time-of-day. A moment with a stripped timezone offset will display no\n// timezone offset when .format() is called.\n// TODO: look into Moment's keepLocalTime functionality\nnewMomentProto.stripZone = function() {\n\tvar a, wasAmbigTime;\n\n\tif (!this._ambigZone) {\n\n\t\t// get the values before any conversion happens\n\t\ta = this.toArray(); // array of y/m/d/h/m/s/ms\n\t\twasAmbigTime = this._ambigTime;\n\n\t\tthis.utc(); // set the internal UTC flag (might clear the ambig flags, depending on Moment internals)\n\t\tsetUTCValues(this, a); // will set the year/month/date/hours/minutes/seconds/ms\n\n\t\t// the above call to .utc()/.utcOffset() unfortunately might clear the ambig flags, so restore\n\t\tthis._ambigTime = wasAmbigTime || false;\n\n\t\t// Mark the zone as ambiguous. This needs to happen after the .utc() call, which might call .utcOffset(),\n\t\t// which clears the ambig flags. Same with setUTCValues with moment-timezone.\n\t\tthis._ambigZone = true;\n\t}\n\n\treturn this; // for chaining\n};\n\n// Returns of the moment has a non-ambiguous timezone offset (boolean)\nnewMomentProto.hasZone = function() {\n\treturn !this._ambigZone;\n};\n\n\n// this method implicitly marks a zone\nnewMomentProto.local = function() {\n\tvar a = this.toArray(); // year,month,date,hours,minutes,seconds,ms as an array\n\tvar wasAmbigZone = this._ambigZone;\n\n\toldMomentProto.local.apply(this, arguments);\n\n\t// ensure non-ambiguous\n\t// this probably already happened via local() -> utcOffset(), but don't rely on Moment's internals\n\tthis._ambigTime = false;\n\tthis._ambigZone = false;\n\n\tif (wasAmbigZone) {\n\t\t// If the moment was ambiguously zoned, the date fields were stored as UTC.\n\t\t// We want to preserve these, but in local time.\n\t\t// TODO: look into Moment's keepLocalTime functionality\n\t\tsetLocalValues(this, a);\n\t}\n\n\treturn this; // for chaining\n};\n\n\n// implicitly marks a zone\nnewMomentProto.utc = function() {\n\toldMomentProto.utc.apply(this, arguments);\n\n\t// ensure non-ambiguous\n\t// this probably already happened via utc() -> utcOffset(), but don't rely on Moment's internals\n\tthis._ambigTime = false;\n\tthis._ambigZone = false;\n\n\treturn this;\n};\n\n\n// methods for arbitrarily manipulating timezone offset.\n// should clear time/zone ambiguity when called.\n$.each([\n\t'zone', // only in moment-pre-2.9. deprecated afterwards\n\t'utcOffset'\n], function(i, name) {\n\tif (oldMomentProto[name]) { // original method exists?\n\n\t\t// this method implicitly marks a zone (will probably get called upon .utc() and .local())\n\t\tnewMomentProto[name] = function(tzo) {\n\n\t\t\tif (tzo != null) { // setter\n\t\t\t\t// these assignments needs to happen before the original zone method is called.\n\t\t\t\t// I forget why, something to do with a browser crash.\n\t\t\t\tthis._ambigTime = false;\n\t\t\t\tthis._ambigZone = false;\n\t\t\t}\n\n\t\t\treturn oldMomentProto[name].apply(this, arguments);\n\t\t};\n\t}\n});\n\n\n// Formatting\n// -------------------------------------------------------------------------------------------------\n\nnewMomentProto.format = function() {\n\tif (this._fullCalendar && arguments[0]) { // an enhanced moment? and a format string provided?\n\t\treturn formatDate(this, arguments[0]); // our extended formatting\n\t}\n\tif (this._ambigTime) {\n\t\treturn oldMomentFormat(this, 'YYYY-MM-DD');\n\t}\n\tif (this._ambigZone) {\n\t\treturn oldMomentFormat(this, 'YYYY-MM-DD[T]HH:mm:ss');\n\t}\n\treturn oldMomentProto.format.apply(this, arguments);\n};\n\nnewMomentProto.toISOString = function() {\n\tif (this._ambigTime) {\n\t\treturn oldMomentFormat(this, 'YYYY-MM-DD');\n\t}\n\tif (this._ambigZone) {\n\t\treturn oldMomentFormat(this, 'YYYY-MM-DD[T]HH:mm:ss');\n\t}\n\treturn oldMomentProto.toISOString.apply(this, arguments);\n};\n\n\n// Querying\n// -------------------------------------------------------------------------------------------------\n\n// Is the moment within the specified range? `end` is exclusive.\n// FYI, this method is not a standard Moment method, so always do our enhanced logic.\nnewMomentProto.isWithin = function(start, end) {\n\tvar a = commonlyAmbiguate([ this, start, end ]);\n\treturn a[0] >= a[1] && a[0] < a[2];\n};\n\n// When isSame is called with units, timezone ambiguity is normalized before the comparison happens.\n// If no units specified, the two moments must be identically the same, with matching ambig flags.\nnewMomentProto.isSame = function(input, units) {\n\tvar a;\n\n\t// only do custom logic if this is an enhanced moment\n\tif (!this._fullCalendar) {\n\t\treturn oldMomentProto.isSame.apply(this, arguments);\n\t}\n\n\tif (units) {\n\t\ta = commonlyAmbiguate([ this, input ], true); // normalize timezones but don't erase times\n\t\treturn oldMomentProto.isSame.call(a[0], a[1], units);\n\t}\n\telse {\n\t\tinput = FC.moment.parseZone(input); // normalize input\n\t\treturn oldMomentProto.isSame.call(this, input) &&\n\t\t\tBoolean(this._ambigTime) === Boolean(input._ambigTime) &&\n\t\t\tBoolean(this._ambigZone) === Boolean(input._ambigZone);\n\t}\n};\n\n// Make these query methods work with ambiguous moments\n$.each([\n\t'isBefore',\n\t'isAfter'\n], function(i, methodName) {\n\tnewMomentProto[methodName] = function(input, units) {\n\t\tvar a;\n\n\t\t// only do custom logic if this is an enhanced moment\n\t\tif (!this._fullCalendar) {\n\t\t\treturn oldMomentProto[methodName].apply(this, arguments);\n\t\t}\n\n\t\ta = commonlyAmbiguate([ this, input ]);\n\t\treturn oldMomentProto[methodName].call(a[0], a[1], units);\n\t};\n});\n\n\n// Misc Internals\n// -------------------------------------------------------------------------------------------------\n\n// given an array of moment-like inputs, return a parallel array w/ moments similarly ambiguated.\n// for example, of one moment has ambig time, but not others, all moments will have their time stripped.\n// set `preserveTime` to `true` to keep times, but only normalize zone ambiguity.\n// returns the original moments if no modifications are necessary.\nfunction commonlyAmbiguate(inputs, preserveTime) {\n\tvar anyAmbigTime = false;\n\tvar anyAmbigZone = false;\n\tvar len = inputs.length;\n\tvar moms = [];\n\tvar i, mom;\n\n\t// parse inputs into real moments and query their ambig flags\n\tfor (i = 0; i < len; i++) {\n\t\tmom = inputs[i];\n\t\tif (!moment.isMoment(mom)) {\n\t\t\tmom = FC.moment.parseZone(mom);\n\t\t}\n\t\tanyAmbigTime = anyAmbigTime || mom._ambigTime;\n\t\tanyAmbigZone = anyAmbigZone || mom._ambigZone;\n\t\tmoms.push(mom);\n\t}\n\n\t// strip each moment down to lowest common ambiguity\n\t// use clones to avoid modifying the original moments\n\tfor (i = 0; i < len; i++) {\n\t\tmom = moms[i];\n\t\tif (!preserveTime && anyAmbigTime && !mom._ambigTime) {\n\t\t\tmoms[i] = mom.clone().stripTime();\n\t\t}\n\t\telse if (anyAmbigZone && !mom._ambigZone) {\n\t\t\tmoms[i] = mom.clone().stripZone();\n\t\t}\n\t}\n\n\treturn moms;\n}\n\n// Transfers all the flags related to ambiguous time/zone from the `src` moment to the `dest` moment\n// TODO: look into moment.momentProperties for this.\nfunction transferAmbigs(src, dest) {\n\tif (src._ambigTime) {\n\t\tdest._ambigTime = true;\n\t}\n\telse if (dest._ambigTime) {\n\t\tdest._ambigTime = false;\n\t}\n\n\tif (src._ambigZone) {\n\t\tdest._ambigZone = true;\n\t}\n\telse if (dest._ambigZone) {\n\t\tdest._ambigZone = false;\n\t}\n}\n\n\n// Sets the year/month/date/etc values of the moment from the given array.\n// Inefficient because it calls each individual setter.\nfunction setMomentValues(mom, a) {\n\tmom.year(a[0] || 0)\n\t\t.month(a[1] || 0)\n\t\t.date(a[2] || 0)\n\t\t.hours(a[3] || 0)\n\t\t.minutes(a[4] || 0)\n\t\t.seconds(a[5] || 0)\n\t\t.milliseconds(a[6] || 0);\n}\n\n// Can we set the moment's internal date directly?\nallowValueOptimization = '_d' in moment() && 'updateOffset' in moment;\n\n// Utility function. Accepts a moment and an array of the UTC year/month/date/etc values to set.\n// Assumes the given moment is already in UTC mode.\nsetUTCValues = allowValueOptimization ? function(mom, a) {\n\t// simlate what moment's accessors do\n\tmom._d.setTime(Date.UTC.apply(Date, a));\n\tmoment.updateOffset(mom, false); // keepTime=false\n} : setMomentValues;\n\n// Utility function. Accepts a moment and an array of the local year/month/date/etc values to set.\n// Assumes the given moment is already in local mode.\nsetLocalValues = allowValueOptimization ? function(mom, a) {\n\t// simlate what moment's accessors do\n\tmom._d.setTime(+new Date( // FYI, there is now way to apply an array of args to a constructor\n\t\ta[0] || 0,\n\t\ta[1] || 0,\n\t\ta[2] || 0,\n\t\ta[3] || 0,\n\t\ta[4] || 0,\n\t\ta[5] || 0,\n\t\ta[6] || 0\n\t));\n\tmoment.updateOffset(mom, false); // keepTime=false\n} : setMomentValues;\n\n;;\n\n// Single Date Formatting\n// -------------------------------------------------------------------------------------------------\n\n\n// call this if you want Moment's original format method to be used\nfunction oldMomentFormat(mom, formatStr) {\n\treturn oldMomentProto.format.call(mom, formatStr); // oldMomentProto defined in moment-ext.js\n}\n\n\n// Formats `date` with a Moment formatting string, but allow our non-zero areas and\n// additional token.\nfunction formatDate(date, formatStr) {\n\treturn formatDateWithChunks(date, getFormatStringChunks(formatStr));\n}\n\n\nfunction formatDateWithChunks(date, chunks) {\n\tvar s = '';\n\tvar i;\n\n\tfor (i=0; i \"MMMM D YYYY\"\n\tformatStr = localeData.longDateFormat(formatStr) || formatStr;\n\t// BTW, this is not important for `formatDate` because it is impossible to put custom tokens\n\t// or non-zero areas in Moment's localized format strings.\n\n\tseparator = separator || ' - ';\n\n\treturn formatRangeWithChunks(\n\t\tdate1,\n\t\tdate2,\n\t\tgetFormatStringChunks(formatStr),\n\t\tseparator,\n\t\tisRTL\n\t);\n}\nFC.formatRange = formatRange; // expose\n\n\nfunction formatRangeWithChunks(date1, date2, chunks, separator, isRTL) {\n\tvar unzonedDate1 = date1.clone().stripZone(); // for formatSimilarChunk\n\tvar unzonedDate2 = date2.clone().stripZone(); // \"\n\tvar chunkStr; // the rendering of the chunk\n\tvar leftI;\n\tvar leftStr = '';\n\tvar rightI;\n\tvar rightStr = '';\n\tvar middleI;\n\tvar middleStr1 = '';\n\tvar middleStr2 = '';\n\tvar middleStr = '';\n\n\t// Start at the leftmost side of the formatting string and continue until you hit a token\n\t// that is not the same between dates.\n\tfor (leftI=0; leftIleftI; rightI--) {\n\t\tchunkStr = formatSimilarChunk(date1, date2, unzonedDate1, unzonedDate2, chunks[rightI]);\n\t\tif (chunkStr === false) {\n\t\t\tbreak;\n\t\t}\n\t\trightStr = chunkStr + rightStr;\n\t}\n\n\t// The area in the middle is different for both of the dates.\n\t// Collect them distinctly so we can jam them together later.\n\tfor (middleI=leftI; middleI<=rightI; middleI++) {\n\t\tmiddleStr1 += formatDateWithChunk(date1, chunks[middleI]);\n\t\tmiddleStr2 += formatDateWithChunk(date2, chunks[middleI]);\n\t}\n\n\tif (middleStr1 || middleStr2) {\n\t\tif (isRTL) {\n\t\t\tmiddleStr = middleStr2 + separator + middleStr1;\n\t\t}\n\t\telse {\n\t\t\tmiddleStr = middleStr1 + separator + middleStr2;\n\t\t}\n\t}\n\n\treturn leftStr + middleStr + rightStr;\n}\n\n\nvar similarUnitMap = {\n\tY: 'year',\n\tM: 'month',\n\tD: 'day', // day of month\n\td: 'day', // day of week\n\t// prevents a separator between anything time-related...\n\tA: 'second', // AM/PM\n\ta: 'second', // am/pm\n\tT: 'second', // A/P\n\tt: 'second', // a/p\n\tH: 'second', // hour (24)\n\th: 'second', // hour (12)\n\tm: 'second', // minute\n\ts: 'second' // second\n};\n// TODO: week maybe?\n\n\n// Given a formatting chunk, and given that both dates are similar in the regard the\n// formatting chunk is concerned, format date1 against `chunk`. Otherwise, return `false`.\nfunction formatSimilarChunk(date1, date2, unzonedDate1, unzonedDate2, chunk) {\n\tvar token;\n\tvar unit;\n\n\tif (typeof chunk === 'string') { // a literal string\n\t\treturn chunk;\n\t}\n\telse if ((token = chunk.token)) {\n\t\tunit = similarUnitMap[token.charAt(0)];\n\n\t\t// are the dates the same for this unit of measurement?\n\t\t// use the unzoned dates for this calculation because unreliable when near DST (bug #2396)\n\t\tif (unit && unzonedDate1.isSame(unzonedDate2, unit)) {\n\t\t\treturn oldMomentFormat(date1, token); // would be the same if we used `date2`\n\t\t\t// BTW, don't support custom tokens\n\t\t}\n\t}\n\n\treturn false; // the chunk is NOT the same for the two dates\n\t// BTW, don't support splitting on non-zero areas\n}\n\n\n// Chunking Utils\n// -------------------------------------------------------------------------------------------------\n\n\nvar formatStringChunkCache = {};\n\n\nfunction getFormatStringChunks(formatStr) {\n\tif (formatStr in formatStringChunkCache) {\n\t\treturn formatStringChunkCache[formatStr];\n\t}\n\treturn (formatStringChunkCache[formatStr] = chunkFormatString(formatStr));\n}\n\n\n// Break the formatting string into an array of chunks\nfunction chunkFormatString(formatStr) {\n\tvar chunks = [];\n\tvar chunker = /\\[([^\\]]*)\\]|\\(([^\\)]*)\\)|(LTS|LT|(\\w)\\4*o?)|([^\\w\\[\\(]+)/g; // TODO: more descrimination\n\tvar match;\n\n\twhile ((match = chunker.exec(formatStr))) {\n\t\tif (match[1]) { // a literal string inside [ ... ]\n\t\t\tchunks.push(match[1]);\n\t\t}\n\t\telse if (match[2]) { // non-zero formatting inside ( ... )\n\t\t\tchunks.push({ maybe: chunkFormatString(match[2]) });\n\t\t}\n\t\telse if (match[3]) { // a formatting token\n\t\t\tchunks.push({ token: match[3] });\n\t\t}\n\t\telse if (match[5]) { // an unenclosed literal string\n\t\t\tchunks.push(match[5]);\n\t\t}\n\t}\n\n\treturn chunks;\n}\n\n;;\n\nFC.Class = Class; // export\n\n// Class that all other classes will inherit from\nfunction Class() { }\n\n\n// Called on a class to create a subclass.\n// Last argument contains instance methods. Any argument before the last are considered mixins.\nClass.extend = function() {\n\tvar len = arguments.length;\n\tvar i;\n\tvar members;\n\n\tfor (i = 0; i < len; i++) {\n\t\tmembers = arguments[i];\n\t\tif (i < len - 1) { // not the last argument?\n\t\t\tmixIntoClass(this, members);\n\t\t}\n\t}\n\n\treturn extendClass(this, members || {}); // members will be undefined if no arguments\n};\n\n\n// Adds new member variables/methods to the class's prototype.\n// Can be called with another class, or a plain object hash containing new members.\nClass.mixin = function(members) {\n\tmixIntoClass(this, members);\n};\n\n\nfunction extendClass(superClass, members) {\n\tvar subClass;\n\n\t// ensure a constructor for the subclass, forwarding all arguments to the super-constructor if it doesn't exist\n\tif (hasOwnProp(members, 'constructor')) {\n\t\tsubClass = members.constructor;\n\t}\n\tif (typeof subClass !== 'function') {\n\t\tsubClass = members.constructor = function() {\n\t\t\tsuperClass.apply(this, arguments);\n\t\t};\n\t}\n\n\t// build the base prototype for the subclass, which is an new object chained to the superclass's prototype\n\tsubClass.prototype = createObject(superClass.prototype);\n\n\t// copy each member variable/method onto the the subclass's prototype\n\tcopyOwnProps(members, subClass.prototype);\n\tcopyNativeMethods(members, subClass.prototype); // hack for IE8\n\n\t// copy over all class variables/methods to the subclass, such as `extend` and `mixin`\n\tcopyOwnProps(superClass, subClass);\n\n\treturn subClass;\n}\n\n\nfunction mixIntoClass(theClass, members) {\n\tcopyOwnProps(members, theClass.prototype); // TODO: copyNativeMethods?\n}\n;;\n\nvar EmitterMixin = FC.EmitterMixin = {\n\n\t// jQuery-ification via $(this) allows a non-DOM object to have\n\t// the same event handling capabilities (including namespaces).\n\n\n\ton: function(types, handler) {\n\n\t\t// handlers are always called with an \"event\" object as their first param.\n\t\t// sneak the `this` context and arguments into the extra parameter object\n\t\t// and forward them on to the original handler.\n\t\tvar intercept = function(ev, extra) {\n\t\t\treturn handler.apply(\n\t\t\t\textra.context || this,\n\t\t\t\textra.args || []\n\t\t\t);\n\t\t};\n\n\t\t// mimick jQuery's internal \"proxy\" system (risky, I know)\n\t\t// causing all functions with the same .guid to appear to be the same.\n\t\t// https://github.com/jquery/jquery/blob/2.2.4/src/core.js#L448\n\t\t// this is needed for calling .off with the original non-intercept handler.\n\t\tif (!handler.guid) {\n\t\t\thandler.guid = $.guid++;\n\t\t}\n\t\tintercept.guid = handler.guid;\n\n\t\t$(this).on(types, intercept);\n\n\t\treturn this; // for chaining\n\t},\n\n\n\toff: function(types, handler) {\n\t\t$(this).off(types, handler);\n\n\t\treturn this; // for chaining\n\t},\n\n\n\ttrigger: function(types) {\n\t\tvar args = Array.prototype.slice.call(arguments, 1); // arguments after the first\n\n\t\t// pass in \"extra\" info to the intercept\n\t\t$(this).triggerHandler(types, { args: args });\n\n\t\treturn this; // for chaining\n\t},\n\n\n\ttriggerWith: function(types, context, args) {\n\n\t\t// `triggerHandler` is less reliant on the DOM compared to `trigger`.\n\t\t// pass in \"extra\" info to the intercept.\n\t\t$(this).triggerHandler(types, { context: context, args: args });\n\n\t\treturn this; // for chaining\n\t}\n\n};\n\n;;\n\n/*\nUtility methods for easily listening to events on another object,\nand more importantly, easily unlistening from them.\n*/\nvar ListenerMixin = FC.ListenerMixin = (function() {\n\tvar guid = 0;\n\tvar ListenerMixin = {\n\n\t\tlistenerId: null,\n\n\t\t/*\n\t\tGiven an `other` object that has on/off methods, bind the given `callback` to an event by the given name.\n\t\tThe `callback` will be called with the `this` context of the object that .listenTo is being called on.\n\t\tCan be called:\n\t\t\t.listenTo(other, eventName, callback)\n\t\tOR\n\t\t\t.listenTo(other, {\n\t\t\t\teventName1: callback1,\n\t\t\t\teventName2: callback2\n\t\t\t})\n\t\t*/\n\t\tlistenTo: function(other, arg, callback) {\n\t\t\tif (typeof arg === 'object') { // given dictionary of callbacks\n\t\t\t\tfor (var eventName in arg) {\n\t\t\t\t\tif (arg.hasOwnProperty(eventName)) {\n\t\t\t\t\t\tthis.listenTo(other, eventName, arg[eventName]);\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t}\n\t\t\telse if (typeof arg === 'string') {\n\t\t\t\tother.on(\n\t\t\t\t\targ + '.' + this.getListenerNamespace(), // use event namespacing to identify this object\n\t\t\t\t\t$.proxy(callback, this) // always use `this` context\n\t\t\t\t\t\t// the usually-undesired jQuery guid behavior doesn't matter,\n\t\t\t\t\t\t// because we always unbind via namespace\n\t\t\t\t);\n\t\t\t}\n\t\t},\n\n\t\t/*\n\t\tCauses the current object to stop listening to events on the `other` object.\n\t\t`eventName` is optional. If omitted, will stop listening to ALL events on `other`.\n\t\t*/\n\t\tstopListeningTo: function(other, eventName) {\n\t\t\tother.off((eventName || '') + '.' + this.getListenerNamespace());\n\t\t},\n\n\t\t/*\n\t\tReturns a string, unique to this object, to be used for event namespacing\n\t\t*/\n\t\tgetListenerNamespace: function() {\n\t\t\tif (this.listenerId == null) {\n\t\t\t\tthis.listenerId = guid++;\n\t\t\t}\n\t\t\treturn '_listener' + this.listenerId;\n\t\t}\n\n\t};\n\treturn ListenerMixin;\n})();\n;;\n\n// simple class for toggle a `isIgnoringMouse` flag on delay\n// initMouseIgnoring must first be called, with a millisecond delay setting.\nvar MouseIgnorerMixin = {\n\n\tisIgnoringMouse: false, // bool\n\tdelayUnignoreMouse: null, // method\n\n\n\tinitMouseIgnoring: function(delay) {\n\t\tthis.delayUnignoreMouse = debounce(proxy(this, 'unignoreMouse'), delay || 1000);\n\t},\n\n\n\t// temporarily ignore mouse actions on segments\n\ttempIgnoreMouse: function() {\n\t\tthis.isIgnoringMouse = true;\n\t\tthis.delayUnignoreMouse();\n\t},\n\n\n\t// delayUnignoreMouse eventually calls this\n\tunignoreMouse: function() {\n\t\tthis.isIgnoringMouse = false;\n\t}\n\n};\n\n;;\n\n/* A rectangular panel that is absolutely positioned over other content\n------------------------------------------------------------------------------------------------------------------------\nOptions:\n\t- className (string)\n\t- content (HTML string or jQuery element set)\n\t- parentEl\n\t- top\n\t- left\n\t- right (the x coord of where the right edge should be. not a \"CSS\" right)\n\t- autoHide (boolean)\n\t- show (callback)\n\t- hide (callback)\n*/\n\nvar Popover = Class.extend(ListenerMixin, {\n\n\tisHidden: true,\n\toptions: null,\n\tel: null, // the container element for the popover. generated by this object\n\tmargin: 10, // the space required between the popover and the edges of the scroll container\n\n\n\tconstructor: function(options) {\n\t\tthis.options = options || {};\n\t},\n\n\n\t// Shows the popover on the specified position. Renders it if not already\n\tshow: function() {\n\t\tif (this.isHidden) {\n\t\t\tif (!this.el) {\n\t\t\t\tthis.render();\n\t\t\t}\n\t\t\tthis.el.show();\n\t\t\tthis.position();\n\t\t\tthis.isHidden = false;\n\t\t\tthis.trigger('show');\n\t\t}\n\t},\n\n\n\t// Hides the popover, through CSS, but does not remove it from the DOM\n\thide: function() {\n\t\tif (!this.isHidden) {\n\t\t\tthis.el.hide();\n\t\t\tthis.isHidden = true;\n\t\t\tthis.trigger('hide');\n\t\t}\n\t},\n\n\n\t// Creates `this.el` and renders content inside of it\n\trender: function() {\n\t\tvar _this = this;\n\t\tvar options = this.options;\n\n\t\tthis.el = $('
')\n\t\t\t.addClass(options.className || '')\n\t\t\t.css({\n\t\t\t\t// position initially to the top left to avoid creating scrollbars\n\t\t\t\ttop: 0,\n\t\t\t\tleft: 0\n\t\t\t})\n\t\t\t.append(options.content)\n\t\t\t.appendTo(options.parentEl);\n\n\t\t// when a click happens on anything inside with a 'fc-close' className, hide the popover\n\t\tthis.el.on('click', '.fc-close', function() {\n\t\t\t_this.hide();\n\t\t});\n\n\t\tif (options.autoHide) {\n\t\t\tthis.listenTo($(document), 'mousedown', this.documentMousedown);\n\t\t}\n\t},\n\n\n\t// Triggered when the user clicks *anywhere* in the document, for the autoHide feature\n\tdocumentMousedown: function(ev) {\n\t\t// only hide the popover if the click happened outside the popover\n\t\tif (this.el && !$(ev.target).closest(this.el).length) {\n\t\t\tthis.hide();\n\t\t}\n\t},\n\n\n\t// Hides and unregisters any handlers\n\tremoveElement: function() {\n\t\tthis.hide();\n\n\t\tif (this.el) {\n\t\t\tthis.el.remove();\n\t\t\tthis.el = null;\n\t\t}\n\n\t\tthis.stopListeningTo($(document), 'mousedown');\n\t},\n\n\n\t// Positions the popover optimally, using the top/left/right options\n\tposition: function() {\n\t\tvar options = this.options;\n\t\tvar origin = this.el.offsetParent().offset();\n\t\tvar width = this.el.outerWidth();\n\t\tvar height = this.el.outerHeight();\n\t\tvar windowEl = $(window);\n\t\tvar viewportEl = getScrollParent(this.el);\n\t\tvar viewportTop;\n\t\tvar viewportLeft;\n\t\tvar viewportOffset;\n\t\tvar top; // the \"position\" (not \"offset\") values for the popover\n\t\tvar left; //\n\n\t\t// compute top and left\n\t\ttop = options.top || 0;\n\t\tif (options.left !== undefined) {\n\t\t\tleft = options.left;\n\t\t}\n\t\telse if (options.right !== undefined) {\n\t\t\tleft = options.right - width; // derive the left value from the right value\n\t\t}\n\t\telse {\n\t\t\tleft = 0;\n\t\t}\n\n\t\tif (viewportEl.is(window) || viewportEl.is(document)) { // normalize getScrollParent's result\n\t\t\tviewportEl = windowEl;\n\t\t\tviewportTop = 0; // the window is always at the top left\n\t\t\tviewportLeft = 0; // (and .offset() won't work if called here)\n\t\t}\n\t\telse {\n\t\t\tviewportOffset = viewportEl.offset();\n\t\t\tviewportTop = viewportOffset.top;\n\t\t\tviewportLeft = viewportOffset.left;\n\t\t}\n\n\t\t// if the window is scrolled, it causes the visible area to be further down\n\t\tviewportTop += windowEl.scrollTop();\n\t\tviewportLeft += windowEl.scrollLeft();\n\n\t\t// constrain to the view port. if constrained by two edges, give precedence to top/left\n\t\tif (options.viewportConstrain !== false) {\n\t\t\ttop = Math.min(top, viewportTop + viewportEl.outerHeight() - height - this.margin);\n\t\t\ttop = Math.max(top, viewportTop + this.margin);\n\t\t\tleft = Math.min(left, viewportLeft + viewportEl.outerWidth() - width - this.margin);\n\t\t\tleft = Math.max(left, viewportLeft + this.margin);\n\t\t}\n\n\t\tthis.el.css({\n\t\t\ttop: top - origin.top,\n\t\t\tleft: left - origin.left\n\t\t});\n\t},\n\n\n\t// Triggers a callback. Calls a function in the option hash of the same name.\n\t// Arguments beyond the first `name` are forwarded on.\n\t// TODO: better code reuse for this. Repeat code\n\ttrigger: function(name) {\n\t\tif (this.options[name]) {\n\t\t\tthis.options[name].apply(this, Array.prototype.slice.call(arguments, 1));\n\t\t}\n\t}\n\n});\n\n;;\n\n/*\nA cache for the left/right/top/bottom/width/height values for one or more elements.\nWorks with both offset (from topleft document) and position (from offsetParent).\n\noptions:\n- els\n- isHorizontal\n- isVertical\n*/\nvar CoordCache = FC.CoordCache = Class.extend({\n\n\tels: null, // jQuery set (assumed to be siblings)\n\tforcedOffsetParentEl: null, // options can override the natural offsetParent\n\torigin: null, // {left,top} position of offsetParent of els\n\tboundingRect: null, // constrain cordinates to this rectangle. {left,right,top,bottom} or null\n\tisHorizontal: false, // whether to query for left/right/width\n\tisVertical: false, // whether to query for top/bottom/height\n\n\t// arrays of coordinates (offsets from topleft of document)\n\tlefts: null,\n\trights: null,\n\ttops: null,\n\tbottoms: null,\n\n\n\tconstructor: function(options) {\n\t\tthis.els = $(options.els);\n\t\tthis.isHorizontal = options.isHorizontal;\n\t\tthis.isVertical = options.isVertical;\n\t\tthis.forcedOffsetParentEl = options.offsetParent ? $(options.offsetParent) : null;\n\t},\n\n\n\t// Queries the els for coordinates and stores them.\n\t// Call this method before using and of the get* methods below.\n\tbuild: function() {\n\t\tvar offsetParentEl = this.forcedOffsetParentEl || this.els.eq(0).offsetParent();\n\n\t\tthis.origin = offsetParentEl.offset();\n\t\tthis.boundingRect = this.queryBoundingRect();\n\n\t\tif (this.isHorizontal) {\n\t\t\tthis.buildElHorizontals();\n\t\t}\n\t\tif (this.isVertical) {\n\t\t\tthis.buildElVerticals();\n\t\t}\n\t},\n\n\n\t// Destroys all internal data about coordinates, freeing memory\n\tclear: function() {\n\t\tthis.origin = null;\n\t\tthis.boundingRect = null;\n\t\tthis.lefts = null;\n\t\tthis.rights = null;\n\t\tthis.tops = null;\n\t\tthis.bottoms = null;\n\t},\n\n\n\t// When called, if coord caches aren't built, builds them\n\tensureBuilt: function() {\n\t\tif (!this.origin) {\n\t\t\tthis.build();\n\t\t}\n\t},\n\n\n\t// Populates the left/right internal coordinate arrays\n\tbuildElHorizontals: function() {\n\t\tvar lefts = [];\n\t\tvar rights = [];\n\n\t\tthis.els.each(function(i, node) {\n\t\t\tvar el = $(node);\n\t\t\tvar left = el.offset().left;\n\t\t\tvar width = el.outerWidth();\n\n\t\t\tlefts.push(left);\n\t\t\trights.push(left + width);\n\t\t});\n\n\t\tthis.lefts = lefts;\n\t\tthis.rights = rights;\n\t},\n\n\n\t// Populates the top/bottom internal coordinate arrays\n\tbuildElVerticals: function() {\n\t\tvar tops = [];\n\t\tvar bottoms = [];\n\n\t\tthis.els.each(function(i, node) {\n\t\t\tvar el = $(node);\n\t\t\tvar top = el.offset().top;\n\t\t\tvar height = el.outerHeight();\n\n\t\t\ttops.push(top);\n\t\t\tbottoms.push(top + height);\n\t\t});\n\n\t\tthis.tops = tops;\n\t\tthis.bottoms = bottoms;\n\t},\n\n\n\t// Given a left offset (from document left), returns the index of the el that it horizontally intersects.\n\t// If no intersection is made, returns undefined.\n\tgetHorizontalIndex: function(leftOffset) {\n\t\tthis.ensureBuilt();\n\n\t\tvar lefts = this.lefts;\n\t\tvar rights = this.rights;\n\t\tvar len = lefts.length;\n\t\tvar i;\n\n\t\tfor (i = 0; i < len; i++) {\n\t\t\tif (leftOffset >= lefts[i] && leftOffset < rights[i]) {\n\t\t\t\treturn i;\n\t\t\t}\n\t\t}\n\t},\n\n\n\t// Given a top offset (from document top), returns the index of the el that it vertically intersects.\n\t// If no intersection is made, returns undefined.\n\tgetVerticalIndex: function(topOffset) {\n\t\tthis.ensureBuilt();\n\n\t\tvar tops = this.tops;\n\t\tvar bottoms = this.bottoms;\n\t\tvar len = tops.length;\n\t\tvar i;\n\n\t\tfor (i = 0; i < len; i++) {\n\t\t\tif (topOffset >= tops[i] && topOffset < bottoms[i]) {\n\t\t\t\treturn i;\n\t\t\t}\n\t\t}\n\t},\n\n\n\t// Gets the left offset (from document left) of the element at the given index\n\tgetLeftOffset: function(leftIndex) {\n\t\tthis.ensureBuilt();\n\t\treturn this.lefts[leftIndex];\n\t},\n\n\n\t// Gets the left position (from offsetParent left) of the element at the given index\n\tgetLeftPosition: function(leftIndex) {\n\t\tthis.ensureBuilt();\n\t\treturn this.lefts[leftIndex] - this.origin.left;\n\t},\n\n\n\t// Gets the right offset (from document left) of the element at the given index.\n\t// This value is NOT relative to the document's right edge, like the CSS concept of \"right\" would be.\n\tgetRightOffset: function(leftIndex) {\n\t\tthis.ensureBuilt();\n\t\treturn this.rights[leftIndex];\n\t},\n\n\n\t// Gets the right position (from offsetParent left) of the element at the given index.\n\t// This value is NOT relative to the offsetParent's right edge, like the CSS concept of \"right\" would be.\n\tgetRightPosition: function(leftIndex) {\n\t\tthis.ensureBuilt();\n\t\treturn this.rights[leftIndex] - this.origin.left;\n\t},\n\n\n\t// Gets the width of the element at the given index\n\tgetWidth: function(leftIndex) {\n\t\tthis.ensureBuilt();\n\t\treturn this.rights[leftIndex] - this.lefts[leftIndex];\n\t},\n\n\n\t// Gets the top offset (from document top) of the element at the given index\n\tgetTopOffset: function(topIndex) {\n\t\tthis.ensureBuilt();\n\t\treturn this.tops[topIndex];\n\t},\n\n\n\t// Gets the top position (from offsetParent top) of the element at the given position\n\tgetTopPosition: function(topIndex) {\n\t\tthis.ensureBuilt();\n\t\treturn this.tops[topIndex] - this.origin.top;\n\t},\n\n\t// Gets the bottom offset (from the document top) of the element at the given index.\n\t// This value is NOT relative to the offsetParent's bottom edge, like the CSS concept of \"bottom\" would be.\n\tgetBottomOffset: function(topIndex) {\n\t\tthis.ensureBuilt();\n\t\treturn this.bottoms[topIndex];\n\t},\n\n\n\t// Gets the bottom position (from the offsetParent top) of the element at the given index.\n\t// This value is NOT relative to the offsetParent's bottom edge, like the CSS concept of \"bottom\" would be.\n\tgetBottomPosition: function(topIndex) {\n\t\tthis.ensureBuilt();\n\t\treturn this.bottoms[topIndex] - this.origin.top;\n\t},\n\n\n\t// Gets the height of the element at the given index\n\tgetHeight: function(topIndex) {\n\t\tthis.ensureBuilt();\n\t\treturn this.bottoms[topIndex] - this.tops[topIndex];\n\t},\n\n\n\t// Bounding Rect\n\t// TODO: decouple this from CoordCache\n\n\t// Compute and return what the elements' bounding rectangle is, from the user's perspective.\n\t// Right now, only returns a rectangle if constrained by an overflow:scroll element.\n\tqueryBoundingRect: function() {\n\t\tvar scrollParentEl = getScrollParent(this.els.eq(0));\n\n\t\tif (!scrollParentEl.is(document)) {\n\t\t\treturn getClientRect(scrollParentEl);\n\t\t}\n\t},\n\n\tisPointInBounds: function(leftOffset, topOffset) {\n\t\treturn this.isLeftInBounds(leftOffset) && this.isTopInBounds(topOffset);\n\t},\n\n\tisLeftInBounds: function(leftOffset) {\n\t\treturn !this.boundingRect || (leftOffset >= this.boundingRect.left && leftOffset < this.boundingRect.right);\n\t},\n\n\tisTopInBounds: function(topOffset) {\n\t\treturn !this.boundingRect || (topOffset >= this.boundingRect.top && topOffset < this.boundingRect.bottom);\n\t}\n\n});\n\n;;\n\n/* Tracks a drag's mouse movement, firing various handlers\n----------------------------------------------------------------------------------------------------------------------*/\n// TODO: use Emitter\n\nvar DragListener = FC.DragListener = Class.extend(ListenerMixin, MouseIgnorerMixin, {\n\n\toptions: null,\n\n\t// for IE8 bug-fighting behavior\n\tsubjectEl: null,\n\tsubjectHref: null,\n\n\t// coordinates of the initial mousedown\n\toriginX: null,\n\toriginY: null,\n\n\t// the wrapping element that scrolls, or MIGHT scroll if there's overflow.\n\t// TODO: do this for wrappers that have overflow:hidden as well.\n\tscrollEl: null,\n\n\tisInteracting: false,\n\tisDistanceSurpassed: false,\n\tisDelayEnded: false,\n\tisDragging: false,\n\tisTouch: false,\n\n\tdelay: null,\n\tdelayTimeoutId: null,\n\tminDistance: null,\n\n\thandleTouchScrollProxy: null, // calls handleTouchScroll, always bound to `this`\n\n\n\tconstructor: function(options) {\n\t\tthis.options = options || {};\n\t\tthis.handleTouchScrollProxy = proxy(this, 'handleTouchScroll');\n\t\tthis.initMouseIgnoring(500);\n\t},\n\n\n\t// Interaction (high-level)\n\t// -----------------------------------------------------------------------------------------------------------------\n\n\n\tstartInteraction: function(ev, extraOptions) {\n\t\tvar isTouch = getEvIsTouch(ev);\n\n\t\tif (ev.type === 'mousedown') {\n\t\t\tif (this.isIgnoringMouse) {\n\t\t\t\treturn;\n\t\t\t}\n\t\t\telse if (!isPrimaryMouseButton(ev)) {\n\t\t\t\treturn;\n\t\t\t}\n\t\t\telse {\n\t\t\t\tev.preventDefault(); // prevents native selection in most browsers\n\t\t\t}\n\t\t}\n\n\t\tif (!this.isInteracting) {\n\n\t\t\t// process options\n\t\t\textraOptions = extraOptions || {};\n\t\t\tthis.delay = firstDefined(extraOptions.delay, this.options.delay, 0);\n\t\t\tthis.minDistance = firstDefined(extraOptions.distance, this.options.distance, 0);\n\t\t\tthis.subjectEl = this.options.subjectEl;\n\n\t\t\tthis.isInteracting = true;\n\t\t\tthis.isTouch = isTouch;\n\t\t\tthis.isDelayEnded = false;\n\t\t\tthis.isDistanceSurpassed = false;\n\n\t\t\tthis.originX = getEvX(ev);\n\t\t\tthis.originY = getEvY(ev);\n\t\t\tthis.scrollEl = getScrollParent($(ev.target));\n\n\t\t\tthis.bindHandlers();\n\t\t\tthis.initAutoScroll();\n\t\t\tthis.handleInteractionStart(ev);\n\t\t\tthis.startDelay(ev);\n\n\t\t\tif (!this.minDistance) {\n\t\t\t\tthis.handleDistanceSurpassed(ev);\n\t\t\t}\n\t\t}\n\t},\n\n\n\thandleInteractionStart: function(ev) {\n\t\tthis.trigger('interactionStart', ev);\n\t},\n\n\n\tendInteraction: function(ev, isCancelled) {\n\t\tif (this.isInteracting) {\n\t\t\tthis.endDrag(ev);\n\n\t\t\tif (this.delayTimeoutId) {\n\t\t\t\tclearTimeout(this.delayTimeoutId);\n\t\t\t\tthis.delayTimeoutId = null;\n\t\t\t}\n\n\t\t\tthis.destroyAutoScroll();\n\t\t\tthis.unbindHandlers();\n\n\t\t\tthis.isInteracting = false;\n\t\t\tthis.handleInteractionEnd(ev, isCancelled);\n\n\t\t\t// a touchstart+touchend on the same element will result in the following addition simulated events:\n\t\t\t// mouseover + mouseout + click\n\t\t\t// let's ignore these bogus events\n\t\t\tif (this.isTouch) {\n\t\t\t\tthis.tempIgnoreMouse();\n\t\t\t}\n\t\t}\n\t},\n\n\n\thandleInteractionEnd: function(ev, isCancelled) {\n\t\tthis.trigger('interactionEnd', ev, isCancelled || false);\n\t},\n\n\n\t// Binding To DOM\n\t// -----------------------------------------------------------------------------------------------------------------\n\n\n\tbindHandlers: function() {\n\t\tvar _this = this;\n\t\tvar touchStartIgnores = 1;\n\n\t\tif (this.isTouch) {\n\t\t\tthis.listenTo($(document), {\n\t\t\t\ttouchmove: this.handleTouchMove,\n\t\t\t\ttouchend: this.endInteraction,\n\t\t\t\ttouchcancel: this.endInteraction,\n\n\t\t\t\t// Sometimes touchend doesn't fire\n\t\t\t\t// (can't figure out why. touchcancel doesn't fire either. has to do with scrolling?)\n\t\t\t\t// If another touchstart happens, we know it's bogus, so cancel the drag.\n\t\t\t\t// touchend will continue to be broken until user does a shorttap/scroll, but this is best we can do.\n\t\t\t\ttouchstart: function(ev) {\n\t\t\t\t\tif (touchStartIgnores) { // bindHandlers is called from within a touchstart,\n\t\t\t\t\t\ttouchStartIgnores--; // and we don't want this to fire immediately, so ignore.\n\t\t\t\t\t}\n\t\t\t\t\telse {\n\t\t\t\t\t\t_this.endInteraction(ev, true); // isCancelled=true\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t});\n\n\t\t\t// listen to ALL scroll actions on the page\n\t\t\tif (\n\t\t\t\t!bindAnyScroll(this.handleTouchScrollProxy) && // hopefully this works and short-circuits the rest\n\t\t\t\tthis.scrollEl // otherwise, attach a single handler to this\n\t\t\t) {\n\t\t\t\tthis.listenTo(this.scrollEl, 'scroll', this.handleTouchScroll);\n\t\t\t}\n\t\t}\n\t\telse {\n\t\t\tthis.listenTo($(document), {\n\t\t\t\tmousemove: this.handleMouseMove,\n\t\t\t\tmouseup: this.endInteraction\n\t\t\t});\n\t\t}\n\n\t\tthis.listenTo($(document), {\n\t\t\tselectstart: preventDefault, // don't allow selection while dragging\n\t\t\tcontextmenu: preventDefault // long taps would open menu on Chrome dev tools\n\t\t});\n\t},\n\n\n\tunbindHandlers: function() {\n\t\tthis.stopListeningTo($(document));\n\n\t\t// unbind scroll listening\n\t\tunbindAnyScroll(this.handleTouchScrollProxy);\n\t\tif (this.scrollEl) {\n\t\t\tthis.stopListeningTo(this.scrollEl, 'scroll');\n\t\t}\n\t},\n\n\n\t// Drag (high-level)\n\t// -----------------------------------------------------------------------------------------------------------------\n\n\n\t// extraOptions ignored if drag already started\n\tstartDrag: function(ev, extraOptions) {\n\t\tthis.startInteraction(ev, extraOptions); // ensure interaction began\n\n\t\tif (!this.isDragging) {\n\t\t\tthis.isDragging = true;\n\t\t\tthis.handleDragStart(ev);\n\t\t}\n\t},\n\n\n\thandleDragStart: function(ev) {\n\t\tthis.trigger('dragStart', ev);\n\t\tthis.initHrefHack();\n\t},\n\n\n\thandleMove: function(ev) {\n\t\tvar dx = getEvX(ev) - this.originX;\n\t\tvar dy = getEvY(ev) - this.originY;\n\t\tvar minDistance = this.minDistance;\n\t\tvar distanceSq; // current distance from the origin, squared\n\n\t\tif (!this.isDistanceSurpassed) {\n\t\t\tdistanceSq = dx * dx + dy * dy;\n\t\t\tif (distanceSq >= minDistance * minDistance) { // use pythagorean theorem\n\t\t\t\tthis.handleDistanceSurpassed(ev);\n\t\t\t}\n\t\t}\n\n\t\tif (this.isDragging) {\n\t\t\tthis.handleDrag(dx, dy, ev);\n\t\t}\n\t},\n\n\n\t// Called while the mouse is being moved and when we know a legitimate drag is taking place\n\thandleDrag: function(dx, dy, ev) {\n\t\tthis.trigger('drag', dx, dy, ev);\n\t\tthis.updateAutoScroll(ev); // will possibly cause scrolling\n\t},\n\n\n\tendDrag: function(ev) {\n\t\tif (this.isDragging) {\n\t\t\tthis.isDragging = false;\n\t\t\tthis.handleDragEnd(ev);\n\t\t}\n\t},\n\n\n\thandleDragEnd: function(ev) {\n\t\tthis.trigger('dragEnd', ev);\n\t\tthis.destroyHrefHack();\n\t},\n\n\n\t// Delay\n\t// -----------------------------------------------------------------------------------------------------------------\n\n\n\tstartDelay: function(initialEv) {\n\t\tvar _this = this;\n\n\t\tif (this.delay) {\n\t\t\tthis.delayTimeoutId = setTimeout(function() {\n\t\t\t\t_this.handleDelayEnd(initialEv);\n\t\t\t}, this.delay);\n\t\t}\n\t\telse {\n\t\t\tthis.handleDelayEnd(initialEv);\n\t\t}\n\t},\n\n\n\thandleDelayEnd: function(initialEv) {\n\t\tthis.isDelayEnded = true;\n\n\t\tif (this.isDistanceSurpassed) {\n\t\t\tthis.startDrag(initialEv);\n\t\t}\n\t},\n\n\n\t// Distance\n\t// -----------------------------------------------------------------------------------------------------------------\n\n\n\thandleDistanceSurpassed: function(ev) {\n\t\tthis.isDistanceSurpassed = true;\n\n\t\tif (this.isDelayEnded) {\n\t\t\tthis.startDrag(ev);\n\t\t}\n\t},\n\n\n\t// Mouse / Touch\n\t// -----------------------------------------------------------------------------------------------------------------\n\n\n\thandleTouchMove: function(ev) {\n\t\t// prevent inertia and touchmove-scrolling while dragging\n\t\tif (this.isDragging) {\n\t\t\tev.preventDefault();\n\t\t}\n\n\t\tthis.handleMove(ev);\n\t},\n\n\n\thandleMouseMove: function(ev) {\n\t\tthis.handleMove(ev);\n\t},\n\n\n\t// Scrolling (unrelated to auto-scroll)\n\t// -----------------------------------------------------------------------------------------------------------------\n\n\n\thandleTouchScroll: function(ev) {\n\t\t// if the drag is being initiated by touch, but a scroll happens before\n\t\t// the drag-initiating delay is over, cancel the drag\n\t\tif (!this.isDragging) {\n\t\t\tthis.endInteraction(ev, true); // isCancelled=true\n\t\t}\n\t},\n\n\n\t// HREF Hack\n\t// -----------------------------------------------------------------------------------------------------------------\n\n\n\tinitHrefHack: function() {\n\t\tvar subjectEl = this.subjectEl;\n\n\t\t// remove a mousedown'd 's href so it is not visited (IE8 bug)\n\t\tif ((this.subjectHref = subjectEl ? subjectEl.attr('href') : null)) {\n\t\t\tsubjectEl.removeAttr('href');\n\t\t}\n\t},\n\n\n\tdestroyHrefHack: function() {\n\t\tvar subjectEl = this.subjectEl;\n\t\tvar subjectHref = this.subjectHref;\n\n\t\t// restore a mousedown'd 's href (for IE8 bug)\n\t\tsetTimeout(function() { // must be outside of the click's execution\n\t\t\tif (subjectHref) {\n\t\t\t\tsubjectEl.attr('href', subjectHref);\n\t\t\t}\n\t\t}, 0);\n\t},\n\n\n\t// Utils\n\t// -----------------------------------------------------------------------------------------------------------------\n\n\n\t// Triggers a callback. Calls a function in the option hash of the same name.\n\t// Arguments beyond the first `name` are forwarded on.\n\ttrigger: function(name) {\n\t\tif (this.options[name]) {\n\t\t\tthis.options[name].apply(this, Array.prototype.slice.call(arguments, 1));\n\t\t}\n\t\t// makes _methods callable by event name. TODO: kill this\n\t\tif (this['_' + name]) {\n\t\t\tthis['_' + name].apply(this, Array.prototype.slice.call(arguments, 1));\n\t\t}\n\t}\n\n\n});\n\n;;\n/*\nthis.scrollEl is set in DragListener\n*/\nDragListener.mixin({\n\n\tisAutoScroll: false,\n\n\tscrollBounds: null, // { top, bottom, left, right }\n\tscrollTopVel: null, // pixels per second\n\tscrollLeftVel: null, // pixels per second\n\tscrollIntervalId: null, // ID of setTimeout for scrolling animation loop\n\n\t// defaults\n\tscrollSensitivity: 30, // pixels from edge for scrolling to start\n\tscrollSpeed: 200, // pixels per second, at maximum speed\n\tscrollIntervalMs: 50, // millisecond wait between scroll increment\n\n\n\tinitAutoScroll: function() {\n\t\tvar scrollEl = this.scrollEl;\n\n\t\tthis.isAutoScroll =\n\t\t\tthis.options.scroll &&\n\t\t\tscrollEl &&\n\t\t\t!scrollEl.is(window) &&\n\t\t\t!scrollEl.is(document);\n\n\t\tif (this.isAutoScroll) {\n\t\t\t// debounce makes sure rapid calls don't happen\n\t\t\tthis.listenTo(scrollEl, 'scroll', debounce(this.handleDebouncedScroll, 100));\n\t\t}\n\t},\n\n\n\tdestroyAutoScroll: function() {\n\t\tthis.endAutoScroll(); // kill any animation loop\n\n\t\t// remove the scroll handler if there is a scrollEl\n\t\tif (this.isAutoScroll) {\n\t\t\tthis.stopListeningTo(this.scrollEl, 'scroll'); // will probably get removed by unbindHandlers too :(\n\t\t}\n\t},\n\n\n\t// Computes and stores the bounding rectangle of scrollEl\n\tcomputeScrollBounds: function() {\n\t\tif (this.isAutoScroll) {\n\t\t\tthis.scrollBounds = getOuterRect(this.scrollEl);\n\t\t\t// TODO: use getClientRect in future. but prevents auto scrolling when on top of scrollbars\n\t\t}\n\t},\n\n\n\t// Called when the dragging is in progress and scrolling should be updated\n\tupdateAutoScroll: function(ev) {\n\t\tvar sensitivity = this.scrollSensitivity;\n\t\tvar bounds = this.scrollBounds;\n\t\tvar topCloseness, bottomCloseness;\n\t\tvar leftCloseness, rightCloseness;\n\t\tvar topVel = 0;\n\t\tvar leftVel = 0;\n\n\t\tif (bounds) { // only scroll if scrollEl exists\n\n\t\t\t// compute closeness to edges. valid range is from 0.0 - 1.0\n\t\t\ttopCloseness = (sensitivity - (getEvY(ev) - bounds.top)) / sensitivity;\n\t\t\tbottomCloseness = (sensitivity - (bounds.bottom - getEvY(ev))) / sensitivity;\n\t\t\tleftCloseness = (sensitivity - (getEvX(ev) - bounds.left)) / sensitivity;\n\t\t\trightCloseness = (sensitivity - (bounds.right - getEvX(ev))) / sensitivity;\n\n\t\t\t// translate vertical closeness into velocity.\n\t\t\t// mouse must be completely in bounds for velocity to happen.\n\t\t\tif (topCloseness >= 0 && topCloseness <= 1) {\n\t\t\t\ttopVel = topCloseness * this.scrollSpeed * -1; // negative. for scrolling up\n\t\t\t}\n\t\t\telse if (bottomCloseness >= 0 && bottomCloseness <= 1) {\n\t\t\t\ttopVel = bottomCloseness * this.scrollSpeed;\n\t\t\t}\n\n\t\t\t// translate horizontal closeness into velocity\n\t\t\tif (leftCloseness >= 0 && leftCloseness <= 1) {\n\t\t\t\tleftVel = leftCloseness * this.scrollSpeed * -1; // negative. for scrolling left\n\t\t\t}\n\t\t\telse if (rightCloseness >= 0 && rightCloseness <= 1) {\n\t\t\t\tleftVel = rightCloseness * this.scrollSpeed;\n\t\t\t}\n\t\t}\n\n\t\tthis.setScrollVel(topVel, leftVel);\n\t},\n\n\n\t// Sets the speed-of-scrolling for the scrollEl\n\tsetScrollVel: function(topVel, leftVel) {\n\n\t\tthis.scrollTopVel = topVel;\n\t\tthis.scrollLeftVel = leftVel;\n\n\t\tthis.constrainScrollVel(); // massages into realistic values\n\n\t\t// if there is non-zero velocity, and an animation loop hasn't already started, then START\n\t\tif ((this.scrollTopVel || this.scrollLeftVel) && !this.scrollIntervalId) {\n\t\t\tthis.scrollIntervalId = setInterval(\n\t\t\t\tproxy(this, 'scrollIntervalFunc'), // scope to `this`\n\t\t\t\tthis.scrollIntervalMs\n\t\t\t);\n\t\t}\n\t},\n\n\n\t// Forces scrollTopVel and scrollLeftVel to be zero if scrolling has already gone all the way\n\tconstrainScrollVel: function() {\n\t\tvar el = this.scrollEl;\n\n\t\tif (this.scrollTopVel < 0) { // scrolling up?\n\t\t\tif (el.scrollTop() <= 0) { // already scrolled all the way up?\n\t\t\t\tthis.scrollTopVel = 0;\n\t\t\t}\n\t\t}\n\t\telse if (this.scrollTopVel > 0) { // scrolling down?\n\t\t\tif (el.scrollTop() + el[0].clientHeight >= el[0].scrollHeight) { // already scrolled all the way down?\n\t\t\t\tthis.scrollTopVel = 0;\n\t\t\t}\n\t\t}\n\n\t\tif (this.scrollLeftVel < 0) { // scrolling left?\n\t\t\tif (el.scrollLeft() <= 0) { // already scrolled all the left?\n\t\t\t\tthis.scrollLeftVel = 0;\n\t\t\t}\n\t\t}\n\t\telse if (this.scrollLeftVel > 0) { // scrolling right?\n\t\t\tif (el.scrollLeft() + el[0].clientWidth >= el[0].scrollWidth) { // already scrolled all the way right?\n\t\t\t\tthis.scrollLeftVel = 0;\n\t\t\t}\n\t\t}\n\t},\n\n\n\t// This function gets called during every iteration of the scrolling animation loop\n\tscrollIntervalFunc: function() {\n\t\tvar el = this.scrollEl;\n\t\tvar frac = this.scrollIntervalMs / 1000; // considering animation frequency, what the vel should be mult'd by\n\n\t\t// change the value of scrollEl's scroll\n\t\tif (this.scrollTopVel) {\n\t\t\tel.scrollTop(el.scrollTop() + this.scrollTopVel * frac);\n\t\t}\n\t\tif (this.scrollLeftVel) {\n\t\t\tel.scrollLeft(el.scrollLeft() + this.scrollLeftVel * frac);\n\t\t}\n\n\t\tthis.constrainScrollVel(); // since the scroll values changed, recompute the velocities\n\n\t\t// if scrolled all the way, which causes the vels to be zero, stop the animation loop\n\t\tif (!this.scrollTopVel && !this.scrollLeftVel) {\n\t\t\tthis.endAutoScroll();\n\t\t}\n\t},\n\n\n\t// Kills any existing scrolling animation loop\n\tendAutoScroll: function() {\n\t\tif (this.scrollIntervalId) {\n\t\t\tclearInterval(this.scrollIntervalId);\n\t\t\tthis.scrollIntervalId = null;\n\n\t\t\tthis.handleScrollEnd();\n\t\t}\n\t},\n\n\n\t// Get called when the scrollEl is scrolled (NOTE: this is delayed via debounce)\n\thandleDebouncedScroll: function() {\n\t\t// recompute all coordinates, but *only* if this is *not* part of our scrolling animation\n\t\tif (!this.scrollIntervalId) {\n\t\t\tthis.handleScrollEnd();\n\t\t}\n\t},\n\n\n\t// Called when scrolling has stopped, whether through auto scroll, or the user scrolling\n\thandleScrollEnd: function() {\n\t}\n\n});\n;;\n\n/* Tracks mouse movements over a component and raises events about which hit the mouse is over.\n------------------------------------------------------------------------------------------------------------------------\noptions:\n- subjectEl\n- subjectCenter\n*/\n\nvar HitDragListener = DragListener.extend({\n\n\tcomponent: null, // converts coordinates to hits\n\t\t// methods: prepareHits, releaseHits, queryHit\n\n\torigHit: null, // the hit the mouse was over when listening started\n\thit: null, // the hit the mouse is over\n\tcoordAdjust: null, // delta that will be added to the mouse coordinates when computing collisions\n\n\n\tconstructor: function(component, options) {\n\t\tDragListener.call(this, options); // call the super-constructor\n\n\t\tthis.component = component;\n\t},\n\n\n\t// Called when drag listening starts (but a real drag has not necessarily began).\n\t// ev might be undefined if dragging was started manually.\n\thandleInteractionStart: function(ev) {\n\t\tvar subjectEl = this.subjectEl;\n\t\tvar subjectRect;\n\t\tvar origPoint;\n\t\tvar point;\n\n\t\tthis.computeCoords();\n\n\t\tif (ev) {\n\t\t\torigPoint = { left: getEvX(ev), top: getEvY(ev) };\n\t\t\tpoint = origPoint;\n\n\t\t\t// constrain the point to bounds of the element being dragged\n\t\t\tif (subjectEl) {\n\t\t\t\tsubjectRect = getOuterRect(subjectEl); // used for centering as well\n\t\t\t\tpoint = constrainPoint(point, subjectRect);\n\t\t\t}\n\n\t\t\tthis.origHit = this.queryHit(point.left, point.top);\n\n\t\t\t// treat the center of the subject as the collision point?\n\t\t\tif (subjectEl && this.options.subjectCenter) {\n\n\t\t\t\t// only consider the area the subject overlaps the hit. best for large subjects.\n\t\t\t\t// TODO: skip this if hit didn't supply left/right/top/bottom\n\t\t\t\tif (this.origHit) {\n\t\t\t\t\tsubjectRect = intersectRects(this.origHit, subjectRect) ||\n\t\t\t\t\t\tsubjectRect; // in case there is no intersection\n\t\t\t\t}\n\n\t\t\t\tpoint = getRectCenter(subjectRect);\n\t\t\t}\n\n\t\t\tthis.coordAdjust = diffPoints(point, origPoint); // point - origPoint\n\t\t}\n\t\telse {\n\t\t\tthis.origHit = null;\n\t\t\tthis.coordAdjust = null;\n\t\t}\n\n\t\t// call the super-method. do it after origHit has been computed\n\t\tDragListener.prototype.handleInteractionStart.apply(this, arguments);\n\t},\n\n\n\t// Recomputes the drag-critical positions of elements\n\tcomputeCoords: function() {\n\t\tthis.component.prepareHits();\n\t\tthis.computeScrollBounds(); // why is this here??????\n\t},\n\n\n\t// Called when the actual drag has started\n\thandleDragStart: function(ev) {\n\t\tvar hit;\n\n\t\tDragListener.prototype.handleDragStart.apply(this, arguments); // call the super-method\n\n\t\t// might be different from this.origHit if the min-distance is large\n\t\thit = this.queryHit(getEvX(ev), getEvY(ev));\n\n\t\t// report the initial hit the mouse is over\n\t\t// especially important if no min-distance and drag starts immediately\n\t\tif (hit) {\n\t\t\tthis.handleHitOver(hit);\n\t\t}\n\t},\n\n\n\t// Called when the drag moves\n\thandleDrag: function(dx, dy, ev) {\n\t\tvar hit;\n\n\t\tDragListener.prototype.handleDrag.apply(this, arguments); // call the super-method\n\n\t\thit = this.queryHit(getEvX(ev), getEvY(ev));\n\n\t\tif (!isHitsEqual(hit, this.hit)) { // a different hit than before?\n\t\t\tif (this.hit) {\n\t\t\t\tthis.handleHitOut();\n\t\t\t}\n\t\t\tif (hit) {\n\t\t\t\tthis.handleHitOver(hit);\n\t\t\t}\n\t\t}\n\t},\n\n\n\t// Called when dragging has been stopped\n\thandleDragEnd: function() {\n\t\tthis.handleHitDone();\n\t\tDragListener.prototype.handleDragEnd.apply(this, arguments); // call the super-method\n\t},\n\n\n\t// Called when a the mouse has just moved over a new hit\n\thandleHitOver: function(hit) {\n\t\tvar isOrig = isHitsEqual(hit, this.origHit);\n\n\t\tthis.hit = hit;\n\n\t\tthis.trigger('hitOver', this.hit, isOrig, this.origHit);\n\t},\n\n\n\t// Called when the mouse has just moved out of a hit\n\thandleHitOut: function() {\n\t\tif (this.hit) {\n\t\t\tthis.trigger('hitOut', this.hit);\n\t\t\tthis.handleHitDone();\n\t\t\tthis.hit = null;\n\t\t}\n\t},\n\n\n\t// Called after a hitOut. Also called before a dragStop\n\thandleHitDone: function() {\n\t\tif (this.hit) {\n\t\t\tthis.trigger('hitDone', this.hit);\n\t\t}\n\t},\n\n\n\t// Called when the interaction ends, whether there was a real drag or not\n\thandleInteractionEnd: function() {\n\t\tDragListener.prototype.handleInteractionEnd.apply(this, arguments); // call the super-method\n\n\t\tthis.origHit = null;\n\t\tthis.hit = null;\n\n\t\tthis.component.releaseHits();\n\t},\n\n\n\t// Called when scrolling has stopped, whether through auto scroll, or the user scrolling\n\thandleScrollEnd: function() {\n\t\tDragListener.prototype.handleScrollEnd.apply(this, arguments); // call the super-method\n\n\t\tthis.computeCoords(); // hits' absolute positions will be in new places. recompute\n\t},\n\n\n\t// Gets the hit underneath the coordinates for the given mouse event\n\tqueryHit: function(left, top) {\n\n\t\tif (this.coordAdjust) {\n\t\t\tleft += this.coordAdjust.left;\n\t\t\ttop += this.coordAdjust.top;\n\t\t}\n\n\t\treturn this.component.queryHit(left, top);\n\t}\n\n});\n\n\n// Returns `true` if the hits are identically equal. `false` otherwise. Must be from the same component.\n// Two null values will be considered equal, as two \"out of the component\" states are the same.\nfunction isHitsEqual(hit0, hit1) {\n\n\tif (!hit0 && !hit1) {\n\t\treturn true;\n\t}\n\n\tif (hit0 && hit1) {\n\t\treturn hit0.component === hit1.component &&\n\t\t\tisHitPropsWithin(hit0, hit1) &&\n\t\t\tisHitPropsWithin(hit1, hit0); // ensures all props are identical\n\t}\n\n\treturn false;\n}\n\n\n// Returns true if all of subHit's non-standard properties are within superHit\nfunction isHitPropsWithin(subHit, superHit) {\n\tfor (var propName in subHit) {\n\t\tif (!/^(component|left|right|top|bottom)$/.test(propName)) {\n\t\t\tif (subHit[propName] !== superHit[propName]) {\n\t\t\t\treturn false;\n\t\t\t}\n\t\t}\n\t}\n\treturn true;\n}\n\n;;\n\n/* Creates a clone of an element and lets it track the mouse as it moves\n----------------------------------------------------------------------------------------------------------------------*/\n\nvar MouseFollower = Class.extend(ListenerMixin, {\n\n\toptions: null,\n\n\tsourceEl: null, // the element that will be cloned and made to look like it is dragging\n\tel: null, // the clone of `sourceEl` that will track the mouse\n\tparentEl: null, // the element that `el` (the clone) will be attached to\n\n\t// the initial position of el, relative to the offset parent. made to match the initial offset of sourceEl\n\ttop0: null,\n\tleft0: null,\n\n\t// the absolute coordinates of the initiating touch/mouse action\n\ty0: null,\n\tx0: null,\n\n\t// the number of pixels the mouse has moved from its initial position\n\ttopDelta: null,\n\tleftDelta: null,\n\n\tisFollowing: false,\n\tisHidden: false,\n\tisAnimating: false, // doing the revert animation?\n\n\tconstructor: function(sourceEl, options) {\n\t\tthis.options = options = options || {};\n\t\tthis.sourceEl = sourceEl;\n\t\tthis.parentEl = options.parentEl ? $(options.parentEl) : sourceEl.parent(); // default to sourceEl's parent\n\t},\n\n\n\t// Causes the element to start following the mouse\n\tstart: function(ev) {\n\t\tif (!this.isFollowing) {\n\t\t\tthis.isFollowing = true;\n\n\t\t\tthis.y0 = getEvY(ev);\n\t\t\tthis.x0 = getEvX(ev);\n\t\t\tthis.topDelta = 0;\n\t\t\tthis.leftDelta = 0;\n\n\t\t\tif (!this.isHidden) {\n\t\t\t\tthis.updatePosition();\n\t\t\t}\n\n\t\t\tif (getEvIsTouch(ev)) {\n\t\t\t\tthis.listenTo($(document), 'touchmove', this.handleMove);\n\t\t\t}\n\t\t\telse {\n\t\t\t\tthis.listenTo($(document), 'mousemove', this.handleMove);\n\t\t\t}\n\t\t}\n\t},\n\n\n\t// Causes the element to stop following the mouse. If shouldRevert is true, will animate back to original position.\n\t// `callback` gets invoked when the animation is complete. If no animation, it is invoked immediately.\n\tstop: function(shouldRevert, callback) {\n\t\tvar _this = this;\n\t\tvar revertDuration = this.options.revertDuration;\n\n\t\tfunction complete() { // might be called by .animate(), which might change `this` context\n\t\t\t_this.isAnimating = false;\n\t\t\t_this.removeElement();\n\n\t\t\t_this.top0 = _this.left0 = null; // reset state for future updatePosition calls\n\n\t\t\tif (callback) {\n\t\t\t\tcallback();\n\t\t\t}\n\t\t}\n\n\t\tif (this.isFollowing && !this.isAnimating) { // disallow more than one stop animation at a time\n\t\t\tthis.isFollowing = false;\n\n\t\t\tthis.stopListeningTo($(document));\n\n\t\t\tif (shouldRevert && revertDuration && !this.isHidden) { // do a revert animation?\n\t\t\t\tthis.isAnimating = true;\n\t\t\t\tthis.el.animate({\n\t\t\t\t\ttop: this.top0,\n\t\t\t\t\tleft: this.left0\n\t\t\t\t}, {\n\t\t\t\t\tduration: revertDuration,\n\t\t\t\t\tcomplete: complete\n\t\t\t\t});\n\t\t\t}\n\t\t\telse {\n\t\t\t\tcomplete();\n\t\t\t}\n\t\t}\n\t},\n\n\n\t// Gets the tracking element. Create it if necessary\n\tgetEl: function() {\n\t\tvar el = this.el;\n\n\t\tif (!el) {\n\t\t\tthis.sourceEl.width(); // hack to force IE8 to compute correct bounding box\n\t\t\tel = this.el = this.sourceEl.clone()\n\t\t\t\t.addClass(this.options.additionalClass || '')\n\t\t\t\t.css({\n\t\t\t\t\tposition: 'absolute',\n\t\t\t\t\tvisibility: '', // in case original element was hidden (commonly through hideEvents())\n\t\t\t\t\tdisplay: this.isHidden ? 'none' : '', // for when initially hidden\n\t\t\t\t\tmargin: 0,\n\t\t\t\t\tright: 'auto', // erase and set width instead\n\t\t\t\t\tbottom: 'auto', // erase and set height instead\n\t\t\t\t\twidth: this.sourceEl.width(), // explicit height in case there was a 'right' value\n\t\t\t\t\theight: this.sourceEl.height(), // explicit width in case there was a 'bottom' value\n\t\t\t\t\topacity: this.options.opacity || '',\n\t\t\t\t\tzIndex: this.options.zIndex\n\t\t\t\t});\n\n\t\t\t// we don't want long taps or any mouse interaction causing selection/menus.\n\t\t\t// would use preventSelection(), but that prevents selectstart, causing problems.\n\t\t\tel.addClass('fc-unselectable');\n\n\t\t\tel.appendTo(this.parentEl);\n\t\t}\n\n\t\treturn el;\n\t},\n\n\n\t// Removes the tracking element if it has already been created\n\tremoveElement: function() {\n\t\tif (this.el) {\n\t\t\tthis.el.remove();\n\t\t\tthis.el = null;\n\t\t}\n\t},\n\n\n\t// Update the CSS position of the tracking element\n\tupdatePosition: function() {\n\t\tvar sourceOffset;\n\t\tvar origin;\n\n\t\tthis.getEl(); // ensure this.el\n\n\t\t// make sure origin info was computed\n\t\tif (this.top0 === null) {\n\t\t\tthis.sourceEl.width(); // hack to force IE8 to compute correct bounding box\n\t\t\tsourceOffset = this.sourceEl.offset();\n\t\t\torigin = this.el.offsetParent().offset();\n\t\t\tthis.top0 = sourceOffset.top - origin.top;\n\t\t\tthis.left0 = sourceOffset.left - origin.left;\n\t\t}\n\n\t\tthis.el.css({\n\t\t\ttop: this.top0 + this.topDelta,\n\t\t\tleft: this.left0 + this.leftDelta\n\t\t});\n\t},\n\n\n\t// Gets called when the user moves the mouse\n\thandleMove: function(ev) {\n\t\tthis.topDelta = getEvY(ev) - this.y0;\n\t\tthis.leftDelta = getEvX(ev) - this.x0;\n\n\t\tif (!this.isHidden) {\n\t\t\tthis.updatePosition();\n\t\t}\n\t},\n\n\n\t// Temporarily makes the tracking element invisible. Can be called before following starts\n\thide: function() {\n\t\tif (!this.isHidden) {\n\t\t\tthis.isHidden = true;\n\t\t\tif (this.el) {\n\t\t\t\tthis.el.hide();\n\t\t\t}\n\t\t}\n\t},\n\n\n\t// Show the tracking element after it has been temporarily hidden\n\tshow: function() {\n\t\tif (this.isHidden) {\n\t\t\tthis.isHidden = false;\n\t\t\tthis.updatePosition();\n\t\t\tthis.getEl().show();\n\t\t}\n\t}\n\n});\n\n;;\n\n/* An abstract class comprised of a \"grid\" of areas that each represent a specific datetime\n----------------------------------------------------------------------------------------------------------------------*/\n\nvar Grid = FC.Grid = Class.extend(ListenerMixin, MouseIgnorerMixin, {\n\n\tview: null, // a View object\n\tisRTL: null, // shortcut to the view's isRTL option\n\n\tstart: null,\n\tend: null,\n\n\tel: null, // the containing element\n\telsByFill: null, // a hash of jQuery element sets used for rendering each fill. Keyed by fill name.\n\n\t// derived from options\n\teventTimeFormat: null,\n\tdisplayEventTime: null,\n\tdisplayEventEnd: null,\n\n\tminResizeDuration: null, // TODO: hack. set by subclasses. minumum event resize duration\n\n\t// if defined, holds the unit identified (ex: \"year\" or \"month\") that determines the level of granularity\n\t// of the date areas. if not defined, assumes to be day and time granularity.\n\t// TODO: port isTimeScale into same system?\n\tlargeUnit: null,\n\n\tdayDragListener: null,\n\tsegDragListener: null,\n\tsegResizeListener: null,\n\texternalDragListener: null,\n\n\n\tconstructor: function(view) {\n\t\tthis.view = view;\n\t\tthis.isRTL = view.opt('isRTL');\n\t\tthis.elsByFill = {};\n\n\t\tthis.dayDragListener = this.buildDayDragListener();\n\t\tthis.initMouseIgnoring();\n\t},\n\n\n\t/* Options\n\t------------------------------------------------------------------------------------------------------------------*/\n\n\n\t// Generates the format string used for event time text, if not explicitly defined by 'timeFormat'\n\tcomputeEventTimeFormat: function() {\n\t\treturn this.view.opt('smallTimeFormat');\n\t},\n\n\n\t// Determines whether events should have their end times displayed, if not explicitly defined by 'displayEventTime'.\n\t// Only applies to non-all-day events.\n\tcomputeDisplayEventTime: function() {\n\t\treturn true;\n\t},\n\n\n\t// Determines whether events should have their end times displayed, if not explicitly defined by 'displayEventEnd'\n\tcomputeDisplayEventEnd: function() {\n\t\treturn true;\n\t},\n\n\n\t/* Dates\n\t------------------------------------------------------------------------------------------------------------------*/\n\n\n\t// Tells the grid about what period of time to display.\n\t// Any date-related internal data should be generated.\n\tsetRange: function(range) {\n\t\tthis.start = range.start.clone();\n\t\tthis.end = range.end.clone();\n\n\t\tthis.rangeUpdated();\n\t\tthis.processRangeOptions();\n\t},\n\n\n\t// Called when internal variables that rely on the range should be updated\n\trangeUpdated: function() {\n\t},\n\n\n\t// Updates values that rely on options and also relate to range\n\tprocessRangeOptions: function() {\n\t\tvar view = this.view;\n\t\tvar displayEventTime;\n\t\tvar displayEventEnd;\n\n\t\tthis.eventTimeFormat =\n\t\t\tview.opt('eventTimeFormat') ||\n\t\t\tview.opt('timeFormat') || // deprecated\n\t\t\tthis.computeEventTimeFormat();\n\n\t\tdisplayEventTime = view.opt('displayEventTime');\n\t\tif (displayEventTime == null) {\n\t\t\tdisplayEventTime = this.computeDisplayEventTime(); // might be based off of range\n\t\t}\n\n\t\tdisplayEventEnd = view.opt('displayEventEnd');\n\t\tif (displayEventEnd == null) {\n\t\t\tdisplayEventEnd = this.computeDisplayEventEnd(); // might be based off of range\n\t\t}\n\n\t\tthis.displayEventTime = displayEventTime;\n\t\tthis.displayEventEnd = displayEventEnd;\n\t},\n\n\n\t// Converts a span (has unzoned start/end and any other grid-specific location information)\n\t// into an array of segments (pieces of events whose format is decided by the grid).\n\tspanToSegs: function(span) {\n\t\t// subclasses must implement\n\t},\n\n\n\t// Diffs the two dates, returning a duration, based on granularity of the grid\n\t// TODO: port isTimeScale into this system?\n\tdiffDates: function(a, b) {\n\t\tif (this.largeUnit) {\n\t\t\treturn diffByUnit(a, b, this.largeUnit);\n\t\t}\n\t\telse {\n\t\t\treturn diffDayTime(a, b);\n\t\t}\n\t},\n\n\n\t/* Hit Area\n\t------------------------------------------------------------------------------------------------------------------*/\n\n\n\t// Called before one or more queryHit calls might happen. Should prepare any cached coordinates for queryHit\n\tprepareHits: function() {\n\t},\n\n\n\t// Called when queryHit calls have subsided. Good place to clear any coordinate caches.\n\treleaseHits: function() {\n\t},\n\n\n\t// Given coordinates from the topleft of the document, return data about the date-related area underneath.\n\t// Can return an object with arbitrary properties (although top/right/left/bottom are encouraged).\n\t// Must have a `grid` property, a reference to this current grid. TODO: avoid this\n\t// The returned object will be processed by getHitSpan and getHitEl.\n\tqueryHit: function(leftOffset, topOffset) {\n\t},\n\n\n\t// Given position-level information about a date-related area within the grid,\n\t// should return an object with at least a start/end date. Can provide other information as well.\n\tgetHitSpan: function(hit) {\n\t},\n\n\n\t// Given position-level information about a date-related area within the grid,\n\t// should return a jQuery element that best represents it. passed to dayClick callback.\n\tgetHitEl: function(hit) {\n\t},\n\n\n\t/* Rendering\n\t------------------------------------------------------------------------------------------------------------------*/\n\n\n\t// Sets the container element that the grid should render inside of.\n\t// Does other DOM-related initializations.\n\tsetElement: function(el) {\n\t\tthis.el = el;\n\t\tpreventSelection(el);\n\n\t\tthis.bindDayHandler('touchstart', this.dayTouchStart);\n\t\tthis.bindDayHandler('mousedown', this.dayMousedown);\n\n\t\t// attach event-element-related handlers. in Grid.events\n\t\t// same garbage collection note as above.\n\t\tthis.bindSegHandlers();\n\n\t\tthis.bindGlobalHandlers();\n\t},\n\n\n\tbindDayHandler: function(name, handler) {\n\t\tvar _this = this;\n\n\t\t// attach a handler to the grid's root element.\n\t\t// jQuery will take care of unregistering them when removeElement gets called.\n\t\tthis.el.on(name, function(ev) {\n\t\t\tif (\n\t\t\t\t!$(ev.target).is('.fc-event-container *, .fc-more') // not an an event element, or \"more..\" link\n\t\t\t) {\n\t\t\t\treturn handler.call(_this, ev);\n\t\t\t}\n\t\t});\n\t},\n\n\n\t// Removes the grid's container element from the DOM. Undoes any other DOM-related attachments.\n\t// DOES NOT remove any content beforehand (doesn't clear events or call unrenderDates), unlike View\n\tremoveElement: function() {\n\t\tthis.unbindGlobalHandlers();\n\t\tthis.clearDragListeners();\n\n\t\tthis.el.remove();\n\n\t\t// NOTE: we don't null-out this.el for the same reasons we don't do it within View::removeElement\n\t},\n\n\n\t// Renders the basic structure of grid view before any content is rendered\n\trenderSkeleton: function() {\n\t\t// subclasses should implement\n\t},\n\n\n\t// Renders the grid's date-related content (like areas that represent days/times).\n\t// Assumes setRange has already been called and the skeleton has already been rendered.\n\trenderDates: function() {\n\t\t// subclasses should implement\n\t},\n\n\n\t// Unrenders the grid's date-related content\n\tunrenderDates: function() {\n\t\t// subclasses should implement\n\t},\n\n\n\t/* Handlers\n\t------------------------------------------------------------------------------------------------------------------*/\n\n\n\t// Binds DOM handlers to elements that reside outside the grid, such as the document\n\tbindGlobalHandlers: function() {\n\t\tthis.listenTo($(document), {\n\t\t\tdragstart: this.externalDragStart, // jqui\n\t\t\tsortstart: this.externalDragStart // jqui\n\t\t});\n\t},\n\n\n\t// Unbinds DOM handlers from elements that reside outside the grid\n\tunbindGlobalHandlers: function() {\n\t\tthis.stopListeningTo($(document));\n\t},\n\n\n\t// Process a mousedown on an element that represents a day. For day clicking and selecting.\n\tdayMousedown: function(ev) {\n\t\tif (!this.isIgnoringMouse) {\n\t\t\tthis.dayDragListener.startInteraction(ev, {\n\t\t\t\t//distance: 5, // needs more work if we want dayClick to fire correctly\n\t\t\t});\n\t\t}\n\t},\n\n\n\tdayTouchStart: function(ev) {\n\t\tvar view = this.view;\n\n\t\t// HACK to prevent a user's clickaway for unselecting a range or an event\n\t\t// from causing a dayClick.\n\t\tif (view.isSelected || view.selectedEvent) {\n\t\t\tthis.tempIgnoreMouse();\n\t\t}\n\n\t\tthis.dayDragListener.startInteraction(ev, {\n\t\t\tdelay: this.view.opt('longPressDelay')\n\t\t});\n\t},\n\n\n\t// Creates a listener that tracks the user's drag across day elements.\n\t// For day clicking and selecting.\n\tbuildDayDragListener: function() {\n\t\tvar _this = this;\n\t\tvar view = this.view;\n\t\tvar isSelectable = view.opt('selectable');\n\t\tvar dayClickHit; // null if invalid dayClick\n\t\tvar selectionSpan; // null if invalid selection\n\n\t\t// this listener tracks a mousedown on a day element, and a subsequent drag.\n\t\t// if the drag ends on the same day, it is a 'dayClick'.\n\t\t// if 'selectable' is enabled, this listener also detects selections.\n\t\tvar dragListener = new HitDragListener(this, {\n\t\t\tscroll: view.opt('dragScroll'),\n\t\t\tinteractionStart: function() {\n\t\t\t\tdayClickHit = dragListener.origHit; // for dayClick, where no dragging happens\n\t\t\t\tselectionSpan = null;\n\t\t\t},\n\t\t\tdragStart: function() {\n\t\t\t\tview.unselect(); // since we could be rendering a new selection, we want to clear any old one\n\t\t\t},\n\t\t\thitOver: function(hit, isOrig, origHit) {\n\t\t\t\tif (origHit) { // click needs to have started on a hit\n\n\t\t\t\t\t// if user dragged to another cell at any point, it can no longer be a dayClick\n\t\t\t\t\tif (!isOrig) {\n\t\t\t\t\t\tdayClickHit = null;\n\t\t\t\t\t}\n\n\t\t\t\t\tif (isSelectable) {\n\t\t\t\t\t\tselectionSpan = _this.computeSelection(\n\t\t\t\t\t\t\t_this.getHitSpan(origHit),\n\t\t\t\t\t\t\t_this.getHitSpan(hit)\n\t\t\t\t\t\t);\n\t\t\t\t\t\tif (selectionSpan) {\n\t\t\t\t\t\t\t_this.renderSelection(selectionSpan);\n\t\t\t\t\t\t}\n\t\t\t\t\t\telse if (selectionSpan === false) {\n\t\t\t\t\t\t\tdisableCursor();\n\t\t\t\t\t\t}\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t},\n\t\t\thitOut: function() { // called before mouse moves to a different hit OR moved out of all hits\n\t\t\t\tdayClickHit = null;\n\t\t\t\tselectionSpan = null;\n\t\t\t\t_this.unrenderSelection();\n\t\t\t},\n\t\t\thitDone: function() { // called after a hitOut OR before a dragEnd\n\t\t\t\tenableCursor();\n\t\t\t},\n\t\t\tinteractionEnd: function(ev, isCancelled) {\n\t\t\t\tif (!isCancelled) {\n\t\t\t\t\tif (\n\t\t\t\t\t\tdayClickHit &&\n\t\t\t\t\t\t!_this.isIgnoringMouse // see hack in dayTouchStart\n\t\t\t\t\t) {\n\t\t\t\t\t\tview.triggerDayClick(\n\t\t\t\t\t\t\t_this.getHitSpan(dayClickHit),\n\t\t\t\t\t\t\t_this.getHitEl(dayClickHit),\n\t\t\t\t\t\t\tev\n\t\t\t\t\t\t);\n\t\t\t\t\t}\n\t\t\t\t\tif (selectionSpan) {\n\t\t\t\t\t\t// the selection will already have been rendered. just report it\n\t\t\t\t\t\tview.reportSelection(selectionSpan, ev);\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t}\n\t\t});\n\n\t\treturn dragListener;\n\t},\n\n\n\t// Kills all in-progress dragging.\n\t// Useful for when public API methods that result in re-rendering are invoked during a drag.\n\t// Also useful for when touch devices misbehave and don't fire their touchend.\n\tclearDragListeners: function() {\n\t\tthis.dayDragListener.endInteraction();\n\n\t\tif (this.segDragListener) {\n\t\t\tthis.segDragListener.endInteraction(); // will clear this.segDragListener\n\t\t}\n\t\tif (this.segResizeListener) {\n\t\t\tthis.segResizeListener.endInteraction(); // will clear this.segResizeListener\n\t\t}\n\t\tif (this.externalDragListener) {\n\t\t\tthis.externalDragListener.endInteraction(); // will clear this.externalDragListener\n\t\t}\n\t},\n\n\n\t/* Event Helper\n\t------------------------------------------------------------------------------------------------------------------*/\n\t// TODO: should probably move this to Grid.events, like we did event dragging / resizing\n\n\n\t// Renders a mock event at the given event location, which contains zoned start/end properties.\n\t// Returns all mock event elements.\n\trenderEventLocationHelper: function(eventLocation, sourceSeg) {\n\t\tvar fakeEvent = this.fabricateHelperEvent(eventLocation, sourceSeg);\n\n\t\treturn this.renderHelper(fakeEvent, sourceSeg); // do the actual rendering\n\t},\n\n\n\t// Builds a fake event given zoned event date properties and a segment is should be inspired from.\n\t// The range's end can be null, in which case the mock event that is rendered will have a null end time.\n\t// `sourceSeg` is the internal segment object involved in the drag. If null, something external is dragging.\n\tfabricateHelperEvent: function(eventLocation, sourceSeg) {\n\t\tvar fakeEvent = sourceSeg ? createObject(sourceSeg.event) : {}; // mask the original event object if possible\n\n\t\tfakeEvent.start = eventLocation.start.clone();\n\t\tfakeEvent.end = eventLocation.end ? eventLocation.end.clone() : null;\n\t\tfakeEvent.allDay = null; // force it to be freshly computed by normalizeEventDates\n\t\tthis.view.calendar.normalizeEventDates(fakeEvent);\n\n\t\t// this extra className will be useful for differentiating real events from mock events in CSS\n\t\tfakeEvent.className = (fakeEvent.className || []).concat('fc-helper');\n\n\t\t// if something external is being dragged in, don't render a resizer\n\t\tif (!sourceSeg) {\n\t\t\tfakeEvent.editable = false;\n\t\t}\n\n\t\treturn fakeEvent;\n\t},\n\n\n\t// Renders a mock event. Given zoned event date properties.\n\t// Must return all mock event elements.\n\trenderHelper: function(eventLocation, sourceSeg) {\n\t\t// subclasses must implement\n\t},\n\n\n\t// Unrenders a mock event\n\tunrenderHelper: function() {\n\t\t// subclasses must implement\n\t},\n\n\n\t/* Selection\n\t------------------------------------------------------------------------------------------------------------------*/\n\n\n\t// Renders a visual indication of a selection. Will highlight by default but can be overridden by subclasses.\n\t// Given a span (unzoned start/end and other misc data)\n\trenderSelection: function(span) {\n\t\tthis.renderHighlight(span);\n\t},\n\n\n\t// Unrenders any visual indications of a selection. Will unrender a highlight by default.\n\tunrenderSelection: function() {\n\t\tthis.unrenderHighlight();\n\t},\n\n\n\t// Given the first and last date-spans of a selection, returns another date-span object.\n\t// Subclasses can override and provide additional data in the span object. Will be passed to renderSelection().\n\t// Will return false if the selection is invalid and this should be indicated to the user.\n\t// Will return null/undefined if a selection invalid but no error should be reported.\n\tcomputeSelection: function(span0, span1) {\n\t\tvar span = this.computeSelectionSpan(span0, span1);\n\n\t\tif (span && !this.view.calendar.isSelectionSpanAllowed(span)) {\n\t\t\treturn false;\n\t\t}\n\n\t\treturn span;\n\t},\n\n\n\t// Given two spans, must return the combination of the two.\n\t// TODO: do this separation of concerns (combining VS validation) for event dnd/resize too.\n\tcomputeSelectionSpan: function(span0, span1) {\n\t\tvar dates = [ span0.start, span0.end, span1.start, span1.end ];\n\n\t\tdates.sort(compareNumbers); // sorts chronologically. works with Moments\n\n\t\treturn { start: dates[0].clone(), end: dates[3].clone() };\n\t},\n\n\n\t/* Highlight\n\t------------------------------------------------------------------------------------------------------------------*/\n\n\n\t// Renders an emphasis on the given date range. Given a span (unzoned start/end and other misc data)\n\trenderHighlight: function(span) {\n\t\tthis.renderFill('highlight', this.spanToSegs(span));\n\t},\n\n\n\t// Unrenders the emphasis on a date range\n\tunrenderHighlight: function() {\n\t\tthis.unrenderFill('highlight');\n\t},\n\n\n\t// Generates an array of classNames for rendering the highlight. Used by the fill system.\n\thighlightSegClasses: function() {\n\t\treturn [ 'fc-highlight' ];\n\t},\n\n\n\t/* Business Hours\n\t------------------------------------------------------------------------------------------------------------------*/\n\n\n\trenderBusinessHours: function() {\n\t},\n\n\n\tunrenderBusinessHours: function() {\n\t},\n\n\n\t/* Now Indicator\n\t------------------------------------------------------------------------------------------------------------------*/\n\n\n\tgetNowIndicatorUnit: function() {\n\t},\n\n\n\trenderNowIndicator: function(date) {\n\t},\n\n\n\tunrenderNowIndicator: function() {\n\t},\n\n\n\t/* Fill System (highlight, background events, business hours)\n\t--------------------------------------------------------------------------------------------------------------------\n\tTODO: remove this system. like we did in TimeGrid\n\t*/\n\n\n\t// Renders a set of rectangles over the given segments of time.\n\t// MUST RETURN a subset of segs, the segs that were actually rendered.\n\t// Responsible for populating this.elsByFill. TODO: better API for expressing this requirement\n\trenderFill: function(type, segs) {\n\t\t// subclasses must implement\n\t},\n\n\n\t// Unrenders a specific type of fill that is currently rendered on the grid\n\tunrenderFill: function(type) {\n\t\tvar el = this.elsByFill[type];\n\n\t\tif (el) {\n\t\t\tel.remove();\n\t\t\tdelete this.elsByFill[type];\n\t\t}\n\t},\n\n\n\t// Renders and assigns an `el` property for each fill segment. Generic enough to work with different types.\n\t// Only returns segments that successfully rendered.\n\t// To be harnessed by renderFill (implemented by subclasses).\n\t// Analagous to renderFgSegEls.\n\trenderFillSegEls: function(type, segs) {\n\t\tvar _this = this;\n\t\tvar segElMethod = this[type + 'SegEl'];\n\t\tvar html = '';\n\t\tvar renderedSegs = [];\n\t\tvar i;\n\n\t\tif (segs.length) {\n\n\t\t\t// build a large concatenation of segment HTML\n\t\t\tfor (i = 0; i < segs.length; i++) {\n\t\t\t\thtml += this.fillSegHtml(type, segs[i]);\n\t\t\t}\n\n\t\t\t// Grab individual elements from the combined HTML string. Use each as the default rendering.\n\t\t\t// Then, compute the 'el' for each segment.\n\t\t\t$(html).each(function(i, node) {\n\t\t\t\tvar seg = segs[i];\n\t\t\t\tvar el = $(node);\n\n\t\t\t\t// allow custom filter methods per-type\n\t\t\t\tif (segElMethod) {\n\t\t\t\t\tel = segElMethod.call(_this, seg, el);\n\t\t\t\t}\n\n\t\t\t\tif (el) { // custom filters did not cancel the render\n\t\t\t\t\tel = $(el); // allow custom filter to return raw DOM node\n\n\t\t\t\t\t// correct element type? (would be bad if a non-TD were inserted into a table for example)\n\t\t\t\t\tif (el.is(_this.fillSegTag)) {\n\t\t\t\t\t\tseg.el = el;\n\t\t\t\t\t\trenderedSegs.push(seg);\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t});\n\t\t}\n\n\t\treturn renderedSegs;\n\t},\n\n\n\tfillSegTag: 'div', // subclasses can override\n\n\n\t// Builds the HTML needed for one fill segment. Generic enough to work with different types.\n\tfillSegHtml: function(type, seg) {\n\n\t\t// custom hooks per-type\n\t\tvar classesMethod = this[type + 'SegClasses'];\n\t\tvar cssMethod = this[type + 'SegCss'];\n\n\t\tvar classes = classesMethod ? classesMethod.call(this, seg) : [];\n\t\tvar css = cssToStr(cssMethod ? cssMethod.call(this, seg) : {});\n\n\t\treturn '<' + this.fillSegTag +\n\t\t\t(classes.length ? ' class=\"' + classes.join(' ') + '\"' : '') +\n\t\t\t(css ? ' style=\"' + css + '\"' : '') +\n\t\t\t' />';\n\t},\n\n\n\n\t/* Generic rendering utilities for subclasses\n\t------------------------------------------------------------------------------------------------------------------*/\n\n\n\t// Computes HTML classNames for a single-day element\n\tgetDayClasses: function(date) {\n\t\tvar view = this.view;\n\t\tvar today = view.calendar.getNow();\n\t\tvar classes = [ 'fc-' + dayIDs[date.day()] ];\n\n\t\tif (\n\t\t\tview.intervalDuration.as('months') == 1 &&\n\t\t\tdate.month() != view.intervalStart.month()\n\t\t) {\n\t\t\tclasses.push('fc-other-month');\n\t\t}\n\n\t\tif (date.isSame(today, 'day')) {\n\t\t\tclasses.push(\n\t\t\t\t'fc-today',\n\t\t\t\tview.highlightStateClass\n\t\t\t);\n\t\t}\n\t\telse if (date < today) {\n\t\t\tclasses.push('fc-past');\n\t\t}\n\t\telse {\n\t\t\tclasses.push('fc-future');\n\t\t}\n\n\t\treturn classes;\n\t}\n\n});\n\n;;\n\n/* Event-rendering and event-interaction methods for the abstract Grid class\n----------------------------------------------------------------------------------------------------------------------*/\n\nGrid.mixin({\n\n\tmousedOverSeg: null, // the segment object the user's mouse is over. null if over nothing\n\tisDraggingSeg: false, // is a segment being dragged? boolean\n\tisResizingSeg: false, // is a segment being resized? boolean\n\tisDraggingExternal: false, // jqui-dragging an external element? boolean\n\tsegs: null, // the *event* segments currently rendered in the grid. TODO: rename to `eventSegs`\n\n\n\t// Renders the given events onto the grid\n\trenderEvents: function(events) {\n\t\tvar bgEvents = [];\n\t\tvar fgEvents = [];\n\t\tvar i;\n\n\t\tfor (i = 0; i < events.length; i++) {\n\t\t\t(isBgEvent(events[i]) ? bgEvents : fgEvents).push(events[i]);\n\t\t}\n\n\t\tthis.segs = [].concat( // record all segs\n\t\t\tthis.renderBgEvents(bgEvents),\n\t\t\tthis.renderFgEvents(fgEvents)\n\t\t);\n\t},\n\n\n\trenderBgEvents: function(events) {\n\t\tvar segs = this.eventsToSegs(events);\n\n\t\t// renderBgSegs might return a subset of segs, segs that were actually rendered\n\t\treturn this.renderBgSegs(segs) || segs;\n\t},\n\n\n\trenderFgEvents: function(events) {\n\t\tvar segs = this.eventsToSegs(events);\n\n\t\t// renderFgSegs might return a subset of segs, segs that were actually rendered\n\t\treturn this.renderFgSegs(segs) || segs;\n\t},\n\n\n\t// Unrenders all events currently rendered on the grid\n\tunrenderEvents: function() {\n\t\tthis.handleSegMouseout(); // trigger an eventMouseout if user's mouse is over an event\n\t\tthis.clearDragListeners();\n\n\t\tthis.unrenderFgSegs();\n\t\tthis.unrenderBgSegs();\n\n\t\tthis.segs = null;\n\t},\n\n\n\t// Retrieves all rendered segment objects currently rendered on the grid\n\tgetEventSegs: function() {\n\t\treturn this.segs || [];\n\t},\n\n\n\t/* Foreground Segment Rendering\n\t------------------------------------------------------------------------------------------------------------------*/\n\n\n\t// Renders foreground event segments onto the grid. May return a subset of segs that were rendered.\n\trenderFgSegs: function(segs) {\n\t\t// subclasses must implement\n\t},\n\n\n\t// Unrenders all currently rendered foreground segments\n\tunrenderFgSegs: function() {\n\t\t// subclasses must implement\n\t},\n\n\n\t// Renders and assigns an `el` property for each foreground event segment.\n\t// Only returns segments that successfully rendered.\n\t// A utility that subclasses may use.\n\trenderFgSegEls: function(segs, disableResizing) {\n\t\tvar view = this.view;\n\t\tvar html = '';\n\t\tvar renderedSegs = [];\n\t\tvar i;\n\n\t\tif (segs.length) { // don't build an empty html string\n\n\t\t\t// build a large concatenation of event segment HTML\n\t\t\tfor (i = 0; i < segs.length; i++) {\n\t\t\t\thtml += this.fgSegHtml(segs[i], disableResizing);\n\t\t\t}\n\n\t\t\t// Grab individual elements from the combined HTML string. Use each as the default rendering.\n\t\t\t// Then, compute the 'el' for each segment. An el might be null if the eventRender callback returned false.\n\t\t\t$(html).each(function(i, node) {\n\t\t\t\tvar seg = segs[i];\n\t\t\t\tvar el = view.resolveEventEl(seg.event, $(node));\n\n\t\t\t\tif (el) {\n\t\t\t\t\tel.data('fc-seg', seg); // used by handlers\n\t\t\t\t\tseg.el = el;\n\t\t\t\t\trenderedSegs.push(seg);\n\t\t\t\t}\n\t\t\t});\n\t\t}\n\n\t\treturn renderedSegs;\n\t},\n\n\n\t// Generates the HTML for the default rendering of a foreground event segment. Used by renderFgSegEls()\n\tfgSegHtml: function(seg, disableResizing) {\n\t\t// subclasses should implement\n\t},\n\n\n\t/* Background Segment Rendering\n\t------------------------------------------------------------------------------------------------------------------*/\n\n\n\t// Renders the given background event segments onto the grid.\n\t// Returns a subset of the segs that were actually rendered.\n\trenderBgSegs: function(segs) {\n\t\treturn this.renderFill('bgEvent', segs);\n\t},\n\n\n\t// Unrenders all the currently rendered background event segments\n\tunrenderBgSegs: function() {\n\t\tthis.unrenderFill('bgEvent');\n\t},\n\n\n\t// Renders a background event element, given the default rendering. Called by the fill system.\n\tbgEventSegEl: function(seg, el) {\n\t\treturn this.view.resolveEventEl(seg.event, el); // will filter through eventRender\n\t},\n\n\n\t// Generates an array of classNames to be used for the default rendering of a background event.\n\t// Called by fillSegHtml.\n\tbgEventSegClasses: function(seg) {\n\t\tvar event = seg.event;\n\t\tvar source = event.source || {};\n\n\t\treturn [ 'fc-bgevent' ].concat(\n\t\t\tevent.className,\n\t\t\tsource.className || []\n\t\t);\n\t},\n\n\n\t// Generates a semicolon-separated CSS string to be used for the default rendering of a background event.\n\t// Called by fillSegHtml.\n\tbgEventSegCss: function(seg) {\n\t\treturn {\n\t\t\t'background-color': this.getSegSkinCss(seg)['background-color']\n\t\t};\n\t},\n\n\n\t// Generates an array of classNames to be used for the rendering business hours overlay. Called by the fill system.\n\t// Called by fillSegHtml.\n\tbusinessHoursSegClasses: function(seg) {\n\t\treturn [ 'fc-nonbusiness', 'fc-bgevent' ];\n\t},\n\n\n\t/* Business Hours\n\t------------------------------------------------------------------------------------------------------------------*/\n\n\n\t// Compute business hour segs for the grid's current date range.\n\t// Caller must ask if whole-day business hours are needed.\n\tbuildBusinessHourSegs: function(wholeDay) {\n\t\tvar events = this.view.calendar.getCurrentBusinessHourEvents(wholeDay);\n\n\t\t// HACK. Eventually refactor business hours \"events\" system.\n\t\t// If no events are given, but businessHours is activated, this means the entire visible range should be\n\t\t// marked as *not* business-hours, via inverse-background rendering.\n\t\tif (\n\t\t\t!events.length &&\n\t\t\tthis.view.calendar.options.businessHours // don't access view option. doesn't update with dynamic options\n\t\t) {\n\t\t\tevents = [\n\t\t\t\t$.extend({}, BUSINESS_HOUR_EVENT_DEFAULTS, {\n\t\t\t\t\tstart: this.view.end, // guaranteed out-of-range\n\t\t\t\t\tend: this.view.end, // \"\n\t\t\t\t\tdow: null\n\t\t\t\t})\n\t\t\t];\n\t\t}\n\n\t\treturn this.eventsToSegs(events);\n\t},\n\n\n\t/* Handlers\n\t------------------------------------------------------------------------------------------------------------------*/\n\n\n\t// Attaches event-element-related handlers for *all* rendered event segments of the view.\n\tbindSegHandlers: function() {\n\t\tthis.bindSegHandlersToEl(this.el);\n\t},\n\n\n\t// Attaches event-element-related handlers to an arbitrary container element. leverages bubbling.\n\tbindSegHandlersToEl: function(el) {\n\t\tthis.bindSegHandlerToEl(el, 'touchstart', this.handleSegTouchStart);\n\t\tthis.bindSegHandlerToEl(el, 'touchend', this.handleSegTouchEnd);\n\t\tthis.bindSegHandlerToEl(el, 'mouseenter', this.handleSegMouseover);\n\t\tthis.bindSegHandlerToEl(el, 'mouseleave', this.handleSegMouseout);\n\t\tthis.bindSegHandlerToEl(el, 'mousedown', this.handleSegMousedown);\n\t\tthis.bindSegHandlerToEl(el, 'click', this.handleSegClick);\n\t},\n\n\n\t// Executes a handler for any a user-interaction on a segment.\n\t// Handler gets called with (seg, ev), and with the `this` context of the Grid\n\tbindSegHandlerToEl: function(el, name, handler) {\n\t\tvar _this = this;\n\n\t\tel.on(name, '.fc-event-container > *', function(ev) {\n\t\t\tvar seg = $(this).data('fc-seg'); // grab segment data. put there by View::renderEvents\n\n\t\t\t// only call the handlers if there is not a drag/resize in progress\n\t\t\tif (seg && !_this.isDraggingSeg && !_this.isResizingSeg) {\n\t\t\t\treturn handler.call(_this, seg, ev); // context will be the Grid\n\t\t\t}\n\t\t});\n\t},\n\n\n\thandleSegClick: function(seg, ev) {\n\t\treturn this.view.trigger('eventClick', seg.el[0], seg.event, ev); // can return `false` to cancel\n\t},\n\n\n\t// Updates internal state and triggers handlers for when an event element is moused over\n\thandleSegMouseover: function(seg, ev) {\n\t\tif (\n\t\t\t!this.isIgnoringMouse &&\n\t\t\t!this.mousedOverSeg\n\t\t) {\n\t\t\tthis.mousedOverSeg = seg;\n\t\t\tseg.el.addClass('fc-allow-mouse-resize');\n\t\t\tthis.view.trigger('eventMouseover', seg.el[0], seg.event, ev);\n\t\t}\n\t},\n\n\n\t// Updates internal state and triggers handlers for when an event element is moused out.\n\t// Can be given no arguments, in which case it will mouseout the segment that was previously moused over.\n\thandleSegMouseout: function(seg, ev) {\n\t\tev = ev || {}; // if given no args, make a mock mouse event\n\n\t\tif (this.mousedOverSeg) {\n\t\t\tseg = seg || this.mousedOverSeg; // if given no args, use the currently moused-over segment\n\t\t\tthis.mousedOverSeg = null;\n\t\t\tseg.el.removeClass('fc-allow-mouse-resize');\n\t\t\tthis.view.trigger('eventMouseout', seg.el[0], seg.event, ev);\n\t\t}\n\t},\n\n\n\thandleSegMousedown: function(seg, ev) {\n\t\tvar isResizing = this.startSegResize(seg, ev, { distance: 5 });\n\n\t\tif (!isResizing && this.view.isEventDraggable(seg.event)) {\n\t\t\tthis.buildSegDragListener(seg)\n\t\t\t\t.startInteraction(ev, {\n\t\t\t\t\tdistance: 5\n\t\t\t\t});\n\t\t}\n\t},\n\n\n\thandleSegTouchStart: function(seg, ev) {\n\t\tvar view = this.view;\n\t\tvar event = seg.event;\n\t\tvar isSelected = view.isEventSelected(event);\n\t\tvar isDraggable = view.isEventDraggable(event);\n\t\tvar isResizable = view.isEventResizable(event);\n\t\tvar isResizing = false;\n\t\tvar dragListener;\n\n\t\tif (isSelected && isResizable) {\n\t\t\t// only allow resizing of the event is selected\n\t\t\tisResizing = this.startSegResize(seg, ev);\n\t\t}\n\n\t\tif (!isResizing && (isDraggable || isResizable)) { // allowed to be selected?\n\n\t\t\tdragListener = isDraggable ?\n\t\t\t\tthis.buildSegDragListener(seg) :\n\t\t\t\tthis.buildSegSelectListener(seg); // seg isn't draggable, but still needs to be selected\n\n\t\t\tdragListener.startInteraction(ev, { // won't start if already started\n\t\t\t\tdelay: isSelected ? 0 : this.view.opt('longPressDelay') // do delay if not already selected\n\t\t\t});\n\t\t}\n\n\t\t// a long tap simulates a mouseover. ignore this bogus mouseover.\n\t\tthis.tempIgnoreMouse();\n\t},\n\n\n\thandleSegTouchEnd: function(seg, ev) {\n\t\t// touchstart+touchend = click, which simulates a mouseover.\n\t\t// ignore this bogus mouseover.\n\t\tthis.tempIgnoreMouse();\n\t},\n\n\n\t// returns boolean whether resizing actually started or not.\n\t// assumes the seg allows resizing.\n\t// `dragOptions` are optional.\n\tstartSegResize: function(seg, ev, dragOptions) {\n\t\tif ($(ev.target).is('.fc-resizer')) {\n\t\t\tthis.buildSegResizeListener(seg, $(ev.target).is('.fc-start-resizer'))\n\t\t\t\t.startInteraction(ev, dragOptions);\n\t\t\treturn true;\n\t\t}\n\t\treturn false;\n\t},\n\n\n\n\t/* Event Dragging\n\t------------------------------------------------------------------------------------------------------------------*/\n\n\n\t// Builds a listener that will track user-dragging on an event segment.\n\t// Generic enough to work with any type of Grid.\n\t// Has side effect of setting/unsetting `segDragListener`\n\tbuildSegDragListener: function(seg) {\n\t\tvar _this = this;\n\t\tvar view = this.view;\n\t\tvar calendar = view.calendar;\n\t\tvar el = seg.el;\n\t\tvar event = seg.event;\n\t\tvar isDragging;\n\t\tvar mouseFollower; // A clone of the original element that will move with the mouse\n\t\tvar dropLocation; // zoned event date properties\n\n\t\tif (this.segDragListener) {\n\t\t\treturn this.segDragListener;\n\t\t}\n\n\t\t// Tracks mouse movement over the *view's* coordinate map. Allows dragging and dropping between subcomponents\n\t\t// of the view.\n\t\tvar dragListener = this.segDragListener = new HitDragListener(view, {\n\t\t\tscroll: view.opt('dragScroll'),\n\t\t\tsubjectEl: el,\n\t\t\tsubjectCenter: true,\n\t\t\tinteractionStart: function(ev) {\n\t\t\t\tseg.component = _this; // for renderDrag\n\t\t\t\tisDragging = false;\n\t\t\t\tmouseFollower = new MouseFollower(seg.el, {\n\t\t\t\t\tadditionalClass: 'fc-dragging',\n\t\t\t\t\tparentEl: view.el,\n\t\t\t\t\topacity: dragListener.isTouch ? null : view.opt('dragOpacity'),\n\t\t\t\t\trevertDuration: view.opt('dragRevertDuration'),\n\t\t\t\t\tzIndex: 2 // one above the .fc-view\n\t\t\t\t});\n\t\t\t\tmouseFollower.hide(); // don't show until we know this is a real drag\n\t\t\t\tmouseFollower.start(ev);\n\t\t\t},\n\t\t\tdragStart: function(ev) {\n\t\t\t\tif (dragListener.isTouch && !view.isEventSelected(event)) {\n\t\t\t\t\t// if not previously selected, will fire after a delay. then, select the event\n\t\t\t\t\tview.selectEvent(event);\n\t\t\t\t}\n\t\t\t\tisDragging = true;\n\t\t\t\t_this.handleSegMouseout(seg, ev); // ensure a mouseout on the manipulated event has been reported\n\t\t\t\t_this.segDragStart(seg, ev);\n\t\t\t\tview.hideEvent(event); // hide all event segments. our mouseFollower will take over\n\t\t\t},\n\t\t\thitOver: function(hit, isOrig, origHit) {\n\t\t\t\tvar dragHelperEls;\n\n\t\t\t\t// starting hit could be forced (DayGrid.limit)\n\t\t\t\tif (seg.hit) {\n\t\t\t\t\torigHit = seg.hit;\n\t\t\t\t}\n\n\t\t\t\t// since we are querying the parent view, might not belong to this grid\n\t\t\t\tdropLocation = _this.computeEventDrop(\n\t\t\t\t\torigHit.component.getHitSpan(origHit),\n\t\t\t\t\thit.component.getHitSpan(hit),\n\t\t\t\t\tevent\n\t\t\t\t);\n\n\t\t\t\tif (dropLocation && !calendar.isEventSpanAllowed(_this.eventToSpan(dropLocation), event)) {\n\t\t\t\t\tdisableCursor();\n\t\t\t\t\tdropLocation = null;\n\t\t\t\t}\n\n\t\t\t\t// if a valid drop location, have the subclass render a visual indication\n\t\t\t\tif (dropLocation && (dragHelperEls = view.renderDrag(dropLocation, seg))) {\n\n\t\t\t\t\tdragHelperEls.addClass('fc-dragging');\n\t\t\t\t\tif (!dragListener.isTouch) {\n\t\t\t\t\t\t_this.applyDragOpacity(dragHelperEls);\n\t\t\t\t\t}\n\n\t\t\t\t\tmouseFollower.hide(); // if the subclass is already using a mock event \"helper\", hide our own\n\t\t\t\t}\n\t\t\t\telse {\n\t\t\t\t\tmouseFollower.show(); // otherwise, have the helper follow the mouse (no snapping)\n\t\t\t\t}\n\n\t\t\t\tif (isOrig) {\n\t\t\t\t\tdropLocation = null; // needs to have moved hits to be a valid drop\n\t\t\t\t}\n\t\t\t},\n\t\t\thitOut: function() { // called before mouse moves to a different hit OR moved out of all hits\n\t\t\t\tview.unrenderDrag(); // unrender whatever was done in renderDrag\n\t\t\t\tmouseFollower.show(); // show in case we are moving out of all hits\n\t\t\t\tdropLocation = null;\n\t\t\t},\n\t\t\thitDone: function() { // Called after a hitOut OR before a dragEnd\n\t\t\t\tenableCursor();\n\t\t\t},\n\t\t\tinteractionEnd: function(ev) {\n\t\t\t\tdelete seg.component; // prevent side effects\n\n\t\t\t\t// do revert animation if hasn't changed. calls a callback when finished (whether animation or not)\n\t\t\t\tmouseFollower.stop(!dropLocation, function() {\n\t\t\t\t\tif (isDragging) {\n\t\t\t\t\t\tview.unrenderDrag();\n\t\t\t\t\t\tview.showEvent(event);\n\t\t\t\t\t\t_this.segDragStop(seg, ev);\n\t\t\t\t\t}\n\t\t\t\t\tif (dropLocation) {\n\t\t\t\t\t\tview.reportEventDrop(event, dropLocation, this.largeUnit, el, ev);\n\t\t\t\t\t}\n\t\t\t\t});\n\t\t\t\t_this.segDragListener = null;\n\t\t\t}\n\t\t});\n\n\t\treturn dragListener;\n\t},\n\n\n\t// seg isn't draggable, but let's use a generic DragListener\n\t// simply for the delay, so it can be selected.\n\t// Has side effect of setting/unsetting `segDragListener`\n\tbuildSegSelectListener: function(seg) {\n\t\tvar _this = this;\n\t\tvar view = this.view;\n\t\tvar event = seg.event;\n\n\t\tif (this.segDragListener) {\n\t\t\treturn this.segDragListener;\n\t\t}\n\n\t\tvar dragListener = this.segDragListener = new DragListener({\n\t\t\tdragStart: function(ev) {\n\t\t\t\tif (dragListener.isTouch && !view.isEventSelected(event)) {\n\t\t\t\t\t// if not previously selected, will fire after a delay. then, select the event\n\t\t\t\t\tview.selectEvent(event);\n\t\t\t\t}\n\t\t\t},\n\t\t\tinteractionEnd: function(ev) {\n\t\t\t\t_this.segDragListener = null;\n\t\t\t}\n\t\t});\n\n\t\treturn dragListener;\n\t},\n\n\n\t// Called before event segment dragging starts\n\tsegDragStart: function(seg, ev) {\n\t\tthis.isDraggingSeg = true;\n\t\tthis.view.trigger('eventDragStart', seg.el[0], seg.event, ev, {}); // last argument is jqui dummy\n\t},\n\n\n\t// Called after event segment dragging stops\n\tsegDragStop: function(seg, ev) {\n\t\tthis.isDraggingSeg = false;\n\t\tthis.view.trigger('eventDragStop', seg.el[0], seg.event, ev, {}); // last argument is jqui dummy\n\t},\n\n\n\t// Given the spans an event drag began, and the span event was dropped, calculates the new zoned start/end/allDay\n\t// values for the event. Subclasses may override and set additional properties to be used by renderDrag.\n\t// A falsy returned value indicates an invalid drop.\n\t// DOES NOT consider overlap/constraint.\n\tcomputeEventDrop: function(startSpan, endSpan, event) {\n\t\tvar calendar = this.view.calendar;\n\t\tvar dragStart = startSpan.start;\n\t\tvar dragEnd = endSpan.start;\n\t\tvar delta;\n\t\tvar dropLocation; // zoned event date properties\n\n\t\tif (dragStart.hasTime() === dragEnd.hasTime()) {\n\t\t\tdelta = this.diffDates(dragEnd, dragStart);\n\n\t\t\t// if an all-day event was in a timed area and it was dragged to a different time,\n\t\t\t// guarantee an end and adjust start/end to have times\n\t\t\tif (event.allDay && durationHasTime(delta)) {\n\t\t\t\tdropLocation = {\n\t\t\t\t\tstart: event.start.clone(),\n\t\t\t\t\tend: calendar.getEventEnd(event), // will be an ambig day\n\t\t\t\t\tallDay: false // for normalizeEventTimes\n\t\t\t\t};\n\t\t\t\tcalendar.normalizeEventTimes(dropLocation);\n\t\t\t}\n\t\t\t// othewise, work off existing values\n\t\t\telse {\n\t\t\t\tdropLocation = {\n\t\t\t\t\tstart: event.start.clone(),\n\t\t\t\t\tend: event.end ? event.end.clone() : null,\n\t\t\t\t\tallDay: event.allDay // keep it the same\n\t\t\t\t};\n\t\t\t}\n\n\t\t\tdropLocation.start.add(delta);\n\t\t\tif (dropLocation.end) {\n\t\t\t\tdropLocation.end.add(delta);\n\t\t\t}\n\t\t}\n\t\telse {\n\t\t\t// if switching from day <-> timed, start should be reset to the dropped date, and the end cleared\n\t\t\tdropLocation = {\n\t\t\t\tstart: dragEnd.clone(),\n\t\t\t\tend: null, // end should be cleared\n\t\t\t\tallDay: !dragEnd.hasTime()\n\t\t\t};\n\t\t}\n\n\t\treturn dropLocation;\n\t},\n\n\n\t// Utility for apply dragOpacity to a jQuery set\n\tapplyDragOpacity: function(els) {\n\t\tvar opacity = this.view.opt('dragOpacity');\n\n\t\tif (opacity != null) {\n\t\t\tels.each(function(i, node) {\n\t\t\t\t// Don't use jQuery (will set an IE filter), do it the old fashioned way.\n\t\t\t\t// In IE8, a helper element will disappears if there's a filter.\n\t\t\t\tnode.style.opacity = opacity;\n\t\t\t});\n\t\t}\n\t},\n\n\n\t/* External Element Dragging\n\t------------------------------------------------------------------------------------------------------------------*/\n\n\n\t// Called when a jQuery UI drag is initiated anywhere in the DOM\n\texternalDragStart: function(ev, ui) {\n\t\tvar view = this.view;\n\t\tvar el;\n\t\tvar accept;\n\n\t\tif (view.opt('droppable')) { // only listen if this setting is on\n\t\t\tel = $((ui ? ui.item : null) || ev.target);\n\n\t\t\t// Test that the dragged element passes the dropAccept selector or filter function.\n\t\t\t// FYI, the default is \"*\" (matches all)\n\t\t\taccept = view.opt('dropAccept');\n\t\t\tif ($.isFunction(accept) ? accept.call(el[0], el) : el.is(accept)) {\n\t\t\t\tif (!this.isDraggingExternal) { // prevent double-listening if fired twice\n\t\t\t\t\tthis.listenToExternalDrag(el, ev, ui);\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\t},\n\n\n\t// Called when a jQuery UI drag starts and it needs to be monitored for dropping\n\tlistenToExternalDrag: function(el, ev, ui) {\n\t\tvar _this = this;\n\t\tvar calendar = this.view.calendar;\n\t\tvar meta = getDraggedElMeta(el); // extra data about event drop, including possible event to create\n\t\tvar dropLocation; // a null value signals an unsuccessful drag\n\n\t\t// listener that tracks mouse movement over date-associated pixel regions\n\t\tvar dragListener = _this.externalDragListener = new HitDragListener(this, {\n\t\t\tinteractionStart: function() {\n\t\t\t\t_this.isDraggingExternal = true;\n\t\t\t},\n\t\t\thitOver: function(hit) {\n\t\t\t\tdropLocation = _this.computeExternalDrop(\n\t\t\t\t\thit.component.getHitSpan(hit), // since we are querying the parent view, might not belong to this grid\n\t\t\t\t\tmeta\n\t\t\t\t);\n\n\t\t\t\tif ( // invalid hit?\n\t\t\t\t\tdropLocation &&\n\t\t\t\t\t!calendar.isExternalSpanAllowed(_this.eventToSpan(dropLocation), dropLocation, meta.eventProps)\n\t\t\t\t) {\n\t\t\t\t\tdisableCursor();\n\t\t\t\t\tdropLocation = null;\n\t\t\t\t}\n\n\t\t\t\tif (dropLocation) {\n\t\t\t\t\t_this.renderDrag(dropLocation); // called without a seg parameter\n\t\t\t\t}\n\t\t\t},\n\t\t\thitOut: function() {\n\t\t\t\tdropLocation = null; // signal unsuccessful\n\t\t\t},\n\t\t\thitDone: function() { // Called after a hitOut OR before a dragEnd\n\t\t\t\tenableCursor();\n\t\t\t\t_this.unrenderDrag();\n\t\t\t},\n\t\t\tinteractionEnd: function(ev) {\n\t\t\t\tif (dropLocation) { // element was dropped on a valid hit\n\t\t\t\t\t_this.view.reportExternalDrop(meta, dropLocation, el, ev, ui);\n\t\t\t\t}\n\t\t\t\t_this.isDraggingExternal = false;\n\t\t\t\t_this.externalDragListener = null;\n\t\t\t}\n\t\t});\n\n\t\tdragListener.startDrag(ev); // start listening immediately\n\t},\n\n\n\t// Given a hit to be dropped upon, and misc data associated with the jqui drag (guaranteed to be a plain object),\n\t// returns the zoned start/end dates for the event that would result from the hypothetical drop. end might be null.\n\t// Returning a null value signals an invalid drop hit.\n\t// DOES NOT consider overlap/constraint.\n\tcomputeExternalDrop: function(span, meta) {\n\t\tvar calendar = this.view.calendar;\n\t\tvar dropLocation = {\n\t\t\tstart: calendar.applyTimezone(span.start), // simulate a zoned event start date\n\t\t\tend: null\n\t\t};\n\n\t\t// if dropped on an all-day span, and element's metadata specified a time, set it\n\t\tif (meta.startTime && !dropLocation.start.hasTime()) {\n\t\t\tdropLocation.start.time(meta.startTime);\n\t\t}\n\n\t\tif (meta.duration) {\n\t\t\tdropLocation.end = dropLocation.start.clone().add(meta.duration);\n\t\t}\n\n\t\treturn dropLocation;\n\t},\n\n\n\n\t/* Drag Rendering (for both events and an external elements)\n\t------------------------------------------------------------------------------------------------------------------*/\n\n\n\t// Renders a visual indication of an event or external element being dragged.\n\t// `dropLocation` contains hypothetical start/end/allDay values the event would have if dropped. end can be null.\n\t// `seg` is the internal segment object that is being dragged. If dragging an external element, `seg` is null.\n\t// A truthy returned value indicates this method has rendered a helper element.\n\t// Must return elements used for any mock events.\n\trenderDrag: function(dropLocation, seg) {\n\t\t// subclasses must implement\n\t},\n\n\n\t// Unrenders a visual indication of an event or external element being dragged\n\tunrenderDrag: function() {\n\t\t// subclasses must implement\n\t},\n\n\n\t/* Resizing\n\t------------------------------------------------------------------------------------------------------------------*/\n\n\n\t// Creates a listener that tracks the user as they resize an event segment.\n\t// Generic enough to work with any type of Grid.\n\tbuildSegResizeListener: function(seg, isStart) {\n\t\tvar _this = this;\n\t\tvar view = this.view;\n\t\tvar calendar = view.calendar;\n\t\tvar el = seg.el;\n\t\tvar event = seg.event;\n\t\tvar eventEnd = calendar.getEventEnd(event);\n\t\tvar isDragging;\n\t\tvar resizeLocation; // zoned event date properties. falsy if invalid resize\n\n\t\t// Tracks mouse movement over the *grid's* coordinate map\n\t\tvar dragListener = this.segResizeListener = new HitDragListener(this, {\n\t\t\tscroll: view.opt('dragScroll'),\n\t\t\tsubjectEl: el,\n\t\t\tinteractionStart: function() {\n\t\t\t\tisDragging = false;\n\t\t\t},\n\t\t\tdragStart: function(ev) {\n\t\t\t\tisDragging = true;\n\t\t\t\t_this.handleSegMouseout(seg, ev); // ensure a mouseout on the manipulated event has been reported\n\t\t\t\t_this.segResizeStart(seg, ev);\n\t\t\t},\n\t\t\thitOver: function(hit, isOrig, origHit) {\n\t\t\t\tvar origHitSpan = _this.getHitSpan(origHit);\n\t\t\t\tvar hitSpan = _this.getHitSpan(hit);\n\n\t\t\t\tresizeLocation = isStart ?\n\t\t\t\t\t_this.computeEventStartResize(origHitSpan, hitSpan, event) :\n\t\t\t\t\t_this.computeEventEndResize(origHitSpan, hitSpan, event);\n\n\t\t\t\tif (resizeLocation) {\n\t\t\t\t\tif (!calendar.isEventSpanAllowed(_this.eventToSpan(resizeLocation), event)) {\n\t\t\t\t\t\tdisableCursor();\n\t\t\t\t\t\tresizeLocation = null;\n\t\t\t\t\t}\n\t\t\t\t\t// no change? (TODO: how does this work with timezones?)\n\t\t\t\t\telse if (resizeLocation.start.isSame(event.start) && resizeLocation.end.isSame(eventEnd)) {\n\t\t\t\t\t\tresizeLocation = null;\n\t\t\t\t\t}\n\t\t\t\t}\n\n\t\t\t\tif (resizeLocation) {\n\t\t\t\t\tview.hideEvent(event);\n\t\t\t\t\t_this.renderEventResize(resizeLocation, seg);\n\t\t\t\t}\n\t\t\t},\n\t\t\thitOut: function() { // called before mouse moves to a different hit OR moved out of all hits\n\t\t\t\tresizeLocation = null;\n\t\t\t},\n\t\t\thitDone: function() { // resets the rendering to show the original event\n\t\t\t\t_this.unrenderEventResize();\n\t\t\t\tview.showEvent(event);\n\t\t\t\tenableCursor();\n\t\t\t},\n\t\t\tinteractionEnd: function(ev) {\n\t\t\t\tif (isDragging) {\n\t\t\t\t\t_this.segResizeStop(seg, ev);\n\t\t\t\t}\n\t\t\t\tif (resizeLocation) { // valid date to resize to?\n\t\t\t\t\tview.reportEventResize(event, resizeLocation, this.largeUnit, el, ev);\n\t\t\t\t}\n\t\t\t\t_this.segResizeListener = null;\n\t\t\t}\n\t\t});\n\n\t\treturn dragListener;\n\t},\n\n\n\t// Called before event segment resizing starts\n\tsegResizeStart: function(seg, ev) {\n\t\tthis.isResizingSeg = true;\n\t\tthis.view.trigger('eventResizeStart', seg.el[0], seg.event, ev, {}); // last argument is jqui dummy\n\t},\n\n\n\t// Called after event segment resizing stops\n\tsegResizeStop: function(seg, ev) {\n\t\tthis.isResizingSeg = false;\n\t\tthis.view.trigger('eventResizeStop', seg.el[0], seg.event, ev, {}); // last argument is jqui dummy\n\t},\n\n\n\t// Returns new date-information for an event segment being resized from its start\n\tcomputeEventStartResize: function(startSpan, endSpan, event) {\n\t\treturn this.computeEventResize('start', startSpan, endSpan, event);\n\t},\n\n\n\t// Returns new date-information for an event segment being resized from its end\n\tcomputeEventEndResize: function(startSpan, endSpan, event) {\n\t\treturn this.computeEventResize('end', startSpan, endSpan, event);\n\t},\n\n\n\t// Returns new zoned date information for an event segment being resized from its start OR end\n\t// `type` is either 'start' or 'end'.\n\t// DOES NOT consider overlap/constraint.\n\tcomputeEventResize: function(type, startSpan, endSpan, event) {\n\t\tvar calendar = this.view.calendar;\n\t\tvar delta = this.diffDates(endSpan[type], startSpan[type]);\n\t\tvar resizeLocation; // zoned event date properties\n\t\tvar defaultDuration;\n\n\t\t// build original values to work from, guaranteeing a start and end\n\t\tresizeLocation = {\n\t\t\tstart: event.start.clone(),\n\t\t\tend: calendar.getEventEnd(event),\n\t\t\tallDay: event.allDay\n\t\t};\n\n\t\t// if an all-day event was in a timed area and was resized to a time, adjust start/end to have times\n\t\tif (resizeLocation.allDay && durationHasTime(delta)) {\n\t\t\tresizeLocation.allDay = false;\n\t\t\tcalendar.normalizeEventTimes(resizeLocation);\n\t\t}\n\n\t\tresizeLocation[type].add(delta); // apply delta to start or end\n\n\t\t// if the event was compressed too small, find a new reasonable duration for it\n\t\tif (!resizeLocation.start.isBefore(resizeLocation.end)) {\n\n\t\t\tdefaultDuration =\n\t\t\t\tthis.minResizeDuration || // TODO: hack\n\t\t\t\t(event.allDay ?\n\t\t\t\t\tcalendar.defaultAllDayEventDuration :\n\t\t\t\t\tcalendar.defaultTimedEventDuration);\n\n\t\t\tif (type == 'start') { // resizing the start?\n\t\t\t\tresizeLocation.start = resizeLocation.end.clone().subtract(defaultDuration);\n\t\t\t}\n\t\t\telse { // resizing the end?\n\t\t\t\tresizeLocation.end = resizeLocation.start.clone().add(defaultDuration);\n\t\t\t}\n\t\t}\n\n\t\treturn resizeLocation;\n\t},\n\n\n\t// Renders a visual indication of an event being resized.\n\t// `range` has the updated dates of the event. `seg` is the original segment object involved in the drag.\n\t// Must return elements used for any mock events.\n\trenderEventResize: function(range, seg) {\n\t\t// subclasses must implement\n\t},\n\n\n\t// Unrenders a visual indication of an event being resized.\n\tunrenderEventResize: function() {\n\t\t// subclasses must implement\n\t},\n\n\n\t/* Rendering Utils\n\t------------------------------------------------------------------------------------------------------------------*/\n\n\n\t// Compute the text that should be displayed on an event's element.\n\t// `range` can be the Event object itself, or something range-like, with at least a `start`.\n\t// If event times are disabled, or the event has no time, will return a blank string.\n\t// If not specified, formatStr will default to the eventTimeFormat setting,\n\t// and displayEnd will default to the displayEventEnd setting.\n\tgetEventTimeText: function(range, formatStr, displayEnd) {\n\n\t\tif (formatStr == null) {\n\t\t\tformatStr = this.eventTimeFormat;\n\t\t}\n\n\t\tif (displayEnd == null) {\n\t\t\tdisplayEnd = this.displayEventEnd;\n\t\t}\n\n\t\tif (this.displayEventTime && range.start.hasTime()) {\n\t\t\tif (displayEnd && range.end) {\n\t\t\t\treturn this.view.formatRange(range, formatStr);\n\t\t\t}\n\t\t\telse {\n\t\t\t\treturn range.start.format(formatStr);\n\t\t\t}\n\t\t}\n\n\t\treturn '';\n\t},\n\n\n\t// Generic utility for generating the HTML classNames for an event segment's element\n\tgetSegClasses: function(seg, isDraggable, isResizable) {\n\t\tvar view = this.view;\n\t\tvar event = seg.event;\n\t\tvar classes = [\n\t\t\t'fc-event',\n\t\t\tseg.isStart ? 'fc-start' : 'fc-not-start',\n\t\t\tseg.isEnd ? 'fc-end' : 'fc-not-end'\n\t\t].concat(\n\t\t\tevent.className,\n\t\t\tevent.source ? event.source.className : []\n\t\t);\n\n\t\tif (isDraggable) {\n\t\t\tclasses.push('fc-draggable');\n\t\t}\n\t\tif (isResizable) {\n\t\t\tclasses.push('fc-resizable');\n\t\t}\n\n\t\t// event is currently selected? attach a className.\n\t\tif (view.isEventSelected(event)) {\n\t\t\tclasses.push('fc-selected');\n\t\t}\n\n\t\treturn classes;\n\t},\n\n\n\t// Utility for generating event skin-related CSS properties\n\tgetSegSkinCss: function(seg) {\n\t\tvar event = seg.event;\n\t\tvar view = this.view;\n\t\tvar source = event.source || {};\n\t\tvar eventColor = event.color;\n\t\tvar sourceColor = source.color;\n\t\tvar optionColor = view.opt('eventColor');\n\n\t\treturn {\n\t\t\t'background-color':\n\t\t\t\tevent.backgroundColor ||\n\t\t\t\teventColor ||\n\t\t\t\tsource.backgroundColor ||\n\t\t\t\tsourceColor ||\n\t\t\t\tview.opt('eventBackgroundColor') ||\n\t\t\t\toptionColor,\n\t\t\t'border-color':\n\t\t\t\tevent.borderColor ||\n\t\t\t\teventColor ||\n\t\t\t\tsource.borderColor ||\n\t\t\t\tsourceColor ||\n\t\t\t\tview.opt('eventBorderColor') ||\n\t\t\t\toptionColor,\n\t\t\tcolor:\n\t\t\t\tevent.textColor ||\n\t\t\t\tsource.textColor ||\n\t\t\t\tview.opt('eventTextColor')\n\t\t};\n\t},\n\n\n\t/* Converting events -> eventRange -> eventSpan -> eventSegs\n\t------------------------------------------------------------------------------------------------------------------*/\n\n\n\t// Generates an array of segments for the given single event\n\t// Can accept an event \"location\" as well (which only has start/end and no allDay)\n\teventToSegs: function(event) {\n\t\treturn this.eventsToSegs([ event ]);\n\t},\n\n\n\teventToSpan: function(event) {\n\t\treturn this.eventToSpans(event)[0];\n\t},\n\n\n\t// Generates spans (always unzoned) for the given event.\n\t// Does not do any inverting for inverse-background events.\n\t// Can accept an event \"location\" as well (which only has start/end and no allDay)\n\teventToSpans: function(event) {\n\t\tvar range = this.eventToRange(event);\n\t\treturn this.eventRangeToSpans(range, event);\n\t},\n\n\n\n\t// Converts an array of event objects into an array of event segment objects.\n\t// A custom `segSliceFunc` may be given for arbitrarily slicing up events.\n\t// Doesn't guarantee an order for the resulting array.\n\teventsToSegs: function(allEvents, segSliceFunc) {\n\t\tvar _this = this;\n\t\tvar eventsById = groupEventsById(allEvents);\n\t\tvar segs = [];\n\n\t\t$.each(eventsById, function(id, events) {\n\t\t\tvar ranges = [];\n\t\t\tvar i;\n\n\t\t\tfor (i = 0; i < events.length; i++) {\n\t\t\t\tranges.push(_this.eventToRange(events[i]));\n\t\t\t}\n\n\t\t\t// inverse-background events (utilize only the first event in calculations)\n\t\t\tif (isInverseBgEvent(events[0])) {\n\t\t\t\tranges = _this.invertRanges(ranges);\n\n\t\t\t\tfor (i = 0; i < ranges.length; i++) {\n\t\t\t\t\tsegs.push.apply(segs, // append to\n\t\t\t\t\t\t_this.eventRangeToSegs(ranges[i], events[0], segSliceFunc));\n\t\t\t\t}\n\t\t\t}\n\t\t\t// normal event ranges\n\t\t\telse {\n\t\t\t\tfor (i = 0; i < ranges.length; i++) {\n\t\t\t\t\tsegs.push.apply(segs, // append to\n\t\t\t\t\t\t_this.eventRangeToSegs(ranges[i], events[i], segSliceFunc));\n\t\t\t\t}\n\t\t\t}\n\t\t});\n\n\t\treturn segs;\n\t},\n\n\n\t// Generates the unzoned start/end dates an event appears to occupy\n\t// Can accept an event \"location\" as well (which only has start/end and no allDay)\n\teventToRange: function(event) {\n\t\treturn {\n\t\t\tstart: event.start.clone().stripZone(),\n\t\t\tend: (\n\t\t\t\tevent.end ?\n\t\t\t\t\tevent.end.clone() :\n\t\t\t\t\t// derive the end from the start and allDay. compute allDay if necessary\n\t\t\t\t\tthis.view.calendar.getDefaultEventEnd(\n\t\t\t\t\t\tevent.allDay != null ?\n\t\t\t\t\t\t\tevent.allDay :\n\t\t\t\t\t\t\t!event.start.hasTime(),\n\t\t\t\t\t\tevent.start\n\t\t\t\t\t)\n\t\t\t).stripZone()\n\t\t};\n\t},\n\n\n\t// Given an event's range (unzoned start/end), and the event itself,\n\t// slice into segments (using the segSliceFunc function if specified)\n\teventRangeToSegs: function(range, event, segSliceFunc) {\n\t\tvar spans = this.eventRangeToSpans(range, event);\n\t\tvar segs = [];\n\t\tvar i;\n\n\t\tfor (i = 0; i < spans.length; i++) {\n\t\t\tsegs.push.apply(segs, // append to\n\t\t\t\tthis.eventSpanToSegs(spans[i], event, segSliceFunc));\n\t\t}\n\n\t\treturn segs;\n\t},\n\n\n\t// Given an event's unzoned date range, return an array of \"span\" objects.\n\t// Subclasses can override.\n\teventRangeToSpans: function(range, event) {\n\t\treturn [ $.extend({}, range) ]; // copy into a single-item array\n\t},\n\n\n\t// Given an event's span (unzoned start/end and other misc data), and the event itself,\n\t// slices into segments and attaches event-derived properties to them.\n\teventSpanToSegs: function(span, event, segSliceFunc) {\n\t\tvar segs = segSliceFunc ? segSliceFunc(span) : this.spanToSegs(span);\n\t\tvar i, seg;\n\n\t\tfor (i = 0; i < segs.length; i++) {\n\t\t\tseg = segs[i];\n\t\t\tseg.event = event;\n\t\t\tseg.eventStartMS = +span.start; // TODO: not the best name after making spans unzoned\n\t\t\tseg.eventDurationMS = span.end - span.start;\n\t\t}\n\n\t\treturn segs;\n\t},\n\n\n\t// Produces a new array of range objects that will cover all the time NOT covered by the given ranges.\n\t// SIDE EFFECT: will mutate the given array and will use its date references.\n\tinvertRanges: function(ranges) {\n\t\tvar view = this.view;\n\t\tvar viewStart = view.start.clone(); // need a copy\n\t\tvar viewEnd = view.end.clone(); // need a copy\n\t\tvar inverseRanges = [];\n\t\tvar start = viewStart; // the end of the previous range. the start of the new range\n\t\tvar i, range;\n\n\t\t// ranges need to be in order. required for our date-walking algorithm\n\t\tranges.sort(compareRanges);\n\n\t\tfor (i = 0; i < ranges.length; i++) {\n\t\t\trange = ranges[i];\n\n\t\t\t// add the span of time before the event (if there is any)\n\t\t\tif (range.start > start) { // compare millisecond time (skip any ambig logic)\n\t\t\t\tinverseRanges.push({\n\t\t\t\t\tstart: start,\n\t\t\t\t\tend: range.start\n\t\t\t\t});\n\t\t\t}\n\n\t\t\tstart = range.end;\n\t\t}\n\n\t\t// add the span of time after the last event (if there is any)\n\t\tif (start < viewEnd) { // compare millisecond time (skip any ambig logic)\n\t\t\tinverseRanges.push({\n\t\t\t\tstart: start,\n\t\t\t\tend: viewEnd\n\t\t\t});\n\t\t}\n\n\t\treturn inverseRanges;\n\t},\n\n\n\tsortEventSegs: function(segs) {\n\t\tsegs.sort(proxy(this, 'compareEventSegs'));\n\t},\n\n\n\t// A cmp function for determining which segments should take visual priority\n\tcompareEventSegs: function(seg1, seg2) {\n\t\treturn seg1.eventStartMS - seg2.eventStartMS || // earlier events go first\n\t\t\tseg2.eventDurationMS - seg1.eventDurationMS || // tie? longer events go first\n\t\t\tseg2.event.allDay - seg1.event.allDay || // tie? put all-day events first (booleans cast to 0/1)\n\t\t\tcompareByFieldSpecs(seg1.event, seg2.event, this.view.eventOrderSpecs);\n\t}\n\n});\n\n\n/* Utilities\n----------------------------------------------------------------------------------------------------------------------*/\n\n\nfunction isBgEvent(event) { // returns true if background OR inverse-background\n\tvar rendering = getEventRendering(event);\n\treturn rendering === 'background' || rendering === 'inverse-background';\n}\nFC.isBgEvent = isBgEvent; // export\n\n\nfunction isInverseBgEvent(event) {\n\treturn getEventRendering(event) === 'inverse-background';\n}\n\n\nfunction getEventRendering(event) {\n\treturn firstDefined((event.source || {}).rendering, event.rendering);\n}\n\n\nfunction groupEventsById(events) {\n\tvar eventsById = {};\n\tvar i, event;\n\n\tfor (i = 0; i < events.length; i++) {\n\t\tevent = events[i];\n\t\t(eventsById[event._id] || (eventsById[event._id] = [])).push(event);\n\t}\n\n\treturn eventsById;\n}\n\n\n// A cmp function for determining which non-inverted \"ranges\" (see above) happen earlier\nfunction compareRanges(range1, range2) {\n\treturn range1.start - range2.start; // earlier ranges go first\n}\n\n\n/* External-Dragging-Element Data\n----------------------------------------------------------------------------------------------------------------------*/\n\n// Require all HTML5 data-* attributes used by FullCalendar to have this prefix.\n// A value of '' will query attributes like data-event. A value of 'fc' will query attributes like data-fc-event.\nFC.dataAttrPrefix = '';\n\n// Given a jQuery element that might represent a dragged FullCalendar event, returns an intermediate data structure\n// to be used for Event Object creation.\n// A defined `.eventProps`, even when empty, indicates that an event should be created.\nfunction getDraggedElMeta(el) {\n\tvar prefix = FC.dataAttrPrefix;\n\tvar eventProps; // properties for creating the event, not related to date/time\n\tvar startTime; // a Duration\n\tvar duration;\n\tvar stick;\n\n\tif (prefix) { prefix += '-'; }\n\teventProps = el.data(prefix + 'event') || null;\n\n\tif (eventProps) {\n\t\tif (typeof eventProps === 'object') {\n\t\t\teventProps = $.extend({}, eventProps); // make a copy\n\t\t}\n\t\telse { // something like 1 or true. still signal event creation\n\t\t\teventProps = {};\n\t\t}\n\n\t\t// pluck special-cased date/time properties\n\t\tstartTime = eventProps.start;\n\t\tif (startTime == null) { startTime = eventProps.time; } // accept 'time' as well\n\t\tduration = eventProps.duration;\n\t\tstick = eventProps.stick;\n\t\tdelete eventProps.start;\n\t\tdelete eventProps.time;\n\t\tdelete eventProps.duration;\n\t\tdelete eventProps.stick;\n\t}\n\n\t// fallback to standalone attribute values for each of the date/time properties\n\tif (startTime == null) { startTime = el.data(prefix + 'start'); }\n\tif (startTime == null) { startTime = el.data(prefix + 'time'); } // accept 'time' as well\n\tif (duration == null) { duration = el.data(prefix + 'duration'); }\n\tif (stick == null) { stick = el.data(prefix + 'stick'); }\n\n\t// massage into correct data types\n\tstartTime = startTime != null ? moment.duration(startTime) : null;\n\tduration = duration != null ? moment.duration(duration) : null;\n\tstick = Boolean(stick);\n\n\treturn { eventProps: eventProps, startTime: startTime, duration: duration, stick: stick };\n}\n\n\n;;\n\n/*\nA set of rendering and date-related methods for a visual component comprised of one or more rows of day columns.\nPrerequisite: the object being mixed into needs to be a *Grid*\n*/\nvar DayTableMixin = FC.DayTableMixin = {\n\n\tbreakOnWeeks: false, // should create a new row for each week?\n\tdayDates: null, // whole-day dates for each column. left to right\n\tdayIndices: null, // for each day from start, the offset\n\tdaysPerRow: null,\n\trowCnt: null,\n\tcolCnt: null,\n\tcolHeadFormat: null,\n\n\n\t// Populates internal variables used for date calculation and rendering\n\tupdateDayTable: function() {\n\t\tvar view = this.view;\n\t\tvar date = this.start.clone();\n\t\tvar dayIndex = -1;\n\t\tvar dayIndices = [];\n\t\tvar dayDates = [];\n\t\tvar daysPerRow;\n\t\tvar firstDay;\n\t\tvar rowCnt;\n\n\t\twhile (date.isBefore(this.end)) { // loop each day from start to end\n\t\t\tif (view.isHiddenDay(date)) {\n\t\t\t\tdayIndices.push(dayIndex + 0.5); // mark that it's between indices\n\t\t\t}\n\t\t\telse {\n\t\t\t\tdayIndex++;\n\t\t\t\tdayIndices.push(dayIndex);\n\t\t\t\tdayDates.push(date.clone());\n\t\t\t}\n\t\t\tdate.add(1, 'days');\n\t\t}\n\n\t\tif (this.breakOnWeeks) {\n\t\t\t// count columns until the day-of-week repeats\n\t\t\tfirstDay = dayDates[0].day();\n\t\t\tfor (daysPerRow = 1; daysPerRow < dayDates.length; daysPerRow++) {\n\t\t\t\tif (dayDates[daysPerRow].day() == firstDay) {\n\t\t\t\t\tbreak;\n\t\t\t\t}\n\t\t\t}\n\t\t\trowCnt = Math.ceil(dayDates.length / daysPerRow);\n\t\t}\n\t\telse {\n\t\t\trowCnt = 1;\n\t\t\tdaysPerRow = dayDates.length;\n\t\t}\n\n\t\tthis.dayDates = dayDates;\n\t\tthis.dayIndices = dayIndices;\n\t\tthis.daysPerRow = daysPerRow;\n\t\tthis.rowCnt = rowCnt;\n\t\t\n\t\tthis.updateDayTableCols();\n\t},\n\n\n\t// Computes and assigned the colCnt property and updates any options that may be computed from it\n\tupdateDayTableCols: function() {\n\t\tthis.colCnt = this.computeColCnt();\n\t\tthis.colHeadFormat = this.view.opt('columnFormat') || this.computeColHeadFormat();\n\t},\n\n\n\t// Determines how many columns there should be in the table\n\tcomputeColCnt: function() {\n\t\treturn this.daysPerRow;\n\t},\n\n\n\t// Computes the ambiguously-timed moment for the given cell\n\tgetCellDate: function(row, col) {\n\t\treturn this.dayDates[\n\t\t\t\tthis.getCellDayIndex(row, col)\n\t\t\t].clone();\n\t},\n\n\n\t// Computes the ambiguously-timed date range for the given cell\n\tgetCellRange: function(row, col) {\n\t\tvar start = this.getCellDate(row, col);\n\t\tvar end = start.clone().add(1, 'days');\n\n\t\treturn { start: start, end: end };\n\t},\n\n\n\t// Returns the number of day cells, chronologically, from the first of the grid (0-based)\n\tgetCellDayIndex: function(row, col) {\n\t\treturn row * this.daysPerRow + this.getColDayIndex(col);\n\t},\n\n\n\t// Returns the numner of day cells, chronologically, from the first cell in *any given row*\n\tgetColDayIndex: function(col) {\n\t\tif (this.isRTL) {\n\t\t\treturn this.colCnt - 1 - col;\n\t\t}\n\t\telse {\n\t\t\treturn col;\n\t\t}\n\t},\n\n\n\t// Given a date, returns its chronolocial cell-index from the first cell of the grid.\n\t// If the date lies between cells (because of hiddenDays), returns a floating-point value between offsets.\n\t// If before the first offset, returns a negative number.\n\t// If after the last offset, returns an offset past the last cell offset.\n\t// Only works for *start* dates of cells. Will not work for exclusive end dates for cells.\n\tgetDateDayIndex: function(date) {\n\t\tvar dayIndices = this.dayIndices;\n\t\tvar dayOffset = date.diff(this.start, 'days');\n\n\t\tif (dayOffset < 0) {\n\t\t\treturn dayIndices[0] - 1;\n\t\t}\n\t\telse if (dayOffset >= dayIndices.length) {\n\t\t\treturn dayIndices[dayIndices.length - 1] + 1;\n\t\t}\n\t\telse {\n\t\t\treturn dayIndices[dayOffset];\n\t\t}\n\t},\n\n\n\t/* Options\n\t------------------------------------------------------------------------------------------------------------------*/\n\n\n\t// Computes a default column header formatting string if `colFormat` is not explicitly defined\n\tcomputeColHeadFormat: function() {\n\t\t// if more than one week row, or if there are a lot of columns with not much space,\n\t\t// put just the day numbers will be in each cell\n\t\tif (this.rowCnt > 1 || this.colCnt > 10) {\n\t\t\treturn 'ddd'; // \"Sat\"\n\t\t}\n\t\t// multiple days, so full single date string WON'T be in title text\n\t\telse if (this.colCnt > 1) {\n\t\t\treturn this.view.opt('dayOfMonthFormat'); // \"Sat 12/10\"\n\t\t}\n\t\t// single day, so full single date string will probably be in title text\n\t\telse {\n\t\t\treturn 'dddd'; // \"Saturday\"\n\t\t}\n\t},\n\n\n\t/* Slicing\n\t------------------------------------------------------------------------------------------------------------------*/\n\n\n\t// Slices up a date range into a segment for every week-row it intersects with\n\tsliceRangeByRow: function(range) {\n\t\tvar daysPerRow = this.daysPerRow;\n\t\tvar normalRange = this.view.computeDayRange(range); // make whole-day range, considering nextDayThreshold\n\t\tvar rangeFirst = this.getDateDayIndex(normalRange.start); // inclusive first index\n\t\tvar rangeLast = this.getDateDayIndex(normalRange.end.clone().subtract(1, 'days')); // inclusive last index\n\t\tvar segs = [];\n\t\tvar row;\n\t\tvar rowFirst, rowLast; // inclusive day-index range for current row\n\t\tvar segFirst, segLast; // inclusive day-index range for segment\n\n\t\tfor (row = 0; row < this.rowCnt; row++) {\n\t\t\trowFirst = row * daysPerRow;\n\t\t\trowLast = rowFirst + daysPerRow - 1;\n\n\t\t\t// intersect segment's offset range with the row's\n\t\t\tsegFirst = Math.max(rangeFirst, rowFirst);\n\t\t\tsegLast = Math.min(rangeLast, rowLast);\n\n\t\t\t// deal with in-between indices\n\t\t\tsegFirst = Math.ceil(segFirst); // in-between starts round to next cell\n\t\t\tsegLast = Math.floor(segLast); // in-between ends round to prev cell\n\n\t\t\tif (segFirst <= segLast) { // was there any intersection with the current row?\n\t\t\t\tsegs.push({\n\t\t\t\t\trow: row,\n\n\t\t\t\t\t// normalize to start of row\n\t\t\t\t\tfirstRowDayIndex: segFirst - rowFirst,\n\t\t\t\t\tlastRowDayIndex: segLast - rowFirst,\n\n\t\t\t\t\t// must be matching integers to be the segment's start/end\n\t\t\t\t\tisStart: segFirst === rangeFirst,\n\t\t\t\t\tisEnd: segLast === rangeLast\n\t\t\t\t});\n\t\t\t}\n\t\t}\n\n\t\treturn segs;\n\t},\n\n\n\t// Slices up a date range into a segment for every day-cell it intersects with.\n\t// TODO: make more DRY with sliceRangeByRow somehow.\n\tsliceRangeByDay: function(range) {\n\t\tvar daysPerRow = this.daysPerRow;\n\t\tvar normalRange = this.view.computeDayRange(range); // make whole-day range, considering nextDayThreshold\n\t\tvar rangeFirst = this.getDateDayIndex(normalRange.start); // inclusive first index\n\t\tvar rangeLast = this.getDateDayIndex(normalRange.end.clone().subtract(1, 'days')); // inclusive last index\n\t\tvar segs = [];\n\t\tvar row;\n\t\tvar rowFirst, rowLast; // inclusive day-index range for current row\n\t\tvar i;\n\t\tvar segFirst, segLast; // inclusive day-index range for segment\n\n\t\tfor (row = 0; row < this.rowCnt; row++) {\n\t\t\trowFirst = row * daysPerRow;\n\t\t\trowLast = rowFirst + daysPerRow - 1;\n\n\t\t\tfor (i = rowFirst; i <= rowLast; i++) {\n\n\t\t\t\t// intersect segment's offset range with the row's\n\t\t\t\tsegFirst = Math.max(rangeFirst, i);\n\t\t\t\tsegLast = Math.min(rangeLast, i);\n\n\t\t\t\t// deal with in-between indices\n\t\t\t\tsegFirst = Math.ceil(segFirst); // in-between starts round to next cell\n\t\t\t\tsegLast = Math.floor(segLast); // in-between ends round to prev cell\n\n\t\t\t\tif (segFirst <= segLast) { // was there any intersection with the current row?\n\t\t\t\t\tsegs.push({\n\t\t\t\t\t\trow: row,\n\n\t\t\t\t\t\t// normalize to start of row\n\t\t\t\t\t\tfirstRowDayIndex: segFirst - rowFirst,\n\t\t\t\t\t\tlastRowDayIndex: segLast - rowFirst,\n\n\t\t\t\t\t\t// must be matching integers to be the segment's start/end\n\t\t\t\t\t\tisStart: segFirst === rangeFirst,\n\t\t\t\t\t\tisEnd: segLast === rangeLast\n\t\t\t\t\t});\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\n\t\treturn segs;\n\t},\n\n\n\t/* Header Rendering\n\t------------------------------------------------------------------------------------------------------------------*/\n\n\n\trenderHeadHtml: function() {\n\t\tvar view = this.view;\n\n\t\treturn '' +\n\t\t\t'
' +\n\t\t\t\t'' +\n\t\t\t\t\t'' +\n\t\t\t\t\t\tthis.renderHeadTrHtml() +\n\t\t\t\t\t'' +\n\t\t\t\t'
' +\n\t\t\t'
';\n\t},\n\n\n\trenderHeadIntroHtml: function() {\n\t\treturn this.renderIntroHtml(); // fall back to generic\n\t},\n\n\n\trenderHeadTrHtml: function() {\n\t\treturn '' +\n\t\t\t'' +\n\t\t\t\t(this.isRTL ? '' : this.renderHeadIntroHtml()) +\n\t\t\t\tthis.renderHeadDateCellsHtml() +\n\t\t\t\t(this.isRTL ? this.renderHeadIntroHtml() : '') +\n\t\t\t'';\n\t},\n\n\n\trenderHeadDateCellsHtml: function() {\n\t\tvar htmls = [];\n\t\tvar col, date;\n\n\t\tfor (col = 0; col < this.colCnt; col++) {\n\t\t\tdate = this.getCellDate(0, col);\n\t\t\thtmls.push(this.renderHeadDateCellHtml(date));\n\t\t}\n\n\t\treturn htmls.join('');\n\t},\n\n\n\t// TODO: when internalApiVersion, accept an object for HTML attributes\n\t// (colspan should be no different)\n\trenderHeadDateCellHtml: function(date, colspan, otherAttrs) {\n\t\tvar view = this.view;\n\n\t\treturn '' +\n\t\t\t' 1 ?\n\t\t\t\t\t' colspan=\"' + colspan + '\"' :\n\t\t\t\t\t'') +\n\t\t\t\t(otherAttrs ?\n\t\t\t\t\t' ' + otherAttrs :\n\t\t\t\t\t'') +\n\t\t\t'>' +\n\t\t\t\thtmlEscape(date.format(this.colHeadFormat)) +\n\t\t\t'';\n\t},\n\n\n\t/* Background Rendering\n\t------------------------------------------------------------------------------------------------------------------*/\n\n\n\trenderBgTrHtml: function(row) {\n\t\treturn '' +\n\t\t\t'' +\n\t\t\t\t(this.isRTL ? '' : this.renderBgIntroHtml(row)) +\n\t\t\t\tthis.renderBgCellsHtml(row) +\n\t\t\t\t(this.isRTL ? this.renderBgIntroHtml(row) : '') +\n\t\t\t'';\n\t},\n\n\n\trenderBgIntroHtml: function(row) {\n\t\treturn this.renderIntroHtml(); // fall back to generic\n\t},\n\n\n\trenderBgCellsHtml: function(row) {\n\t\tvar htmls = [];\n\t\tvar col, date;\n\n\t\tfor (col = 0; col < this.colCnt; col++) {\n\t\t\tdate = this.getCellDate(row, col);\n\t\t\thtmls.push(this.renderBgCellHtml(date));\n\t\t}\n\n\t\treturn htmls.join('');\n\t},\n\n\n\trenderBgCellHtml: function(date, otherAttrs) {\n\t\tvar view = this.view;\n\t\tvar classes = this.getDayClasses(date);\n\n\t\tclasses.unshift('fc-day', view.widgetContentClass);\n\n\t\treturn '';\n\t},\n\n\n\t/* Generic\n\t------------------------------------------------------------------------------------------------------------------*/\n\n\n\t// Generates the default HTML intro for any row. User classes should override\n\trenderIntroHtml: function() {\n\t},\n\n\n\t// TODO: a generic method for dealing with , RTL, intro\n\t// when increment internalApiVersion\n\t// wrapTr (scheduler)\n\n\n\t/* Utils\n\t------------------------------------------------------------------------------------------------------------------*/\n\n\n\t// Applies the generic \"intro\" and \"outro\" HTML to the given cells.\n\t// Intro means the leftmost cell when the calendar is LTR and the rightmost cell when RTL. Vice-versa for outro.\n\tbookendCells: function(trEl) {\n\t\tvar introHtml = this.renderIntroHtml();\n\n\t\tif (introHtml) {\n\t\t\tif (this.isRTL) {\n\t\t\t\ttrEl.append(introHtml);\n\t\t\t}\n\t\t\telse {\n\t\t\t\ttrEl.prepend(introHtml);\n\t\t\t}\n\t\t}\n\t}\n\n};\n\n;;\n\n/* A component that renders a grid of whole-days that runs horizontally. There can be multiple rows, one per week.\n----------------------------------------------------------------------------------------------------------------------*/\n\nvar DayGrid = FC.DayGrid = Grid.extend(DayTableMixin, {\n\n\tnumbersVisible: false, // should render a row for day/week numbers? set by outside view. TODO: make internal\n\tbottomCoordPadding: 0, // hack for extending the hit area for the last row of the coordinate grid\n\n\trowEls: null, // set of fake row elements\n\tcellEls: null, // set of whole-day elements comprising the row's background\n\thelperEls: null, // set of cell skeleton elements for rendering the mock event \"helper\"\n\n\trowCoordCache: null,\n\tcolCoordCache: null,\n\n\n\t// Renders the rows and columns into the component's `this.el`, which should already be assigned.\n\t// isRigid determins whether the individual rows should ignore the contents and be a constant height.\n\t// Relies on the view's colCnt and rowCnt. In the future, this component should probably be self-sufficient.\n\trenderDates: function(isRigid) {\n\t\tvar view = this.view;\n\t\tvar rowCnt = this.rowCnt;\n\t\tvar colCnt = this.colCnt;\n\t\tvar html = '';\n\t\tvar row;\n\t\tvar col;\n\n\t\tfor (row = 0; row < rowCnt; row++) {\n\t\t\thtml += this.renderDayRowHtml(row, isRigid);\n\t\t}\n\t\tthis.el.html(html);\n\n\t\tthis.rowEls = this.el.find('.fc-row');\n\t\tthis.cellEls = this.el.find('.fc-day');\n\n\t\tthis.rowCoordCache = new CoordCache({\n\t\t\tels: this.rowEls,\n\t\t\tisVertical: true\n\t\t});\n\t\tthis.colCoordCache = new CoordCache({\n\t\t\tels: this.cellEls.slice(0, this.colCnt), // only the first row\n\t\t\tisHorizontal: true\n\t\t});\n\n\t\t// trigger dayRender with each cell's element\n\t\tfor (row = 0; row < rowCnt; row++) {\n\t\t\tfor (col = 0; col < colCnt; col++) {\n\t\t\t\tview.trigger(\n\t\t\t\t\t'dayRender',\n\t\t\t\t\tnull,\n\t\t\t\t\tthis.getCellDate(row, col),\n\t\t\t\t\tthis.getCellEl(row, col)\n\t\t\t\t);\n\t\t\t}\n\t\t}\n\t},\n\n\n\tunrenderDates: function() {\n\t\tthis.removeSegPopover();\n\t},\n\n\n\trenderBusinessHours: function() {\n\t\tvar segs = this.buildBusinessHourSegs(true); // wholeDay=true\n\t\tthis.renderFill('businessHours', segs, 'bgevent');\n\t},\n\n\n\tunrenderBusinessHours: function() {\n\t\tthis.unrenderFill('businessHours');\n\t},\n\n\n\t// Generates the HTML for a single row, which is a div that wraps a table.\n\t// `row` is the row number.\n\trenderDayRowHtml: function(row, isRigid) {\n\t\tvar view = this.view;\n\t\tvar classes = [ 'fc-row', 'fc-week', view.widgetContentClass ];\n\n\t\tif (isRigid) {\n\t\t\tclasses.push('fc-rigid');\n\t\t}\n\n\t\treturn '' +\n\t\t\t'
' +\n\t\t\t\t'
' +\n\t\t\t\t\t'' +\n\t\t\t\t\t\tthis.renderBgTrHtml(row) +\n\t\t\t\t\t'
' +\n\t\t\t\t'
' +\n\t\t\t\t'
' +\n\t\t\t\t\t'' +\n\t\t\t\t\t\t(this.numbersVisible ?\n\t\t\t\t\t\t\t'' +\n\t\t\t\t\t\t\t\tthis.renderNumberTrHtml(row) +\n\t\t\t\t\t\t\t'' :\n\t\t\t\t\t\t\t''\n\t\t\t\t\t\t\t) +\n\t\t\t\t\t'
' +\n\t\t\t\t'
' +\n\t\t\t'
';\n\t},\n\n\n\t/* Grid Number Rendering\n\t------------------------------------------------------------------------------------------------------------------*/\n\n\n\trenderNumberTrHtml: function(row) {\n\t\treturn '' +\n\t\t\t'' +\n\t\t\t\t(this.isRTL ? '' : this.renderNumberIntroHtml(row)) +\n\t\t\t\tthis.renderNumberCellsHtml(row) +\n\t\t\t\t(this.isRTL ? this.renderNumberIntroHtml(row) : '') +\n\t\t\t'';\n\t},\n\n\n\trenderNumberIntroHtml: function(row) {\n\t\treturn this.renderIntroHtml();\n\t},\n\n\n\trenderNumberCellsHtml: function(row) {\n\t\tvar htmls = [];\n\t\tvar col, date;\n\n\t\tfor (col = 0; col < this.colCnt; col++) {\n\t\t\tdate = this.getCellDate(row, col);\n\t\t\thtmls.push(this.renderNumberCellHtml(date));\n\t\t}\n\n\t\treturn htmls.join('');\n\t},\n\n\n\t// Generates the HTML for the s of the \"number\" row in the DayGrid's content skeleton.\n\t// The number row will only exist if either day numbers or week numbers are turned on.\n\trenderNumberCellHtml: function(date) {\n\t\tvar classes;\n\n\t\tif (!this.view.dayNumbersVisible) { // if there are week numbers but not day numbers\n\t\t\treturn ''; // will create an empty space above events :(\n\t\t}\n\n\t\tclasses = this.getDayClasses(date);\n\t\tclasses.unshift('fc-day-number');\n\n\t\treturn '' +\n\t\t\t'' +\n\t\t\t\tdate.date() +\n\t\t\t'';\n\t},\n\n\n\t/* Options\n\t------------------------------------------------------------------------------------------------------------------*/\n\n\n\t// Computes a default event time formatting string if `timeFormat` is not explicitly defined\n\tcomputeEventTimeFormat: function() {\n\t\treturn this.view.opt('extraSmallTimeFormat'); // like \"6p\" or \"6:30p\"\n\t},\n\n\n\t// Computes a default `displayEventEnd` value if one is not expliclty defined\n\tcomputeDisplayEventEnd: function() {\n\t\treturn this.colCnt == 1; // we'll likely have space if there's only one day\n\t},\n\n\n\t/* Dates\n\t------------------------------------------------------------------------------------------------------------------*/\n\n\n\trangeUpdated: function() {\n\t\tthis.updateDayTable();\n\t},\n\n\n\t// Slices up the given span (unzoned start/end with other misc data) into an array of segments\n\tspanToSegs: function(span) {\n\t\tvar segs = this.sliceRangeByRow(span);\n\t\tvar i, seg;\n\n\t\tfor (i = 0; i < segs.length; i++) {\n\t\t\tseg = segs[i];\n\t\t\tif (this.isRTL) {\n\t\t\t\tseg.leftCol = this.daysPerRow - 1 - seg.lastRowDayIndex;\n\t\t\t\tseg.rightCol = this.daysPerRow - 1 - seg.firstRowDayIndex;\n\t\t\t}\n\t\t\telse {\n\t\t\t\tseg.leftCol = seg.firstRowDayIndex;\n\t\t\t\tseg.rightCol = seg.lastRowDayIndex;\n\t\t\t}\n\t\t}\n\n\t\treturn segs;\n\t},\n\n\n\t/* Hit System\n\t------------------------------------------------------------------------------------------------------------------*/\n\n\n\tprepareHits: function() {\n\t\tthis.colCoordCache.build();\n\t\tthis.rowCoordCache.build();\n\t\tthis.rowCoordCache.bottoms[this.rowCnt - 1] += this.bottomCoordPadding; // hack\n\t},\n\n\n\treleaseHits: function() {\n\t\tthis.colCoordCache.clear();\n\t\tthis.rowCoordCache.clear();\n\t},\n\n\n\tqueryHit: function(leftOffset, topOffset) {\n\t\tif (this.colCoordCache.isLeftInBounds(leftOffset) && this.rowCoordCache.isTopInBounds(topOffset)) {\n\t\t\tvar col = this.colCoordCache.getHorizontalIndex(leftOffset);\n\t\t\tvar row = this.rowCoordCache.getVerticalIndex(topOffset);\n\n\t\t\tif (row != null && col != null) {\n\t\t\t\treturn this.getCellHit(row, col);\n\t\t\t}\n\t\t}\n\t},\n\n\n\tgetHitSpan: function(hit) {\n\t\treturn this.getCellRange(hit.row, hit.col);\n\t},\n\n\n\tgetHitEl: function(hit) {\n\t\treturn this.getCellEl(hit.row, hit.col);\n\t},\n\n\n\t/* Cell System\n\t------------------------------------------------------------------------------------------------------------------*/\n\t// FYI: the first column is the leftmost column, regardless of date\n\n\n\tgetCellHit: function(row, col) {\n\t\treturn {\n\t\t\trow: row,\n\t\t\tcol: col,\n\t\t\tcomponent: this, // needed unfortunately :(\n\t\t\tleft: this.colCoordCache.getLeftOffset(col),\n\t\t\tright: this.colCoordCache.getRightOffset(col),\n\t\t\ttop: this.rowCoordCache.getTopOffset(row),\n\t\t\tbottom: this.rowCoordCache.getBottomOffset(row)\n\t\t};\n\t},\n\n\n\tgetCellEl: function(row, col) {\n\t\treturn this.cellEls.eq(row * this.colCnt + col);\n\t},\n\n\n\t/* Event Drag Visualization\n\t------------------------------------------------------------------------------------------------------------------*/\n\t// TODO: move to DayGrid.event, similar to what we did with Grid's drag methods\n\n\n\t// Renders a visual indication of an event or external element being dragged.\n\t// `eventLocation` has zoned start and end (optional)\n\trenderDrag: function(eventLocation, seg) {\n\n\t\t// always render a highlight underneath\n\t\tthis.renderHighlight(this.eventToSpan(eventLocation));\n\n\t\t// if a segment from the same calendar but another component is being dragged, render a helper event\n\t\tif (seg && seg.component !== this) {\n\t\t\treturn this.renderEventLocationHelper(eventLocation, seg); // returns mock event elements\n\t\t}\n\t},\n\n\n\t// Unrenders any visual indication of a hovering event\n\tunrenderDrag: function() {\n\t\tthis.unrenderHighlight();\n\t\tthis.unrenderHelper();\n\t},\n\n\n\t/* Event Resize Visualization\n\t------------------------------------------------------------------------------------------------------------------*/\n\n\n\t// Renders a visual indication of an event being resized\n\trenderEventResize: function(eventLocation, seg) {\n\t\tthis.renderHighlight(this.eventToSpan(eventLocation));\n\t\treturn this.renderEventLocationHelper(eventLocation, seg); // returns mock event elements\n\t},\n\n\n\t// Unrenders a visual indication of an event being resized\n\tunrenderEventResize: function() {\n\t\tthis.unrenderHighlight();\n\t\tthis.unrenderHelper();\n\t},\n\n\n\t/* Event Helper\n\t------------------------------------------------------------------------------------------------------------------*/\n\n\n\t// Renders a mock \"helper\" event. `sourceSeg` is the associated internal segment object. It can be null.\n\trenderHelper: function(event, sourceSeg) {\n\t\tvar helperNodes = [];\n\t\tvar segs = this.eventToSegs(event);\n\t\tvar rowStructs;\n\n\t\tsegs = this.renderFgSegEls(segs); // assigns each seg's el and returns a subset of segs that were rendered\n\t\trowStructs = this.renderSegRows(segs);\n\n\t\t// inject each new event skeleton into each associated row\n\t\tthis.rowEls.each(function(row, rowNode) {\n\t\t\tvar rowEl = $(rowNode); // the .fc-row\n\t\t\tvar skeletonEl = $('
'); // will be absolutely positioned\n\t\t\tvar skeletonTop;\n\n\t\t\t// If there is an original segment, match the top position. Otherwise, put it at the row's top level\n\t\t\tif (sourceSeg && sourceSeg.row === row) {\n\t\t\t\tskeletonTop = sourceSeg.el.position().top;\n\t\t\t}\n\t\t\telse {\n\t\t\t\tskeletonTop = rowEl.find('.fc-content-skeleton tbody').position().top;\n\t\t\t}\n\n\t\t\tskeletonEl.css('top', skeletonTop)\n\t\t\t\t.find('table')\n\t\t\t\t\t.append(rowStructs[row].tbodyEl);\n\n\t\t\trowEl.append(skeletonEl);\n\t\t\thelperNodes.push(skeletonEl[0]);\n\t\t});\n\n\t\treturn ( // must return the elements rendered\n\t\t\tthis.helperEls = $(helperNodes) // array -> jQuery set\n\t\t);\n\t},\n\n\n\t// Unrenders any visual indication of a mock helper event\n\tunrenderHelper: function() {\n\t\tif (this.helperEls) {\n\t\t\tthis.helperEls.remove();\n\t\t\tthis.helperEls = null;\n\t\t}\n\t},\n\n\n\t/* Fill System (highlight, background events, business hours)\n\t------------------------------------------------------------------------------------------------------------------*/\n\n\n\tfillSegTag: 'td', // override the default tag name\n\n\n\t// Renders a set of rectangles over the given segments of days.\n\t// Only returns segments that successfully rendered.\n\trenderFill: function(type, segs, className) {\n\t\tvar nodes = [];\n\t\tvar i, seg;\n\t\tvar skeletonEl;\n\n\t\tsegs = this.renderFillSegEls(type, segs); // assignes `.el` to each seg. returns successfully rendered segs\n\n\t\tfor (i = 0; i < segs.length; i++) {\n\t\t\tseg = segs[i];\n\t\t\tskeletonEl = this.renderFillRow(type, seg, className);\n\t\t\tthis.rowEls.eq(seg.row).append(skeletonEl);\n\t\t\tnodes.push(skeletonEl[0]);\n\t\t}\n\n\t\tthis.elsByFill[type] = $(nodes);\n\n\t\treturn segs;\n\t},\n\n\n\t// Generates the HTML needed for one row of a fill. Requires the seg's el to be rendered.\n\trenderFillRow: function(type, seg, className) {\n\t\tvar colCnt = this.colCnt;\n\t\tvar startCol = seg.leftCol;\n\t\tvar endCol = seg.rightCol + 1;\n\t\tvar skeletonEl;\n\t\tvar trEl;\n\n\t\tclassName = className || type.toLowerCase();\n\n\t\tskeletonEl = $(\n\t\t\t'
' +\n\t\t\t\t'
' +\n\t\t\t'
'\n\t\t);\n\t\ttrEl = skeletonEl.find('tr');\n\n\t\tif (startCol > 0) {\n\t\t\ttrEl.append('');\n\t\t}\n\n\t\ttrEl.append(\n\t\t\tseg.el.attr('colspan', endCol - startCol)\n\t\t);\n\n\t\tif (endCol < colCnt) {\n\t\t\ttrEl.append('');\n\t\t}\n\n\t\tthis.bookendCells(trEl);\n\n\t\treturn skeletonEl;\n\t}\n\n});\n\n;;\n\n/* Event-rendering methods for the DayGrid class\n----------------------------------------------------------------------------------------------------------------------*/\n\nDayGrid.mixin({\n\n\trowStructs: null, // an array of objects, each holding information about a row's foreground event-rendering\n\n\n\t// Unrenders all events currently rendered on the grid\n\tunrenderEvents: function() {\n\t\tthis.removeSegPopover(); // removes the \"more..\" events popover\n\t\tGrid.prototype.unrenderEvents.apply(this, arguments); // calls the super-method\n\t},\n\n\n\t// Retrieves all rendered segment objects currently rendered on the grid\n\tgetEventSegs: function() {\n\t\treturn Grid.prototype.getEventSegs.call(this) // get the segments from the super-method\n\t\t\t.concat(this.popoverSegs || []); // append the segments from the \"more...\" popover\n\t},\n\n\n\t// Renders the given background event segments onto the grid\n\trenderBgSegs: function(segs) {\n\n\t\t// don't render timed background events\n\t\tvar allDaySegs = $.grep(segs, function(seg) {\n\t\t\treturn seg.event.allDay;\n\t\t});\n\n\t\treturn Grid.prototype.renderBgSegs.call(this, allDaySegs); // call the super-method\n\t},\n\n\n\t// Renders the given foreground event segments onto the grid\n\trenderFgSegs: function(segs) {\n\t\tvar rowStructs;\n\n\t\t// render an `.el` on each seg\n\t\t// returns a subset of the segs. segs that were actually rendered\n\t\tsegs = this.renderFgSegEls(segs);\n\n\t\trowStructs = this.rowStructs = this.renderSegRows(segs);\n\n\t\t// append to each row's content skeleton\n\t\tthis.rowEls.each(function(i, rowNode) {\n\t\t\t$(rowNode).find('.fc-content-skeleton > table').append(\n\t\t\t\trowStructs[i].tbodyEl\n\t\t\t);\n\t\t});\n\n\t\treturn segs; // return only the segs that were actually rendered\n\t},\n\n\n\t// Unrenders all currently rendered foreground event segments\n\tunrenderFgSegs: function() {\n\t\tvar rowStructs = this.rowStructs || [];\n\t\tvar rowStruct;\n\n\t\twhile ((rowStruct = rowStructs.pop())) {\n\t\t\trowStruct.tbodyEl.remove();\n\t\t}\n\n\t\tthis.rowStructs = null;\n\t},\n\n\n\t// Uses the given events array to generate elements that should be appended to each row's content skeleton.\n\t// Returns an array of rowStruct objects (see the bottom of `renderSegRow`).\n\t// PRECONDITION: each segment shoud already have a rendered and assigned `.el`\n\trenderSegRows: function(segs) {\n\t\tvar rowStructs = [];\n\t\tvar segRows;\n\t\tvar row;\n\n\t\tsegRows = this.groupSegRows(segs); // group into nested arrays\n\n\t\t// iterate each row of segment groupings\n\t\tfor (row = 0; row < segRows.length; row++) {\n\t\t\trowStructs.push(\n\t\t\t\tthis.renderSegRow(row, segRows[row])\n\t\t\t);\n\t\t}\n\n\t\treturn rowStructs;\n\t},\n\n\n\t// Builds the HTML to be used for the default element for an individual segment\n\tfgSegHtml: function(seg, disableResizing) {\n\t\tvar view = this.view;\n\t\tvar event = seg.event;\n\t\tvar isDraggable = view.isEventDraggable(event);\n\t\tvar isResizableFromStart = !disableResizing && event.allDay &&\n\t\t\tseg.isStart && view.isEventResizableFromStart(event);\n\t\tvar isResizableFromEnd = !disableResizing && event.allDay &&\n\t\t\tseg.isEnd && view.isEventResizableFromEnd(event);\n\t\tvar classes = this.getSegClasses(seg, isDraggable, isResizableFromStart || isResizableFromEnd);\n\t\tvar skinCss = cssToStr(this.getSegSkinCss(seg));\n\t\tvar timeHtml = '';\n\t\tvar timeText;\n\t\tvar titleHtml;\n\n\t\tclasses.unshift('fc-day-grid-event', 'fc-h-event');\n\n\t\t// Only display a timed events time if it is the starting segment\n\t\tif (seg.isStart) {\n\t\t\ttimeText = this.getEventTimeText(event);\n\t\t\tif (timeText) {\n\t\t\t\ttimeHtml = '' + htmlEscape(timeText) + '';\n\t\t\t}\n\t\t}\n\n\t\ttitleHtml =\n\t\t\t'' +\n\t\t\t\t(htmlEscape(event.title || '') || ' ') + // we always want one line of height\n\t\t\t'';\n\t\t\n\t\treturn '
' +\n\t\t\t\t'
' +\n\t\t\t\t\t(this.isRTL ?\n\t\t\t\t\t\ttitleHtml + ' ' + timeHtml : // put a natural space in between\n\t\t\t\t\t\ttimeHtml + ' ' + titleHtml //\n\t\t\t\t\t\t) +\n\t\t\t\t'
' +\n\t\t\t\t(isResizableFromStart ?\n\t\t\t\t\t'
' :\n\t\t\t\t\t''\n\t\t\t\t\t) +\n\t\t\t\t(isResizableFromEnd ?\n\t\t\t\t\t'
' :\n\t\t\t\t\t''\n\t\t\t\t\t) +\n\t\t\t'';\n\t},\n\n\n\t// Given a row # and an array of segments all in the same row, render a element, a skeleton that contains\n\t// the segments. Returns object with a bunch of internal data about how the render was calculated.\n\t// NOTE: modifies rowSegs\n\trenderSegRow: function(row, rowSegs) {\n\t\tvar colCnt = this.colCnt;\n\t\tvar segLevels = this.buildSegLevels(rowSegs); // group into sub-arrays of levels\n\t\tvar levelCnt = Math.max(1, segLevels.length); // ensure at least one level\n\t\tvar tbody = $('');\n\t\tvar segMatrix = []; // lookup for which segments are rendered into which level+col cells\n\t\tvar cellMatrix = []; // lookup for all elements of the level+col matrix\n\t\tvar loneCellMatrix = []; // lookup for elements that only take up a single column\n\t\tvar i, levelSegs;\n\t\tvar col;\n\t\tvar tr;\n\t\tvar j, seg;\n\t\tvar td;\n\n\t\t// populates empty cells from the current column (`col`) to `endCol`\n\t\tfunction emptyCellsUntil(endCol) {\n\t\t\twhile (col < endCol) {\n\t\t\t\t// try to grab a cell from the level above and extend its rowspan. otherwise, create a fresh cell\n\t\t\t\ttd = (loneCellMatrix[i - 1] || [])[col];\n\t\t\t\tif (td) {\n\t\t\t\t\ttd.attr(\n\t\t\t\t\t\t'rowspan',\n\t\t\t\t\t\tparseInt(td.attr('rowspan') || 1, 10) + 1\n\t\t\t\t\t);\n\t\t\t\t}\n\t\t\t\telse {\n\t\t\t\t\ttd = $('');\n\t\t\t\t\ttr.append(td);\n\t\t\t\t}\n\t\t\t\tcellMatrix[i][col] = td;\n\t\t\t\tloneCellMatrix[i][col] = td;\n\t\t\t\tcol++;\n\t\t\t}\n\t\t}\n\n\t\tfor (i = 0; i < levelCnt; i++) { // iterate through all levels\n\t\t\tlevelSegs = segLevels[i];\n\t\t\tcol = 0;\n\t\t\ttr = $('');\n\n\t\t\tsegMatrix.push([]);\n\t\t\tcellMatrix.push([]);\n\t\t\tloneCellMatrix.push([]);\n\n\t\t\t// levelCnt might be 1 even though there are no actual levels. protect against this.\n\t\t\t// this single empty row is useful for styling.\n\t\t\tif (levelSegs) {\n\t\t\t\tfor (j = 0; j < levelSegs.length; j++) { // iterate through segments in level\n\t\t\t\t\tseg = levelSegs[j];\n\n\t\t\t\t\temptyCellsUntil(seg.leftCol);\n\n\t\t\t\t\t// create a container that occupies or more columns. append the event element.\n\t\t\t\t\ttd = $('').append(seg.el);\n\t\t\t\t\tif (seg.leftCol != seg.rightCol) {\n\t\t\t\t\t\ttd.attr('colspan', seg.rightCol - seg.leftCol + 1);\n\t\t\t\t\t}\n\t\t\t\t\telse { // a single-column segment\n\t\t\t\t\t\tloneCellMatrix[i][col] = td;\n\t\t\t\t\t}\n\n\t\t\t\t\twhile (col <= seg.rightCol) {\n\t\t\t\t\t\tcellMatrix[i][col] = td;\n\t\t\t\t\t\tsegMatrix[i][col] = seg;\n\t\t\t\t\t\tcol++;\n\t\t\t\t\t}\n\n\t\t\t\t\ttr.append(td);\n\t\t\t\t}\n\t\t\t}\n\n\t\t\temptyCellsUntil(colCnt); // finish off the row\n\t\t\tthis.bookendCells(tr);\n\t\t\ttbody.append(tr);\n\t\t}\n\n\t\treturn { // a \"rowStruct\"\n\t\t\trow: row, // the row number\n\t\t\ttbodyEl: tbody,\n\t\t\tcellMatrix: cellMatrix,\n\t\t\tsegMatrix: segMatrix,\n\t\t\tsegLevels: segLevels,\n\t\t\tsegs: rowSegs\n\t\t};\n\t},\n\n\n\t// Stacks a flat array of segments, which are all assumed to be in the same row, into subarrays of vertical levels.\n\t// NOTE: modifies segs\n\tbuildSegLevels: function(segs) {\n\t\tvar levels = [];\n\t\tvar i, seg;\n\t\tvar j;\n\n\t\t// Give preference to elements with certain criteria, so they have\n\t\t// a chance to be closer to the top.\n\t\tthis.sortEventSegs(segs);\n\t\t\n\t\tfor (i = 0; i < segs.length; i++) {\n\t\t\tseg = segs[i];\n\n\t\t\t// loop through levels, starting with the topmost, until the segment doesn't collide with other segments\n\t\t\tfor (j = 0; j < levels.length; j++) {\n\t\t\t\tif (!isDaySegCollision(seg, levels[j])) {\n\t\t\t\t\tbreak;\n\t\t\t\t}\n\t\t\t}\n\t\t\t// `j` now holds the desired subrow index\n\t\t\tseg.level = j;\n\n\t\t\t// create new level array if needed and append segment\n\t\t\t(levels[j] || (levels[j] = [])).push(seg);\n\t\t}\n\n\t\t// order segments left-to-right. very important if calendar is RTL\n\t\tfor (j = 0; j < levels.length; j++) {\n\t\t\tlevels[j].sort(compareDaySegCols);\n\t\t}\n\n\t\treturn levels;\n\t},\n\n\n\t// Given a flat array of segments, return an array of sub-arrays, grouped by each segment's row\n\tgroupSegRows: function(segs) {\n\t\tvar segRows = [];\n\t\tvar i;\n\n\t\tfor (i = 0; i < this.rowCnt; i++) {\n\t\t\tsegRows.push([]);\n\t\t}\n\n\t\tfor (i = 0; i < segs.length; i++) {\n\t\t\tsegRows[segs[i].row].push(segs[i]);\n\t\t}\n\n\t\treturn segRows;\n\t}\n\n});\n\n\n// Computes whether two segments' columns collide. They are assumed to be in the same row.\nfunction isDaySegCollision(seg, otherSegs) {\n\tvar i, otherSeg;\n\n\tfor (i = 0; i < otherSegs.length; i++) {\n\t\totherSeg = otherSegs[i];\n\n\t\tif (\n\t\t\totherSeg.leftCol <= seg.rightCol &&\n\t\t\totherSeg.rightCol >= seg.leftCol\n\t\t) {\n\t\t\treturn true;\n\t\t}\n\t}\n\n\treturn false;\n}\n\n\n// A cmp function for determining the leftmost event\nfunction compareDaySegCols(a, b) {\n\treturn a.leftCol - b.leftCol;\n}\n\n;;\n\n/* Methods relate to limiting the number events for a given day on a DayGrid\n----------------------------------------------------------------------------------------------------------------------*/\n// NOTE: all the segs being passed around in here are foreground segs\n\nDayGrid.mixin({\n\n\tsegPopover: null, // the Popover that holds events that can't fit in a cell. null when not visible\n\tpopoverSegs: null, // an array of segment objects that the segPopover holds. null when not visible\n\n\n\tremoveSegPopover: function() {\n\t\tif (this.segPopover) {\n\t\t\tthis.segPopover.hide(); // in handler, will call segPopover's removeElement\n\t\t}\n\t},\n\n\n\t// Limits the number of \"levels\" (vertically stacking layers of events) for each row of the grid.\n\t// `levelLimit` can be false (don't limit), a number, or true (should be computed).\n\tlimitRows: function(levelLimit) {\n\t\tvar rowStructs = this.rowStructs || [];\n\t\tvar row; // row #\n\t\tvar rowLevelLimit;\n\n\t\tfor (row = 0; row < rowStructs.length; row++) {\n\t\t\tthis.unlimitRow(row);\n\n\t\t\tif (!levelLimit) {\n\t\t\t\trowLevelLimit = false;\n\t\t\t}\n\t\t\telse if (typeof levelLimit === 'number') {\n\t\t\t\trowLevelLimit = levelLimit;\n\t\t\t}\n\t\t\telse {\n\t\t\t\trowLevelLimit = this.computeRowLevelLimit(row);\n\t\t\t}\n\n\t\t\tif (rowLevelLimit !== false) {\n\t\t\t\tthis.limitRow(row, rowLevelLimit);\n\t\t\t}\n\t\t}\n\t},\n\n\n\t// Computes the number of levels a row will accomodate without going outside its bounds.\n\t// Assumes the row is \"rigid\" (maintains a constant height regardless of what is inside).\n\t// `row` is the row number.\n\tcomputeRowLevelLimit: function(row) {\n\t\tvar rowEl = this.rowEls.eq(row); // the containing \"fake\" row div\n\t\tvar rowHeight = rowEl.height(); // TODO: cache somehow?\n\t\tvar trEls = this.rowStructs[row].tbodyEl.children();\n\t\tvar i, trEl;\n\t\tvar trHeight;\n\n\t\tfunction iterInnerHeights(i, childNode) {\n\t\t\ttrHeight = Math.max(trHeight, $(childNode).outerHeight());\n\t\t}\n\n\t\t// Reveal one level at a time and stop when we find one out of bounds\n\t\tfor (i = 0; i < trEls.length; i++) {\n\t\t\ttrEl = trEls.eq(i).removeClass('fc-limited'); // reset to original state (reveal)\n\n\t\t\t// with rowspans>1 and IE8, trEl.outerHeight() would return the height of the largest cell,\n\t\t\t// so instead, find the tallest inner content element.\n\t\t\ttrHeight = 0;\n\t\t\ttrEl.find('> td > :first-child').each(iterInnerHeights);\n\n\t\t\tif (trEl.position().top + trHeight > rowHeight) {\n\t\t\t\treturn i;\n\t\t\t}\n\t\t}\n\n\t\treturn false; // should not limit at all\n\t},\n\n\n\t// Limits the given grid row to the maximum number of levels and injects \"more\" links if necessary.\n\t// `row` is the row number.\n\t// `levelLimit` is a number for the maximum (inclusive) number of levels allowed.\n\tlimitRow: function(row, levelLimit) {\n\t\tvar _this = this;\n\t\tvar rowStruct = this.rowStructs[row];\n\t\tvar moreNodes = []; // array of \"more\" links and DOM nodes\n\t\tvar col = 0; // col #, left-to-right (not chronologically)\n\t\tvar levelSegs; // array of segment objects in the last allowable level, ordered left-to-right\n\t\tvar cellMatrix; // a matrix (by level, then column) of all jQuery elements in the row\n\t\tvar limitedNodes; // array of temporarily hidden level and segment DOM nodes\n\t\tvar i, seg;\n\t\tvar segsBelow; // array of segment objects below `seg` in the current `col`\n\t\tvar totalSegsBelow; // total number of segments below `seg` in any of the columns `seg` occupies\n\t\tvar colSegsBelow; // array of segment arrays, below seg, one for each column (offset from segs's first column)\n\t\tvar td, rowspan;\n\t\tvar segMoreNodes; // array of \"more\" cells that will stand-in for the current seg's cell\n\t\tvar j;\n\t\tvar moreTd, moreWrap, moreLink;\n\n\t\t// Iterates through empty level cells and places \"more\" links inside if need be\n\t\tfunction emptyCellsUntil(endCol) { // goes from current `col` to `endCol`\n\t\t\twhile (col < endCol) {\n\t\t\t\tsegsBelow = _this.getCellSegs(row, col, levelLimit);\n\t\t\t\tif (segsBelow.length) {\n\t\t\t\t\ttd = cellMatrix[levelLimit - 1][col];\n\t\t\t\t\tmoreLink = _this.renderMoreLink(row, col, segsBelow);\n\t\t\t\t\tmoreWrap = $('
').append(moreLink);\n\t\t\t\t\ttd.append(moreWrap);\n\t\t\t\t\tmoreNodes.push(moreWrap[0]);\n\t\t\t\t}\n\t\t\t\tcol++;\n\t\t\t}\n\t\t}\n\n\t\tif (levelLimit && levelLimit < rowStruct.segLevels.length) { // is it actually over the limit?\n\t\t\tlevelSegs = rowStruct.segLevels[levelLimit - 1];\n\t\t\tcellMatrix = rowStruct.cellMatrix;\n\n\t\t\tlimitedNodes = rowStruct.tbodyEl.children().slice(levelLimit) // get level elements past the limit\n\t\t\t\t.addClass('fc-limited').get(); // hide elements and get a simple DOM-nodes array\n\n\t\t\t// iterate though segments in the last allowable level\n\t\t\tfor (i = 0; i < levelSegs.length; i++) {\n\t\t\t\tseg = levelSegs[i];\n\t\t\t\temptyCellsUntil(seg.leftCol); // process empty cells before the segment\n\n\t\t\t\t// determine *all* segments below `seg` that occupy the same columns\n\t\t\t\tcolSegsBelow = [];\n\t\t\t\ttotalSegsBelow = 0;\n\t\t\t\twhile (col <= seg.rightCol) {\n\t\t\t\t\tsegsBelow = this.getCellSegs(row, col, levelLimit);\n\t\t\t\t\tcolSegsBelow.push(segsBelow);\n\t\t\t\t\ttotalSegsBelow += segsBelow.length;\n\t\t\t\t\tcol++;\n\t\t\t\t}\n\n\t\t\t\tif (totalSegsBelow) { // do we need to replace this segment with one or many \"more\" links?\n\t\t\t\t\ttd = cellMatrix[levelLimit - 1][seg.leftCol]; // the segment's parent cell\n\t\t\t\t\trowspan = td.attr('rowspan') || 1;\n\t\t\t\t\tsegMoreNodes = [];\n\n\t\t\t\t\t// make a replacement for each column the segment occupies. will be one for each colspan\n\t\t\t\t\tfor (j = 0; j < colSegsBelow.length; j++) {\n\t\t\t\t\t\tmoreTd = $('').attr('rowspan', rowspan);\n\t\t\t\t\t\tsegsBelow = colSegsBelow[j];\n\t\t\t\t\t\tmoreLink = this.renderMoreLink(\n\t\t\t\t\t\t\trow,\n\t\t\t\t\t\t\tseg.leftCol + j,\n\t\t\t\t\t\t\t[ seg ].concat(segsBelow) // count seg as hidden too\n\t\t\t\t\t\t);\n\t\t\t\t\t\tmoreWrap = $('
').append(moreLink);\n\t\t\t\t\t\tmoreTd.append(moreWrap);\n\t\t\t\t\t\tsegMoreNodes.push(moreTd[0]);\n\t\t\t\t\t\tmoreNodes.push(moreTd[0]);\n\t\t\t\t\t}\n\n\t\t\t\t\ttd.addClass('fc-limited').after($(segMoreNodes)); // hide original and inject replacements\n\t\t\t\t\tlimitedNodes.push(td[0]);\n\t\t\t\t}\n\t\t\t}\n\n\t\t\temptyCellsUntil(this.colCnt); // finish off the level\n\t\t\trowStruct.moreEls = $(moreNodes); // for easy undoing later\n\t\t\trowStruct.limitedEls = $(limitedNodes); // for easy undoing later\n\t\t}\n\t},\n\n\n\t// Reveals all levels and removes all \"more\"-related elements for a grid's row.\n\t// `row` is a row number.\n\tunlimitRow: function(row) {\n\t\tvar rowStruct = this.rowStructs[row];\n\n\t\tif (rowStruct.moreEls) {\n\t\t\trowStruct.moreEls.remove();\n\t\t\trowStruct.moreEls = null;\n\t\t}\n\n\t\tif (rowStruct.limitedEls) {\n\t\t\trowStruct.limitedEls.removeClass('fc-limited');\n\t\t\trowStruct.limitedEls = null;\n\t\t}\n\t},\n\n\n\t// Renders an element that represents hidden event element for a cell.\n\t// Responsible for attaching click handler as well.\n\trenderMoreLink: function(row, col, hiddenSegs) {\n\t\tvar _this = this;\n\t\tvar view = this.view;\n\n\t\treturn $('')\n\t\t\t.text(\n\t\t\t\tthis.getMoreLinkText(hiddenSegs.length)\n\t\t\t)\n\t\t\t.on('click', function(ev) {\n\t\t\t\tvar clickOption = view.opt('eventLimitClick');\n\t\t\t\tvar date = _this.getCellDate(row, col);\n\t\t\t\tvar moreEl = $(this);\n\t\t\t\tvar dayEl = _this.getCellEl(row, col);\n\t\t\t\tvar allSegs = _this.getCellSegs(row, col);\n\n\t\t\t\t// rescope the segments to be within the cell's date\n\t\t\t\tvar reslicedAllSegs = _this.resliceDaySegs(allSegs, date);\n\t\t\t\tvar reslicedHiddenSegs = _this.resliceDaySegs(hiddenSegs, date);\n\n\t\t\t\tif (typeof clickOption === 'function') {\n\t\t\t\t\t// the returned value can be an atomic option\n\t\t\t\t\tclickOption = view.trigger('eventLimitClick', null, {\n\t\t\t\t\t\tdate: date,\n\t\t\t\t\t\tdayEl: dayEl,\n\t\t\t\t\t\tmoreEl: moreEl,\n\t\t\t\t\t\tsegs: reslicedAllSegs,\n\t\t\t\t\t\thiddenSegs: reslicedHiddenSegs\n\t\t\t\t\t}, ev);\n\t\t\t\t}\n\n\t\t\t\tif (clickOption === 'popover') {\n\t\t\t\t\t_this.showSegPopover(row, col, moreEl, reslicedAllSegs);\n\t\t\t\t}\n\t\t\t\telse if (typeof clickOption === 'string') { // a view name\n\t\t\t\t\tview.calendar.zoomTo(date, clickOption);\n\t\t\t\t}\n\t\t\t});\n\t},\n\n\n\t// Reveals the popover that displays all events within a cell\n\tshowSegPopover: function(row, col, moreLink, segs) {\n\t\tvar _this = this;\n\t\tvar view = this.view;\n\t\tvar moreWrap = moreLink.parent(); // the
wrapper around the \n\t\tvar topEl; // the element we want to match the top coordinate of\n\t\tvar options;\n\n\t\tif (this.rowCnt == 1) {\n\t\t\ttopEl = view.el; // will cause the popover to cover any sort of header\n\t\t}\n\t\telse {\n\t\t\ttopEl = this.rowEls.eq(row); // will align with top of row\n\t\t}\n\n\t\toptions = {\n\t\t\tclassName: 'fc-more-popover',\n\t\t\tcontent: this.renderSegPopoverContent(row, col, segs),\n\t\t\tparentEl: this.view.el, // attach to root of view. guarantees outside of scrollbars.\n\t\t\ttop: topEl.offset().top,\n\t\t\tautoHide: true, // when the user clicks elsewhere, hide the popover\n\t\t\tviewportConstrain: view.opt('popoverViewportConstrain'),\n\t\t\thide: function() {\n\t\t\t\t// kill everything when the popover is hidden\n\t\t\t\t_this.segPopover.removeElement();\n\t\t\t\t_this.segPopover = null;\n\t\t\t\t_this.popoverSegs = null;\n\t\t\t}\n\t\t};\n\n\t\t// Determine horizontal coordinate.\n\t\t// We use the moreWrap instead of the to avoid border confusion.\n\t\tif (this.isRTL) {\n\t\t\toptions.right = moreWrap.offset().left + moreWrap.outerWidth() + 1; // +1 to be over cell border\n\t\t}\n\t\telse {\n\t\t\toptions.left = moreWrap.offset().left - 1; // -1 to be over cell border\n\t\t}\n\n\t\tthis.segPopover = new Popover(options);\n\t\tthis.segPopover.show();\n\n\t\t// the popover doesn't live within the grid's container element, and thus won't get the event\n\t\t// delegated-handlers for free. attach event-related handlers to the popover.\n\t\tthis.bindSegHandlersToEl(this.segPopover.el);\n\t},\n\n\n\t// Builds the inner DOM contents of the segment popover\n\trenderSegPopoverContent: function(row, col, segs) {\n\t\tvar view = this.view;\n\t\tvar isTheme = view.opt('theme');\n\t\tvar title = this.getCellDate(row, col).format(view.opt('dayPopoverFormat'));\n\t\tvar content = $(\n\t\t\t'
' +\n\t\t\t\t'' +\n\t\t\t\t'' +\n\t\t\t\t\thtmlEscape(title) +\n\t\t\t\t'' +\n\t\t\t\t'
' +\n\t\t\t'
' +\n\t\t\t'
' +\n\t\t\t\t'
' +\n\t\t\t'
'\n\t\t);\n\t\tvar segContainer = content.find('.fc-event-container');\n\t\tvar i;\n\n\t\t// render each seg's `el` and only return the visible segs\n\t\tsegs = this.renderFgSegEls(segs, true); // disableResizing=true\n\t\tthis.popoverSegs = segs;\n\n\t\tfor (i = 0; i < segs.length; i++) {\n\n\t\t\t// because segments in the popover are not part of a grid coordinate system, provide a hint to any\n\t\t\t// grids that want to do drag-n-drop about which cell it came from\n\t\t\tthis.prepareHits();\n\t\t\tsegs[i].hit = this.getCellHit(row, col);\n\t\t\tthis.releaseHits();\n\n\t\t\tsegContainer.append(segs[i].el);\n\t\t}\n\n\t\treturn content;\n\t},\n\n\n\t// Given the events within an array of segment objects, reslice them to be in a single day\n\tresliceDaySegs: function(segs, dayDate) {\n\n\t\t// build an array of the original events\n\t\tvar events = $.map(segs, function(seg) {\n\t\t\treturn seg.event;\n\t\t});\n\n\t\tvar dayStart = dayDate.clone();\n\t\tvar dayEnd = dayStart.clone().add(1, 'days');\n\t\tvar dayRange = { start: dayStart, end: dayEnd };\n\n\t\t// slice the events with a custom slicing function\n\t\tsegs = this.eventsToSegs(\n\t\t\tevents,\n\t\t\tfunction(range) {\n\t\t\t\tvar seg = intersectRanges(range, dayRange); // undefind if no intersection\n\t\t\t\treturn seg ? [ seg ] : []; // must return an array of segments\n\t\t\t}\n\t\t);\n\n\t\t// force an order because eventsToSegs doesn't guarantee one\n\t\tthis.sortEventSegs(segs);\n\n\t\treturn segs;\n\t},\n\n\n\t// Generates the text that should be inside a \"more\" link, given the number of events it represents\n\tgetMoreLinkText: function(num) {\n\t\tvar opt = this.view.opt('eventLimitText');\n\n\t\tif (typeof opt === 'function') {\n\t\t\treturn opt(num);\n\t\t}\n\t\telse {\n\t\t\treturn '+' + num + ' ' + opt;\n\t\t}\n\t},\n\n\n\t// Returns segments within a given cell.\n\t// If `startLevel` is specified, returns only events including and below that level. Otherwise returns all segs.\n\tgetCellSegs: function(row, col, startLevel) {\n\t\tvar segMatrix = this.rowStructs[row].segMatrix;\n\t\tvar level = startLevel || 0;\n\t\tvar segs = [];\n\t\tvar seg;\n\n\t\twhile (level < segMatrix.length) {\n\t\t\tseg = segMatrix[level][col];\n\t\t\tif (seg) {\n\t\t\t\tsegs.push(seg);\n\t\t\t}\n\t\t\tlevel++;\n\t\t}\n\n\t\treturn segs;\n\t}\n\n});\n\n;;\n\n/* A component that renders one or more columns of vertical time slots\n----------------------------------------------------------------------------------------------------------------------*/\n// We mixin DayTable, even though there is only a single row of days\n\nvar TimeGrid = FC.TimeGrid = Grid.extend(DayTableMixin, {\n\n\tslotDuration: null, // duration of a \"slot\", a distinct time segment on given day, visualized by lines\n\tsnapDuration: null, // granularity of time for dragging and selecting\n\tsnapsPerSlot: null,\n\tminTime: null, // Duration object that denotes the first visible time of any given day\n\tmaxTime: null, // Duration object that denotes the exclusive visible end time of any given day\n\tlabelFormat: null, // formatting string for times running along vertical axis\n\tlabelInterval: null, // duration of how often a label should be displayed for a slot\n\n\tcolEls: null, // cells elements in the day-row background\n\tslatContainerEl: null, // div that wraps all the slat rows\n\tslatEls: null, // elements running horizontally across all columns\n\tnowIndicatorEls: null,\n\n\tcolCoordCache: null,\n\tslatCoordCache: null,\n\n\n\tconstructor: function() {\n\t\tGrid.apply(this, arguments); // call the super-constructor\n\n\t\tthis.processOptions();\n\t},\n\n\n\t// Renders the time grid into `this.el`, which should already be assigned.\n\t// Relies on the view's colCnt. In the future, this component should probably be self-sufficient.\n\trenderDates: function() {\n\t\tthis.el.html(this.renderHtml());\n\t\tthis.colEls = this.el.find('.fc-day');\n\t\tthis.slatContainerEl = this.el.find('.fc-slats');\n\t\tthis.slatEls = this.slatContainerEl.find('tr');\n\n\t\tthis.colCoordCache = new CoordCache({\n\t\t\tels: this.colEls,\n\t\t\tisHorizontal: true\n\t\t});\n\t\tthis.slatCoordCache = new CoordCache({\n\t\t\tels: this.slatEls,\n\t\t\tisVertical: true\n\t\t});\n\n\t\tthis.renderContentSkeleton();\n\t},\n\n\n\t// Renders the basic HTML skeleton for the grid\n\trenderHtml: function() {\n\t\treturn '' +\n\t\t\t'
' +\n\t\t\t\t'' +\n\t\t\t\t\tthis.renderBgTrHtml(0) + // row=0\n\t\t\t\t'
' +\n\t\t\t'
' +\n\t\t\t'
' +\n\t\t\t\t'' +\n\t\t\t\t\tthis.renderSlatRowHtml() +\n\t\t\t\t'
' +\n\t\t\t'
';\n\t},\n\n\n\t// Generates the HTML for the horizontal \"slats\" that run width-wise. Has a time axis on a side. Depends on RTL.\n\trenderSlatRowHtml: function() {\n\t\tvar view = this.view;\n\t\tvar isRTL = this.isRTL;\n\t\tvar html = '';\n\t\tvar slotTime = moment.duration(+this.minTime); // wish there was .clone() for durations\n\t\tvar slotDate; // will be on the view's first day, but we only care about its time\n\t\tvar isLabeled;\n\t\tvar axisHtml;\n\n\t\t// Calculate the time for each slot\n\t\twhile (slotTime < this.maxTime) {\n\t\t\tslotDate = this.start.clone().time(slotTime);\n\t\t\tisLabeled = isInt(divideDurationByDuration(slotTime, this.labelInterval));\n\n\t\t\taxisHtml =\n\t\t\t\t'' +\n\t\t\t\t\t(isLabeled ?\n\t\t\t\t\t\t'' + // for matchCellWidths\n\t\t\t\t\t\t\thtmlEscape(slotDate.format(this.labelFormat)) +\n\t\t\t\t\t\t'' :\n\t\t\t\t\t\t''\n\t\t\t\t\t\t) +\n\t\t\t\t'';\n\n\t\t\thtml +=\n\t\t\t\t'' +\n\t\t\t\t\t(!isRTL ? axisHtml : '') +\n\t\t\t\t\t'' +\n\t\t\t\t\t(isRTL ? axisHtml : '') +\n\t\t\t\t\"\";\n\n\t\t\tslotTime.add(this.slotDuration);\n\t\t}\n\n\t\treturn html;\n\t},\n\n\n\t/* Options\n\t------------------------------------------------------------------------------------------------------------------*/\n\n\n\t// Parses various options into properties of this object\n\tprocessOptions: function() {\n\t\tvar view = this.view;\n\t\tvar slotDuration = view.opt('slotDuration');\n\t\tvar snapDuration = view.opt('snapDuration');\n\t\tvar input;\n\n\t\tslotDuration = moment.duration(slotDuration);\n\t\tsnapDuration = snapDuration ? moment.duration(snapDuration) : slotDuration;\n\n\t\tthis.slotDuration = slotDuration;\n\t\tthis.snapDuration = snapDuration;\n\t\tthis.snapsPerSlot = slotDuration / snapDuration; // TODO: ensure an integer multiple?\n\n\t\tthis.minResizeDuration = snapDuration; // hack\n\n\t\tthis.minTime = moment.duration(view.opt('minTime'));\n\t\tthis.maxTime = moment.duration(view.opt('maxTime'));\n\n\t\t// might be an array value (for TimelineView).\n\t\t// if so, getting the most granular entry (the last one probably).\n\t\tinput = view.opt('slotLabelFormat');\n\t\tif ($.isArray(input)) {\n\t\t\tinput = input[input.length - 1];\n\t\t}\n\n\t\tthis.labelFormat =\n\t\t\tinput ||\n\t\t\tview.opt('axisFormat') || // deprecated\n\t\t\tview.opt('smallTimeFormat'); // the computed default\n\n\t\tinput = view.opt('slotLabelInterval');\n\t\tthis.labelInterval = input ?\n\t\t\tmoment.duration(input) :\n\t\t\tthis.computeLabelInterval(slotDuration);\n\t},\n\n\n\t// Computes an automatic value for slotLabelInterval\n\tcomputeLabelInterval: function(slotDuration) {\n\t\tvar i;\n\t\tvar labelInterval;\n\t\tvar slotsPerLabel;\n\n\t\t// find the smallest stock label interval that results in more than one slots-per-label\n\t\tfor (i = AGENDA_STOCK_SUB_DURATIONS.length - 1; i >= 0; i--) {\n\t\t\tlabelInterval = moment.duration(AGENDA_STOCK_SUB_DURATIONS[i]);\n\t\t\tslotsPerLabel = divideDurationByDuration(labelInterval, slotDuration);\n\t\t\tif (isInt(slotsPerLabel) && slotsPerLabel > 1) {\n\t\t\t\treturn labelInterval;\n\t\t\t}\n\t\t}\n\n\t\treturn moment.duration(slotDuration); // fall back. clone\n\t},\n\n\n\t// Computes a default event time formatting string if `timeFormat` is not explicitly defined\n\tcomputeEventTimeFormat: function() {\n\t\treturn this.view.opt('noMeridiemTimeFormat'); // like \"6:30\" (no AM/PM)\n\t},\n\n\n\t// Computes a default `displayEventEnd` value if one is not expliclty defined\n\tcomputeDisplayEventEnd: function() {\n\t\treturn true;\n\t},\n\n\n\t/* Hit System\n\t------------------------------------------------------------------------------------------------------------------*/\n\n\n\tprepareHits: function() {\n\t\tthis.colCoordCache.build();\n\t\tthis.slatCoordCache.build();\n\t},\n\n\n\treleaseHits: function() {\n\t\tthis.colCoordCache.clear();\n\t\t// NOTE: don't clear slatCoordCache because we rely on it for computeTimeTop\n\t},\n\n\n\tqueryHit: function(leftOffset, topOffset) {\n\t\tvar snapsPerSlot = this.snapsPerSlot;\n\t\tvar colCoordCache = this.colCoordCache;\n\t\tvar slatCoordCache = this.slatCoordCache;\n\n\t\tif (colCoordCache.isLeftInBounds(leftOffset) && slatCoordCache.isTopInBounds(topOffset)) {\n\t\t\tvar colIndex = colCoordCache.getHorizontalIndex(leftOffset);\n\t\t\tvar slatIndex = slatCoordCache.getVerticalIndex(topOffset);\n\n\t\t\tif (colIndex != null && slatIndex != null) {\n\t\t\t\tvar slatTop = slatCoordCache.getTopOffset(slatIndex);\n\t\t\t\tvar slatHeight = slatCoordCache.getHeight(slatIndex);\n\t\t\t\tvar partial = (topOffset - slatTop) / slatHeight; // floating point number between 0 and 1\n\t\t\t\tvar localSnapIndex = Math.floor(partial * snapsPerSlot); // the snap # relative to start of slat\n\t\t\t\tvar snapIndex = slatIndex * snapsPerSlot + localSnapIndex;\n\t\t\t\tvar snapTop = slatTop + (localSnapIndex / snapsPerSlot) * slatHeight;\n\t\t\t\tvar snapBottom = slatTop + ((localSnapIndex + 1) / snapsPerSlot) * slatHeight;\n\n\t\t\t\treturn {\n\t\t\t\t\tcol: colIndex,\n\t\t\t\t\tsnap: snapIndex,\n\t\t\t\t\tcomponent: this, // needed unfortunately :(\n\t\t\t\t\tleft: colCoordCache.getLeftOffset(colIndex),\n\t\t\t\t\tright: colCoordCache.getRightOffset(colIndex),\n\t\t\t\t\ttop: snapTop,\n\t\t\t\t\tbottom: snapBottom\n\t\t\t\t};\n\t\t\t}\n\t\t}\n\t},\n\n\n\tgetHitSpan: function(hit) {\n\t\tvar start = this.getCellDate(0, hit.col); // row=0\n\t\tvar time = this.computeSnapTime(hit.snap); // pass in the snap-index\n\t\tvar end;\n\n\t\tstart.time(time);\n\t\tend = start.clone().add(this.snapDuration);\n\n\t\treturn { start: start, end: end };\n\t},\n\n\n\tgetHitEl: function(hit) {\n\t\treturn this.colEls.eq(hit.col);\n\t},\n\n\n\t/* Dates\n\t------------------------------------------------------------------------------------------------------------------*/\n\n\n\trangeUpdated: function() {\n\t\tthis.updateDayTable();\n\t},\n\n\n\t// Given a row number of the grid, representing a \"snap\", returns a time (Duration) from its start-of-day\n\tcomputeSnapTime: function(snapIndex) {\n\t\treturn moment.duration(this.minTime + this.snapDuration * snapIndex);\n\t},\n\n\n\t// Slices up the given span (unzoned start/end with other misc data) into an array of segments\n\tspanToSegs: function(span) {\n\t\tvar segs = this.sliceRangeByTimes(span);\n\t\tvar i;\n\n\t\tfor (i = 0; i < segs.length; i++) {\n\t\t\tif (this.isRTL) {\n\t\t\t\tsegs[i].col = this.daysPerRow - 1 - segs[i].dayIndex;\n\t\t\t}\n\t\t\telse {\n\t\t\t\tsegs[i].col = segs[i].dayIndex;\n\t\t\t}\n\t\t}\n\n\t\treturn segs;\n\t},\n\n\n\tsliceRangeByTimes: function(range) {\n\t\tvar segs = [];\n\t\tvar seg;\n\t\tvar dayIndex;\n\t\tvar dayDate;\n\t\tvar dayRange;\n\n\t\tfor (dayIndex = 0; dayIndex < this.daysPerRow; dayIndex++) {\n\t\t\tdayDate = this.dayDates[dayIndex].clone(); // TODO: better API for this?\n\t\t\tdayRange = {\n\t\t\t\tstart: dayDate.clone().time(this.minTime),\n\t\t\t\tend: dayDate.clone().time(this.maxTime)\n\t\t\t};\n\t\t\tseg = intersectRanges(range, dayRange); // both will be ambig timezone\n\t\t\tif (seg) {\n\t\t\t\tseg.dayIndex = dayIndex;\n\t\t\t\tsegs.push(seg);\n\t\t\t}\n\t\t}\n\n\t\treturn segs;\n\t},\n\n\n\t/* Coordinates\n\t------------------------------------------------------------------------------------------------------------------*/\n\n\n\tupdateSize: function(isResize) { // NOT a standard Grid method\n\t\tthis.slatCoordCache.build();\n\n\t\tif (isResize) {\n\t\t\tthis.updateSegVerticals(\n\t\t\t\t[].concat(this.fgSegs || [], this.bgSegs || [], this.businessSegs || [])\n\t\t\t);\n\t\t}\n\t},\n\n\n\tgetTotalSlatHeight: function() {\n\t\treturn this.slatContainerEl.outerHeight();\n\t},\n\n\n\t// Computes the top coordinate, relative to the bounds of the grid, of the given date.\n\t// A `startOfDayDate` must be given for avoiding ambiguity over how to treat midnight.\n\tcomputeDateTop: function(date, startOfDayDate) {\n\t\treturn this.computeTimeTop(\n\t\t\tmoment.duration(\n\t\t\t\tdate - startOfDayDate.clone().stripTime()\n\t\t\t)\n\t\t);\n\t},\n\n\n\t// Computes the top coordinate, relative to the bounds of the grid, of the given time (a Duration).\n\tcomputeTimeTop: function(time) {\n\t\tvar len = this.slatEls.length;\n\t\tvar slatCoverage = (time - this.minTime) / this.slotDuration; // floating-point value of # of slots covered\n\t\tvar slatIndex;\n\t\tvar slatRemainder;\n\n\t\t// compute a floating-point number for how many slats should be progressed through.\n\t\t// from 0 to number of slats (inclusive)\n\t\t// constrained because minTime/maxTime might be customized.\n\t\tslatCoverage = Math.max(0, slatCoverage);\n\t\tslatCoverage = Math.min(len, slatCoverage);\n\n\t\t// an integer index of the furthest whole slat\n\t\t// from 0 to number slats (*exclusive*, so len-1)\n\t\tslatIndex = Math.floor(slatCoverage);\n\t\tslatIndex = Math.min(slatIndex, len - 1);\n\n\t\t// how much further through the slatIndex slat (from 0.0-1.0) must be covered in addition.\n\t\t// could be 1.0 if slatCoverage is covering *all* the slots\n\t\tslatRemainder = slatCoverage - slatIndex;\n\n\t\treturn this.slatCoordCache.getTopPosition(slatIndex) +\n\t\t\tthis.slatCoordCache.getHeight(slatIndex) * slatRemainder;\n\t},\n\n\n\n\t/* Event Drag Visualization\n\t------------------------------------------------------------------------------------------------------------------*/\n\n\n\t// Renders a visual indication of an event being dragged over the specified date(s).\n\t// A returned value of `true` signals that a mock \"helper\" event has been rendered.\n\trenderDrag: function(eventLocation, seg) {\n\n\t\tif (seg) { // if there is event information for this drag, render a helper event\n\n\t\t\t// returns mock event elements\n\t\t\t// signal that a helper has been rendered\n\t\t\treturn this.renderEventLocationHelper(eventLocation, seg);\n\t\t}\n\t\telse {\n\t\t\t// otherwise, just render a highlight\n\t\t\tthis.renderHighlight(this.eventToSpan(eventLocation));\n\t\t}\n\t},\n\n\n\t// Unrenders any visual indication of an event being dragged\n\tunrenderDrag: function() {\n\t\tthis.unrenderHelper();\n\t\tthis.unrenderHighlight();\n\t},\n\n\n\t/* Event Resize Visualization\n\t------------------------------------------------------------------------------------------------------------------*/\n\n\n\t// Renders a visual indication of an event being resized\n\trenderEventResize: function(eventLocation, seg) {\n\t\treturn this.renderEventLocationHelper(eventLocation, seg); // returns mock event elements\n\t},\n\n\n\t// Unrenders any visual indication of an event being resized\n\tunrenderEventResize: function() {\n\t\tthis.unrenderHelper();\n\t},\n\n\n\t/* Event Helper\n\t------------------------------------------------------------------------------------------------------------------*/\n\n\n\t// Renders a mock \"helper\" event. `sourceSeg` is the original segment object and might be null (an external drag)\n\trenderHelper: function(event, sourceSeg) {\n\t\treturn this.renderHelperSegs(this.eventToSegs(event), sourceSeg); // returns mock event elements\n\t},\n\n\n\t// Unrenders any mock helper event\n\tunrenderHelper: function() {\n\t\tthis.unrenderHelperSegs();\n\t},\n\n\n\t/* Business Hours\n\t------------------------------------------------------------------------------------------------------------------*/\n\n\n\trenderBusinessHours: function() {\n\t\tthis.renderBusinessSegs(\n\t\t\tthis.buildBusinessHourSegs()\n\t\t);\n\t},\n\n\n\tunrenderBusinessHours: function() {\n\t\tthis.unrenderBusinessSegs();\n\t},\n\n\n\t/* Now Indicator\n\t------------------------------------------------------------------------------------------------------------------*/\n\n\n\tgetNowIndicatorUnit: function() {\n\t\treturn 'minute'; // will refresh on the minute\n\t},\n\n\n\trenderNowIndicator: function(date) {\n\t\t// seg system might be overkill, but it handles scenario where line needs to be rendered\n\t\t// more than once because of columns with the same date (resources columns for example)\n\t\tvar segs = this.spanToSegs({ start: date, end: date });\n\t\tvar top = this.computeDateTop(date, date);\n\t\tvar nodes = [];\n\t\tvar i;\n\n\t\t// render lines within the columns\n\t\tfor (i = 0; i < segs.length; i++) {\n\t\t\tnodes.push($('
')\n\t\t\t\t.css('top', top)\n\t\t\t\t.appendTo(this.colContainerEls.eq(segs[i].col))[0]);\n\t\t}\n\n\t\t// render an arrow over the axis\n\t\tif (segs.length > 0) { // is the current time in view?\n\t\t\tnodes.push($('
')\n\t\t\t\t.css('top', top)\n\t\t\t\t.appendTo(this.el.find('.fc-content-skeleton'))[0]);\n\t\t}\n\n\t\tthis.nowIndicatorEls = $(nodes);\n\t},\n\n\n\tunrenderNowIndicator: function() {\n\t\tif (this.nowIndicatorEls) {\n\t\t\tthis.nowIndicatorEls.remove();\n\t\t\tthis.nowIndicatorEls = null;\n\t\t}\n\t},\n\n\n\t/* Selection\n\t------------------------------------------------------------------------------------------------------------------*/\n\n\n\t// Renders a visual indication of a selection. Overrides the default, which was to simply render a highlight.\n\trenderSelection: function(span) {\n\t\tif (this.view.opt('selectHelper')) { // this setting signals that a mock helper event should be rendered\n\n\t\t\t// normally acceps an eventLocation, span has a start/end, which is good enough\n\t\t\tthis.renderEventLocationHelper(span);\n\t\t}\n\t\telse {\n\t\t\tthis.renderHighlight(span);\n\t\t}\n\t},\n\n\n\t// Unrenders any visual indication of a selection\n\tunrenderSelection: function() {\n\t\tthis.unrenderHelper();\n\t\tthis.unrenderHighlight();\n\t},\n\n\n\t/* Highlight\n\t------------------------------------------------------------------------------------------------------------------*/\n\n\n\trenderHighlight: function(span) {\n\t\tthis.renderHighlightSegs(this.spanToSegs(span));\n\t},\n\n\n\tunrenderHighlight: function() {\n\t\tthis.unrenderHighlightSegs();\n\t}\n\n});\n\n;;\n\n/* Methods for rendering SEGMENTS, pieces of content that live on the view\n ( this file is no longer just for events )\n----------------------------------------------------------------------------------------------------------------------*/\n\nTimeGrid.mixin({\n\n\tcolContainerEls: null, // containers for each column\n\n\t// inner-containers for each column where different types of segs live\n\tfgContainerEls: null,\n\tbgContainerEls: null,\n\thelperContainerEls: null,\n\thighlightContainerEls: null,\n\tbusinessContainerEls: null,\n\n\t// arrays of different types of displayed segments\n\tfgSegs: null,\n\tbgSegs: null,\n\thelperSegs: null,\n\thighlightSegs: null,\n\tbusinessSegs: null,\n\n\n\t// Renders the DOM that the view's content will live in\n\trenderContentSkeleton: function() {\n\t\tvar cellHtml = '';\n\t\tvar i;\n\t\tvar skeletonEl;\n\n\t\tfor (i = 0; i < this.colCnt; i++) {\n\t\t\tcellHtml +=\n\t\t\t\t'' +\n\t\t\t\t\t'
' +\n\t\t\t\t\t\t'
' +\n\t\t\t\t\t\t'
' +\n\t\t\t\t\t\t'
' +\n\t\t\t\t\t\t'
' +\n\t\t\t\t\t\t'
' +\n\t\t\t\t\t'
' +\n\t\t\t\t'';\n\t\t}\n\n\t\tskeletonEl = $(\n\t\t\t'
' +\n\t\t\t\t'' +\n\t\t\t\t\t'' + cellHtml + '' +\n\t\t\t\t'
' +\n\t\t\t'
'\n\t\t);\n\n\t\tthis.colContainerEls = skeletonEl.find('.fc-content-col');\n\t\tthis.helperContainerEls = skeletonEl.find('.fc-helper-container');\n\t\tthis.fgContainerEls = skeletonEl.find('.fc-event-container:not(.fc-helper-container)');\n\t\tthis.bgContainerEls = skeletonEl.find('.fc-bgevent-container');\n\t\tthis.highlightContainerEls = skeletonEl.find('.fc-highlight-container');\n\t\tthis.businessContainerEls = skeletonEl.find('.fc-business-container');\n\n\t\tthis.bookendCells(skeletonEl.find('tr')); // TODO: do this on string level\n\t\tthis.el.append(skeletonEl);\n\t},\n\n\n\t/* Foreground Events\n\t------------------------------------------------------------------------------------------------------------------*/\n\n\n\trenderFgSegs: function(segs) {\n\t\tsegs = this.renderFgSegsIntoContainers(segs, this.fgContainerEls);\n\t\tthis.fgSegs = segs;\n\t\treturn segs; // needed for Grid::renderEvents\n\t},\n\n\n\tunrenderFgSegs: function() {\n\t\tthis.unrenderNamedSegs('fgSegs');\n\t},\n\n\n\t/* Foreground Helper Events\n\t------------------------------------------------------------------------------------------------------------------*/\n\n\n\trenderHelperSegs: function(segs, sourceSeg) {\n\t\tvar helperEls = [];\n\t\tvar i, seg;\n\t\tvar sourceEl;\n\n\t\tsegs = this.renderFgSegsIntoContainers(segs, this.helperContainerEls);\n\n\t\t// Try to make the segment that is in the same row as sourceSeg look the same\n\t\tfor (i = 0; i < segs.length; i++) {\n\t\t\tseg = segs[i];\n\t\t\tif (sourceSeg && sourceSeg.col === seg.col) {\n\t\t\t\tsourceEl = sourceSeg.el;\n\t\t\t\tseg.el.css({\n\t\t\t\t\tleft: sourceEl.css('left'),\n\t\t\t\t\tright: sourceEl.css('right'),\n\t\t\t\t\t'margin-left': sourceEl.css('margin-left'),\n\t\t\t\t\t'margin-right': sourceEl.css('margin-right')\n\t\t\t\t});\n\t\t\t}\n\t\t\thelperEls.push(seg.el[0]);\n\t\t}\n\n\t\tthis.helperSegs = segs;\n\n\t\treturn $(helperEls); // must return rendered helpers\n\t},\n\n\n\tunrenderHelperSegs: function() {\n\t\tthis.unrenderNamedSegs('helperSegs');\n\t},\n\n\n\t/* Background Events\n\t------------------------------------------------------------------------------------------------------------------*/\n\n\n\trenderBgSegs: function(segs) {\n\t\tsegs = this.renderFillSegEls('bgEvent', segs); // TODO: old fill system\n\t\tthis.updateSegVerticals(segs);\n\t\tthis.attachSegsByCol(this.groupSegsByCol(segs), this.bgContainerEls);\n\t\tthis.bgSegs = segs;\n\t\treturn segs; // needed for Grid::renderEvents\n\t},\n\n\n\tunrenderBgSegs: function() {\n\t\tthis.unrenderNamedSegs('bgSegs');\n\t},\n\n\n\t/* Highlight\n\t------------------------------------------------------------------------------------------------------------------*/\n\n\n\trenderHighlightSegs: function(segs) {\n\t\tsegs = this.renderFillSegEls('highlight', segs); // TODO: old fill system\n\t\tthis.updateSegVerticals(segs);\n\t\tthis.attachSegsByCol(this.groupSegsByCol(segs), this.highlightContainerEls);\n\t\tthis.highlightSegs = segs;\n\t},\n\n\n\tunrenderHighlightSegs: function() {\n\t\tthis.unrenderNamedSegs('highlightSegs');\n\t},\n\n\n\t/* Business Hours\n\t------------------------------------------------------------------------------------------------------------------*/\n\n\n\trenderBusinessSegs: function(segs) {\n\t\tsegs = this.renderFillSegEls('businessHours', segs); // TODO: old fill system\n\t\tthis.updateSegVerticals(segs);\n\t\tthis.attachSegsByCol(this.groupSegsByCol(segs), this.businessContainerEls);\n\t\tthis.businessSegs = segs;\n\t},\n\n\n\tunrenderBusinessSegs: function() {\n\t\tthis.unrenderNamedSegs('businessSegs');\n\t},\n\n\n\t/* Seg Rendering Utils\n\t------------------------------------------------------------------------------------------------------------------*/\n\n\n\t// Given a flat array of segments, return an array of sub-arrays, grouped by each segment's col\n\tgroupSegsByCol: function(segs) {\n\t\tvar segsByCol = [];\n\t\tvar i;\n\n\t\tfor (i = 0; i < this.colCnt; i++) {\n\t\t\tsegsByCol.push([]);\n\t\t}\n\n\t\tfor (i = 0; i < segs.length; i++) {\n\t\t\tsegsByCol[segs[i].col].push(segs[i]);\n\t\t}\n\n\t\treturn segsByCol;\n\t},\n\n\n\t// Given segments grouped by column, insert the segments' elements into a parallel array of container\n\t// elements, each living within a column.\n\tattachSegsByCol: function(segsByCol, containerEls) {\n\t\tvar col;\n\t\tvar segs;\n\t\tvar i;\n\n\t\tfor (col = 0; col < this.colCnt; col++) { // iterate each column grouping\n\t\t\tsegs = segsByCol[col];\n\n\t\t\tfor (i = 0; i < segs.length; i++) {\n\t\t\t\tcontainerEls.eq(col).append(segs[i].el);\n\t\t\t}\n\t\t}\n\t},\n\n\n\t// Given the name of a property of `this` object, assumed to be an array of segments,\n\t// loops through each segment and removes from DOM. Will null-out the property afterwards.\n\tunrenderNamedSegs: function(propName) {\n\t\tvar segs = this[propName];\n\t\tvar i;\n\n\t\tif (segs) {\n\t\t\tfor (i = 0; i < segs.length; i++) {\n\t\t\t\tsegs[i].el.remove();\n\t\t\t}\n\t\t\tthis[propName] = null;\n\t\t}\n\t},\n\n\n\n\t/* Foreground Event Rendering Utils\n\t------------------------------------------------------------------------------------------------------------------*/\n\n\n\t// Given an array of foreground segments, render a DOM element for each, computes position,\n\t// and attaches to the column inner-container elements.\n\trenderFgSegsIntoContainers: function(segs, containerEls) {\n\t\tvar segsByCol;\n\t\tvar col;\n\n\t\tsegs = this.renderFgSegEls(segs); // will call fgSegHtml\n\t\tsegsByCol = this.groupSegsByCol(segs);\n\n\t\tfor (col = 0; col < this.colCnt; col++) {\n\t\t\tthis.updateFgSegCoords(segsByCol[col]);\n\t\t}\n\n\t\tthis.attachSegsByCol(segsByCol, containerEls);\n\n\t\treturn segs;\n\t},\n\n\n\t// Renders the HTML for a single event segment's default rendering\n\tfgSegHtml: function(seg, disableResizing) {\n\t\tvar view = this.view;\n\t\tvar event = seg.event;\n\t\tvar isDraggable = view.isEventDraggable(event);\n\t\tvar isResizableFromStart = !disableResizing && seg.isStart && view.isEventResizableFromStart(event);\n\t\tvar isResizableFromEnd = !disableResizing && seg.isEnd && view.isEventResizableFromEnd(event);\n\t\tvar classes = this.getSegClasses(seg, isDraggable, isResizableFromStart || isResizableFromEnd);\n\t\tvar skinCss = cssToStr(this.getSegSkinCss(seg));\n\t\tvar timeText;\n\t\tvar fullTimeText; // more verbose time text. for the print stylesheet\n\t\tvar startTimeText; // just the start time text\n\n\t\tclasses.unshift('fc-time-grid-event', 'fc-v-event');\n\n\t\tif (view.isMultiDayEvent(event)) { // if the event appears to span more than one day...\n\t\t\t// Don't display time text on segments that run entirely through a day.\n\t\t\t// That would appear as midnight-midnight and would look dumb.\n\t\t\t// Otherwise, display the time text for the *segment's* times (like 6pm-midnight or midnight-10am)\n\t\t\tif (seg.isStart || seg.isEnd) {\n\t\t\t\ttimeText = this.getEventTimeText(seg);\n\t\t\t\tfullTimeText = this.getEventTimeText(seg, 'LT');\n\t\t\t\tstartTimeText = this.getEventTimeText(seg, null, false); // displayEnd=false\n\t\t\t}\n\t\t} else {\n\t\t\t// Display the normal time text for the *event's* times\n\t\t\ttimeText = this.getEventTimeText(event);\n\t\t\tfullTimeText = this.getEventTimeText(event, 'LT');\n\t\t\tstartTimeText = this.getEventTimeText(event, null, false); // displayEnd=false\n\t\t}\n\n\t\treturn '
' +\n\t\t\t\t'
' +\n\t\t\t\t\t(timeText ?\n\t\t\t\t\t\t'
' +\n\t\t\t\t\t\t\t'' + htmlEscape(timeText) + '' +\n\t\t\t\t\t\t'
' :\n\t\t\t\t\t\t''\n\t\t\t\t\t\t) +\n\t\t\t\t\t(event.title ?\n\t\t\t\t\t\t'
' +\n\t\t\t\t\t\t\thtmlEscape(event.title) +\n\t\t\t\t\t\t'
' :\n\t\t\t\t\t\t''\n\t\t\t\t\t\t) +\n\t\t\t\t'
' +\n\t\t\t\t'
' +\n\t\t\t\t/* TODO: write CSS for this\n\t\t\t\t(isResizableFromStart ?\n\t\t\t\t\t'
' :\n\t\t\t\t\t''\n\t\t\t\t\t) +\n\t\t\t\t*/\n\t\t\t\t(isResizableFromEnd ?\n\t\t\t\t\t'
' :\n\t\t\t\t\t''\n\t\t\t\t\t) +\n\t\t\t'';\n\t},\n\n\n\t/* Seg Position Utils\n\t------------------------------------------------------------------------------------------------------------------*/\n\n\n\t// Refreshes the CSS top/bottom coordinates for each segment element.\n\t// Works when called after initial render, after a window resize/zoom for example.\n\tupdateSegVerticals: function(segs) {\n\t\tthis.computeSegVerticals(segs);\n\t\tthis.assignSegVerticals(segs);\n\t},\n\n\n\t// For each segment in an array, computes and assigns its top and bottom properties\n\tcomputeSegVerticals: function(segs) {\n\t\tvar i, seg;\n\n\t\tfor (i = 0; i < segs.length; i++) {\n\t\t\tseg = segs[i];\n\t\t\tseg.top = this.computeDateTop(seg.start, seg.start);\n\t\t\tseg.bottom = this.computeDateTop(seg.end, seg.start);\n\t\t}\n\t},\n\n\n\t// Given segments that already have their top/bottom properties computed, applies those values to\n\t// the segments' elements.\n\tassignSegVerticals: function(segs) {\n\t\tvar i, seg;\n\n\t\tfor (i = 0; i < segs.length; i++) {\n\t\t\tseg = segs[i];\n\t\t\tseg.el.css(this.generateSegVerticalCss(seg));\n\t\t}\n\t},\n\n\n\t// Generates an object with CSS properties for the top/bottom coordinates of a segment element\n\tgenerateSegVerticalCss: function(seg) {\n\t\treturn {\n\t\t\ttop: seg.top,\n\t\t\tbottom: -seg.bottom // flipped because needs to be space beyond bottom edge of event container\n\t\t};\n\t},\n\n\n\t/* Foreground Event Positioning Utils\n\t------------------------------------------------------------------------------------------------------------------*/\n\n\n\t// Given segments that are assumed to all live in the *same column*,\n\t// compute their verical/horizontal coordinates and assign to their elements.\n\tupdateFgSegCoords: function(segs) {\n\t\tthis.computeSegVerticals(segs); // horizontals relies on this\n\t\tthis.computeFgSegHorizontals(segs); // compute horizontal coordinates, z-index's, and reorder the array\n\t\tthis.assignSegVerticals(segs);\n\t\tthis.assignFgSegHorizontals(segs);\n\t},\n\n\n\t// Given an array of segments that are all in the same column, sets the backwardCoord and forwardCoord on each.\n\t// NOTE: Also reorders the given array by date!\n\tcomputeFgSegHorizontals: function(segs) {\n\t\tvar levels;\n\t\tvar level0;\n\t\tvar i;\n\n\t\tthis.sortEventSegs(segs); // order by certain criteria\n\t\tlevels = buildSlotSegLevels(segs);\n\t\tcomputeForwardSlotSegs(levels);\n\n\t\tif ((level0 = levels[0])) {\n\n\t\t\tfor (i = 0; i < level0.length; i++) {\n\t\t\t\tcomputeSlotSegPressures(level0[i]);\n\t\t\t}\n\n\t\t\tfor (i = 0; i < level0.length; i++) {\n\t\t\t\tthis.computeFgSegForwardBack(level0[i], 0, 0);\n\t\t\t}\n\t\t}\n\t},\n\n\n\t// Calculate seg.forwardCoord and seg.backwardCoord for the segment, where both values range\n\t// from 0 to 1. If the calendar is left-to-right, the seg.backwardCoord maps to \"left\" and\n\t// seg.forwardCoord maps to \"right\" (via percentage). Vice-versa if the calendar is right-to-left.\n\t//\n\t// The segment might be part of a \"series\", which means consecutive segments with the same pressure\n\t// who's width is unknown until an edge has been hit. `seriesBackwardPressure` is the number of\n\t// segments behind this one in the current series, and `seriesBackwardCoord` is the starting\n\t// coordinate of the first segment in the series.\n\tcomputeFgSegForwardBack: function(seg, seriesBackwardPressure, seriesBackwardCoord) {\n\t\tvar forwardSegs = seg.forwardSegs;\n\t\tvar i;\n\n\t\tif (seg.forwardCoord === undefined) { // not already computed\n\n\t\t\tif (!forwardSegs.length) {\n\n\t\t\t\t// if there are no forward segments, this segment should butt up against the edge\n\t\t\t\tseg.forwardCoord = 1;\n\t\t\t}\n\t\t\telse {\n\n\t\t\t\t// sort highest pressure first\n\t\t\t\tthis.sortForwardSegs(forwardSegs);\n\n\t\t\t\t// this segment's forwardCoord will be calculated from the backwardCoord of the\n\t\t\t\t// highest-pressure forward segment.\n\t\t\t\tthis.computeFgSegForwardBack(forwardSegs[0], seriesBackwardPressure + 1, seriesBackwardCoord);\n\t\t\t\tseg.forwardCoord = forwardSegs[0].backwardCoord;\n\t\t\t}\n\n\t\t\t// calculate the backwardCoord from the forwardCoord. consider the series\n\t\t\tseg.backwardCoord = seg.forwardCoord -\n\t\t\t\t(seg.forwardCoord - seriesBackwardCoord) / // available width for series\n\t\t\t\t(seriesBackwardPressure + 1); // # of segments in the series\n\n\t\t\t// use this segment's coordinates to computed the coordinates of the less-pressurized\n\t\t\t// forward segments\n\t\t\tfor (i=0; i seg2.top && seg1.top < seg2.bottom;\n}\n\n;;\n\n/* An abstract class from which other views inherit from\n----------------------------------------------------------------------------------------------------------------------*/\n\nvar View = FC.View = Class.extend(EmitterMixin, ListenerMixin, {\n\n\ttype: null, // subclass' view name (string)\n\tname: null, // deprecated. use `type` instead\n\ttitle: null, // the text that will be displayed in the header's title\n\n\tcalendar: null, // owner Calendar object\n\toptions: null, // hash containing all options. already merged with view-specific-options\n\tel: null, // the view's containing element. set by Calendar\n\n\tdisplaying: null, // a promise representing the state of rendering. null if no render requested\n\tisSkeletonRendered: false,\n\tisEventsRendered: false,\n\n\t// range the view is actually displaying (moments)\n\tstart: null,\n\tend: null, // exclusive\n\n\t// range the view is formally responsible for (moments)\n\t// may be different from start/end. for example, a month view might have 1st-31st, excluding padded dates\n\tintervalStart: null,\n\tintervalEnd: null, // exclusive\n\tintervalDuration: null,\n\tintervalUnit: null, // name of largest unit being displayed, like \"month\" or \"week\"\n\n\tisRTL: false,\n\tisSelected: false, // boolean whether a range of time is user-selected or not\n\tselectedEvent: null,\n\n\teventOrderSpecs: null, // criteria for ordering events when they have same date/time\n\n\t// classNames styled by jqui themes\n\twidgetHeaderClass: null,\n\twidgetContentClass: null,\n\thighlightStateClass: null,\n\n\t// for date utils, computed from options\n\tnextDayThreshold: null,\n\tisHiddenDayHash: null,\n\n\t// now indicator\n\tisNowIndicatorRendered: null,\n\tinitialNowDate: null, // result first getNow call\n\tinitialNowQueriedMs: null, // ms time the getNow was called\n\tnowIndicatorTimeoutID: null, // for refresh timing of now indicator\n\tnowIndicatorIntervalID: null, // \"\n\n\n\tconstructor: function(calendar, type, options, intervalDuration) {\n\n\t\tthis.calendar = calendar;\n\t\tthis.type = this.name = type; // .name is deprecated\n\t\tthis.options = options;\n\t\tthis.intervalDuration = intervalDuration || moment.duration(1, 'day');\n\n\t\tthis.nextDayThreshold = moment.duration(this.opt('nextDayThreshold'));\n\t\tthis.initThemingProps();\n\t\tthis.initHiddenDays();\n\t\tthis.isRTL = this.opt('isRTL');\n\n\t\tthis.eventOrderSpecs = parseFieldSpecs(this.opt('eventOrder'));\n\n\t\tthis.initialize();\n\t},\n\n\n\t// A good place for subclasses to initialize member variables\n\tinitialize: function() {\n\t\t// subclasses can implement\n\t},\n\n\n\t// Retrieves an option with the given name\n\topt: function(name) {\n\t\treturn this.options[name];\n\t},\n\n\n\t// Triggers handlers that are view-related. Modifies args before passing to calendar.\n\ttrigger: function(name, thisObj) { // arguments beyond thisObj are passed along\n\t\tvar calendar = this.calendar;\n\n\t\treturn calendar.trigger.apply(\n\t\t\tcalendar,\n\t\t\t[name, thisObj || this].concat(\n\t\t\t\tArray.prototype.slice.call(arguments, 2), // arguments beyond thisObj\n\t\t\t\t[ this ] // always make the last argument a reference to the view. TODO: deprecate\n\t\t\t)\n\t\t);\n\t},\n\n\n\t/* Dates\n\t------------------------------------------------------------------------------------------------------------------*/\n\n\n\t// Updates all internal dates to center around the given current unzoned date.\n\tsetDate: function(date) {\n\t\tthis.setRange(this.computeRange(date));\n\t},\n\n\n\t// Updates all internal dates for displaying the given unzoned range.\n\tsetRange: function(range) {\n\t\t$.extend(this, range); // assigns every property to this object's member variables\n\t\tthis.updateTitle();\n\t},\n\n\n\t// Given a single current unzoned date, produce information about what range to display.\n\t// Subclasses can override. Must return all properties.\n\tcomputeRange: function(date) {\n\t\tvar intervalUnit = computeIntervalUnit(this.intervalDuration);\n\t\tvar intervalStart = date.clone().startOf(intervalUnit);\n\t\tvar intervalEnd = intervalStart.clone().add(this.intervalDuration);\n\t\tvar start, end;\n\n\t\t// normalize the range's time-ambiguity\n\t\tif (/year|month|week|day/.test(intervalUnit)) { // whole-days?\n\t\t\tintervalStart.stripTime();\n\t\t\tintervalEnd.stripTime();\n\t\t}\n\t\telse { // needs to have a time?\n\t\t\tif (!intervalStart.hasTime()) {\n\t\t\t\tintervalStart = this.calendar.time(0); // give 00:00 time\n\t\t\t}\n\t\t\tif (!intervalEnd.hasTime()) {\n\t\t\t\tintervalEnd = this.calendar.time(0); // give 00:00 time\n\t\t\t}\n\t\t}\n\n\t\tstart = intervalStart.clone();\n\t\tstart = this.skipHiddenDays(start);\n\t\tend = intervalEnd.clone();\n\t\tend = this.skipHiddenDays(end, -1, true); // exclusively move backwards\n\n\t\treturn {\n\t\t\tintervalUnit: intervalUnit,\n\t\t\tintervalStart: intervalStart,\n\t\t\tintervalEnd: intervalEnd,\n\t\t\tstart: start,\n\t\t\tend: end\n\t\t};\n\t},\n\n\n\t// Computes the new date when the user hits the prev button, given the current date\n\tcomputePrevDate: function(date) {\n\t\treturn this.massageCurrentDate(\n\t\t\tdate.clone().startOf(this.intervalUnit).subtract(this.intervalDuration), -1\n\t\t);\n\t},\n\n\n\t// Computes the new date when the user hits the next button, given the current date\n\tcomputeNextDate: function(date) {\n\t\treturn this.massageCurrentDate(\n\t\t\tdate.clone().startOf(this.intervalUnit).add(this.intervalDuration)\n\t\t);\n\t},\n\n\n\t// Given an arbitrarily calculated current date of the calendar, returns a date that is ensured to be completely\n\t// visible. `direction` is optional and indicates which direction the current date was being\n\t// incremented or decremented (1 or -1).\n\tmassageCurrentDate: function(date, direction) {\n\t\tif (this.intervalDuration.as('days') <= 1) { // if the view displays a single day or smaller\n\t\t\tif (this.isHiddenDay(date)) {\n\t\t\t\tdate = this.skipHiddenDays(date, direction);\n\t\t\t\tdate.startOf('day');\n\t\t\t}\n\t\t}\n\n\t\treturn date;\n\t},\n\n\n\t/* Title and Date Formatting\n\t------------------------------------------------------------------------------------------------------------------*/\n\n\n\t// Sets the view's title property to the most updated computed value\n\tupdateTitle: function() {\n\t\tthis.title = this.computeTitle();\n\t},\n\n\n\t// Computes what the title at the top of the calendar should be for this view\n\tcomputeTitle: function() {\n\t\treturn this.formatRange(\n\t\t\t{\n\t\t\t\t// in case intervalStart/End has a time, make sure timezone is correct\n\t\t\t\tstart: this.calendar.applyTimezone(this.intervalStart),\n\t\t\t\tend: this.calendar.applyTimezone(this.intervalEnd)\n\t\t\t},\n\t\t\tthis.opt('titleFormat') || this.computeTitleFormat(),\n\t\t\tthis.opt('titleRangeSeparator')\n\t\t);\n\t},\n\n\n\t// Generates the format string that should be used to generate the title for the current date range.\n\t// Attempts to compute the most appropriate format if not explicitly specified with `titleFormat`.\n\tcomputeTitleFormat: function() {\n\t\tif (this.intervalUnit == 'year') {\n\t\t\treturn 'YYYY';\n\t\t}\n\t\telse if (this.intervalUnit == 'month') {\n\t\t\treturn this.opt('monthYearFormat'); // like \"September 2014\"\n\t\t}\n\t\telse if (this.intervalDuration.as('days') > 1) {\n\t\t\treturn 'll'; // multi-day range. shorter, like \"Sep 9 - 10 2014\"\n\t\t}\n\t\telse {\n\t\t\treturn 'LL'; // one day. longer, like \"September 9 2014\"\n\t\t}\n\t},\n\n\n\t// Utility for formatting a range. Accepts a range object, formatting string, and optional separator.\n\t// Displays all-day ranges naturally, with an inclusive end. Takes the current isRTL into account.\n\t// The timezones of the dates within `range` will be respected.\n\tformatRange: function(range, formatStr, separator) {\n\t\tvar end = range.end;\n\n\t\tif (!end.hasTime()) { // all-day?\n\t\t\tend = end.clone().subtract(1); // convert to inclusive. last ms of previous day\n\t\t}\n\n\t\treturn formatRange(range.start, end, formatStr, separator, this.opt('isRTL'));\n\t},\n\n\n\t/* Rendering\n\t------------------------------------------------------------------------------------------------------------------*/\n\n\n\t// Sets the container element that the view should render inside of.\n\t// Does other DOM-related initializations.\n\tsetElement: function(el) {\n\t\tthis.el = el;\n\t\tthis.bindGlobalHandlers();\n\t},\n\n\n\t// Removes the view's container element from the DOM, clearing any content beforehand.\n\t// Undoes any other DOM-related attachments.\n\tremoveElement: function() {\n\t\tthis.clear(); // clears all content\n\n\t\t// clean up the skeleton\n\t\tif (this.isSkeletonRendered) {\n\t\t\tthis.unrenderSkeleton();\n\t\t\tthis.isSkeletonRendered = false;\n\t\t}\n\n\t\tthis.unbindGlobalHandlers();\n\n\t\tthis.el.remove();\n\n\t\t// NOTE: don't null-out this.el in case the View was destroyed within an API callback.\n\t\t// We don't null-out the View's other jQuery element references upon destroy,\n\t\t// so we shouldn't kill this.el either.\n\t},\n\n\n\t// Does everything necessary to display the view centered around the given unzoned date.\n\t// Does every type of rendering EXCEPT rendering events.\n\t// Is asychronous and returns a promise.\n\tdisplay: function(date, explicitScrollState) {\n\t\tvar _this = this;\n\t\tvar prevScrollState = null;\n\n\t\tif (explicitScrollState != null && this.displaying) { // don't need prevScrollState if explicitScrollState\n\t\t\tprevScrollState = this.queryScroll();\n\t\t}\n\n\t\tthis.calendar.freezeContentHeight();\n\n\t\treturn syncThen(this.clear(), function() { // clear the content first\n\t\t\treturn (\n\t\t\t\t_this.displaying =\n\t\t\t\t\tsyncThen(_this.displayView(date), function() { // displayView might return a promise\n\n\t\t\t\t\t\t// caller of display() wants a specific scroll state?\n\t\t\t\t\t\tif (explicitScrollState != null) {\n\t\t\t\t\t\t\t// we make an assumption that this is NOT the initial render,\n\t\t\t\t\t\t\t// and thus don't need forceScroll (is inconveniently asynchronous)\n\t\t\t\t\t\t\t_this.setScroll(explicitScrollState);\n\t\t\t\t\t\t}\n\t\t\t\t\t\telse {\n\t\t\t\t\t\t\t_this.forceScroll(_this.computeInitialScroll(prevScrollState));\n\t\t\t\t\t\t}\n\n\t\t\t\t\t\t_this.calendar.unfreezeContentHeight();\n\t\t\t\t\t\t_this.triggerRender();\n\t\t\t\t\t})\n\t\t\t);\n\t\t});\n\t},\n\n\n\t// Does everything necessary to clear the content of the view.\n\t// Clears dates and events. Does not clear the skeleton.\n\t// Is asychronous and returns a promise.\n\tclear: function() {\n\t\tvar _this = this;\n\t\tvar displaying = this.displaying;\n\n\t\tif (displaying) { // previously displayed, or in the process of being displayed?\n\t\t\treturn syncThen(displaying, function() { // wait for the display to finish\n\t\t\t\t_this.displaying = null;\n\t\t\t\t_this.clearEvents();\n\t\t\t\treturn _this.clearView(); // might return a promise. chain it\n\t\t\t});\n\t\t}\n\t\telse {\n\t\t\treturn $.when(); // an immediately-resolved promise\n\t\t}\n\t},\n\n\n\t// Displays the view's non-event content, such as date-related content or anything required by events.\n\t// Renders the view's non-content skeleton if necessary.\n\t// Can be asynchronous and return a promise.\n\tdisplayView: function(date) {\n\t\tif (!this.isSkeletonRendered) {\n\t\t\tthis.renderSkeleton();\n\t\t\tthis.isSkeletonRendered = true;\n\t\t}\n\t\tif (date) {\n\t\t\tthis.setDate(date);\n\t\t}\n\t\tif (this.render) {\n\t\t\tthis.render(); // TODO: deprecate\n\t\t}\n\t\tthis.renderDates();\n\t\tthis.updateSize();\n\t\tthis.renderBusinessHours(); // might need coordinates, so should go after updateSize()\n\t\tthis.startNowIndicator();\n\t},\n\n\n\t// Unrenders the view content that was rendered in displayView.\n\t// Can be asynchronous and return a promise.\n\tclearView: function() {\n\t\tthis.unselect();\n\t\tthis.stopNowIndicator();\n\t\tthis.triggerUnrender();\n\t\tthis.unrenderBusinessHours();\n\t\tthis.unrenderDates();\n\t\tif (this.destroy) {\n\t\t\tthis.destroy(); // TODO: deprecate\n\t\t}\n\t},\n\n\n\t// Renders the basic structure of the view before any content is rendered\n\trenderSkeleton: function() {\n\t\t// subclasses should implement\n\t},\n\n\n\t// Unrenders the basic structure of the view\n\tunrenderSkeleton: function() {\n\t\t// subclasses should implement\n\t},\n\n\n\t// Renders the view's date-related content.\n\t// Assumes setRange has already been called and the skeleton has already been rendered.\n\trenderDates: function() {\n\t\t// subclasses should implement\n\t},\n\n\n\t// Unrenders the view's date-related content\n\tunrenderDates: function() {\n\t\t// subclasses should override\n\t},\n\n\n\t// Signals that the view's content has been rendered\n\ttriggerRender: function() {\n\t\tthis.trigger('viewRender', this, this, this.el);\n\t},\n\n\n\t// Signals that the view's content is about to be unrendered\n\ttriggerUnrender: function() {\n\t\tthis.trigger('viewDestroy', this, this, this.el);\n\t},\n\n\n\t// Binds DOM handlers to elements that reside outside the view container, such as the document\n\tbindGlobalHandlers: function() {\n\t\tthis.listenTo($(document), 'mousedown', this.handleDocumentMousedown);\n\t\tthis.listenTo($(document), 'touchstart', this.processUnselect);\n\t},\n\n\n\t// Unbinds DOM handlers from elements that reside outside the view container\n\tunbindGlobalHandlers: function() {\n\t\tthis.stopListeningTo($(document));\n\t},\n\n\n\t// Initializes internal variables related to theming\n\tinitThemingProps: function() {\n\t\tvar tm = this.opt('theme') ? 'ui' : 'fc';\n\n\t\tthis.widgetHeaderClass = tm + '-widget-header';\n\t\tthis.widgetContentClass = tm + '-widget-content';\n\t\tthis.highlightStateClass = tm + '-state-highlight';\n\t},\n\n\n\t/* Business Hours\n\t------------------------------------------------------------------------------------------------------------------*/\n\n\n\t// Renders business-hours onto the view. Assumes updateSize has already been called.\n\trenderBusinessHours: function() {\n\t\t// subclasses should implement\n\t},\n\n\n\t// Unrenders previously-rendered business-hours\n\tunrenderBusinessHours: function() {\n\t\t// subclasses should implement\n\t},\n\n\n\t/* Now Indicator\n\t------------------------------------------------------------------------------------------------------------------*/\n\n\n\t// Immediately render the current time indicator and begins re-rendering it at an interval,\n\t// which is defined by this.getNowIndicatorUnit().\n\t// TODO: somehow do this for the current whole day's background too\n\tstartNowIndicator: function() {\n\t\tvar _this = this;\n\t\tvar unit;\n\t\tvar update;\n\t\tvar delay; // ms wait value\n\n\t\tif (this.opt('nowIndicator')) {\n\t\t\tunit = this.getNowIndicatorUnit();\n\t\t\tif (unit) {\n\t\t\t\tupdate = proxy(this, 'updateNowIndicator'); // bind to `this`\n\n\t\t\t\tthis.initialNowDate = this.calendar.getNow();\n\t\t\t\tthis.initialNowQueriedMs = +new Date();\n\t\t\t\tthis.renderNowIndicator(this.initialNowDate);\n\t\t\t\tthis.isNowIndicatorRendered = true;\n\n\t\t\t\t// wait until the beginning of the next interval\n\t\t\t\tdelay = this.initialNowDate.clone().startOf(unit).add(1, unit) - this.initialNowDate;\n\t\t\t\tthis.nowIndicatorTimeoutID = setTimeout(function() {\n\t\t\t\t\t_this.nowIndicatorTimeoutID = null;\n\t\t\t\t\tupdate();\n\t\t\t\t\tdelay = +moment.duration(1, unit);\n\t\t\t\t\tdelay = Math.max(100, delay); // prevent too frequent\n\t\t\t\t\t_this.nowIndicatorIntervalID = setInterval(update, delay); // update every interval\n\t\t\t\t}, delay);\n\t\t\t}\n\t\t}\n\t},\n\n\n\t// rerenders the now indicator, computing the new current time from the amount of time that has passed\n\t// since the initial getNow call.\n\tupdateNowIndicator: function() {\n\t\tif (this.isNowIndicatorRendered) {\n\t\t\tthis.unrenderNowIndicator();\n\t\t\tthis.renderNowIndicator(\n\t\t\t\tthis.initialNowDate.clone().add(new Date() - this.initialNowQueriedMs) // add ms\n\t\t\t);\n\t\t}\n\t},\n\n\n\t// Immediately unrenders the view's current time indicator and stops any re-rendering timers.\n\t// Won't cause side effects if indicator isn't rendered.\n\tstopNowIndicator: function() {\n\t\tif (this.isNowIndicatorRendered) {\n\n\t\t\tif (this.nowIndicatorTimeoutID) {\n\t\t\t\tclearTimeout(this.nowIndicatorTimeoutID);\n\t\t\t\tthis.nowIndicatorTimeoutID = null;\n\t\t\t}\n\t\t\tif (this.nowIndicatorIntervalID) {\n\t\t\t\tclearTimeout(this.nowIndicatorIntervalID);\n\t\t\t\tthis.nowIndicatorIntervalID = null;\n\t\t\t}\n\n\t\t\tthis.unrenderNowIndicator();\n\t\t\tthis.isNowIndicatorRendered = false;\n\t\t}\n\t},\n\n\n\t// Returns a string unit, like 'second' or 'minute' that defined how often the current time indicator\n\t// should be refreshed. If something falsy is returned, no time indicator is rendered at all.\n\tgetNowIndicatorUnit: function() {\n\t\t// subclasses should implement\n\t},\n\n\n\t// Renders a current time indicator at the given datetime\n\trenderNowIndicator: function(date) {\n\t\t// subclasses should implement\n\t},\n\n\n\t// Undoes the rendering actions from renderNowIndicator\n\tunrenderNowIndicator: function() {\n\t\t// subclasses should implement\n\t},\n\n\n\t/* Dimensions\n\t------------------------------------------------------------------------------------------------------------------*/\n\n\n\t// Refreshes anything dependant upon sizing of the container element of the grid\n\tupdateSize: function(isResize) {\n\t\tvar scrollState;\n\n\t\tif (isResize) {\n\t\t\tscrollState = this.queryScroll();\n\t\t}\n\n\t\tthis.updateHeight(isResize);\n\t\tthis.updateWidth(isResize);\n\t\tthis.updateNowIndicator();\n\n\t\tif (isResize) {\n\t\t\tthis.setScroll(scrollState);\n\t\t}\n\t},\n\n\n\t// Refreshes the horizontal dimensions of the calendar\n\tupdateWidth: function(isResize) {\n\t\t// subclasses should implement\n\t},\n\n\n\t// Refreshes the vertical dimensions of the calendar\n\tupdateHeight: function(isResize) {\n\t\tvar calendar = this.calendar; // we poll the calendar for height information\n\n\t\tthis.setHeight(\n\t\t\tcalendar.getSuggestedViewHeight(),\n\t\t\tcalendar.isHeightAuto()\n\t\t);\n\t},\n\n\n\t// Updates the vertical dimensions of the calendar to the specified height.\n\t// if `isAuto` is set to true, height becomes merely a suggestion and the view should use its \"natural\" height.\n\tsetHeight: function(height, isAuto) {\n\t\t// subclasses should implement\n\t},\n\n\n\t/* Scroller\n\t------------------------------------------------------------------------------------------------------------------*/\n\n\n\t// Computes the initial pre-configured scroll state prior to allowing the user to change it.\n\t// Given the scroll state from the previous rendering. If first time rendering, given null.\n\tcomputeInitialScroll: function(previousScrollState) {\n\t\treturn 0;\n\t},\n\n\n\t// Retrieves the view's current natural scroll state. Can return an arbitrary format.\n\tqueryScroll: function() {\n\t\t// subclasses must implement\n\t},\n\n\n\t// Sets the view's scroll state. Will accept the same format computeInitialScroll and queryScroll produce.\n\tsetScroll: function(scrollState) {\n\t\t// subclasses must implement\n\t},\n\n\n\t// Sets the scroll state, making sure to overcome any predefined scroll value the browser has in mind\n\tforceScroll: function(scrollState) {\n\t\tvar _this = this;\n\n\t\tthis.setScroll(scrollState);\n\t\tsetTimeout(function() {\n\t\t\t_this.setScroll(scrollState);\n\t\t}, 0);\n\t},\n\n\n\t/* Event Elements / Segments\n\t------------------------------------------------------------------------------------------------------------------*/\n\n\n\t// Does everything necessary to display the given events onto the current view\n\tdisplayEvents: function(events) {\n\t\tvar scrollState = this.queryScroll();\n\n\t\tthis.clearEvents();\n\t\tthis.renderEvents(events);\n\t\tthis.isEventsRendered = true;\n\t\tthis.setScroll(scrollState);\n\t\tthis.triggerEventRender();\n\t},\n\n\n\t// Does everything necessary to clear the view's currently-rendered events\n\tclearEvents: function() {\n\t\tvar scrollState;\n\n\t\tif (this.isEventsRendered) {\n\n\t\t\t// TODO: optimize: if we know this is part of a displayEvents call, don't queryScroll/setScroll\n\t\t\tscrollState = this.queryScroll();\n\n\t\t\tthis.triggerEventUnrender();\n\t\t\tif (this.destroyEvents) {\n\t\t\t\tthis.destroyEvents(); // TODO: deprecate\n\t\t\t}\n\t\t\tthis.unrenderEvents();\n\t\t\tthis.setScroll(scrollState);\n\t\t\tthis.isEventsRendered = false;\n\t\t}\n\t},\n\n\n\t// Renders the events onto the view.\n\trenderEvents: function(events) {\n\t\t// subclasses should implement\n\t},\n\n\n\t// Removes event elements from the view.\n\tunrenderEvents: function() {\n\t\t// subclasses should implement\n\t},\n\n\n\t// Signals that all events have been rendered\n\ttriggerEventRender: function() {\n\t\tthis.renderedEventSegEach(function(seg) {\n\t\t\tthis.trigger('eventAfterRender', seg.event, seg.event, seg.el);\n\t\t});\n\t\tthis.trigger('eventAfterAllRender');\n\t},\n\n\n\t// Signals that all event elements are about to be removed\n\ttriggerEventUnrender: function() {\n\t\tthis.renderedEventSegEach(function(seg) {\n\t\t\tthis.trigger('eventDestroy', seg.event, seg.event, seg.el);\n\t\t});\n\t},\n\n\n\t// Given an event and the default element used for rendering, returns the element that should actually be used.\n\t// Basically runs events and elements through the eventRender hook.\n\tresolveEventEl: function(event, el) {\n\t\tvar custom = this.trigger('eventRender', event, event, el);\n\n\t\tif (custom === false) { // means don't render at all\n\t\t\tel = null;\n\t\t}\n\t\telse if (custom && custom !== true) {\n\t\t\tel = $(custom);\n\t\t}\n\n\t\treturn el;\n\t},\n\n\n\t// Hides all rendered event segments linked to the given event\n\tshowEvent: function(event) {\n\t\tthis.renderedEventSegEach(function(seg) {\n\t\t\tseg.el.css('visibility', '');\n\t\t}, event);\n\t},\n\n\n\t// Shows all rendered event segments linked to the given event\n\thideEvent: function(event) {\n\t\tthis.renderedEventSegEach(function(seg) {\n\t\t\tseg.el.css('visibility', 'hidden');\n\t\t}, event);\n\t},\n\n\n\t// Iterates through event segments that have been rendered (have an el). Goes through all by default.\n\t// If the optional `event` argument is specified, only iterates through segments linked to that event.\n\t// The `this` value of the callback function will be the view.\n\trenderedEventSegEach: function(func, event) {\n\t\tvar segs = this.getEventSegs();\n\t\tvar i;\n\n\t\tfor (i = 0; i < segs.length; i++) {\n\t\t\tif (!event || segs[i].event._id === event._id) {\n\t\t\t\tif (segs[i].el) {\n\t\t\t\t\tfunc.call(this, segs[i]);\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\t},\n\n\n\t// Retrieves all the rendered segment objects for the view\n\tgetEventSegs: function() {\n\t\t// subclasses must implement\n\t\treturn [];\n\t},\n\n\n\t/* Event Drag-n-Drop\n\t------------------------------------------------------------------------------------------------------------------*/\n\n\n\t// Computes if the given event is allowed to be dragged by the user\n\tisEventDraggable: function(event) {\n\t\tvar source = event.source || {};\n\n\t\treturn firstDefined(\n\t\t\tevent.startEditable,\n\t\t\tsource.startEditable,\n\t\t\tthis.opt('eventStartEditable'),\n\t\t\tevent.editable,\n\t\t\tsource.editable,\n\t\t\tthis.opt('editable')\n\t\t);\n\t},\n\n\n\t// Must be called when an event in the view is dropped onto new location.\n\t// `dropLocation` is an object that contains the new zoned start/end/allDay values for the event.\n\treportEventDrop: function(event, dropLocation, largeUnit, el, ev) {\n\t\tvar calendar = this.calendar;\n\t\tvar mutateResult = calendar.mutateEvent(event, dropLocation, largeUnit);\n\t\tvar undoFunc = function() {\n\t\t\tmutateResult.undo();\n\t\t\tcalendar.reportEventChange();\n\t\t};\n\n\t\tthis.triggerEventDrop(event, mutateResult.dateDelta, undoFunc, el, ev);\n\t\tcalendar.reportEventChange(); // will rerender events\n\t},\n\n\n\t// Triggers event-drop handlers that have subscribed via the API\n\ttriggerEventDrop: function(event, dateDelta, undoFunc, el, ev) {\n\t\tthis.trigger('eventDrop', el[0], event, dateDelta, undoFunc, ev, {}); // {} = jqui dummy\n\t},\n\n\n\t/* External Element Drag-n-Drop\n\t------------------------------------------------------------------------------------------------------------------*/\n\n\n\t// Must be called when an external element, via jQuery UI, has been dropped onto the calendar.\n\t// `meta` is the parsed data that has been embedded into the dragging event.\n\t// `dropLocation` is an object that contains the new zoned start/end/allDay values for the event.\n\treportExternalDrop: function(meta, dropLocation, el, ev, ui) {\n\t\tvar eventProps = meta.eventProps;\n\t\tvar eventInput;\n\t\tvar event;\n\n\t\t// Try to build an event object and render it. TODO: decouple the two\n\t\tif (eventProps) {\n\t\t\teventInput = $.extend({}, eventProps, dropLocation);\n\t\t\tevent = this.calendar.renderEvent(eventInput, meta.stick)[0]; // renderEvent returns an array\n\t\t}\n\n\t\tthis.triggerExternalDrop(event, dropLocation, el, ev, ui);\n\t},\n\n\n\t// Triggers external-drop handlers that have subscribed via the API\n\ttriggerExternalDrop: function(event, dropLocation, el, ev, ui) {\n\n\t\t// trigger 'drop' regardless of whether element represents an event\n\t\tthis.trigger('drop', el[0], dropLocation.start, ev, ui);\n\n\t\tif (event) {\n\t\t\tthis.trigger('eventReceive', null, event); // signal an external event landed\n\t\t}\n\t},\n\n\n\t/* Drag-n-Drop Rendering (for both events and external elements)\n\t------------------------------------------------------------------------------------------------------------------*/\n\n\n\t// Renders a visual indication of a event or external-element drag over the given drop zone.\n\t// If an external-element, seg will be `null`.\n\t// Must return elements used for any mock events.\n\trenderDrag: function(dropLocation, seg) {\n\t\t// subclasses must implement\n\t},\n\n\n\t// Unrenders a visual indication of an event or external-element being dragged.\n\tunrenderDrag: function() {\n\t\t// subclasses must implement\n\t},\n\n\n\t/* Event Resizing\n\t------------------------------------------------------------------------------------------------------------------*/\n\n\n\t// Computes if the given event is allowed to be resized from its starting edge\n\tisEventResizableFromStart: function(event) {\n\t\treturn this.opt('eventResizableFromStart') && this.isEventResizable(event);\n\t},\n\n\n\t// Computes if the given event is allowed to be resized from its ending edge\n\tisEventResizableFromEnd: function(event) {\n\t\treturn this.isEventResizable(event);\n\t},\n\n\n\t// Computes if the given event is allowed to be resized by the user at all\n\tisEventResizable: function(event) {\n\t\tvar source = event.source || {};\n\n\t\treturn firstDefined(\n\t\t\tevent.durationEditable,\n\t\t\tsource.durationEditable,\n\t\t\tthis.opt('eventDurationEditable'),\n\t\t\tevent.editable,\n\t\t\tsource.editable,\n\t\t\tthis.opt('editable')\n\t\t);\n\t},\n\n\n\t// Must be called when an event in the view has been resized to a new length\n\treportEventResize: function(event, resizeLocation, largeUnit, el, ev) {\n\t\tvar calendar = this.calendar;\n\t\tvar mutateResult = calendar.mutateEvent(event, resizeLocation, largeUnit);\n\t\tvar undoFunc = function() {\n\t\t\tmutateResult.undo();\n\t\t\tcalendar.reportEventChange();\n\t\t};\n\n\t\tthis.triggerEventResize(event, mutateResult.durationDelta, undoFunc, el, ev);\n\t\tcalendar.reportEventChange(); // will rerender events\n\t},\n\n\n\t// Triggers event-resize handlers that have subscribed via the API\n\ttriggerEventResize: function(event, durationDelta, undoFunc, el, ev) {\n\t\tthis.trigger('eventResize', el[0], event, durationDelta, undoFunc, ev, {}); // {} = jqui dummy\n\t},\n\n\n\t/* Selection (time range)\n\t------------------------------------------------------------------------------------------------------------------*/\n\n\n\t// Selects a date span on the view. `start` and `end` are both Moments.\n\t// `ev` is the native mouse event that begin the interaction.\n\tselect: function(span, ev) {\n\t\tthis.unselect(ev);\n\t\tthis.renderSelection(span);\n\t\tthis.reportSelection(span, ev);\n\t},\n\n\n\t// Renders a visual indication of the selection\n\trenderSelection: function(span) {\n\t\t// subclasses should implement\n\t},\n\n\n\t// Called when a new selection is made. Updates internal state and triggers handlers.\n\treportSelection: function(span, ev) {\n\t\tthis.isSelected = true;\n\t\tthis.triggerSelect(span, ev);\n\t},\n\n\n\t// Triggers handlers to 'select'\n\ttriggerSelect: function(span, ev) {\n\t\tthis.trigger(\n\t\t\t'select',\n\t\t\tnull,\n\t\t\tthis.calendar.applyTimezone(span.start), // convert to calendar's tz for external API\n\t\t\tthis.calendar.applyTimezone(span.end), // \"\n\t\t\tev\n\t\t);\n\t},\n\n\n\t// Undoes a selection. updates in the internal state and triggers handlers.\n\t// `ev` is the native mouse event that began the interaction.\n\tunselect: function(ev) {\n\t\tif (this.isSelected) {\n\t\t\tthis.isSelected = false;\n\t\t\tif (this.destroySelection) {\n\t\t\t\tthis.destroySelection(); // TODO: deprecate\n\t\t\t}\n\t\t\tthis.unrenderSelection();\n\t\t\tthis.trigger('unselect', null, ev);\n\t\t}\n\t},\n\n\n\t// Unrenders a visual indication of selection\n\tunrenderSelection: function() {\n\t\t// subclasses should implement\n\t},\n\n\n\t/* Event Selection\n\t------------------------------------------------------------------------------------------------------------------*/\n\n\n\tselectEvent: function(event) {\n\t\tif (!this.selectedEvent || this.selectedEvent !== event) {\n\t\t\tthis.unselectEvent();\n\t\t\tthis.renderedEventSegEach(function(seg) {\n\t\t\t\tseg.el.addClass('fc-selected');\n\t\t\t}, event);\n\t\t\tthis.selectedEvent = event;\n\t\t}\n\t},\n\n\n\tunselectEvent: function() {\n\t\tif (this.selectedEvent) {\n\t\t\tthis.renderedEventSegEach(function(seg) {\n\t\t\t\tseg.el.removeClass('fc-selected');\n\t\t\t}, this.selectedEvent);\n\t\t\tthis.selectedEvent = null;\n\t\t}\n\t},\n\n\n\tisEventSelected: function(event) {\n\t\t// event references might change on refetchEvents(), while selectedEvent doesn't,\n\t\t// so compare IDs\n\t\treturn this.selectedEvent && this.selectedEvent._id === event._id;\n\t},\n\n\n\t/* Mouse / Touch Unselecting (time range & event unselection)\n\t------------------------------------------------------------------------------------------------------------------*/\n\t// TODO: move consistently to down/start or up/end?\n\t// TODO: don't kill previous selection if touch scrolling\n\n\n\thandleDocumentMousedown: function(ev) {\n\t\tif (isPrimaryMouseButton(ev)) {\n\t\t\tthis.processUnselect(ev);\n\t\t}\n\t},\n\n\n\tprocessUnselect: function(ev) {\n\t\tthis.processRangeUnselect(ev);\n\t\tthis.processEventUnselect(ev);\n\t},\n\n\n\tprocessRangeUnselect: function(ev) {\n\t\tvar ignore;\n\n\t\t// is there a time-range selection?\n\t\tif (this.isSelected && this.opt('unselectAuto')) {\n\t\t\t// only unselect if the clicked element is not identical to or inside of an 'unselectCancel' element\n\t\t\tignore = this.opt('unselectCancel');\n\t\t\tif (!ignore || !$(ev.target).closest(ignore).length) {\n\t\t\t\tthis.unselect(ev);\n\t\t\t}\n\t\t}\n\t},\n\n\n\tprocessEventUnselect: function(ev) {\n\t\tif (this.selectedEvent) {\n\t\t\tif (!$(ev.target).closest('.fc-selected').length) {\n\t\t\t\tthis.unselectEvent();\n\t\t\t}\n\t\t}\n\t},\n\n\n\t/* Day Click\n\t------------------------------------------------------------------------------------------------------------------*/\n\n\n\t// Triggers handlers to 'dayClick'\n\t// Span has start/end of the clicked area. Only the start is useful.\n\ttriggerDayClick: function(span, dayEl, ev) {\n\t\tthis.trigger(\n\t\t\t'dayClick',\n\t\t\tdayEl,\n\t\t\tthis.calendar.applyTimezone(span.start), // convert to calendar's timezone for external API\n\t\t\tev\n\t\t);\n\t},\n\n\n\t/* Date Utils\n\t------------------------------------------------------------------------------------------------------------------*/\n\n\n\t// Initializes internal variables related to calculating hidden days-of-week\n\tinitHiddenDays: function() {\n\t\tvar hiddenDays = this.opt('hiddenDays') || []; // array of day-of-week indices that are hidden\n\t\tvar isHiddenDayHash = []; // is the day-of-week hidden? (hash with day-of-week-index -> bool)\n\t\tvar dayCnt = 0;\n\t\tvar i;\n\n\t\tif (this.opt('weekends') === false) {\n\t\t\thiddenDays.push(0, 6); // 0=sunday, 6=saturday\n\t\t}\n\n\t\tfor (i = 0; i < 7; i++) {\n\t\t\tif (\n\t\t\t\t!(isHiddenDayHash[i] = $.inArray(i, hiddenDays) !== -1)\n\t\t\t) {\n\t\t\t\tdayCnt++;\n\t\t\t}\n\t\t}\n\n\t\tif (!dayCnt) {\n\t\t\tthrow 'invalid hiddenDays'; // all days were hidden? bad.\n\t\t}\n\n\t\tthis.isHiddenDayHash = isHiddenDayHash;\n\t},\n\n\n\t// Is the current day hidden?\n\t// `day` is a day-of-week index (0-6), or a Moment\n\tisHiddenDay: function(day) {\n\t\tif (moment.isMoment(day)) {\n\t\t\tday = day.day();\n\t\t}\n\t\treturn this.isHiddenDayHash[day];\n\t},\n\n\n\t// Incrementing the current day until it is no longer a hidden day, returning a copy.\n\t// If the initial value of `date` is not a hidden day, don't do anything.\n\t// Pass `isExclusive` as `true` if you are dealing with an end date.\n\t// `inc` defaults to `1` (increment one day forward each time)\n\tskipHiddenDays: function(date, inc, isExclusive) {\n\t\tvar out = date.clone();\n\t\tinc = inc || 1;\n\t\twhile (\n\t\t\tthis.isHiddenDayHash[(out.day() + (isExclusive ? inc : 0) + 7) % 7]\n\t\t) {\n\t\t\tout.add(inc, 'days');\n\t\t}\n\t\treturn out;\n\t},\n\n\n\t// Returns the date range of the full days the given range visually appears to occupy.\n\t// Returns a new range object.\n\tcomputeDayRange: function(range) {\n\t\tvar startDay = range.start.clone().stripTime(); // the beginning of the day the range starts\n\t\tvar end = range.end;\n\t\tvar endDay = null;\n\t\tvar endTimeMS;\n\n\t\tif (end) {\n\t\t\tendDay = end.clone().stripTime(); // the beginning of the day the range exclusively ends\n\t\t\tendTimeMS = +end.time(); // # of milliseconds into `endDay`\n\n\t\t\t// If the end time is actually inclusively part of the next day and is equal to or\n\t\t\t// beyond the next day threshold, adjust the end to be the exclusive end of `endDay`.\n\t\t\t// Otherwise, leaving it as inclusive will cause it to exclude `endDay`.\n\t\t\tif (endTimeMS && endTimeMS >= this.nextDayThreshold) {\n\t\t\t\tendDay.add(1, 'days');\n\t\t\t}\n\t\t}\n\n\t\t// If no end was specified, or if it is within `startDay` but not past nextDayThreshold,\n\t\t// assign the default duration of one day.\n\t\tif (!end || endDay <= startDay) {\n\t\t\tendDay = startDay.clone().add(1, 'days');\n\t\t}\n\n\t\treturn { start: startDay, end: endDay };\n\t},\n\n\n\t// Does the given event visually appear to occupy more than one day?\n\tisMultiDayEvent: function(event) {\n\t\tvar range = this.computeDayRange(event); // event is range-ish\n\n\t\treturn range.end.diff(range.start, 'days') > 1;\n\t}\n\n});\n\n;;\n\n/*\nEmbodies a div that has potential scrollbars\n*/\nvar Scroller = FC.Scroller = Class.extend({\n\n\tel: null, // the guaranteed outer element\n\tscrollEl: null, // the element with the scrollbars\n\toverflowX: null,\n\toverflowY: null,\n\n\n\tconstructor: function(options) {\n\t\toptions = options || {};\n\t\tthis.overflowX = options.overflowX || options.overflow || 'auto';\n\t\tthis.overflowY = options.overflowY || options.overflow || 'auto';\n\t},\n\n\n\trender: function() {\n\t\tthis.el = this.renderEl();\n\t\tthis.applyOverflow();\n\t},\n\n\n\trenderEl: function() {\n\t\treturn (this.scrollEl = $('
'));\n\t},\n\n\n\t// sets to natural height, unlocks overflow\n\tclear: function() {\n\t\tthis.setHeight('auto');\n\t\tthis.applyOverflow();\n\t},\n\n\n\tdestroy: function() {\n\t\tthis.el.remove();\n\t},\n\n\n\t// Overflow\n\t// -----------------------------------------------------------------------------------------------------------------\n\n\n\tapplyOverflow: function() {\n\t\tthis.scrollEl.css({\n\t\t\t'overflow-x': this.overflowX,\n\t\t\t'overflow-y': this.overflowY\n\t\t});\n\t},\n\n\n\t// Causes any 'auto' overflow values to resolves to 'scroll' or 'hidden'.\n\t// Useful for preserving scrollbar widths regardless of future resizes.\n\t// Can pass in scrollbarWidths for optimization.\n\tlockOverflow: function(scrollbarWidths) {\n\t\tvar overflowX = this.overflowX;\n\t\tvar overflowY = this.overflowY;\n\n\t\tscrollbarWidths = scrollbarWidths || this.getScrollbarWidths();\n\n\t\tif (overflowX === 'auto') {\n\t\t\toverflowX = (\n\t\t\t\t\tscrollbarWidths.top || scrollbarWidths.bottom || // horizontal scrollbars?\n\t\t\t\t\t// OR scrolling pane with massless scrollbars?\n\t\t\t\t\tthis.scrollEl[0].scrollWidth - 1 > this.scrollEl[0].clientWidth\n\t\t\t\t\t\t// subtract 1 because of IE off-by-one issue\n\t\t\t\t) ? 'scroll' : 'hidden';\n\t\t}\n\n\t\tif (overflowY === 'auto') {\n\t\t\toverflowY = (\n\t\t\t\t\tscrollbarWidths.left || scrollbarWidths.right || // vertical scrollbars?\n\t\t\t\t\t// OR scrolling pane with massless scrollbars?\n\t\t\t\t\tthis.scrollEl[0].scrollHeight - 1 > this.scrollEl[0].clientHeight\n\t\t\t\t\t\t// subtract 1 because of IE off-by-one issue\n\t\t\t\t) ? 'scroll' : 'hidden';\n\t\t}\n\n\t\tthis.scrollEl.css({ 'overflow-x': overflowX, 'overflow-y': overflowY });\n\t},\n\n\n\t// Getters / Setters\n\t// -----------------------------------------------------------------------------------------------------------------\n\n\n\tsetHeight: function(height) {\n\t\tthis.scrollEl.height(height);\n\t},\n\n\n\tgetScrollTop: function() {\n\t\treturn this.scrollEl.scrollTop();\n\t},\n\n\n\tsetScrollTop: function(top) {\n\t\tthis.scrollEl.scrollTop(top);\n\t},\n\n\n\tgetClientWidth: function() {\n\t\treturn this.scrollEl[0].clientWidth;\n\t},\n\n\n\tgetClientHeight: function() {\n\t\treturn this.scrollEl[0].clientHeight;\n\t},\n\n\n\tgetScrollbarWidths: function() {\n\t\treturn getScrollbarWidths(this.scrollEl);\n\t}\n\n});\n\n;;\n\nvar Calendar = FC.Calendar = Class.extend({\n\n\tdirDefaults: null, // option defaults related to LTR or RTL\n\tlangDefaults: null, // option defaults related to current locale\n\toverrides: null, // option overrides given to the fullCalendar constructor\n\tdynamicOverrides: null, // options set with dynamic setter method. higher precedence than view overrides.\n\toptions: null, // all defaults combined with overrides\n\tviewSpecCache: null, // cache of view definitions\n\tview: null, // current View object\n\theader: null,\n\tloadingLevel: 0, // number of simultaneous loading tasks\n\n\n\t// a lot of this class' OOP logic is scoped within this constructor function,\n\t// but in the future, write individual methods on the prototype.\n\tconstructor: Calendar_constructor,\n\n\n\t// Subclasses can override this for initialization logic after the constructor has been called\n\tinitialize: function() {\n\t},\n\n\n\t// Computes the flattened options hash for the calendar and assigns to `this.options`.\n\t// Assumes this.overrides and this.dynamicOverrides have already been initialized.\n\tpopulateOptionsHash: function() {\n\t\tvar lang, langDefaults;\n\t\tvar isRTL, dirDefaults;\n\n\t\tlang = firstDefined( // explicit lang option given?\n\t\t\tthis.dynamicOverrides.lang,\n\t\t\tthis.overrides.lang\n\t\t);\n\t\tlangDefaults = langOptionHash[lang];\n\t\tif (!langDefaults) { // explicit lang option not given or invalid?\n\t\t\tlang = Calendar.defaults.lang;\n\t\t\tlangDefaults = langOptionHash[lang] || {};\n\t\t}\n\n\t\tisRTL = firstDefined( // based on options computed so far, is direction RTL?\n\t\t\tthis.dynamicOverrides.isRTL,\n\t\t\tthis.overrides.isRTL,\n\t\t\tlangDefaults.isRTL,\n\t\t\tCalendar.defaults.isRTL\n\t\t);\n\t\tdirDefaults = isRTL ? Calendar.rtlDefaults : {};\n\n\t\tthis.dirDefaults = dirDefaults;\n\t\tthis.langDefaults = langDefaults;\n\t\tthis.options = mergeOptions([ // merge defaults and overrides. lowest to highest precedence\n\t\t\tCalendar.defaults, // global defaults\n\t\t\tdirDefaults,\n\t\t\tlangDefaults,\n\t\t\tthis.overrides,\n\t\t\tthis.dynamicOverrides\n\t\t]);\n\t\tpopulateInstanceComputableOptions(this.options); // fill in gaps with computed options\n\t},\n\n\n\t// Gets information about how to create a view. Will use a cache.\n\tgetViewSpec: function(viewType) {\n\t\tvar cache = this.viewSpecCache;\n\n\t\treturn cache[viewType] || (cache[viewType] = this.buildViewSpec(viewType));\n\t},\n\n\n\t// Given a duration singular unit, like \"week\" or \"day\", finds a matching view spec.\n\t// Preference is given to views that have corresponding buttons.\n\tgetUnitViewSpec: function(unit) {\n\t\tvar viewTypes;\n\t\tvar i;\n\t\tvar spec;\n\n\t\tif ($.inArray(unit, intervalUnits) != -1) {\n\n\t\t\t// put views that have buttons first. there will be duplicates, but oh well\n\t\t\tviewTypes = this.header.getViewsWithButtons();\n\t\t\t$.each(FC.views, function(viewType) { // all views\n\t\t\t\tviewTypes.push(viewType);\n\t\t\t});\n\n\t\t\tfor (i = 0; i < viewTypes.length; i++) {\n\t\t\t\tspec = this.getViewSpec(viewTypes[i]);\n\t\t\t\tif (spec) {\n\t\t\t\t\tif (spec.singleUnit == unit) {\n\t\t\t\t\t\treturn spec;\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\t},\n\n\n\t// Builds an object with information on how to create a given view\n\tbuildViewSpec: function(requestedViewType) {\n\t\tvar viewOverrides = this.overrides.views || {};\n\t\tvar specChain = []; // for the view. lowest to highest priority\n\t\tvar defaultsChain = []; // for the view. lowest to highest priority\n\t\tvar overridesChain = []; // for the view. lowest to highest priority\n\t\tvar viewType = requestedViewType;\n\t\tvar spec; // for the view\n\t\tvar overrides; // for the view\n\t\tvar duration;\n\t\tvar unit;\n\n\t\t// iterate from the specific view definition to a more general one until we hit an actual View class\n\t\twhile (viewType) {\n\t\t\tspec = fcViews[viewType];\n\t\t\toverrides = viewOverrides[viewType];\n\t\t\tviewType = null; // clear. might repopulate for another iteration\n\n\t\t\tif (typeof spec === 'function') { // TODO: deprecate\n\t\t\t\tspec = { 'class': spec };\n\t\t\t}\n\n\t\t\tif (spec) {\n\t\t\t\tspecChain.unshift(spec);\n\t\t\t\tdefaultsChain.unshift(spec.defaults || {});\n\t\t\t\tduration = duration || spec.duration;\n\t\t\t\tviewType = viewType || spec.type;\n\t\t\t}\n\n\t\t\tif (overrides) {\n\t\t\t\toverridesChain.unshift(overrides); // view-specific option hashes have options at zero-level\n\t\t\t\tduration = duration || overrides.duration;\n\t\t\t\tviewType = viewType || overrides.type;\n\t\t\t}\n\t\t}\n\n\t\tspec = mergeProps(specChain);\n\t\tspec.type = requestedViewType;\n\t\tif (!spec['class']) {\n\t\t\treturn false;\n\t\t}\n\n\t\tif (duration) {\n\t\t\tduration = moment.duration(duration);\n\t\t\tif (duration.valueOf()) { // valid?\n\t\t\t\tspec.duration = duration;\n\t\t\t\tunit = computeIntervalUnit(duration);\n\n\t\t\t\t// view is a single-unit duration, like \"week\" or \"day\"\n\t\t\t\t// incorporate options for this. lowest priority\n\t\t\t\tif (duration.as(unit) === 1) {\n\t\t\t\t\tspec.singleUnit = unit;\n\t\t\t\t\toverridesChain.unshift(viewOverrides[unit] || {});\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\n\t\tspec.defaults = mergeOptions(defaultsChain);\n\t\tspec.overrides = mergeOptions(overridesChain);\n\n\t\tthis.buildViewSpecOptions(spec);\n\t\tthis.buildViewSpecButtonText(spec, requestedViewType);\n\n\t\treturn spec;\n\t},\n\n\n\t// Builds and assigns a view spec's options object from its already-assigned defaults and overrides\n\tbuildViewSpecOptions: function(spec) {\n\t\tspec.options = mergeOptions([ // lowest to highest priority\n\t\t\tCalendar.defaults, // global defaults\n\t\t\tspec.defaults, // view's defaults (from ViewSubclass.defaults)\n\t\t\tthis.dirDefaults,\n\t\t\tthis.langDefaults, // locale and dir take precedence over view's defaults!\n\t\t\tthis.overrides, // calendar's overrides (options given to constructor)\n\t\t\tspec.overrides, // view's overrides (view-specific options)\n\t\t\tthis.dynamicOverrides // dynamically set via setter. highest precedence\n\t\t]);\n\t\tpopulateInstanceComputableOptions(spec.options);\n\t},\n\n\n\t// Computes and assigns a view spec's buttonText-related options\n\tbuildViewSpecButtonText: function(spec, requestedViewType) {\n\n\t\t// given an options object with a possible `buttonText` hash, lookup the buttonText for the\n\t\t// requested view, falling back to a generic unit entry like \"week\" or \"day\"\n\t\tfunction queryButtonText(options) {\n\t\t\tvar buttonText = options.buttonText || {};\n\t\t\treturn buttonText[requestedViewType] ||\n\t\t\t\t(spec.singleUnit ? buttonText[spec.singleUnit] : null);\n\t\t}\n\n\t\t// highest to lowest priority\n\t\tspec.buttonTextOverride =\n\t\t\tqueryButtonText(this.dynamicOverrides) ||\n\t\t\tqueryButtonText(this.overrides) || // constructor-specified buttonText lookup hash takes precedence\n\t\t\tspec.overrides.buttonText; // `buttonText` for view-specific options is a string\n\n\t\t// highest to lowest priority. mirrors buildViewSpecOptions\n\t\tspec.buttonTextDefault =\n\t\t\tqueryButtonText(this.langDefaults) ||\n\t\t\tqueryButtonText(this.dirDefaults) ||\n\t\t\tspec.defaults.buttonText || // a single string. from ViewSubclass.defaults\n\t\t\tqueryButtonText(Calendar.defaults) ||\n\t\t\t(spec.duration ? this.humanizeDuration(spec.duration) : null) || // like \"3 days\"\n\t\t\trequestedViewType; // fall back to given view name\n\t},\n\n\n\t// Given a view name for a custom view or a standard view, creates a ready-to-go View object\n\tinstantiateView: function(viewType) {\n\t\tvar spec = this.getViewSpec(viewType);\n\n\t\treturn new spec['class'](this, viewType, spec.options, spec.duration);\n\t},\n\n\n\t// Returns a boolean about whether the view is okay to instantiate at some point\n\tisValidViewType: function(viewType) {\n\t\treturn Boolean(this.getViewSpec(viewType));\n\t},\n\n\n\t// Should be called when any type of async data fetching begins\n\tpushLoading: function() {\n\t\tif (!(this.loadingLevel++)) {\n\t\t\tthis.trigger('loading', null, true, this.view);\n\t\t}\n\t},\n\n\n\t// Should be called when any type of async data fetching completes\n\tpopLoading: function() {\n\t\tif (!(--this.loadingLevel)) {\n\t\t\tthis.trigger('loading', null, false, this.view);\n\t\t}\n\t},\n\n\n\t// Given arguments to the select method in the API, returns a span (unzoned start/end and other info)\n\tbuildSelectSpan: function(zonedStartInput, zonedEndInput) {\n\t\tvar start = this.moment(zonedStartInput).stripZone();\n\t\tvar end;\n\n\t\tif (zonedEndInput) {\n\t\t\tend = this.moment(zonedEndInput).stripZone();\n\t\t}\n\t\telse if (start.hasTime()) {\n\t\t\tend = start.clone().add(this.defaultTimedEventDuration);\n\t\t}\n\t\telse {\n\t\t\tend = start.clone().add(this.defaultAllDayEventDuration);\n\t\t}\n\n\t\treturn { start: start, end: end };\n\t}\n\n});\n\n\nCalendar.mixin(EmitterMixin);\n\n\nfunction Calendar_constructor(element, overrides) {\n\tvar t = this;\n\n\n\t// Exports\n\t// -----------------------------------------------------------------------------------\n\n\tt.render = render;\n\tt.destroy = destroy;\n\tt.refetchEvents = refetchEvents;\n\tt.refetchEventSources = refetchEventSources;\n\tt.reportEvents = reportEvents;\n\tt.reportEventChange = reportEventChange;\n\tt.rerenderEvents = renderEvents; // `renderEvents` serves as a rerender. an API method\n\tt.changeView = renderView; // `renderView` will switch to another view\n\tt.select = select;\n\tt.unselect = unselect;\n\tt.prev = prev;\n\tt.next = next;\n\tt.prevYear = prevYear;\n\tt.nextYear = nextYear;\n\tt.today = today;\n\tt.gotoDate = gotoDate;\n\tt.incrementDate = incrementDate;\n\tt.zoomTo = zoomTo;\n\tt.getDate = getDate;\n\tt.getCalendar = getCalendar;\n\tt.getView = getView;\n\tt.option = option; // getter/setter method\n\tt.trigger = trigger;\n\n\n\t// Options\n\t// -----------------------------------------------------------------------------------\n\n\tt.dynamicOverrides = {};\n\tt.viewSpecCache = {};\n\tt.optionHandlers = {}; // for Calendar.options.js\n\n\t// convert legacy options into non-legacy ones.\n\t// in the future, when this is removed, don't use `overrides` reference. make a copy.\n\tt.overrides = massageOverrides(overrides || {});\n\n\tt.populateOptionsHash(); // sets this.options\n\n\n\n\t// Language-data Internals\n\t// -----------------------------------------------------------------------------------\n\t// Apply overrides to the current language's data\n\n\tvar localeData;\n\n\t// Called immediately, and when any of the options change.\n\t// Happens before any internal objects rebuild or rerender, because this is very core.\n\tt.bindOptions([\n\t\t'lang', 'monthNames', 'monthNamesShort', 'dayNames', 'dayNamesShort', 'firstDay', 'weekNumberCalculation'\n\t], function(lang, monthNames, monthNamesShort, dayNames, dayNamesShort, firstDay, weekNumberCalculation) {\n\n\t\tlocaleData = createObject( // make a cheap copy\n\t\t\tgetMomentLocaleData(lang) // will fall back to en\n\t\t);\n\n\t\tif (monthNames) {\n\t\t\tlocaleData._months = monthNames;\n\t\t}\n\t\tif (monthNamesShort) {\n\t\t\tlocaleData._monthsShort = monthNamesShort;\n\t\t}\n\t\tif (dayNames) {\n\t\t\tlocaleData._weekdays = dayNames;\n\t\t}\n\t\tif (dayNamesShort) {\n\t\t\tlocaleData._weekdaysShort = dayNamesShort;\n\t\t}\n\t\tif (firstDay != null) {\n\t\t\tvar _week = createObject(localeData._week); // _week: { dow: # }\n\t\t\t_week.dow = firstDay;\n\t\t\tlocaleData._week = _week;\n\t\t}\n\n\t\tif (weekNumberCalculation === 'iso') {\n\t\t\tweekNumberCalculation = 'ISO'; // normalize\n\t\t}\n\t\tif ( // whitelist certain kinds of input\n\t\t\tweekNumberCalculation === 'ISO' ||\n\t\t\tweekNumberCalculation === 'local' ||\n\t\t\ttypeof weekNumberCalculation === 'function'\n\t\t) {\n\t\t\tlocaleData._fullCalendar_weekCalc = weekNumberCalculation; // moment-ext will know what to do with it\n\t\t}\n\n\t\t// If the internal current date object already exists, move to new locale.\n\t\t// We do NOT need to do this technique for event dates, because this happens when converting to \"segments\".\n\t\tif (date) {\n\t\t\tlocalizeMoment(date); // sets to localeData\n\t\t}\n\t});\n\n\n\n\t// Calendar-specific Date Utilities\n\t// -----------------------------------------------------------------------------------\n\n\n\tt.defaultAllDayEventDuration = moment.duration(t.options.defaultAllDayEventDuration);\n\tt.defaultTimedEventDuration = moment.duration(t.options.defaultTimedEventDuration);\n\n\n\t// Builds a moment using the settings of the current calendar: timezone and language.\n\t// Accepts anything the vanilla moment() constructor accepts.\n\tt.moment = function() {\n\t\tvar mom;\n\n\t\tif (t.options.timezone === 'local') {\n\t\t\tmom = FC.moment.apply(null, arguments);\n\n\t\t\t// Force the moment to be local, because FC.moment doesn't guarantee it.\n\t\t\tif (mom.hasTime()) { // don't give ambiguously-timed moments a local zone\n\t\t\t\tmom.local();\n\t\t\t}\n\t\t}\n\t\telse if (t.options.timezone === 'UTC') {\n\t\t\tmom = FC.moment.utc.apply(null, arguments); // process as UTC\n\t\t}\n\t\telse {\n\t\t\tmom = FC.moment.parseZone.apply(null, arguments); // let the input decide the zone\n\t\t}\n\n\t\tlocalizeMoment(mom);\n\n\t\treturn mom;\n\t};\n\n\n\t// Updates the given moment's locale settings to the current calendar locale settings.\n\tfunction localizeMoment(mom) {\n\t\tif ('_locale' in mom) { // moment 2.8 and above\n\t\t\tmom._locale = localeData;\n\t\t}\n\t\telse { // pre-moment-2.8\n\t\t\tmom._lang = localeData;\n\t\t}\n\t}\n\n\n\t// Returns a boolean about whether or not the calendar knows how to calculate\n\t// the timezone offset of arbitrary dates in the current timezone.\n\tt.getIsAmbigTimezone = function() {\n\t\treturn t.options.timezone !== 'local' && t.options.timezone !== 'UTC';\n\t};\n\n\n\t// Returns a copy of the given date in the current timezone. Has no effect on dates without times.\n\tt.applyTimezone = function(date) {\n\t\tif (!date.hasTime()) {\n\t\t\treturn date.clone();\n\t\t}\n\n\t\tvar zonedDate = t.moment(date.toArray());\n\t\tvar timeAdjust = date.time() - zonedDate.time();\n\t\tvar adjustedZonedDate;\n\n\t\t// Safari sometimes has problems with this coersion when near DST. Adjust if necessary. (bug #2396)\n\t\tif (timeAdjust) { // is the time result different than expected?\n\t\t\tadjustedZonedDate = zonedDate.clone().add(timeAdjust); // add milliseconds\n\t\t\tif (date.time() - adjustedZonedDate.time() === 0) { // does it match perfectly now?\n\t\t\t\tzonedDate = adjustedZonedDate;\n\t\t\t}\n\t\t}\n\n\t\treturn zonedDate;\n\t};\n\n\n\t// Returns a moment for the current date, as defined by the client's computer or from the `now` option.\n\t// Will return an moment with an ambiguous timezone.\n\tt.getNow = function() {\n\t\tvar now = t.options.now;\n\t\tif (typeof now === 'function') {\n\t\t\tnow = now();\n\t\t}\n\t\treturn t.moment(now).stripZone();\n\t};\n\n\n\t// Get an event's normalized end date. If not present, calculate it from the defaults.\n\tt.getEventEnd = function(event) {\n\t\tif (event.end) {\n\t\t\treturn event.end.clone();\n\t\t}\n\t\telse {\n\t\t\treturn t.getDefaultEventEnd(event.allDay, event.start);\n\t\t}\n\t};\n\n\n\t// Given an event's allDay status and start date, return what its fallback end date should be.\n\t// TODO: rename to computeDefaultEventEnd\n\tt.getDefaultEventEnd = function(allDay, zonedStart) {\n\t\tvar end = zonedStart.clone();\n\n\t\tif (allDay) {\n\t\t\tend.stripTime().add(t.defaultAllDayEventDuration);\n\t\t}\n\t\telse {\n\t\t\tend.add(t.defaultTimedEventDuration);\n\t\t}\n\n\t\tif (t.getIsAmbigTimezone()) {\n\t\t\tend.stripZone(); // we don't know what the tzo should be\n\t\t}\n\n\t\treturn end;\n\t};\n\n\n\t// Produces a human-readable string for the given duration.\n\t// Side-effect: changes the locale of the given duration.\n\tt.humanizeDuration = function(duration) {\n\t\treturn (duration.locale || duration.lang).call(duration, t.options.lang) // works moment-pre-2.8\n\t\t\t.humanize();\n\t};\n\n\n\t\n\t// Imports\n\t// -----------------------------------------------------------------------------------\n\n\n\tEventManager.call(t);\n\tvar isFetchNeeded = t.isFetchNeeded;\n\tvar fetchEvents = t.fetchEvents;\n\tvar fetchEventSources = t.fetchEventSources;\n\n\n\n\t// Locals\n\t// -----------------------------------------------------------------------------------\n\n\n\tvar _element = element[0];\n\tvar header;\n\tvar content;\n\tvar tm; // for making theme classes\n\tvar currentView; // NOTE: keep this in sync with this.view\n\tvar viewsByType = {}; // holds all instantiated view instances, current or not\n\tvar suggestedViewHeight;\n\tvar windowResizeProxy; // wraps the windowResize function\n\tvar ignoreWindowResize = 0;\n\tvar events = [];\n\tvar date; // unzoned\n\t\n\t\n\t\n\t// Main Rendering\n\t// -----------------------------------------------------------------------------------\n\n\n\t// compute the initial ambig-timezone date\n\tif (t.options.defaultDate != null) {\n\t\tdate = t.moment(t.options.defaultDate).stripZone();\n\t}\n\telse {\n\t\tdate = t.getNow(); // getNow already returns unzoned\n\t}\n\t\n\t\n\tfunction render() {\n\t\tif (!content) {\n\t\t\tinitialRender();\n\t\t}\n\t\telse if (elementVisible()) {\n\t\t\t// mainly for the public API\n\t\t\tcalcSize();\n\t\t\trenderView();\n\t\t}\n\t}\n\t\n\t\n\tfunction initialRender() {\n\t\telement.addClass('fc');\n\n\t\t// called immediately, and upon option change\n\t\tt.bindOption('theme', function(theme) {\n\t\t\ttm = theme ? 'ui' : 'fc'; // affects a larger scope\n\t\t\telement.toggleClass('ui-widget', theme);\n\t\t\telement.toggleClass('fc-unthemed', !theme);\n\t\t});\n\n\t\t// called immediately, and upon option change.\n\t\t// HACK: lang often affects isRTL, so we explicitly listen to that too.\n\t\tt.bindOptions([ 'isRTL', 'lang' ], function(isRTL) {\n\t\t\telement.toggleClass('fc-ltr', !isRTL);\n\t\t\telement.toggleClass('fc-rtl', isRTL);\n\t\t});\n\n\t\tcontent = $(\"
\").prependTo(element);\n\n\t\theader = t.header = new Header(t);\n\t\trenderHeader();\n\n\t\trenderView(t.options.defaultView);\n\n\t\tif (t.options.handleWindowResize) {\n\t\t\twindowResizeProxy = debounce(windowResize, t.options.windowResizeDelay); // prevents rapid calls\n\t\t\t$(window).resize(windowResizeProxy);\n\t\t}\n\t}\n\n\n\t// can be called repeatedly and Header will rerender\n\tfunction renderHeader() {\n\t\theader.render();\n\t\tif (header.el) {\n\t\t\telement.prepend(header.el);\n\t\t}\n\t}\n\t\n\t\n\tfunction destroy() {\n\n\t\tif (currentView) {\n\t\t\tcurrentView.removeElement();\n\n\t\t\t// NOTE: don't null-out currentView/t.view in case API methods are called after destroy.\n\t\t\t// It is still the \"current\" view, just not rendered.\n\t\t}\n\n\t\theader.removeElement();\n\t\tcontent.remove();\n\t\telement.removeClass('fc fc-ltr fc-rtl fc-unthemed ui-widget');\n\n\t\tif (windowResizeProxy) {\n\t\t\t$(window).unbind('resize', windowResizeProxy);\n\t\t}\n\t}\n\t\n\t\n\tfunction elementVisible() {\n\t\treturn element.is(':visible');\n\t}\n\t\n\t\n\n\t// View Rendering\n\t// -----------------------------------------------------------------------------------\n\n\n\t// Renders a view because of a date change, view-type change, or for the first time.\n\t// If not given a viewType, keep the current view but render different dates.\n\t// Accepts an optional scroll state to restore to.\n\tfunction renderView(viewType, explicitScrollState) {\n\t\tignoreWindowResize++;\n\n\t\t// if viewType is changing, remove the old view's rendering\n\t\tif (currentView && viewType && currentView.type !== viewType) {\n\t\t\tfreezeContentHeight(); // prevent a scroll jump when view element is removed\n\t\t\tclearView();\n\t\t}\n\n\t\t// if viewType changed, or the view was never created, create a fresh view\n\t\tif (!currentView && viewType) {\n\t\t\tcurrentView = t.view =\n\t\t\t\tviewsByType[viewType] ||\n\t\t\t\t(viewsByType[viewType] = t.instantiateView(viewType));\n\n\t\t\tcurrentView.setElement(\n\t\t\t\t$(\"
\").appendTo(content)\n\t\t\t);\n\t\t\theader.activateButton(viewType);\n\t\t}\n\n\t\tif (currentView) {\n\n\t\t\t// in case the view should render a period of time that is completely hidden\n\t\t\tdate = currentView.massageCurrentDate(date);\n\n\t\t\t// render or rerender the view\n\t\t\tif (\n\t\t\t\t!currentView.displaying ||\n\t\t\t\t!date.isWithin(currentView.intervalStart, currentView.intervalEnd) // implicit date window change\n\t\t\t) {\n\t\t\t\tif (elementVisible()) {\n\n\t\t\t\t\tcurrentView.display(date, explicitScrollState); // will call freezeContentHeight\n\t\t\t\t\tunfreezeContentHeight(); // immediately unfreeze regardless of whether display is async\n\n\t\t\t\t\t// need to do this after View::render, so dates are calculated\n\t\t\t\t\tupdateHeaderTitle();\n\t\t\t\t\tupdateTodayButton();\n\n\t\t\t\t\tgetAndRenderEvents();\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\n\t\tunfreezeContentHeight(); // undo any lone freezeContentHeight calls\n\t\tignoreWindowResize--;\n\t}\n\n\n\t// Unrenders the current view and reflects this change in the Header.\n\t// Unregsiters the `currentView`, but does not remove from viewByType hash.\n\tfunction clearView() {\n\t\theader.deactivateButton(currentView.type);\n\t\tcurrentView.removeElement();\n\t\tcurrentView = t.view = null;\n\t}\n\n\n\t// Destroys the view, including the view object. Then, re-instantiates it and renders it.\n\t// Maintains the same scroll state.\n\t// TODO: maintain any other user-manipulated state.\n\tfunction reinitView() {\n\t\tignoreWindowResize++;\n\t\tfreezeContentHeight();\n\n\t\tvar viewType = currentView.type;\n\t\tvar scrollState = currentView.queryScroll();\n\t\tclearView();\n\t\trenderView(viewType, scrollState);\n\n\t\tunfreezeContentHeight();\n\t\tignoreWindowResize--;\n\t}\n\n\t\n\n\t// Resizing\n\t// -----------------------------------------------------------------------------------\n\n\n\tt.getSuggestedViewHeight = function() {\n\t\tif (suggestedViewHeight === undefined) {\n\t\t\tcalcSize();\n\t\t}\n\t\treturn suggestedViewHeight;\n\t};\n\n\n\tt.isHeightAuto = function() {\n\t\treturn t.options.contentHeight === 'auto' || t.options.height === 'auto';\n\t};\n\t\n\t\n\tfunction updateSize(shouldRecalc) {\n\t\tif (elementVisible()) {\n\n\t\t\tif (shouldRecalc) {\n\t\t\t\t_calcSize();\n\t\t\t}\n\n\t\t\tignoreWindowResize++;\n\t\t\tcurrentView.updateSize(true); // isResize=true. will poll getSuggestedViewHeight() and isHeightAuto()\n\t\t\tignoreWindowResize--;\n\n\t\t\treturn true; // signal success\n\t\t}\n\t}\n\n\n\tfunction calcSize() {\n\t\tif (elementVisible()) {\n\t\t\t_calcSize();\n\t\t}\n\t}\n\t\n\t\n\tfunction _calcSize() { // assumes elementVisible\n\t\tvar contentHeightInput = t.options.contentHeight;\n\t\tvar heightInput = t.options.height;\n\n\t\tif (typeof contentHeightInput === 'number') { // exists and not 'auto'\n\t\t\tsuggestedViewHeight = contentHeightInput;\n\t\t}\n\t\telse if (typeof contentHeightInput === 'function') { // exists and is a function\n\t\t\tsuggestedViewHeight = contentHeightInput();\n\t\t}\n\t\telse if (typeof heightInput === 'number') { // exists and not 'auto'\n\t\t\tsuggestedViewHeight = heightInput - queryHeaderHeight();\n\t\t}\n\t\telse if (typeof heightInput === 'function') { // exists and is a function\n\t\t\tsuggestedViewHeight = heightInput() - queryHeaderHeight();\n\t\t}\n\t\telse if (heightInput === 'parent') { // set to height of parent element\n\t\t\tsuggestedViewHeight = element.parent().height() - queryHeaderHeight();\n\t\t}\n\t\telse {\n\t\t\tsuggestedViewHeight = Math.round(content.width() / Math.max(t.options.aspectRatio, .5));\n\t\t}\n\t}\n\n\n\tfunction queryHeaderHeight() {\n\t\treturn header.el ? header.el.outerHeight(true) : 0; // includes margin\n\t}\n\t\n\t\n\tfunction windowResize(ev) {\n\t\tif (\n\t\t\t!ignoreWindowResize &&\n\t\t\tev.target === window && // so we don't process jqui \"resize\" events that have bubbled up\n\t\t\tcurrentView.start // view has already been rendered\n\t\t) {\n\t\t\tif (updateSize(true)) {\n\t\t\t\tcurrentView.trigger('windowResize', _element);\n\t\t\t}\n\t\t}\n\t}\n\t\n\t\n\t\n\t/* Event Fetching/Rendering\n\t-----------------------------------------------------------------------------*/\n\t// TODO: going forward, most of this stuff should be directly handled by the view\n\n\n\tfunction refetchEvents() { // can be called as an API method\n\t\tfetchAndRenderEvents();\n\t}\n\n\n\t// TODO: move this into EventManager?\n\tfunction refetchEventSources(matchInputs) {\n\t\tfetchEventSources(t.getEventSourcesByMatchArray(matchInputs));\n\t}\n\n\n\tfunction renderEvents() { // destroys old events if previously rendered\n\t\tif (elementVisible()) {\n\t\t\tfreezeContentHeight();\n\t\t\tcurrentView.displayEvents(events);\n\t\t\tunfreezeContentHeight();\n\t\t}\n\t}\n\t\n\n\tfunction getAndRenderEvents() {\n\t\tif (!t.options.lazyFetching || isFetchNeeded(currentView.start, currentView.end)) {\n\t\t\tfetchAndRenderEvents();\n\t\t}\n\t\telse {\n\t\t\trenderEvents();\n\t\t}\n\t}\n\n\n\tfunction fetchAndRenderEvents() {\n\t\tfetchEvents(currentView.start, currentView.end);\n\t\t\t// ... will call reportEvents\n\t\t\t// ... which will call renderEvents\n\t}\n\n\t\n\t// called when event data arrives\n\tfunction reportEvents(_events) {\n\t\tevents = _events;\n\t\trenderEvents();\n\t}\n\n\n\t// called when a single event's data has been changed\n\tfunction reportEventChange() {\n\t\trenderEvents();\n\t}\n\n\n\n\t/* Header Updating\n\t-----------------------------------------------------------------------------*/\n\n\n\tfunction updateHeaderTitle() {\n\t\theader.updateTitle(currentView.title);\n\t}\n\n\n\tfunction updateTodayButton() {\n\t\tvar now = t.getNow();\n\t\tif (now.isWithin(currentView.intervalStart, currentView.intervalEnd)) {\n\t\t\theader.disableButton('today');\n\t\t}\n\t\telse {\n\t\t\theader.enableButton('today');\n\t\t}\n\t}\n\t\n\n\n\t/* Selection\n\t-----------------------------------------------------------------------------*/\n\t\n\n\t// this public method receives start/end dates in any format, with any timezone\n\tfunction select(zonedStartInput, zonedEndInput) {\n\t\tcurrentView.select(\n\t\t\tt.buildSelectSpan.apply(t, arguments)\n\t\t);\n\t}\n\t\n\n\tfunction unselect() { // safe to be called before renderView\n\t\tif (currentView) {\n\t\t\tcurrentView.unselect();\n\t\t}\n\t}\n\t\n\t\n\t\n\t/* Date\n\t-----------------------------------------------------------------------------*/\n\t\n\t\n\tfunction prev() {\n\t\tdate = currentView.computePrevDate(date);\n\t\trenderView();\n\t}\n\t\n\t\n\tfunction next() {\n\t\tdate = currentView.computeNextDate(date);\n\t\trenderView();\n\t}\n\t\n\t\n\tfunction prevYear() {\n\t\tdate.add(-1, 'years');\n\t\trenderView();\n\t}\n\t\n\t\n\tfunction nextYear() {\n\t\tdate.add(1, 'years');\n\t\trenderView();\n\t}\n\t\n\t\n\tfunction today() {\n\t\tdate = t.getNow();\n\t\trenderView();\n\t}\n\t\n\t\n\tfunction gotoDate(zonedDateInput) {\n\t\tdate = t.moment(zonedDateInput).stripZone();\n\t\trenderView();\n\t}\n\t\n\t\n\tfunction incrementDate(delta) {\n\t\tdate.add(moment.duration(delta));\n\t\trenderView();\n\t}\n\n\n\t// Forces navigation to a view for the given date.\n\t// `viewType` can be a specific view name or a generic one like \"week\" or \"day\".\n\tfunction zoomTo(newDate, viewType) {\n\t\tvar spec;\n\n\t\tviewType = viewType || 'day'; // day is default zoom\n\t\tspec = t.getViewSpec(viewType) || t.getUnitViewSpec(viewType);\n\n\t\tdate = newDate.clone();\n\t\trenderView(spec ? spec.type : null);\n\t}\n\t\n\t\n\t// for external API\n\tfunction getDate() {\n\t\treturn t.applyTimezone(date); // infuse the calendar's timezone\n\t}\n\n\n\n\t/* Height \"Freezing\"\n\t-----------------------------------------------------------------------------*/\n\t// TODO: move this into the view\n\n\tt.freezeContentHeight = freezeContentHeight;\n\tt.unfreezeContentHeight = unfreezeContentHeight;\n\n\n\tfunction freezeContentHeight() {\n\t\tcontent.css({\n\t\t\twidth: '100%',\n\t\t\theight: content.height(),\n\t\t\toverflow: 'hidden'\n\t\t});\n\t}\n\n\n\tfunction unfreezeContentHeight() {\n\t\tcontent.css({\n\t\t\twidth: '',\n\t\t\theight: '',\n\t\t\toverflow: ''\n\t\t});\n\t}\n\t\n\t\n\t\n\t/* Misc\n\t-----------------------------------------------------------------------------*/\n\t\n\n\tfunction getCalendar() {\n\t\treturn t;\n\t}\n\n\t\n\tfunction getView() {\n\t\treturn currentView;\n\t}\n\t\n\t\n\tfunction option(name, value) {\n\t\tvar newOptionHash;\n\n\t\tif (typeof name === 'string') {\n\t\t\tif (value === undefined) { // getter\n\t\t\t\treturn t.options[name];\n\t\t\t}\n\t\t\telse { // setter for individual option\n\t\t\t\tnewOptionHash = {};\n\t\t\t\tnewOptionHash[name] = value;\n\t\t\t\tsetOptions(newOptionHash);\n\t\t\t}\n\t\t}\n\t\telse if (typeof name === 'object') { // compound setter with object input\n\t\t\tsetOptions(name);\n\t\t}\n\t}\n\n\n\tfunction setOptions(newOptionHash) {\n\t\tvar optionCnt = 0;\n\t\tvar optionName;\n\n\t\tfor (optionName in newOptionHash) {\n\t\t\tt.dynamicOverrides[optionName] = newOptionHash[optionName];\n\t\t}\n\n\t\tt.viewSpecCache = {}; // the dynamic override invalidates the options in this cache, so just clear it\n\t\tt.populateOptionsHash(); // this.options needs to be recomputed after the dynamic override\n\n\t\t// trigger handlers after this.options has been updated\n\t\tfor (optionName in newOptionHash) {\n\t\t\tt.triggerOptionHandlers(optionName); // recall bindOption/bindOptions\n\t\t\toptionCnt++;\n\t\t}\n\n\t\t// special-case handling of single option change.\n\t\t// if only one option change, `optionName` will be its name.\n\t\tif (optionCnt === 1) {\n\t\t\tif (optionName === 'height' || optionName === 'contentHeight' || optionName === 'aspectRatio') {\n\t\t\t\tupdateSize(true); // true = allow recalculation of height\n\t\t\t\treturn;\n\t\t\t}\n\t\t\telse if (optionName === 'defaultDate') {\n\t\t\t\treturn; // can't change date this way. use gotoDate instead\n\t\t\t}\n\t\t\telse if (optionName === 'businessHours') {\n\t\t\t\tif (currentView) {\n\t\t\t\t\tcurrentView.unrenderBusinessHours();\n\t\t\t\t\tcurrentView.renderBusinessHours();\n\t\t\t\t}\n\t\t\t\treturn;\n\t\t\t}\n\t\t\telse if (optionName === 'timezone') {\n\t\t\t\tt.rezoneArrayEventSources();\n\t\t\t\trefetchEvents();\n\t\t\t\treturn;\n\t\t\t}\n\t\t}\n\n\t\t// catch-all. rerender the header and rebuild/rerender the current view\n\t\trenderHeader();\n\t\tviewsByType = {}; // even non-current views will be affected by this option change. do before rerender\n\t\treinitView();\n\t}\n\t\n\t\n\tfunction trigger(name, thisObj) { // overrides the Emitter's trigger method :(\n\t\tvar args = Array.prototype.slice.call(arguments, 2);\n\n\t\tthisObj = thisObj || _element;\n\t\tthis.triggerWith(name, thisObj, args); // Emitter's method\n\n\t\tif (t.options[name]) {\n\t\t\treturn t.options[name].apply(thisObj, args);\n\t\t}\n\t}\n\n\tt.initialize();\n}\n\n;;\n/*\nOptions binding/triggering system.\n*/\nCalendar.mixin({\n\n\t// A map of option names to arrays of handler objects. Initialized to {} in Calendar.\n\t// Format for a handler object:\n\t// {\n\t// func // callback function to be called upon change\n\t// names // option names whose values should be given to func\n\t// }\n\toptionHandlers: null, \n\n\t// Calls handlerFunc immediately, and when the given option has changed.\n\t// handlerFunc will be given the option value.\n\tbindOption: function(optionName, handlerFunc) {\n\t\tthis.bindOptions([ optionName ], handlerFunc);\n\t},\n\n\t// Calls handlerFunc immediately, and when any of the given options change.\n\t// handlerFunc will be given each option value as ordered function arguments.\n\tbindOptions: function(optionNames, handlerFunc) {\n\t\tvar handlerObj = { func: handlerFunc, names: optionNames };\n\t\tvar i;\n\n\t\tfor (i = 0; i < optionNames.length; i++) {\n\t\t\tthis.registerOptionHandlerObj(optionNames[i], handlerObj);\n\t\t}\n\n\t\tthis.triggerOptionHandlerObj(handlerObj);\n\t},\n\n\t// Puts the given handler object into the internal hash\n\tregisterOptionHandlerObj: function(optionName, handlerObj) {\n\t\t(this.optionHandlers[optionName] || (this.optionHandlers[optionName] = []))\n\t\t\t.push(handlerObj);\n\t},\n\n\t// Reports that the given option has changed, and calls all appropriate handlers.\n\ttriggerOptionHandlers: function(optionName) {\n\t\tvar handlerObjs = this.optionHandlers[optionName] || [];\n\t\tvar i;\n\n\t\tfor (i = 0; i < handlerObjs.length; i++) {\n\t\t\tthis.triggerOptionHandlerObj(handlerObjs[i]);\n\t\t}\n\t},\n\n\t// Calls the callback for a specific handler object, passing in the appropriate arguments.\n\ttriggerOptionHandlerObj: function(handlerObj) {\n\t\tvar optionNames = handlerObj.names;\n\t\tvar optionValues = [];\n\t\tvar i;\n\n\t\tfor (i = 0; i < optionNames.length; i++) {\n\t\t\toptionValues.push(this.options[optionNames[i]]);\n\t\t}\n\n\t\thandlerObj.func.apply(this, optionValues); // maintain the Calendar's `this` context\n\t}\n\n});\n\n;;\n\nCalendar.defaults = {\n\n\ttitleRangeSeparator: ' \\u2013 ', // en dash\n\tmonthYearFormat: 'MMMM YYYY', // required for en. other languages rely on datepicker computable option\n\n\tdefaultTimedEventDuration: '02:00:00',\n\tdefaultAllDayEventDuration: { days: 1 },\n\tforceEventDuration: false,\n\tnextDayThreshold: '09:00:00', // 9am\n\n\t// display\n\tdefaultView: 'month',\n\taspectRatio: 1.35,\n\theader: {\n\t\tleft: 'title',\n\t\tcenter: '',\n\t\tright: 'today prev,next'\n\t},\n\tweekends: true,\n\tweekNumbers: false,\n\n\tweekNumberTitle: 'W',\n\tweekNumberCalculation: 'local',\n\t\n\t//editable: false,\n\n\t//nowIndicator: false,\n\n\tscrollTime: '06:00:00',\n\t\n\t// event ajax\n\tlazyFetching: true,\n\tstartParam: 'start',\n\tendParam: 'end',\n\ttimezoneParam: 'timezone',\n\n\ttimezone: false,\n\n\t//allDayDefault: undefined,\n\n\t// locale\n\tisRTL: false,\n\tbuttonText: {\n\t\tprev: \"prev\",\n\t\tnext: \"next\",\n\t\tprevYear: \"prev year\",\n\t\tnextYear: \"next year\",\n\t\tyear: 'year', // TODO: locale files need to specify this\n\t\ttoday: 'today',\n\t\tmonth: 'month',\n\t\tweek: 'week',\n\t\tday: 'day'\n\t},\n\n\tbuttonIcons: {\n\t\tprev: 'left-single-arrow',\n\t\tnext: 'right-single-arrow',\n\t\tprevYear: 'left-double-arrow',\n\t\tnextYear: 'right-double-arrow'\n\t},\n\t\n\t// jquery-ui theming\n\ttheme: false,\n\tthemeButtonIcons: {\n\t\tprev: 'circle-triangle-w',\n\t\tnext: 'circle-triangle-e',\n\t\tprevYear: 'seek-prev',\n\t\tnextYear: 'seek-next'\n\t},\n\n\t//eventResizableFromStart: false,\n\tdragOpacity: .75,\n\tdragRevertDuration: 500,\n\tdragScroll: true,\n\t\n\t//selectable: false,\n\tunselectAuto: true,\n\t\n\tdropAccept: '*',\n\n\teventOrder: 'title',\n\n\teventLimit: false,\n\teventLimitText: 'more',\n\teventLimitClick: 'popover',\n\tdayPopoverFormat: 'LL',\n\t\n\thandleWindowResize: true,\n\twindowResizeDelay: 100, // milliseconds before an updateSize happens\n\n\tlongPressDelay: 1000\n\t\n};\n\n\nCalendar.englishDefaults = { // used by lang.js\n\tdayPopoverFormat: 'dddd, MMMM D'\n};\n\n\nCalendar.rtlDefaults = { // right-to-left defaults\n\theader: { // TODO: smarter solution (first/center/last ?)\n\t\tleft: 'next,prev today',\n\t\tcenter: '',\n\t\tright: 'title'\n\t},\n\tbuttonIcons: {\n\t\tprev: 'right-single-arrow',\n\t\tnext: 'left-single-arrow',\n\t\tprevYear: 'right-double-arrow',\n\t\tnextYear: 'left-double-arrow'\n\t},\n\tthemeButtonIcons: {\n\t\tprev: 'circle-triangle-e',\n\t\tnext: 'circle-triangle-w',\n\t\tnextYear: 'seek-prev',\n\t\tprevYear: 'seek-next'\n\t}\n};\n\n;;\n\nvar langOptionHash = FC.langs = {}; // initialize and expose\n\n\n// TODO: document the structure and ordering of a FullCalendar lang file\n// TODO: rename everything \"lang\" to \"locale\", like what the moment project did\n\n\n// Initialize jQuery UI datepicker translations while using some of the translations\n// Will set this as the default language for datepicker.\nFC.datepickerLang = function(langCode, dpLangCode, dpOptions) {\n\n\t// get the FullCalendar internal option hash for this language. create if necessary\n\tvar fcOptions = langOptionHash[langCode] || (langOptionHash[langCode] = {});\n\n\t// transfer some simple options from datepicker to fc\n\tfcOptions.isRTL = dpOptions.isRTL;\n\tfcOptions.weekNumberTitle = dpOptions.weekHeader;\n\n\t// compute some more complex options from datepicker\n\t$.each(dpComputableOptions, function(name, func) {\n\t\tfcOptions[name] = func(dpOptions);\n\t});\n\n\t// is jQuery UI Datepicker is on the page?\n\tif ($.datepicker) {\n\n\t\t// Register the language data.\n\t\t// FullCalendar and MomentJS use language codes like \"pt-br\" but Datepicker\n\t\t// does it like \"pt-BR\" or if it doesn't have the language, maybe just \"pt\".\n\t\t// Make an alias so the language can be referenced either way.\n\t\t$.datepicker.regional[dpLangCode] =\n\t\t\t$.datepicker.regional[langCode] = // alias\n\t\t\t\tdpOptions;\n\n\t\t// Alias 'en' to the default language data. Do this every time.\n\t\t$.datepicker.regional.en = $.datepicker.regional[''];\n\n\t\t// Set as Datepicker's global defaults.\n\t\t$.datepicker.setDefaults(dpOptions);\n\t}\n};\n\n\n// Sets FullCalendar-specific translations. Will set the language as the global default.\nFC.lang = function(langCode, newFcOptions) {\n\tvar fcOptions;\n\tvar momOptions;\n\n\t// get the FullCalendar internal option hash for this language. create if necessary\n\tfcOptions = langOptionHash[langCode] || (langOptionHash[langCode] = {});\n\n\t// provided new options for this language? merge them in\n\tif (newFcOptions) {\n\t\tfcOptions = langOptionHash[langCode] = mergeOptions([ fcOptions, newFcOptions ]);\n\t}\n\n\t// compute language options that weren't defined.\n\t// always do this. newFcOptions can be undefined when initializing from i18n file,\n\t// so no way to tell if this is an initialization or a default-setting.\n\tmomOptions = getMomentLocaleData(langCode); // will fall back to en\n\t$.each(momComputableOptions, function(name, func) {\n\t\tif (fcOptions[name] == null) {\n\t\t\tfcOptions[name] = func(momOptions, fcOptions);\n\t\t}\n\t});\n\n\t// set it as the default language for FullCalendar\n\tCalendar.defaults.lang = langCode;\n};\n\n\n// NOTE: can't guarantee any of these computations will run because not every language has datepicker\n// configs, so make sure there are English fallbacks for these in the defaults file.\nvar dpComputableOptions = {\n\n\tbuttonText: function(dpOptions) {\n\t\treturn {\n\t\t\t// the translations sometimes wrongly contain HTML entities\n\t\t\tprev: stripHtmlEntities(dpOptions.prevText),\n\t\t\tnext: stripHtmlEntities(dpOptions.nextText),\n\t\t\ttoday: stripHtmlEntities(dpOptions.currentText)\n\t\t};\n\t},\n\n\t// Produces format strings like \"MMMM YYYY\" -> \"September 2014\"\n\tmonthYearFormat: function(dpOptions) {\n\t\treturn dpOptions.showMonthAfterYear ?\n\t\t\t'YYYY[' + dpOptions.yearSuffix + '] MMMM' :\n\t\t\t'MMMM YYYY[' + dpOptions.yearSuffix + ']';\n\t}\n\n};\n\nvar momComputableOptions = {\n\n\t// Produces format strings like \"ddd M/D\" -> \"Fri 9/15\"\n\tdayOfMonthFormat: function(momOptions, fcOptions) {\n\t\tvar format = momOptions.longDateFormat('l'); // for the format like \"M/D/YYYY\"\n\n\t\t// strip the year off the edge, as well as other misc non-whitespace chars\n\t\tformat = format.replace(/^Y+[^\\w\\s]*|[^\\w\\s]*Y+$/g, '');\n\n\t\tif (fcOptions.isRTL) {\n\t\t\tformat += ' ddd'; // for RTL, add day-of-week to end\n\t\t}\n\t\telse {\n\t\t\tformat = 'ddd ' + format; // for LTR, add day-of-week to beginning\n\t\t}\n\t\treturn format;\n\t},\n\n\t// Produces format strings like \"h:mma\" -> \"6:00pm\"\n\tmediumTimeFormat: function(momOptions) { // can't be called `timeFormat` because collides with option\n\t\treturn momOptions.longDateFormat('LT')\n\t\t\t.replace(/\\s*a$/i, 'a'); // convert AM/PM/am/pm to lowercase. remove any spaces beforehand\n\t},\n\n\t// Produces format strings like \"h(:mm)a\" -> \"6pm\" / \"6:30pm\"\n\tsmallTimeFormat: function(momOptions) {\n\t\treturn momOptions.longDateFormat('LT')\n\t\t\t.replace(':mm', '(:mm)')\n\t\t\t.replace(/(\\Wmm)$/, '($1)') // like above, but for foreign langs\n\t\t\t.replace(/\\s*a$/i, 'a'); // convert AM/PM/am/pm to lowercase. remove any spaces beforehand\n\t},\n\n\t// Produces format strings like \"h(:mm)t\" -> \"6p\" / \"6:30p\"\n\textraSmallTimeFormat: function(momOptions) {\n\t\treturn momOptions.longDateFormat('LT')\n\t\t\t.replace(':mm', '(:mm)')\n\t\t\t.replace(/(\\Wmm)$/, '($1)') // like above, but for foreign langs\n\t\t\t.replace(/\\s*a$/i, 't'); // convert to AM/PM/am/pm to lowercase one-letter. remove any spaces beforehand\n\t},\n\n\t// Produces format strings like \"ha\" / \"H\" -> \"6pm\" / \"18\"\n\thourFormat: function(momOptions) {\n\t\treturn momOptions.longDateFormat('LT')\n\t\t\t.replace(':mm', '')\n\t\t\t.replace(/(\\Wmm)$/, '') // like above, but for foreign langs\n\t\t\t.replace(/\\s*a$/i, 'a'); // convert AM/PM/am/pm to lowercase. remove any spaces beforehand\n\t},\n\n\t// Produces format strings like \"h:mm\" -> \"6:30\" (with no AM/PM)\n\tnoMeridiemTimeFormat: function(momOptions) {\n\t\treturn momOptions.longDateFormat('LT')\n\t\t\t.replace(/\\s*a$/i, ''); // remove trailing AM/PM\n\t}\n\n};\n\n\n// options that should be computed off live calendar options (considers override options)\n// TODO: best place for this? related to lang?\n// TODO: flipping text based on isRTL is a bad idea because the CSS `direction` might want to handle it\nvar instanceComputableOptions = {\n\n\t// Produces format strings for results like \"Mo 16\"\n\tsmallDayDateFormat: function(options) {\n\t\treturn options.isRTL ?\n\t\t\t'D dd' :\n\t\t\t'dd D';\n\t},\n\n\t// Produces format strings for results like \"Wk 5\"\n\tweekFormat: function(options) {\n\t\treturn options.isRTL ?\n\t\t\t'w[ ' + options.weekNumberTitle + ']' :\n\t\t\t'[' + options.weekNumberTitle + ' ]w';\n\t},\n\n\t// Produces format strings for results like \"Wk5\"\n\tsmallWeekFormat: function(options) {\n\t\treturn options.isRTL ?\n\t\t\t'w[' + options.weekNumberTitle + ']' :\n\t\t\t'[' + options.weekNumberTitle + ']w';\n\t}\n\n};\n\nfunction populateInstanceComputableOptions(options) {\n\t$.each(instanceComputableOptions, function(name, func) {\n\t\tif (options[name] == null) {\n\t\t\toptions[name] = func(options);\n\t\t}\n\t});\n}\n\n\n// Returns moment's internal locale data. If doesn't exist, returns English.\n// Works with moment-pre-2.8\nfunction getMomentLocaleData(langCode) {\n\tvar func = moment.localeData || moment.langData;\n\treturn func.call(moment, langCode) ||\n\t\tfunc.call(moment, 'en'); // the newer localData could return null, so fall back to en\n}\n\n\n// Initialize English by forcing computation of moment-derived options.\n// Also, sets it as the default.\nFC.lang('en', Calendar.englishDefaults);\n\n;;\n\n/* Top toolbar area with buttons and title\n----------------------------------------------------------------------------------------------------------------------*/\n// TODO: rename all header-related things to \"toolbar\"\n\nfunction Header(calendar) {\n\tvar t = this;\n\t\n\t// exports\n\tt.render = render;\n\tt.removeElement = removeElement;\n\tt.updateTitle = updateTitle;\n\tt.activateButton = activateButton;\n\tt.deactivateButton = deactivateButton;\n\tt.disableButton = disableButton;\n\tt.enableButton = enableButton;\n\tt.getViewsWithButtons = getViewsWithButtons;\n\tt.el = null; // mirrors local `el`\n\t\n\t// locals\n\tvar el;\n\tvar viewsWithButtons = [];\n\tvar tm;\n\n\n\t// can be called repeatedly and will rerender\n\tfunction render() {\n\t\tvar options = calendar.options;\n\t\tvar sections = options.header;\n\n\t\ttm = options.theme ? 'ui' : 'fc';\n\n\t\tif (sections) {\n\t\t\tif (!el) {\n\t\t\t\tel = this.el = $(\"
\");\n\t\t\t}\n\t\t\telse {\n\t\t\t\tel.empty();\n\t\t\t}\n\t\t\tel.append(renderSection('left'))\n\t\t\t\t.append(renderSection('right'))\n\t\t\t\t.append(renderSection('center'))\n\t\t\t\t.append('
');\n\t\t}\n\t\telse {\n\t\t\tremoveElement();\n\t\t}\n\t}\n\t\n\t\n\tfunction removeElement() {\n\t\tif (el) {\n\t\t\tel.remove();\n\t\t\tel = t.el = null;\n\t\t}\n\t}\n\t\n\t\n\tfunction renderSection(position) {\n\t\tvar sectionEl = $('
');\n\t\tvar options = calendar.options;\n\t\tvar buttonStr = options.header[position];\n\n\t\tif (buttonStr) {\n\t\t\t$.each(buttonStr.split(' '), function(i) {\n\t\t\t\tvar groupChildren = $();\n\t\t\t\tvar isOnlyButtons = true;\n\t\t\t\tvar groupEl;\n\n\t\t\t\t$.each(this.split(','), function(j, buttonName) {\n\t\t\t\t\tvar customButtonProps;\n\t\t\t\t\tvar viewSpec;\n\t\t\t\t\tvar buttonClick;\n\t\t\t\t\tvar overrideText; // text explicitly set by calendar's constructor options. overcomes icons\n\t\t\t\t\tvar defaultText;\n\t\t\t\t\tvar themeIcon;\n\t\t\t\t\tvar normalIcon;\n\t\t\t\t\tvar innerHtml;\n\t\t\t\t\tvar classes;\n\t\t\t\t\tvar button; // the element\n\n\t\t\t\t\tif (buttonName == 'title') {\n\t\t\t\t\t\tgroupChildren = groupChildren.add($('

 

')); // we always want it to take up height\n\t\t\t\t\t\tisOnlyButtons = false;\n\t\t\t\t\t}\n\t\t\t\t\telse {\n\t\t\t\t\t\tif ((customButtonProps = (options.customButtons || {})[buttonName])) {\n\t\t\t\t\t\t\tbuttonClick = function(ev) {\n\t\t\t\t\t\t\t\tif (customButtonProps.click) {\n\t\t\t\t\t\t\t\t\tcustomButtonProps.click.call(button[0], ev);\n\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t};\n\t\t\t\t\t\t\toverrideText = ''; // icons will override text\n\t\t\t\t\t\t\tdefaultText = customButtonProps.text;\n\t\t\t\t\t\t}\n\t\t\t\t\t\telse if ((viewSpec = calendar.getViewSpec(buttonName))) {\n\t\t\t\t\t\t\tbuttonClick = function() {\n\t\t\t\t\t\t\t\tcalendar.changeView(buttonName);\n\t\t\t\t\t\t\t};\n\t\t\t\t\t\t\tviewsWithButtons.push(buttonName);\n\t\t\t\t\t\t\toverrideText = viewSpec.buttonTextOverride;\n\t\t\t\t\t\t\tdefaultText = viewSpec.buttonTextDefault;\n\t\t\t\t\t\t}\n\t\t\t\t\t\telse if (calendar[buttonName]) { // a calendar method\n\t\t\t\t\t\t\tbuttonClick = function() {\n\t\t\t\t\t\t\t\tcalendar[buttonName]();\n\t\t\t\t\t\t\t};\n\t\t\t\t\t\t\toverrideText = (calendar.overrides.buttonText || {})[buttonName];\n\t\t\t\t\t\t\tdefaultText = options.buttonText[buttonName]; // everything else is considered default\n\t\t\t\t\t\t}\n\n\t\t\t\t\t\tif (buttonClick) {\n\n\t\t\t\t\t\t\tthemeIcon =\n\t\t\t\t\t\t\t\tcustomButtonProps ?\n\t\t\t\t\t\t\t\t\tcustomButtonProps.themeIcon :\n\t\t\t\t\t\t\t\t\toptions.themeButtonIcons[buttonName];\n\n\t\t\t\t\t\t\tnormalIcon =\n\t\t\t\t\t\t\t\tcustomButtonProps ?\n\t\t\t\t\t\t\t\t\tcustomButtonProps.icon :\n\t\t\t\t\t\t\t\t\toptions.buttonIcons[buttonName];\n\n\t\t\t\t\t\t\tif (overrideText) {\n\t\t\t\t\t\t\t\tinnerHtml = htmlEscape(overrideText);\n\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\telse if (themeIcon && options.theme) {\n\t\t\t\t\t\t\t\tinnerHtml = \"\";\n\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\telse if (normalIcon && !options.theme) {\n\t\t\t\t\t\t\t\tinnerHtml = \"\";\n\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\telse {\n\t\t\t\t\t\t\t\tinnerHtml = htmlEscape(defaultText);\n\t\t\t\t\t\t\t}\n\n\t\t\t\t\t\t\tclasses = [\n\t\t\t\t\t\t\t\t'fc-' + buttonName + '-button',\n\t\t\t\t\t\t\t\ttm + '-button',\n\t\t\t\t\t\t\t\ttm + '-state-default'\n\t\t\t\t\t\t\t];\n\n\t\t\t\t\t\t\tbutton = $( // type=\"button\" so that it doesn't submit a form\n\t\t\t\t\t\t\t\t''\n\t\t\t\t\t\t\t\t)\n\t\t\t\t\t\t\t\t.click(function(ev) {\n\t\t\t\t\t\t\t\t\t// don't process clicks for disabled buttons\n\t\t\t\t\t\t\t\t\tif (!button.hasClass(tm + '-state-disabled')) {\n\n\t\t\t\t\t\t\t\t\t\tbuttonClick(ev);\n\n\t\t\t\t\t\t\t\t\t\t// after the click action, if the button becomes the \"active\" tab, or disabled,\n\t\t\t\t\t\t\t\t\t\t// it should never have a hover class, so remove it now.\n\t\t\t\t\t\t\t\t\t\tif (\n\t\t\t\t\t\t\t\t\t\t\tbutton.hasClass(tm + '-state-active') ||\n\t\t\t\t\t\t\t\t\t\t\tbutton.hasClass(tm + '-state-disabled')\n\t\t\t\t\t\t\t\t\t\t) {\n\t\t\t\t\t\t\t\t\t\t\tbutton.removeClass(tm + '-state-hover');\n\t\t\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t\t})\n\t\t\t\t\t\t\t\t.mousedown(function() {\n\t\t\t\t\t\t\t\t\t// the *down* effect (mouse pressed in).\n\t\t\t\t\t\t\t\t\t// only on buttons that are not the \"active\" tab, or disabled\n\t\t\t\t\t\t\t\t\tbutton\n\t\t\t\t\t\t\t\t\t\t.not('.' + tm + '-state-active')\n\t\t\t\t\t\t\t\t\t\t.not('.' + tm + '-state-disabled')\n\t\t\t\t\t\t\t\t\t\t.addClass(tm + '-state-down');\n\t\t\t\t\t\t\t\t})\n\t\t\t\t\t\t\t\t.mouseup(function() {\n\t\t\t\t\t\t\t\t\t// undo the *down* effect\n\t\t\t\t\t\t\t\t\tbutton.removeClass(tm + '-state-down');\n\t\t\t\t\t\t\t\t})\n\t\t\t\t\t\t\t\t.hover(\n\t\t\t\t\t\t\t\t\tfunction() {\n\t\t\t\t\t\t\t\t\t\t// the *hover* effect.\n\t\t\t\t\t\t\t\t\t\t// only on buttons that are not the \"active\" tab, or disabled\n\t\t\t\t\t\t\t\t\t\tbutton\n\t\t\t\t\t\t\t\t\t\t\t.not('.' + tm + '-state-active')\n\t\t\t\t\t\t\t\t\t\t\t.not('.' + tm + '-state-disabled')\n\t\t\t\t\t\t\t\t\t\t\t.addClass(tm + '-state-hover');\n\t\t\t\t\t\t\t\t\t},\n\t\t\t\t\t\t\t\t\tfunction() {\n\t\t\t\t\t\t\t\t\t\t// undo the *hover* effect\n\t\t\t\t\t\t\t\t\t\tbutton\n\t\t\t\t\t\t\t\t\t\t\t.removeClass(tm + '-state-hover')\n\t\t\t\t\t\t\t\t\t\t\t.removeClass(tm + '-state-down'); // if mouseleave happens before mouseup\n\t\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t\t);\n\n\t\t\t\t\t\t\tgroupChildren = groupChildren.add(button);\n\t\t\t\t\t\t}\n\t\t\t\t\t}\n\t\t\t\t});\n\n\t\t\t\tif (isOnlyButtons) {\n\t\t\t\t\tgroupChildren\n\t\t\t\t\t\t.first().addClass(tm + '-corner-left').end()\n\t\t\t\t\t\t.last().addClass(tm + '-corner-right').end();\n\t\t\t\t}\n\n\t\t\t\tif (groupChildren.length > 1) {\n\t\t\t\t\tgroupEl = $('
');\n\t\t\t\t\tif (isOnlyButtons) {\n\t\t\t\t\t\tgroupEl.addClass('fc-button-group');\n\t\t\t\t\t}\n\t\t\t\t\tgroupEl.append(groupChildren);\n\t\t\t\t\tsectionEl.append(groupEl);\n\t\t\t\t}\n\t\t\t\telse {\n\t\t\t\t\tsectionEl.append(groupChildren); // 1 or 0 children\n\t\t\t\t}\n\t\t\t});\n\t\t}\n\n\t\treturn sectionEl;\n\t}\n\t\n\t\n\tfunction updateTitle(text) {\n\t\tif (el) {\n\t\t\tel.find('h2').text(text);\n\t\t}\n\t}\n\t\n\t\n\tfunction activateButton(buttonName) {\n\t\tif (el) {\n\t\t\tel.find('.fc-' + buttonName + '-button')\n\t\t\t\t.addClass(tm + '-state-active');\n\t\t}\n\t}\n\t\n\t\n\tfunction deactivateButton(buttonName) {\n\t\tif (el) {\n\t\t\tel.find('.fc-' + buttonName + '-button')\n\t\t\t\t.removeClass(tm + '-state-active');\n\t\t}\n\t}\n\t\n\t\n\tfunction disableButton(buttonName) {\n\t\tif (el) {\n\t\t\tel.find('.fc-' + buttonName + '-button')\n\t\t\t\t.prop('disabled', true)\n\t\t\t\t.addClass(tm + '-state-disabled');\n\t\t}\n\t}\n\t\n\t\n\tfunction enableButton(buttonName) {\n\t\tif (el) {\n\t\t\tel.find('.fc-' + buttonName + '-button')\n\t\t\t\t.prop('disabled', false)\n\t\t\t\t.removeClass(tm + '-state-disabled');\n\t\t}\n\t}\n\n\n\tfunction getViewsWithButtons() {\n\t\treturn viewsWithButtons;\n\t}\n\n}\n\n;;\n\nFC.sourceNormalizers = [];\nFC.sourceFetchers = [];\n\nvar ajaxDefaults = {\n\tdataType: 'json',\n\tcache: false\n};\n\nvar eventGUID = 1;\n\n\nfunction EventManager() { // assumed to be a calendar\n\tvar t = this;\n\t\n\t\n\t// exports\n\tt.isFetchNeeded = isFetchNeeded;\n\tt.fetchEvents = fetchEvents;\n\tt.fetchEventSources = fetchEventSources;\n\tt.getEventSources = getEventSources;\n\tt.getEventSourceById = getEventSourceById;\n\tt.getEventSourcesByMatchArray = getEventSourcesByMatchArray;\n\tt.getEventSourcesByMatch = getEventSourcesByMatch;\n\tt.addEventSource = addEventSource;\n\tt.removeEventSource = removeEventSource;\n\tt.removeEventSources = removeEventSources;\n\tt.updateEvent = updateEvent;\n\tt.renderEvent = renderEvent;\n\tt.removeEvents = removeEvents;\n\tt.clientEvents = clientEvents;\n\tt.mutateEvent = mutateEvent;\n\tt.normalizeEventDates = normalizeEventDates;\n\tt.normalizeEventTimes = normalizeEventTimes;\n\t\n\t\n\t// imports\n\tvar reportEvents = t.reportEvents;\n\t\n\t\n\t// locals\n\tvar stickySource = { events: [] };\n\tvar sources = [ stickySource ];\n\tvar rangeStart, rangeEnd;\n\tvar pendingSourceCnt = 0; // outstanding fetch requests, max one per source\n\tvar cache = []; // holds events that have already been expanded\n\n\n\t$.each(\n\t\t(t.options.events ? [ t.options.events ] : []).concat(t.options.eventSources || []),\n\t\tfunction(i, sourceInput) {\n\t\t\tvar source = buildEventSource(sourceInput);\n\t\t\tif (source) {\n\t\t\t\tsources.push(source);\n\t\t\t}\n\t\t}\n\t);\n\t\n\t\n\t\n\t/* Fetching\n\t-----------------------------------------------------------------------------*/\n\n\n\t// start and end are assumed to be unzoned\n\tfunction isFetchNeeded(start, end) {\n\t\treturn !rangeStart || // nothing has been fetched yet?\n\t\t\tstart < rangeStart || end > rangeEnd; // is part of the new range outside of the old range?\n\t}\n\t\n\t\n\tfunction fetchEvents(start, end) {\n\t\trangeStart = start;\n\t\trangeEnd = end;\n\t\tfetchEventSources(sources, 'reset');\n\t}\n\n\n\t// expects an array of event source objects (the originals, not copies)\n\t// `specialFetchType` is an optimization parameter that affects purging of the event cache.\n\tfunction fetchEventSources(specificSources, specialFetchType) {\n\t\tvar i, source;\n\n\t\tif (specialFetchType === 'reset') {\n\t\t\tcache = [];\n\t\t}\n\t\telse if (specialFetchType !== 'add') {\n\t\t\tcache = excludeEventsBySources(cache, specificSources);\n\t\t}\n\n\t\tfor (i = 0; i < specificSources.length; i++) {\n\t\t\tsource = specificSources[i];\n\n\t\t\t// already-pending sources have already been accounted for in pendingSourceCnt\n\t\t\tif (source._status !== 'pending') {\n\t\t\t\tpendingSourceCnt++;\n\t\t\t}\n\n\t\t\tsource._fetchId = (source._fetchId || 0) + 1;\n\t\t\tsource._status = 'pending';\n\t\t}\n\n\t\tfor (i = 0; i < specificSources.length; i++) {\n\t\t\tsource = specificSources[i];\n\n\t\t\ttryFetchEventSource(source, source._fetchId);\n\t\t}\n\t}\n\n\n\t// fetches an event source and processes its result ONLY if it is still the current fetch.\n\t// caller is responsible for incrementing pendingSourceCnt first.\n\tfunction tryFetchEventSource(source, fetchId) {\n\t\t_fetchEventSource(source, function(eventInputs) {\n\t\t\tvar isArraySource = $.isArray(source.events);\n\t\t\tvar i, eventInput;\n\t\t\tvar abstractEvent;\n\n\t\t\tif (\n\t\t\t\t// is this the source's most recent fetch?\n\t\t\t\t// if not, rely on an upcoming fetch of this source to decrement pendingSourceCnt\n\t\t\t\tfetchId === source._fetchId &&\n\t\t\t\t// event source no longer valid?\n\t\t\t\tsource._status !== 'rejected'\n\t\t\t) {\n\t\t\t\tsource._status = 'resolved';\n\n\t\t\t\tif (eventInputs) {\n\t\t\t\t\tfor (i = 0; i < eventInputs.length; i++) {\n\t\t\t\t\t\teventInput = eventInputs[i];\n\n\t\t\t\t\t\tif (isArraySource) { // array sources have already been convert to Event Objects\n\t\t\t\t\t\t\tabstractEvent = eventInput;\n\t\t\t\t\t\t}\n\t\t\t\t\t\telse {\n\t\t\t\t\t\t\tabstractEvent = buildEventFromInput(eventInput, source);\n\t\t\t\t\t\t}\n\n\t\t\t\t\t\tif (abstractEvent) { // not false (an invalid event)\n\t\t\t\t\t\t\tcache.push.apply(\n\t\t\t\t\t\t\t\tcache,\n\t\t\t\t\t\t\t\texpandEvent(abstractEvent) // add individual expanded events to the cache\n\t\t\t\t\t\t\t);\n\t\t\t\t\t\t}\n\t\t\t\t\t}\n\t\t\t\t}\n\n\t\t\t\tdecrementPendingSourceCnt();\n\t\t\t}\n\t\t});\n\t}\n\n\n\tfunction rejectEventSource(source) {\n\t\tvar wasPending = source._status === 'pending';\n\n\t\tsource._status = 'rejected';\n\n\t\tif (wasPending) {\n\t\t\tdecrementPendingSourceCnt();\n\t\t}\n\t}\n\n\n\tfunction decrementPendingSourceCnt() {\n\t\tpendingSourceCnt--;\n\t\tif (!pendingSourceCnt) {\n\t\t\treportEvents(cache);\n\t\t}\n\t}\n\t\n\t\n\tfunction _fetchEventSource(source, callback) {\n\t\tvar i;\n\t\tvar fetchers = FC.sourceFetchers;\n\t\tvar res;\n\n\t\tfor (i=0; i eventStart;\n\t}\n\n\n\tt.getEventCache = function() {\n\t\treturn cache;\n\t};\n\n}\n\n\n// hook for external libs to manipulate event properties upon creation.\n// should manipulate the event in-place.\nCalendar.prototype.normalizeEvent = function(event) {\n};\n\n\n// Does the given span (start, end, and other location information)\n// fully contain the other?\nCalendar.prototype.spanContainsSpan = function(outerSpan, innerSpan) {\n\tvar eventStart = outerSpan.start.clone().stripZone();\n\tvar eventEnd = this.getEventEnd(outerSpan).stripZone();\n\n\treturn innerSpan.start >= eventStart && innerSpan.end <= eventEnd;\n};\n\n\n// Returns a list of events that the given event should be compared against when being considered for a move to\n// the specified span. Attached to the Calendar's prototype because EventManager is a mixin for a Calendar.\nCalendar.prototype.getPeerEvents = function(span, event) {\n\tvar cache = this.getEventCache();\n\tvar peerEvents = [];\n\tvar i, otherEvent;\n\n\tfor (i = 0; i < cache.length; i++) {\n\t\totherEvent = cache[i];\n\t\tif (\n\t\t\t!event ||\n\t\t\tevent._id !== otherEvent._id // don't compare the event to itself or other related [repeating] events\n\t\t) {\n\t\t\tpeerEvents.push(otherEvent);\n\t\t}\n\t}\n\n\treturn peerEvents;\n};\n\n\n// updates the \"backup\" properties, which are preserved in order to compute diffs later on.\nfunction backupEventDates(event) {\n\tevent._allDay = event.allDay;\n\tevent._start = event.start.clone();\n\tevent._end = event.end ? event.end.clone() : null;\n}\n\n\n/* Business Hours\n-----------------------------------------------------------------------------------------*/\n\nvar BUSINESS_HOUR_EVENT_DEFAULTS = {\n\tid: '_fcBusinessHours', // will relate events from different calls to expandEvent\n\tstart: '09:00',\n\tend: '17:00',\n\tdow: [ 1, 2, 3, 4, 5 ], // monday - friday\n\trendering: 'inverse-background'\n\t// classNames are defined in businessHoursSegClasses\n};\n\n// Return events objects for business hours within the current view.\n// Abuse of our event system :(\nCalendar.prototype.getCurrentBusinessHourEvents = function(wholeDay) {\n\treturn this.computeBusinessHourEvents(wholeDay, this.options.businessHours);\n};\n\n// Given a raw input value from options, return events objects for business hours within the current view.\nCalendar.prototype.computeBusinessHourEvents = function(wholeDay, input) {\n\tif (input === true) {\n\t\treturn this.expandBusinessHourEvents(wholeDay, [ {} ]);\n\t}\n\telse if ($.isPlainObject(input)) {\n\t\treturn this.expandBusinessHourEvents(wholeDay, [ input ]);\n\t}\n\telse if ($.isArray(input)) {\n\t\treturn this.expandBusinessHourEvents(wholeDay, input, true);\n\t}\n\telse {\n\t\treturn [];\n\t}\n};\n\n// inputs expected to be an array of objects.\n// if ignoreNoDow is true, will ignore entries that don't specify a day-of-week (dow) key.\nCalendar.prototype.expandBusinessHourEvents = function(wholeDay, inputs, ignoreNoDow) {\n\tvar view = this.getView();\n\tvar events = [];\n\tvar i, input;\n\n\tfor (i = 0; i < inputs.length; i++) {\n\t\tinput = inputs[i];\n\n\t\tif (ignoreNoDow && !input.dow) {\n\t\t\tcontinue;\n\t\t}\n\n\t\t// give defaults. will make a copy\n\t\tinput = $.extend({}, BUSINESS_HOUR_EVENT_DEFAULTS, input);\n\n\t\t// if a whole-day series is requested, clear the start/end times\n\t\tif (wholeDay) {\n\t\t\tinput.start = null;\n\t\t\tinput.end = null;\n\t\t}\n\n\t\tevents.push.apply(events, // append\n\t\t\tthis.expandEvent(\n\t\t\t\tthis.buildEventFromInput(input),\n\t\t\t\tview.start,\n\t\t\t\tview.end\n\t\t\t)\n\t\t);\n\t}\n\n\treturn events;\n};\n\n;;\n\n/* An abstract class for the \"basic\" views, as well as month view. Renders one or more rows of day cells.\n----------------------------------------------------------------------------------------------------------------------*/\n// It is a manager for a DayGrid subcomponent, which does most of the heavy lifting.\n// It is responsible for managing width/height.\n\nvar BasicView = FC.BasicView = View.extend({\n\n\tscroller: null,\n\n\tdayGridClass: DayGrid, // class the dayGrid will be instantiated from (overridable by subclasses)\n\tdayGrid: null, // the main subcomponent that does most of the heavy lifting\n\n\tdayNumbersVisible: false, // display day numbers on each day cell?\n\tweekNumbersVisible: false, // display week numbers along the side?\n\n\tweekNumberWidth: null, // width of all the week-number cells running down the side\n\n\theadContainerEl: null, // div that hold's the dayGrid's rendered date header\n\theadRowEl: null, // the fake row element of the day-of-week header\n\n\n\tinitialize: function() {\n\t\tthis.dayGrid = this.instantiateDayGrid();\n\n\t\tthis.scroller = new Scroller({\n\t\t\toverflowX: 'hidden',\n\t\t\toverflowY: 'auto'\n\t\t});\n\t},\n\n\n\t// Generates the DayGrid object this view needs. Draws from this.dayGridClass\n\tinstantiateDayGrid: function() {\n\t\t// generate a subclass on the fly with BasicView-specific behavior\n\t\t// TODO: cache this subclass\n\t\tvar subclass = this.dayGridClass.extend(basicDayGridMethods);\n\n\t\treturn new subclass(this);\n\t},\n\n\n\t// Sets the display range and computes all necessary dates\n\tsetRange: function(range) {\n\t\tView.prototype.setRange.call(this, range); // call the super-method\n\n\t\tthis.dayGrid.breakOnWeeks = /year|month|week/.test(this.intervalUnit); // do before setRange\n\t\tthis.dayGrid.setRange(range);\n\t},\n\n\n\t// Compute the value to feed into setRange. Overrides superclass.\n\tcomputeRange: function(date) {\n\t\tvar range = View.prototype.computeRange.call(this, date); // get value from the super-method\n\n\t\t// year and month views should be aligned with weeks. this is already done for week\n\t\tif (/year|month/.test(range.intervalUnit)) {\n\t\t\trange.start.startOf('week');\n\t\t\trange.start = this.skipHiddenDays(range.start);\n\n\t\t\t// make end-of-week if not already\n\t\t\tif (range.end.weekday()) {\n\t\t\t\trange.end.add(1, 'week').startOf('week');\n\t\t\t\trange.end = this.skipHiddenDays(range.end, -1, true); // exclusively move backwards\n\t\t\t}\n\t\t}\n\n\t\treturn range;\n\t},\n\n\n\t// Renders the view into `this.el`, which should already be assigned\n\trenderDates: function() {\n\n\t\tthis.dayNumbersVisible = this.dayGrid.rowCnt > 1; // TODO: make grid responsible\n\t\tthis.weekNumbersVisible = this.opt('weekNumbers');\n\t\tthis.dayGrid.numbersVisible = this.dayNumbersVisible || this.weekNumbersVisible;\n\n\t\tthis.el.addClass('fc-basic-view').html(this.renderSkeletonHtml());\n\t\tthis.renderHead();\n\n\t\tthis.scroller.render();\n\t\tvar dayGridContainerEl = this.scroller.el.addClass('fc-day-grid-container');\n\t\tvar dayGridEl = $('
').appendTo(dayGridContainerEl);\n\t\tthis.el.find('.fc-body > tr > td').append(dayGridContainerEl);\n\n\t\tthis.dayGrid.setElement(dayGridEl);\n\t\tthis.dayGrid.renderDates(this.hasRigidRows());\n\t},\n\n\n\t// render the day-of-week headers\n\trenderHead: function() {\n\t\tthis.headContainerEl =\n\t\t\tthis.el.find('.fc-head-container')\n\t\t\t\t.html(this.dayGrid.renderHeadHtml());\n\t\tthis.headRowEl = this.headContainerEl.find('.fc-row');\n\t},\n\n\n\t// Unrenders the content of the view. Since we haven't separated skeleton rendering from date rendering,\n\t// always completely kill the dayGrid's rendering.\n\tunrenderDates: function() {\n\t\tthis.dayGrid.unrenderDates();\n\t\tthis.dayGrid.removeElement();\n\t\tthis.scroller.destroy();\n\t},\n\n\n\trenderBusinessHours: function() {\n\t\tthis.dayGrid.renderBusinessHours();\n\t},\n\n\n\tunrenderBusinessHours: function() {\n\t\tthis.dayGrid.unrenderBusinessHours();\n\t},\n\n\n\t// Builds the HTML skeleton for the view.\n\t// The day-grid component will render inside of a container defined by this HTML.\n\trenderSkeletonHtml: function() {\n\t\treturn '' +\n\t\t\t'' +\n\t\t\t\t'' +\n\t\t\t\t\t'' +\n\t\t\t\t\t\t'' +\n\t\t\t\t\t'' +\n\t\t\t\t'' +\n\t\t\t\t'' +\n\t\t\t\t\t'' +\n\t\t\t\t\t\t'' +\n\t\t\t\t\t'' +\n\t\t\t\t'' +\n\t\t\t'
';\n\t},\n\n\n\t// Generates an HTML attribute string for setting the width of the week number column, if it is known\n\tweekNumberStyleAttr: function() {\n\t\tif (this.weekNumberWidth !== null) {\n\t\t\treturn 'style=\"width:' + this.weekNumberWidth + 'px\"';\n\t\t}\n\t\treturn '';\n\t},\n\n\n\t// Determines whether each row should have a constant height\n\thasRigidRows: function() {\n\t\tvar eventLimit = this.opt('eventLimit');\n\t\treturn eventLimit && typeof eventLimit !== 'number';\n\t},\n\n\n\t/* Dimensions\n\t------------------------------------------------------------------------------------------------------------------*/\n\n\n\t// Refreshes the horizontal dimensions of the view\n\tupdateWidth: function() {\n\t\tif (this.weekNumbersVisible) {\n\t\t\t// Make sure all week number cells running down the side have the same width.\n\t\t\t// Record the width for cells created later.\n\t\t\tthis.weekNumberWidth = matchCellWidths(\n\t\t\t\tthis.el.find('.fc-week-number')\n\t\t\t);\n\t\t}\n\t},\n\n\n\t// Adjusts the vertical dimensions of the view to the specified values\n\tsetHeight: function(totalHeight, isAuto) {\n\t\tvar eventLimit = this.opt('eventLimit');\n\t\tvar scrollerHeight;\n\t\tvar scrollbarWidths;\n\n\t\t// reset all heights to be natural\n\t\tthis.scroller.clear();\n\t\tuncompensateScroll(this.headRowEl);\n\n\t\tthis.dayGrid.removeSegPopover(); // kill the \"more\" popover if displayed\n\n\t\t// is the event limit a constant level number?\n\t\tif (eventLimit && typeof eventLimit === 'number') {\n\t\t\tthis.dayGrid.limitRows(eventLimit); // limit the levels first so the height can redistribute after\n\t\t}\n\n\t\t// distribute the height to the rows\n\t\t// (totalHeight is a \"recommended\" value if isAuto)\n\t\tscrollerHeight = this.computeScrollerHeight(totalHeight);\n\t\tthis.setGridHeight(scrollerHeight, isAuto);\n\n\t\t// is the event limit dynamically calculated?\n\t\tif (eventLimit && typeof eventLimit !== 'number') {\n\t\t\tthis.dayGrid.limitRows(eventLimit); // limit the levels after the grid's row heights have been set\n\t\t}\n\n\t\tif (!isAuto) { // should we force dimensions of the scroll container?\n\n\t\t\tthis.scroller.setHeight(scrollerHeight);\n\t\t\tscrollbarWidths = this.scroller.getScrollbarWidths();\n\n\t\t\tif (scrollbarWidths.left || scrollbarWidths.right) { // using scrollbars?\n\n\t\t\t\tcompensateScroll(this.headRowEl, scrollbarWidths);\n\n\t\t\t\t// doing the scrollbar compensation might have created text overflow which created more height. redo\n\t\t\t\tscrollerHeight = this.computeScrollerHeight(totalHeight);\n\t\t\t\tthis.scroller.setHeight(scrollerHeight);\n\t\t\t}\n\n\t\t\t// guarantees the same scrollbar widths\n\t\t\tthis.scroller.lockOverflow(scrollbarWidths);\n\t\t}\n\t},\n\n\n\t// given a desired total height of the view, returns what the height of the scroller should be\n\tcomputeScrollerHeight: function(totalHeight) {\n\t\treturn totalHeight -\n\t\t\tsubtractInnerElHeight(this.el, this.scroller.el); // everything that's NOT the scroller\n\t},\n\n\n\t// Sets the height of just the DayGrid component in this view\n\tsetGridHeight: function(height, isAuto) {\n\t\tif (isAuto) {\n\t\t\tundistributeHeight(this.dayGrid.rowEls); // let the rows be their natural height with no expanding\n\t\t}\n\t\telse {\n\t\t\tdistributeHeight(this.dayGrid.rowEls, height, true); // true = compensate for height-hogging rows\n\t\t}\n\t},\n\n\n\t/* Scroll\n\t------------------------------------------------------------------------------------------------------------------*/\n\n\n\tqueryScroll: function() {\n\t\treturn this.scroller.getScrollTop();\n\t},\n\n\n\tsetScroll: function(top) {\n\t\tthis.scroller.setScrollTop(top);\n\t},\n\n\n\t/* Hit Areas\n\t------------------------------------------------------------------------------------------------------------------*/\n\t// forward all hit-related method calls to dayGrid\n\n\n\tprepareHits: function() {\n\t\tthis.dayGrid.prepareHits();\n\t},\n\n\n\treleaseHits: function() {\n\t\tthis.dayGrid.releaseHits();\n\t},\n\n\n\tqueryHit: function(left, top) {\n\t\treturn this.dayGrid.queryHit(left, top);\n\t},\n\n\n\tgetHitSpan: function(hit) {\n\t\treturn this.dayGrid.getHitSpan(hit);\n\t},\n\n\n\tgetHitEl: function(hit) {\n\t\treturn this.dayGrid.getHitEl(hit);\n\t},\n\n\n\t/* Events\n\t------------------------------------------------------------------------------------------------------------------*/\n\n\n\t// Renders the given events onto the view and populates the segments array\n\trenderEvents: function(events) {\n\t\tthis.dayGrid.renderEvents(events);\n\n\t\tthis.updateHeight(); // must compensate for events that overflow the row\n\t},\n\n\n\t// Retrieves all segment objects that are rendered in the view\n\tgetEventSegs: function() {\n\t\treturn this.dayGrid.getEventSegs();\n\t},\n\n\n\t// Unrenders all event elements and clears internal segment data\n\tunrenderEvents: function() {\n\t\tthis.dayGrid.unrenderEvents();\n\n\t\t// we DON'T need to call updateHeight() because:\n\t\t// A) a renderEvents() call always happens after this, which will eventually call updateHeight()\n\t\t// B) in IE8, this causes a flash whenever events are rerendered\n\t},\n\n\n\t/* Dragging (for both events and external elements)\n\t------------------------------------------------------------------------------------------------------------------*/\n\n\n\t// A returned value of `true` signals that a mock \"helper\" event has been rendered.\n\trenderDrag: function(dropLocation, seg) {\n\t\treturn this.dayGrid.renderDrag(dropLocation, seg);\n\t},\n\n\n\tunrenderDrag: function() {\n\t\tthis.dayGrid.unrenderDrag();\n\t},\n\n\n\t/* Selection\n\t------------------------------------------------------------------------------------------------------------------*/\n\n\n\t// Renders a visual indication of a selection\n\trenderSelection: function(span) {\n\t\tthis.dayGrid.renderSelection(span);\n\t},\n\n\n\t// Unrenders a visual indications of a selection\n\tunrenderSelection: function() {\n\t\tthis.dayGrid.unrenderSelection();\n\t}\n\n});\n\n\n// Methods that will customize the rendering behavior of the BasicView's dayGrid\nvar basicDayGridMethods = {\n\n\n\t// Generates the HTML that will go before the day-of week header cells\n\trenderHeadIntroHtml: function() {\n\t\tvar view = this.view;\n\n\t\tif (view.weekNumbersVisible) {\n\t\t\treturn '' +\n\t\t\t\t'' +\n\t\t\t\t\t'' + // needed for matchCellWidths\n\t\t\t\t\t\thtmlEscape(view.opt('weekNumberTitle')) +\n\t\t\t\t\t'' +\n\t\t\t\t'';\n\t\t}\n\n\t\treturn '';\n\t},\n\n\n\t// Generates the HTML that will go before content-skeleton cells that display the day/week numbers\n\trenderNumberIntroHtml: function(row) {\n\t\tvar view = this.view;\n\n\t\tif (view.weekNumbersVisible) {\n\t\t\treturn '' +\n\t\t\t\t'' +\n\t\t\t\t\t'' + // needed for matchCellWidths\n\t\t\t\t\t\tthis.getCellDate(row, 0).format('w') +\n\t\t\t\t\t'' +\n\t\t\t\t'';\n\t\t}\n\n\t\treturn '';\n\t},\n\n\n\t// Generates the HTML that goes before the day bg cells for each day-row\n\trenderBgIntroHtml: function() {\n\t\tvar view = this.view;\n\n\t\tif (view.weekNumbersVisible) {\n\t\t\treturn '';\n\t\t}\n\n\t\treturn '';\n\t},\n\n\n\t// Generates the HTML that goes before every other type of row generated by DayGrid.\n\t// Affects helper-skeleton and highlight-skeleton rows.\n\trenderIntroHtml: function() {\n\t\tvar view = this.view;\n\n\t\tif (view.weekNumbersVisible) {\n\t\t\treturn '';\n\t\t}\n\n\t\treturn '';\n\t}\n\n};\n\n;;\n\n/* A month view with day cells running in rows (one-per-week) and columns\n----------------------------------------------------------------------------------------------------------------------*/\n\nvar MonthView = FC.MonthView = BasicView.extend({\n\n\t// Produces information about what range to display\n\tcomputeRange: function(date) {\n\t\tvar range = BasicView.prototype.computeRange.call(this, date); // get value from super-method\n\t\tvar rowCnt;\n\n\t\t// ensure 6 weeks\n\t\tif (this.isFixedWeeks()) {\n\t\t\trowCnt = Math.ceil(range.end.diff(range.start, 'weeks', true)); // could be partial weeks due to hiddenDays\n\t\t\trange.end.add(6 - rowCnt, 'weeks');\n\t\t}\n\n\t\treturn range;\n\t},\n\n\n\t// Overrides the default BasicView behavior to have special multi-week auto-height logic\n\tsetGridHeight: function(height, isAuto) {\n\n\t\tisAuto = isAuto || this.opt('weekMode') === 'variable'; // LEGACY: weekMode is deprecated\n\n\t\t// if auto, make the height of each row the height that it would be if there were 6 weeks\n\t\tif (isAuto) {\n\t\t\theight *= this.rowCnt / 6;\n\t\t}\n\n\t\tdistributeHeight(this.dayGrid.rowEls, height, !isAuto); // if auto, don't compensate for height-hogging rows\n\t},\n\n\n\tisFixedWeeks: function() {\n\t\tvar weekMode = this.opt('weekMode'); // LEGACY: weekMode is deprecated\n\t\tif (weekMode) {\n\t\t\treturn weekMode === 'fixed'; // if any other type of weekMode, assume NOT fixed\n\t\t}\n\n\t\treturn this.opt('fixedWeekCount');\n\t}\n\n});\n\n;;\n\nfcViews.basic = {\n\t'class': BasicView\n};\n\nfcViews.basicDay = {\n\ttype: 'basic',\n\tduration: { days: 1 }\n};\n\nfcViews.basicWeek = {\n\ttype: 'basic',\n\tduration: { weeks: 1 }\n};\n\nfcViews.month = {\n\t'class': MonthView,\n\tduration: { months: 1 }, // important for prev/next\n\tdefaults: {\n\t\tfixedWeekCount: true\n\t}\n};\n;;\n\n/* An abstract class for all agenda-related views. Displays one more columns with time slots running vertically.\n----------------------------------------------------------------------------------------------------------------------*/\n// Is a manager for the TimeGrid subcomponent and possibly the DayGrid subcomponent (if allDaySlot is on).\n// Responsible for managing width/height.\n\nvar AgendaView = FC.AgendaView = View.extend({\n\n\tscroller: null,\n\n\ttimeGridClass: TimeGrid, // class used to instantiate the timeGrid. subclasses can override\n\ttimeGrid: null, // the main time-grid subcomponent of this view\n\n\tdayGridClass: DayGrid, // class used to instantiate the dayGrid. subclasses can override\n\tdayGrid: null, // the \"all-day\" subcomponent. if all-day is turned off, this will be null\n\n\taxisWidth: null, // the width of the time axis running down the side\n\n\theadContainerEl: null, // div that hold's the timeGrid's rendered date header\n\tnoScrollRowEls: null, // set of fake row elements that must compensate when scroller has scrollbars\n\n\t// when the time-grid isn't tall enough to occupy the given height, we render an
underneath\n\tbottomRuleEl: null,\n\n\n\tinitialize: function() {\n\t\tthis.timeGrid = this.instantiateTimeGrid();\n\n\t\tif (this.opt('allDaySlot')) { // should we display the \"all-day\" area?\n\t\t\tthis.dayGrid = this.instantiateDayGrid(); // the all-day subcomponent of this view\n\t\t}\n\n\t\tthis.scroller = new Scroller({\n\t\t\toverflowX: 'hidden',\n\t\t\toverflowY: 'auto'\n\t\t});\n\t},\n\n\n\t// Instantiates the TimeGrid object this view needs. Draws from this.timeGridClass\n\tinstantiateTimeGrid: function() {\n\t\tvar subclass = this.timeGridClass.extend(agendaTimeGridMethods);\n\n\t\treturn new subclass(this);\n\t},\n\n\n\t// Instantiates the DayGrid object this view might need. Draws from this.dayGridClass\n\tinstantiateDayGrid: function() {\n\t\tvar subclass = this.dayGridClass.extend(agendaDayGridMethods);\n\n\t\treturn new subclass(this);\n\t},\n\n\n\t/* Rendering\n\t------------------------------------------------------------------------------------------------------------------*/\n\n\n\t// Sets the display range and computes all necessary dates\n\tsetRange: function(range) {\n\t\tView.prototype.setRange.call(this, range); // call the super-method\n\n\t\tthis.timeGrid.setRange(range);\n\t\tif (this.dayGrid) {\n\t\t\tthis.dayGrid.setRange(range);\n\t\t}\n\t},\n\n\n\t// Renders the view into `this.el`, which has already been assigned\n\trenderDates: function() {\n\n\t\tthis.el.addClass('fc-agenda-view').html(this.renderSkeletonHtml());\n\t\tthis.renderHead();\n\n\t\tthis.scroller.render();\n\t\tvar timeGridWrapEl = this.scroller.el.addClass('fc-time-grid-container');\n\t\tvar timeGridEl = $('
').appendTo(timeGridWrapEl);\n\t\tthis.el.find('.fc-body > tr > td').append(timeGridWrapEl);\n\n\t\tthis.timeGrid.setElement(timeGridEl);\n\t\tthis.timeGrid.renderDates();\n\n\t\t// the
that sometimes displays under the time-grid\n\t\tthis.bottomRuleEl = $('
')\n\t\t\t.appendTo(this.timeGrid.el); // inject it into the time-grid\n\n\t\tif (this.dayGrid) {\n\t\t\tthis.dayGrid.setElement(this.el.find('.fc-day-grid'));\n\t\t\tthis.dayGrid.renderDates();\n\n\t\t\t// have the day-grid extend it's coordinate area over the
dividing the two grids\n\t\t\tthis.dayGrid.bottomCoordPadding = this.dayGrid.el.next('hr').outerHeight();\n\t\t}\n\n\t\tthis.noScrollRowEls = this.el.find('.fc-row:not(.fc-scroller *)'); // fake rows not within the scroller\n\t},\n\n\n\t// render the day-of-week headers\n\trenderHead: function() {\n\t\tthis.headContainerEl =\n\t\t\tthis.el.find('.fc-head-container')\n\t\t\t\t.html(this.timeGrid.renderHeadHtml());\n\t},\n\n\n\t// Unrenders the content of the view. Since we haven't separated skeleton rendering from date rendering,\n\t// always completely kill each grid's rendering.\n\tunrenderDates: function() {\n\t\tthis.timeGrid.unrenderDates();\n\t\tthis.timeGrid.removeElement();\n\n\t\tif (this.dayGrid) {\n\t\t\tthis.dayGrid.unrenderDates();\n\t\t\tthis.dayGrid.removeElement();\n\t\t}\n\n\t\tthis.scroller.destroy();\n\t},\n\n\n\t// Builds the HTML skeleton for the view.\n\t// The day-grid and time-grid components will render inside containers defined by this HTML.\n\trenderSkeletonHtml: function() {\n\t\treturn '' +\n\t\t\t'' +\n\t\t\t\t'' +\n\t\t\t\t\t'' +\n\t\t\t\t\t\t'' +\n\t\t\t\t\t'' +\n\t\t\t\t'' +\n\t\t\t\t'' +\n\t\t\t\t\t'' +\n\t\t\t\t\t\t'' +\n\t\t\t\t\t'' +\n\t\t\t\t'' +\n\t\t\t'
' +\n\t\t\t\t\t\t\t(this.dayGrid ?\n\t\t\t\t\t\t\t\t'
' +\n\t\t\t\t\t\t\t\t'
' :\n\t\t\t\t\t\t\t\t''\n\t\t\t\t\t\t\t\t) +\n\t\t\t\t\t\t'
';\n\t},\n\n\n\t// Generates an HTML attribute string for setting the width of the axis, if it is known\n\taxisStyleAttr: function() {\n\t\tif (this.axisWidth !== null) {\n\t\t\t return 'style=\"width:' + this.axisWidth + 'px\"';\n\t\t}\n\t\treturn '';\n\t},\n\n\n\t/* Business Hours\n\t------------------------------------------------------------------------------------------------------------------*/\n\n\n\trenderBusinessHours: function() {\n\t\tthis.timeGrid.renderBusinessHours();\n\n\t\tif (this.dayGrid) {\n\t\t\tthis.dayGrid.renderBusinessHours();\n\t\t}\n\t},\n\n\n\tunrenderBusinessHours: function() {\n\t\tthis.timeGrid.unrenderBusinessHours();\n\n\t\tif (this.dayGrid) {\n\t\t\tthis.dayGrid.unrenderBusinessHours();\n\t\t}\n\t},\n\n\n\t/* Now Indicator\n\t------------------------------------------------------------------------------------------------------------------*/\n\n\n\tgetNowIndicatorUnit: function() {\n\t\treturn this.timeGrid.getNowIndicatorUnit();\n\t},\n\n\n\trenderNowIndicator: function(date) {\n\t\tthis.timeGrid.renderNowIndicator(date);\n\t},\n\n\n\tunrenderNowIndicator: function() {\n\t\tthis.timeGrid.unrenderNowIndicator();\n\t},\n\n\n\t/* Dimensions\n\t------------------------------------------------------------------------------------------------------------------*/\n\n\n\tupdateSize: function(isResize) {\n\t\tthis.timeGrid.updateSize(isResize);\n\n\t\tView.prototype.updateSize.call(this, isResize); // call the super-method\n\t},\n\n\n\t// Refreshes the horizontal dimensions of the view\n\tupdateWidth: function() {\n\t\t// make all axis cells line up, and record the width so newly created axis cells will have it\n\t\tthis.axisWidth = matchCellWidths(this.el.find('.fc-axis'));\n\t},\n\n\n\t// Adjusts the vertical dimensions of the view to the specified values\n\tsetHeight: function(totalHeight, isAuto) {\n\t\tvar eventLimit;\n\t\tvar scrollerHeight;\n\t\tvar scrollbarWidths;\n\n\t\t// reset all dimensions back to the original state\n\t\tthis.bottomRuleEl.hide(); // .show() will be called later if this
is necessary\n\t\tthis.scroller.clear(); // sets height to 'auto' and clears overflow\n\t\tuncompensateScroll(this.noScrollRowEls);\n\n\t\t// limit number of events in the all-day area\n\t\tif (this.dayGrid) {\n\t\t\tthis.dayGrid.removeSegPopover(); // kill the \"more\" popover if displayed\n\n\t\t\teventLimit = this.opt('eventLimit');\n\t\t\tif (eventLimit && typeof eventLimit !== 'number') {\n\t\t\t\teventLimit = AGENDA_ALL_DAY_EVENT_LIMIT; // make sure \"auto\" goes to a real number\n\t\t\t}\n\t\t\tif (eventLimit) {\n\t\t\t\tthis.dayGrid.limitRows(eventLimit);\n\t\t\t}\n\t\t}\n\n\t\tif (!isAuto) { // should we force dimensions of the scroll container?\n\n\t\t\tscrollerHeight = this.computeScrollerHeight(totalHeight);\n\t\t\tthis.scroller.setHeight(scrollerHeight);\n\t\t\tscrollbarWidths = this.scroller.getScrollbarWidths();\n\n\t\t\tif (scrollbarWidths.left || scrollbarWidths.right) { // using scrollbars?\n\n\t\t\t\t// make the all-day and header rows lines up\n\t\t\t\tcompensateScroll(this.noScrollRowEls, scrollbarWidths);\n\n\t\t\t\t// the scrollbar compensation might have changed text flow, which might affect height, so recalculate\n\t\t\t\t// and reapply the desired height to the scroller.\n\t\t\t\tscrollerHeight = this.computeScrollerHeight(totalHeight);\n\t\t\t\tthis.scroller.setHeight(scrollerHeight);\n\t\t\t}\n\n\t\t\t// guarantees the same scrollbar widths\n\t\t\tthis.scroller.lockOverflow(scrollbarWidths);\n\n\t\t\t// if there's any space below the slats, show the horizontal rule.\n\t\t\t// this won't cause any new overflow, because lockOverflow already called.\n\t\t\tif (this.timeGrid.getTotalSlatHeight() < scrollerHeight) {\n\t\t\t\tthis.bottomRuleEl.show();\n\t\t\t}\n\t\t}\n\t},\n\n\n\t// given a desired total height of the view, returns what the height of the scroller should be\n\tcomputeScrollerHeight: function(totalHeight) {\n\t\treturn totalHeight -\n\t\t\tsubtractInnerElHeight(this.el, this.scroller.el); // everything that's NOT the scroller\n\t},\n\n\n\t/* Scroll\n\t------------------------------------------------------------------------------------------------------------------*/\n\n\n\t// Computes the initial pre-configured scroll state prior to allowing the user to change it\n\tcomputeInitialScroll: function() {\n\t\tvar scrollTime = moment.duration(this.opt('scrollTime'));\n\t\tvar top = this.timeGrid.computeTimeTop(scrollTime);\n\n\t\t// zoom can give weird floating-point values. rather scroll a little bit further\n\t\ttop = Math.ceil(top);\n\n\t\tif (top) {\n\t\t\ttop++; // to overcome top border that slots beyond the first have. looks better\n\t\t}\n\n\t\treturn top;\n\t},\n\n\n\tqueryScroll: function() {\n\t\treturn this.scroller.getScrollTop();\n\t},\n\n\n\tsetScroll: function(top) {\n\t\tthis.scroller.setScrollTop(top);\n\t},\n\n\n\t/* Hit Areas\n\t------------------------------------------------------------------------------------------------------------------*/\n\t// forward all hit-related method calls to the grids (dayGrid might not be defined)\n\n\n\tprepareHits: function() {\n\t\tthis.timeGrid.prepareHits();\n\t\tif (this.dayGrid) {\n\t\t\tthis.dayGrid.prepareHits();\n\t\t}\n\t},\n\n\n\treleaseHits: function() {\n\t\tthis.timeGrid.releaseHits();\n\t\tif (this.dayGrid) {\n\t\t\tthis.dayGrid.releaseHits();\n\t\t}\n\t},\n\n\n\tqueryHit: function(left, top) {\n\t\tvar hit = this.timeGrid.queryHit(left, top);\n\n\t\tif (!hit && this.dayGrid) {\n\t\t\thit = this.dayGrid.queryHit(left, top);\n\t\t}\n\n\t\treturn hit;\n\t},\n\n\n\tgetHitSpan: function(hit) {\n\t\t// TODO: hit.component is set as a hack to identify where the hit came from\n\t\treturn hit.component.getHitSpan(hit);\n\t},\n\n\n\tgetHitEl: function(hit) {\n\t\t// TODO: hit.component is set as a hack to identify where the hit came from\n\t\treturn hit.component.getHitEl(hit);\n\t},\n\n\n\t/* Events\n\t------------------------------------------------------------------------------------------------------------------*/\n\n\n\t// Renders events onto the view and populates the View's segment array\n\trenderEvents: function(events) {\n\t\tvar dayEvents = [];\n\t\tvar timedEvents = [];\n\t\tvar daySegs = [];\n\t\tvar timedSegs;\n\t\tvar i;\n\n\t\t// separate the events into all-day and timed\n\t\tfor (i = 0; i < events.length; i++) {\n\t\t\tif (events[i].allDay) {\n\t\t\t\tdayEvents.push(events[i]);\n\t\t\t}\n\t\t\telse {\n\t\t\t\ttimedEvents.push(events[i]);\n\t\t\t}\n\t\t}\n\n\t\t// render the events in the subcomponents\n\t\ttimedSegs = this.timeGrid.renderEvents(timedEvents);\n\t\tif (this.dayGrid) {\n\t\t\tdaySegs = this.dayGrid.renderEvents(dayEvents);\n\t\t}\n\n\t\t// the all-day area is flexible and might have a lot of events, so shift the height\n\t\tthis.updateHeight();\n\t},\n\n\n\t// Retrieves all segment objects that are rendered in the view\n\tgetEventSegs: function() {\n\t\treturn this.timeGrid.getEventSegs().concat(\n\t\t\tthis.dayGrid ? this.dayGrid.getEventSegs() : []\n\t\t);\n\t},\n\n\n\t// Unrenders all event elements and clears internal segment data\n\tunrenderEvents: function() {\n\n\t\t// unrender the events in the subcomponents\n\t\tthis.timeGrid.unrenderEvents();\n\t\tif (this.dayGrid) {\n\t\t\tthis.dayGrid.unrenderEvents();\n\t\t}\n\n\t\t// we DON'T need to call updateHeight() because:\n\t\t// A) a renderEvents() call always happens after this, which will eventually call updateHeight()\n\t\t// B) in IE8, this causes a flash whenever events are rerendered\n\t},\n\n\n\t/* Dragging (for events and external elements)\n\t------------------------------------------------------------------------------------------------------------------*/\n\n\n\t// A returned value of `true` signals that a mock \"helper\" event has been rendered.\n\trenderDrag: function(dropLocation, seg) {\n\t\tif (dropLocation.start.hasTime()) {\n\t\t\treturn this.timeGrid.renderDrag(dropLocation, seg);\n\t\t}\n\t\telse if (this.dayGrid) {\n\t\t\treturn this.dayGrid.renderDrag(dropLocation, seg);\n\t\t}\n\t},\n\n\n\tunrenderDrag: function() {\n\t\tthis.timeGrid.unrenderDrag();\n\t\tif (this.dayGrid) {\n\t\t\tthis.dayGrid.unrenderDrag();\n\t\t}\n\t},\n\n\n\t/* Selection\n\t------------------------------------------------------------------------------------------------------------------*/\n\n\n\t// Renders a visual indication of a selection\n\trenderSelection: function(span) {\n\t\tif (span.start.hasTime() || span.end.hasTime()) {\n\t\t\tthis.timeGrid.renderSelection(span);\n\t\t}\n\t\telse if (this.dayGrid) {\n\t\t\tthis.dayGrid.renderSelection(span);\n\t\t}\n\t},\n\n\n\t// Unrenders a visual indications of a selection\n\tunrenderSelection: function() {\n\t\tthis.timeGrid.unrenderSelection();\n\t\tif (this.dayGrid) {\n\t\t\tthis.dayGrid.unrenderSelection();\n\t\t}\n\t}\n\n});\n\n\n// Methods that will customize the rendering behavior of the AgendaView's timeGrid\n// TODO: move into TimeGrid\nvar agendaTimeGridMethods = {\n\n\n\t// Generates the HTML that will go before the day-of week header cells\n\trenderHeadIntroHtml: function() {\n\t\tvar view = this.view;\n\t\tvar weekText;\n\n\t\tif (view.opt('weekNumbers')) {\n\t\t\tweekText = this.start.format(view.opt('smallWeekFormat'));\n\n\t\t\treturn '' +\n\t\t\t\t'' +\n\t\t\t\t\t'' + // needed for matchCellWidths\n\t\t\t\t\t\thtmlEscape(weekText) +\n\t\t\t\t\t'' +\n\t\t\t\t'';\n\t\t}\n\t\telse {\n\t\t\treturn '';\n\t\t}\n\t},\n\n\n\t// Generates the HTML that goes before the bg of the TimeGrid slot area. Long vertical column.\n\trenderBgIntroHtml: function() {\n\t\tvar view = this.view;\n\n\t\treturn '';\n\t},\n\n\n\t// Generates the HTML that goes before all other types of cells.\n\t// Affects content-skeleton, helper-skeleton, highlight-skeleton for both the time-grid and day-grid.\n\trenderIntroHtml: function() {\n\t\tvar view = this.view;\n\n\t\treturn '';\n\t}\n\n};\n\n\n// Methods that will customize the rendering behavior of the AgendaView's dayGrid\nvar agendaDayGridMethods = {\n\n\n\t// Generates the HTML that goes before the all-day cells\n\trenderBgIntroHtml: function() {\n\t\tvar view = this.view;\n\n\t\treturn '' +\n\t\t\t'' +\n\t\t\t\t'' + // needed for matchCellWidths\n\t\t\t\t\t(view.opt('allDayHtml') || htmlEscape(view.opt('allDayText'))) +\n\t\t\t\t'' +\n\t\t\t'';\n\t},\n\n\n\t// Generates the HTML that goes before all other types of cells.\n\t// Affects content-skeleton, helper-skeleton, highlight-skeleton for both the time-grid and day-grid.\n\trenderIntroHtml: function() {\n\t\tvar view = this.view;\n\n\t\treturn '';\n\t}\n\n};\n\n;;\n\nvar AGENDA_ALL_DAY_EVENT_LIMIT = 5;\n\n// potential nice values for the slot-duration and interval-duration\n// from largest to smallest\nvar AGENDA_STOCK_SUB_DURATIONS = [\n\t{ hours: 1 },\n\t{ minutes: 30 },\n\t{ minutes: 15 },\n\t{ seconds: 30 },\n\t{ seconds: 15 }\n];\n\nfcViews.agenda = {\n\t'class': AgendaView,\n\tdefaults: {\n\t\tallDaySlot: true,\n\t\tallDayText: 'all-day',\n\t\tslotDuration: '00:30:00',\n\t\tminTime: '00:00:00',\n\t\tmaxTime: '24:00:00',\n\t\tslotEventOverlap: true // a bad name. confused with overlap/constraint system\n\t}\n};\n\nfcViews.agendaDay = {\n\ttype: 'agenda',\n\tduration: { days: 1 }\n};\n\nfcViews.agendaWeek = {\n\ttype: 'agenda',\n\tduration: { weeks: 1 }\n};\n;;\n\r\nreturn FC; // export for Node/CommonJS\r\n});\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./source/javascripts/vendor/fullcalendar-2.9.1/fullcalendar.js\n// module id = 1146\n// module chunks = 160"],"sourceRoot":""}