//! moment.js //! version : 2.5.1 //! authors : Tim Wood, Iskren Chernev, Moment.js contributors //! license : MIT //! momentjs.com (function(a) { function b() { return{empty: !1, unusedTokens: [], unusedInput: [], overflow: -2, charsLeftOver: 0, nullInput: !1, invalidMonth: null, invalidFormat: !1, userInvalidated: !1, iso: !1} } function c(a, b) { return function(c) { return k(a.call(this, c), b) } } function d(a, b) { return function(c) { return this.lang().ordinal(a.call(this, c), b) } } function e() { } function f(a) { w(a), h(this, a) } function g(a) { var b = q(a), c = b.year || 0, d = b.month || 0, e = b.week || 0, f = b.day || 0, g = b.hour || 0, h = b.minute || 0, i = b.second || 0, j = b.millisecond || 0; this._milliseconds = +j + 1e3 * i + 6e4 * h + 36e5 * g, this._days = +f + 7 * e, this._months = +d + 12 * c, this._data = {}, this._bubble() } function h(a, b) { for (var c in b) b.hasOwnProperty(c) && (a[c] = b[c]); return b.hasOwnProperty("toString") && (a.toString = b.toString), b.hasOwnProperty("valueOf") && (a.valueOf = b.valueOf), a } function i(a) { var b, c = {}; for (b in a) a.hasOwnProperty(b) && qb.hasOwnProperty(b) && (c[b] = a[b]); return c } function j(a) { return 0 > a ? Math.ceil(a) : Math.floor(a) } function k(a, b, c) { for (var d = "" + Math.abs(a), e = a >= 0; d.length < b; ) d = "0" + d; return(e ? c ? "+" : "" : "-") + d } function l(a, b, c, d) { var e, f, g = b._milliseconds, h = b._days, i = b._months; g && a._d.setTime(+a._d + g * c), (h || i) && (e = a.minute(), f = a.hour()), h && a.date(a.date() + h * c), i && a.month(a.month() + i * c), g && !d && db.updateOffset(a), (h || i) && (a.minute(e), a.hour(f)) } function m(a) { return"[object Array]" === Object.prototype.toString.call(a) } function n(a) { return"[object Date]" === Object.prototype.toString.call(a) || a instanceof Date } function o(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 && s(a[d]) !== s(b[d])) && g++; return g + f } function p(a) { if (a) { var b = a.toLowerCase().replace(/(.)s$/, "$1"); a = Tb[a] || Ub[b] || b } return a } function q(a) { var b, c, d = {}; for (c in a) a.hasOwnProperty(c) && (b = p(c), b && (d[b] = a[c])); return d } function r(b) { var c, d; if (0 === b.indexOf("week")) c = 7, d = "day"; else { if (0 !== b.indexOf("month")) return; c = 12, d = "month" } db[b] = function(e, f) { var g, h, i = db.fn._lang[b], j = []; if ("number" == typeof e && (f = e, e = a), h = function(a) { var b = db().utc().set(d, a); return i.call(db.fn._lang, b, e || "") }, null != f) return h(f); for (g = 0; c > g; g++) j.push(h(g)); return j } } function s(a) { var b = +a, c = 0; return 0 !== b && isFinite(b) && (c = b >= 0 ? Math.floor(b) : Math.ceil(b)), c } function t(a, b) { return new Date(Date.UTC(a, b + 1, 0)).getUTCDate() } function u(a) { return v(a) ? 366 : 365 } function v(a) { return a % 4 === 0 && a % 100 !== 0 || a % 400 === 0 } function w(a) { var b; a._a && -2 === a._pf.overflow && (b = a._a[jb] < 0 || a._a[jb] > 11 ? jb : a._a[kb] < 1 || a._a[kb] > t(a._a[ib], a._a[jb]) ? kb : a._a[lb] < 0 || a._a[lb] > 23 ? lb : a._a[mb] < 0 || a._a[mb] > 59 ? mb : a._a[nb] < 0 || a._a[nb] > 59 ? nb : a._a[ob] < 0 || a._a[ob] > 999 ? ob : -1, a._pf._overflowDayOfYear && (ib > b || b > kb) && (b = kb), a._pf.overflow = b) } function x(a) { return null == a._isValid && (a._isValid = !isNaN(a._d.getTime()) && a._pf.overflow < 0 && !a._pf.empty && !a._pf.invalidMonth && !a._pf.nullInput && !a._pf.invalidFormat && !a._pf.userInvalidated, a._strict && (a._isValid = a._isValid && 0 === a._pf.charsLeftOver && 0 === a._pf.unusedTokens.length)), a._isValid } function y(a) { return a ? a.toLowerCase().replace("_", "-") : a } function z(a, b) { return b._isUTC ? db(a).zone(b._offset || 0) : db(a).local() } function A(a, b) { return b.abbr = a, pb[a] || (pb[a] = new e), pb[a].set(b), pb[a] } function B(a) { delete pb[a] } function C(a) { var b, c, d, e, f = 0, g = function(a) { if (!pb[a] && rb) try { require("./lang/" + a) } catch (b) { } return pb[a] }; if (!a) return db.fn._lang; if (!m(a)) { if (c = g(a)) return c; a = [a] } for (; f < a.length; ) { for (e = y(a[f]).split("-"), b = e.length, d = y(a[f + 1]), d = d ? d.split("-") : null; b > 0; ) { if (c = g(e.slice(0, b).join("-"))) return c; if (d && d.length >= b && o(e, d, !0) >= b - 1) break; b-- } f++ } return db.fn._lang } function D(a) { return a.match(/\[[\s\S]/) ? a.replace(/^\[|\]$/g, "") : a.replace(/\\/g, "") } function E(a) { var b, c, d = a.match(vb); for (b = 0, c = d.length; c > b; b++) d[b] = Yb[d[b]] ? Yb[d[b]] : D(d[b]); return function(e) { var f = ""; for (b = 0; c > b; b++) f += d[b]instanceof Function ? d[b].call(e, a) : d[b]; return f } } function F(a, b) { return a.isValid() ? (b = G(b, a.lang()), Vb[b] || (Vb[b] = E(b)), Vb[b](a)) : a.lang().invalidDate() } function G(a, b) { function c(a) { return b.longDateFormat(a) || a } var d = 5; for (wb.lastIndex = 0; d >= 0 && wb.test(a); ) a = a.replace(wb, c), wb.lastIndex = 0, d -= 1; return a } function H(a, b) { var c, d = b._strict; switch (a) { case"DDDD": return Ib; case"YYYY": case"GGGG": case"gggg": return d ? Jb : zb; case"Y": case"G": case"g": return Lb; case"YYYYYY": case"YYYYY": case"GGGGG": case"ggggg": return d ? Kb : Ab; case"S": if (d) return Gb; case"SS": if (d) return Hb; case"SSS": if (d) return Ib; case"DDD": return yb; case"MMM": case"MMMM": case"dd": case"ddd": case"dddd": return Cb; case"a": case"A": return C(b._l)._meridiemParse; case"X": return Fb; case"Z": case"ZZ": return Db; case"T": return Eb; case"SSSS": return Bb; case"MM": case"DD": case"YY": case"GG": case"gg": case"HH": case"hh": case"mm": case"ss": case"ww": case"WW": return d ? Hb : xb; case"M": case"D": case"d": case"H": case"h": case"m": case"s": case"w": case"W": case"e": case"E": return xb; default: return c = new RegExp(P(O(a.replace("\\", "")), "i")) } } function I(a) { a = a || ""; var b = a.match(Db) || [], c = b[b.length - 1] || [], d = (c + "").match(Qb) || ["-", 0, 0], e = +(60 * d[1]) + s(d[2]); return"+" === d[0] ? -e : e } function J(a, b, c) { var d, e = c._a; switch (a) { case"M": case"MM": null != b && (e[jb] = s(b) - 1); break; case"MMM": case"MMMM": d = C(c._l).monthsParse(b), null != d ? e[jb] = d : c._pf.invalidMonth = b; break; case"D": case"DD": null != b && (e[kb] = s(b)); break; case"DDD": case"DDDD": null != b && (c._dayOfYear = s(b)); break; case"YY": e[ib] = s(b) + (s(b) > 68 ? 1900 : 2e3); break; case"YYYY": case"YYYYY": case"YYYYYY": e[ib] = s(b); break; case"a": case"A": c._isPm = C(c._l).isPM(b); break; case"H": case"HH": case"h": case"hh": e[lb] = s(b); break; case"m": case"mm": e[mb] = s(b); break; case"s": case"ss": e[nb] = s(b); break; case"S": case"SS": case"SSS": case"SSSS": e[ob] = s(1e3 * ("0." + b)); break; case"X": c._d = new Date(1e3 * parseFloat(b)); break; case"Z": case"ZZ": c._useUTC = !0, c._tzm = I(b); break; case"w": case"ww": case"W": case"WW": case"d": case"dd": case"ddd": case"dddd": case"e": case"E": a = a.substr(0, 1); case"gg": case"gggg": case"GG": case"GGGG": case"GGGGG": a = a.substr(0, 2), b && (c._w = c._w || {}, c._w[a] = b) } } function K(a) { var b, c, d, e, f, g, h, i, j, k, l = []; if (!a._d) { for (d = M(a), a._w && null == a._a[kb] && null == a._a[jb] && (f = function(b) { var c = parseInt(b, 10); return b ? b.length < 3 ? c > 68 ? 1900 + c : 2e3 + c : c : null == a._a[ib] ? db().weekYear() : a._a[ib] }, g = a._w, null != g.GG || null != g.W || null != g.E?h = Z(f(g.GG), g.W || 1, g.E, 4, 1):(i = C(a._l), j = null != g.d?V(g.d, i):null != g.e?parseInt(g.e, 10) + i._week.dow:0, k = parseInt(g.w, 10) || 1, null != g.d && j < i._week.dow && k++, h = Z(f(g.gg), k, j, i._week.doy, i._week.dow)), a._a[ib] = h.year, a._dayOfYear = h.dayOfYear), a._dayOfYear && (e = null == a._a[ib]?d[ib]:a._a[ib], a._dayOfYear > u(e) && (a._pf._overflowDayOfYear = !0), c = U(e, 0, a._dayOfYear), a._a[jb] = c.getUTCMonth(), a._a[kb] = c.getUTCDate()), b = 0; 3 > b && null == a._a[b]; ++b) a._a[b] = l[b] = d[b]; for (; 7 > b; b++) a._a[b] = l[b] = null == a._a[b] ? 2 === b ? 1 : 0 : a._a[b]; l[lb] += s((a._tzm || 0) / 60), l[mb] += s((a._tzm || 0) % 60), a._d = (a._useUTC ? U : T).apply(null, l) } } function L(a) { var b; a._d || (b = q(a._i), a._a = [b.year, b.month, b.day, b.hour, b.minute, b.second, b.millisecond], K(a)) } function M(a) { var b = new Date; return a._useUTC ? [b.getUTCFullYear(), b.getUTCMonth(), b.getUTCDate()] : [b.getFullYear(), b.getMonth(), b.getDate()] } function N(a) { a._a = [], a._pf.empty = !0; var b, c, d, e, f, g = C(a._l), h = "" + a._i, i = h.length, j = 0; for (d = G(a._f, g).match(vb) || [], b = 0; b < d.length; b++) e = d[b], c = (h.match(H(e, a)) || [])[0], c && (f = h.substr(0, h.indexOf(c)), f.length > 0 && a._pf.unusedInput.push(f), h = h.slice(h.indexOf(c) + c.length), j += c.length), Yb[e] ? (c ? a._pf.empty = !1 : a._pf.unusedTokens.push(e), J(e, c, a)) : a._strict && !c && a._pf.unusedTokens.push(e); a._pf.charsLeftOver = i - j, h.length > 0 && a._pf.unusedInput.push(h), a._isPm && a._a[lb] < 12 && (a._a[lb] += 12), a._isPm === !1 && 12 === a._a[lb] && (a._a[lb] = 0), K(a), w(a) } function O(a) { return a.replace(/\\(\[)|\\(\])|\[([^\]\[]*)\]|\\(.)/g, function(a, b, c, d, e) { return b || c || d || e }) } function P(a) { return a.replace(/[-\/\\^$*+?.()|[\]{}]/g, "\\$&") } function Q(a) { var c, d, e, f, g; if (0 === a._f.length) return a._pf.invalidFormat = !0, a._d = new Date(0 / 0), void 0; for (f = 0; f < a._f.length; f++) g = 0, c = h({}, a), c._pf = b(), c._f = a._f[f], N(c), x(c) && (g += c._pf.charsLeftOver, g += 10 * c._pf.unusedTokens.length, c._pf.score = g, (null == e || e > g) && (e = g, d = c)); h(a, d || c) } function R(a) { var b, c, d = a._i, e = Mb.exec(d); if (e) { for (a._pf.iso = !0, b = 0, c = Ob.length; c > b; b++) if (Ob[b][1].exec(d)) { a._f = Ob[b][0] + (e[6] || " "); break } for (b = 0, c = Pb.length; c > b; b++) if (Pb[b][1].exec(d)) { a._f += Pb[b][0]; break } d.match(Db) && (a._f += "Z"), N(a) } else a._d = new Date(d) } function S(b) { var c = b._i, d = sb.exec(c); c === a ? b._d = new Date : d ? b._d = new Date(+d[1]) : "string" == typeof c ? R(b) : m(c) ? (b._a = c.slice(0), K(b)) : n(c) ? b._d = new Date(+c) : "object" == typeof c ? L(b) : b._d = new Date(c) } function T(a, b, c, d, e, f, g) { var h = new Date(a, b, c, d, e, f, g); return 1970 > a && h.setFullYear(a), h } function U(a) { var b = new Date(Date.UTC.apply(null, arguments)); return 1970 > a && b.setUTCFullYear(a), b } function V(a, b) { if ("string" == typeof a) if (isNaN(a)) { if (a = b.weekdaysParse(a), "number" != typeof a) return null } else a = parseInt(a, 10); return a } function W(a, b, c, d, e) { return e.relativeTime(b || 1, !!c, a, d) } function X(a, b, c) { var d = hb(Math.abs(a) / 1e3), e = hb(d / 60), f = hb(e / 60), g = hb(f / 24), h = hb(g / 365), i = 45 > d && ["s", d] || 1 === e && ["m"] || 45 > e && ["mm", e] || 1 === f && ["h"] || 22 > f && ["hh", f] || 1 === g && ["d"] || 25 >= g && ["dd", g] || 45 >= g && ["M"] || 345 > g && ["MM", hb(g / 30)] || 1 === h && ["y"] || ["yy", h]; return i[2] = b, i[3] = a > 0, i[4] = c, W.apply({}, i) } function Y(a, b, c) { var d, e = c - b, f = c - a.day(); return f > e && (f -= 7), e - 7 > f && (f += 7), d = db(a).add("d", f), {week: Math.ceil(d.dayOfYear() / 7), year: d.year()} } function Z(a, b, c, d, e) { var f, g, h = U(a, 0, 1).getUTCDay(); return c = null != c ? c : e, f = e - h + (h > d ? 7 : 0) - (e > h ? 7 : 0), g = 7 * (b - 1) + (c - e) + f + 1, {year: g > 0 ? a : a - 1, dayOfYear: g > 0 ? g : u(a - 1) + g} } function $(a) { var b = a._i, c = a._f; return null === b ? db.invalid({nullInput: !0}) : ("string" == typeof b && (a._i = b = C().preparse(b)), db.isMoment(b) ? (a = i(b), a._d = new Date(+b._d)) : c ? m(c) ? Q(a) : N(a) : S(a), new f(a)) } function _(a, b) { db.fn[a] = db.fn[a + "s"] = function(a) { var c = this._isUTC ? "UTC" : ""; return null != a ? (this._d["set" + c + b](a), db.updateOffset(this), this) : this._d["get" + c + b]() } } function ab(a) { db.duration.fn[a] = function() { return this._data[a] } } function bb(a, b) { db.duration.fn["as" + a] = function() { return+this / b } } function cb(a) { var b = !1, c = db; "undefined" == typeof ender && (a ? (gb.moment = function() { return!b && console && console.warn && (b = !0, console.warn("Accessing Moment through the global scope is deprecated, and will be removed in an upcoming release.")), c.apply(null, arguments) }, h(gb.moment, c)) : gb.moment = db) } for (var db, eb, fb = "2.5.1", gb = this, hb = Math.round, ib = 0, jb = 1, kb = 2, lb = 3, mb = 4, nb = 5, ob = 6, pb = {}, qb = {_isAMomentObject: null, _i: null, _f: null, _l: null, _strict: null, _isUTC: null, _offset: null, _pf: null, _lang: null}, rb = "undefined" != typeof module && module.exports && "undefined" != typeof require, sb = /^\/?Date\((\-?\d+)/i, tb = /(\-)?(?:(\d*)\.)?(\d+)\:(\d+)(?:\:(\d+)\.?(\d{3})?)?/, ub = /^(-)?P(?:(?:([0-9,.]*)Y)?(?:([0-9,.]*)M)?(?:([0-9,.]*)D)?(?:T(?:([0-9,.]*)H)?(?:([0-9,.]*)M)?(?:([0-9,.]*)S)?)?|([0-9,.]*)W)$/, vb = /(\[[^\[]*\])|(\\)?(Mo|MM?M?M?|Do|DDDo|DD?D?D?|ddd?d?|do?|w[o|w]?|W[o|W]?|YYYYYY|YYYYY|YYYY|YY|gg(ggg?)?|GG(GGG?)?|e|E|a|A|hh?|HH?|mm?|ss?|S{1,4}|X|zz?|ZZ?|.)/g, wb = /(\[[^\[]*\])|(\\)?(LT|LL?L?L?|l{1,4})/g, xb = /\d\d?/, yb = /\d{1,3}/, zb = /\d{1,4}/, Ab = /[+\-]?\d{1,6}/, Bb = /\d+/, Cb = /[0-9]*['a-z\u00A0-\u05FF\u0700-\uD7FF\uF900-\uFDCF\uFDF0-\uFFEF]+|[\u0600-\u06FF\/]+(\s*?[\u0600-\u06FF]+){1,2}/i, Db = /Z|[\+\-]\d\d:?\d\d/gi, Eb = /T/i, Fb = /[\+\-]?\d+(\.\d{1,3})?/, Gb = /\d/, Hb = /\d\d/, Ib = /\d{3}/, Jb = /\d{4}/, Kb = /[+-]?\d{6}/, Lb = /[+-]?\d+/, Mb = /^\s*(?:[+-]\d{6}|\d{4})-(?:(\d\d-\d\d)|(W\d\d$)|(W\d\d-\d)|(\d\d\d))((T| )(\d\d(:\d\d(:\d\d(\.\d+)?)?)?)?([\+\-]\d\d(?::?\d\d)?|\s*Z)?)?$/, Nb = "YYYY-MM-DDTHH:mm:ssZ", Ob = [["YYYYYY-MM-DD", /[+-]\d{6}-\d{2}-\d{2}/], ["YYYY-MM-DD", /\d{4}-\d{2}-\d{2}/], ["GGGG-[W]WW-E", /\d{4}-W\d{2}-\d/], ["GGGG-[W]WW", /\d{4}-W\d{2}/], ["YYYY-DDD", /\d{4}-\d{3}/]], Pb = [["HH:mm:ss.SSSS", /(T| )\d\d:\d\d:\d\d\.\d{1,3}/], ["HH:mm:ss", /(T| )\d\d:\d\d:\d\d/], ["HH:mm", /(T| )\d\d:\d\d/], ["HH", /(T| )\d\d/]], Qb = /([\+\-]|\d\d)/gi, Rb = "Date|Hours|Minutes|Seconds|Milliseconds".split("|"), Sb = {Milliseconds: 1, Seconds: 1e3, Minutes: 6e4, Hours: 36e5, Days: 864e5, Months: 2592e6, Years: 31536e6}, Tb = {ms: "millisecond", s: "second", m: "minute", h: "hour", d: "day", D: "date", w: "week", W: "isoWeek", M: "month", y: "year", DDD: "dayOfYear", e: "weekday", E: "isoWeekday", gg: "weekYear", GG: "isoWeekYear"}, Ub = {dayofyear: "dayOfYear", isoweekday: "isoWeekday", isoweek: "isoWeek", weekyear: "weekYear", isoweekyear: "isoWeekYear"}, Vb = {}, Wb = "DDD w W M D d".split(" "), Xb = "M D H h m s w W".split(" "), Yb = {M: function() { return this.month() + 1 }, MMM: function(a) { return this.lang().monthsShort(this, a) }, MMMM: function(a) { return this.lang().months(this, a) }, D: function() { return this.date() }, DDD: function() { return this.dayOfYear() }, d: function() { return this.day() }, dd: function(a) { return this.lang().weekdaysMin(this, a) }, ddd: function(a) { return this.lang().weekdaysShort(this, a) }, dddd: function(a) { return this.lang().weekdays(this, a) }, w: function() { return this.week() }, W: function() { return this.isoWeek() }, YY: function() { return k(this.year() % 100, 2) }, YYYY: function() { return k(this.year(), 4) }, YYYYY: function() { return k(this.year(), 5) }, YYYYYY: function() { var a = this.year(), b = a >= 0 ? "+" : "-"; return b + k(Math.abs(a), 6) }, gg: function() { return k(this.weekYear() % 100, 2) }, gggg: function() { return k(this.weekYear(), 4) }, ggggg: function() { return k(this.weekYear(), 5) }, GG: function() { return k(this.isoWeekYear() % 100, 2) }, GGGG: function() { return k(this.isoWeekYear(), 4) }, GGGGG: function() { return k(this.isoWeekYear(), 5) }, e: function() { return this.weekday() }, E: function() { return this.isoWeekday() }, a: function() { return this.lang().meridiem(this.hours(), this.minutes(), !0) }, A: function() { return this.lang().meridiem(this.hours(), this.minutes(), !1) }, H: function() { return this.hours() }, h: function() { return this.hours() % 12 || 12 }, m: function() { return this.minutes() }, s: function() { return this.seconds() }, S: function() { return s(this.milliseconds() / 100) }, SS: function() { return k(s(this.milliseconds() / 10), 2) }, SSS: function() { return k(this.milliseconds(), 3) }, SSSS: function() { return k(this.milliseconds(), 3) }, Z: function() { var a = -this.zone(), b = "+"; return 0 > a && (a = -a, b = "-"), b + k(s(a / 60), 2) + ":" + k(s(a) % 60, 2) }, ZZ: function() { var a = -this.zone(), b = "+"; return 0 > a && (a = -a, b = "-"), b + k(s(a / 60), 2) + k(s(a) % 60, 2) }, z: function() { return this.zoneAbbr() }, zz: function() { return this.zoneName() }, X: function() { return this.unix() }, Q: function() { return this.quarter() }}, Zb = ["months", "monthsShort", "weekdays", "weekdaysShort", "weekdaysMin"]; Wb.length; ) eb = Wb.pop(), Yb[eb + "o"] = d(Yb[eb], eb); for (; Xb.length; ) eb = Xb.pop(), Yb[eb + eb] = c(Yb[eb], 2); for (Yb.DDDD = c(Yb.DDD, 3), h(e.prototype, {set:function(a) { var b, c; for (c in a) b = a[c], "function" == typeof b ? this[c] = b : this["_" + c] = b }, _months:"January_February_March_April_May_June_July_August_September_October_November_December".split("_"), months:function(a) { return this._months[a.month()] }, _monthsShort:"Jan_Feb_Mar_Apr_May_Jun_Jul_Aug_Sep_Oct_Nov_Dec".split("_"), monthsShort:function(a) { return this._monthsShort[a.month()] }, monthsParse:function(a) { var b, c, d; for (this._monthsParse || (this._monthsParse = []), b = 0; 12 > b; b++) if (this._monthsParse[b] || (c = db.utc([2e3, b]), d = "^" + this.months(c, "") + "|^" + this.monthsShort(c, ""), this._monthsParse[b] = new RegExp(d.replace(".", ""), "i")), this._monthsParse[b].test(a)) return b }, _weekdays:"Sunday_Monday_Tuesday_Wednesday_Thursday_Friday_Saturday".split("_"), weekdays:function(a) { return this._weekdays[a.day()] }, _weekdaysShort:"Sun_Mon_Tue_Wed_Thu_Fri_Sat".split("_"), weekdaysShort:function(a) { return this._weekdaysShort[a.day()] }, _weekdaysMin:"Su_Mo_Tu_We_Th_Fr_Sa".split("_"), weekdaysMin:function(a) { return this._weekdaysMin[a.day()] }, weekdaysParse:function(a) { var b, c, d; for (this._weekdaysParse || (this._weekdaysParse = []), b = 0; 7 > b; b++) if (this._weekdaysParse[b] || (c = db([2e3, 1]).day(b), d = "^" + this.weekdays(c, "") + "|^" + this.weekdaysShort(c, "") + "|^" + this.weekdaysMin(c, ""), this._weekdaysParse[b] = new RegExp(d.replace(".", ""), "i")), this._weekdaysParse[b].test(a)) return b }, _longDateFormat:{LT:"h:mm A", L:"MM/DD/YYYY", LL:"MMMM D YYYY", LLL:"MMMM D YYYY LT", LLLL:"dddd, MMMM D YYYY LT"}, longDateFormat:function(a) { var b = this._longDateFormat[a]; return!b && this._longDateFormat[a.toUpperCase()] && (b = this._longDateFormat[a.toUpperCase()].replace(/MMMM|MM|DD|dddd/g, function(a) { return a.slice(1) }), this._longDateFormat[a] = b), b }, isPM:function(a) { return"p" === (a + "").toLowerCase().charAt(0) }, _meridiemParse:/[ap]\.?m?\.?/i, meridiem:function(a, b, c) { return a > 11 ? c ? "pm" : "PM" : c ? "am" : "AM" }, _calendar:{sameDay:"[Today at] LT", nextDay:"[Tomorrow at] LT", nextWeek:"dddd [at] LT", lastDay:"[Yesterday at] LT", lastWeek:"[Last] dddd [at] LT", sameElse:"L"}, calendar:function(a, b) { var c = this._calendar[a]; return"function" == typeof c ? c.apply(b) : c }, _relativeTime:{future:"in %s", past:"%s ago", s:"a few seconds", m:"a minute", mm:"%d minutes", h:"an hour", hh:"%d hours", d:"a day", dd:"%d days", M:"a month", MM:"%d months", y:"a year", yy:"%d years"}, relativeTime:function(a, b, c, d) { var e = this._relativeTime[c]; return"function" == typeof e ? e(a, b, c, d) : e.replace(/%d/i, a) }, pastFuture:function(a, b) { var c = this._relativeTime[a > 0 ? "future" : "past"]; return"function" == typeof c ? c(b) : c.replace(/%s/i, b) }, ordinal:function(a) { return this._ordinal.replace("%d", a) }, _ordinal:"%d", preparse:function(a) { return a }, postformat:function(a) { return a }, week:function(a) { return Y(a, this._week.dow, this._week.doy).week }, _week:{dow:0, doy:6}, _invalidDate:"Invalid date", invalidDate:function() { return this._invalidDate }}), db = function(c, d, e, f) { var g; return"boolean" == typeof e && (f = e, e = a), g = {}, g._isAMomentObject = !0, g._i = c, g._f = d, g._l = e, g._strict = f, g._isUTC = !1, g._pf = b(), $(g) }, db.utc = function(c, d, e, f) { var g; return"boolean" == typeof e && (f = e, e = a), g = {}, g._isAMomentObject = !0, g._useUTC = !0, g._isUTC = !0, g._l = e, g._i = c, g._f = d, g._strict = f, g._pf = b(), $(g).utc() }, db.unix = function(a) { return db(1e3 * a) }, db.duration = function(a, b) { var c, d, e, f = a, h = null; return db.isDuration(a) ? f = {ms: a._milliseconds, d: a._days, M: a._months} : "number" == typeof a ? (f = {}, b ? f[b] = a : f.milliseconds = a) : (h = tb.exec(a)) ? (c = "-" === h[1] ? -1 : 1, f = {y: 0, d: s(h[kb]) * c, h: s(h[lb]) * c, m: s(h[mb]) * c, s: s(h[nb]) * c, ms: s(h[ob]) * c}) : (h = ub.exec(a)) && (c = "-" === h[1] ? -1 : 1, e = function(a) { var b = a && parseFloat(a.replace(",", ".")); return(isNaN(b) ? 0 : b) * c }, f = {y: e(h[2]), M: e(h[3]), d: e(h[4]), h: e(h[5]), m: e(h[6]), s: e(h[7]), w: e(h[8])}), d = new g(f), db.isDuration(a) && a.hasOwnProperty("_lang") && (d._lang = a._lang), d }, db.version = fb, db.defaultFormat = Nb, db.updateOffset = function() { }, db.lang = function(a, b) { var c; return a ? (b ? A(y(a), b) : null === b ? (B(a), a = "en") : pb[a] || C(a), c = db.duration.fn._lang = db.fn._lang = C(a), c._abbr) : db.fn._lang._abbr }, db.langData = function(a) { return a && a._lang && a._lang._abbr && (a = a._lang._abbr), C(a) }, db.isMoment = function(a) { return a instanceof f || null != a && a.hasOwnProperty("_isAMomentObject") }, db.isDuration = function(a) { return a instanceof g }, eb = Zb.length - 1; eb >= 0; --eb) r(Zb[eb]); for (db.normalizeUnits = function(a) { return p(a) }, db.invalid = function(a) { var b = db.utc(0 / 0); return null != a ? h(b._pf, a) : b._pf.userInvalidated = !0, b }, db.parseZone = function(a) { return db(a).parseZone() }, h(db.fn = f.prototype, {clone:function() { return db(this) }, valueOf:function() { return+this._d + 6e4 * (this._offset || 0) }, unix:function() { return Math.floor(+this / 1e3) }, toString:function() { return this.clone().lang("en").format("ddd MMM DD YYYY HH:mm:ss [GMT]ZZ") }, toDate:function() { return this._offset ? new Date(+this) : this._d }, toISOString:function() { var a = db(this).utc(); return 0 < a.year() && a.year() <= 9999 ? F(a, "YYYY-MM-DD[T]HH:mm:ss.SSS[Z]") : F(a, "YYYYYY-MM-DD[T]HH:mm:ss.SSS[Z]") }, toArray:function() { var a = this; return[a.year(), a.month(), a.date(), a.hours(), a.minutes(), a.seconds(), a.milliseconds()] }, isValid:function() { return x(this) }, isDSTShifted:function() { return this._a ? this.isValid() && o(this._a, (this._isUTC ? db.utc(this._a) : db(this._a)).toArray()) > 0 : !1 }, parsingFlags:function() { return h({}, this._pf) }, invalidAt:function() { return this._pf.overflow }, utc:function() { return this.zone(0) }, local:function() { return this.zone(0), this._isUTC = !1, this }, format:function(a) { var b = F(this, a || db.defaultFormat); return this.lang().postformat(b) }, add:function(a, b) { var c; return c = "string" == typeof a ? db.duration(+b, a) : db.duration(a, b), l(this, c, 1), this }, subtract:function(a, b) { var c; return c = "string" == typeof a ? db.duration(+b, a) : db.duration(a, b), l(this, c, -1), this }, diff:function(a, b, c) { var d, e, f = z(a, this), g = 6e4 * (this.zone() - f.zone()); return b = p(b), "year" === b || "month" === b ? (d = 432e5 * (this.daysInMonth() + f.daysInMonth()), e = 12 * (this.year() - f.year()) + (this.month() - f.month()), e += (this - db(this).startOf("month") - (f - db(f).startOf("month"))) / d, e -= 6e4 * (this.zone() - db(this).startOf("month").zone() - (f.zone() - db(f).startOf("month").zone())) / d, "year" === b && (e /= 12)) : (d = this - f, e = "second" === b ? d / 1e3 : "minute" === b ? d / 6e4 : "hour" === b ? d / 36e5 : "day" === b ? (d - g) / 864e5 : "week" === b ? (d - g) / 6048e5 : d), c ? e : j(e) }, from:function(a, b) { return db.duration(this.diff(a)).lang(this.lang()._abbr).humanize(!b) }, fromNow:function(a) { return this.from(db(), a) }, calendar:function() { var a = z(db(), this).startOf("day"), b = this.diff(a, "days", !0), c = -6 > b ? "sameElse" : -1 > b ? "lastWeek" : 0 > b ? "lastDay" : 1 > b ? "sameDay" : 2 > b ? "nextDay" : 7 > b ? "nextWeek" : "sameElse"; return this.format(this.lang().calendar(c, this)) }, isLeapYear:function() { return v(this.year()) }, isDST:function() { return this.zone() < this.clone().month(0).zone() || this.zone() < this.clone().month(5).zone() }, day:function(a) { var b = this._isUTC ? this._d.getUTCDay() : this._d.getDay(); return null != a ? (a = V(a, this.lang()), this.add({d: a - b})) : b }, month:function(a) { var b, c = this._isUTC ? "UTC" : ""; return null != a ? "string" == typeof a && (a = this.lang().monthsParse(a), "number" != typeof a) ? this : (b = this.date(), this.date(1), this._d["set" + c + "Month"](a), this.date(Math.min(b, this.daysInMonth())), db.updateOffset(this), this) : this._d["get" + c + "Month"]() }, startOf:function(a) { switch (a = p(a)) { case"year": this.month(0); case"month": this.date(1); case"week": case"isoWeek": case"day": this.hours(0); case"hour": this.minutes(0); case"minute": this.seconds(0); case"second": this.milliseconds(0) } return"week" === a ? this.weekday(0) : "isoWeek" === a && this.isoWeekday(1), this }, endOf:function(a) { return a = p(a), this.startOf(a).add("isoWeek" === a ? "week" : a, 1).subtract("ms", 1) }, isAfter:function(a, b) { return b = "undefined" != typeof b ? b : "millisecond", +this.clone().startOf(b) > +db(a).startOf(b) }, isBefore:function(a, b) { return b = "undefined" != typeof b ? b : "millisecond", +this.clone().startOf(b) < +db(a).startOf(b) }, isSame:function(a, b) { return b = b || "ms", +this.clone().startOf(b) === +z(a, this).startOf(b) }, min:function(a) { return a = db.apply(null, arguments), this > a ? this : a }, max:function(a) { return a = db.apply(null, arguments), a > this ? this : a }, zone:function(a) { var b = this._offset || 0; return null == a ? this._isUTC ? b : this._d.getTimezoneOffset() : ("string" == typeof a && (a = I(a)), Math.abs(a) < 16 && (a = 60 * a), this._offset = a, this._isUTC = !0, b !== a && l(this, db.duration(b - a, "m"), 1, !0), this) }, zoneAbbr:function() { return this._isUTC ? "UTC" : "" }, zoneName:function() { return this._isUTC ? "Coordinated Universal Time" : "" }, parseZone:function() { return this._tzm ? this.zone(this._tzm) : "string" == typeof this._i && this.zone(this._i), this }, hasAlignedHourOffset:function(a) { return a = a ? db(a).zone() : 0, (this.zone() - a) % 60 === 0 }, daysInMonth:function() { return t(this.year(), this.month()) }, dayOfYear:function(a) { var b = hb((db(this).startOf("day") - db(this).startOf("year")) / 864e5) + 1; return null == a ? b : this.add("d", a - b) }, quarter:function() { return Math.ceil((this.month() + 1) / 3) }, weekYear:function(a) { var b = Y(this, this.lang()._week.dow, this.lang()._week.doy).year; return null == a ? b : this.add("y", a - b) }, isoWeekYear:function(a) { var b = Y(this, 1, 4).year; return null == a ? b : this.add("y", a - b) }, week:function(a) { var b = this.lang().week(this); return null == a ? b : this.add("d", 7 * (a - b)) }, isoWeek:function(a) { var b = Y(this, 1, 4).week; return null == a ? b : this.add("d", 7 * (a - b)) }, weekday:function(a) { var b = (this.day() + 7 - this.lang()._week.dow) % 7; return null == a ? b : this.add("d", a - b) }, isoWeekday:function(a) { return null == a ? this.day() || 7 : this.day(this.day() % 7 ? a : a - 7) }, get:function(a) { return a = p(a), this[a]() }, set:function(a, b) { return a = p(a), "function" == typeof this[a] && this[a](b), this }, lang:function(b) { return b === a ? this._lang : (this._lang = C(b), this) }}), eb = 0; eb < Rb.length; eb++) _(Rb[eb].toLowerCase().replace(/s$/, ""), Rb[eb]); _("year", "FullYear"), db.fn.days = db.fn.day, db.fn.months = db.fn.month, db.fn.weeks = db.fn.week, db.fn.isoWeeks = db.fn.isoWeek, db.fn.toJSON = db.fn.toISOString, h(db.duration.fn = g.prototype, {_bubble: function() { var a, b, c, d, e = this._milliseconds, f = this._days, g = this._months, h = this._data; h.milliseconds = e % 1e3, a = j(e / 1e3), h.seconds = a % 60, b = j(a / 60), h.minutes = b % 60, c = j(b / 60), h.hours = c % 24, f += j(c / 24), h.days = f % 30, g += j(f / 30), h.months = g % 12, d = j(g / 12), h.years = d }, weeks: function() { return j(this.days() / 7) }, valueOf: function() { return this._milliseconds + 864e5 * this._days + this._months % 12 * 2592e6 + 31536e6 * s(this._months / 12) }, humanize: function(a) { var b = +this, c = X(b, !a, this.lang()); return a && (c = this.lang().pastFuture(b, c)), this.lang().postformat(c) }, add: function(a, b) { var c = db.duration(a, b); return this._milliseconds += c._milliseconds, this._days += c._days, this._months += c._months, this._bubble(), this }, subtract: function(a, b) { var c = db.duration(a, b); return this._milliseconds -= c._milliseconds, this._days -= c._days, this._months -= c._months, this._bubble(), this }, get: function(a) { return a = p(a), this[a.toLowerCase() + "s"]() }, as: function(a) { return a = p(a), this["as" + a.charAt(0).toUpperCase() + a.slice(1) + "s"]() }, lang: db.fn.lang, toIsoString: function() { var a = Math.abs(this.years()), b = Math.abs(this.months()), c = Math.abs(this.days()), d = Math.abs(this.hours()), e = Math.abs(this.minutes()), f = Math.abs(this.seconds() + this.milliseconds() / 1e3); return this.asSeconds() ? (this.asSeconds() < 0 ? "-" : "") + "P" + (a ? a + "Y" : "") + (b ? b + "M" : "") + (c ? c + "D" : "") + (d || e || f ? "T" : "") + (d ? d + "H" : "") + (e ? e + "M" : "") + (f ? f + "S" : "") : "P0D" }}); for (eb in Sb) Sb.hasOwnProperty(eb) && (bb(eb, Sb[eb]), ab(eb.toLowerCase())); bb("Weeks", 6048e5), db.duration.fn.asMonths = function() { return(+this - 31536e6 * this.years()) / 2592e6 + 12 * this.years() }, db.lang("en", {ordinal: function(a) { var b = a % 10, c = 1 === s(a % 100 / 10) ? "th" : 1 === b ? "st" : 2 === b ? "nd" : 3 === b ? "rd" : "th"; return a + c }}), rb ? (module.exports = db, cb(!0)) : "function" == typeof define && define.amd ? define("moment", function(b, c, d) { return d.config && d.config() && d.config().noGlobal !== !0 && cb(d.config().noGlobal === a), db }) : cb() }).call(this);