UNPKG

tropical-components

Version:
1,202 lines (1,061 loc) 81.8 kB
//! moment.js //! version : 2.14.1 //! authors : Tim Wood, Iskren Chernev, Moment.js contributors //! license : MIT //! momentjs.com ! function(a, b) { "object" == typeof exports && "undefined" != typeof module ? module.exports = b() : "function" == typeof define && define.amd ? define(b) : a.moment = b() }(this, function() { "use strict"; function a() { return md.apply(null, arguments) } // This is done to register the method called with moment() // without creating circular dependencies. function b(a) { md = a } function c(a) { return a instanceof Array || "[object Array]" === Object.prototype.toString.call(a) } function d(a) { return "[object Object]" === Object.prototype.toString.call(a) } function e(a) { var b; for (b in a) // even if its not own property I'd still call it non-empty return !1; return !0 } function f(a) { return a instanceof Date || "[object Date]" === Object.prototype.toString.call(a) } function g(a, b) { var c, d = []; for (c = 0; c < a.length; ++c) d.push(b(a[c], c)); return d } function h(a, b) { return Object.prototype.hasOwnProperty.call(a, b) } function i(a, b) { for (var c in b) h(b, c) && (a[c] = b[c]); return h(b, "toString") && (a.toString = b.toString), h(b, "valueOf") && (a.valueOf = b.valueOf), a } function j(a, b, c, d) { return qb(a, b, c, d, !0).utc() } function k() { // We need to deep clone this object. return { empty: !1, unusedTokens: [], unusedInput: [], overflow: -2, charsLeftOver: 0, nullInput: !1, invalidMonth: null, invalidFormat: !1, userInvalidated: !1, iso: !1, parsedDateParts: [], meridiem: null } } function l(a) { return null == a._pf && (a._pf = k()), a._pf } function m(a) { if (null == a._isValid) { var b = l(a), c = nd.call(b.parsedDateParts, function(a) { return null != a }); a._isValid = !isNaN(a._d.getTime()) && b.overflow < 0 && !b.empty && !b.invalidMonth && !b.invalidWeekday && !b.nullInput && !b.invalidFormat && !b.userInvalidated && (!b.meridiem || b.meridiem && c), a._strict && (a._isValid = a._isValid && 0 === b.charsLeftOver && 0 === b.unusedTokens.length && void 0 === b.bigHour) } return a._isValid } function n(a) { var b = j(NaN); return null != a ? i(l(b), a) : l(b).userInvalidated = !0, b } function o(a) { return void 0 === a } function p(a, b) { var c, d, e; if (o(b._isAMomentObject) || (a._isAMomentObject = b._isAMomentObject), o(b._i) || (a._i = b._i), o(b._f) || (a._f = b._f), o(b._l) || (a._l = b._l), o(b._strict) || (a._strict = b._strict), o(b._tzm) || (a._tzm = b._tzm), o(b._isUTC) || (a._isUTC = b._isUTC), o(b._offset) || (a._offset = b._offset), o(b._pf) || (a._pf = l(b)), o(b._locale) || (a._locale = b._locale), od.length > 0) for (c in od) d = od[c], e = b[d], o(e) || (a[d] = e); return a } // Moment prototype object function q(b) { p(this, b), this._d = new Date(null != b._d ? b._d.getTime() : NaN), pd === !1 && (pd = !0, a.updateOffset(this), pd = !1) } function r(a) { return a instanceof q || null != a && null != a._isAMomentObject } function s(a) { return 0 > a ? Math.ceil(a) || 0 : Math.floor(a) } function t(a) { var b = +a, c = 0; return 0 !== b && isFinite(b) && (c = s(b)), c } // compare two arrays, return the number of differences function u(a, b, c) { var d, e = Math.min(a.length, b.length), f = Math.abs(a.length - b.length), g = 0; for (d = 0; e > d; d++)(c && a[d] !== b[d] || !c && t(a[d]) !== t(b[d])) && g++; return g + f } function v(b) { a.suppressDeprecationWarnings === !1 && "undefined" != typeof console && console.warn && console.warn("Deprecation warning: " + b) } function w(b, c) { var d = !0; return i(function() { return null != a.deprecationHandler && a.deprecationHandler(null, b), d && (v(b + "\nArguments: " + Array.prototype.slice.call(arguments).join(", ") + "\n" + (new Error).stack), d = !1), c.apply(this, arguments) }, c) } function x(b, c) { null != a.deprecationHandler && a.deprecationHandler(b, c), qd[b] || (v(c), qd[b] = !0) } function y(a) { return a instanceof Function || "[object Function]" === Object.prototype.toString.call(a) } function z(a) { var b, c; for (c in a) b = a[c], y(b) ? this[c] = b : this["_" + c] = b; this._config = a, // Lenient ordinal parsing accepts just a number in addition to // number + (possibly) stuff coming from _ordinalParseLenient. this._ordinalParseLenient = new RegExp(this._ordinalParse.source + "|" + /\d{1,2}/.source) } function A(a, b) { var c, e = i({}, a); for (c in b) h(b, c) && (d(a[c]) && d(b[c]) ? (e[c] = {}, i(e[c], a[c]), i(e[c], b[c])) : null != b[c] ? e[c] = b[c] : delete e[c]); for (c in a) h(a, c) && !h(b, c) && d(a[c]) && ( // make sure changes to properties don't modify parent config e[c] = i({}, e[c])); return e } function B(a) { null != a && this.set(a) } function C(a, b, c) { var d = this._calendar[a] || this._calendar.sameElse; return y(d) ? d.call(b, c) : d } function D(a) { var b = this._longDateFormat[a], c = this._longDateFormat[a.toUpperCase()]; return b || !c ? b : (this._longDateFormat[a] = c.replace(/MMMM|MM|DD|dddd/g, function(a) { return a.slice(1) }), this._longDateFormat[a]) } function E() { return this._invalidDate } function F(a) { return this._ordinal.replace("%d", a) } function G(a, b, c, d) { var e = this._relativeTime[c]; return y(e) ? e(a, b, c, d) : e.replace(/%d/i, a) } function H(a, b) { var c = this._relativeTime[a > 0 ? "future" : "past"]; return y(c) ? c(b) : c.replace(/%s/i, b) } function I(a, b) { var c = a.toLowerCase(); zd[c] = zd[c + "s"] = zd[b] = a } function J(a) { return "string" == typeof a ? zd[a] || zd[a.toLowerCase()] : void 0 } function K(a) { var b, c, d = {}; for (c in a) h(a, c) && (b = J(c), b && (d[b] = a[c])); return d } function L(a, b) { Ad[a] = b } function M(a) { var b = []; for (var c in a) b.push({ unit: c, priority: Ad[c] }); return b.sort(function(a, b) { return a.priority - b.priority }), b } function N(b, c) { return function(d) { return null != d ? (P(this, b, d), a.updateOffset(this, c), this) : O(this, b) } } function O(a, b) { return a.isValid() ? a._d["get" + (a._isUTC ? "UTC" : "") + b]() : NaN } function P(a, b, c) { a.isValid() && a._d["set" + (a._isUTC ? "UTC" : "") + b](c) } // MOMENTS function Q(a) { return a = J(a), y(this[a]) ? this[a]() : this } function R(a, b) { if ("object" == typeof a) { a = K(a); for (var c = M(a), d = 0; d < c.length; d++) this[c[d].unit](a[c[d].unit]) } else if (a = J(a), y(this[a])) return this[a](b); return this } function S(a, b, c) { var d = "" + Math.abs(a), e = b - d.length, f = a >= 0; return (f ? c ? "+" : "" : "-") + Math.pow(10, Math.max(0, e)).toString().substr(1) + d } // token: 'M' // padded: ['MM', 2] // ordinal: 'Mo' // callback: function () { this.month() + 1 } function T(a, b, c, d) { var e = d; "string" == typeof d && (e = function() { return this[d]() }), a && (Ed[a] = e), b && (Ed[b[0]] = function() { return S(e.apply(this, arguments), b[1], b[2]) }), c && (Ed[c] = function() { return this.localeData().ordinal(e.apply(this, arguments), a) }) } function U(a) { return a.match(/\[[\s\S]/) ? a.replace(/^\[|\]$/g, "") : a.replace(/\\/g, "") } function V(a) { var b, c, d = a.match(Bd); for (b = 0, c = d.length; c > b; b++) Ed[d[b]] ? d[b] = Ed[d[b]] : d[b] = U(d[b]); return function(b) { var e, f = ""; for (e = 0; c > e; e++) f += d[e] instanceof Function ? d[e].call(b, a) : d[e]; return f } } // format date using native date object function W(a, b) { return a.isValid() ? (b = X(b, a.localeData()), Dd[b] = Dd[b] || V(b), Dd[b](a)) : a.localeData().invalidDate() } function X(a, b) { function c(a) { return b.longDateFormat(a) || a } var d = 5; for (Cd.lastIndex = 0; d >= 0 && Cd.test(a);) a = a.replace(Cd, c), Cd.lastIndex = 0, d -= 1; return a } function Y(a, b, c) { Wd[a] = y(b) ? b : function(a, d) { return a && c ? c : b } } function Z(a, b) { return h(Wd, a) ? Wd[a](b._strict, b._locale) : new RegExp($(a)) } // Code from http://stackoverflow.com/questions/3561493/is-there-a-regexp-escape-function-in-javascript function $(a) { return _(a.replace("\\", "").replace(/\\(\[)|\\(\])|\[([^\]\[]*)\]|\\(.)/g, function(a, b, c, d, e) { return b || c || d || e })) } function _(a) { return a.replace(/[-\/\\^$*+?.()|[\]{}]/g, "\\$&") } function aa(a, b) { var c, d = b; for ("string" == typeof a && (a = [a]), "number" == typeof b && (d = function(a, c) { c[b] = t(a) }), c = 0; c < a.length; c++) Xd[a[c]] = d } function ba(a, b) { aa(a, function(a, c, d, e) { d._w = d._w || {}, b(a, d._w, d, e) }) } function ca(a, b, c) { null != b && h(Xd, a) && Xd[a](b, c._a, c, a) } function da(a, b) { return new Date(Date.UTC(a, b + 1, 0)).getUTCDate() } function ea(a, b) { return c(this._months) ? this._months[a.month()] : this._months[(this._months.isFormat || fe).test(b) ? "format" : "standalone"][a.month()] } function fa(a, b) { return c(this._monthsShort) ? this._monthsShort[a.month()] : this._monthsShort[fe.test(b) ? "format" : "standalone"][a.month()] } function ga(a, b, c) { var d, e, f, g = a.toLocaleLowerCase(); if (!this._monthsParse) for ( // this is not used this._monthsParse = [], this._longMonthsParse = [], this._shortMonthsParse = [], d = 0; 12 > d; ++d) f = j([2e3, d]), this._shortMonthsParse[d] = this.monthsShort(f, "").toLocaleLowerCase(), this._longMonthsParse[d] = this.months(f, "").toLocaleLowerCase(); return c ? "MMM" === b ? (e = sd.call(this._shortMonthsParse, g), -1 !== e ? e : null) : (e = sd.call(this._longMonthsParse, g), -1 !== e ? e : null) : "MMM" === b ? (e = sd.call(this._shortMonthsParse, g), -1 !== e ? e : (e = sd.call(this._longMonthsParse, g), -1 !== e ? e : null)) : (e = sd.call(this._longMonthsParse, g), -1 !== e ? e : (e = sd.call(this._shortMonthsParse, g), -1 !== e ? e : null)) } function ha(a, b, c) { var d, e, f; if (this._monthsParseExact) return ga.call(this, a, b, c); // TODO: add sorting // Sorting makes sure if one month (or abbr) is a prefix of another // see sorting in computeMonthsParse for (this._monthsParse || (this._monthsParse = [], this._longMonthsParse = [], this._shortMonthsParse = []), d = 0; 12 > d; d++) { // test the regex if (e = j([2e3, d]), c && !this._longMonthsParse[d] && (this._longMonthsParse[d] = new RegExp("^" + this.months(e, "").replace(".", "") + "$", "i"), this._shortMonthsParse[d] = new RegExp("^" + this.monthsShort(e, "").replace(".", "") + "$", "i")), c || this._monthsParse[d] || (f = "^" + this.months(e, "") + "|^" + this.monthsShort(e, ""), this._monthsParse[d] = new RegExp(f.replace(".", ""), "i")), c && "MMMM" === b && this._longMonthsParse[d].test(a)) return d; if (c && "MMM" === b && this._shortMonthsParse[d].test(a)) return d; if (!c && this._monthsParse[d].test(a)) return d } } // MOMENTS function ia(a, b) { var c; if (!a.isValid()) // No op return a; if ("string" == typeof b) if (/^\d+$/.test(b)) b = t(b); else // TODO: Another silent failure? if (b = a.localeData().monthsParse(b), "number" != typeof b) return a; return c = Math.min(a.date(), da(a.year(), b)), a._d["set" + (a._isUTC ? "UTC" : "") + "Month"](b, c), a } function ja(b) { return null != b ? (ia(this, b), a.updateOffset(this, !0), this) : O(this, "Month") } function ka() { return da(this.year(), this.month()) } function la(a) { return this._monthsParseExact ? (h(this, "_monthsRegex") || na.call(this), a ? this._monthsShortStrictRegex : this._monthsShortRegex) : (h(this, "_monthsShortRegex") || (this._monthsShortRegex = ie), this._monthsShortStrictRegex && a ? this._monthsShortStrictRegex : this._monthsShortRegex) } function ma(a) { return this._monthsParseExact ? (h(this, "_monthsRegex") || na.call(this), a ? this._monthsStrictRegex : this._monthsRegex) : (h(this, "_monthsRegex") || (this._monthsRegex = je), this._monthsStrictRegex && a ? this._monthsStrictRegex : this._monthsRegex) } function na() { function a(a, b) { return b.length - a.length } var b, c, d = [], e = [], f = []; for (b = 0; 12 > b; b++) c = j([2e3, b]), d.push(this.monthsShort(c, "")), e.push(this.months(c, "")), f.push(this.months(c, "")), f.push(this.monthsShort(c, "")); for ( // Sorting makes sure if one month (or abbr) is a prefix of another it // will match the longer piece. d.sort(a), e.sort(a), f.sort(a), b = 0; 12 > b; b++) d[b] = _(d[b]), e[b] = _(e[b]); for (b = 0; 24 > b; b++) f[b] = _(f[b]); this._monthsRegex = new RegExp("^(" + f.join("|") + ")", "i"), this._monthsShortRegex = this._monthsRegex, this._monthsStrictRegex = new RegExp("^(" + e.join("|") + ")", "i"), this._monthsShortStrictRegex = new RegExp("^(" + d.join("|") + ")", "i") } // HELPERS function oa(a) { return pa(a) ? 366 : 365 } function pa(a) { return a % 4 === 0 && a % 100 !== 0 || a % 400 === 0 } function qa() { return pa(this.year()) } function ra(a, b, c, d, e, f, g) { //can't just apply() to create a date: //http://stackoverflow.com/questions/181348/instantiating-a-javascript-object-by-calling-prototype-constructor-apply var h = new Date(a, b, c, d, e, f, g); //the date constructor remaps years 0-99 to 1900-1999 return 100 > a && a >= 0 && isFinite(h.getFullYear()) && h.setFullYear(a), h } function sa(a) { var b = new Date(Date.UTC.apply(null, arguments)); //the Date.UTC function remaps years 0-99 to 1900-1999 return 100 > a && a >= 0 && isFinite(b.getUTCFullYear()) && b.setUTCFullYear(a), b } // start-of-first-week - start-of-year function ta(a, b, c) { var // first-week day -- which january is always in the first week (4 for iso, 1 for other) d = 7 + b - c, // first-week day local weekday -- which local weekday is fwd e = (7 + sa(a, 0, d).getUTCDay() - b) % 7; return -e + d - 1 } //http://en.wikipedia.org/wiki/ISO_week_date#Calculating_a_date_given_the_year.2C_week_number_and_weekday function ua(a, b, c, d, e) { var f, g, h = (7 + c - d) % 7, i = ta(a, d, e), j = 1 + 7 * (b - 1) + h + i; return 0 >= j ? (f = a - 1, g = oa(f) + j) : j > oa(a) ? (f = a + 1, g = j - oa(a)) : (f = a, g = j), { year: f, dayOfYear: g } } function va(a, b, c) { var d, e, f = ta(a.year(), b, c), g = Math.floor((a.dayOfYear() - f - 1) / 7) + 1; return 1 > g ? (e = a.year() - 1, d = g + wa(e, b, c)) : g > wa(a.year(), b, c) ? (d = g - wa(a.year(), b, c), e = a.year() + 1) : (e = a.year(), d = g), { week: d, year: e } } function wa(a, b, c) { var d = ta(a, b, c), e = ta(a + 1, b, c); return (oa(a) - d + e) / 7 } // HELPERS // LOCALES function xa(a) { return va(a, this._week.dow, this._week.doy).week } function ya() { return this._week.dow } function za() { return this._week.doy } // MOMENTS function Aa(a) { var b = this.localeData().week(this); return null == a ? b : this.add(7 * (a - b), "d") } function Ba(a) { var b = va(this, 1, 4).week; return null == a ? b : this.add(7 * (a - b), "d") } // HELPERS function Ca(a, b) { return "string" != typeof a ? a : isNaN(a) ? (a = b.weekdaysParse(a), "number" == typeof a ? a : null) : parseInt(a, 10) } function Da(a, b) { return "string" == typeof a ? b.weekdaysParse(a) % 7 || 7 : isNaN(a) ? null : a } function Ea(a, b) { return c(this._weekdays) ? this._weekdays[a.day()] : this._weekdays[this._weekdays.isFormat.test(b) ? "format" : "standalone"][a.day()] } function Fa(a) { return this._weekdaysShort[a.day()] } function Ga(a) { return this._weekdaysMin[a.day()] } function Ha(a, b, c) { var d, e, f, g = a.toLocaleLowerCase(); if (!this._weekdaysParse) for (this._weekdaysParse = [], this._shortWeekdaysParse = [], this._minWeekdaysParse = [], d = 0; 7 > d; ++d) f = j([2e3, 1]).day(d), this._minWeekdaysParse[d] = this.weekdaysMin(f, "").toLocaleLowerCase(), this._shortWeekdaysParse[d] = this.weekdaysShort(f, "").toLocaleLowerCase(), this._weekdaysParse[d] = this.weekdays(f, "").toLocaleLowerCase(); return c ? "dddd" === b ? (e = sd.call(this._weekdaysParse, g), -1 !== e ? e : null) : "ddd" === b ? (e = sd.call(this._shortWeekdaysParse, g), -1 !== e ? e : null) : (e = sd.call(this._minWeekdaysParse, g), -1 !== e ? e : null) : "dddd" === b ? (e = sd.call(this._weekdaysParse, g), -1 !== e ? e : (e = sd.call(this._shortWeekdaysParse, g), -1 !== e ? e : (e = sd.call(this._minWeekdaysParse, g), -1 !== e ? e : null))) : "ddd" === b ? (e = sd.call(this._shortWeekdaysParse, g), -1 !== e ? e : (e = sd.call(this._weekdaysParse, g), -1 !== e ? e : (e = sd.call(this._minWeekdaysParse, g), -1 !== e ? e : null))) : (e = sd.call(this._minWeekdaysParse, g), -1 !== e ? e : (e = sd.call(this._weekdaysParse, g), -1 !== e ? e : (e = sd.call(this._shortWeekdaysParse, g), -1 !== e ? e : null))) } function Ia(a, b, c) { var d, e, f; if (this._weekdaysParseExact) return Ha.call(this, a, b, c); for (this._weekdaysParse || (this._weekdaysParse = [], this._minWeekdaysParse = [], this._shortWeekdaysParse = [], this._fullWeekdaysParse = []), d = 0; 7 > d; d++) { // test the regex if (e = j([2e3, 1]).day(d), c && !this._fullWeekdaysParse[d] && (this._fullWeekdaysParse[d] = new RegExp("^" + this.weekdays(e, "").replace(".", ".?") + "$", "i"), this._shortWeekdaysParse[d] = new RegExp("^" + this.weekdaysShort(e, "").replace(".", ".?") + "$", "i"), this._minWeekdaysParse[d] = new RegExp("^" + this.weekdaysMin(e, "").replace(".", ".?") + "$", "i")), this._weekdaysParse[d] || (f = "^" + this.weekdays(e, "") + "|^" + this.weekdaysShort(e, "") + "|^" + this.weekdaysMin(e, ""), this._weekdaysParse[d] = new RegExp(f.replace(".", ""), "i")), c && "dddd" === b && this._fullWeekdaysParse[d].test(a)) return d; if (c && "ddd" === b && this._shortWeekdaysParse[d].test(a)) return d; if (c && "dd" === b && this._minWeekdaysParse[d].test(a)) return d; if (!c && this._weekdaysParse[d].test(a)) return d } } // MOMENTS function Ja(a) { if (!this.isValid()) return null != a ? this : NaN; var b = this._isUTC ? this._d.getUTCDay() : this._d.getDay(); return null != a ? (a = Ca(a, this.localeData()), this.add(a - b, "d")) : b } function Ka(a) { if (!this.isValid()) return null != a ? this : NaN; var b = (this.day() + 7 - this.localeData()._week.dow) % 7; return null == a ? b : this.add(a - b, "d") } function La(a) { if (!this.isValid()) return null != a ? this : NaN; // behaves the same as moment#day except // as a getter, returns 7 instead of 0 (1-7 range instead of 0-6) // as a setter, sunday should belong to the previous week. if (null != a) { var b = Da(a, this.localeData()); return this.day(this.day() % 7 ? b : b - 7) } return this.day() || 7 } function Ma(a) { return this._weekdaysParseExact ? (h(this, "_weekdaysRegex") || Pa.call(this), a ? this._weekdaysStrictRegex : this._weekdaysRegex) : (h(this, "_weekdaysRegex") || (this._weekdaysRegex = pe), this._weekdaysStrictRegex && a ? this._weekdaysStrictRegex : this._weekdaysRegex) } function Na(a) { return this._weekdaysParseExact ? (h(this, "_weekdaysRegex") || Pa.call(this), a ? this._weekdaysShortStrictRegex : this._weekdaysShortRegex) : (h(this, "_weekdaysShortRegex") || (this._weekdaysShortRegex = qe), this._weekdaysShortStrictRegex && a ? this._weekdaysShortStrictRegex : this._weekdaysShortRegex) } function Oa(a) { return this._weekdaysParseExact ? (h(this, "_weekdaysRegex") || Pa.call(this), a ? this._weekdaysMinStrictRegex : this._weekdaysMinRegex) : (h(this, "_weekdaysMinRegex") || (this._weekdaysMinRegex = re), this._weekdaysMinStrictRegex && a ? this._weekdaysMinStrictRegex : this._weekdaysMinRegex) } function Pa() { function a(a, b) { return b.length - a.length } var b, c, d, e, f, g = [], h = [], i = [], k = []; for (b = 0; 7 > b; b++) c = j([2e3, 1]).day(b), d = this.weekdaysMin(c, ""), e = this.weekdaysShort(c, ""), f = this.weekdays(c, ""), g.push(d), h.push(e), i.push(f), k.push(d), k.push(e), k.push(f); for ( // Sorting makes sure if one weekday (or abbr) is a prefix of another it // will match the longer piece. g.sort(a), h.sort(a), i.sort(a), k.sort(a), b = 0; 7 > b; b++) h[b] = _(h[b]), i[b] = _(i[b]), k[b] = _(k[b]); this._weekdaysRegex = new RegExp("^(" + k.join("|") + ")", "i"), this._weekdaysShortRegex = this._weekdaysRegex, this._weekdaysMinRegex = this._weekdaysRegex, this._weekdaysStrictRegex = new RegExp("^(" + i.join("|") + ")", "i"), this._weekdaysShortStrictRegex = new RegExp("^(" + h.join("|") + ")", "i"), this._weekdaysMinStrictRegex = new RegExp("^(" + g.join("|") + ")", "i") } // FORMATTING function Qa() { return this.hours() % 12 || 12 } function Ra() { return this.hours() || 24 } function Sa(a, b) { T(a, 0, 0, function() { return this.localeData().meridiem(this.hours(), this.minutes(), b) }) } // PARSING function Ta(a, b) { return b._meridiemParse } // LOCALES function Ua(a) { // IE8 Quirks Mode & IE7 Standards Mode do not allow accessing strings like arrays // Using charAt should be more compatible. return "p" === (a + "").toLowerCase().charAt(0) } function Va(a, b, c) { return a > 11 ? c ? "pm" : "PM" : c ? "am" : "AM" } function Wa(a) { return a ? a.toLowerCase().replace("_", "-") : a } // pick the locale from the array // try ['en-au', 'en-gb'] as 'en-au', 'en-gb', 'en', as in move through the list trying each // substring from most specific to least, but move to the next array item if it's a more specific variant than the current root function Xa(a) { for (var b, c, d, e, f = 0; f < a.length;) { for (e = Wa(a[f]).split("-"), b = e.length, c = Wa(a[f + 1]), c = c ? c.split("-") : null; b > 0;) { if (d = Ya(e.slice(0, b).join("-"))) return d; if (c && c.length >= b && u(e, c, !0) >= b - 1) //the next array item is better than a shallower substring of this one break; b-- } f++ } return null } function Ya(a) { var b = null; // TODO: Find a better way to register and load all the locales in Node if (!we[a] && "undefined" != typeof module && module && module.exports) try { b = se._abbr, require("./locale/" + a), // because defineLocale currently also sets the global locale, we // want to undo that for lazy loaded locales Za(b) } catch (c) {} return we[a] } // This function will load locale and then set the global locale. If // no arguments are passed in, it will simply return the current global // locale key. function Za(a, b) { var c; // moment.duration._locale = moment._locale = data; return a && (c = o(b) ? ab(a) : $a(a, b), c && (se = c)), se._abbr } function $a(a, b) { if (null !== b) { var c = ve; // treat as if there is no base config // backwards compat for now: also set the locale return b.abbr = a, null != we[a] ? (x("defineLocaleOverride", "use moment.updateLocale(localeName, config) to change an existing locale. moment.defineLocale(localeName, config) should only be used for creating a new locale See http://momentjs.com/guides/#/warnings/define-locale/ for more info."), c = we[a]._config) : null != b.parentLocale && (null != we[b.parentLocale] ? c = we[b.parentLocale]._config : x("parentLocaleUndefined", "specified parentLocale is not defined yet. See http://momentjs.com/guides/#/warnings/parent-locale/")), we[a] = new B(A(c, b)), Za(a), we[a] } // useful for testing return delete we[a], null } function _a(a, b) { if (null != b) { var c, d = ve; // MERGE null != we[a] && (d = we[a]._config), b = A(d, b), c = new B(b), c.parentLocale = we[a], we[a] = c, // backwards compat for now: also set the locale Za(a) } else // pass null for config to unupdate, useful for tests null != we[a] && (null != we[a].parentLocale ? we[a] = we[a].parentLocale : null != we[a] && delete we[a]); return we[a] } // returns locale data function ab(a) { var b; if (a && a._locale && a._locale._abbr && (a = a._locale._abbr), !a) return se; if (!c(a)) { if (b = Ya(a)) return b; a = [a] } return Xa(a) } function bb() { return rd(we) } function cb(a) { var b, c = a._a; return c && -2 === l(a).overflow && (b = c[Zd] < 0 || c[Zd] > 11 ? Zd : c[$d] < 1 || c[$d] > da(c[Yd], c[Zd]) ? $d : c[_d] < 0 || c[_d] > 24 || 24 === c[_d] && (0 !== c[ae] || 0 !== c[be] || 0 !== c[ce]) ? _d : c[ae] < 0 || c[ae] > 59 ? ae : c[be] < 0 || c[be] > 59 ? be : c[ce] < 0 || c[ce] > 999 ? ce : -1, l(a)._overflowDayOfYear && (Yd > b || b > $d) && (b = $d), l(a)._overflowWeeks && -1 === b && (b = de), l(a)._overflowWeekday && -1 === b && (b = ee), l(a).overflow = b), a } // date from iso format function db(a) { var b, c, d, e, f, g, h = a._i, i = xe.exec(h) || ye.exec(h); if (i) { for (l(a).iso = !0, b = 0, c = Ae.length; c > b; b++) if (Ae[b][1].exec(i[1])) { e = Ae[b][0], d = Ae[b][2] !== !1; break } if (null == e) return void(a._isValid = !1); if (i[3]) { for (b = 0, c = Be.length; c > b; b++) if (Be[b][1].exec(i[3])) { // match[2] should be 'T' or space f = (i[2] || " ") + Be[b][0]; break } if (null == f) return void(a._isValid = !1) } if (!d && null != f) return void(a._isValid = !1); if (i[4]) { if (!ze.exec(i[4])) return void(a._isValid = !1); g = "Z" } a._f = e + (f || "") + (g || ""), jb(a) } else a._isValid = !1 } // date from iso format or fallback function eb(b) { var c = Ce.exec(b._i); return null !== c ? void(b._d = new Date(+c[1])) : (db(b), void(b._isValid === !1 && (delete b._isValid, a.createFromInputFallback(b)))) } // Pick the first defined of two or three arguments. function fb(a, b, c) { return null != a ? a : null != b ? b : c } function gb(b) { // hooks is actually the exported moment object var c = new Date(a.now()); return b._useUTC ? [c.getUTCFullYear(), c.getUTCMonth(), c.getUTCDate()] : [c.getFullYear(), c.getMonth(), c.getDate()] } // convert an array to a date. // the array should mirror the parameters below // note: all values past the year are optional and will default to the lowest possible value. // [year, month, day , hour, minute, second, millisecond] function hb(a) { var b, c, d, e, f = []; if (!a._d) { // Default to current date. // * if no year, month, day of month are given, default to today // * if day of month is given, default month and year // * if month is given, default only year // * if year is given, don't default anything for (d = gb(a), a._w && null == a._a[$d] && null == a._a[Zd] && ib(a), a._dayOfYear && (e = fb(a._a[Yd], d[Yd]), a._dayOfYear > oa(e) && (l(a)._overflowDayOfYear = !0), c = sa(e, 0, a._dayOfYear), a._a[Zd] = c.getUTCMonth(), a._a[$d] = c.getUTCDate()), b = 0; 3 > b && null == a._a[b]; ++b) a._a[b] = f[b] = d[b]; // Zero out whatever was not defaulted, including time for (; 7 > b; b++) a._a[b] = f[b] = null == a._a[b] ? 2 === b ? 1 : 0 : a._a[b]; // Check for 24:00:00.000 24 === a._a[_d] && 0 === a._a[ae] && 0 === a._a[be] && 0 === a._a[ce] && (a._nextDay = !0, a._a[_d] = 0), a._d = (a._useUTC ? sa : ra).apply(null, f), // Apply timezone offset from input. The actual utcOffset can be changed // with parseZone. null != a._tzm && a._d.setUTCMinutes(a._d.getUTCMinutes() - a._tzm), a._nextDay && (a._a[_d] = 24) } } function ib(a) { var b, c, d, e, f, g, h, i; b = a._w, null != b.GG || null != b.W || null != b.E ? (f = 1, g = 4, c = fb(b.GG, a._a[Yd], va(rb(), 1, 4).year), d = fb(b.W, 1), e = fb(b.E, 1), (1 > e || e > 7) && (i = !0)) : (f = a._locale._week.dow, g = a._locale._week.doy, c = fb(b.gg, a._a[Yd], va(rb(), f, g).year), d = fb(b.w, 1), null != b.d ? (e = b.d, (0 > e || e > 6) && (i = !0)) : null != b.e ? (e = b.e + f, (b.e < 0 || b.e > 6) && (i = !0)) : e = f), 1 > d || d > wa(c, f, g) ? l(a)._overflowWeeks = !0 : null != i ? l(a)._overflowWeekday = !0 : (h = ua(c, d, e, f, g), a._a[Yd] = h.year, a._dayOfYear = h.dayOfYear) } // date from string and format string function jb(b) { // TODO: Move this to another part of the creation flow to prevent circular deps if (b._f === a.ISO_8601) return void db(b); b._a = [], l(b).empty = !0; // This array is used to make a Date, either with `new Date` or `Date.UTC` var c, d, e, f, g, h = "" + b._i, i = h.length, j = 0; for (e = X(b._f, b._locale).match(Bd) || [], c = 0; c < e.length; c++) f = e[c], d = (h.match(Z(f, b)) || [])[0], d && (g = h.substr(0, h.indexOf(d)), g.length > 0 && l(b).unusedInput.push(g), h = h.slice(h.indexOf(d) + d.length), j += d.length), Ed[f] ? (d ? l(b).empty = !1 : l(b).unusedTokens.push(f), ca(f, d, b)) : b._strict && !d && l(b).unusedTokens.push(f); // add remaining unparsed input length to the string l(b).charsLeftOver = i - j, h.length > 0 && l(b).unusedInput.push(h), // clear _12h flag if hour is <= 12 b._a[_d] <= 12 && l(b).bigHour === !0 && b._a[_d] > 0 && (l(b).bigHour = void 0), l(b).parsedDateParts = b._a.slice(0), l(b).meridiem = b._meridiem, // handle meridiem b._a[_d] = kb(b._locale, b._a[_d], b._meridiem), hb(b), cb(b) } function kb(a, b, c) { var d; // Fallback return null == c ? b : null != a.meridiemHour ? a.meridiemHour(b, c) : null != a.isPM ? (d = a.isPM(c), d && 12 > b && (b += 12), d || 12 !== b || (b = 0), b) : b } // date from string and array of format strings function lb(a) { var b, c, d, e, f; if (0 === a._f.length) return l(a).invalidFormat = !0, void(a._d = new Date(NaN)); for (e = 0; e < a._f.length; e++) f = 0, b = p({}, a), null != a._useUTC && (b._useUTC = a._useUTC), b._f = a._f[e], jb(b), m(b) && (f += l(b).charsLeftOver, f += 10 * l(b).unusedTokens.length, l(b).score = f, (null == d || d > f) && (d = f, c = b)); i(a, c || b) } function mb(a) { if (!a._d) { var b = K(a._i); a._a = g([b.year, b.month, b.day || b.date, b.hour, b.minute, b.second, b.millisecond], function(a) { return a && parseInt(a, 10) }), hb(a) } } function nb(a) { var b = new q(cb(ob(a))); // Adding is smart enough around DST return b._nextDay && (b.add(1, "d"), b._nextDay = void 0), b } function ob(a) { var b = a._i, d = a._f; return a._locale = a._locale || ab(a._l), null === b || void 0 === d && "" === b ? n({ nullInput: !0 }) : ("string" == typeof b && (a._i = b = a._locale.preparse(b)), r(b) ? new q(cb(b)) : (c(d) ? lb(a) : f(b) ? a._d = b : d ? jb(a) : pb(a), m(a) || (a._d = null), a)) } function pb(b) { var d = b._i; void 0 === d ? b._d = new Date(a.now()) : f(d) ? b._d = new Date(d.valueOf()) : "string" == typeof d ? eb(b) : c(d) ? (b._a = g(d.slice(0), function(a) { return parseInt(a, 10) }), hb(b)) : "object" == typeof d ? mb(b) : "number" == typeof d ? // from milliseconds b._d = new Date(d) : a.createFromInputFallback(b) } function qb(a, b, f, g, h) { var i = {}; // object construction must be done this way. // https://github.com/moment/moment/issues/1423 return "boolean" == typeof f && (g = f, f = void 0), (d(a) && e(a) || c(a) && 0 === a.length) && (a = void 0), i._isAMomentObject = !0, i._useUTC = i._isUTC = h, i._l = f, i._i = a, i._f = b, i._strict = g, nb(i) } function rb(a, b, c, d) { return qb(a, b, c, d, !1) } // Pick a moment m from moments so that m[fn](other) is true for all // other. This relies on the function fn to be transitive. // // moments should either be an array of moment objects or an array, whose // first element is an array of moment objects. function sb(a, b) { var d, e; if (1 === b.length && c(b[0]) && (b = b[0]), !b.length) return rb(); for (d = b[0], e = 1; e < b.length; ++e) b[e].isValid() && !b[e][a](d) || (d = b[e]); return d } // TODO: Use [].sort instead? function tb() { var a = [].slice.call(arguments, 0); return sb("isBefore", a) } function ub() { var a = [].slice.call(arguments, 0); return sb("isAfter", a) } function vb(a) { var b = K(a), c = b.year || 0, d = b.quarter || 0, e = b.month || 0, f = b.week || 0, g = b.day || 0, h = b.hour || 0, i = b.minute || 0, j = b.second || 0, k = b.millisecond || 0; // representation for dateAddRemove this._milliseconds = +k + 1e3 * j + // 1000 6e4 * i + // 1000 * 60 1e3 * h * 60 * 60, //using 1000 * 60 * 60 instead of 36e5 to avoid floating point rounding errors https://github.com/moment/moment/issues/2978 // Because of dateAddRemove treats 24 hours as different from a // day when working around DST, we need to store them separately this._days = +g + 7 * f, // It is impossible translate months into days without knowing // which months you are are talking about, so we have to store // it separately. this._months = +e + 3 * d + 12 * c, this._data = {}, this._locale = ab(), this._bubble() } function wb(a) { return a instanceof vb } // FORMATTING function xb(a, b) { T(a, 0, 0, function() { var a = this.utcOffset(), c = "+"; return 0 > a && (a = -a, c = "-"), c + S(~~(a / 60), 2) + b + S(~~a % 60, 2) }) } function yb(a, b) { var c = (b || "").match(a) || [], d = c[c.length - 1] || [], e = (d + "").match(Ge) || ["-", 0, 0], f = +(60 * e[1]) + t(e[2]); return "+" === e[0] ? f : -f } // Return a moment from input, that is local/utc/zone equivalent to model. function zb(b, c) { var d, e; // Use low-level api, because this fn is low-level api. return c._isUTC ? (d = c.clone(), e = (r(b) || f(b) ? b.valueOf() : rb(b).valueOf()) - d.valueOf(), d._d.setTime(d._d.valueOf() + e), a.updateOffset(d, !1), d) : rb(b).local() } function Ab(a) { // On Firefox.24 Date#getTimezoneOffset returns a floating point. // https://github.com/moment/moment/pull/1871 return 15 * -Math.round(a._d.getTimezoneOffset() / 15) } // MOMENTS // keepLocalTime = true means only change the timezone, without // affecting the local hour. So 5:31:26 +0300 --[utcOffset(2, true)]--> // 5:31:26 +0200 It is possible that 5:31:26 doesn't exist with offset // +0200, so we adjust the time as needed, to be valid. // // Keeping the time actually adds/subtracts (one hour) // from the actual represented time. That is why we call updateOffset // a second time. In case it wants us to change the offset again // _changeInProgress == true case, then we have to adjust, because // there is no such time in the given timezone. function Bb(b, c) { var d, e = this._offset || 0; return this.isValid() ? null != b ? ("string" == typeof b ? b = yb(Td, b) : Math.abs(b) < 16 && (b = 60 * b), !this._isUTC && c && (d = Ab(this)), this._offset = b, this._isUTC = !0, null != d && this.add(d, "m"), e !== b && (!c || this._changeInProgress ? Sb(this, Mb(b - e, "m"), 1, !1) : this._changeInProgress || (this._changeInProgress = !0, a.updateOffset(this, !0), this._changeInProgress = null)), this) : this._isUTC ? e : Ab(this) : null != b ? this : NaN } function Cb(a, b) { return null != a ? ("string" != typeof a && (a = -a), this.utcOffset(a, b), this) : -this.utcOffset() } function Db(a) { return this.utcOffset(0, a) } function Eb(a) { return this._isUTC && (this.utcOffset(0, a), this._isUTC = !1, a && this.subtract(Ab(this), "m")), this } function Fb() { return this._tzm ? this.utcOffset(this._tzm) : "string" == typeof this._i && this.utcOffset(yb(Sd, this._i)), this } function Gb(a) { return this.isValid() ? (a = a ? rb(a).utcOffset() : 0, (this.utcOffset() - a) % 60 === 0) : !1 } function Hb() { return this.utcOffset() > this.clone().month(0).utcOffset() || this.utcOffset() > this.clone().month(5).utcOffset() } function Ib() { if (!o(this._isDSTShifted)) return this._isDSTShifted; var a = {}; if (p(a, this), a = ob(a), a._a) { var b = a._isUTC ? j(a._a) : rb(a._a); this._isDSTShifted = this.isValid() && u(a._a, b.toArray()) > 0 } else this._isDSTShifted = !1; return this._isDSTShifted } function Jb() { return this.isValid() ? !this._isUTC : !1 } function Kb() { return this.isValid() ? this._isUTC : !1 } function Lb() { return this.isValid() ? this._isUTC && 0 === this._offset : !1 } function Mb(a, b) { var c, d, e, f = a, // matching against regexp is expensive, do it on demand g = null; // checks for null or undefined return wb(a) ? f = { ms: a._milliseconds, d: a._days, M: a._months } : "number" == typeof a ? (f = {}, b ? f[b] = a : f.milliseconds = a) : (g = He.exec(a)) ? (c = "-" === g[1] ? -1 : 1, f = { y: 0, d: t(g[$d]) * c, h: t(g[_d]) * c, m: t(g[ae]) * c, s: t(g[be]) * c, ms: t(g[ce]) * c }) : (g = Ie.exec(a)) ? (c = "-" === g[1] ? -1 : 1, f = { y: Nb(g[2], c), M: Nb(g[3], c), w: Nb(g[4], c), d: Nb(g[5], c), h: Nb(g[6], c), m: Nb(g[7], c), s: Nb(g[8], c) }) : null == f ? f = {} : "object" == typeof f && ("from" in f || "to" in f) && (e = Pb(rb(f.from), rb(f.to)), f = {}, f.ms = e.milliseconds, f.M = e.months), d = new vb(f), wb(a) && h(a, "_locale") && (d._locale = a._locale), d } function Nb(a, b) { // We'd normally use ~~inp for this, but unfortunately it also // converts floats to ints. // inp may be undefined, so careful calling replace on it. var c = a && parseFloat(a.replace(",", ".")); // apply sign while we're at it return (isNaN(c) ? 0 : c) * b } function Ob(a, b) { var c = { milliseconds: 0, months: 0 }; return c.months = b.month() - a.month() + 12 * (b.year() - a.year()), a.clone().add(c.months, "M").isAfter(b) && --c.months, c.milliseconds = +b - +a.clone().add(c.months, "M"), c } function Pb(a, b) { var c; return a.isValid() && b.isValid() ? (b = zb(b, a), a.isBefore(b) ? c = Ob(a, b) : (c = Ob(b, a), c.milliseconds = -c.milliseconds, c.months = -c.months), c) : { milliseconds: 0, months: 0 } } function Qb(a) { return 0 > a ? -1 * Math.round(-1 * a) : Math.round(a) } // TODO: remove 'name' arg after deprecation is removed function Rb(a, b) { return function(c, d) { var e, f; //invert the arguments, but complain about it return null === d || isNaN(+d) || (x(b, "moment()." + b + "(period, number) is deprecated. Please use moment()." + b + "(number, period). See http://momentjs.com/guides/#/warnings/add-inverted-param/ for more info."), f = c, c = d, d = f), c = "string" == typeof c ? +c : c, e = Mb(c, d), Sb(this, e, a), this } } function Sb(b, c, d, e) { var f = c._milliseconds, g = Qb(c._days), h = Qb(c._months); b.isValid() && (e = null == e ? !0 : e, f && b._d.setTime(b._d.valueOf() + f * d), g && P(b, "Date", O(b, "Date") + g * d), h && ia(b, O(b, "Month") + h * d), e && a.updateOffset(b, g || h)) } function Tb(a, b) { var c = a.diff(b, "days", !0); return -6 > c ? "sameElse" : -1 > c ? "lastWeek" : 0 > c ? "lastDay" : 1 > c ? "sameDay" : 2 > c ? "nextDay" : 7 > c ? "nextWeek" : "sameElse" } function Ub(b, c) { // We want to compare the start of today, vs this. // Getting start-of-today depends on whether we're local/utc/offset or not. var d = b || rb(), e = zb(d, this).startOf("day"), f = a.calendarFormat(this, e) || "sameElse", g = c && (y(c[f]) ? c[f].call(this, d) : c[f]); return this.format(g || this.localeData().calendar(f, this, rb(d))) } function Vb() { return new q(this) } function Wb(a, b) { var c = r(a) ? a : rb(a); return this.isValid() && c.isValid() ? (b = J(o(b) ? "millisecond" : b), "millisecond" === b ? this.valueOf() > c.valueOf() : c.valueOf() < this.clone().startOf(b).valueOf()) : !1 } function Xb(a, b) { var c = r(a) ? a : rb(a); return this.isValid() && c.isValid() ? (b = J(o(b) ? "millisecond" : b), "millisecond" === b ? this.valueOf() < c.valueOf() : this.clone().endOf(b).valueOf() < c.valueOf()) : !1 } function Yb(a, b, c, d) { return d = d || "()", ("(" === d[0] ? this.isAfter(a, c) : !this.isBefore(a, c)) && (")" === d[1] ? this.isBefore(b, c) : !this.isAfter(b, c)) } function Zb(a, b) { var c, d = r(a) ? a : rb(a); return this.isValid() && d.isValid() ? (b = J(b || "millisecond"), "millisecond" === b ? this.valueOf() === d.valueOf() : (c = d.valueOf(), this.clone().startOf(b).valueOf() <= c && c <= this.clone().endOf(b).valueOf())) : !1 } function $b(a, b) { return this.isSame(a, b) || this.isAfter(a, b) } function _b(a, b) { return this.isSame(a, b) || this.isBefore(a, b) } function ac(a, b, c) { var d, e, f, g; // 1000 // 1000 * 60 // 1000 * 60 * 60 // 1000 * 60 * 60 * 24, negate dst // 1000 * 60 * 60 * 24 * 7, negate dst return this.isValid() ? (d = zb(a, this), d.isValid() ? (e = 6e4 * (d.utcOffset() - this.utcOffset()), b = J(b), "year" === b || "month" === b || "quarter" === b ? (g = bc(this, d), "quarter" === b ? g /= 3 : "year" === b && (g /= 12)) : (f = this - d, g = "second" === b ? f / 1e3 : "minute" === b ? f / 6e4 : "hour" === b ? f / 36e5 : "day" === b ? (f - e) / 864e5 : "week" === b ? (f - e) / 6048e5 : f), c ? g : s(g)) : NaN) : NaN } function bc(a, b) { // difference in months var c, d, e = 12 * (b.year() - a.year()) + (b.month() - a.month()), // b is in (anchor - 1 month, anchor + 1 month) f = a.clone().add(e, "months"); //check for negative zero, return zero if negative zero // linear across the month // linear across the month return 0 > b - f ? (c = a.clone().add(e - 1, "months"), d = (b - f) / (f - c)) : (c = a.clone().add(e + 1, "months"), d = (b - f) / (c - f)), -(e + d) || 0 } function cc() { return this.clone().locale("en").format("ddd MMM DD YYYY HH:mm:ss [GMT]ZZ") } function dc() { var a = this.clone().utc(); return 0 < a.year() && a.year() <= 9999 ? y(Date.prototype.toISOString) ? this.toDate().toISOString() : W(a, "YYYY-MM-DD[T]HH:mm:ss.SSS[Z]") : W(a, "YYYYYY-MM-DD[T]HH:mm:ss.SSS[Z]") } function ec(b) { b || (b = this.isUtc() ? a.defaultFormatUtc : a.defaultFormat); var c = W(this, b); return this.localeData().postformat(c) } function fc(a, b) { return this.isValid() && (r(a) && a.isValid() || rb(a).isValid()) ? Mb({ to: this, from: a }).locale(this.locale()).humanize(!b) : this.localeData().invalidDate() } function gc(a) { return this.from(rb(), a) } function hc(a, b) { return this.isValid() && (r(a) && a.isValid() || rb(a).isValid()) ? Mb({ from: this, to: a }).locale(this.locale()).humanize(!b) : this.localeData().invalidDate() } function ic(a) { return this.to(rb(), a) } // If passed a locale key, it will set the locale for this // instance. Otherwise, it will return the locale configuration // variables for this instance. function jc(a) { var b; return void 0 === a ? this._locale._abbr : (b = ab(a), null != b && (this._locale = b), this) } function kc() { return this._locale } function lc(a) { // the following switch intentionally omits break keywords // to utilize falling through the cases. switch (a = J(a)) { case "year": this.month(0); /* falls through */ case "quarter": case "month": this.date(1); /* falls through */ case "week": case "isoWeek": case "day": case "date": this.hours(0); /* falls through */ case "hour": this.minutes(0); /* falls through */ case "minute": this.seconds(0); /* falls through */ case "second": this.milliseconds(0) } // weeks are a special case // quarters are also special return "week" === a && this.weekday(0), "isoWeek" === a && this.isoWeekday(1), "quarter" === a && this.month(3 * Math.floor(this.month() / 3)), this } function