{"version":3,"sources":["../../node_modules/.pnpm/moment@2.29.3/node_modules/moment/moment.js"],"names":["global","factory","module","exports","hookCallback","hooks","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","res","i","arrLen","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","some","fun","t","len","isValid","_isValid","flags","parsedParts","isNowValid","isNaN","_d","getTime","invalidWeekday","_strict","bigHour","undefined","isFrozen","createInvalid","NaN","momentProperties","updateInProgress","copyConfig","to","from","prop","val","momentPropertiesLen","_isAMomentObject","_i","_f","_l","_tzm","_isUTC","_offset","_locale","Moment","config","updateOffset","isMoment","warn","msg","suppressDeprecationWarnings","console","deprecate","firstTime","deprecationHandler","args","arg","key","argLen","slice","join","Error","stack","deprecations","deprecateSimple","name","isFunction","Function","set","_config","_dayOfMonthOrdinalParseLenient","RegExp","_dayOfMonthOrdinalParse","source","_ordinalParse","mergeConfigs","parentConfig","childConfig","Locale","keys","defaultCalendar","sameDay","nextDay","nextWeek","lastDay","lastWeek","sameElse","calendar","mom","now","output","_calendar","zeroFill","number","targetLength","forceSign","absNumber","Math","abs","zerosToFill","sign","pow","max","substr","formattingTokens","localFormattingTokens","formatFunctions","formatTokenFunctions","addFormatToken","token","padded","ordinal","func","localeData","removeFormattingTokens","match","replace","makeFormatFunction","array","formatMoment","invalidDate","expandFormat","replaceLongDateFormatTokens","longDateFormat","lastIndex","test","defaultLongDateFormat","LTS","LT","L","LL","LLL","LLLL","_longDateFormat","formatUpper","toUpperCase","tok","defaultInvalidDate","_invalidDate","defaultOrdinal","defaultDayOfMonthOrdinalParse","_ordinal","defaultRelativeTime","future","past","s","ss","mm","h","hh","d","dd","w","ww","M","MM","y","yy","relativeTime","withoutSuffix","string","isFuture","_relativeTime","pastFuture","diff","aliases","addUnitAlias","unit","shorthand","lowerCase","toLowerCase","normalizeUnits","units","normalizeObjectUnits","inputObject","normalizedInput","normalizedProp","priorities","addUnitPriority","priority","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","prioritizedLen","match1","match2","match3","match4","match6","match1to2","match3to4","match5to6","match1to3","match1to4","match1to6","matchUnsigned","matchSigned","matchOffset","matchShortOffset","matchTimestamp","matchWord","regexes","addRegexToken","regex","strictRegex","isStrict","getParseRegexForToken","unescapeFormat","regexEscape","matched","p1","p2","p3","p4","tokens","addParseToken","tokenLen","addWeekParseToken","_w","addTimeToArrayFromToken","_a","YEAR","MONTH","DATE","HOUR","MINUTE","SECOND","MILLISECOND","WEEK","WEEKDAY","mod","n","x","indexOf","o","modMonth","monthsShort","months","monthsShortRegex","monthsRegex","monthsParse","defaultLocaleMonths","split","defaultLocaleMonthsShort","MONTHS_IN_FORMAT","defaultMonthsShortRegex","defaultMonthsRegex","localeMonths","_months","isFormat","localeMonthsShort","_monthsShort","handleStrictParse","monthName","ii","llc","toLocaleLowerCase","_monthsParse","_longMonthsParse","_shortMonthsParse","localeMonthsParse","_monthsParseExact","setMonth","dayOfMonth","min","getSetMonth","getDaysInMonth","computeMonthsParse","_monthsShortStrictRegex","_monthsShortRegex","_monthsStrictRegex","_monthsRegex","cmpLenRev","shortPieces","longPieces","mixedPieces","parseTwoDigitYear","parseInt","daysInYear","getSetYear","getIsLeapYear","createDate","ms","getFullYear","setFullYear","createUTCDate","UTC","getUTCFullYear","setUTCFullYear","firstWeekOffset","dow","doy","fwd","fwdlw","getUTCDay","dayOfYearFromWeeks","week","weekday","localWeekday","weekOffset","dayOfYear","resYear","resDayOfYear","weekOfYear","resWeek","weeksInYear","weekOffsetNext","localeWeek","_week","defaultLocaleWeek","localeFirstDayOfWeek","localeFirstDayOfYear","getSetWeek","add","getSetISOWeek","weekdaysMin","weekdaysShort","weekdays","weekdaysMinRegex","weekdaysShortRegex","weekdaysRegex","weekdaysParse","parseWeekday","parseIsoWeekday","shiftWeekdays","ws","concat","defaultLocaleWeekdays","defaultLocaleWeekdaysShort","defaultLocaleWeekdaysMin","defaultWeekdaysRegex","defaultWeekdaysShortRegex","defaultWeekdaysMinRegex","localeWeekdays","_weekdays","day","localeWeekdaysShort","_weekdaysShort","localeWeekdaysMin","_weekdaysMin","handleStrictParse$1","weekdayName","_weekdaysParse","_shortWeekdaysParse","_minWeekdaysParse","localeWeekdaysParse","_weekdaysParseExact","_fullWeekdaysParse","getSetDayOfWeek","getDay","getSetLocaleDayOfWeek","getSetISODayOfWeek","computeWeekdaysParse","_weekdaysStrictRegex","_weekdaysRegex","_weekdaysShortStrictRegex","_weekdaysShortRegex","_weekdaysMinStrictRegex","_weekdaysMinRegex","minPieces","minp","shortp","longp","hFormat","hours","kFormat","minutes","seconds","lowercase","matchMeridiem","_meridiemParse","kInput","_isPm","isPM","_meridiem","pos","pos1","pos2","localeIsPM","charAt","defaultLocaleMeridiemParse","getSetHour","localeMeridiem","isLower","baseConfig","dayOfMonthOrdinalParse","meridiemParse","locales","localeFamilies","globalLocale","commonPrefix","arr1","arr2","minl","normalizeLocale","chooseLocale","names","j","next","loadLocale","isLocaleNameSane","oldLocale","aliasedRequire","_abbr","require","getSetGlobalLocale","e","values","data","getLocale","defineLocale","abbr","parentLocale","forEach","updateLocale","tmpLocale","listLocales","checkOverflow","_overflowDayOfYear","_overflowWeeks","_overflowWeekday","extendedIsoRegex","basicIsoRegex","tzRegex","isoDates","isoTimes","aspNetJsonRegex","obsOffsets","UT","GMT","EDT","EST","CDT","CST","MDT","MST","PDT","PST","configFromISO","l","exec","allowTime","dateFormat","timeFormat","tzFormat","isoDatesLen","isoTimesLen","configFromStringAndFormat","extractFromRFC2822Strings","yearStr","monthStr","dayStr","hourStr","minuteStr","secondStr","result","untruncateYear","preprocessRFC2822","checkWeekday","weekdayStr","parsedInput","weekdayProvided","weekdayActual","calculateOffset","obsOffset","militaryOffset","numOffset","hm","configFromRFC2822","parsedArray","setUTCMinutes","getUTCMinutes","configFromString","createFromInputFallback","_useUTC","defaults","c","currentDateArray","nowValue","getUTCMonth","getUTCDate","getMonth","getDate","configFromArray","currentDate","expectedWeekday","yearToUse","dayOfYearFromWeekInfo","_dayOfYear","_nextDay","weekYear","temp","weekdayOverflow","curWeek","GG","W","E","createLocal","gg","ISO_8601","RFC_2822","skipped","stringLength","totalParsedInputLength","meridiemFixWrap","erasConvertYear","hour","isPm","meridiemHour","configFromStringAndArray","tempConfig","bestMoment","scoreToBeat","currentScore","validFormatFound","bestFormatIsValid","configfLen","score","configFromObject","dayOrDate","minute","second","millisecond","createFromConfig","prepareConfig","preparse","configFromInput","isUTC","prototypeMin","other","prototypeMax","pickBy","moments","ordering","isDurationValid","unitHasDecimal","orderLen","parseFloat","isValid$1","createInvalid$1","createDuration","Duration","duration","years","quarters","quarter","weeks","isoWeek","days","milliseconds","_milliseconds","_days","_data","_bubble","isDuration","absRound","round","compareArrays","array1","array2","dontConvert","lengthDiff","diffs","offset","separator","utcOffset","offsetFromString","chunkOffset","matcher","matches","chunk","parts","cloneWithOffset","model","clone","setTime","local","getDateOffset","getTimezoneOffset","getSetOffset","keepLocalTime","keepMinutes","localAdjust","_changeInProgress","addSubtract","getSetZone","setOffsetToUTC","setOffsetToLocal","subtract","setOffsetToParsedOffset","tZone","hasAlignedHourOffset","isDaylightSavingTime","isDaylightSavingTimeShifted","_isDSTShifted","toArray","isLocal","isUtcOffset","isUtc","aspNetRegex","isoRegex","ret","diffRes","parseIso","momentsDifference","invalid","inp","positiveMomentsDifference","base","isAfter","isBefore","createAdder","direction","period","dur","tmp","isAdding","isString","String","isMomentInput","isNumberOrStringArray","isMomentInputObject","objectTest","propertyTest","properties","property","propertyLen","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","wholeMonthDiff","anchor","anchor2","adjust","defaultFormat","defaultFormatUtc","toISOString","keepOffset","toDate","inspect","zone","prefix","datetime","suffix","inputString","postformat","humanize","fromNow","toNow","newLocaleData","lang","MS_PER_SECOND","MS_PER_MINUTE","MS_PER_HOUR","MS_PER_400_YEARS","mod$1","dividend","divisor","localStartOfDate","utcStartOfDate","startOfDate","isoWeekday","unix","toObject","toJSON","isValid$2","parsingFlags","invalidAt","creationData","matchEraAbbr","matchEraName","matchEraNarrow","erasParse","matchEraYearOrdinal","_eraYearOrdinalRegex","eraYearOrdinalParse","localeEras","eras","_eras","since","until","Infinity","localeErasParse","eraName","narrow","localeErasConvertYear","dir","getEraName","getEraNarrow","getEraAbbr","getEraYear","erasNameRegex","computeErasParse","_erasNameRegex","_erasRegex","erasAbbrRegex","_erasAbbrRegex","erasNarrowRegex","_erasNarrowRegex","abbrPieces","namePieces","narrowPieces","isoWeekYear","addWeekYearFormatToken","getter","getSetWeekYear","getSetWeekYearHelper","getSetISOWeekYear","getISOWeeksInYear","getISOWeeksInISOWeekYear","getWeeksInYear","weekInfo","getWeeksInWeekYear","weeksTarget","setWeekAll","dayOfYearData","getSetQuarter","getSetDayOfMonth","getSetDayOfYear","getSetMinute","getSetSecond","getSetMillisecond","parseMs","getZoneAbbr","getZoneName","proto","Symbol","for","eraNarrow","eraAbbr","eraYear","isoWeeks","weeksInWeekYear","isoWeeksInYear","isoWeeksInISOWeekYear","parseZone","isDST","zoneAbbr","zoneName","dates","isDSTShifted","createUnix","createInZone","preParsePostFormat","proto$1","firstDayOfYear","firstDayOfWeek","get$1","index","field","setter","listMonthsImpl","out","listWeekdaysImpl","localeSorted","shift","listMonths","listMonthsShort","listWeekdays","listWeekdaysShort","listWeekdaysMin","langData","mathAbs","addSubtract$1","add$1","subtract$1","absCeil","bubble","monthsFromDays","monthsToDays","daysToMonths","as","valueOf$1","makeAs","alias","asMilliseconds","asSeconds","asMinutes","asHours","asDays","asWeeks","asMonths","asQuarters","asYears","clone$1","get$2","makeGetter","thresholds","substituteTimeAgo","relativeTime$1","posNegDuration","getSetRelativeTimeRounding","roundingFunction","getSetRelativeTimeThreshold","threshold","limit","argWithSuffix","argThresholds","withSuffix","th","assign","abs$1","toISOString$1","total","totalSign","ymSign","daysSign","hmsSign","toFixed","proto$2","toIsoString","version","relativeTimeRounding","relativeTimeThreshold","HTML5_FMT","DATETIME_LOCAL","DATETIME_LOCAL_SECONDS","DATETIME_LOCAL_MS","TIME","TIME_SECONDS","TIME_MS"],"mappings":"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","file":"static/js/vendors~main~7bef5bc5.1bad04d8.chunk.js","sourcesContent":["//! moment.js\n//! version : 2.29.3\n//! authors : Tim Wood, Iskren Chernev, Moment.js contributors\n//! license : MIT\n//! momentjs.com\n\n;(function (global, factory) {\n typeof exports === 'object' && typeof module !== 'undefined' ? module.exports = factory() :\n typeof define === 'function' && define.amd ? define(factory) :\n global.moment = factory()\n}(this, (function () { 'use strict';\n\n var hookCallback;\n\n function hooks() {\n return hookCallback.apply(null, arguments);\n }\n\n // This is done to register the method called with moment()\n // without creating circular dependencies.\n function setHookCallback(callback) {\n hookCallback = callback;\n }\n\n function isArray(input) {\n return (\n input instanceof Array ||\n Object.prototype.toString.call(input) === '[object Array]'\n );\n }\n\n function isObject(input) {\n // IE8 will treat undefined and null as object if it wasn't for\n // input != null\n return (\n input != null &&\n Object.prototype.toString.call(input) === '[object Object]'\n );\n }\n\n function hasOwnProp(a, b) {\n return Object.prototype.hasOwnProperty.call(a, b);\n }\n\n function isObjectEmpty(obj) {\n if (Object.getOwnPropertyNames) {\n return Object.getOwnPropertyNames(obj).length === 0;\n } else {\n var k;\n for (k in obj) {\n if (hasOwnProp(obj, k)) {\n return false;\n }\n }\n return true;\n }\n }\n\n function isUndefined(input) {\n return input === void 0;\n }\n\n function isNumber(input) {\n return (\n typeof input === 'number' ||\n Object.prototype.toString.call(input) === '[object Number]'\n );\n }\n\n function isDate(input) {\n return (\n input instanceof Date ||\n Object.prototype.toString.call(input) === '[object Date]'\n );\n }\n\n function map(arr, fn) {\n var res = [],\n i,\n arrLen = arr.length;\n for (i = 0; i < arrLen; ++i) {\n res.push(fn(arr[i], i));\n }\n return res;\n }\n\n function extend(a, b) {\n for (var i in b) {\n if (hasOwnProp(b, i)) {\n a[i] = b[i];\n }\n }\n\n if (hasOwnProp(b, 'toString')) {\n a.toString = b.toString;\n }\n\n if (hasOwnProp(b, 'valueOf')) {\n a.valueOf = b.valueOf;\n }\n\n return a;\n }\n\n function createUTC(input, format, locale, strict) {\n return createLocalOrUTC(input, format, locale, strict, true).utc();\n }\n\n function defaultParsingFlags() {\n // We need to deep clone this object.\n return {\n empty: false,\n unusedTokens: [],\n unusedInput: [],\n overflow: -2,\n charsLeftOver: 0,\n nullInput: false,\n invalidEra: null,\n invalidMonth: null,\n invalidFormat: false,\n userInvalidated: false,\n iso: false,\n parsedDateParts: [],\n era: null,\n meridiem: null,\n rfc2822: false,\n weekdayMismatch: false,\n };\n }\n\n function getParsingFlags(m) {\n if (m._pf == null) {\n m._pf = defaultParsingFlags();\n }\n return m._pf;\n }\n\n var some;\n if (Array.prototype.some) {\n some = Array.prototype.some;\n } else {\n some = function (fun) {\n var t = Object(this),\n len = t.length >>> 0,\n i;\n\n for (i = 0; i < len; i++) {\n if (i in t && fun.call(this, t[i], i, t)) {\n return true;\n }\n }\n\n return false;\n };\n }\n\n function isValid(m) {\n if (m._isValid == null) {\n var flags = getParsingFlags(m),\n parsedParts = some.call(flags.parsedDateParts, function (i) {\n return i != null;\n }),\n isNowValid =\n !isNaN(m._d.getTime()) &&\n flags.overflow < 0 &&\n !flags.empty &&\n !flags.invalidEra &&\n !flags.invalidMonth &&\n !flags.invalidWeekday &&\n !flags.weekdayMismatch &&\n !flags.nullInput &&\n !flags.invalidFormat &&\n !flags.userInvalidated &&\n (!flags.meridiem || (flags.meridiem && parsedParts));\n\n if (m._strict) {\n isNowValid =\n isNowValid &&\n flags.charsLeftOver === 0 &&\n flags.unusedTokens.length === 0 &&\n flags.bigHour === undefined;\n }\n\n if (Object.isFrozen == null || !Object.isFrozen(m)) {\n m._isValid = isNowValid;\n } else {\n return isNowValid;\n }\n }\n return m._isValid;\n }\n\n function createInvalid(flags) {\n var m = createUTC(NaN);\n if (flags != null) {\n extend(getParsingFlags(m), flags);\n } else {\n getParsingFlags(m).userInvalidated = true;\n }\n\n return m;\n }\n\n // Plugins that add properties should also add the key here (null value),\n // so we can properly clone ourselves.\n var momentProperties = (hooks.momentProperties = []),\n updateInProgress = false;\n\n function copyConfig(to, from) {\n var i,\n prop,\n val,\n momentPropertiesLen = momentProperties.length;\n\n if (!isUndefined(from._isAMomentObject)) {\n to._isAMomentObject = from._isAMomentObject;\n }\n if (!isUndefined(from._i)) {\n to._i = from._i;\n }\n if (!isUndefined(from._f)) {\n to._f = from._f;\n }\n if (!isUndefined(from._l)) {\n to._l = from._l;\n }\n if (!isUndefined(from._strict)) {\n to._strict = from._strict;\n }\n if (!isUndefined(from._tzm)) {\n to._tzm = from._tzm;\n }\n if (!isUndefined(from._isUTC)) {\n to._isUTC = from._isUTC;\n }\n if (!isUndefined(from._offset)) {\n to._offset = from._offset;\n }\n if (!isUndefined(from._pf)) {\n to._pf = getParsingFlags(from);\n }\n if (!isUndefined(from._locale)) {\n to._locale = from._locale;\n }\n\n if (momentPropertiesLen > 0) {\n for (i = 0; i < momentPropertiesLen; i++) {\n prop = momentProperties[i];\n val = from[prop];\n if (!isUndefined(val)) {\n to[prop] = val;\n }\n }\n }\n\n return to;\n }\n\n // Moment prototype object\n function Moment(config) {\n copyConfig(this, config);\n this._d = new Date(config._d != null ? config._d.getTime() : NaN);\n if (!this.isValid()) {\n this._d = new Date(NaN);\n }\n // Prevent infinite loop in case updateOffset creates new moment\n // objects.\n if (updateInProgress === false) {\n updateInProgress = true;\n hooks.updateOffset(this);\n updateInProgress = false;\n }\n }\n\n function isMoment(obj) {\n return (\n obj instanceof Moment || (obj != null && obj._isAMomentObject != null)\n );\n }\n\n function warn(msg) {\n if (\n hooks.suppressDeprecationWarnings === false &&\n typeof console !== 'undefined' &&\n console.warn\n ) {\n console.warn('Deprecation warning: ' + msg);\n }\n }\n\n function deprecate(msg, fn) {\n var firstTime = true;\n\n return extend(function () {\n if (hooks.deprecationHandler != null) {\n hooks.deprecationHandler(null, msg);\n }\n if (firstTime) {\n var args = [],\n arg,\n i,\n key,\n argLen = arguments.length;\n for (i = 0; i < argLen; i++) {\n arg = '';\n if (typeof arguments[i] === 'object') {\n arg += '\\n[' + i + '] ';\n for (key in arguments[0]) {\n if (hasOwnProp(arguments[0], key)) {\n arg += key + ': ' + arguments[0][key] + ', ';\n }\n }\n arg = arg.slice(0, -2); // Remove trailing comma and space\n } else {\n arg = arguments[i];\n }\n args.push(arg);\n }\n warn(\n msg +\n '\\nArguments: ' +\n Array.prototype.slice.call(args).join('') +\n '\\n' +\n new Error().stack\n );\n firstTime = false;\n }\n return fn.apply(this, arguments);\n }, fn);\n }\n\n var deprecations = {};\n\n function deprecateSimple(name, msg) {\n if (hooks.deprecationHandler != null) {\n hooks.deprecationHandler(name, msg);\n }\n if (!deprecations[name]) {\n warn(msg);\n deprecations[name] = true;\n }\n }\n\n hooks.suppressDeprecationWarnings = false;\n hooks.deprecationHandler = null;\n\n function isFunction(input) {\n return (\n (typeof Function !== 'undefined' && input instanceof Function) ||\n Object.prototype.toString.call(input) === '[object Function]'\n );\n }\n\n function set(config) {\n var prop, i;\n for (i in config) {\n if (hasOwnProp(config, i)) {\n prop = config[i];\n if (isFunction(prop)) {\n this[i] = prop;\n } else {\n this['_' + i] = prop;\n }\n }\n }\n this._config = config;\n // Lenient ordinal parsing accepts just a number in addition to\n // number + (possibly) stuff coming from _dayOfMonthOrdinalParse.\n // TODO: Remove \"ordinalParse\" fallback in next major release.\n this._dayOfMonthOrdinalParseLenient = new RegExp(\n (this._dayOfMonthOrdinalParse.source || this._ordinalParse.source) +\n '|' +\n /\\d{1,2}/.source\n );\n }\n\n function mergeConfigs(parentConfig, childConfig) {\n var res = extend({}, parentConfig),\n prop;\n for (prop in childConfig) {\n if (hasOwnProp(childConfig, prop)) {\n if (isObject(parentConfig[prop]) && isObject(childConfig[prop])) {\n res[prop] = {};\n extend(res[prop], parentConfig[prop]);\n extend(res[prop], childConfig[prop]);\n } else if (childConfig[prop] != null) {\n res[prop] = childConfig[prop];\n } else {\n delete res[prop];\n }\n }\n }\n for (prop in parentConfig) {\n if (\n hasOwnProp(parentConfig, prop) &&\n !hasOwnProp(childConfig, prop) &&\n isObject(parentConfig[prop])\n ) {\n // make sure changes to properties don't modify parent config\n res[prop] = extend({}, res[prop]);\n }\n }\n return res;\n }\n\n function Locale(config) {\n if (config != null) {\n this.set(config);\n }\n }\n\n var keys;\n\n if (Object.keys) {\n keys = Object.keys;\n } else {\n keys = function (obj) {\n var i,\n res = [];\n for (i in obj) {\n if (hasOwnProp(obj, i)) {\n res.push(i);\n }\n }\n return res;\n };\n }\n\n var defaultCalendar = {\n sameDay: '[Today at] LT',\n nextDay: '[Tomorrow at] LT',\n nextWeek: 'dddd [at] LT',\n lastDay: '[Yesterday at] LT',\n lastWeek: '[Last] dddd [at] LT',\n sameElse: 'L',\n };\n\n function calendar(key, mom, now) {\n var output = this._calendar[key] || this._calendar['sameElse'];\n return isFunction(output) ? output.call(mom, now) : output;\n }\n\n function zeroFill(number, targetLength, forceSign) {\n var absNumber = '' + Math.abs(number),\n zerosToFill = targetLength - absNumber.length,\n sign = number >= 0;\n return (\n (sign ? (forceSign ? '+' : '') : '-') +\n Math.pow(10, Math.max(0, zerosToFill)).toString().substr(1) +\n absNumber\n );\n }\n\n var formattingTokens =\n /(\\[[^\\[]*\\])|(\\\\)?([Hh]mm(ss)?|Mo|MM?M?M?|Do|DDDo|DD?D?D?|ddd?d?|do?|w[o|w]?|W[o|W]?|Qo?|N{1,5}|YYYYYY|YYYYY|YYYY|YY|y{2,4}|yo?|gg(ggg?)?|GG(GGG?)?|e|E|a|A|hh?|HH?|kk?|mm?|ss?|S{1,9}|x|X|zz?|ZZ?|.)/g,\n localFormattingTokens = /(\\[[^\\[]*\\])|(\\\\)?(LTS|LT|LL?L?L?|l{1,4})/g,\n formatFunctions = {},\n formatTokenFunctions = {};\n\n // token: 'M'\n // padded: ['MM', 2]\n // ordinal: 'Mo'\n // callback: function () { this.month() + 1 }\n function addFormatToken(token, padded, ordinal, callback) {\n var func = callback;\n if (typeof callback === 'string') {\n func = function () {\n return this[callback]();\n };\n }\n if (token) {\n formatTokenFunctions[token] = func;\n }\n if (padded) {\n formatTokenFunctions[padded[0]] = function () {\n return zeroFill(func.apply(this, arguments), padded[1], padded[2]);\n };\n }\n if (ordinal) {\n formatTokenFunctions[ordinal] = function () {\n return this.localeData().ordinal(\n func.apply(this, arguments),\n token\n );\n };\n }\n }\n\n function removeFormattingTokens(input) {\n if (input.match(/\\[[\\s\\S]/)) {\n return input.replace(/^\\[|\\]$/g, '');\n }\n return input.replace(/\\\\/g, '');\n }\n\n function makeFormatFunction(format) {\n var array = format.match(formattingTokens),\n i,\n length;\n\n for (i = 0, length = array.length; i < length; i++) {\n if (formatTokenFunctions[array[i]]) {\n array[i] = formatTokenFunctions[array[i]];\n } else {\n array[i] = removeFormattingTokens(array[i]);\n }\n }\n\n return function (mom) {\n var output = '',\n i;\n for (i = 0; i < length; i++) {\n output += isFunction(array[i])\n ? array[i].call(mom, format)\n : array[i];\n }\n return output;\n };\n }\n\n // format date using native date object\n function formatMoment(m, format) {\n if (!m.isValid()) {\n return m.localeData().invalidDate();\n }\n\n format = expandFormat(format, m.localeData());\n formatFunctions[format] =\n formatFunctions[format] || makeFormatFunction(format);\n\n return formatFunctions[format](m);\n }\n\n function expandFormat(format, locale) {\n var i = 5;\n\n function replaceLongDateFormatTokens(input) {\n return locale.longDateFormat(input) || input;\n }\n\n localFormattingTokens.lastIndex = 0;\n while (i >= 0 && localFormattingTokens.test(format)) {\n format = format.replace(\n localFormattingTokens,\n replaceLongDateFormatTokens\n );\n localFormattingTokens.lastIndex = 0;\n i -= 1;\n }\n\n return format;\n }\n\n var defaultLongDateFormat = {\n LTS: 'h:mm:ss A',\n LT: 'h:mm A',\n L: 'MM/DD/YYYY',\n LL: 'MMMM D, YYYY',\n LLL: 'MMMM D, YYYY h:mm A',\n LLLL: 'dddd, MMMM D, YYYY h:mm A',\n };\n\n function longDateFormat(key) {\n var format = this._longDateFormat[key],\n formatUpper = this._longDateFormat[key.toUpperCase()];\n\n if (format || !formatUpper) {\n return format;\n }\n\n this._longDateFormat[key] = formatUpper\n .match(formattingTokens)\n .map(function (tok) {\n if (\n tok === 'MMMM' ||\n tok === 'MM' ||\n tok === 'DD' ||\n tok === 'dddd'\n ) {\n return tok.slice(1);\n }\n return tok;\n })\n .join('');\n\n return this._longDateFormat[key];\n }\n\n var defaultInvalidDate = 'Invalid date';\n\n function invalidDate() {\n return this._invalidDate;\n }\n\n var defaultOrdinal = '%d',\n defaultDayOfMonthOrdinalParse = /\\d{1,2}/;\n\n function ordinal(number) {\n return this._ordinal.replace('%d', number);\n }\n\n var defaultRelativeTime = {\n future: 'in %s',\n past: '%s ago',\n s: 'a few seconds',\n ss: '%d seconds',\n m: 'a minute',\n mm: '%d minutes',\n h: 'an hour',\n hh: '%d hours',\n d: 'a day',\n dd: '%d days',\n w: 'a week',\n ww: '%d weeks',\n M: 'a month',\n MM: '%d months',\n y: 'a year',\n yy: '%d years',\n };\n\n function relativeTime(number, withoutSuffix, string, isFuture) {\n var output = this._relativeTime[string];\n return isFunction(output)\n ? output(number, withoutSuffix, string, isFuture)\n : output.replace(/%d/i, number);\n }\n\n function pastFuture(diff, output) {\n var format = this._relativeTime[diff > 0 ? 'future' : 'past'];\n return isFunction(format) ? format(output) : format.replace(/%s/i, output);\n }\n\n var aliases = {};\n\n function addUnitAlias(unit, shorthand) {\n var lowerCase = unit.toLowerCase();\n aliases[lowerCase] = aliases[lowerCase + 's'] = aliases[shorthand] = unit;\n }\n\n function normalizeUnits(units) {\n return typeof units === 'string'\n ? aliases[units] || aliases[units.toLowerCase()]\n : undefined;\n }\n\n function normalizeObjectUnits(inputObject) {\n var normalizedInput = {},\n normalizedProp,\n prop;\n\n for (prop in inputObject) {\n if (hasOwnProp(inputObject, prop)) {\n normalizedProp = normalizeUnits(prop);\n if (normalizedProp) {\n normalizedInput[normalizedProp] = inputObject[prop];\n }\n }\n }\n\n return normalizedInput;\n }\n\n var priorities = {};\n\n function addUnitPriority(unit, priority) {\n priorities[unit] = priority;\n }\n\n function getPrioritizedUnits(unitsObj) {\n var units = [],\n u;\n for (u in unitsObj) {\n if (hasOwnProp(unitsObj, u)) {\n units.push({ unit: u, priority: priorities[u] });\n }\n }\n units.sort(function (a, b) {\n return a.priority - b.priority;\n });\n return units;\n }\n\n function isLeapYear(year) {\n return (year % 4 === 0 && year % 100 !== 0) || year % 400 === 0;\n }\n\n function absFloor(number) {\n if (number < 0) {\n // -0 -> 0\n return Math.ceil(number) || 0;\n } else {\n return Math.floor(number);\n }\n }\n\n function toInt(argumentForCoercion) {\n var coercedNumber = +argumentForCoercion,\n value = 0;\n\n if (coercedNumber !== 0 && isFinite(coercedNumber)) {\n value = absFloor(coercedNumber);\n }\n\n return value;\n }\n\n function makeGetSet(unit, keepTime) {\n return function (value) {\n if (value != null) {\n set$1(this, unit, value);\n hooks.updateOffset(this, keepTime);\n return this;\n } else {\n return get(this, unit);\n }\n };\n }\n\n function get(mom, unit) {\n return mom.isValid()\n ? mom._d['get' + (mom._isUTC ? 'UTC' : '') + unit]()\n : NaN;\n }\n\n function set$1(mom, unit, value) {\n if (mom.isValid() && !isNaN(value)) {\n if (\n unit === 'FullYear' &&\n isLeapYear(mom.year()) &&\n mom.month() === 1 &&\n mom.date() === 29\n ) {\n value = toInt(value);\n mom._d['set' + (mom._isUTC ? 'UTC' : '') + unit](\n value,\n mom.month(),\n daysInMonth(value, mom.month())\n );\n } else {\n mom._d['set' + (mom._isUTC ? 'UTC' : '') + unit](value);\n }\n }\n }\n\n // MOMENTS\n\n function stringGet(units) {\n units = normalizeUnits(units);\n if (isFunction(this[units])) {\n return this[units]();\n }\n return this;\n }\n\n function stringSet(units, value) {\n if (typeof units === 'object') {\n units = normalizeObjectUnits(units);\n var prioritized = getPrioritizedUnits(units),\n i,\n prioritizedLen = prioritized.length;\n for (i = 0; i < prioritizedLen; i++) {\n this[prioritized[i].unit](units[prioritized[i].unit]);\n }\n } else {\n units = normalizeUnits(units);\n if (isFunction(this[units])) {\n return this[units](value);\n }\n }\n return this;\n }\n\n var match1 = /\\d/, // 0 - 9\n match2 = /\\d\\d/, // 00 - 99\n match3 = /\\d{3}/, // 000 - 999\n match4 = /\\d{4}/, // 0000 - 9999\n match6 = /[+-]?\\d{6}/, // -999999 - 999999\n match1to2 = /\\d\\d?/, // 0 - 99\n match3to4 = /\\d\\d\\d\\d?/, // 999 - 9999\n match5to6 = /\\d\\d\\d\\d\\d\\d?/, // 99999 - 999999\n match1to3 = /\\d{1,3}/, // 0 - 999\n match1to4 = /\\d{1,4}/, // 0 - 9999\n match1to6 = /[+-]?\\d{1,6}/, // -999999 - 999999\n matchUnsigned = /\\d+/, // 0 - inf\n matchSigned = /[+-]?\\d+/, // -inf - inf\n matchOffset = /Z|[+-]\\d\\d:?\\d\\d/gi, // +00:00 -00:00 +0000 -0000 or Z\n matchShortOffset = /Z|[+-]\\d\\d(?::?\\d\\d)?/gi, // +00 -00 +00:00 -00:00 +0000 -0000 or Z\n matchTimestamp = /[+-]?\\d+(\\.\\d{1,3})?/, // 123456789 123456789.123\n // any word (or two) characters or numbers including two/three word month in arabic.\n // includes scottish gaelic two word and hyphenated months\n matchWord =\n /[0-9]{0,256}['a-z\\u00A0-\\u05FF\\u0700-\\uD7FF\\uF900-\\uFDCF\\uFDF0-\\uFF07\\uFF10-\\uFFEF]{1,256}|[\\u0600-\\u06FF\\/]{1,256}(\\s*?[\\u0600-\\u06FF]{1,256}){1,2}/i,\n regexes;\n\n regexes = {};\n\n function addRegexToken(token, regex, strictRegex) {\n regexes[token] = isFunction(regex)\n ? regex\n : function (isStrict, localeData) {\n return isStrict && strictRegex ? strictRegex : regex;\n };\n }\n\n function getParseRegexForToken(token, config) {\n if (!hasOwnProp(regexes, token)) {\n return new RegExp(unescapeFormat(token));\n }\n\n return regexes[token](config._strict, config._locale);\n }\n\n // Code from http://stackoverflow.com/questions/3561493/is-there-a-regexp-escape-function-in-javascript\n function unescapeFormat(s) {\n return regexEscape(\n s\n .replace('\\\\', '')\n .replace(\n /\\\\(\\[)|\\\\(\\])|\\[([^\\]\\[]*)\\]|\\\\(.)/g,\n function (matched, p1, p2, p3, p4) {\n return p1 || p2 || p3 || p4;\n }\n )\n );\n }\n\n function regexEscape(s) {\n return s.replace(/[-\\/\\\\^$*+?.()|[\\]{}]/g, '\\\\$&');\n }\n\n var tokens = {};\n\n function addParseToken(token, callback) {\n var i,\n func = callback,\n tokenLen;\n if (typeof token === 'string') {\n token = [token];\n }\n if (isNumber(callback)) {\n func = function (input, array) {\n array[callback] = toInt(input);\n };\n }\n tokenLen = token.length;\n for (i = 0; i < tokenLen; i++) {\n tokens[token[i]] = func;\n }\n }\n\n function addWeekParseToken(token, callback) {\n addParseToken(token, function (input, array, config, token) {\n config._w = config._w || {};\n callback(input, config._w, config, token);\n });\n }\n\n function addTimeToArrayFromToken(token, input, config) {\n if (input != null && hasOwnProp(tokens, token)) {\n tokens[token](input, config._a, config, token);\n }\n }\n\n var YEAR = 0,\n MONTH = 1,\n DATE = 2,\n HOUR = 3,\n MINUTE = 4,\n SECOND = 5,\n MILLISECOND = 6,\n WEEK = 7,\n WEEKDAY = 8;\n\n function mod(n, x) {\n return ((n % x) + x) % x;\n }\n\n var indexOf;\n\n if (Array.prototype.indexOf) {\n indexOf = Array.prototype.indexOf;\n } else {\n indexOf = function (o) {\n // I know\n var i;\n for (i = 0; i < this.length; ++i) {\n if (this[i] === o) {\n return i;\n }\n }\n return -1;\n };\n }\n\n function daysInMonth(year, month) {\n if (isNaN(year) || isNaN(month)) {\n return NaN;\n }\n var modMonth = mod(month, 12);\n year += (month - modMonth) / 12;\n return modMonth === 1\n ? isLeapYear(year)\n ? 29\n : 28\n : 31 - ((modMonth % 7) % 2);\n }\n\n // FORMATTING\n\n addFormatToken('M', ['MM', 2], 'Mo', function () {\n return this.month() + 1;\n });\n\n addFormatToken('MMM', 0, 0, function (format) {\n return this.localeData().monthsShort(this, format);\n });\n\n addFormatToken('MMMM', 0, 0, function (format) {\n return this.localeData().months(this, format);\n });\n\n // ALIASES\n\n addUnitAlias('month', 'M');\n\n // PRIORITY\n\n addUnitPriority('month', 8);\n\n // PARSING\n\n addRegexToken('M', match1to2);\n addRegexToken('MM', match1to2, match2);\n addRegexToken('MMM', function (isStrict, locale) {\n return locale.monthsShortRegex(isStrict);\n });\n addRegexToken('MMMM', function (isStrict, locale) {\n return locale.monthsRegex(isStrict);\n });\n\n addParseToken(['M', 'MM'], function (input, array) {\n array[MONTH] = toInt(input) - 1;\n });\n\n addParseToken(['MMM', 'MMMM'], function (input, array, config, token) {\n var month = config._locale.monthsParse(input, token, config._strict);\n // if we didn't find a month name, mark the date as invalid.\n if (month != null) {\n array[MONTH] = month;\n } else {\n getParsingFlags(config).invalidMonth = input;\n }\n });\n\n // LOCALES\n\n var defaultLocaleMonths =\n 'January_February_March_April_May_June_July_August_September_October_November_December'.split(\n '_'\n ),\n defaultLocaleMonthsShort =\n 'Jan_Feb_Mar_Apr_May_Jun_Jul_Aug_Sep_Oct_Nov_Dec'.split('_'),\n MONTHS_IN_FORMAT = /D[oD]?(\\[[^\\[\\]]*\\]|\\s)+MMMM?/,\n defaultMonthsShortRegex = matchWord,\n defaultMonthsRegex = matchWord;\n\n function localeMonths(m, format) {\n if (!m) {\n return isArray(this._months)\n ? this._months\n : this._months['standalone'];\n }\n return isArray(this._months)\n ? this._months[m.month()]\n : this._months[\n (this._months.isFormat || MONTHS_IN_FORMAT).test(format)\n ? 'format'\n : 'standalone'\n ][m.month()];\n }\n\n function localeMonthsShort(m, format) {\n if (!m) {\n return isArray(this._monthsShort)\n ? this._monthsShort\n : this._monthsShort['standalone'];\n }\n return isArray(this._monthsShort)\n ? this._monthsShort[m.month()]\n : this._monthsShort[\n MONTHS_IN_FORMAT.test(format) ? 'format' : 'standalone'\n ][m.month()];\n }\n\n function handleStrictParse(monthName, format, strict) {\n var i,\n ii,\n mom,\n llc = monthName.toLocaleLowerCase();\n if (!this._monthsParse) {\n // this is not used\n this._monthsParse = [];\n this._longMonthsParse = [];\n this._shortMonthsParse = [];\n for (i = 0; i < 12; ++i) {\n mom = createUTC([2000, i]);\n this._shortMonthsParse[i] = this.monthsShort(\n mom,\n ''\n ).toLocaleLowerCase();\n this._longMonthsParse[i] = this.months(mom, '').toLocaleLowerCase();\n }\n }\n\n if (strict) {\n if (format === 'MMM') {\n ii = indexOf.call(this._shortMonthsParse, llc);\n return ii !== -1 ? ii : null;\n } else {\n ii = indexOf.call(this._longMonthsParse, llc);\n return ii !== -1 ? ii : null;\n }\n } else {\n if (format === 'MMM') {\n ii = indexOf.call(this._shortMonthsParse, llc);\n if (ii !== -1) {\n return ii;\n }\n ii = indexOf.call(this._longMonthsParse, llc);\n return ii !== -1 ? ii : null;\n } else {\n ii = indexOf.call(this._longMonthsParse, llc);\n if (ii !== -1) {\n return ii;\n }\n ii = indexOf.call(this._shortMonthsParse, llc);\n return ii !== -1 ? ii : null;\n }\n }\n }\n\n function localeMonthsParse(monthName, format, strict) {\n var i, mom, regex;\n\n if (this._monthsParseExact) {\n return handleStrictParse.call(this, monthName, format, strict);\n }\n\n if (!this._monthsParse) {\n this._monthsParse = [];\n this._longMonthsParse = [];\n this._shortMonthsParse = [];\n }\n\n // TODO: add sorting\n // Sorting makes sure if one month (or abbr) is a prefix of another\n // see sorting in computeMonthsParse\n for (i = 0; i < 12; i++) {\n // make the regex if we don't have it already\n mom = createUTC([2000, i]);\n if (strict && !this._longMonthsParse[i]) {\n this._longMonthsParse[i] = new RegExp(\n '^' + this.months(mom, '').replace('.', '') + '$',\n 'i'\n );\n this._shortMonthsParse[i] = new RegExp(\n '^' + this.monthsShort(mom, '').replace('.', '') + '$',\n 'i'\n );\n }\n if (!strict && !this._monthsParse[i]) {\n regex =\n '^' + this.months(mom, '') + '|^' + this.monthsShort(mom, '');\n this._monthsParse[i] = new RegExp(regex.replace('.', ''), 'i');\n }\n // test the regex\n if (\n strict &&\n format === 'MMMM' &&\n this._longMonthsParse[i].test(monthName)\n ) {\n return i;\n } else if (\n strict &&\n format === 'MMM' &&\n this._shortMonthsParse[i].test(monthName)\n ) {\n return i;\n } else if (!strict && this._monthsParse[i].test(monthName)) {\n return i;\n }\n }\n }\n\n // MOMENTS\n\n function setMonth(mom, value) {\n var dayOfMonth;\n\n if (!mom.isValid()) {\n // No op\n return mom;\n }\n\n if (typeof value === 'string') {\n if (/^\\d+$/.test(value)) {\n value = toInt(value);\n } else {\n value = mom.localeData().monthsParse(value);\n // TODO: Another silent failure?\n if (!isNumber(value)) {\n return mom;\n }\n }\n }\n\n dayOfMonth = Math.min(mom.date(), daysInMonth(mom.year(), value));\n mom._d['set' + (mom._isUTC ? 'UTC' : '') + 'Month'](value, dayOfMonth);\n return mom;\n }\n\n function getSetMonth(value) {\n if (value != null) {\n setMonth(this, value);\n hooks.updateOffset(this, true);\n return this;\n } else {\n return get(this, 'Month');\n }\n }\n\n function getDaysInMonth() {\n return daysInMonth(this.year(), this.month());\n }\n\n function monthsShortRegex(isStrict) {\n if (this._monthsParseExact) {\n if (!hasOwnProp(this, '_monthsRegex')) {\n computeMonthsParse.call(this);\n }\n if (isStrict) {\n return this._monthsShortStrictRegex;\n } else {\n return this._monthsShortRegex;\n }\n } else {\n if (!hasOwnProp(this, '_monthsShortRegex')) {\n this._monthsShortRegex = defaultMonthsShortRegex;\n }\n return this._monthsShortStrictRegex && isStrict\n ? this._monthsShortStrictRegex\n : this._monthsShortRegex;\n }\n }\n\n function monthsRegex(isStrict) {\n if (this._monthsParseExact) {\n if (!hasOwnProp(this, '_monthsRegex')) {\n computeMonthsParse.call(this);\n }\n if (isStrict) {\n return this._monthsStrictRegex;\n } else {\n return this._monthsRegex;\n }\n } else {\n if (!hasOwnProp(this, '_monthsRegex')) {\n this._monthsRegex = defaultMonthsRegex;\n }\n return this._monthsStrictRegex && isStrict\n ? this._monthsStrictRegex\n : this._monthsRegex;\n }\n }\n\n function computeMonthsParse() {\n function cmpLenRev(a, b) {\n return b.length - a.length;\n }\n\n var shortPieces = [],\n longPieces = [],\n mixedPieces = [],\n i,\n mom;\n for (i = 0; i < 12; i++) {\n // make the regex if we don't have it already\n mom = createUTC([2000, i]);\n shortPieces.push(this.monthsShort(mom, ''));\n longPieces.push(this.months(mom, ''));\n mixedPieces.push(this.months(mom, ''));\n mixedPieces.push(this.monthsShort(mom, ''));\n }\n // Sorting makes sure if one month (or abbr) is a prefix of another it\n // will match the longer piece.\n shortPieces.sort(cmpLenRev);\n longPieces.sort(cmpLenRev);\n mixedPieces.sort(cmpLenRev);\n for (i = 0; i < 12; i++) {\n shortPieces[i] = regexEscape(shortPieces[i]);\n longPieces[i] = regexEscape(longPieces[i]);\n }\n for (i = 0; i < 24; i++) {\n mixedPieces[i] = regexEscape(mixedPieces[i]);\n }\n\n this._monthsRegex = new RegExp('^(' + mixedPieces.join('|') + ')', 'i');\n this._monthsShortRegex = this._monthsRegex;\n this._monthsStrictRegex = new RegExp(\n '^(' + longPieces.join('|') + ')',\n 'i'\n );\n this._monthsShortStrictRegex = new RegExp(\n '^(' + shortPieces.join('|') + ')',\n 'i'\n );\n }\n\n // FORMATTING\n\n addFormatToken('Y', 0, 0, function () {\n var y = this.year();\n return y <= 9999 ? zeroFill(y, 4) : '+' + y;\n });\n\n addFormatToken(0, ['YY', 2], 0, function () {\n return this.year() % 100;\n });\n\n addFormatToken(0, ['YYYY', 4], 0, 'year');\n addFormatToken(0, ['YYYYY', 5], 0, 'year');\n addFormatToken(0, ['YYYYYY', 6, true], 0, 'year');\n\n // ALIASES\n\n addUnitAlias('year', 'y');\n\n // PRIORITIES\n\n addUnitPriority('year', 1);\n\n // PARSING\n\n addRegexToken('Y', matchSigned);\n addRegexToken('YY', match1to2, match2);\n addRegexToken('YYYY', match1to4, match4);\n addRegexToken('YYYYY', match1to6, match6);\n addRegexToken('YYYYYY', match1to6, match6);\n\n addParseToken(['YYYYY', 'YYYYYY'], YEAR);\n addParseToken('YYYY', function (input, array) {\n array[YEAR] =\n input.length === 2 ? hooks.parseTwoDigitYear(input) : toInt(input);\n });\n addParseToken('YY', function (input, array) {\n array[YEAR] = hooks.parseTwoDigitYear(input);\n });\n addParseToken('Y', function (input, array) {\n array[YEAR] = parseInt(input, 10);\n });\n\n // HELPERS\n\n function daysInYear(year) {\n return isLeapYear(year) ? 366 : 365;\n }\n\n // HOOKS\n\n hooks.parseTwoDigitYear = function (input) {\n return toInt(input) + (toInt(input) > 68 ? 1900 : 2000);\n };\n\n // MOMENTS\n\n var getSetYear = makeGetSet('FullYear', true);\n\n function getIsLeapYear() {\n return isLeapYear(this.year());\n }\n\n function createDate(y, m, d, h, M, s, ms) {\n // can't just apply() to create a date:\n // https://stackoverflow.com/q/181348\n var date;\n // the date constructor remaps years 0-99 to 1900-1999\n if (y < 100 && y >= 0) {\n // preserve leap years using a full 400 year cycle, then reset\n date = new Date(y + 400, m, d, h, M, s, ms);\n if (isFinite(date.getFullYear())) {\n date.setFullYear(y);\n }\n } else {\n date = new Date(y, m, d, h, M, s, ms);\n }\n\n return date;\n }\n\n function createUTCDate(y) {\n var date, args;\n // the Date.UTC function remaps years 0-99 to 1900-1999\n if (y < 100 && y >= 0) {\n args = Array.prototype.slice.call(arguments);\n // preserve leap years using a full 400 year cycle, then reset\n args[0] = y + 400;\n date = new Date(Date.UTC.apply(null, args));\n if (isFinite(date.getUTCFullYear())) {\n date.setUTCFullYear(y);\n }\n } else {\n date = new Date(Date.UTC.apply(null, arguments));\n }\n\n return date;\n }\n\n // start-of-first-week - start-of-year\n function firstWeekOffset(year, dow, doy) {\n var // first-week day -- which january is always in the first week (4 for iso, 1 for other)\n fwd = 7 + dow - doy,\n // first-week day local weekday -- which local weekday is fwd\n fwdlw = (7 + createUTCDate(year, 0, fwd).getUTCDay() - dow) % 7;\n\n return -fwdlw + fwd - 1;\n }\n\n // https://en.wikipedia.org/wiki/ISO_week_date#Calculating_a_date_given_the_year.2C_week_number_and_weekday\n function dayOfYearFromWeeks(year, week, weekday, dow, doy) {\n var localWeekday = (7 + weekday - dow) % 7,\n weekOffset = firstWeekOffset(year, dow, doy),\n dayOfYear = 1 + 7 * (week - 1) + localWeekday + weekOffset,\n resYear,\n resDayOfYear;\n\n if (dayOfYear <= 0) {\n resYear = year - 1;\n resDayOfYear = daysInYear(resYear) + dayOfYear;\n } else if (dayOfYear > daysInYear(year)) {\n resYear = year + 1;\n resDayOfYear = dayOfYear - daysInYear(year);\n } else {\n resYear = year;\n resDayOfYear = dayOfYear;\n }\n\n return {\n year: resYear,\n dayOfYear: resDayOfYear,\n };\n }\n\n function weekOfYear(mom, dow, doy) {\n var weekOffset = firstWeekOffset(mom.year(), dow, doy),\n week = Math.floor((mom.dayOfYear() - weekOffset - 1) / 7) + 1,\n resWeek,\n resYear;\n\n if (week < 1) {\n resYear = mom.year() - 1;\n resWeek = week + weeksInYear(resYear, dow, doy);\n } else if (week > weeksInYear(mom.year(), dow, doy)) {\n resWeek = week - weeksInYear(mom.year(), dow, doy);\n resYear = mom.year() + 1;\n } else {\n resYear = mom.year();\n resWeek = week;\n }\n\n return {\n week: resWeek,\n year: resYear,\n };\n }\n\n function weeksInYear(year, dow, doy) {\n var weekOffset = firstWeekOffset(year, dow, doy),\n weekOffsetNext = firstWeekOffset(year + 1, dow, doy);\n return (daysInYear(year) - weekOffset + weekOffsetNext) / 7;\n }\n\n // FORMATTING\n\n addFormatToken('w', ['ww', 2], 'wo', 'week');\n addFormatToken('W', ['WW', 2], 'Wo', 'isoWeek');\n\n // ALIASES\n\n addUnitAlias('week', 'w');\n addUnitAlias('isoWeek', 'W');\n\n // PRIORITIES\n\n addUnitPriority('week', 5);\n addUnitPriority('isoWeek', 5);\n\n // PARSING\n\n addRegexToken('w', match1to2);\n addRegexToken('ww', match1to2, match2);\n addRegexToken('W', match1to2);\n addRegexToken('WW', match1to2, match2);\n\n addWeekParseToken(\n ['w', 'ww', 'W', 'WW'],\n function (input, week, config, token) {\n week[token.substr(0, 1)] = toInt(input);\n }\n );\n\n // HELPERS\n\n // LOCALES\n\n function localeWeek(mom) {\n return weekOfYear(mom, this._week.dow, this._week.doy).week;\n }\n\n var defaultLocaleWeek = {\n dow: 0, // Sunday is the first day of the week.\n doy: 6, // The week that contains Jan 6th is the first week of the year.\n };\n\n function localeFirstDayOfWeek() {\n return this._week.dow;\n }\n\n function localeFirstDayOfYear() {\n return this._week.doy;\n }\n\n // MOMENTS\n\n function getSetWeek(input) {\n var week = this.localeData().week(this);\n return input == null ? week : this.add((input - week) * 7, 'd');\n }\n\n function getSetISOWeek(input) {\n var week = weekOfYear(this, 1, 4).week;\n return input == null ? week : this.add((input - week) * 7, 'd');\n }\n\n // FORMATTING\n\n addFormatToken('d', 0, 'do', 'day');\n\n addFormatToken('dd', 0, 0, function (format) {\n return this.localeData().weekdaysMin(this, format);\n });\n\n addFormatToken('ddd', 0, 0, function (format) {\n return this.localeData().weekdaysShort(this, format);\n });\n\n addFormatToken('dddd', 0, 0, function (format) {\n return this.localeData().weekdays(this, format);\n });\n\n addFormatToken('e', 0, 0, 'weekday');\n addFormatToken('E', 0, 0, 'isoWeekday');\n\n // ALIASES\n\n addUnitAlias('day', 'd');\n addUnitAlias('weekday', 'e');\n addUnitAlias('isoWeekday', 'E');\n\n // PRIORITY\n addUnitPriority('day', 11);\n addUnitPriority('weekday', 11);\n addUnitPriority('isoWeekday', 11);\n\n // PARSING\n\n addRegexToken('d', match1to2);\n addRegexToken('e', match1to2);\n addRegexToken('E', match1to2);\n addRegexToken('dd', function (isStrict, locale) {\n return locale.weekdaysMinRegex(isStrict);\n });\n addRegexToken('ddd', function (isStrict, locale) {\n return locale.weekdaysShortRegex(isStrict);\n });\n addRegexToken('dddd', function (isStrict, locale) {\n return locale.weekdaysRegex(isStrict);\n });\n\n addWeekParseToken(['dd', 'ddd', 'dddd'], function (input, week, config, token) {\n var weekday = config._locale.weekdaysParse(input, token, config._strict);\n // if we didn't get a weekday name, mark the date as invalid\n if (weekday != null) {\n week.d = weekday;\n } else {\n getParsingFlags(config).invalidWeekday = input;\n }\n });\n\n addWeekParseToken(['d', 'e', 'E'], function (input, week, config, token) {\n week[token] = toInt(input);\n });\n\n // HELPERS\n\n function parseWeekday(input, locale) {\n if (typeof input !== 'string') {\n return input;\n }\n\n if (!isNaN(input)) {\n return parseInt(input, 10);\n }\n\n input = locale.weekdaysParse(input);\n if (typeof input === 'number') {\n return input;\n }\n\n return null;\n }\n\n function parseIsoWeekday(input, locale) {\n if (typeof input === 'string') {\n return locale.weekdaysParse(input) % 7 || 7;\n }\n return isNaN(input) ? null : input;\n }\n\n // LOCALES\n function shiftWeekdays(ws, n) {\n return ws.slice(n, 7).concat(ws.slice(0, n));\n }\n\n var defaultLocaleWeekdays =\n 'Sunday_Monday_Tuesday_Wednesday_Thursday_Friday_Saturday'.split('_'),\n defaultLocaleWeekdaysShort = 'Sun_Mon_Tue_Wed_Thu_Fri_Sat'.split('_'),\n defaultLocaleWeekdaysMin = 'Su_Mo_Tu_We_Th_Fr_Sa'.split('_'),\n defaultWeekdaysRegex = matchWord,\n defaultWeekdaysShortRegex = matchWord,\n defaultWeekdaysMinRegex = matchWord;\n\n function localeWeekdays(m, format) {\n var weekdays = isArray(this._weekdays)\n ? this._weekdays\n : this._weekdays[\n m && m !== true && this._weekdays.isFormat.test(format)\n ? 'format'\n : 'standalone'\n ];\n return m === true\n ? shiftWeekdays(weekdays, this._week.dow)\n : m\n ? weekdays[m.day()]\n : weekdays;\n }\n\n function localeWeekdaysShort(m) {\n return m === true\n ? shiftWeekdays(this._weekdaysShort, this._week.dow)\n : m\n ? this._weekdaysShort[m.day()]\n : this._weekdaysShort;\n }\n\n function localeWeekdaysMin(m) {\n return m === true\n ? shiftWeekdays(this._weekdaysMin, this._week.dow)\n : m\n ? this._weekdaysMin[m.day()]\n : this._weekdaysMin;\n }\n\n function handleStrictParse$1(weekdayName, format, strict) {\n var i,\n ii,\n mom,\n llc = weekdayName.toLocaleLowerCase();\n if (!this._weekdaysParse) {\n this._weekdaysParse = [];\n this._shortWeekdaysParse = [];\n this._minWeekdaysParse = [];\n\n for (i = 0; i < 7; ++i) {\n mom = createUTC([2000, 1]).day(i);\n this._minWeekdaysParse[i] = this.weekdaysMin(\n mom,\n ''\n ).toLocaleLowerCase();\n this._shortWeekdaysParse[i] = this.weekdaysShort(\n mom,\n ''\n ).toLocaleLowerCase();\n this._weekdaysParse[i] = this.weekdays(mom, '').toLocaleLowerCase();\n }\n }\n\n if (strict) {\n if (format === 'dddd') {\n ii = indexOf.call(this._weekdaysParse, llc);\n return ii !== -1 ? ii : null;\n } else if (format === 'ddd') {\n ii = indexOf.call(this._shortWeekdaysParse, llc);\n return ii !== -1 ? ii : null;\n } else {\n ii = indexOf.call(this._minWeekdaysParse, llc);\n return ii !== -1 ? ii : null;\n }\n } else {\n if (format === 'dddd') {\n ii = indexOf.call(this._weekdaysParse, llc);\n if (ii !== -1) {\n return ii;\n }\n ii = indexOf.call(this._shortWeekdaysParse, llc);\n if (ii !== -1) {\n return ii;\n }\n ii = indexOf.call(this._minWeekdaysParse, llc);\n return ii !== -1 ? ii : null;\n } else if (format === 'ddd') {\n ii = indexOf.call(this._shortWeekdaysParse, llc);\n if (ii !== -1) {\n return ii;\n }\n ii = indexOf.call(this._weekdaysParse, llc);\n if (ii !== -1) {\n return ii;\n }\n ii = indexOf.call(this._minWeekdaysParse, llc);\n return ii !== -1 ? ii : null;\n } else {\n ii = indexOf.call(this._minWeekdaysParse, llc);\n if (ii !== -1) {\n return ii;\n }\n ii = indexOf.call(this._weekdaysParse, llc);\n if (ii !== -1) {\n return ii;\n }\n ii = indexOf.call(this._shortWeekdaysParse, llc);\n return ii !== -1 ? ii : null;\n }\n }\n }\n\n function localeWeekdaysParse(weekdayName, format, strict) {\n var i, mom, regex;\n\n if (this._weekdaysParseExact) {\n return handleStrictParse$1.call(this, weekdayName, format, strict);\n }\n\n if (!this._weekdaysParse) {\n this._weekdaysParse = [];\n this._minWeekdaysParse = [];\n this._shortWeekdaysParse = [];\n this._fullWeekdaysParse = [];\n }\n\n for (i = 0; i < 7; i++) {\n // make the regex if we don't have it already\n\n mom = createUTC([2000, 1]).day(i);\n if (strict && !this._fullWeekdaysParse[i]) {\n this._fullWeekdaysParse[i] = new RegExp(\n '^' + this.weekdays(mom, '').replace('.', '\\\\.?') + '$',\n 'i'\n );\n this._shortWeekdaysParse[i] = new RegExp(\n '^' + this.weekdaysShort(mom, '').replace('.', '\\\\.?') + '$',\n 'i'\n );\n this._minWeekdaysParse[i] = new RegExp(\n '^' + this.weekdaysMin(mom, '').replace('.', '\\\\.?') + '$',\n 'i'\n );\n }\n if (!this._weekdaysParse[i]) {\n regex =\n '^' +\n this.weekdays(mom, '') +\n '|^' +\n this.weekdaysShort(mom, '') +\n '|^' +\n this.weekdaysMin(mom, '');\n this._weekdaysParse[i] = new RegExp(regex.replace('.', ''), 'i');\n }\n // test the regex\n if (\n strict &&\n format === 'dddd' &&\n this._fullWeekdaysParse[i].test(weekdayName)\n ) {\n return i;\n } else if (\n strict &&\n format === 'ddd' &&\n this._shortWeekdaysParse[i].test(weekdayName)\n ) {\n return i;\n } else if (\n strict &&\n format === 'dd' &&\n this._minWeekdaysParse[i].test(weekdayName)\n ) {\n return i;\n } else if (!strict && this._weekdaysParse[i].test(weekdayName)) {\n return i;\n }\n }\n }\n\n // MOMENTS\n\n function getSetDayOfWeek(input) {\n if (!this.isValid()) {\n return input != null ? this : NaN;\n }\n var day = this._isUTC ? this._d.getUTCDay() : this._d.getDay();\n if (input != null) {\n input = parseWeekday(input, this.localeData());\n return this.add(input - day, 'd');\n } else {\n return day;\n }\n }\n\n function getSetLocaleDayOfWeek(input) {\n if (!this.isValid()) {\n return input != null ? this : NaN;\n }\n var weekday = (this.day() + 7 - this.localeData()._week.dow) % 7;\n return input == null ? weekday : this.add(input - weekday, 'd');\n }\n\n function getSetISODayOfWeek(input) {\n if (!this.isValid()) {\n return input != null ? this : NaN;\n }\n\n // behaves the same as moment#day except\n // as a getter, returns 7 instead of 0 (1-7 range instead of 0-6)\n // as a setter, sunday should belong to the previous week.\n\n if (input != null) {\n var weekday = parseIsoWeekday(input, this.localeData());\n return this.day(this.day() % 7 ? weekday : weekday - 7);\n } else {\n return this.day() || 7;\n }\n }\n\n function weekdaysRegex(isStrict) {\n if (this._weekdaysParseExact) {\n if (!hasOwnProp(this, '_weekdaysRegex')) {\n computeWeekdaysParse.call(this);\n }\n if (isStrict) {\n return this._weekdaysStrictRegex;\n } else {\n return this._weekdaysRegex;\n }\n } else {\n if (!hasOwnProp(this, '_weekdaysRegex')) {\n this._weekdaysRegex = defaultWeekdaysRegex;\n }\n return this._weekdaysStrictRegex && isStrict\n ? this._weekdaysStrictRegex\n : this._weekdaysRegex;\n }\n }\n\n function weekdaysShortRegex(isStrict) {\n if (this._weekdaysParseExact) {\n if (!hasOwnProp(this, '_weekdaysRegex')) {\n computeWeekdaysParse.call(this);\n }\n if (isStrict) {\n return this._weekdaysShortStrictRegex;\n } else {\n return this._weekdaysShortRegex;\n }\n } else {\n if (!hasOwnProp(this, '_weekdaysShortRegex')) {\n this._weekdaysShortRegex = defaultWeekdaysShortRegex;\n }\n return this._weekdaysShortStrictRegex && isStrict\n ? this._weekdaysShortStrictRegex\n : this._weekdaysShortRegex;\n }\n }\n\n function weekdaysMinRegex(isStrict) {\n if (this._weekdaysParseExact) {\n if (!hasOwnProp(this, '_weekdaysRegex')) {\n computeWeekdaysParse.call(this);\n }\n if (isStrict) {\n return this._weekdaysMinStrictRegex;\n } else {\n return this._weekdaysMinRegex;\n }\n } else {\n if (!hasOwnProp(this, '_weekdaysMinRegex')) {\n this._weekdaysMinRegex = defaultWeekdaysMinRegex;\n }\n return this._weekdaysMinStrictRegex && isStrict\n ? this._weekdaysMinStrictRegex\n : this._weekdaysMinRegex;\n }\n }\n\n function computeWeekdaysParse() {\n function cmpLenRev(a, b) {\n return b.length - a.length;\n }\n\n var minPieces = [],\n shortPieces = [],\n longPieces = [],\n mixedPieces = [],\n i,\n mom,\n minp,\n shortp,\n longp;\n for (i = 0; i < 7; i++) {\n // make the regex if we don't have it already\n mom = createUTC([2000, 1]).day(i);\n minp = regexEscape(this.weekdaysMin(mom, ''));\n shortp = regexEscape(this.weekdaysShort(mom, ''));\n longp = regexEscape(this.weekdays(mom, ''));\n minPieces.push(minp);\n shortPieces.push(shortp);\n longPieces.push(longp);\n mixedPieces.push(minp);\n mixedPieces.push(shortp);\n mixedPieces.push(longp);\n }\n // Sorting makes sure if one weekday (or abbr) is a prefix of another it\n // will match the longer piece.\n minPieces.sort(cmpLenRev);\n shortPieces.sort(cmpLenRev);\n longPieces.sort(cmpLenRev);\n mixedPieces.sort(cmpLenRev);\n\n this._weekdaysRegex = new RegExp('^(' + mixedPieces.join('|') + ')', 'i');\n this._weekdaysShortRegex = this._weekdaysRegex;\n this._weekdaysMinRegex = this._weekdaysRegex;\n\n this._weekdaysStrictRegex = new RegExp(\n '^(' + longPieces.join('|') + ')',\n 'i'\n );\n this._weekdaysShortStrictRegex = new RegExp(\n '^(' + shortPieces.join('|') + ')',\n 'i'\n );\n this._weekdaysMinStrictRegex = new RegExp(\n '^(' + minPieces.join('|') + ')',\n 'i'\n );\n }\n\n // FORMATTING\n\n function hFormat() {\n return this.hours() % 12 || 12;\n }\n\n function kFormat() {\n return this.hours() || 24;\n }\n\n addFormatToken('H', ['HH', 2], 0, 'hour');\n addFormatToken('h', ['hh', 2], 0, hFormat);\n addFormatToken('k', ['kk', 2], 0, kFormat);\n\n addFormatToken('hmm', 0, 0, function () {\n return '' + hFormat.apply(this) + zeroFill(this.minutes(), 2);\n });\n\n addFormatToken('hmmss', 0, 0, function () {\n return (\n '' +\n hFormat.apply(this) +\n zeroFill(this.minutes(), 2) +\n zeroFill(this.seconds(), 2)\n );\n });\n\n addFormatToken('Hmm', 0, 0, function () {\n return '' + this.hours() + zeroFill(this.minutes(), 2);\n });\n\n addFormatToken('Hmmss', 0, 0, function () {\n return (\n '' +\n this.hours() +\n zeroFill(this.minutes(), 2) +\n zeroFill(this.seconds(), 2)\n );\n });\n\n function meridiem(token, lowercase) {\n addFormatToken(token, 0, 0, function () {\n return this.localeData().meridiem(\n this.hours(),\n this.minutes(),\n lowercase\n );\n });\n }\n\n meridiem('a', true);\n meridiem('A', false);\n\n // ALIASES\n\n addUnitAlias('hour', 'h');\n\n // PRIORITY\n addUnitPriority('hour', 13);\n\n // PARSING\n\n function matchMeridiem(isStrict, locale) {\n return locale._meridiemParse;\n }\n\n addRegexToken('a', matchMeridiem);\n addRegexToken('A', matchMeridiem);\n addRegexToken('H', match1to2);\n addRegexToken('h', match1to2);\n addRegexToken('k', match1to2);\n addRegexToken('HH', match1to2, match2);\n addRegexToken('hh', match1to2, match2);\n addRegexToken('kk', match1to2, match2);\n\n addRegexToken('hmm', match3to4);\n addRegexToken('hmmss', match5to6);\n addRegexToken('Hmm', match3to4);\n addRegexToken('Hmmss', match5to6);\n\n addParseToken(['H', 'HH'], HOUR);\n addParseToken(['k', 'kk'], function (input, array, config) {\n var kInput = toInt(input);\n array[HOUR] = kInput === 24 ? 0 : kInput;\n });\n addParseToken(['a', 'A'], function (input, array, config) {\n config._isPm = config._locale.isPM(input);\n config._meridiem = input;\n });\n addParseToken(['h', 'hh'], function (input, array, config) {\n array[HOUR] = toInt(input);\n getParsingFlags(config).bigHour = true;\n });\n addParseToken('hmm', function (input, array, config) {\n var pos = input.length - 2;\n array[HOUR] = toInt(input.substr(0, pos));\n array[MINUTE] = toInt(input.substr(pos));\n getParsingFlags(config).bigHour = true;\n });\n addParseToken('hmmss', function (input, array, config) {\n var pos1 = input.length - 4,\n pos2 = input.length - 2;\n array[HOUR] = toInt(input.substr(0, pos1));\n array[MINUTE] = toInt(input.substr(pos1, 2));\n array[SECOND] = toInt(input.substr(pos2));\n getParsingFlags(config).bigHour = true;\n });\n addParseToken('Hmm', function (input, array, config) {\n var pos = input.length - 2;\n array[HOUR] = toInt(input.substr(0, pos));\n array[MINUTE] = toInt(input.substr(pos));\n });\n addParseToken('Hmmss', function (input, array, config) {\n var pos1 = input.length - 4,\n pos2 = input.length - 2;\n array[HOUR] = toInt(input.substr(0, pos1));\n array[MINUTE] = toInt(input.substr(pos1, 2));\n array[SECOND] = toInt(input.substr(pos2));\n });\n\n // LOCALES\n\n function localeIsPM(input) {\n // IE8 Quirks Mode & IE7 Standards Mode do not allow accessing strings like arrays\n // Using charAt should be more compatible.\n return (input + '').toLowerCase().charAt(0) === 'p';\n }\n\n var defaultLocaleMeridiemParse = /[ap]\\.?m?\\.?/i,\n // Setting the hour should keep the time, because the user explicitly\n // specified which hour they want. So trying to maintain the same hour (in\n // a new timezone) makes sense. Adding/subtracting hours does not follow\n // this rule.\n getSetHour = makeGetSet('Hours', true);\n\n function localeMeridiem(hours, minutes, isLower) {\n if (hours > 11) {\n return isLower ? 'pm' : 'PM';\n } else {\n return isLower ? 'am' : 'AM';\n }\n }\n\n var baseConfig = {\n calendar: defaultCalendar,\n longDateFormat: defaultLongDateFormat,\n invalidDate: defaultInvalidDate,\n ordinal: defaultOrdinal,\n dayOfMonthOrdinalParse: defaultDayOfMonthOrdinalParse,\n relativeTime: defaultRelativeTime,\n\n months: defaultLocaleMonths,\n monthsShort: defaultLocaleMonthsShort,\n\n week: defaultLocaleWeek,\n\n weekdays: defaultLocaleWeekdays,\n weekdaysMin: defaultLocaleWeekdaysMin,\n weekdaysShort: defaultLocaleWeekdaysShort,\n\n meridiemParse: defaultLocaleMeridiemParse,\n };\n\n // internal storage for locale config files\n var locales = {},\n localeFamilies = {},\n globalLocale;\n\n function commonPrefix(arr1, arr2) {\n var i,\n minl = Math.min(arr1.length, arr2.length);\n for (i = 0; i < minl; i += 1) {\n if (arr1[i] !== arr2[i]) {\n return i;\n }\n }\n return minl;\n }\n\n function normalizeLocale(key) {\n return key ? key.toLowerCase().replace('_', '-') : key;\n }\n\n // pick the locale from the array\n // try ['en-au', 'en-gb'] as 'en-au', 'en-gb', 'en', as in move through the list trying each\n // substring from most specific to least, but move to the next array item if it's a more specific variant than the current root\n function chooseLocale(names) {\n var i = 0,\n j,\n next,\n locale,\n split;\n\n while (i < names.length) {\n split = normalizeLocale(names[i]).split('-');\n j = split.length;\n next = normalizeLocale(names[i + 1]);\n next = next ? next.split('-') : null;\n while (j > 0) {\n locale = loadLocale(split.slice(0, j).join('-'));\n if (locale) {\n return locale;\n }\n if (\n next &&\n next.length >= j &&\n commonPrefix(split, next) >= j - 1\n ) {\n //the next array item is better than a shallower substring of this one\n break;\n }\n j--;\n }\n i++;\n }\n return globalLocale;\n }\n\n function isLocaleNameSane(name) {\n // Prevent names that look like filesystem paths, i.e contain '/' or '\\'\n return name.match('^[^/\\\\\\\\]*$') != null;\n }\n\n function loadLocale(name) {\n var oldLocale = null,\n aliasedRequire;\n // TODO: Find a better way to register and load all the locales in Node\n if (\n locales[name] === undefined &&\n typeof module !== 'undefined' &&\n module &&\n module.exports &&\n isLocaleNameSane(name)\n ) {\n try {\n oldLocale = globalLocale._abbr;\n aliasedRequire = require;\n aliasedRequire('./locale/' + name);\n getSetGlobalLocale(oldLocale);\n } catch (e) {\n // mark as not found to avoid repeating expensive file require call causing high CPU\n // when trying to find en-US, en_US, en-us for every format call\n locales[name] = null; // null means not found\n }\n }\n return locales[name];\n }\n\n // This function will load locale and then set the global locale. If\n // no arguments are passed in, it will simply return the current global\n // locale key.\n function getSetGlobalLocale(key, values) {\n var data;\n if (key) {\n if (isUndefined(values)) {\n data = getLocale(key);\n } else {\n data = defineLocale(key, values);\n }\n\n if (data) {\n // moment.duration._locale = moment._locale = data;\n globalLocale = data;\n } else {\n if (typeof console !== 'undefined' && console.warn) {\n //warn user if arguments are passed but the locale could not be set\n console.warn(\n 'Locale ' + key + ' not found. Did you forget to load it?'\n );\n }\n }\n }\n\n return globalLocale._abbr;\n }\n\n function defineLocale(name, config) {\n if (config !== null) {\n var locale,\n parentConfig = baseConfig;\n config.abbr = name;\n if (locales[name] != null) {\n deprecateSimple(\n 'defineLocaleOverride',\n 'use moment.updateLocale(localeName, config) to change ' +\n 'an existing locale. moment.defineLocale(localeName, ' +\n 'config) should only be used for creating a new locale ' +\n 'See http://momentjs.com/guides/#/warnings/define-locale/ for more info.'\n );\n parentConfig = locales[name]._config;\n } else if (config.parentLocale != null) {\n if (locales[config.parentLocale] != null) {\n parentConfig = locales[config.parentLocale]._config;\n } else {\n locale = loadLocale(config.parentLocale);\n if (locale != null) {\n parentConfig = locale._config;\n } else {\n if (!localeFamilies[config.parentLocale]) {\n localeFamilies[config.parentLocale] = [];\n }\n localeFamilies[config.parentLocale].push({\n name: name,\n config: config,\n });\n return null;\n }\n }\n }\n locales[name] = new Locale(mergeConfigs(parentConfig, config));\n\n if (localeFamilies[name]) {\n localeFamilies[name].forEach(function (x) {\n defineLocale(x.name, x.config);\n });\n }\n\n // backwards compat for now: also set the locale\n // make sure we set the locale AFTER all child locales have been\n // created, so we won't end up with the child locale set.\n getSetGlobalLocale(name);\n\n return locales[name];\n } else {\n // useful for testing\n delete locales[name];\n return null;\n }\n }\n\n function updateLocale(name, config) {\n if (config != null) {\n var locale,\n tmpLocale,\n parentConfig = baseConfig;\n\n if (locales[name] != null && locales[name].parentLocale != null) {\n // Update existing child locale in-place to avoid memory-leaks\n locales[name].set(mergeConfigs(locales[name]._config, config));\n } else {\n // MERGE\n tmpLocale = loadLocale(name);\n if (tmpLocale != null) {\n parentConfig = tmpLocale._config;\n }\n config = mergeConfigs(parentConfig, config);\n if (tmpLocale == null) {\n // updateLocale is called for creating a new locale\n // Set abbr so it will have a name (getters return\n // undefined otherwise).\n config.abbr = name;\n }\n locale = new Locale(config);\n locale.parentLocale = locales[name];\n locales[name] = locale;\n }\n\n // backwards compat for now: also set the locale\n getSetGlobalLocale(name);\n } else {\n // pass null for config to unupdate, useful for tests\n if (locales[name] != null) {\n if (locales[name].parentLocale != null) {\n locales[name] = locales[name].parentLocale;\n if (name === getSetGlobalLocale()) {\n getSetGlobalLocale(name);\n }\n } else if (locales[name] != null) {\n delete locales[name];\n }\n }\n }\n return locales[name];\n }\n\n // returns locale data\n function getLocale(key) {\n var locale;\n\n if (key && key._locale && key._locale._abbr) {\n key = key._locale._abbr;\n }\n\n if (!key) {\n return globalLocale;\n }\n\n if (!isArray(key)) {\n //short-circuit everything else\n locale = loadLocale(key);\n if (locale) {\n return locale;\n }\n key = [key];\n }\n\n return chooseLocale(key);\n }\n\n function listLocales() {\n return keys(locales);\n }\n\n function checkOverflow(m) {\n var overflow,\n a = m._a;\n\n if (a && getParsingFlags(m).overflow === -2) {\n overflow =\n a[MONTH] < 0 || a[MONTH] > 11\n ? MONTH\n : a[DATE] < 1 || a[DATE] > daysInMonth(a[YEAR], a[MONTH])\n ? DATE\n : a[HOUR] < 0 ||\n a[HOUR] > 24 ||\n (a[HOUR] === 24 &&\n (a[MINUTE] !== 0 ||\n a[SECOND] !== 0 ||\n a[MILLISECOND] !== 0))\n ? HOUR\n : a[MINUTE] < 0 || a[MINUTE] > 59\n ? MINUTE\n : a[SECOND] < 0 || a[SECOND] > 59\n ? SECOND\n : a[MILLISECOND] < 0 || a[MILLISECOND] > 999\n ? MILLISECOND\n : -1;\n\n if (\n getParsingFlags(m)._overflowDayOfYear &&\n (overflow < YEAR || overflow > DATE)\n ) {\n overflow = DATE;\n }\n if (getParsingFlags(m)._overflowWeeks && overflow === -1) {\n overflow = WEEK;\n }\n if (getParsingFlags(m)._overflowWeekday && overflow === -1) {\n overflow = WEEKDAY;\n }\n\n getParsingFlags(m).overflow = overflow;\n }\n\n return m;\n }\n\n // iso 8601 regex\n // 0000-00-00 0000-W00 or 0000-W00-0 + T + 00 or 00:00 or 00:00:00 or 00:00:00.000 + +00:00 or +0000 or +00)\n var extendedIsoRegex =\n /^\\s*((?:[+-]\\d{6}|\\d{4})-(?:\\d\\d-\\d\\d|W\\d\\d-\\d|W\\d\\d|\\d\\d\\d|\\d\\d))(?:(T| )(\\d\\d(?::\\d\\d(?::\\d\\d(?:[.,]\\d+)?)?)?)([+-]\\d\\d(?::?\\d\\d)?|\\s*Z)?)?$/,\n basicIsoRegex =\n /^\\s*((?:[+-]\\d{6}|\\d{4})(?:\\d\\d\\d\\d|W\\d\\d\\d|W\\d\\d|\\d\\d\\d|\\d\\d|))(?:(T| )(\\d\\d(?:\\d\\d(?:\\d\\d(?:[.,]\\d+)?)?)?)([+-]\\d\\d(?::?\\d\\d)?|\\s*Z)?)?$/,\n tzRegex = /Z|[+-]\\d\\d(?::?\\d\\d)?/,\n isoDates = [\n ['YYYYYY-MM-DD', /[+-]\\d{6}-\\d\\d-\\d\\d/],\n ['YYYY-MM-DD', /\\d{4}-\\d\\d-\\d\\d/],\n ['GGGG-[W]WW-E', /\\d{4}-W\\d\\d-\\d/],\n ['GGGG-[W]WW', /\\d{4}-W\\d\\d/, false],\n ['YYYY-DDD', /\\d{4}-\\d{3}/],\n ['YYYY-MM', /\\d{4}-\\d\\d/, false],\n ['YYYYYYMMDD', /[+-]\\d{10}/],\n ['YYYYMMDD', /\\d{8}/],\n ['GGGG[W]WWE', /\\d{4}W\\d{3}/],\n ['GGGG[W]WW', /\\d{4}W\\d{2}/, false],\n ['YYYYDDD', /\\d{7}/],\n ['YYYYMM', /\\d{6}/, false],\n ['YYYY', /\\d{4}/, false],\n ],\n // iso time formats and regexes\n isoTimes = [\n ['HH:mm:ss.SSSS', /\\d\\d:\\d\\d:\\d\\d\\.\\d+/],\n ['HH:mm:ss,SSSS', /\\d\\d:\\d\\d:\\d\\d,\\d+/],\n ['HH:mm:ss', /\\d\\d:\\d\\d:\\d\\d/],\n ['HH:mm', /\\d\\d:\\d\\d/],\n ['HHmmss.SSSS', /\\d\\d\\d\\d\\d\\d\\.\\d+/],\n ['HHmmss,SSSS', /\\d\\d\\d\\d\\d\\d,\\d+/],\n ['HHmmss', /\\d\\d\\d\\d\\d\\d/],\n ['HHmm', /\\d\\d\\d\\d/],\n ['HH', /\\d\\d/],\n ],\n aspNetJsonRegex = /^\\/?Date\\((-?\\d+)/i,\n // RFC 2822 regex: For details see https://tools.ietf.org/html/rfc2822#section-3.3\n rfc2822 =\n /^(?:(Mon|Tue|Wed|Thu|Fri|Sat|Sun),?\\s)?(\\d{1,2})\\s(Jan|Feb|Mar|Apr|May|Jun|Jul|Aug|Sep|Oct|Nov|Dec)\\s(\\d{2,4})\\s(\\d\\d):(\\d\\d)(?::(\\d\\d))?\\s(?:(UT|GMT|[ECMP][SD]T)|([Zz])|([+-]\\d{4}))$/,\n obsOffsets = {\n UT: 0,\n GMT: 0,\n EDT: -4 * 60,\n EST: -5 * 60,\n CDT: -5 * 60,\n CST: -6 * 60,\n MDT: -6 * 60,\n MST: -7 * 60,\n PDT: -7 * 60,\n PST: -8 * 60,\n };\n\n // date from iso format\n function configFromISO(config) {\n var i,\n l,\n string = config._i,\n match = extendedIsoRegex.exec(string) || basicIsoRegex.exec(string),\n allowTime,\n dateFormat,\n timeFormat,\n tzFormat,\n isoDatesLen = isoDates.length,\n isoTimesLen = isoTimes.length;\n\n if (match) {\n getParsingFlags(config).iso = true;\n for (i = 0, l = isoDatesLen; i < l; i++) {\n if (isoDates[i][1].exec(match[1])) {\n dateFormat = isoDates[i][0];\n allowTime = isoDates[i][2] !== false;\n break;\n }\n }\n if (dateFormat == null) {\n config._isValid = false;\n return;\n }\n if (match[3]) {\n for (i = 0, l = isoTimesLen; i < l; i++) {\n if (isoTimes[i][1].exec(match[3])) {\n // match[2] should be 'T' or space\n timeFormat = (match[2] || ' ') + isoTimes[i][0];\n break;\n }\n }\n if (timeFormat == null) {\n config._isValid = false;\n return;\n }\n }\n if (!allowTime && timeFormat != null) {\n config._isValid = false;\n return;\n }\n if (match[4]) {\n if (tzRegex.exec(match[4])) {\n tzFormat = 'Z';\n } else {\n config._isValid = false;\n return;\n }\n }\n config._f = dateFormat + (timeFormat || '') + (tzFormat || '');\n configFromStringAndFormat(config);\n } else {\n config._isValid = false;\n }\n }\n\n function extractFromRFC2822Strings(\n yearStr,\n monthStr,\n dayStr,\n hourStr,\n minuteStr,\n secondStr\n ) {\n var result = [\n untruncateYear(yearStr),\n defaultLocaleMonthsShort.indexOf(monthStr),\n parseInt(dayStr, 10),\n parseInt(hourStr, 10),\n parseInt(minuteStr, 10),\n ];\n\n if (secondStr) {\n result.push(parseInt(secondStr, 10));\n }\n\n return result;\n }\n\n function untruncateYear(yearStr) {\n var year = parseInt(yearStr, 10);\n if (year <= 49) {\n return 2000 + year;\n } else if (year <= 999) {\n return 1900 + year;\n }\n return year;\n }\n\n function preprocessRFC2822(s) {\n // Remove comments and folding whitespace and replace multiple-spaces with a single space\n return s\n .replace(/\\([^)]*\\)|[\\n\\t]/g, ' ')\n .replace(/(\\s\\s+)/g, ' ')\n .replace(/^\\s\\s*/, '')\n .replace(/\\s\\s*$/, '');\n }\n\n function checkWeekday(weekdayStr, parsedInput, config) {\n if (weekdayStr) {\n // TODO: Replace the vanilla JS Date object with an independent day-of-week check.\n var weekdayProvided = defaultLocaleWeekdaysShort.indexOf(weekdayStr),\n weekdayActual = new Date(\n parsedInput[0],\n parsedInput[1],\n parsedInput[2]\n ).getDay();\n if (weekdayProvided !== weekdayActual) {\n getParsingFlags(config).weekdayMismatch = true;\n config._isValid = false;\n return false;\n }\n }\n return true;\n }\n\n function calculateOffset(obsOffset, militaryOffset, numOffset) {\n if (obsOffset) {\n return obsOffsets[obsOffset];\n } else if (militaryOffset) {\n // the only allowed military tz is Z\n return 0;\n } else {\n var hm = parseInt(numOffset, 10),\n m = hm % 100,\n h = (hm - m) / 100;\n return h * 60 + m;\n }\n }\n\n // date and time from ref 2822 format\n function configFromRFC2822(config) {\n var match = rfc2822.exec(preprocessRFC2822(config._i)),\n parsedArray;\n if (match) {\n parsedArray = extractFromRFC2822Strings(\n match[4],\n match[3],\n match[2],\n match[5],\n match[6],\n match[7]\n );\n if (!checkWeekday(match[1], parsedArray, config)) {\n return;\n }\n\n config._a = parsedArray;\n config._tzm = calculateOffset(match[8], match[9], match[10]);\n\n config._d = createUTCDate.apply(null, config._a);\n config._d.setUTCMinutes(config._d.getUTCMinutes() - config._tzm);\n\n getParsingFlags(config).rfc2822 = true;\n } else {\n config._isValid = false;\n }\n }\n\n // date from 1) ASP.NET, 2) ISO, 3) RFC 2822 formats, or 4) optional fallback if parsing isn't strict\n function configFromString(config) {\n var matched = aspNetJsonRegex.exec(config._i);\n if (matched !== null) {\n config._d = new Date(+matched[1]);\n return;\n }\n\n configFromISO(config);\n if (config._isValid === false) {\n delete config._isValid;\n } else {\n return;\n }\n\n configFromRFC2822(config);\n if (config._isValid === false) {\n delete config._isValid;\n } else {\n return;\n }\n\n if (config._strict) {\n config._isValid = false;\n } else {\n // Final attempt, use Input Fallback\n hooks.createFromInputFallback(config);\n }\n }\n\n hooks.createFromInputFallback = deprecate(\n 'value provided is not in a recognized RFC2822 or ISO format. moment construction falls back to js Date(), ' +\n 'which is not reliable across all browsers and versions. Non RFC2822/ISO date formats are ' +\n 'discouraged. Please refer to http://momentjs.com/guides/#/warnings/js-date/ for more info.',\n function (config) {\n config._d = new Date(config._i + (config._useUTC ? ' UTC' : ''));\n }\n );\n\n // Pick the first defined of two or three arguments.\n function defaults(a, b, c) {\n if (a != null) {\n return a;\n }\n if (b != null) {\n return b;\n }\n return c;\n }\n\n function currentDateArray(config) {\n // hooks is actually the exported moment object\n var nowValue = new Date(hooks.now());\n if (config._useUTC) {\n return [\n nowValue.getUTCFullYear(),\n nowValue.getUTCMonth(),\n nowValue.getUTCDate(),\n ];\n }\n return [nowValue.getFullYear(), nowValue.getMonth(), nowValue.getDate()];\n }\n\n // convert an array to a date.\n // the array should mirror the parameters below\n // note: all values past the year are optional and will default to the lowest possible value.\n // [year, month, day , hour, minute, second, millisecond]\n function configFromArray(config) {\n var i,\n date,\n input = [],\n currentDate,\n expectedWeekday,\n yearToUse;\n\n if (config._d) {\n return;\n }\n\n currentDate = currentDateArray(config);\n\n //compute day of the year from weeks and weekdays\n if (config._w && config._a[DATE] == null && config._a[MONTH] == null) {\n dayOfYearFromWeekInfo(config);\n }\n\n //if the day of the year is set, figure out what it is\n if (config._dayOfYear != null) {\n yearToUse = defaults(config._a[YEAR], currentDate[YEAR]);\n\n if (\n config._dayOfYear > daysInYear(yearToUse) ||\n config._dayOfYear === 0\n ) {\n getParsingFlags(config)._overflowDayOfYear = true;\n }\n\n date = createUTCDate(yearToUse, 0, config._dayOfYear);\n config._a[MONTH] = date.getUTCMonth();\n config._a[DATE] = date.getUTCDate();\n }\n\n // Default to current date.\n // * if no year, month, day of month are given, default to today\n // * if day of month is given, default month and year\n // * if month is given, default only year\n // * if year is given, don't default anything\n for (i = 0; i < 3 && config._a[i] == null; ++i) {\n config._a[i] = input[i] = currentDate[i];\n }\n\n // Zero out whatever was not defaulted, including time\n for (; i < 7; i++) {\n config._a[i] = input[i] =\n config._a[i] == null ? (i === 2 ? 1 : 0) : config._a[i];\n }\n\n // Check for 24:00:00.000\n if (\n config._a[HOUR] === 24 &&\n config._a[MINUTE] === 0 &&\n config._a[SECOND] === 0 &&\n config._a[MILLISECOND] === 0\n ) {\n config._nextDay = true;\n config._a[HOUR] = 0;\n }\n\n config._d = (config._useUTC ? createUTCDate : createDate).apply(\n null,\n input\n );\n expectedWeekday = config._useUTC\n ? config._d.getUTCDay()\n : config._d.getDay();\n\n // Apply timezone offset from input. The actual utcOffset can be changed\n // with parseZone.\n if (config._tzm != null) {\n config._d.setUTCMinutes(config._d.getUTCMinutes() - config._tzm);\n }\n\n if (config._nextDay) {\n config._a[HOUR] = 24;\n }\n\n // check for mismatching day of week\n if (\n config._w &&\n typeof config._w.d !== 'undefined' &&\n config._w.d !== expectedWeekday\n ) {\n getParsingFlags(config).weekdayMismatch = true;\n }\n }\n\n function dayOfYearFromWeekInfo(config) {\n var w, weekYear, week, weekday, dow, doy, temp, weekdayOverflow, curWeek;\n\n w = config._w;\n if (w.GG != null || w.W != null || w.E != null) {\n dow = 1;\n doy = 4;\n\n // TODO: We need to take the current isoWeekYear, but that depends on\n // how we interpret now (local, utc, fixed offset). So create\n // a now version of current config (take local/utc/offset flags, and\n // create now).\n weekYear = defaults(\n w.GG,\n config._a[YEAR],\n weekOfYear(createLocal(), 1, 4).year\n );\n week = defaults(w.W, 1);\n weekday = defaults(w.E, 1);\n if (weekday < 1 || weekday > 7) {\n weekdayOverflow = true;\n }\n } else {\n dow = config._locale._week.dow;\n doy = config._locale._week.doy;\n\n curWeek = weekOfYear(createLocal(), dow, doy);\n\n weekYear = defaults(w.gg, config._a[YEAR], curWeek.year);\n\n // Default to current week.\n week = defaults(w.w, curWeek.week);\n\n if (w.d != null) {\n // weekday -- low day numbers are considered next week\n weekday = w.d;\n if (weekday < 0 || weekday > 6) {\n weekdayOverflow = true;\n }\n } else if (w.e != null) {\n // local weekday -- counting starts from beginning of week\n weekday = w.e + dow;\n if (w.e < 0 || w.e > 6) {\n weekdayOverflow = true;\n }\n } else {\n // default to beginning of week\n weekday = dow;\n }\n }\n if (week < 1 || week > weeksInYear(weekYear, dow, doy)) {\n getParsingFlags(config)._overflowWeeks = true;\n } else if (weekdayOverflow != null) {\n getParsingFlags(config)._overflowWeekday = true;\n } else {\n temp = dayOfYearFromWeeks(weekYear, week, weekday, dow, doy);\n config._a[YEAR] = temp.year;\n config._dayOfYear = temp.dayOfYear;\n }\n }\n\n // constant that refers to the ISO standard\n hooks.ISO_8601 = function () {};\n\n // constant that refers to the RFC 2822 form\n hooks.RFC_2822 = function () {};\n\n // date from string and format string\n function configFromStringAndFormat(config) {\n // TODO: Move this to another part of the creation flow to prevent circular deps\n if (config._f === hooks.ISO_8601) {\n configFromISO(config);\n return;\n }\n if (config._f === hooks.RFC_2822) {\n configFromRFC2822(config);\n return;\n }\n config._a = [];\n getParsingFlags(config).empty = true;\n\n // This array is used to make a Date, either with `new Date` or `Date.UTC`\n var string = '' + config._i,\n i,\n parsedInput,\n tokens,\n token,\n skipped,\n stringLength = string.length,\n totalParsedInputLength = 0,\n era,\n tokenLen;\n\n tokens =\n expandFormat(config._f, config._locale).match(formattingTokens) || [];\n tokenLen = tokens.length;\n for (i = 0; i < tokenLen; i++) {\n token = tokens[i];\n parsedInput = (string.match(getParseRegexForToken(token, config)) ||\n [])[0];\n if (parsedInput) {\n skipped = string.substr(0, string.indexOf(parsedInput));\n if (skipped.length > 0) {\n getParsingFlags(config).unusedInput.push(skipped);\n }\n string = string.slice(\n string.indexOf(parsedInput) + parsedInput.length\n );\n totalParsedInputLength += parsedInput.length;\n }\n // don't parse if it's not a known token\n if (formatTokenFunctions[token]) {\n if (parsedInput) {\n getParsingFlags(config).empty = false;\n } else {\n getParsingFlags(config).unusedTokens.push(token);\n }\n addTimeToArrayFromToken(token, parsedInput, config);\n } else if (config._strict && !parsedInput) {\n getParsingFlags(config).unusedTokens.push(token);\n }\n }\n\n // add remaining unparsed input length to the string\n getParsingFlags(config).charsLeftOver =\n stringLength - totalParsedInputLength;\n if (string.length > 0) {\n getParsingFlags(config).unusedInput.push(string);\n }\n\n // clear _12h flag if hour is <= 12\n if (\n config._a[HOUR] <= 12 &&\n getParsingFlags(config).bigHour === true &&\n config._a[HOUR] > 0\n ) {\n getParsingFlags(config).bigHour = undefined;\n }\n\n getParsingFlags(config).parsedDateParts = config._a.slice(0);\n getParsingFlags(config).meridiem = config._meridiem;\n // handle meridiem\n config._a[HOUR] = meridiemFixWrap(\n config._locale,\n config._a[HOUR],\n config._meridiem\n );\n\n // handle era\n era = getParsingFlags(config).era;\n if (era !== null) {\n config._a[YEAR] = config._locale.erasConvertYear(era, config._a[YEAR]);\n }\n\n configFromArray(config);\n checkOverflow(config);\n }\n\n function meridiemFixWrap(locale, hour, meridiem) {\n var isPm;\n\n if (meridiem == null) {\n // nothing to do\n return hour;\n }\n if (locale.meridiemHour != null) {\n return locale.meridiemHour(hour, meridiem);\n } else if (locale.isPM != null) {\n // Fallback\n isPm = locale.isPM(meridiem);\n if (isPm && hour < 12) {\n hour += 12;\n }\n if (!isPm && hour === 12) {\n hour = 0;\n }\n return hour;\n } else {\n // this is not supposed to happen\n return hour;\n }\n }\n\n // date from string and array of format strings\n function configFromStringAndArray(config) {\n var tempConfig,\n bestMoment,\n scoreToBeat,\n i,\n currentScore,\n validFormatFound,\n bestFormatIsValid = false,\n configfLen = config._f.length;\n\n if (configfLen === 0) {\n getParsingFlags(config).invalidFormat = true;\n config._d = new Date(NaN);\n return;\n }\n\n for (i = 0; i < configfLen; i++) {\n currentScore = 0;\n validFormatFound = false;\n tempConfig = copyConfig({}, config);\n if (config._useUTC != null) {\n tempConfig._useUTC = config._useUTC;\n }\n tempConfig._f = config._f[i];\n configFromStringAndFormat(tempConfig);\n\n if (isValid(tempConfig)) {\n validFormatFound = true;\n }\n\n // if there is any input that was not parsed add a penalty for that format\n currentScore += getParsingFlags(tempConfig).charsLeftOver;\n\n //or tokens\n currentScore += getParsingFlags(tempConfig).unusedTokens.length * 10;\n\n getParsingFlags(tempConfig).score = currentScore;\n\n if (!bestFormatIsValid) {\n if (\n scoreToBeat == null ||\n currentScore < scoreToBeat ||\n validFormatFound\n ) {\n scoreToBeat = currentScore;\n bestMoment = tempConfig;\n if (validFormatFound) {\n bestFormatIsValid = true;\n }\n }\n } else {\n if (currentScore < scoreToBeat) {\n scoreToBeat = currentScore;\n bestMoment = tempConfig;\n }\n }\n }\n\n extend(config, bestMoment || tempConfig);\n }\n\n function configFromObject(config) {\n if (config._d) {\n return;\n }\n\n var i = normalizeObjectUnits(config._i),\n dayOrDate = i.day === undefined ? i.date : i.day;\n config._a = map(\n [i.year, i.month, dayOrDate, i.hour, i.minute, i.second, i.millisecond],\n function (obj) {\n return obj && parseInt(obj, 10);\n }\n );\n\n configFromArray(config);\n }\n\n function createFromConfig(config) {\n var res = new Moment(checkOverflow(prepareConfig(config)));\n if (res._nextDay) {\n // Adding is smart enough around DST\n res.add(1, 'd');\n res._nextDay = undefined;\n }\n\n return res;\n }\n\n function prepareConfig(config) {\n var input = config._i,\n format = config._f;\n\n config._locale = config._locale || getLocale(config._l);\n\n if (input === null || (format === undefined && input === '')) {\n return createInvalid({ nullInput: true });\n }\n\n if (typeof input === 'string') {\n config._i = input = config._locale.preparse(input);\n }\n\n if (isMoment(input)) {\n return new Moment(checkOverflow(input));\n } else if (isDate(input)) {\n config._d = input;\n } else if (isArray(format)) {\n configFromStringAndArray(config);\n } else if (format) {\n configFromStringAndFormat(config);\n } else {\n configFromInput(config);\n }\n\n if (!isValid(config)) {\n config._d = null;\n }\n\n return config;\n }\n\n function configFromInput(config) {\n var input = config._i;\n if (isUndefined(input)) {\n config._d = new Date(hooks.now());\n } else if (isDate(input)) {\n config._d = new Date(input.valueOf());\n } else if (typeof input === 'string') {\n configFromString(config);\n } else if (isArray(input)) {\n config._a = map(input.slice(0), function (obj) {\n return parseInt(obj, 10);\n });\n configFromArray(config);\n } else if (isObject(input)) {\n configFromObject(config);\n } else if (isNumber(input)) {\n // from milliseconds\n config._d = new Date(input);\n } else {\n hooks.createFromInputFallback(config);\n }\n }\n\n function createLocalOrUTC(input, format, locale, strict, isUTC) {\n var c = {};\n\n if (format === true || format === false) {\n strict = format;\n format = undefined;\n }\n\n if (locale === true || locale === false) {\n strict = locale;\n locale = undefined;\n }\n\n if (\n (isObject(input) && isObjectEmpty(input)) ||\n (isArray(input) && input.length === 0)\n ) {\n input = undefined;\n }\n // object construction must be done this way.\n // https://github.com/moment/moment/issues/1423\n c._isAMomentObject = true;\n c._useUTC = c._isUTC = isUTC;\n c._l = locale;\n c._i = input;\n c._f = format;\n c._strict = strict;\n\n return createFromConfig(c);\n }\n\n function createLocal(input, format, locale, strict) {\n return createLocalOrUTC(input, format, locale, strict, false);\n }\n\n var prototypeMin = deprecate(\n 'moment().min is deprecated, use moment.max instead. http://momentjs.com/guides/#/warnings/min-max/',\n function () {\n var other = createLocal.apply(null, arguments);\n if (this.isValid() && other.isValid()) {\n return other < this ? this : other;\n } else {\n return createInvalid();\n }\n }\n ),\n prototypeMax = deprecate(\n 'moment().max is deprecated, use moment.min instead. http://momentjs.com/guides/#/warnings/min-max/',\n function () {\n var other = createLocal.apply(null, arguments);\n if (this.isValid() && other.isValid()) {\n return other > this ? this : other;\n } else {\n return createInvalid();\n }\n }\n );\n\n // Pick a moment m from moments so that m[fn](other) is true for all\n // other. This relies on the function fn to be transitive.\n //\n // moments should either be an array of moment objects or an array, whose\n // first element is an array of moment objects.\n function pickBy(fn, moments) {\n var res, i;\n if (moments.length === 1 && isArray(moments[0])) {\n moments = moments[0];\n }\n if (!moments.length) {\n return createLocal();\n }\n res = moments[0];\n for (i = 1; i < moments.length; ++i) {\n if (!moments[i].isValid() || moments[i][fn](res)) {\n res = moments[i];\n }\n }\n return res;\n }\n\n // TODO: Use [].sort instead?\n function min() {\n var args = [].slice.call(arguments, 0);\n\n return pickBy('isBefore', args);\n }\n\n function max() {\n var args = [].slice.call(arguments, 0);\n\n return pickBy('isAfter', args);\n }\n\n var now = function () {\n return Date.now ? Date.now() : +new Date();\n };\n\n var ordering = [\n 'year',\n 'quarter',\n 'month',\n 'week',\n 'day',\n 'hour',\n 'minute',\n 'second',\n 'millisecond',\n ];\n\n function isDurationValid(m) {\n var key,\n unitHasDecimal = false,\n i,\n orderLen = ordering.length;\n for (key in m) {\n if (\n hasOwnProp(m, key) &&\n !(\n indexOf.call(ordering, key) !== -1 &&\n (m[key] == null || !isNaN(m[key]))\n )\n ) {\n return false;\n }\n }\n\n for (i = 0; i < orderLen; ++i) {\n if (m[ordering[i]]) {\n if (unitHasDecimal) {\n return false; // only allow non-integers for smallest unit\n }\n if (parseFloat(m[ordering[i]]) !== toInt(m[ordering[i]])) {\n unitHasDecimal = true;\n }\n }\n }\n\n return true;\n }\n\n function isValid$1() {\n return this._isValid;\n }\n\n function createInvalid$1() {\n return createDuration(NaN);\n }\n\n function Duration(duration) {\n var normalizedInput = normalizeObjectUnits(duration),\n years = normalizedInput.year || 0,\n quarters = normalizedInput.quarter || 0,\n months = normalizedInput.month || 0,\n weeks = normalizedInput.week || normalizedInput.isoWeek || 0,\n days = normalizedInput.day || 0,\n hours = normalizedInput.hour || 0,\n minutes = normalizedInput.minute || 0,\n seconds = normalizedInput.second || 0,\n milliseconds = normalizedInput.millisecond || 0;\n\n this._isValid = isDurationValid(normalizedInput);\n\n // representation for dateAddRemove\n this._milliseconds =\n +milliseconds +\n seconds * 1e3 + // 1000\n minutes * 6e4 + // 1000 * 60\n hours * 1000 * 60 * 60; //using 1000 * 60 * 60 instead of 36e5 to avoid floating point rounding errors https://github.com/moment/moment/issues/2978\n // Because of dateAddRemove treats 24 hours as different from a\n // day when working around DST, we need to store them separately\n this._days = +days + weeks * 7;\n // It is impossible to translate months into days without knowing\n // which months you are are talking about, so we have to store\n // it separately.\n this._months = +months + quarters * 3 + years * 12;\n\n this._data = {};\n\n this._locale = getLocale();\n\n this._bubble();\n }\n\n function isDuration(obj) {\n return obj instanceof Duration;\n }\n\n function absRound(number) {\n if (number < 0) {\n return Math.round(-1 * number) * -1;\n } else {\n return Math.round(number);\n }\n }\n\n // compare two arrays, return the number of differences\n function compareArrays(array1, array2, dontConvert) {\n var len = Math.min(array1.length, array2.length),\n lengthDiff = Math.abs(array1.length - array2.length),\n diffs = 0,\n i;\n for (i = 0; i < len; i++) {\n if (\n (dontConvert && array1[i] !== array2[i]) ||\n (!dontConvert && toInt(array1[i]) !== toInt(array2[i]))\n ) {\n diffs++;\n }\n }\n return diffs + lengthDiff;\n }\n\n // FORMATTING\n\n function offset(token, separator) {\n addFormatToken(token, 0, 0, function () {\n var offset = this.utcOffset(),\n sign = '+';\n if (offset < 0) {\n offset = -offset;\n sign = '-';\n }\n return (\n sign +\n zeroFill(~~(offset / 60), 2) +\n separator +\n zeroFill(~~offset % 60, 2)\n );\n });\n }\n\n offset('Z', ':');\n offset('ZZ', '');\n\n // PARSING\n\n addRegexToken('Z', matchShortOffset);\n addRegexToken('ZZ', matchShortOffset);\n addParseToken(['Z', 'ZZ'], function (input, array, config) {\n config._useUTC = true;\n config._tzm = offsetFromString(matchShortOffset, input);\n });\n\n // HELPERS\n\n // timezone chunker\n // '+10:00' > ['10', '00']\n // '-1530' > ['-15', '30']\n var chunkOffset = /([\\+\\-]|\\d\\d)/gi;\n\n function offsetFromString(matcher, string) {\n var matches = (string || '').match(matcher),\n chunk,\n parts,\n minutes;\n\n if (matches === null) {\n return null;\n }\n\n chunk = matches[matches.length - 1] || [];\n parts = (chunk + '').match(chunkOffset) || ['-', 0, 0];\n minutes = +(parts[1] * 60) + toInt(parts[2]);\n\n return minutes === 0 ? 0 : parts[0] === '+' ? minutes : -minutes;\n }\n\n // Return a moment from input, that is local/utc/zone equivalent to model.\n function cloneWithOffset(input, model) {\n var res, diff;\n if (model._isUTC) {\n res = model.clone();\n diff =\n (isMoment(input) || isDate(input)\n ? input.valueOf()\n : createLocal(input).valueOf()) - res.valueOf();\n // Use low-level api, because this fn is low-level api.\n res._d.setTime(res._d.valueOf() + diff);\n hooks.updateOffset(res, false);\n return res;\n } else {\n return createLocal(input).local();\n }\n }\n\n function getDateOffset(m) {\n // On Firefox.24 Date#getTimezoneOffset returns a floating point.\n // https://github.com/moment/moment/pull/1871\n return -Math.round(m._d.getTimezoneOffset());\n }\n\n // HOOKS\n\n // This function will be called whenever a moment is mutated.\n // It is intended to keep the offset in sync with the timezone.\n hooks.updateOffset = function () {};\n\n // MOMENTS\n\n // keepLocalTime = true means only change the timezone, without\n // affecting the local hour. So 5:31:26 +0300 --[utcOffset(2, true)]-->\n // 5:31:26 +0200 It is possible that 5:31:26 doesn't exist with offset\n // +0200, so we adjust the time as needed, to be valid.\n //\n // Keeping the time actually adds/subtracts (one hour)\n // from the actual represented time. That is why we call updateOffset\n // a second time. In case it wants us to change the offset again\n // _changeInProgress == true case, then we have to adjust, because\n // there is no such time in the given timezone.\n function getSetOffset(input, keepLocalTime, keepMinutes) {\n var offset = this._offset || 0,\n localAdjust;\n if (!this.isValid()) {\n return input != null ? this : NaN;\n }\n if (input != null) {\n if (typeof input === 'string') {\n input = offsetFromString(matchShortOffset, input);\n if (input === null) {\n return this;\n }\n } else if (Math.abs(input) < 16 && !keepMinutes) {\n input = input * 60;\n }\n if (!this._isUTC && keepLocalTime) {\n localAdjust = getDateOffset(this);\n }\n this._offset = input;\n this._isUTC = true;\n if (localAdjust != null) {\n this.add(localAdjust, 'm');\n }\n if (offset !== input) {\n if (!keepLocalTime || this._changeInProgress) {\n addSubtract(\n this,\n createDuration(input - offset, 'm'),\n 1,\n false\n );\n } else if (!this._changeInProgress) {\n this._changeInProgress = true;\n hooks.updateOffset(this, true);\n this._changeInProgress = null;\n }\n }\n return this;\n } else {\n return this._isUTC ? offset : getDateOffset(this);\n }\n }\n\n function getSetZone(input, keepLocalTime) {\n if (input != null) {\n if (typeof input !== 'string') {\n input = -input;\n }\n\n this.utcOffset(input, keepLocalTime);\n\n return this;\n } else {\n return -this.utcOffset();\n }\n }\n\n function setOffsetToUTC(keepLocalTime) {\n return this.utcOffset(0, keepLocalTime);\n }\n\n function setOffsetToLocal(keepLocalTime) {\n if (this._isUTC) {\n this.utcOffset(0, keepLocalTime);\n this._isUTC = false;\n\n if (keepLocalTime) {\n this.subtract(getDateOffset(this), 'm');\n }\n }\n return this;\n }\n\n function setOffsetToParsedOffset() {\n if (this._tzm != null) {\n this.utcOffset(this._tzm, false, true);\n } else if (typeof this._i === 'string') {\n var tZone = offsetFromString(matchOffset, this._i);\n if (tZone != null) {\n this.utcOffset(tZone);\n } else {\n this.utcOffset(0, true);\n }\n }\n return this;\n }\n\n function hasAlignedHourOffset(input) {\n if (!this.isValid()) {\n return false;\n }\n input = input ? createLocal(input).utcOffset() : 0;\n\n return (this.utcOffset() - input) % 60 === 0;\n }\n\n function isDaylightSavingTime() {\n return (\n this.utcOffset() > this.clone().month(0).utcOffset() ||\n this.utcOffset() > this.clone().month(5).utcOffset()\n );\n }\n\n function isDaylightSavingTimeShifted() {\n if (!isUndefined(this._isDSTShifted)) {\n return this._isDSTShifted;\n }\n\n var c = {},\n other;\n\n copyConfig(c, this);\n c = prepareConfig(c);\n\n if (c._a) {\n other = c._isUTC ? createUTC(c._a) : createLocal(c._a);\n this._isDSTShifted =\n this.isValid() && compareArrays(c._a, other.toArray()) > 0;\n } else {\n this._isDSTShifted = false;\n }\n\n return this._isDSTShifted;\n }\n\n function isLocal() {\n return this.isValid() ? !this._isUTC : false;\n }\n\n function isUtcOffset() {\n return this.isValid() ? this._isUTC : false;\n }\n\n function isUtc() {\n return this.isValid() ? this._isUTC && this._offset === 0 : false;\n }\n\n // ASP.NET json date format regex\n var aspNetRegex = /^(-|\\+)?(?:(\\d*)[. ])?(\\d+):(\\d+)(?::(\\d+)(\\.\\d*)?)?$/,\n // from http://docs.closure-library.googlecode.com/git/closure_goog_date_date.js.source.html\n // somewhat more in line with 4.4.3.2 2004 spec, but allows decimal anywhere\n // and further modified to allow for strings containing both week and day\n isoRegex =\n /^(-|\\+)?P(?:([-+]?[0-9,.]*)Y)?(?:([-+]?[0-9,.]*)M)?(?:([-+]?[0-9,.]*)W)?(?:([-+]?[0-9,.]*)D)?(?:T(?:([-+]?[0-9,.]*)H)?(?:([-+]?[0-9,.]*)M)?(?:([-+]?[0-9,.]*)S)?)?$/;\n\n function createDuration(input, key) {\n var duration = input,\n // matching against regexp is expensive, do it on demand\n match = null,\n sign,\n ret,\n diffRes;\n\n if (isDuration(input)) {\n duration = {\n ms: input._milliseconds,\n d: input._days,\n M: input._months,\n };\n } else if (isNumber(input) || !isNaN(+input)) {\n duration = {};\n if (key) {\n duration[key] = +input;\n } else {\n duration.milliseconds = +input;\n }\n } else if ((match = aspNetRegex.exec(input))) {\n sign = match[1] === '-' ? -1 : 1;\n duration = {\n y: 0,\n d: toInt(match[DATE]) * sign,\n h: toInt(match[HOUR]) * sign,\n m: toInt(match[MINUTE]) * sign,\n s: toInt(match[SECOND]) * sign,\n ms: toInt(absRound(match[MILLISECOND] * 1000)) * sign, // the millisecond decimal point is included in the match\n };\n } else if ((match = isoRegex.exec(input))) {\n sign = match[1] === '-' ? -1 : 1;\n duration = {\n y: parseIso(match[2], sign),\n M: parseIso(match[3], sign),\n w: parseIso(match[4], sign),\n d: parseIso(match[5], sign),\n h: parseIso(match[6], sign),\n m: parseIso(match[7], sign),\n s: parseIso(match[8], sign),\n };\n } else if (duration == null) {\n // checks for null or undefined\n duration = {};\n } else if (\n typeof duration === 'object' &&\n ('from' in duration || 'to' in duration)\n ) {\n diffRes = momentsDifference(\n createLocal(duration.from),\n createLocal(duration.to)\n );\n\n duration = {};\n duration.ms = diffRes.milliseconds;\n duration.M = diffRes.months;\n }\n\n ret = new Duration(duration);\n\n if (isDuration(input) && hasOwnProp(input, '_locale')) {\n ret._locale = input._locale;\n }\n\n if (isDuration(input) && hasOwnProp(input, '_isValid')) {\n ret._isValid = input._isValid;\n }\n\n return ret;\n }\n\n createDuration.fn = Duration.prototype;\n createDuration.invalid = createInvalid$1;\n\n function parseIso(inp, sign) {\n // We'd normally use ~~inp for this, but unfortunately it also\n // converts floats to ints.\n // inp may be undefined, so careful calling replace on it.\n var res = inp && parseFloat(inp.replace(',', '.'));\n // apply sign while we're at it\n return (isNaN(res) ? 0 : res) * sign;\n }\n\n function positiveMomentsDifference(base, other) {\n var res = {};\n\n res.months =\n other.month() - base.month() + (other.year() - base.year()) * 12;\n if (base.clone().add(res.months, 'M').isAfter(other)) {\n --res.months;\n }\n\n res.milliseconds = +other - +base.clone().add(res.months, 'M');\n\n return res;\n }\n\n function momentsDifference(base, other) {\n var res;\n if (!(base.isValid() && other.isValid())) {\n return { milliseconds: 0, months: 0 };\n }\n\n other = cloneWithOffset(other, base);\n if (base.isBefore(other)) {\n res = positiveMomentsDifference(base, other);\n } else {\n res = positiveMomentsDifference(other, base);\n res.milliseconds = -res.milliseconds;\n res.months = -res.months;\n }\n\n return res;\n }\n\n // TODO: remove 'name' arg after deprecation is removed\n function createAdder(direction, name) {\n return function (val, period) {\n var dur, tmp;\n //invert the arguments, but complain about it\n if (period !== null && !isNaN(+period)) {\n deprecateSimple(\n name,\n 'moment().' +\n name +\n '(period, number) is deprecated. Please use moment().' +\n name +\n '(number, period). ' +\n 'See http://momentjs.com/guides/#/warnings/add-inverted-param/ for more info.'\n );\n tmp = val;\n val = period;\n period = tmp;\n }\n\n dur = createDuration(val, period);\n addSubtract(this, dur, direction);\n return this;\n };\n }\n\n function addSubtract(mom, duration, isAdding, updateOffset) {\n var milliseconds = duration._milliseconds,\n days = absRound(duration._days),\n months = absRound(duration._months);\n\n if (!mom.isValid()) {\n // No op\n return;\n }\n\n updateOffset = updateOffset == null ? true : updateOffset;\n\n if (months) {\n setMonth(mom, get(mom, 'Month') + months * isAdding);\n }\n if (days) {\n set$1(mom, 'Date', get(mom, 'Date') + days * isAdding);\n }\n if (milliseconds) {\n mom._d.setTime(mom._d.valueOf() + milliseconds * isAdding);\n }\n if (updateOffset) {\n hooks.updateOffset(mom, days || months);\n }\n }\n\n var add = createAdder(1, 'add'),\n subtract = createAdder(-1, 'subtract');\n\n function isString(input) {\n return typeof input === 'string' || input instanceof String;\n }\n\n // type MomentInput = Moment | Date | string | number | (number | string)[] | MomentInputObject | void; // null | undefined\n function isMomentInput(input) {\n return (\n isMoment(input) ||\n isDate(input) ||\n isString(input) ||\n isNumber(input) ||\n isNumberOrStringArray(input) ||\n isMomentInputObject(input) ||\n input === null ||\n input === undefined\n );\n }\n\n function isMomentInputObject(input) {\n var objectTest = isObject(input) && !isObjectEmpty(input),\n propertyTest = false,\n properties = [\n 'years',\n 'year',\n 'y',\n 'months',\n 'month',\n 'M',\n 'days',\n 'day',\n 'd',\n 'dates',\n 'date',\n 'D',\n 'hours',\n 'hour',\n 'h',\n 'minutes',\n 'minute',\n 'm',\n 'seconds',\n 'second',\n 's',\n 'milliseconds',\n 'millisecond',\n 'ms',\n ],\n i,\n property,\n propertyLen = properties.length;\n\n for (i = 0; i < propertyLen; i += 1) {\n property = properties[i];\n propertyTest = propertyTest || hasOwnProp(input, property);\n }\n\n return objectTest && propertyTest;\n }\n\n function isNumberOrStringArray(input) {\n var arrayTest = isArray(input),\n dataTypeTest = false;\n if (arrayTest) {\n dataTypeTest =\n input.filter(function (item) {\n return !isNumber(item) && isString(input);\n }).length === 0;\n }\n return arrayTest && dataTypeTest;\n }\n\n function isCalendarSpec(input) {\n var objectTest = isObject(input) && !isObjectEmpty(input),\n propertyTest = false,\n properties = [\n 'sameDay',\n 'nextDay',\n 'lastDay',\n 'nextWeek',\n 'lastWeek',\n 'sameElse',\n ],\n i,\n property;\n\n for (i = 0; i < properties.length; i += 1) {\n property = properties[i];\n propertyTest = propertyTest || hasOwnProp(input, property);\n }\n\n return objectTest && propertyTest;\n }\n\n function getCalendarFormat(myMoment, now) {\n var diff = myMoment.diff(now, 'days', true);\n return diff < -6\n ? 'sameElse'\n : diff < -1\n ? 'lastWeek'\n : diff < 0\n ? 'lastDay'\n : diff < 1\n ? 'sameDay'\n : diff < 2\n ? 'nextDay'\n : diff < 7\n ? 'nextWeek'\n : 'sameElse';\n }\n\n function calendar$1(time, formats) {\n // Support for single parameter, formats only overload to the calendar function\n if (arguments.length === 1) {\n if (!arguments[0]) {\n time = undefined;\n formats = undefined;\n } else if (isMomentInput(arguments[0])) {\n time = arguments[0];\n formats = undefined;\n } else if (isCalendarSpec(arguments[0])) {\n formats = arguments[0];\n time = undefined;\n }\n }\n // We want to compare the start of today, vs this.\n // Getting start-of-today depends on whether we're local/utc/offset or not.\n var now = time || createLocal(),\n sod = cloneWithOffset(now, this).startOf('day'),\n format = hooks.calendarFormat(this, sod) || 'sameElse',\n output =\n formats &&\n (isFunction(formats[format])\n ? formats[format].call(this, now)\n : formats[format]);\n\n return this.format(\n output || this.localeData().calendar(format, this, createLocal(now))\n );\n }\n\n function clone() {\n return new Moment(this);\n }\n\n function isAfter(input, units) {\n var localInput = isMoment(input) ? input : createLocal(input);\n if (!(this.isValid() && localInput.isValid())) {\n return false;\n }\n units = normalizeUnits(units) || 'millisecond';\n if (units === 'millisecond') {\n return this.valueOf() > localInput.valueOf();\n } else {\n return localInput.valueOf() < this.clone().startOf(units).valueOf();\n }\n }\n\n function isBefore(input, units) {\n var localInput = isMoment(input) ? input : createLocal(input);\n if (!(this.isValid() && localInput.isValid())) {\n return false;\n }\n units = normalizeUnits(units) || 'millisecond';\n if (units === 'millisecond') {\n return this.valueOf() < localInput.valueOf();\n } else {\n return this.clone().endOf(units).valueOf() < localInput.valueOf();\n }\n }\n\n function isBetween(from, to, units, inclusivity) {\n var localFrom = isMoment(from) ? from : createLocal(from),\n localTo = isMoment(to) ? to : createLocal(to);\n if (!(this.isValid() && localFrom.isValid() && localTo.isValid())) {\n return false;\n }\n inclusivity = inclusivity || '()';\n return (\n (inclusivity[0] === '('\n ? this.isAfter(localFrom, units)\n : !this.isBefore(localFrom, units)) &&\n (inclusivity[1] === ')'\n ? this.isBefore(localTo, units)\n : !this.isAfter(localTo, units))\n );\n }\n\n function isSame(input, units) {\n var localInput = isMoment(input) ? input : createLocal(input),\n inputMs;\n if (!(this.isValid() && localInput.isValid())) {\n return false;\n }\n units = normalizeUnits(units) || 'millisecond';\n if (units === 'millisecond') {\n return this.valueOf() === localInput.valueOf();\n } else {\n inputMs = localInput.valueOf();\n return (\n this.clone().startOf(units).valueOf() <= inputMs &&\n inputMs <= this.clone().endOf(units).valueOf()\n );\n }\n }\n\n function isSameOrAfter(input, units) {\n return this.isSame(input, units) || this.isAfter(input, units);\n }\n\n function isSameOrBefore(input, units) {\n return this.isSame(input, units) || this.isBefore(input, units);\n }\n\n function diff(input, units, asFloat) {\n var that, zoneDelta, output;\n\n if (!this.isValid()) {\n return NaN;\n }\n\n that = cloneWithOffset(input, this);\n\n if (!that.isValid()) {\n return NaN;\n }\n\n zoneDelta = (that.utcOffset() - this.utcOffset()) * 6e4;\n\n units = normalizeUnits(units);\n\n switch (units) {\n case 'year':\n output = monthDiff(this, that) / 12;\n break;\n case 'month':\n output = monthDiff(this, that);\n break;\n case 'quarter':\n output = monthDiff(this, that) / 3;\n break;\n case 'second':\n output = (this - that) / 1e3;\n break; // 1000\n case 'minute':\n output = (this - that) / 6e4;\n break; // 1000 * 60\n case 'hour':\n output = (this - that) / 36e5;\n break; // 1000 * 60 * 60\n case 'day':\n output = (this - that - zoneDelta) / 864e5;\n break; // 1000 * 60 * 60 * 24, negate dst\n case 'week':\n output = (this - that - zoneDelta) / 6048e5;\n break; // 1000 * 60 * 60 * 24 * 7, negate dst\n default:\n output = this - that;\n }\n\n return asFloat ? output : absFloor(output);\n }\n\n function monthDiff(a, b) {\n if (a.date() < b.date()) {\n // end-of-month calculations work correct when the start month has more\n // days than the end month.\n return -monthDiff(b, a);\n }\n // difference in months\n var wholeMonthDiff = (b.year() - a.year()) * 12 + (b.month() - a.month()),\n // b is in (anchor - 1 month, anchor + 1 month)\n anchor = a.clone().add(wholeMonthDiff, 'months'),\n anchor2,\n adjust;\n\n if (b - anchor < 0) {\n anchor2 = a.clone().add(wholeMonthDiff - 1, 'months');\n // linear across the month\n adjust = (b - anchor) / (anchor - anchor2);\n } else {\n anchor2 = a.clone().add(wholeMonthDiff + 1, 'months');\n // linear across the month\n adjust = (b - anchor) / (anchor2 - anchor);\n }\n\n //check for negative zero, return zero if negative zero\n return -(wholeMonthDiff + adjust) || 0;\n }\n\n hooks.defaultFormat = 'YYYY-MM-DDTHH:mm:ssZ';\n hooks.defaultFormatUtc = 'YYYY-MM-DDTHH:mm:ss[Z]';\n\n function toString() {\n return this.clone().locale('en').format('ddd MMM DD YYYY HH:mm:ss [GMT]ZZ');\n }\n\n function toISOString(keepOffset) {\n if (!this.isValid()) {\n return null;\n }\n var utc = keepOffset !== true,\n m = utc ? this.clone().utc() : this;\n if (m.year() < 0 || m.year() > 9999) {\n return formatMoment(\n m,\n utc\n ? 'YYYYYY-MM-DD[T]HH:mm:ss.SSS[Z]'\n : 'YYYYYY-MM-DD[T]HH:mm:ss.SSSZ'\n );\n }\n if (isFunction(Date.prototype.toISOString)) {\n // native implementation is ~50x faster, use it when we can\n if (utc) {\n return this.toDate().toISOString();\n } else {\n return new Date(this.valueOf() + this.utcOffset() * 60 * 1000)\n .toISOString()\n .replace('Z', formatMoment(m, 'Z'));\n }\n }\n return formatMoment(\n m,\n utc ? 'YYYY-MM-DD[T]HH:mm:ss.SSS[Z]' : 'YYYY-MM-DD[T]HH:mm:ss.SSSZ'\n );\n }\n\n /**\n * Return a human readable representation of a moment that can\n * also be evaluated to get a new moment which is the same\n *\n * @link https://nodejs.org/dist/latest/docs/api/util.html#util_custom_inspect_function_on_objects\n */\n function inspect() {\n if (!this.isValid()) {\n return 'moment.invalid(/* ' + this._i + ' */)';\n }\n var func = 'moment',\n zone = '',\n prefix,\n year,\n datetime,\n suffix;\n if (!this.isLocal()) {\n func = this.utcOffset() === 0 ? 'moment.utc' : 'moment.parseZone';\n zone = 'Z';\n }\n prefix = '[' + func + '(\"]';\n year = 0 <= this.year() && this.year() <= 9999 ? 'YYYY' : 'YYYYYY';\n datetime = '-MM-DD[T]HH:mm:ss.SSS';\n suffix = zone + '[\")]';\n\n return this.format(prefix + year + datetime + suffix);\n }\n\n function format(inputString) {\n if (!inputString) {\n inputString = this.isUtc()\n ? hooks.defaultFormatUtc\n : hooks.defaultFormat;\n }\n var output = formatMoment(this, inputString);\n return this.localeData().postformat(output);\n }\n\n function from(time, withoutSuffix) {\n if (\n this.isValid() &&\n ((isMoment(time) && time.isValid()) || createLocal(time).isValid())\n ) {\n return createDuration({ to: this, from: time })\n .locale(this.locale())\n .humanize(!withoutSuffix);\n } else {\n return this.localeData().invalidDate();\n }\n }\n\n function fromNow(withoutSuffix) {\n return this.from(createLocal(), withoutSuffix);\n }\n\n function to(time, withoutSuffix) {\n if (\n this.isValid() &&\n ((isMoment(time) && time.isValid()) || createLocal(time).isValid())\n ) {\n return createDuration({ from: this, to: time })\n .locale(this.locale())\n .humanize(!withoutSuffix);\n } else {\n return this.localeData().invalidDate();\n }\n }\n\n function toNow(withoutSuffix) {\n return this.to(createLocal(), withoutSuffix);\n }\n\n // If passed a locale key, it will set the locale for this\n // instance. Otherwise, it will return the locale configuration\n // variables for this instance.\n function locale(key) {\n var newLocaleData;\n\n if (key === undefined) {\n return this._locale._abbr;\n } else {\n newLocaleData = getLocale(key);\n if (newLocaleData != null) {\n this._locale = newLocaleData;\n }\n return this;\n }\n }\n\n var lang = deprecate(\n 'moment().lang() is deprecated. Instead, use moment().localeData() to get the language configuration. Use moment().locale() to change languages.',\n function (key) {\n if (key === undefined) {\n return this.localeData();\n } else {\n return this.locale(key);\n }\n }\n );\n\n function localeData() {\n return this._locale;\n }\n\n var MS_PER_SECOND = 1000,\n MS_PER_MINUTE = 60 * MS_PER_SECOND,\n MS_PER_HOUR = 60 * MS_PER_MINUTE,\n MS_PER_400_YEARS = (365 * 400 + 97) * 24 * MS_PER_HOUR;\n\n // actual modulo - handles negative numbers (for dates before 1970):\n function mod$1(dividend, divisor) {\n return ((dividend % divisor) + divisor) % divisor;\n }\n\n function localStartOfDate(y, m, d) {\n // the date constructor remaps years 0-99 to 1900-1999\n if (y < 100 && y >= 0) {\n // preserve leap years using a full 400 year cycle, then reset\n return new Date(y + 400, m, d) - MS_PER_400_YEARS;\n } else {\n return new Date(y, m, d).valueOf();\n }\n }\n\n function utcStartOfDate(y, m, d) {\n // Date.UTC remaps years 0-99 to 1900-1999\n if (y < 100 && y >= 0) {\n // preserve leap years using a full 400 year cycle, then reset\n return Date.UTC(y + 400, m, d) - MS_PER_400_YEARS;\n } else {\n return Date.UTC(y, m, d);\n }\n }\n\n function startOf(units) {\n var time, startOfDate;\n units = normalizeUnits(units);\n if (units === undefined || units === 'millisecond' || !this.isValid()) {\n return this;\n }\n\n startOfDate = this._isUTC ? utcStartOfDate : localStartOfDate;\n\n switch (units) {\n case 'year':\n time = startOfDate(this.year(), 0, 1);\n break;\n case 'quarter':\n time = startOfDate(\n this.year(),\n this.month() - (this.month() % 3),\n 1\n );\n break;\n case 'month':\n time = startOfDate(this.year(), this.month(), 1);\n break;\n case 'week':\n time = startOfDate(\n this.year(),\n this.month(),\n this.date() - this.weekday()\n );\n break;\n case 'isoWeek':\n time = startOfDate(\n this.year(),\n this.month(),\n this.date() - (this.isoWeekday() - 1)\n );\n break;\n case 'day':\n case 'date':\n time = startOfDate(this.year(), this.month(), this.date());\n break;\n case 'hour':\n time = this._d.valueOf();\n time -= mod$1(\n time + (this._isUTC ? 0 : this.utcOffset() * MS_PER_MINUTE),\n MS_PER_HOUR\n );\n break;\n case 'minute':\n time = this._d.valueOf();\n time -= mod$1(time, MS_PER_MINUTE);\n break;\n case 'second':\n time = this._d.valueOf();\n time -= mod$1(time, MS_PER_SECOND);\n break;\n }\n\n this._d.setTime(time);\n hooks.updateOffset(this, true);\n return this;\n }\n\n function endOf(units) {\n var time, startOfDate;\n units = normalizeUnits(units);\n if (units === undefined || units === 'millisecond' || !this.isValid()) {\n return this;\n }\n\n startOfDate = this._isUTC ? utcStartOfDate : localStartOfDate;\n\n switch (units) {\n case 'year':\n time = startOfDate(this.year() + 1, 0, 1) - 1;\n break;\n case 'quarter':\n time =\n startOfDate(\n this.year(),\n this.month() - (this.month() % 3) + 3,\n 1\n ) - 1;\n break;\n case 'month':\n time = startOfDate(this.year(), this.month() + 1, 1) - 1;\n break;\n case 'week':\n time =\n startOfDate(\n this.year(),\n this.month(),\n this.date() - this.weekday() + 7\n ) - 1;\n break;\n case 'isoWeek':\n time =\n startOfDate(\n this.year(),\n this.month(),\n this.date() - (this.isoWeekday() - 1) + 7\n ) - 1;\n break;\n case 'day':\n case 'date':\n time = startOfDate(this.year(), this.month(), this.date() + 1) - 1;\n break;\n case 'hour':\n time = this._d.valueOf();\n time +=\n MS_PER_HOUR -\n mod$1(\n time + (this._isUTC ? 0 : this.utcOffset() * MS_PER_MINUTE),\n MS_PER_HOUR\n ) -\n 1;\n break;\n case 'minute':\n time = this._d.valueOf();\n time += MS_PER_MINUTE - mod$1(time, MS_PER_MINUTE) - 1;\n break;\n case 'second':\n time = this._d.valueOf();\n time += MS_PER_SECOND - mod$1(time, MS_PER_SECOND) - 1;\n break;\n }\n\n this._d.setTime(time);\n hooks.updateOffset(this, true);\n return this;\n }\n\n function valueOf() {\n return this._d.valueOf() - (this._offset || 0) * 60000;\n }\n\n function unix() {\n return Math.floor(this.valueOf() / 1000);\n }\n\n function toDate() {\n return new Date(this.valueOf());\n }\n\n function toArray() {\n var m = this;\n return [\n m.year(),\n m.month(),\n m.date(),\n m.hour(),\n m.minute(),\n m.second(),\n m.millisecond(),\n ];\n }\n\n function toObject() {\n var m = this;\n return {\n years: m.year(),\n months: m.month(),\n date: m.date(),\n hours: m.hours(),\n minutes: m.minutes(),\n seconds: m.seconds(),\n milliseconds: m.milliseconds(),\n };\n }\n\n function toJSON() {\n // new Date(NaN).toJSON() === null\n return this.isValid() ? this.toISOString() : null;\n }\n\n function isValid$2() {\n return isValid(this);\n }\n\n function parsingFlags() {\n return extend({}, getParsingFlags(this));\n }\n\n function invalidAt() {\n return getParsingFlags(this).overflow;\n }\n\n function creationData() {\n return {\n input: this._i,\n format: this._f,\n locale: this._locale,\n isUTC: this._isUTC,\n strict: this._strict,\n };\n }\n\n addFormatToken('N', 0, 0, 'eraAbbr');\n addFormatToken('NN', 0, 0, 'eraAbbr');\n addFormatToken('NNN', 0, 0, 'eraAbbr');\n addFormatToken('NNNN', 0, 0, 'eraName');\n addFormatToken('NNNNN', 0, 0, 'eraNarrow');\n\n addFormatToken('y', ['y', 1], 'yo', 'eraYear');\n addFormatToken('y', ['yy', 2], 0, 'eraYear');\n addFormatToken('y', ['yyy', 3], 0, 'eraYear');\n addFormatToken('y', ['yyyy', 4], 0, 'eraYear');\n\n addRegexToken('N', matchEraAbbr);\n addRegexToken('NN', matchEraAbbr);\n addRegexToken('NNN', matchEraAbbr);\n addRegexToken('NNNN', matchEraName);\n addRegexToken('NNNNN', matchEraNarrow);\n\n addParseToken(\n ['N', 'NN', 'NNN', 'NNNN', 'NNNNN'],\n function (input, array, config, token) {\n var era = config._locale.erasParse(input, token, config._strict);\n if (era) {\n getParsingFlags(config).era = era;\n } else {\n getParsingFlags(config).invalidEra = input;\n }\n }\n );\n\n addRegexToken('y', matchUnsigned);\n addRegexToken('yy', matchUnsigned);\n addRegexToken('yyy', matchUnsigned);\n addRegexToken('yyyy', matchUnsigned);\n addRegexToken('yo', matchEraYearOrdinal);\n\n addParseToken(['y', 'yy', 'yyy', 'yyyy'], YEAR);\n addParseToken(['yo'], function (input, array, config, token) {\n var match;\n if (config._locale._eraYearOrdinalRegex) {\n match = input.match(config._locale._eraYearOrdinalRegex);\n }\n\n if (config._locale.eraYearOrdinalParse) {\n array[YEAR] = config._locale.eraYearOrdinalParse(input, match);\n } else {\n array[YEAR] = parseInt(input, 10);\n }\n });\n\n function localeEras(m, format) {\n var i,\n l,\n date,\n eras = this._eras || getLocale('en')._eras;\n for (i = 0, l = eras.length; i < l; ++i) {\n switch (typeof eras[i].since) {\n case 'string':\n // truncate time\n date = hooks(eras[i].since).startOf('day');\n eras[i].since = date.valueOf();\n break;\n }\n\n switch (typeof eras[i].until) {\n case 'undefined':\n eras[i].until = +Infinity;\n break;\n case 'string':\n // truncate time\n date = hooks(eras[i].until).startOf('day').valueOf();\n eras[i].until = date.valueOf();\n break;\n }\n }\n return eras;\n }\n\n function localeErasParse(eraName, format, strict) {\n var i,\n l,\n eras = this.eras(),\n name,\n abbr,\n narrow;\n eraName = eraName.toUpperCase();\n\n for (i = 0, l = eras.length; i < l; ++i) {\n name = eras[i].name.toUpperCase();\n abbr = eras[i].abbr.toUpperCase();\n narrow = eras[i].narrow.toUpperCase();\n\n if (strict) {\n switch (format) {\n case 'N':\n case 'NN':\n case 'NNN':\n if (abbr === eraName) {\n return eras[i];\n }\n break;\n\n case 'NNNN':\n if (name === eraName) {\n return eras[i];\n }\n break;\n\n case 'NNNNN':\n if (narrow === eraName) {\n return eras[i];\n }\n break;\n }\n } else if ([name, abbr, narrow].indexOf(eraName) >= 0) {\n return eras[i];\n }\n }\n }\n\n function localeErasConvertYear(era, year) {\n var dir = era.since <= era.until ? +1 : -1;\n if (year === undefined) {\n return hooks(era.since).year();\n } else {\n return hooks(era.since).year() + (year - era.offset) * dir;\n }\n }\n\n function getEraName() {\n var i,\n l,\n val,\n eras = this.localeData().eras();\n for (i = 0, l = eras.length; i < l; ++i) {\n // truncate time\n val = this.clone().startOf('day').valueOf();\n\n if (eras[i].since <= val && val <= eras[i].until) {\n return eras[i].name;\n }\n if (eras[i].until <= val && val <= eras[i].since) {\n return eras[i].name;\n }\n }\n\n return '';\n }\n\n function getEraNarrow() {\n var i,\n l,\n val,\n eras = this.localeData().eras();\n for (i = 0, l = eras.length; i < l; ++i) {\n // truncate time\n val = this.clone().startOf('day').valueOf();\n\n if (eras[i].since <= val && val <= eras[i].until) {\n return eras[i].narrow;\n }\n if (eras[i].until <= val && val <= eras[i].since) {\n return eras[i].narrow;\n }\n }\n\n return '';\n }\n\n function getEraAbbr() {\n var i,\n l,\n val,\n eras = this.localeData().eras();\n for (i = 0, l = eras.length; i < l; ++i) {\n // truncate time\n val = this.clone().startOf('day').valueOf();\n\n if (eras[i].since <= val && val <= eras[i].until) {\n return eras[i].abbr;\n }\n if (eras[i].until <= val && val <= eras[i].since) {\n return eras[i].abbr;\n }\n }\n\n return '';\n }\n\n function getEraYear() {\n var i,\n l,\n dir,\n val,\n eras = this.localeData().eras();\n for (i = 0, l = eras.length; i < l; ++i) {\n dir = eras[i].since <= eras[i].until ? +1 : -1;\n\n // truncate time\n val = this.clone().startOf('day').valueOf();\n\n if (\n (eras[i].since <= val && val <= eras[i].until) ||\n (eras[i].until <= val && val <= eras[i].since)\n ) {\n return (\n (this.year() - hooks(eras[i].since).year()) * dir +\n eras[i].offset\n );\n }\n }\n\n return this.year();\n }\n\n function erasNameRegex(isStrict) {\n if (!hasOwnProp(this, '_erasNameRegex')) {\n computeErasParse.call(this);\n }\n return isStrict ? this._erasNameRegex : this._erasRegex;\n }\n\n function erasAbbrRegex(isStrict) {\n if (!hasOwnProp(this, '_erasAbbrRegex')) {\n computeErasParse.call(this);\n }\n return isStrict ? this._erasAbbrRegex : this._erasRegex;\n }\n\n function erasNarrowRegex(isStrict) {\n if (!hasOwnProp(this, '_erasNarrowRegex')) {\n computeErasParse.call(this);\n }\n return isStrict ? this._erasNarrowRegex : this._erasRegex;\n }\n\n function matchEraAbbr(isStrict, locale) {\n return locale.erasAbbrRegex(isStrict);\n }\n\n function matchEraName(isStrict, locale) {\n return locale.erasNameRegex(isStrict);\n }\n\n function matchEraNarrow(isStrict, locale) {\n return locale.erasNarrowRegex(isStrict);\n }\n\n function matchEraYearOrdinal(isStrict, locale) {\n return locale._eraYearOrdinalRegex || matchUnsigned;\n }\n\n function computeErasParse() {\n var abbrPieces = [],\n namePieces = [],\n narrowPieces = [],\n mixedPieces = [],\n i,\n l,\n eras = this.eras();\n\n for (i = 0, l = eras.length; i < l; ++i) {\n namePieces.push(regexEscape(eras[i].name));\n abbrPieces.push(regexEscape(eras[i].abbr));\n narrowPieces.push(regexEscape(eras[i].narrow));\n\n mixedPieces.push(regexEscape(eras[i].name));\n mixedPieces.push(regexEscape(eras[i].abbr));\n mixedPieces.push(regexEscape(eras[i].narrow));\n }\n\n this._erasRegex = new RegExp('^(' + mixedPieces.join('|') + ')', 'i');\n this._erasNameRegex = new RegExp('^(' + namePieces.join('|') + ')', 'i');\n this._erasAbbrRegex = new RegExp('^(' + abbrPieces.join('|') + ')', 'i');\n this._erasNarrowRegex = new RegExp(\n '^(' + narrowPieces.join('|') + ')',\n 'i'\n );\n }\n\n // FORMATTING\n\n addFormatToken(0, ['gg', 2], 0, function () {\n return this.weekYear() % 100;\n });\n\n addFormatToken(0, ['GG', 2], 0, function () {\n return this.isoWeekYear() % 100;\n });\n\n function addWeekYearFormatToken(token, getter) {\n addFormatToken(0, [token, token.length], 0, getter);\n }\n\n addWeekYearFormatToken('gggg', 'weekYear');\n addWeekYearFormatToken('ggggg', 'weekYear');\n addWeekYearFormatToken('GGGG', 'isoWeekYear');\n addWeekYearFormatToken('GGGGG', 'isoWeekYear');\n\n // ALIASES\n\n addUnitAlias('weekYear', 'gg');\n addUnitAlias('isoWeekYear', 'GG');\n\n // PRIORITY\n\n addUnitPriority('weekYear', 1);\n addUnitPriority('isoWeekYear', 1);\n\n // PARSING\n\n addRegexToken('G', matchSigned);\n addRegexToken('g', matchSigned);\n addRegexToken('GG', match1to2, match2);\n addRegexToken('gg', match1to2, match2);\n addRegexToken('GGGG', match1to4, match4);\n addRegexToken('gggg', match1to4, match4);\n addRegexToken('GGGGG', match1to6, match6);\n addRegexToken('ggggg', match1to6, match6);\n\n addWeekParseToken(\n ['gggg', 'ggggg', 'GGGG', 'GGGGG'],\n function (input, week, config, token) {\n week[token.substr(0, 2)] = toInt(input);\n }\n );\n\n addWeekParseToken(['gg', 'GG'], function (input, week, config, token) {\n week[token] = hooks.parseTwoDigitYear(input);\n });\n\n // MOMENTS\n\n function getSetWeekYear(input) {\n return getSetWeekYearHelper.call(\n this,\n input,\n this.week(),\n this.weekday(),\n this.localeData()._week.dow,\n this.localeData()._week.doy\n );\n }\n\n function getSetISOWeekYear(input) {\n return getSetWeekYearHelper.call(\n this,\n input,\n this.isoWeek(),\n this.isoWeekday(),\n 1,\n 4\n );\n }\n\n function getISOWeeksInYear() {\n return weeksInYear(this.year(), 1, 4);\n }\n\n function getISOWeeksInISOWeekYear() {\n return weeksInYear(this.isoWeekYear(), 1, 4);\n }\n\n function getWeeksInYear() {\n var weekInfo = this.localeData()._week;\n return weeksInYear(this.year(), weekInfo.dow, weekInfo.doy);\n }\n\n function getWeeksInWeekYear() {\n var weekInfo = this.localeData()._week;\n return weeksInYear(this.weekYear(), weekInfo.dow, weekInfo.doy);\n }\n\n function getSetWeekYearHelper(input, week, weekday, dow, doy) {\n var weeksTarget;\n if (input == null) {\n return weekOfYear(this, dow, doy).year;\n } else {\n weeksTarget = weeksInYear(input, dow, doy);\n if (week > weeksTarget) {\n week = weeksTarget;\n }\n return setWeekAll.call(this, input, week, weekday, dow, doy);\n }\n }\n\n function setWeekAll(weekYear, week, weekday, dow, doy) {\n var dayOfYearData = dayOfYearFromWeeks(weekYear, week, weekday, dow, doy),\n date = createUTCDate(dayOfYearData.year, 0, dayOfYearData.dayOfYear);\n\n this.year(date.getUTCFullYear());\n this.month(date.getUTCMonth());\n this.date(date.getUTCDate());\n return this;\n }\n\n // FORMATTING\n\n addFormatToken('Q', 0, 'Qo', 'quarter');\n\n // ALIASES\n\n addUnitAlias('quarter', 'Q');\n\n // PRIORITY\n\n addUnitPriority('quarter', 7);\n\n // PARSING\n\n addRegexToken('Q', match1);\n addParseToken('Q', function (input, array) {\n array[MONTH] = (toInt(input) - 1) * 3;\n });\n\n // MOMENTS\n\n function getSetQuarter(input) {\n return input == null\n ? Math.ceil((this.month() + 1) / 3)\n : this.month((input - 1) * 3 + (this.month() % 3));\n }\n\n // FORMATTING\n\n addFormatToken('D', ['DD', 2], 'Do', 'date');\n\n // ALIASES\n\n addUnitAlias('date', 'D');\n\n // PRIORITY\n addUnitPriority('date', 9);\n\n // PARSING\n\n addRegexToken('D', match1to2);\n addRegexToken('DD', match1to2, match2);\n addRegexToken('Do', function (isStrict, locale) {\n // TODO: Remove \"ordinalParse\" fallback in next major release.\n return isStrict\n ? locale._dayOfMonthOrdinalParse || locale._ordinalParse\n : locale._dayOfMonthOrdinalParseLenient;\n });\n\n addParseToken(['D', 'DD'], DATE);\n addParseToken('Do', function (input, array) {\n array[DATE] = toInt(input.match(match1to2)[0]);\n });\n\n // MOMENTS\n\n var getSetDayOfMonth = makeGetSet('Date', true);\n\n // FORMATTING\n\n addFormatToken('DDD', ['DDDD', 3], 'DDDo', 'dayOfYear');\n\n // ALIASES\n\n addUnitAlias('dayOfYear', 'DDD');\n\n // PRIORITY\n addUnitPriority('dayOfYear', 4);\n\n // PARSING\n\n addRegexToken('DDD', match1to3);\n addRegexToken('DDDD', match3);\n addParseToken(['DDD', 'DDDD'], function (input, array, config) {\n config._dayOfYear = toInt(input);\n });\n\n // HELPERS\n\n // MOMENTS\n\n function getSetDayOfYear(input) {\n var dayOfYear =\n Math.round(\n (this.clone().startOf('day') - this.clone().startOf('year')) / 864e5\n ) + 1;\n return input == null ? dayOfYear : this.add(input - dayOfYear, 'd');\n }\n\n // FORMATTING\n\n addFormatToken('m', ['mm', 2], 0, 'minute');\n\n // ALIASES\n\n addUnitAlias('minute', 'm');\n\n // PRIORITY\n\n addUnitPriority('minute', 14);\n\n // PARSING\n\n addRegexToken('m', match1to2);\n addRegexToken('mm', match1to2, match2);\n addParseToken(['m', 'mm'], MINUTE);\n\n // MOMENTS\n\n var getSetMinute = makeGetSet('Minutes', false);\n\n // FORMATTING\n\n addFormatToken('s', ['ss', 2], 0, 'second');\n\n // ALIASES\n\n addUnitAlias('second', 's');\n\n // PRIORITY\n\n addUnitPriority('second', 15);\n\n // PARSING\n\n addRegexToken('s', match1to2);\n addRegexToken('ss', match1to2, match2);\n addParseToken(['s', 'ss'], SECOND);\n\n // MOMENTS\n\n var getSetSecond = makeGetSet('Seconds', false);\n\n // FORMATTING\n\n addFormatToken('S', 0, 0, function () {\n return ~~(this.millisecond() / 100);\n });\n\n addFormatToken(0, ['SS', 2], 0, function () {\n return ~~(this.millisecond() / 10);\n });\n\n addFormatToken(0, ['SSS', 3], 0, 'millisecond');\n addFormatToken(0, ['SSSS', 4], 0, function () {\n return this.millisecond() * 10;\n });\n addFormatToken(0, ['SSSSS', 5], 0, function () {\n return this.millisecond() * 100;\n });\n addFormatToken(0, ['SSSSSS', 6], 0, function () {\n return this.millisecond() * 1000;\n });\n addFormatToken(0, ['SSSSSSS', 7], 0, function () {\n return this.millisecond() * 10000;\n });\n addFormatToken(0, ['SSSSSSSS', 8], 0, function () {\n return this.millisecond() * 100000;\n });\n addFormatToken(0, ['SSSSSSSSS', 9], 0, function () {\n return this.millisecond() * 1000000;\n });\n\n // ALIASES\n\n addUnitAlias('millisecond', 'ms');\n\n // PRIORITY\n\n addUnitPriority('millisecond', 16);\n\n // PARSING\n\n addRegexToken('S', match1to3, match1);\n addRegexToken('SS', match1to3, match2);\n addRegexToken('SSS', match1to3, match3);\n\n var token, getSetMillisecond;\n for (token = 'SSSS'; token.length <= 9; token += 'S') {\n addRegexToken(token, matchUnsigned);\n }\n\n function parseMs(input, array) {\n array[MILLISECOND] = toInt(('0.' + input) * 1000);\n }\n\n for (token = 'S'; token.length <= 9; token += 'S') {\n addParseToken(token, parseMs);\n }\n\n getSetMillisecond = makeGetSet('Milliseconds', false);\n\n // FORMATTING\n\n addFormatToken('z', 0, 0, 'zoneAbbr');\n addFormatToken('zz', 0, 0, 'zoneName');\n\n // MOMENTS\n\n function getZoneAbbr() {\n return this._isUTC ? 'UTC' : '';\n }\n\n function getZoneName() {\n return this._isUTC ? 'Coordinated Universal Time' : '';\n }\n\n var proto = Moment.prototype;\n\n proto.add = add;\n proto.calendar = calendar$1;\n proto.clone = clone;\n proto.diff = diff;\n proto.endOf = endOf;\n proto.format = format;\n proto.from = from;\n proto.fromNow = fromNow;\n proto.to = to;\n proto.toNow = toNow;\n proto.get = stringGet;\n proto.invalidAt = invalidAt;\n proto.isAfter = isAfter;\n proto.isBefore = isBefore;\n proto.isBetween = isBetween;\n proto.isSame = isSame;\n proto.isSameOrAfter = isSameOrAfter;\n proto.isSameOrBefore = isSameOrBefore;\n proto.isValid = isValid$2;\n proto.lang = lang;\n proto.locale = locale;\n proto.localeData = localeData;\n proto.max = prototypeMax;\n proto.min = prototypeMin;\n proto.parsingFlags = parsingFlags;\n proto.set = stringSet;\n proto.startOf = startOf;\n proto.subtract = subtract;\n proto.toArray = toArray;\n proto.toObject = toObject;\n proto.toDate = toDate;\n proto.toISOString = toISOString;\n proto.inspect = inspect;\n if (typeof Symbol !== 'undefined' && Symbol.for != null) {\n proto[Symbol.for('nodejs.util.inspect.custom')] = function () {\n return 'Moment<' + this.format() + '>';\n };\n }\n proto.toJSON = toJSON;\n proto.toString = toString;\n proto.unix = unix;\n proto.valueOf = valueOf;\n proto.creationData = creationData;\n proto.eraName = getEraName;\n proto.eraNarrow = getEraNarrow;\n proto.eraAbbr = getEraAbbr;\n proto.eraYear = getEraYear;\n proto.year = getSetYear;\n proto.isLeapYear = getIsLeapYear;\n proto.weekYear = getSetWeekYear;\n proto.isoWeekYear = getSetISOWeekYear;\n proto.quarter = proto.quarters = getSetQuarter;\n proto.month = getSetMonth;\n proto.daysInMonth = getDaysInMonth;\n proto.week = proto.weeks = getSetWeek;\n proto.isoWeek = proto.isoWeeks = getSetISOWeek;\n proto.weeksInYear = getWeeksInYear;\n proto.weeksInWeekYear = getWeeksInWeekYear;\n proto.isoWeeksInYear = getISOWeeksInYear;\n proto.isoWeeksInISOWeekYear = getISOWeeksInISOWeekYear;\n proto.date = getSetDayOfMonth;\n proto.day = proto.days = getSetDayOfWeek;\n proto.weekday = getSetLocaleDayOfWeek;\n proto.isoWeekday = getSetISODayOfWeek;\n proto.dayOfYear = getSetDayOfYear;\n proto.hour = proto.hours = getSetHour;\n proto.minute = proto.minutes = getSetMinute;\n proto.second = proto.seconds = getSetSecond;\n proto.millisecond = proto.milliseconds = getSetMillisecond;\n proto.utcOffset = getSetOffset;\n proto.utc = setOffsetToUTC;\n proto.local = setOffsetToLocal;\n proto.parseZone = setOffsetToParsedOffset;\n proto.hasAlignedHourOffset = hasAlignedHourOffset;\n proto.isDST = isDaylightSavingTime;\n proto.isLocal = isLocal;\n proto.isUtcOffset = isUtcOffset;\n proto.isUtc = isUtc;\n proto.isUTC = isUtc;\n proto.zoneAbbr = getZoneAbbr;\n proto.zoneName = getZoneName;\n proto.dates = deprecate(\n 'dates accessor is deprecated. Use date instead.',\n getSetDayOfMonth\n );\n proto.months = deprecate(\n 'months accessor is deprecated. Use month instead',\n getSetMonth\n );\n proto.years = deprecate(\n 'years accessor is deprecated. Use year instead',\n getSetYear\n );\n proto.zone = deprecate(\n 'moment().zone is deprecated, use moment().utcOffset instead. http://momentjs.com/guides/#/warnings/zone/',\n getSetZone\n );\n proto.isDSTShifted = deprecate(\n 'isDSTShifted is deprecated. See http://momentjs.com/guides/#/warnings/dst-shifted/ for more information',\n isDaylightSavingTimeShifted\n );\n\n function createUnix(input) {\n return createLocal(input * 1000);\n }\n\n function createInZone() {\n return createLocal.apply(null, arguments).parseZone();\n }\n\n function preParsePostFormat(string) {\n return string;\n }\n\n var proto$1 = Locale.prototype;\n\n proto$1.calendar = calendar;\n proto$1.longDateFormat = longDateFormat;\n proto$1.invalidDate = invalidDate;\n proto$1.ordinal = ordinal;\n proto$1.preparse = preParsePostFormat;\n proto$1.postformat = preParsePostFormat;\n proto$1.relativeTime = relativeTime;\n proto$1.pastFuture = pastFuture;\n proto$1.set = set;\n proto$1.eras = localeEras;\n proto$1.erasParse = localeErasParse;\n proto$1.erasConvertYear = localeErasConvertYear;\n proto$1.erasAbbrRegex = erasAbbrRegex;\n proto$1.erasNameRegex = erasNameRegex;\n proto$1.erasNarrowRegex = erasNarrowRegex;\n\n proto$1.months = localeMonths;\n proto$1.monthsShort = localeMonthsShort;\n proto$1.monthsParse = localeMonthsParse;\n proto$1.monthsRegex = monthsRegex;\n proto$1.monthsShortRegex = monthsShortRegex;\n proto$1.week = localeWeek;\n proto$1.firstDayOfYear = localeFirstDayOfYear;\n proto$1.firstDayOfWeek = localeFirstDayOfWeek;\n\n proto$1.weekdays = localeWeekdays;\n proto$1.weekdaysMin = localeWeekdaysMin;\n proto$1.weekdaysShort = localeWeekdaysShort;\n proto$1.weekdaysParse = localeWeekdaysParse;\n\n proto$1.weekdaysRegex = weekdaysRegex;\n proto$1.weekdaysShortRegex = weekdaysShortRegex;\n proto$1.weekdaysMinRegex = weekdaysMinRegex;\n\n proto$1.isPM = localeIsPM;\n proto$1.meridiem = localeMeridiem;\n\n function get$1(format, index, field, setter) {\n var locale = getLocale(),\n utc = createUTC().set(setter, index);\n return locale[field](utc, format);\n }\n\n function listMonthsImpl(format, index, field) {\n if (isNumber(format)) {\n index = format;\n format = undefined;\n }\n\n format = format || '';\n\n if (index != null) {\n return get$1(format, index, field, 'month');\n }\n\n var i,\n out = [];\n for (i = 0; i < 12; i++) {\n out[i] = get$1(format, i, field, 'month');\n }\n return out;\n }\n\n // ()\n // (5)\n // (fmt, 5)\n // (fmt)\n // (true)\n // (true, 5)\n // (true, fmt, 5)\n // (true, fmt)\n function listWeekdaysImpl(localeSorted, format, index, field) {\n if (typeof localeSorted === 'boolean') {\n if (isNumber(format)) {\n index = format;\n format = undefined;\n }\n\n format = format || '';\n } else {\n format = localeSorted;\n index = format;\n localeSorted = false;\n\n if (isNumber(format)) {\n index = format;\n format = undefined;\n }\n\n format = format || '';\n }\n\n var locale = getLocale(),\n shift = localeSorted ? locale._week.dow : 0,\n i,\n out = [];\n\n if (index != null) {\n return get$1(format, (index + shift) % 7, field, 'day');\n }\n\n for (i = 0; i < 7; i++) {\n out[i] = get$1(format, (i + shift) % 7, field, 'day');\n }\n return out;\n }\n\n function listMonths(format, index) {\n return listMonthsImpl(format, index, 'months');\n }\n\n function listMonthsShort(format, index) {\n return listMonthsImpl(format, index, 'monthsShort');\n }\n\n function listWeekdays(localeSorted, format, index) {\n return listWeekdaysImpl(localeSorted, format, index, 'weekdays');\n }\n\n function listWeekdaysShort(localeSorted, format, index) {\n return listWeekdaysImpl(localeSorted, format, index, 'weekdaysShort');\n }\n\n function listWeekdaysMin(localeSorted, format, index) {\n return listWeekdaysImpl(localeSorted, format, index, 'weekdaysMin');\n }\n\n getSetGlobalLocale('en', {\n eras: [\n {\n since: '0001-01-01',\n until: +Infinity,\n offset: 1,\n name: 'Anno Domini',\n narrow: 'AD',\n abbr: 'AD',\n },\n {\n since: '0000-12-31',\n until: -Infinity,\n offset: 1,\n name: 'Before Christ',\n narrow: 'BC',\n abbr: 'BC',\n },\n ],\n dayOfMonthOrdinalParse: /\\d{1,2}(th|st|nd|rd)/,\n ordinal: function (number) {\n var b = number % 10,\n output =\n toInt((number % 100) / 10) === 1\n ? 'th'\n : b === 1\n ? 'st'\n : b === 2\n ? 'nd'\n : b === 3\n ? 'rd'\n : 'th';\n return number + output;\n },\n });\n\n // Side effect imports\n\n hooks.lang = deprecate(\n 'moment.lang is deprecated. Use moment.locale instead.',\n getSetGlobalLocale\n );\n hooks.langData = deprecate(\n 'moment.langData is deprecated. Use moment.localeData instead.',\n getLocale\n );\n\n var mathAbs = Math.abs;\n\n function abs() {\n var data = this._data;\n\n this._milliseconds = mathAbs(this._milliseconds);\n this._days = mathAbs(this._days);\n this._months = mathAbs(this._months);\n\n data.milliseconds = mathAbs(data.milliseconds);\n data.seconds = mathAbs(data.seconds);\n data.minutes = mathAbs(data.minutes);\n data.hours = mathAbs(data.hours);\n data.months = mathAbs(data.months);\n data.years = mathAbs(data.years);\n\n return this;\n }\n\n function addSubtract$1(duration, input, value, direction) {\n var other = createDuration(input, value);\n\n duration._milliseconds += direction * other._milliseconds;\n duration._days += direction * other._days;\n duration._months += direction * other._months;\n\n return duration._bubble();\n }\n\n // supports only 2.0-style add(1, 's') or add(duration)\n function add$1(input, value) {\n return addSubtract$1(this, input, value, 1);\n }\n\n // supports only 2.0-style subtract(1, 's') or subtract(duration)\n function subtract$1(input, value) {\n return addSubtract$1(this, input, value, -1);\n }\n\n function absCeil(number) {\n if (number < 0) {\n return Math.floor(number);\n } else {\n return Math.ceil(number);\n }\n }\n\n function bubble() {\n var milliseconds = this._milliseconds,\n days = this._days,\n months = this._months,\n data = this._data,\n seconds,\n minutes,\n hours,\n years,\n monthsFromDays;\n\n // if we have a mix of positive and negative values, bubble down first\n // check: https://github.com/moment/moment/issues/2166\n if (\n !(\n (milliseconds >= 0 && days >= 0 && months >= 0) ||\n (milliseconds <= 0 && days <= 0 && months <= 0)\n )\n ) {\n milliseconds += absCeil(monthsToDays(months) + days) * 864e5;\n days = 0;\n months = 0;\n }\n\n // The following code bubbles up values, see the tests for\n // examples of what that means.\n data.milliseconds = milliseconds % 1000;\n\n seconds = absFloor(milliseconds / 1000);\n data.seconds = seconds % 60;\n\n minutes = absFloor(seconds / 60);\n data.minutes = minutes % 60;\n\n hours = absFloor(minutes / 60);\n data.hours = hours % 24;\n\n days += absFloor(hours / 24);\n\n // convert days to months\n monthsFromDays = absFloor(daysToMonths(days));\n months += monthsFromDays;\n days -= absCeil(monthsToDays(monthsFromDays));\n\n // 12 months -> 1 year\n years = absFloor(months / 12);\n months %= 12;\n\n data.days = days;\n data.months = months;\n data.years = years;\n\n return this;\n }\n\n function daysToMonths(days) {\n // 400 years have 146097 days (taking into account leap year rules)\n // 400 years have 12 months === 4800\n return (days * 4800) / 146097;\n }\n\n function monthsToDays(months) {\n // the reverse of daysToMonths\n return (months * 146097) / 4800;\n }\n\n function as(units) {\n if (!this.isValid()) {\n return NaN;\n }\n var days,\n months,\n milliseconds = this._milliseconds;\n\n units = normalizeUnits(units);\n\n if (units === 'month' || units === 'quarter' || units === 'year') {\n days = this._days + milliseconds / 864e5;\n months = this._months + daysToMonths(days);\n switch (units) {\n case 'month':\n return months;\n case 'quarter':\n return months / 3;\n case 'year':\n return months / 12;\n }\n } else {\n // handle milliseconds separately because of floating point math errors (issue #1867)\n days = this._days + Math.round(monthsToDays(this._months));\n switch (units) {\n case 'week':\n return days / 7 + milliseconds / 6048e5;\n case 'day':\n return days + milliseconds / 864e5;\n case 'hour':\n return days * 24 + milliseconds / 36e5;\n case 'minute':\n return days * 1440 + milliseconds / 6e4;\n case 'second':\n return days * 86400 + milliseconds / 1000;\n // Math.floor prevents floating point math errors here\n case 'millisecond':\n return Math.floor(days * 864e5) + milliseconds;\n default:\n throw new Error('Unknown unit ' + units);\n }\n }\n }\n\n // TODO: Use this.as('ms')?\n function valueOf$1() {\n if (!this.isValid()) {\n return NaN;\n }\n return (\n this._milliseconds +\n this._days * 864e5 +\n (this._months % 12) * 2592e6 +\n toInt(this._months / 12) * 31536e6\n );\n }\n\n function makeAs(alias) {\n return function () {\n return this.as(alias);\n };\n }\n\n var asMilliseconds = makeAs('ms'),\n asSeconds = makeAs('s'),\n asMinutes = makeAs('m'),\n asHours = makeAs('h'),\n asDays = makeAs('d'),\n asWeeks = makeAs('w'),\n asMonths = makeAs('M'),\n asQuarters = makeAs('Q'),\n asYears = makeAs('y');\n\n function clone$1() {\n return createDuration(this);\n }\n\n function get$2(units) {\n units = normalizeUnits(units);\n return this.isValid() ? this[units + 's']() : NaN;\n }\n\n function makeGetter(name) {\n return function () {\n return this.isValid() ? this._data[name] : NaN;\n };\n }\n\n var milliseconds = makeGetter('milliseconds'),\n seconds = makeGetter('seconds'),\n minutes = makeGetter('minutes'),\n hours = makeGetter('hours'),\n days = makeGetter('days'),\n months = makeGetter('months'),\n years = makeGetter('years');\n\n function weeks() {\n return absFloor(this.days() / 7);\n }\n\n var round = Math.round,\n thresholds = {\n ss: 44, // a few seconds to seconds\n s: 45, // seconds to minute\n m: 45, // minutes to hour\n h: 22, // hours to day\n d: 26, // days to month/week\n w: null, // weeks to month\n M: 11, // months to year\n };\n\n // helper function for moment.fn.from, moment.fn.fromNow, and moment.duration.fn.humanize\n function substituteTimeAgo(string, number, withoutSuffix, isFuture, locale) {\n return locale.relativeTime(number || 1, !!withoutSuffix, string, isFuture);\n }\n\n function relativeTime$1(posNegDuration, withoutSuffix, thresholds, locale) {\n var duration = createDuration(posNegDuration).abs(),\n seconds = round(duration.as('s')),\n minutes = round(duration.as('m')),\n hours = round(duration.as('h')),\n days = round(duration.as('d')),\n months = round(duration.as('M')),\n weeks = round(duration.as('w')),\n years = round(duration.as('y')),\n a =\n (seconds <= thresholds.ss && ['s', seconds]) ||\n (seconds < thresholds.s && ['ss', seconds]) ||\n (minutes <= 1 && ['m']) ||\n (minutes < thresholds.m && ['mm', minutes]) ||\n (hours <= 1 && ['h']) ||\n (hours < thresholds.h && ['hh', hours]) ||\n (days <= 1 && ['d']) ||\n (days < thresholds.d && ['dd', days]);\n\n if (thresholds.w != null) {\n a =\n a ||\n (weeks <= 1 && ['w']) ||\n (weeks < thresholds.w && ['ww', weeks]);\n }\n a = a ||\n (months <= 1 && ['M']) ||\n (months < thresholds.M && ['MM', months]) ||\n (years <= 1 && ['y']) || ['yy', years];\n\n a[2] = withoutSuffix;\n a[3] = +posNegDuration > 0;\n a[4] = locale;\n return substituteTimeAgo.apply(null, a);\n }\n\n // This function allows you to set the rounding function for relative time strings\n function getSetRelativeTimeRounding(roundingFunction) {\n if (roundingFunction === undefined) {\n return round;\n }\n if (typeof roundingFunction === 'function') {\n round = roundingFunction;\n return true;\n }\n return false;\n }\n\n // This function allows you to set a threshold for relative time strings\n function getSetRelativeTimeThreshold(threshold, limit) {\n if (thresholds[threshold] === undefined) {\n return false;\n }\n if (limit === undefined) {\n return thresholds[threshold];\n }\n thresholds[threshold] = limit;\n if (threshold === 's') {\n thresholds.ss = limit - 1;\n }\n return true;\n }\n\n function humanize(argWithSuffix, argThresholds) {\n if (!this.isValid()) {\n return this.localeData().invalidDate();\n }\n\n var withSuffix = false,\n th = thresholds,\n locale,\n output;\n\n if (typeof argWithSuffix === 'object') {\n argThresholds = argWithSuffix;\n argWithSuffix = false;\n }\n if (typeof argWithSuffix === 'boolean') {\n withSuffix = argWithSuffix;\n }\n if (typeof argThresholds === 'object') {\n th = Object.assign({}, thresholds, argThresholds);\n if (argThresholds.s != null && argThresholds.ss == null) {\n th.ss = argThresholds.s - 1;\n }\n }\n\n locale = this.localeData();\n output = relativeTime$1(this, !withSuffix, th, locale);\n\n if (withSuffix) {\n output = locale.pastFuture(+this, output);\n }\n\n return locale.postformat(output);\n }\n\n var abs$1 = Math.abs;\n\n function sign(x) {\n return (x > 0) - (x < 0) || +x;\n }\n\n function toISOString$1() {\n // for ISO strings we do not use the normal bubbling rules:\n // * milliseconds bubble up until they become hours\n // * days do not bubble at all\n // * months bubble up until they become years\n // This is because there is no context-free conversion between hours and days\n // (think of clock changes)\n // and also not between days and months (28-31 days per month)\n if (!this.isValid()) {\n return this.localeData().invalidDate();\n }\n\n var seconds = abs$1(this._milliseconds) / 1000,\n days = abs$1(this._days),\n months = abs$1(this._months),\n minutes,\n hours,\n years,\n s,\n total = this.asSeconds(),\n totalSign,\n ymSign,\n daysSign,\n hmsSign;\n\n if (!total) {\n // this is the same as C#'s (Noda) and python (isodate)...\n // but not other JS (goog.date)\n return 'P0D';\n }\n\n // 3600 seconds -> 60 minutes -> 1 hour\n minutes = absFloor(seconds / 60);\n hours = absFloor(minutes / 60);\n seconds %= 60;\n minutes %= 60;\n\n // 12 months -> 1 year\n years = absFloor(months / 12);\n months %= 12;\n\n // inspired by https://github.com/dordille/moment-isoduration/blob/master/moment.isoduration.js\n s = seconds ? seconds.toFixed(3).replace(/\\.?0+$/, '') : '';\n\n totalSign = total < 0 ? '-' : '';\n ymSign = sign(this._months) !== sign(total) ? '-' : '';\n daysSign = sign(this._days) !== sign(total) ? '-' : '';\n hmsSign = sign(this._milliseconds) !== sign(total) ? '-' : '';\n\n return (\n totalSign +\n 'P' +\n (years ? ymSign + years + 'Y' : '') +\n (months ? ymSign + months + 'M' : '') +\n (days ? daysSign + days + 'D' : '') +\n (hours || minutes || seconds ? 'T' : '') +\n (hours ? hmsSign + hours + 'H' : '') +\n (minutes ? hmsSign + minutes + 'M' : '') +\n (seconds ? hmsSign + s + 'S' : '')\n );\n }\n\n var proto$2 = Duration.prototype;\n\n proto$2.isValid = isValid$1;\n proto$2.abs = abs;\n proto$2.add = add$1;\n proto$2.subtract = subtract$1;\n proto$2.as = as;\n proto$2.asMilliseconds = asMilliseconds;\n proto$2.asSeconds = asSeconds;\n proto$2.asMinutes = asMinutes;\n proto$2.asHours = asHours;\n proto$2.asDays = asDays;\n proto$2.asWeeks = asWeeks;\n proto$2.asMonths = asMonths;\n proto$2.asQuarters = asQuarters;\n proto$2.asYears = asYears;\n proto$2.valueOf = valueOf$1;\n proto$2._bubble = bubble;\n proto$2.clone = clone$1;\n proto$2.get = get$2;\n proto$2.milliseconds = milliseconds;\n proto$2.seconds = seconds;\n proto$2.minutes = minutes;\n proto$2.hours = hours;\n proto$2.days = days;\n proto$2.weeks = weeks;\n proto$2.months = months;\n proto$2.years = years;\n proto$2.humanize = humanize;\n proto$2.toISOString = toISOString$1;\n proto$2.toString = toISOString$1;\n proto$2.toJSON = toISOString$1;\n proto$2.locale = locale;\n proto$2.localeData = localeData;\n\n proto$2.toIsoString = deprecate(\n 'toIsoString() is deprecated. Please use toISOString() instead (notice the capitals)',\n toISOString$1\n );\n proto$2.lang = lang;\n\n // FORMATTING\n\n addFormatToken('X', 0, 0, 'unix');\n addFormatToken('x', 0, 0, 'valueOf');\n\n // PARSING\n\n addRegexToken('x', matchSigned);\n addRegexToken('X', matchTimestamp);\n addParseToken('X', function (input, array, config) {\n config._d = new Date(parseFloat(input) * 1000);\n });\n addParseToken('x', function (input, array, config) {\n config._d = new Date(toInt(input));\n });\n\n //! moment.js\n\n hooks.version = '2.29.3';\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"],"sourceRoot":""}